diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e693be6389a..f8d6fa6f927 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,14 +26,14 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - check-latest: false cache: 'pnpm' - - run: npm i -g pnpm + cache-dependency-path: 'pnpm-lock.yaml' - run: pnpm install - - run: ./node_modules/.bin/cypress install - run: pnpm lint - run: pnpm build - - name: Install dependencies + - name: Cypress install + run: pnpm cypress install + - name: Install dependencies (Cypress Action) uses: cypress-io/github-action@v6 with: working-directory: ./ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 35365219c54..a1800228883 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -120,44 +120,45 @@ Flowise has 3 different modules in a single mono repository. Flowise support different environment variables to configure your instance. You can specify the following variables in the `.env` file inside `packages/server` folder. Read [more](https://docs.flowiseai.com/environment-variables) -| Variable | Description | Type | Default | -| ---------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------- | -| PORT | The HTTP port Flowise runs on | Number | 3000 | -| CORS_ORIGINS | The allowed origins for all cross-origin HTTP calls | String | | -| IFRAME_ORIGINS | The allowed origins for iframe src embedding | String | | -| FLOWISE_USERNAME | Username to login | String | | -| FLOWISE_PASSWORD | Password to login | String | | -| FLOWISE_FILE_SIZE_LIMIT | Upload File Size Limit | String | 50mb | -| DISABLE_CHATFLOW_REUSE | Forces the creation of a new ChatFlow for each call instead of reusing existing ones from cache | Boolean | | -| DEBUG | Print logs from components | Boolean | | -| LOG_PATH | Location where log files are stored | String | `your-path/Flowise/logs` | -| LOG_LEVEL | Different levels of logs | Enum String: `error`, `info`, `verbose`, `debug` | `info` | -| LOG_JSON_SPACES | Spaces to beautify JSON logs | | 2 | -| APIKEY_STORAGE_TYPE | To store api keys on a JSON file or database. Default is `json` | Enum String: `json`, `db` | `json` | -| APIKEY_PATH | Location where api keys are saved when `APIKEY_STORAGE_TYPE` is `json` | String | `your-path/Flowise/packages/server` | -| TOOL_FUNCTION_BUILTIN_DEP | NodeJS built-in modules to be used for Tool Function | String | | -| TOOL_FUNCTION_EXTERNAL_DEP | External modules to be used for Tool Function | String | | -| DATABASE_TYPE | Type of database to store the flowise data | Enum String: `sqlite`, `mysql`, `postgres` | `sqlite` | -| DATABASE_PATH | Location where database is saved (When DATABASE_TYPE is sqlite) | String | `your-home-dir/.flowise` | -| DATABASE_HOST | Host URL or IP address (When DATABASE_TYPE is not sqlite) | String | | -| DATABASE_PORT | Database port (When DATABASE_TYPE is not sqlite) | String | | -| DATABASE_USER | Database username (When DATABASE_TYPE is not sqlite) | String | | -| DATABASE_PASSWORD | Database password (When DATABASE_TYPE is not sqlite) | String | | -| DATABASE_NAME | Database name (When DATABASE_TYPE is not sqlite) | String | | -| DATABASE_SSL_KEY_BASE64 | Database SSL client cert in base64 (takes priority over DATABASE_SSL) | Boolean | false | -| DATABASE_SSL | Database connection overssl (When DATABASE_TYPE is postgre) | Boolean | false | -| SECRETKEY_PATH | Location where encryption key (used to encrypt/decrypt credentials) is saved | String | `your-path/Flowise/packages/server` | -| FLOWISE_SECRETKEY_OVERWRITE | Encryption key to be used instead of the key stored in SECRETKEY_PATH | String | | -| DISABLE_FLOWISE_TELEMETRY | Turn off telemetry | Boolean | | -| MODEL_LIST_CONFIG_JSON | File path to load list of models from your local config file | String | `/your_model_list_config_file_path` | -| STORAGE_TYPE | Type of storage for uploaded files. default is `local` | Enum String: `s3`, `local` | `local` | -| BLOB_STORAGE_PATH | Local folder path where uploaded files are stored when `STORAGE_TYPE` is `local` | String | `your-home-dir/.flowise/storage` | -| S3_STORAGE_BUCKET_NAME | Bucket name to hold the uploaded files when `STORAGE_TYPE` is `s3` | String | | -| S3_STORAGE_ACCESS_KEY_ID | AWS Access Key | String | | -| S3_STORAGE_SECRET_ACCESS_KEY | AWS Secret Key | String | | -| S3_STORAGE_REGION | Region for S3 bucket | String | | -| S3_ENDPOINT_URL | Custom Endpoint for S3 | String | | -| SHOW_COMMUNITY_NODES | Show nodes created by community | Boolean | | +| Variable | Description | Type | Default | +| ---------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------- | +| PORT | The HTTP port Flowise runs on | Number | 3000 | +| CORS_ORIGINS | The allowed origins for all cross-origin HTTP calls | String | | +| IFRAME_ORIGINS | The allowed origins for iframe src embedding | String | | +| FLOWISE_USERNAME | Username to login | String | | +| FLOWISE_PASSWORD | Password to login | String | | +| FLOWISE_FILE_SIZE_LIMIT | Upload File Size Limit | String | 50mb | +| DEBUG | Print logs from components | Boolean | | +| LOG_PATH | Location where log files are stored | String | `your-path/Flowise/logs` | +| LOG_LEVEL | Different levels of logs | Enum String: `error`, `info`, `verbose`, `debug` | `info` | +| LOG_JSON_SPACES | Spaces to beautify JSON logs | | 2 | +| APIKEY_STORAGE_TYPE | To store api keys on a JSON file or database. Default is `json` | Enum String: `json`, `db` | `json` | +| APIKEY_PATH | Location where api keys are saved when `APIKEY_STORAGE_TYPE` is `json` | String | `your-path/Flowise/packages/server` | +| TOOL_FUNCTION_BUILTIN_DEP | NodeJS built-in modules to be used for Tool Function | String | | +| TOOL_FUNCTION_EXTERNAL_DEP | External modules to be used for Tool Function | String | | +| DATABASE_TYPE | Type of database to store the flowise data | Enum String: `sqlite`, `mysql`, `postgres` | `sqlite` | +| DATABASE_PATH | Location where database is saved (When DATABASE_TYPE is sqlite) | String | `your-home-dir/.flowise` | +| DATABASE_HOST | Host URL or IP address (When DATABASE_TYPE is not sqlite) | String | | +| DATABASE_PORT | Database port (When DATABASE_TYPE is not sqlite) | String | | +| DATABASE_USER | Database username (When DATABASE_TYPE is not sqlite) | String | | +| DATABASE_PASSWORD | Database password (When DATABASE_TYPE is not sqlite) | String | | +| DATABASE_NAME | Database name (When DATABASE_TYPE is not sqlite) | String | | +| DATABASE_SSL_KEY_BASE64 | Database SSL client cert in base64 (takes priority over DATABASE_SSL) | Boolean | false | +| DATABASE_SSL | Database connection overssl (When DATABASE_TYPE is postgre) | Boolean | false | +| SECRETKEY_PATH | Location where encryption key (used to encrypt/decrypt credentials) is saved | String | `your-path/Flowise/packages/server` | +| FLOWISE_SECRETKEY_OVERWRITE | Encryption key to be used instead of the key stored in SECRETKEY_PATH | String | | +| DISABLE_FLOWISE_TELEMETRY | Turn off telemetry | Boolean | | +| MODEL_LIST_CONFIG_JSON | File path to load list of models from your local config file | String | `/your_model_list_config_file_path` | +| STORAGE_TYPE | Type of storage for uploaded files. default is `local` | Enum String: `s3`, `local` | `local` | +| BLOB_STORAGE_PATH | Local folder path where uploaded files are stored when `STORAGE_TYPE` is `local` | String | `your-home-dir/.flowise/storage` | +| S3_STORAGE_BUCKET_NAME | Bucket name to hold the uploaded files when `STORAGE_TYPE` is `s3` | String | | +| S3_STORAGE_ACCESS_KEY_ID | AWS Access Key | String | | +| S3_STORAGE_SECRET_ACCESS_KEY | AWS Secret Key | String | | +| S3_STORAGE_REGION | Region for S3 bucket | String | | +| S3_ENDPOINT_URL | Custom Endpoint for S3 | String | | +| S3_FORCE_PATH_STYLE | Set this to true to force the request to use path-style addressing | Boolean | false | +| SHOW_COMMUNITY_NODES | Show nodes created by community | Boolean | | +| DISABLED_NODES | Hide nodes from UI (comma separated list of node names) | String | | You can also specify the env variables when using `npx`. For example: diff --git a/README.md b/README.md index d9cf66268fc..96f0624f877 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ [![GitHub star chart](https://img.shields.io/github/stars/the-answerai/theanswer?style=social)](https://star-history.com/#the-answerai/theanswer) [![GitHub fork](https://img.shields.io/github/forks/the-answerai/theanswer?style=social)](https://github.com/the-answerai/theanswer/fork) - +English | [繁體中文](./i18n/README-TW.md) | [簡體中文](./i18n/README-ZH.md) | [日本語](./i18n/README-JA.md) | [한국어](./i18n/README-KR.md)

Drag & drop UI to build your customized LLM Flowise with The AnswerAI

@@ -137,11 +137,12 @@ Note: The TheAnswer package is currently under development and not yet published ### Docker Compose -1. Go to `docker` folder at the root of the project -2. Copy `.env.example` file, paste it into the same location, and rename to `.env` -3. `docker compose up -d` -4. Open [http://localhost:3000](http://localhost:3000) -5. You can bring the containers down by `docker compose stop` +1. Clone the Flowise project +2. Go to `docker` folder at the root of the project +3. Copy `.env.example` file, paste it into the same location, and rename to `.env` file +4. `docker compose up -d` +5. Open [http://localhost:3000](http://localhost:3000) +6. You can bring the containers down by `docker compose stop` ### Docker Image @@ -174,6 +175,7 @@ All packages inside `packages/*` are from the original Flowise project: - `embed`: Embedding functionality - `embed-react`: React components for embedding - `flowise-configs`: Configuration files for Flowise +- `api-documentation`: Auto-generated swagger-ui API docs from express ### Packages-Answers (TheAnswer-specific) @@ -272,21 +274,21 @@ TheAnswer supports different environment variables to configure your instance. Y Deploy TheAnswer self-hosted in your existing infrastructure. We support various [deployments](https://docs.theanswer.ai/configuration/deployment) -- [Copilot](./DEPLOYMENT_COPILOT.md) -- [AWS](https://docs.theanswer.ai/deployment/aws) -- [Azure](https://docs.theanswer.ai/deployment/azure) -- [Digital Ocean](https://docs.theanswer.ai/deployment/digital-ocean) -- [GCP](https://docs.theanswer.ai/deployment/gcp) +- [AWS](https://docs.theanswer.ai/configuration/deployment/aws) +- [Azure](https://docs.theanswer.ai/configuration/deployment/azure) +- [Digital Ocean](https://docs.theanswer.ai/configuration/deployment/digital-ocean) +- [GCP](https://docs.theanswer.ai/configuration/deployment/gcp) +- [Alibaba Cloud](https://computenest.console.aliyun.com/service/instance/create/default?type=user&ServiceName=Flowise社区版) -
Others - - [Railway](https://docs.theanswer.ai/deployment/railway) + - [Railway](https://docs.theanswer.ai/configuration/deployment/railway) [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9) - - [Render](https://docs.theanswer.ai/deployment/render) + - [Render](https://docs.theanswer.ai/configuration/deployment/render) - [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.theanswer.ai/deployment/render) + [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.theanswer.ai/configuration/deployment/render) - [HuggingFace Spaces](https://docs.theanswer.ai/deployment/hugging-face) @@ -294,7 +296,7 @@ Deploy TheAnswer self-hosted in your existing infrastructure. We support various - [Elestio](https://elest.io/open-source/theanswer) - [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/theanswer) + [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/theanswer) - [Sealos](https://cloud.sealos.io/?openapp=system-template%3Dtheanswer) @@ -306,9 +308,9 @@ Deploy TheAnswer self-hosted in your existing infrastructure. We support various
-## 💻 Cloud Hosted +## ☁️ Flowise Cloud -Visit [https://theanswer.ai/](https://theanswer.ai/) to learn more about our cloud-hosted solution. +[Get Started with Flowise Cloud](https://theanswer.ai/) ## 🙋 Support @@ -338,7 +340,7 @@ For detailed contribution guidelines, please refer to our [CONTRIBUTING.md](CONT ### Contribution to Flowise Core -If your contribution is related to Flowise core functionality, consider submitting it to the [Flowise repository](https://github.com/FlowiseAI/Flowise) first. Once accepted, we can integrate it into TheAnswer. +If your contribution is related to Flowise core functionality, consider submitting it to the [Flowise repository](https://github.com/theanswer/Flowise) first. Once accepted, we can integrate it into TheAnswer. Thanks go to these awesome contributors of both TheAnswer and the original Flowise project: diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..41377fec2ee --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,40 @@ +### Responsible Disclosure Policy + +At Flowise, we prioritize security and continuously work to safeguard our systems. However, vulnerabilities can still exist. If you identify a security issue, please report it to us so we can address it promptly. Your cooperation helps us better protect our platform and users. + +### Vulnerabilities + +The following types of issues are some of the most common vulnerabilities: + +- Clickjacking on pages without sensitive actions +- CSRF on unauthenticated/logout/login pages +- Attacks requiring MITM (Man-in-the-Middle) or physical device access +- Social engineering attacks +- Activities that cause service disruption (DoS) +- Content spoofing and text injection without a valid attack vector +- Email spoofing +- Absence of DNSSEC, CAA, CSP headers +- Missing Secure or HTTP-only flag on non-sensitive cookies +- Deadlinks +- User enumeration + +### Reporting Guidelines + +- Submit your findings to https://github.com/FlowiseAI/Flowise/security +- Provide clear details to help us reproduce and fix the issue quickly. + +### Disclosure Guidelines + +- Do not publicly disclose vulnerabilities until we have assessed, resolved, and notified affected users. +- If you plan to present your research (e.g., at a conference or in a blog), share a draft with us at least **30 days in advance** for review. +- Avoid including: + - Data from any Flowise customer projects + - Flowise user/customer information + - Details about Flowise employees, contractors, or partners + +### Response to Reports + +- We will acknowledge your report within **5 business days** and provide an estimated resolution timeline. +- Your report will be kept **confidential**, and your details will not be shared without your consent. + +We appreciate your efforts in helping us maintain a secure platform and look forward to working together to resolve any issues responsibly. diff --git a/apps/web/app/(Main UI)/(Chat UI)/chat/[chatId]/page.tsx b/apps/web/app/(Main UI)/(Chat UI)/chat/[chatId]/page.tsx index f746e724569..cc2becf744f 100644 --- a/apps/web/app/(Main UI)/(Chat UI)/chat/[chatId]/page.tsx +++ b/apps/web/app/(Main UI)/(Chat UI)/chat/[chatId]/page.tsx @@ -5,7 +5,7 @@ import ChatNotFound from '@ui/ChatNotFound' import getCachedSession from '@ui/getCachedSession' import { findSidekicksForChat } from '@utils/findSidekicksForChat' import auth0 from '@utils/auth/auth0' -import type { Chat as ChatType, User } from 'types' +import type { Chatflow, Chat as ChatType, User } from 'types' async function getChat(chatId: string, user: User) { // Get auth token for chatflow API @@ -20,22 +20,22 @@ async function getChat(chatId: string, user: User) { console.error('Auth error:', err) } - // Fetch local chat - const localChatPromise = prisma.chat.findUnique({ - where: { - id: chatId, - users: { - some: { - id: user.id - } - } - }, - include: { - users: { select: { id: true, email: true, image: true, name: true } } - } - }) - - // Fetch chatflow chat + // // Fetch local chat + // const localChatPromise = prisma.chat.findUnique({ + // where: { + // id: chatId, + // users: { + // some: { + // id: user.id + // } + // } + // }, + // include: { + // users: { select: { id: true, email: true, image: true, name: true } } + // } + // }) + + // Check if id corresponds to a valid chat const chatflowChatPromise = token ? fetch(`${user.chatflowDomain}/api/v1/chats/${chatId}`, { headers: { @@ -50,17 +50,37 @@ async function getChat(chatId: string, user: User) { }) : Promise.resolve(null) - const [localChat, chatflowChat] = await Promise.all([localChatPromise, chatflowChatPromise]) + const [chatflowChat] = await Promise.all([chatflowChatPromise]) // Return chatflow chat if local chat doesn't exist - if (!localChat && chatflowChat) { + if (chatflowChat) { + console.log('Chatflow Chat', chatflowChat) return { ...chatflowChat, chatflowChatId: chatflowChat.id } } - - return localChat + // If no Chat, return a new chat page with the correctly selected Sidekick based on the chatId but as a chatflowid + const chatflow: Chatflow = await (token + ? fetch(`${user.chatflowDomain}/api/v1/chatflows/${chatId}`, { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + } + }) + .then((res) => (res.ok ? res.json() : null)) + .catch((err) => { + console.error('Error fetching chatflow chat:', err) + return null + }) + : Promise.resolve(null)) + console.log('Chatflow', chatflow) + if (chatflow) { + return { + chatflowId: chatflow.id, + sidekickId: chatflow.id + } + } } async function getMessages(chat: Partial, user: User) { @@ -78,19 +98,26 @@ async function getMessages(chat: Partial, user: User) { Authorization: `Bearer ${accessToken}` } }) - + // console.log('Token', accessToken) + // console.log('Result', result) if (!result.ok) { const error = new Error('Failed to fetch messages') throw error } - const messages = await result.json() + let messages: any[] = [] + try { + messages = await result.json() + } catch (err) { + console.error('Error parsing messages:', err) + } + console.log('Messages', messages) return messages?.map((m: any) => ({ ...m, - agentReasoning: m.agentReasoning ? JSON.parse(m.agentReasoning) : [], - usedTools: m.usedTools ? JSON.parse(m.usedTools) : [], - contextDocuments: m.sourceDocuments ? JSON.parse(m.sourceDocuments) : [], - fileUploads: (m.fileUploads ? JSON.parse(m.fileUploads) : [])?.map((f: any) => ({ + agentReasoning: JSON.parse(m.agentReasoning ?? '[]'), + usedTools: JSON.parse(m.usedTools ?? '[]'), + contextDocuments: JSON.parse(m.sourceDocuments ?? '[]'), + fileUploads: (m.fileUploads as any[])?.map((f: any) => ({ ...f, data: `${user.chatflowDomain}/api/v1/get-upload-file?chatflowId=${m.chatflowid}&chatId=${chat.chatflowChatId}&fileName=${f.name}` })) @@ -118,7 +145,6 @@ const ChatDetailPage = async ({ params }: { params: { chatId: string } }) => { try { // Fetch chat, messages and sidekicks in parallel const [chat, { sidekicks } = {}] = await Promise.all([getChat(params.chatId, user), findSidekicksForChat(user)]) - if (!chat) { return } @@ -130,6 +156,8 @@ const ChatDetailPage = async ({ params }: { params: { chatId: string } }) => { messages } + console.log('Chat', chat) + return } catch (error) { console.error(error) diff --git a/apps/web/app/(Main UI)/sidekick-studio/(main-layout)/assistants/page.tsx b/apps/web/app/(Main UI)/sidekick-studio/(main-layout)/assistants/page.tsx index 87f0bf26a07..eacd926426a 100644 --- a/apps/web/app/(Main UI)/sidekick-studio/(main-layout)/assistants/page.tsx +++ b/apps/web/app/(Main UI)/sidekick-studio/(main-layout)/assistants/page.tsx @@ -1,7 +1,7 @@ import React from 'react' import dynamic from 'next/dynamic' -const View = dynamic(() => import('@/views/assistants/index'), { ssr: true }) +const View = dynamic(() => import('@/views/assistants/index'), { ssr: false }) const Page = () => { return ( diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 4cb472c11c7..cd83e650c32 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -68,7 +68,8 @@ let nextConfig = withBundleAnalyzer({ REACT_APP_AUTH0_DOMAIN: process.env.AUTH0_DOMAIN, REACT_APP_AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID, FLAGSMITH_ENVIRONMENT_ID: process.env.FLAGSMITH_ENVIRONMENT_ID, - AUTH0_SECRET: process.env.AUTH0_SECRET ?? process.env.WEB_AUTH0_SECRET + AUTH0_SECRET: process.env.AUTH0_SECRET ?? process.env.WEB_AUTH0_SECRET, + CHATFLOW_DOMAIN_OVERRIDE: process.env.CHATFLOW_DOMAIN_OVERRIDE }, webpack: (config, { isServer }) => { config.externals = [...config.externals, 'db', 'puppeteer', 'handlebars'] diff --git a/apps/web/package.json b/apps/web/package.json index cc40c11c4dc..dcc01c7e06d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,7 +12,8 @@ "aai-embed": "workspace:*", "flowise-ui": "workspace:*", "jose": "^5.2.3", - "@auth0/nextjs-auth0": "^3.5.0", + "@auth0/nextjs-auth0": "3.5.0", + "@auth0/auth0-react": "2.3.0", "@aws-sdk/client-s3": "^3.374.0", "@aws-sdk/s3-request-presigner": "^3.374.0", "@aws-sdk/signature-v4-crt": "^3.357.0", diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 916ad4d49fd..f26af52fc86 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,68 +1,68 @@ version: '3' services: - # dev-inngest: - # image: node:18 - # working_dir: /app/packages/db - # volumes: - # - .:/app - # ports: - # - '8288:8288' - # command: npx inngest-cli@latest dev -u http://127.0.0.1:3000/api/inngest - # studio: - # image: node:18 - # working_dir: /app/packages/db - # volumes: - # - .:/app - # ports: - # - '5555:5555' - # command: npx prisma studio - # environment: - # - DATABASE_URL=postgresql://example_user:example_password@postgres:5432/example_db?schema=public - # depends_on: - # - postgres - redis: - image: redis:latest - ports: - - '6379:6379' - volumes: - - redis_data:/data - postgres: - image: postgres:latest - ports: - - '5432:5432' - volumes: - - postgres_data:/var/lib/postgresql/data/ - environment: - POSTGRES_PORT: 5432 - POSTGRES_USER: example_user - POSTGRES_PASSWORD: example_password - POSTGRES_DB: example_db - # langchain-frontend: - # image: notlangchain/langchainplus-frontend:latest - # ports: - # - 4173:4173 - # environment: - # - BACKEND_URL=http://langchain-backend:8000 - # - PUBLIC_BASE_URL=http://localhost:8000 - # - PUBLIC_DEV_MODE=true - # depends_on: - # - langchain-backend - # langchain-backend: - # image: notlangchain/langchainplus:latest - # environment: - # - PORT=8000 - # - LANGCHAIN_ENV=local - # ports: - # - 8000:8000 - # depends_on: - # - langchain-db - # langchain-db: - # image: postgres:14.1 - # environment: - # - POSTGRES_PASSWORD=postgres - # - POSTGRES_USER=postgres - # - POSTGRES_DB=postgres + # dev-inngest: + # image: node:18 + # working_dir: /app/packages/db + # volumes: + # - .:/app + # ports: + # - '8288:8288' + # command: npx inngest-cli@latest dev -u http://127.0.0.1:3000/api/inngest + # studio: + # image: node:18 + # working_dir: /app/packages/db + # volumes: + # - .:/app + # ports: + # - '5555:5555' + # command: npx prisma studio + # environment: + # - DATABASE_URL=postgresql://example_user:example_password@postgres:5432/example_db?schema=public + # depends_on: + # - postgres + redis: + image: redis:latest + ports: + - '6379:6379' + volumes: + - redis_data:/data + postgres: + image: postgres:16 + ports: + - '5432:5432' + volumes: + - postgres_data:/var/lib/postgresql/data/ + environment: + POSTGRES_PORT: 5432 + POSTGRES_USER: example_user + POSTGRES_PASSWORD: example_password + POSTGRES_DB: example_db + # langchain-frontend: + # image: notlangchain/langchainplus-frontend:latest + # ports: + # - 4173:4173 + # environment: + # - BACKEND_URL=http://langchain-backend:8000 + # - PUBLIC_BASE_URL=http://localhost:8000 + # - PUBLIC_DEV_MODE=true + # depends_on: + # - langchain-backend + # langchain-backend: + # image: notlangchain/langchainplus:latest + # environment: + # - PORT=8000 + # - LANGCHAIN_ENV=local + # ports: + # - 8000:8000 + # depends_on: + # - langchain-db + # langchain-db: + # image: postgres:14.1 + # environment: + # - POSTGRES_PASSWORD=postgres + # - POSTGRES_USER=postgres + # - POSTGRES_DB=postgres volumes: - postgres_data: - redis_data: + postgres_data: + redis_data: diff --git a/docker/.env.example b/docker/.env.example index e429df91ab7..bff5ef8f922 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -5,6 +5,8 @@ SECRETKEY_PATH=/root/.flowise LOG_PATH=/root/.flowise/logs BLOB_STORAGE_PATH=/root/.flowise/storage +# APIKEY_STORAGE_TYPE=json (json | db) + # NUMBER_OF_PROXIES= 1 # CORS_ORIGINS=* # IFRAME_ORIGINS=* @@ -18,13 +20,18 @@ BLOB_STORAGE_PATH=/root/.flowise/storage # DATABASE_SSL=true # DATABASE_SSL_KEY_BASE64= +# SECRETKEY_STORAGE_TYPE=local #(local | aws) +# SECRETKEY_PATH=/your_api_key_path/.flowise +# FLOWISE_SECRETKEY_OVERWRITE=myencryptionkey +# SECRETKEY_AWS_ACCESS_KEY= +# SECRETKEY_AWS_SECRET_KEY= +# SECRETKEY_AWS_REGION=us-west-2 + # FLOWISE_USERNAME=user # FLOWISE_PASSWORD=1234 # FLOWISE_SECRETKEY_OVERWRITE=myencryptionkey # FLOWISE_FILE_SIZE_LIMIT=50mb -# DISABLE_CHATFLOW_REUSE=true - # DEBUG=true # LOG_LEVEL=info (error | warn | info | verbose | debug) # TOOL_FUNCTION_BUILTIN_DEP=crypto,fs @@ -48,6 +55,43 @@ BLOB_STORAGE_PATH=/root/.flowise/storage # S3_STORAGE_SECRET_ACCESS_KEY= # S3_STORAGE_REGION=us-west-2 # S3_ENDPOINT_URL= +# S3_FORCE_PATH_STYLE=false -# APIKEY_STORAGE_TYPE=json (json | db) -# SHOW_COMMUNITY_NODES=true \ No newline at end of file +# SHOW_COMMUNITY_NODES=true +# DISABLED_NODES=bufferMemory,chatOpenAI (comma separated list of node names to disable) + +###################### +# METRICS COLLECTION +####################### +# ENABLE_METRICS=false +# METRICS_PROVIDER=prometheus # prometheus | open_telemetry +# METRICS_INCLUDE_NODE_METRICS=true # default is true +# METRICS_SERVICE_NAME=FlowiseAI + +# ONLY NEEDED if METRICS_PROVIDER=open_telemetry +# METRICS_OPEN_TELEMETRY_METRIC_ENDPOINT=http://localhost:4318/v1/metrics +# METRICS_OPEN_TELEMETRY_PROTOCOL=http # http | grpc | proto (default is http) +# METRICS_OPEN_TELEMETRY_DEBUG=true # default is false + +# Uncomment the following lines to enable global agent proxy +# see https://www.npmjs.com/package/global-agent for more details +# GLOBAL_AGENT_HTTP_PROXY=CorporateHttpProxyUrl +# GLOBAL_AGENT_HTTPS_PROXY=CorporateHttpsProxyUrl +# GLOBAL_AGENT_NO_PROXY=ExceptionHostsToBypassProxyIfNeeded + +###################### +# QUEUE CONFIGURATION +####################### +# MODE=queue #(queue | main) +# QUEUE_NAME=flowise-queue +# QUEUE_REDIS_EVENT_STREAM_MAX_LEN=100000 +# WORKER_CONCURRENCY=100000 +# REDIS_URL= +# REDIS_HOST=localhost +# REDIS_PORT=6379 +# REDIS_USERNAME= +# REDIS_PASSWORD= +# REDIS_TLS= +# REDIS_CERT= +# REDIS_KEY= +# REDIS_CA= \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 64d426b4e27..762e3d29641 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build stage -FROM node:20-alpine as build +FROM node:20-alpine AS build USER root diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 557bde76d50..07230e1e7fe 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -23,6 +23,7 @@ services: - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_SSL=${DATABASE_SSL} - DATABASE_SSL_KEY_BASE64=${DATABASE_SSL_KEY_BASE64} + - APIKEY_STORAGE_TYPE=${APIKEY_STORAGE_TYPE} - APIKEY_PATH=${APIKEY_PATH} - SECRETKEY_PATH=${SECRETKEY_PATH} - FLOWISE_SECRETKEY_OVERWRITE=${FLOWISE_SECRETKEY_OVERWRITE} @@ -46,6 +47,23 @@ services: - MY_APP_VITE_AUTH_CLIENT_ID=${MY_APP_VITE_AUTH_CLIENT_ID} - MY_APP_VITE_AUTH_AUDIENCE=${MY_APP_VITE_AUTH_AUDIENCE} - MY_APP_VITE_AUTH_ORGANIZATION_ID=${MY_APP_VITE_AUTH_ORGANIZATION_ID} + - GLOBAL_AGENT_HTTP_PROXY=${GLOBAL_AGENT_HTTP_PROXY} + - GLOBAL_AGENT_HTTPS_PROXY=${GLOBAL_AGENT_HTTPS_PROXY} + - GLOBAL_AGENT_NO_PROXY=${GLOBAL_AGENT_NO_PROXY} + - DISABLED_NODES=${DISABLED_NODES} + - MODE=${MODE} + - WORKER_CONCURRENCY=${WORKER_CONCURRENCY} + - QUEUE_NAME=${QUEUE_NAME} + - QUEUE_REDIS_EVENT_STREAM_MAX_LEN=${QUEUE_REDIS_EVENT_STREAM_MAX_LEN} + - REDIS_URL=${REDIS_URL} + - REDIS_HOST=${REDIS_HOST} + - REDIS_PORT=${REDIS_PORT} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_USERNAME=${REDIS_USERNAME} + - REDIS_TLS=${REDIS_TLS} + - REDIS_CERT=${REDIS_CERT} + - REDIS_KEY=${REDIS_KEY} + - REDIS_CA=${REDIS_CA} ports: - '${PORT}:${PORT}' volumes: diff --git a/docker/worker/README.md b/docker/worker/README.md new file mode 100644 index 00000000000..82769c1e2a1 --- /dev/null +++ b/docker/worker/README.md @@ -0,0 +1,24 @@ +# Flowise Worker + +By utilizing worker instances when operating in queue mode, Flowise can be scaled horizontally by adding more workers to handle increased workloads or scaled down by removing workers when demand decreases. + +Here’s an overview of the process: + +1. The primary Flowise instance sends an execution ID to a message broker, Redis, which maintains a queue of pending executions, allowing the next available worker to process them. +2. A worker from the pool retrieves a message from Redis. + The worker starts execute the actual job. +3. Once the execution is completed, the worker alerts the main instance that the execution is finished. + +# How to use + +## Setting up Main Server: + +1. Follow [setup guide](https://github.com/FlowiseAI/Flowise/blob/main/docker/README.md) +2. In the `.env.example`, setup all the necessary env variables for `QUEUE CONFIGURATION` + +## Setting up Worker: + +1. Copy paste the same `.env` file used to setup main server. Change the `PORT` to other available port numbers. Ex: 5566 +2. `docker compose up -d` +3. Open [http://localhost:5566](http://localhost:5566) +4. You can bring the worker container down by `docker compose stop` diff --git a/docker/worker/docker-compose.yml b/docker/worker/docker-compose.yml new file mode 100644 index 00000000000..88a8631d0df --- /dev/null +++ b/docker/worker/docker-compose.yml @@ -0,0 +1,54 @@ +version: '3.1' + +services: + flowise: + image: flowiseai/flowise + restart: always + environment: + - PORT=${PORT} + - CORS_ORIGINS=${CORS_ORIGINS} + - IFRAME_ORIGINS=${IFRAME_ORIGINS} + - FLOWISE_USERNAME=${FLOWISE_USERNAME} + - FLOWISE_PASSWORD=${FLOWISE_PASSWORD} + - FLOWISE_FILE_SIZE_LIMIT=${FLOWISE_FILE_SIZE_LIMIT} + - DEBUG=${DEBUG} + - DATABASE_PATH=${DATABASE_PATH} + - DATABASE_TYPE=${DATABASE_TYPE} + - DATABASE_PORT=${DATABASE_PORT} + - DATABASE_HOST=${DATABASE_HOST} + - DATABASE_NAME=${DATABASE_NAME} + - DATABASE_USER=${DATABASE_USER} + - DATABASE_PASSWORD=${DATABASE_PASSWORD} + - DATABASE_SSL=${DATABASE_SSL} + - DATABASE_SSL_KEY_BASE64=${DATABASE_SSL_KEY_BASE64} + - APIKEY_STORAGE_TYPE=${APIKEY_STORAGE_TYPE} + - APIKEY_PATH=${APIKEY_PATH} + - SECRETKEY_PATH=${SECRETKEY_PATH} + - FLOWISE_SECRETKEY_OVERWRITE=${FLOWISE_SECRETKEY_OVERWRITE} + - LOG_LEVEL=${LOG_LEVEL} + - LOG_PATH=${LOG_PATH} + - BLOB_STORAGE_PATH=${BLOB_STORAGE_PATH} + - DISABLE_FLOWISE_TELEMETRY=${DISABLE_FLOWISE_TELEMETRY} + - MODEL_LIST_CONFIG_JSON=${MODEL_LIST_CONFIG_JSON} + - GLOBAL_AGENT_HTTP_PROXY=${GLOBAL_AGENT_HTTP_PROXY} + - GLOBAL_AGENT_HTTPS_PROXY=${GLOBAL_AGENT_HTTPS_PROXY} + - GLOBAL_AGENT_NO_PROXY=${GLOBAL_AGENT_NO_PROXY} + - DISABLED_NODES=${DISABLED_NODES} + - MODE=${MODE} + - WORKER_CONCURRENCY=${WORKER_CONCURRENCY} + - QUEUE_NAME=${QUEUE_NAME} + - QUEUE_REDIS_EVENT_STREAM_MAX_LEN=${QUEUE_REDIS_EVENT_STREAM_MAX_LEN} + - REDIS_URL=${REDIS_URL} + - REDIS_HOST=${REDIS_HOST} + - REDIS_PORT=${REDIS_PORT} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_USERNAME=${REDIS_USERNAME} + - REDIS_TLS=${REDIS_TLS} + - REDIS_CERT=${REDIS_CERT} + - REDIS_KEY=${REDIS_KEY} + - REDIS_CA=${REDIS_CA} + ports: + - '${PORT}:${PORT}' + volumes: + - ~/.flowise:/root/.flowise + entrypoint: /bin/sh -c "sleep 3; flowise worker" diff --git a/i18n/CONTRIBUTING-ZH.md b/i18n/CONTRIBUTING-ZH.md index 00bc490296b..0ab1eb961ba 100644 --- a/i18n/CONTRIBUTING-ZH.md +++ b/i18n/CONTRIBUTING-ZH.md @@ -118,39 +118,40 @@ Flowise 在一个单一的单体存储库中有 3 个不同的模块。 Flowise 支持不同的环境变量来配置您的实例。您可以在 `packages/server` 文件夹中的 `.env` 文件中指定以下变量。阅读[更多信息](https://docs.flowiseai.com/environment-variables) -| 变量名 | 描述 | 类型 | 默认值 | -| ---------------------------- | -------------------------------------------------------------------- | ----------------------------------------------- | ----------------------------------- | -| PORT | Flowise 运行的 HTTP 端口 | 数字 | 3000 | -| FLOWISE_USERNAME | 登录用户名 | 字符串 | | -| FLOWISE_PASSWORD | 登录密码 | 字符串 | | -| FLOWISE_FILE_SIZE_LIMIT | 上传文件大小限制 | 字符串 | 50mb | -| DISABLE_CHATFLOW_REUSE | 强制为每次调用创建一个新的 ChatFlow,而不是重用缓存中的现有 ChatFlow | 布尔值 | | -| DEBUG | 打印组件的日志 | 布尔值 | | -| LOG_PATH | 存储日志文件的位置 | 字符串 | `your-path/Flowise/logs` | -| LOG_LEVEL | 日志的不同级别 | 枚举字符串: `error`, `info`, `verbose`, `debug` | `info` | -| APIKEY_STORAGE_TYPE | 存储 API 密钥的存储类型 | 枚举字符串: `json`, `db` | `json` | -| APIKEY_PATH | 存储 API 密钥的位置, 当`APIKEY_STORAGE_TYPE`是`json` | 字符串 | `your-path/Flowise/packages/server` | -| TOOL_FUNCTION_BUILTIN_DEP | 用于工具函数的 NodeJS 内置模块 | 字符串 | | -| TOOL_FUNCTION_EXTERNAL_DEP | 用于工具函数的外部模块 | 字符串 | | -| DATABASE_TYPE | 存储 flowise 数据的数据库类型 | 枚举字符串: `sqlite`, `mysql`, `postgres` | `sqlite` | -| DATABASE_PATH | 数据库保存的位置(当 DATABASE_TYPE 是 sqlite 时) | 字符串 | `your-home-dir/.flowise` | -| DATABASE_HOST | 主机 URL 或 IP 地址(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | -| DATABASE_PORT | 数据库端口(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | -| DATABASE_USERNAME | 数据库用户名(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | -| DATABASE_PASSWORD | 数据库密码(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | -| DATABASE_NAME | 数据库名称(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | -| SECRETKEY_PATH | 保存加密密钥(用于加密/解密凭据)的位置 | 字符串 | `your-path/Flowise/packages/server` | -| FLOWISE_SECRETKEY_OVERWRITE | 加密密钥用于替代存储在 SECRETKEY_PATH 中的密钥 | 字符串 | -| DISABLE_FLOWISE_TELEMETRY | 关闭遥测 | 字符串 | -| MODEL_LIST_CONFIG_JSON | 加载模型的位置 | 字符 | `/your_model_list_config_file_path` | -| STORAGE_TYPE | 上传文件的存储类型 | 枚举字符串: `local`, `s3` | `local` | -| BLOB_STORAGE_PATH | 上传文件存储的本地文件夹路径, 当`STORAGE_TYPE`是`local` | 字符串 | `your-home-dir/.flowise/storage` | -| S3_STORAGE_BUCKET_NAME | S3 存储文件夹路径, 当`STORAGE_TYPE`是`s3` | 字符串 | | -| S3_STORAGE_ACCESS_KEY_ID | AWS 访问密钥 (Access Key) | 字符串 | | -| S3_STORAGE_SECRET_ACCESS_KEY | AWS 密钥 (Secret Key) | 字符串 | | -| S3_STORAGE_REGION | S3 存储地区 | 字符串 | | -| S3_ENDPOINT_URL | S3 端点 URL | 字符串 | | -| SHOW_COMMUNITY_NODES | 显示由社区创建的节点 | 布尔值 | | +| 变量名 | 描述 | 类型 | 默认值 | +| ---------------------------- | ------------------------------------------------------- | ----------------------------------------------- | ----------------------------------- | --- | +| PORT | Flowise 运行的 HTTP 端口 | 数字 | 3000 | +| FLOWISE_USERNAME | 登录用户名 | 字符串 | | +| FLOWISE_PASSWORD | 登录密码 | 字符串 | | +| FLOWISE_FILE_SIZE_LIMIT | 上传文件大小限制 | 字符串 | 50mb | | +| DEBUG | 打印组件的日志 | 布尔值 | | +| LOG_PATH | 存储日志文件的位置 | 字符串 | `your-path/Flowise/logs` | +| LOG_LEVEL | 日志的不同级别 | 枚举字符串: `error`, `info`, `verbose`, `debug` | `info` | +| APIKEY_STORAGE_TYPE | 存储 API 密钥的存储类型 | 枚举字符串: `json`, `db` | `json` | +| APIKEY_PATH | 存储 API 密钥的位置, 当`APIKEY_STORAGE_TYPE`是`json` | 字符串 | `your-path/Flowise/packages/server` | +| TOOL_FUNCTION_BUILTIN_DEP | 用于工具函数的 NodeJS 内置模块 | 字符串 | | +| TOOL_FUNCTION_EXTERNAL_DEP | 用于工具函数的外部模块 | 字符串 | | +| DATABASE_TYPE | 存储 flowise 数据的数据库类型 | 枚举字符串: `sqlite`, `mysql`, `postgres` | `sqlite` | +| DATABASE_PATH | 数据库保存的位置(当 DATABASE_TYPE 是 sqlite 时) | 字符串 | `your-home-dir/.flowise` | +| DATABASE_HOST | 主机 URL 或 IP 地址(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | +| DATABASE_PORT | 数据库端口(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | +| DATABASE_USERNAME | 数据库用户名(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | +| DATABASE_PASSWORD | 数据库密码(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | +| DATABASE_NAME | 数据库名称(当 DATABASE_TYPE 不是 sqlite 时) | 字符串 | | +| SECRETKEY_PATH | 保存加密密钥(用于加密/解密凭据)的位置 | 字符串 | `your-path/Flowise/packages/server` | +| FLOWISE_SECRETKEY_OVERWRITE | 加密密钥用于替代存储在 SECRETKEY_PATH 中的密钥 | 字符串 | +| DISABLE_FLOWISE_TELEMETRY | 关闭遥测 | 字符串 | +| MODEL_LIST_CONFIG_JSON | 加载模型的位置 | 字符 | `/your_model_list_config_file_path` | +| STORAGE_TYPE | 上传文件的存储类型 | 枚举字符串: `local`, `s3` | `local` | +| BLOB_STORAGE_PATH | 上传文件存储的本地文件夹路径, 当`STORAGE_TYPE`是`local` | 字符串 | `your-home-dir/.flowise/storage` | +| S3_STORAGE_BUCKET_NAME | S3 存储文件夹路径, 当`STORAGE_TYPE`是`s3` | 字符串 | | +| S3_STORAGE_ACCESS_KEY_ID | AWS 访问密钥 (Access Key) | 字符串 | | +| S3_STORAGE_SECRET_ACCESS_KEY | AWS 密钥 (Secret Key) | 字符串 | | +| S3_STORAGE_REGION | S3 存储地区 | 字符串 | | +| S3_ENDPOINT_URL | S3 端点 URL | 字符串 | | +| S3_FORCE_PATH_STYLE | 将其设置为 true 以强制请求使用路径样式寻址 | 布尔值 | false | +| SHOW_COMMUNITY_NODES | 显示由社区创建的节点 | 布尔值 | | +| DISABLED_NODES | 从界面中隐藏节点(以逗号分隔的节点名称列表) | 字符串 | | 您也可以在使用 `npx` 时指定环境变量。例如: @@ -165,5 +166,3 @@ npx flowise start --PORT=3000 --DEBUG=true ## 🏷️ Pull Request 流程 当您打开一个 Pull Request 时,FlowiseAI 团队的成员将自动收到通知/指派。您也可以在 [Discord](https://discord.gg/jbaHfsRVBW) 上联系我们。 - -## diff --git a/i18n/README-JA.md b/i18n/README-JA.md index 2e316917e03..c30dbfb28e3 100644 --- a/i18n/README-JA.md +++ b/i18n/README-JA.md @@ -10,7 +10,7 @@ [![GitHub star chart](https://img.shields.io/github/stars/FlowiseAI/Flowise?style=social)](https://star-history.com/#FlowiseAI/Flowise) [![GitHub fork](https://img.shields.io/github/forks/FlowiseAI/Flowise?style=social)](https://github.com/FlowiseAI/Flowise/fork) -[English](../README.md) | [中文](./README-ZH.md) | 日本語 | [한국어](./README-KR.md) +[English](../README.md) | [繁體中文](./README-TW.md) | [簡體中文](./README-ZH.md) | 日本語 | [한국어](./README-KR.md)

ドラッグ&ドロップでカスタマイズした LLM フローを構築できる UI

@@ -180,9 +180,9 @@ Flowise は、インスタンスを設定するためのさまざまな環境変 -## 💻 クラウドホスト +## ☁️ クラウドホスト -近日公開 +[Flowise Cloud の使い方を始める](https://flowiseai.com/) ## 🙋 サポート diff --git a/i18n/README-KR.md b/i18n/README-KR.md index 9d705417211..f994580ad76 100644 --- a/i18n/README-KR.md +++ b/i18n/README-KR.md @@ -10,7 +10,7 @@ [![GitHub star chart](https://img.shields.io/github/stars/FlowiseAI/Flowise?style=social)](https://star-history.com/#FlowiseAI/Flowise) [![GitHub fork](https://img.shields.io/github/forks/FlowiseAI/Flowise?style=social)](https://github.com/FlowiseAI/Flowise/fork) -[English](../README.md) | [中文](./README-ZH.md) | [日本語](./README-JA.md) | 한국어 +[English](../README.md) | [繁體中文](./README-TW.md) | [簡體中文](./README-ZH.md) | [日本語](./README-JA.md) | 한국어

드래그 앤 드롭 UI로 맞춤형 LLM 플로우 구축하기

@@ -180,9 +180,9 @@ Flowise는 인스턴스 구성을 위한 다양한 환경 변수를 지원합니 -## 💻 클라우드 호스팅 서비스 +## ☁️ 클라우드 호스팅 서비스 -곧 출시될 예정입니다. +[Flowise Cloud 시작하기](https://flowiseai.com/) ## 🙋 기술 지원 diff --git a/i18n/README-TW.md b/i18n/README-TW.md new file mode 100644 index 00000000000..0bf81f74382 --- /dev/null +++ b/i18n/README-TW.md @@ -0,0 +1,216 @@ + + + + +# Flowise - 輕鬆構建 LLM 應用 + +[![Release Notes](https://img.shields.io/github/release/FlowiseAI/Flowise)](https://github.com/FlowiseAI/Flowise/releases) +[![Discord](https://img.shields.io/discord/1087698854775881778?label=Discord&logo=discord)](https://discord.gg/jbaHfsRVBW) +[![Twitter Follow](https://img.shields.io/twitter/follow/FlowiseAI?style=social)](https://twitter.com/FlowiseAI) +[![GitHub star chart](https://img.shields.io/github/stars/FlowiseAI/Flowise?style=social)](https://star-history.com/#FlowiseAI/Flowise) +[![GitHub fork](https://img.shields.io/github/forks/FlowiseAI/Flowise?style=social)](https://github.com/FlowiseAI/Flowise/fork) + +[English](../README.md) | 繁體中文 | [簡體中文](./i18n/README-ZH.md) | [日本語](./i18n/README-JA.md) | [한국어](./i18n/README-KR.md) + +

拖放 UI 以構建自定義的 LLM 流程

+ + + +## ⚡快速開始 + +下載並安裝 [NodeJS](https://nodejs.org/en/download) >= 18.15.0 + +1. 安裝 Flowise + ```bash + npm install -g flowise + ``` +2. 啟動 Flowise + + ```bash + npx flowise start + ``` + + 使用用戶名和密碼 + + ```bash + npx flowise start --FLOWISE_USERNAME=user --FLOWISE_PASSWORD=1234 + ``` + +3. 打開 [http://localhost:3000](http://localhost:3000) + +## 🐳 Docker + +### Docker Compose + +1. 克隆 Flowise 項目 +2. 進入項目根目錄的 `docker` 文件夾 +3. 複製 `.env.example` 文件,粘貼到相同位置,並重命名為 `.env` 文件 +4. `docker compose up -d` +5. 打開 [http://localhost:3000](http://localhost:3000) +6. 您可以通過 `docker compose stop` 停止容器 + +### Docker 映像 + +1. 本地構建映像: + ```bash + docker build --no-cache -t flowise . + ``` +2. 運行映像: + + ```bash + docker run -d --name flowise -p 3000:3000 flowise + ``` + +3. 停止映像: + ```bash + docker stop flowise + ``` + +## 👨‍💻 開發者 + +Flowise 在單個 mono 存儲庫中有 3 個不同的模塊。 + +- `server`: 提供 API 邏輯的 Node 後端 +- `ui`: React 前端 +- `components`: 第三方節點集成 +- `api-documentation`: 從 express 自動生成的 swagger-ui API 文檔 + +### 先決條件 + +- 安裝 [PNPM](https://pnpm.io/installation) + ```bash + npm i -g pnpm + ``` + +### 設置 + +1. 克隆存儲庫 + + ```bash + git clone https://github.com/FlowiseAI/Flowise.git + ``` + +2. 進入存儲庫文件夾 + + ```bash + cd Flowise + ``` + +3. 安裝所有模塊的所有依賴項: + + ```bash + pnpm install + ``` + +4. 構建所有代碼: + + ```bash + pnpm build + ``` + +
+ 退出代碼 134(JavaScript 堆內存不足) + 如果在運行上述 `build` 腳本時遇到此錯誤,請嘗試增加 Node.js 堆大小並重新運行腳本: + + export NODE_OPTIONS="--max-old-space-size=4096" + pnpm build + +
+ +5. 啟動應用: + + ```bash + pnpm start + ``` + + 您現在可以訪問 [http://localhost:3000](http://localhost:3000) + +6. 對於開發構建: + + - 在 `packages/ui` 中創建 `.env` 文件並指定 `VITE_PORT`(參考 `.env.example`) + - 在 `packages/server` 中創建 `.env` 文件並指定 `PORT`(參考 `.env.example`) + - 運行 + + ```bash + pnpm dev + ``` + + 任何代碼更改都會自動重新加載應用程序 [http://localhost:8080](http://localhost:8080) + +## 🔒 認證 + +要啟用應用級別的身份驗證,請在 `packages/server` 中的 `.env` 文件中添加 `FLOWISE_USERNAME` 和 `FLOWISE_PASSWORD`: + +``` +FLOWISE_USERNAME=user +FLOWISE_PASSWORD=1234 +``` + +## 🌱 環境變量 + +Flowise 支持不同的環境變量來配置您的實例。您可以在 `packages/server` 文件夾中的 `.env` 文件中指定以下變量。閱讀 [更多](https://github.com/FlowiseAI/Flowise/blob/main/CONTRIBUTING.md#-env-variables) + +## 📖 文檔 + +[Flowise 文檔](https://docs.flowiseai.com/) + +## 🌐 自我托管 + +在您現有的基礎設施中部署 Flowise 自我托管,我們支持各種 [部署](https://docs.flowiseai.com/configuration/deployment) + +- [AWS](https://docs.flowiseai.com/configuration/deployment/aws) +- [Azure](https://docs.flowiseai.com/configuration/deployment/azure) +- [Digital Ocean](https://docs.flowiseai.com/configuration/deployment/digital-ocean) +- [GCP](https://docs.flowiseai.com/configuration/deployment/gcp) +- [阿里雲](https://computenest.console.aliyun.com/service/instance/create/default?type=user&ServiceName=Flowise社区版) +-
+ 其他 + + - [Railway](https://docs.flowiseai.com/configuration/deployment/railway) + + [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9) + + - [Render](https://docs.flowiseai.com/configuration/deployment/render) + + [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/configuration/deployment/render) + + - [HuggingFace Spaces](https://docs.flowiseai.com/deployment/hugging-face) + + HuggingFace Spaces + + - [Elestio](https://elest.io/open-source/flowiseai) + + [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/flowiseai) + + - [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + [![](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + - [RepoCloud](https://repocloud.io/details/?app_id=29) + + [![Deploy on RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29) + +
+ +## ☁️ Flowise 雲 + +[開始使用 Flowise 雲](https://flowiseai.com/) + +## 🙋 支持 + +隨時在 [討論](https://github.com/FlowiseAI/Flowise/discussions) 中提出任何問題、提出問題和請求新功能 + +## 🙌 貢獻 + +感謝這些出色的貢獻者 + + + + + +請參閱 [貢獻指南](CONTRIBUTING.md)。如果您有任何問題或問題,請通過 [Discord](https://discord.gg/jbaHfsRVBW) 與我們聯繫。 +[![Star History Chart](https://api.star-history.com/svg?repos=FlowiseAI/Flowise&type=Timeline)](https://star-history.com/#FlowiseAI/Flowise&Date) + +## 📄 許可證 + +此存儲庫中的源代碼根據 [Apache 許可證版本 2.0](LICENSE.md) 提供。 diff --git a/i18n/README-ZH.md b/i18n/README-ZH.md index 6137aaf35a2..9fba33f9d8b 100644 --- a/i18n/README-ZH.md +++ b/i18n/README-ZH.md @@ -10,7 +10,7 @@ [![GitHub星图](https://img.shields.io/github/stars/FlowiseAI/Flowise?style=social)](https://star-history.com/#FlowiseAI/Flowise) [![GitHub分支](https://img.shields.io/github/forks/FlowiseAI/Flowise?style=social)](https://github.com/FlowiseAI/Flowise/fork) -[English](../README.md) | 中文 | [日本語](./README-JA.md) | [한국어](./README-KR.md) +[English](../README.md) | 簡體中文 | [日本語](./README-JA.md) | [한국어](./README-KR.md)

拖放界面构建定制化的LLM流程

@@ -180,9 +180,9 @@ Flowise 支持不同的环境变量来配置您的实例。您可以在 `package -## 💻 云托管 +## ☁️ 云托管 -即将推出 +[开始使用云托管](https://flowiseai.com/) ## 🙋 支持 diff --git a/metrics/grafana/grafana.dashboard.app.json.txt b/metrics/grafana/grafana.dashboard.app.json.txt new file mode 100644 index 00000000000..d68c5ff36ef --- /dev/null +++ b/metrics/grafana/grafana.dashboard.app.json.txt @@ -0,0 +1,639 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "enable": true, + "expr": "ALERTS", + "hide": false, + "iconColor": "rgba(255, 96, 96, 1)", + "limit": 100, + "name": "Alerts", + "showIn": 0, + "step": "10s", + "type": "alert" + } + ] + }, + "description": "Application metrics", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 3, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 11, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(internal_predictions[1m])) by (status) * 60", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "Internal Predictions", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 7, + "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "refId": "A" + } + ], + "title": "Throughput", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 9 + }, + "hideTimeOverride": false, + "id": 6, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/^Value$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "sum(increase(http_request_duration_ms_count{code=~\"^5..$\"}[1m])) / sum(increase(http_request_duration_ms_count[1m]))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 20 + } + ], + "title": "Error rate", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rpm" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 18, + "x": 6, + "y": 9 + }, + "id": 1, + "links": [ + { + "url": "/" + } + ], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "sum(rate(http_request_duration_ms_count[1m])) by (service, route, method, code) * 60", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{service}} - {{method}} {{route}} {{code}}", + "metric": "", + "refId": "A", + "step": 2 + } + ], + "title": "Throughput", + "type": "timeseries" + }, + { + "collapsed": true, + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 8, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "histogram_quantile(0.5, sum(rate(http_request_duration_ms_bucket[1m])) by (le, service, route, method))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{service}} - {{method}} {{route}}", + "refId": "A", + "step": 2 + } + ], + "title": "Median Response Time", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "histogram_quantile(0.95, sum(rate(http_request_duration_ms_bucket[1m])) by (le, service, route, method))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{service}} - {{method}} {{route}}", + "refId": "A", + "step": 2 + } + ], + "title": "95th Response Time", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "refId": "A" + } + ], + "title": "Response time", + "type": "row" + }, + { + "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 10, + "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "refId": "A" + } + ], + "title": "Business", + "type": "row" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "FlowiseAI - Custom Metrics", + "uid": "dds4pojnfec5cc", + "version": 8, + "weekStart": "" +} \ No newline at end of file diff --git a/metrics/grafana/grafana.dashboard.server.json.txt b/metrics/grafana/grafana.dashboard.server.json.txt new file mode 100644 index 00000000000..20e8ba79eda --- /dev/null +++ b/metrics/grafana/grafana.dashboard.server.json.txt @@ -0,0 +1,1017 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "node.js prometheus client basic metrics", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 11159, + "graphTooltip": 0, + "id": 1, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 10, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "irate(process_cpu_user_seconds_total{instance=~\"$instance\"}[2m]) * 100", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "User CPU - {{instance}}", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "irate(process_cpu_system_seconds_total{instance=~\"$instance\"}[2m]) * 100", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Sys CPU - {{instance}}", + "refId": "B" + } + ], + "title": "Process CPU Usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 10, + "y": 0 + }, + "id": 8, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_eventloop_lag_seconds{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "title": "Event Loop Lag", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 0 + }, + "id": 2, + "interval": "", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/^v22\\.3\\.0$/", + "values": false + }, + "showPercentChange": false, + "textMode": "name", + "wideLayout": true + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(nodejs_version_info{instance=~\"$instance\"}) by (version)", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Node.js Version", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#F2495C", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 19, + "y": 3 + }, + "id": 4, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "sum(changes(process_start_time_seconds{instance=~\"$instance\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "title": "Process Restart Times", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 16, + "x": 0, + "y": 7 + }, + "id": 7, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "process_resident_memory_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Process Memory - {{instance}}", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_heap_size_total_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Heap Total - {{instance}}", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_heap_size_used_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Heap Used - {{instance}}", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_external_memory_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "External Memory - {{instance}}", + "refId": "D" + } + ], + "title": "Process Memory Usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 16, + "y": 7 + }, + "id": 9, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_active_handles_total{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Active Handler - {{instance}}", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_active_requests_total{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Active Request - {{instance}}", + "refId": "B" + } + ], + "title": "Active Handlers/Requests Total", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 14 + }, + "id": 10, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_heap_space_size_total_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Heap Total - {{instance}} - {{space}}", + "refId": "A" + } + ], + "title": "Heap Total Detail", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 14 + }, + "id": 11, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_heap_space_size_used_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Heap Used - {{instance}} - {{space}}", + "refId": "A" + } + ], + "title": "Heap Used Detail", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 14 + }, + "id": 12, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "expr": "nodejs_heap_space_size_available_bytes{instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Heap Used - {{instance}} - {{space}}", + "refId": "A" + } + ], + "title": "Heap Available Detail", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [ + "nodejs" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": { + "type": "prometheus", + "uid": "cds4j1ybfuhogb" + }, + "definition": "label_values(nodejs_version_info, instance)", + "hide": 0, + "includeAll": true, + "label": "instance", + "multi": true, + "name": "instance", + "options": [], + "query": "label_values(nodejs_version_info, instance)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "FlowiseAI Server", + "uid": "PTSqcpJWk", + "version": 5, + "weekStart": "" +} \ No newline at end of file diff --git a/metrics/otel/compose.yaml b/metrics/otel/compose.yaml new file mode 100644 index 00000000000..b792304fb9d --- /dev/null +++ b/metrics/otel/compose.yaml @@ -0,0 +1,16 @@ +version: '2' +services: + otel-collector: + image: otel/opentelemetry-collector-contrib + command: + ['--config=/etc/otelcol-contrib/config.yaml', '--feature-gates=-exporter.datadogexporter.DisableAPMStats', '${OTELCOL_ARGS}'] + volumes: + - ./otel.config.yml:/etc/otelcol-contrib/config.yaml + ports: + - 1888:1888 # pprof extension + - 8888:8888 # Prometheus metrics exposed by the Collector + - 8889:8889 # Prometheus exporter metrics + - 13133:13133 # health_check extension + - 4317:4317 # OTLP gRPC receiver + - 4318:4318 # OTLP http receiver + - 55679:55679 # zpages extension diff --git a/metrics/otel/otel.config.yml b/metrics/otel/otel.config.yml new file mode 100644 index 00000000000..d741397022f --- /dev/null +++ b/metrics/otel/otel.config.yml @@ -0,0 +1,72 @@ +receivers: + otlp: + protocols: + http: + endpoint: 0.0.0.0:4318 + grpc: + endpoint: 0.0.0.0:4317 + # The hostmetrics receiver is required to get correct infrastructure metrics in Datadog. + hostmetrics: + collection_interval: 10s + scrapers: + paging: + metrics: + system.paging.utilization: + enabled: true + cpu: + metrics: + system.cpu.utilization: + enabled: true + disk: + filesystem: + metrics: + system.filesystem.utilization: + enabled: true + load: + memory: + network: + + # The prometheus receiver scrapes metrics needed for the OpenTelemetry Collector Dashboard. + prometheus: + config: + scrape_configs: + - job_name: 'otelcol' + scrape_interval: 10s + static_configs: + - targets: ['0.0.0.0:8888'] + + filelog: + include_file_path: true + poll_interval: 10s + include: + - /var/log/**/*example*/*.log + +processors: + batch: + send_batch_max_size: 100 + send_batch_size: 10 + timeout: 10s + +connectors: + datadog/connector: + +exporters: + datadog/exporter: + api: + site: us5.datadoghq.com + key: 'replace_api_key' + +service: + pipelines: + metrics: + receivers: [datadog/connector, hostmetrics, prometheus, otlp] + processors: [batch] + exporters: [datadog/exporter] + traces: + receivers: [otlp] + processors: [batch] + exporters: [datadog/connector, datadog/exporter] + logs: + receivers: [otlp, filelog] + processors: [batch] + exporters: [datadog/exporter] diff --git a/metrics/prometheus/prometheus.config.yml b/metrics/prometheus/prometheus.config.yml new file mode 100644 index 00000000000..3178ff02312 --- /dev/null +++ b/metrics/prometheus/prometheus.config.yml @@ -0,0 +1,9 @@ +global: + scrape_interval: 5s +scrape_configs: + - job_name: 'FlowiseAI' + static_configs: + - targets: ['localhost:8080', 'localhost:3000'] + + metrics_path: /api/v1/metrics/ + scheme: http diff --git a/package.json b/package.json index e4d9571dde8..96141dda870 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,29 @@ { "name": "theanswer", - "version": "0.0.1", + "version": "2.2.7", "private": true, "homepage": "https://theanswer.ai", + "workspaces": [ + "packages/*", + "flowise", + "ui", + "components", + "api-documentation", + "packages-answers/*", + "apps/web", + "apps/desktop" + ], "scripts": { - "build": "turbo run build ", + "build": "dotenv -- turbo run build ", "build-force": "pnpm clean && turbo run build --force", "dev": "dotenv -- turbo run dev dev-docker", "dev-docker": "docker-compose -f \"./docker-compose.dev.yml\" up -d", - "start": "run-script-os", + "start": "dotenv -- pnpm turbo run start", "start:windows": "cd packages/server/bin && run start", "start:default": "cd packages/server/bin && ./run start", + "start-worker": "run-script-os", + "start-worker:windows": "cd packages/server/bin && run worker", + "start-worker:default": "cd packages/server/bin && ./run worker", "clean": "pnpm --filter \"./packages/**\" clean", "nuke": "pnpm --filter \"./packages/**\" nuke && rimraf node_modules .turbo", "format": "prettier --write \"**/*.{ts,tsx,md}\"", @@ -71,17 +84,35 @@ "onlyBuiltDependencies": [ "faiss-node", "sqlite3" - ] + ], + "overrides": { + "axios": "1.7.9", + "body-parser": "2.0.2", + "braces": "3.0.3", + "cross-spawn": "7.0.6", + "glob-parent": "6.0.2", + "http-proxy-middleware": "3.0.3", + "json5": "2.2.3", + "nth-check": "2.1.1", + "path-to-regexp": "0.1.12", + "prismjs": "1.29.0", + "semver": "7.7.1", + "set-value": "4.1.0", + "unset-value": "2.0.1", + "webpack-dev-middleware": "7.4.2" + } }, "engines": { "node": ">=18.15.0 <19.0.0 || ^20", "pnpm": ">=9" }, "resolutions": { + "@google/generative-ai": "^0.22.0", + "@grpc/grpc-js": "^1.10.10", + "@langchain/core": "0.3.37", "@qdrant/openapi-typescript-fetch": "1.2.6", - "@google/generative-ai": "^0.15.0", - "openai": "4.51.0", - "@langchain/core": "0.2.18" + "openai": "4.82.0", + "protobufjs": "7.4.0" }, "eslintIgnore": [ "**/dist", diff --git a/packages-answers/ui/package.json b/packages-answers/ui/package.json index a1f2716ddd3..2d4f36121f9 100644 --- a/packages-answers/ui/package.json +++ b/packages-answers/ui/package.json @@ -25,7 +25,8 @@ "typescript": "^4.8.4" }, "dependencies": { - "@auth0/nextjs-auth0": "^3.5.0", + "@auth0/nextjs-auth0": "3.5.0", + "@auth0/auth0-react": "2.3.0", "@emotion/cache": "^11.4.0", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", diff --git a/packages-answers/ui/src/AnswersContext.tsx b/packages-answers/ui/src/AnswersContext.tsx index ce0ff73ee64..b824875e123 100644 --- a/packages-answers/ui/src/AnswersContext.tsx +++ b/packages-answers/ui/src/AnswersContext.tsx @@ -2,30 +2,19 @@ import React, { SetStateAction, createContext, useCallback, useContext, useRef, useState, useEffect } from 'react' import axios from 'axios' import { useRouter } from 'next/navigation' -import useSWR, { mutate } from 'swr' import { cloneDeep } from 'lodash' -import socketIOClient from 'socket.io-client' // @ts-ignore import { deepmerge } from '@utils/deepmerge' -import { useStreamedResponse } from './useStreamedResponse' import { clearEmptyValues } from './clearEmptyValues' import predictionApi from '@/api/prediction' +import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source' + +import { AnswersFilters, AppSettings, Chat, Journey, Message, Prompt, Sidekick, User, MessageFeedback, SidekickListItem } from 'types' +import { ChatbotConfig } from './types' +import { FlowData } from './types' -import { - AnswersFilters, - AppSettings, - Chat, - Journey, - Message, - Prompt, - Sidekick, - User, - MessageFeedback, - SidekickListItem, - ChatbotConfig, - FlowData -} from 'types' // import { useUserPlans } from './hooks/useUserPlan'; +import { v4 as uuidv4 } from 'uuid' interface PredictionParams { question: string @@ -35,6 +24,7 @@ interface PredictionParams { uploads?: string[] audio?: File | null socketIOClientId?: string + streaming?: boolean } interface AnswersContextType { @@ -149,51 +139,8 @@ interface AnswersProviderProps { // chats?: Chat[]; } -const fetcher = (url: string) => { - return axios - .get(url) - .then((res) => { - return res.data - }) - .catch((error) => { - throw error - }) -} - -// Add axios interceptor setup -const setupAxiosInterceptors = (apiUrl: string) => { - // Create axios instance - const axiosInstance = axios.create({ - baseURL: apiUrl - }) - - // Request interceptor - axiosInstance.interceptors.request.use( - (config) => { - // Get token from session storage - const token = sessionStorage.getItem('access_token') - if (token) { - config.headers.Authorization = `Bearer ${token}` - } - - // Get chatflow domain from user - const baseURL = sessionStorage.getItem('baseURL') || '' - if (baseURL) { - config.baseURL = `${baseURL}/api/v1` - } - - return config - }, - (error) => { - return Promise.reject(error) - } - ) - - return axiosInstance -} - export function AnswersProvider({ - chat: initialChat, + chat, journey: initialJourney, sidekicks, user, @@ -204,10 +151,9 @@ export function AnswersProvider({ apiUrl = '/api' }: AnswersProviderProps) { const router = useRouter() - const axiosInstance = React.useMemo(() => setupAxiosInterceptors(apiUrl), [apiUrl]) const [error, setError] = useState(null) const [inputValue, setInputValue] = useState('') - // const [chat, setChat] = useState(initialChat); + // const [chat, setChat] = useState(chat); const [journey, setJourney] = useState(initialJourney) const [isLoading, setIsLoading] = useState(false) @@ -218,81 +164,19 @@ export function AnswersProvider({ const [gptModel, setGptModel] = useState('gpt-3.5-turbo') const messageIdx = useRef(0) - // const { mutateActiveUserPlan } = useUserPlans(); - const { isStreaming, generateResponse } = useStreamedResponse({ - apiUrl, - onError: (err) => { - setIsLoading(false) - setError(err) - }, - // setChat, - onChunk: (chunk: Message) => { - // const idx = messages?.length; - - setMessages((currentMessages) => { - const newMessages = [...currentMessages] - newMessages[messageIdx.current] = { ...chunk, isLoading: true } + const [chatId, setChatId] = useState(chat?.id ?? uuidv4()) - if (chunk?.chat) { - if (chunk.chat?.id !== chatId) { - setChatId(chunk.chat.id) - } - if (chunk.chat.journeyId && chunk.chat?.journeyId !== journeyId) { - setJourneyId(chunk.chat.journeyId) - } - } - return newMessages - }) - }, - onEnd: ({ chat, ...rest }) => { - // Check if the current route is the chat - if (chat) { - const { id } = chat as Chat - if (id) { - setMessages((currentMessages) => { - const newMessages = [...currentMessages] - newMessages[messageIdx.current] = { ...newMessages[messageIdx.current], isLoading: false } - return newMessages - }) - setChatId(id) - // history.replaceState(null, '', `/chat/${id}`); - } - // router.refresh(); - mutate('/api/chats') - // mutateActiveUserPlan(); - } else { - console.log('NoChatOnEnd', { chat, ...rest }) - } - setIsLoading(false) - } - }) - const [chatId, setChatId] = useState(initialChat?.id) // false to disable for now - const { data: chat } = useSWR(!isStreaming && chatId && false ? `${apiUrl}/chats/${chatId}` : null, fetcher, { - revalidateOnFocus: false, - revalidateIfStale: false, - // refreshInterval: isStreaming ? 0 : 1000, - fallbackData: initialChat, - onSuccess(data, key, config) { - // TODO: re enable once polling is fixed for shared chats - // setMessages(data.messages!); - } - }) + const [sidekick, setSidekick] = useState( - sidekicks?.find((s) => s.id === chat?.messages?.[chat?.messages?.length - 1]?.chatflowid) + sidekicks?.find((s) => s.id === chat?.messages?.[chat?.messages?.length - 1]?.chatflowid || s.id === chat?.chatflowId) ) const chatbotConfig = React.useMemo(() => sidekick?.chatbotConfig, [sidekick]) const flowData = React.useMemo(() => sidekick?.flowData, [sidekick]) const [messages, setMessages] = useState>(chat?.messages ?? []) const [filters, setFilters] = useState(deepmerge({}, appSettings?.filters, journey?.filters, chat?.filters)) - // const setFilters = (filters: SetStateAction) => { - // setFiltersState((currentFilters) => { - // const newFilters = typeof filters === 'function' ? filters(currentFilters) : filters; - // return deepmerge({}, currentFilters, newFilters); - // }); - // }; const addMessage = useCallback( (message: Message) => { setMessages((currentMessages) => { @@ -480,38 +364,41 @@ export function AnswersProvider({ question: content, chatId, journeyId, - history: messages?.map(({ content, role }) => ({ - message: content, - type: role === 'assistant' ? 'apiMessage' : 'userMessage' - })), + // history: messages?.map(({ content, role }) => ({ + // message: content, + // type: role === 'assistant' ? 'apiMessage' : 'userMessage' + // })), uploads: files, audio, - chatType: 'ANSWERAI', - socketIOClientId: isChatFlowAvailableToStream ? socketIOClientId : undefined + chatType: 'ANSWERAI' } - const response = await predictionApi.sendMessageAndGetPrediction(sidekick?.id!, params) - const data = response.data - setMessages((prevMessages) => { - let allMessages = [...cloneDeep(prevMessages)] - if (allMessages[allMessages.length - 1].type === 'apiMessage') { - allMessages[allMessages.length - 1].id = data?.chatMessageId - } - return allMessages - }) - setChatId(data.chatId) - - if (content === '' && data.question) { - // the response contains the question even if it was in an audio format - // so if input is empty but the response contains the question, update the user message to show the question + if (isChatFlowAvailableToStream) { + // Use fetchEventSource for streaming + fetchResponseFromEventStream(sidekick?.id!, params) + } else { + const response = await predictionApi.sendMessageAndGetPrediction(sidekick?.id!, params) + const data = response.data setMessages((prevMessages) => { let allMessages = [...cloneDeep(prevMessages)] - if (allMessages[allMessages.length - 2].type === 'apiMessage') return allMessages - allMessages[allMessages.length - 2].content = data.question + if (allMessages[allMessages.length - 1].type === 'apiMessage') { + allMessages[allMessages.length - 1].id = data?.chatMessageId + } return allMessages }) - } - if (!isChatFlowAvailableToStream) { + setChatId(data.chatId) + + if (content === '' && data.question) { + // the response contains the question even if it was in an audio format + // so if input is empty but the response contains the question, update the user message to show the question + setMessages((prevMessages) => { + let allMessages = [...cloneDeep(prevMessages)] + if (allMessages[allMessages.length - 2].type === 'apiMessage') return allMessages + allMessages[allMessages.length - 2].content = data.question + return allMessages + }) + } + let text = '' if (data.text) text = data.text else if (data.json) text = '```json\n' + JSON.stringify(data.json, null, 2) @@ -535,35 +422,8 @@ export function AnswersProvider({ } ]) } - // if (!isChatFlowAvailableToStream || !socketIOClientId) { - - // if (data?.chatId) { - // setChatId(data.chatId) - // } - - // setMessages((prevMessages) => [ - // ...prevMessages, - // { - // role: 'assistant', - // content: data.text || JSON.stringify(data.json || data, null, 2), - // id: data?.chatMessageId, - // sourceDocuments: data?.sourceDocuments, - // usedTools: data?.usedTools, - // fileAnnotations: data?.fileAnnotations, - // agentReasoning: data?.agentReasoning, - // action: data?.action, - // isLoading: false, - // chat: data.chat - // } as Message - // ]) - - mutate('/api/chats') - setIsLoading(false) - // } else { - // // For streaming, the socket connection will handle message updates - // setMessages((prevMessages) => [...prevMessages, { role: 'assistant', content: '', isLoading: true } as Message]) - // } + setIsLoading(false) setInputValue('') } catch (err: any) { const errorMessage = err.response?.data?.message || 'Error sending message' @@ -572,83 +432,142 @@ export function AnswersProvider({ setMessages((prevMessages) => [...prevMessages, { role: 'assistant', content: errorMessage } as Message]) } }, - [ - addMessage, - chatId, - journeyId, - messages, - socketIOClientId, - isChatFlowAvailableToStream, - setInputValue, - setMessages, - setChatId, - setJourneyId, - mutate - ] + [addMessage, chatId, journeyId, messages, isChatFlowAvailableToStream, setInputValue, setMessages, setChatId, setJourneyId] ) - useEffect(() => { - let socket: any - if (sidekick?.id) { - const baseURL = sessionStorage.getItem('baseURL') || '' - socket = socketIOClient(baseURL, { - path: '/socket.io', - transports: ['websocket', 'polling'] - }) - - socket.on('connect', () => { - setSocketIOClientId(socket.id) - setIsChatFlowAvailableToStream(true) - }) - - socket.on('start', () => { - setMessages((prevMessages) => [...prevMessages, { role: 'assistant', content: '', isLoading: true } as Message]) - }) - - socket.on('token', updateLastMessage) - socket.on('sourceDocuments', updateLastMessageSourceDocuments) - socket.on('usedTools', updateLastMessageUsedTools) - socket.on('fileAnnotations', updateLastMessageFileAnnotations) - socket.on('agentReasoning', updateLastMessageAgentReasoning) - socket.on('action', updateLastMessageAction) - socket.on('nextAgent', updateLastMessageNextAgent) - socket.on('abort', abortMessage) - - socket.on('end', () => { - setMessages((prevMessages) => { - const allMessages = [...cloneDeep(prevMessages)] - const lastMessage = allMessages[allMessages.length - 1] - if (lastMessage?.role === 'user') return allMessages - lastMessage.isLoading = false - return allMessages - }) - setIsLoading(false) - }) - - socket.on('disconnect', () => { - setIsChatFlowAvailableToStream(false) - setSocketIOClientId('') - }) + // Add fetchResponseFromEventStream function + const fetchResponseFromEventStream = async (chatflowid: string, params: PredictionParams) => { + const baseURL = sessionStorage.getItem('baseURL') || '' + const token = sessionStorage.getItem('access_token') + // Set streaming flag + params.streaming = true - socket.on('error', (error: any) => { - setError(error?.message || 'Error during streaming') - setIsLoading(false) + try { + // Start with empty message that will be updated by streaming + setMessages((prevMessages) => [...prevMessages, { role: 'assistant', content: '', isLoading: true } as Message]) + await fetchEventSource(`${baseURL}/api/v1/internal-prediction/${chatflowid}`, { + openWhenHidden: true, + method: 'POST', + body: JSON.stringify(params), + headers: { + 'Content-Type': 'application/json', + 'x-request-from': 'internal', + ...(token ? { Authorization: `Bearer ${token}` } : {}) + }, + async onopen(response) { + if (response.ok && response.headers.get('content-type') === EventStreamContentType) { + setIsChatFlowAvailableToStream(true) + console.log('Connection established successfully') + // Connection established successfully + } else { + throw new Error('Failed to establish connection') + } + }, + async onmessage(ev) { + const payload = JSON.parse(ev.data) + console.log('payload', payload) + switch (payload.event) { + case 'start': + // Already created an empty message when starting the stream + break + case 'token': + updateLastMessage(payload.data) + break + case 'sourceDocuments': + updateLastMessageSourceDocuments(payload.data) + break + case 'usedTools': + updateLastMessageUsedTools(payload.data) + break + case 'fileAnnotations': + updateLastMessageFileAnnotations(payload.data) + break + case 'agentReasoning': + updateLastMessageAgentReasoning(payload.data) + break + case 'action': + updateLastMessageAction(payload.data) + break + case 'nextAgent': + updateLastMessageNextAgent(payload.data) + break + case 'metadata': + if (payload.data.chatId) { + setChatId(payload.data.chatId) + } + break + case 'error': + setError(payload.data) + // Update the current assistant message to show the error + setMessages((prevMessages) => { + const allMessages = [...cloneDeep(prevMessages)] + const lastMessage = allMessages[allMessages.length - 1] + if (lastMessage?.role === 'user') return allMessages + lastMessage.content = `Error: ${payload.data}` + lastMessage.isLoading = false + return allMessages + }) + break + case 'abort': + abortMessage() + break + case 'end': + setMessages((prevMessages) => { + const allMessages = [...cloneDeep(prevMessages)] + const lastMessage = allMessages[allMessages.length - 1] + if (lastMessage?.role === 'user') return allMessages + lastMessage.isLoading = false + return allMessages + }) + setIsLoading(false) + break + } + }, + async onclose() { + // Clean up on close + setIsLoading(false) + }, + async onerror(err) { + console.error('EventSource Error: ', err) + setError('Error during streaming') + setIsLoading(false) + throw err + } }) + } catch (error: any) { + console.error('Stream error:', error) + setError(error.message || 'Error during streaming') + setIsLoading(false) + } + } - return () => { - if (socket) { - socket.disconnect() - setSocketIOClientId('') + // Replace Socket.IO effect with event source availability check + useEffect(() => { + // Check if streaming is available for this chatflow + if (sidekick?.id) { + const checkStreamingAvailability = async () => { + try { + // You might need to implement this method in your API to check if streaming is available + const streamable = await predictionApi.checkIfChatflowIsValidForStreaming(sidekick.id) + setIsChatFlowAvailableToStream(streamable?.isStreaming || false) + } catch (error) { + console.error('Error checking streaming availability:', error) setIsChatFlowAvailableToStream(false) } } + + checkStreamingAvailability() + } + + return () => { + // Clean up if needed } }, [sidekick?.id]) React.useEffect(() => { setJourney(initialJourney) - setFilters(deepmerge({}, initialJourney?.filters, initialChat?.filters)) - }, [initialChat, initialJourney, appSettings]) + setFilters(deepmerge({}, initialJourney?.filters, chat?.filters)) + }, [chat, initialJourney, appSettings]) const [previews, setPreviews] = useState([]) const [isDragActive, setIsDragActive] = useState(false) @@ -810,3 +729,17 @@ export function AnswersProvider({ // @ts-ignore return {children} } + +// Add a fallback implementation for checkIfChatflowIsValidForStreaming if it doesn't exist in predictionApi +if (!predictionApi.checkIfChatflowIsValidForStreaming) { + predictionApi.checkIfChatflowIsValidForStreaming = async (chatflowId: string) => { + const baseURL = sessionStorage.getItem('baseURL') || '' + try { + const response = await axios.get(`${baseURL}/api/v1/chatflows-streaming/${chatflowId}`) + return response.data + } catch (error) { + console.error('Error checking if chatflow is valid for streaming:', error) + return { isStreaming: false } + } + } +} diff --git a/packages-answers/ui/src/AppLayout/AppLayout.Client.tsx b/packages-answers/ui/src/AppLayout/AppLayout.Client.tsx index 306a6f3805b..76892a43c40 100644 --- a/packages-answers/ui/src/AppLayout/AppLayout.Client.tsx +++ b/packages-answers/ui/src/AppLayout/AppLayout.Client.tsx @@ -15,7 +15,7 @@ import HelpChatDrawer from '../HelpChatDrawer' import { HelpChatProvider } from '../HelpChatContext' import { UserProvider } from '@auth0/nextjs-auth0/client' -import { Auth0Setup } from '@/AppProvider' +import { Auth0Setup } from '@/hooks/useAuth0Setup' import React from 'react' export default function AppLayout({ diff --git a/packages-answers/ui/src/AssistantInfoCard.tsx b/packages-answers/ui/src/AssistantInfoCard.tsx index 9cace7036de..40b138e340c 100644 --- a/packages-answers/ui/src/AssistantInfoCard.tsx +++ b/packages-answers/ui/src/AssistantInfoCard.tsx @@ -109,7 +109,7 @@ const AssistantInfoCard = ({ sidekick, onShare, onEdit, isFavorite: propIsFavori } if (!user) { const redirectUrl = `/sidekick-studio/${isAgentCanvas ? 'agentcanvas' : 'canvas'}` - const loginUrl = `/api/auth/login?returnTo=${redirectUrl}` + const loginUrl = `/api/auth/login?redirect_uri=${redirectUrl}` setNavigationState(state) window.location.href = loginUrl } else { diff --git a/packages-answers/ui/src/HelpChatDrawer.jsx b/packages-answers/ui/src/HelpChatDrawer.jsx index e1c334badf8..61b4542d7ae 100644 --- a/packages-answers/ui/src/HelpChatDrawer.jsx +++ b/packages-answers/ui/src/HelpChatDrawer.jsx @@ -182,7 +182,6 @@ const HelpChatDrawer = ({ apiHost, chatflowid }) => { anchor='right' open={helpChatOpen} variant='permanent' - keepMounted={true} sx={{ height: '100vh', width: helpChatOpen ? drawerWidth : 0, diff --git a/packages-answers/ui/src/SidekickSelect.tsx b/packages-answers/ui/src/SidekickSelect.tsx index 75741084b36..ff5b1990f6a 100644 --- a/packages-answers/ui/src/SidekickSelect.tsx +++ b/packages-answers/ui/src/SidekickSelect.tsx @@ -179,7 +179,7 @@ const WhiteIconButton = styled(IconButton)(({ theme }) => ({ })) const SidekickSelect: React.FC = ({ sidekicks: defaultSidekicks = [], noDialog = false }) => { - const { setSidekick, sidekick: selectedSidekick, setSidekick: setSelectedSidekick } = useAnswers() + const { chat, setSidekick, sidekick: selectedSidekick, setSidekick: setSelectedSidekick } = useAnswers() const router = useRouter() const { user } = useUser() const searchbarRef = useRef(null) @@ -261,16 +261,16 @@ const SidekickSelect: React.FC = ({ sidekicks: defaultSidek try { const res = await fetch(url) if (res.status === 401) { - // window.location.href = '/api/auth/login?returnTo=' + encodeURIComponent(window.location.href) - window.location.href = '/api/auth/login' + // window.location.href = '/api/auth/login?redirect_uri=' + encodeURIComponent(window.location.href) + window.location.href = '/api/auth/login?redirect_uri=' + encodeURIComponent(window.location.href) } else { return res.json() } } catch (error) { console.log('error', error) if (error instanceof Response && error.status === 401) { - window.location.href = '/api/auth/login' - // window.location.href = '/api/auth/login?returnTo=' + encodeURIComponent(window.location.href) + window.location.href = '/api/auth/login?redirect_uri=' + encodeURIComponent(window.location.href) + // window.location.href = '/api/auth/login?redirect_uri=' + encodeURIComponent(window.location.href) } return { sidekicks: [], categories: { top: [], more: [] } } } @@ -358,13 +358,17 @@ const SidekickSelect: React.FC = ({ sidekicks: defaultSidek }, [combinedSidekicks, favorites, allCategories]) const handleSidekickSelect = (sidekick: Sidekick) => { - setSelectedSidekick(sidekick) - setSidekick(sidekick) - setOpen(false) - setIsMarketplaceDialogOpen(false) - const sidekickHistory = JSON.parse(localStorage.getItem('sidekickHistory') || '{}') - sidekickHistory.lastUsed = sidekick - localStorage.setItem('sidekickHistory', JSON.stringify(sidekickHistory)) + if (!chat?.id) { + router.push(`/chat/${sidekick.id}`) + } else { + setSelectedSidekick(sidekick) + setSidekick(sidekick) + setOpen(false) + setIsMarketplaceDialogOpen(false) + const sidekickHistory = JSON.parse(localStorage.getItem('sidekickHistory') || '{}') + sidekickHistory.lastUsed = sidekick + localStorage.setItem('sidekickHistory', JSON.stringify(sidekickHistory)) + } } const handleMoreClick = (event: React.MouseEvent) => { @@ -408,7 +412,7 @@ const SidekickSelect: React.FC = ({ sidekicks: defaultSidek } if (!user) { const redirectUrl = `/sidekick-studio/${isAgentCanvas ? 'agentcanvas' : 'canvas'}` - const loginUrl = `/api/auth/login?returnTo=${redirectUrl}` + const loginUrl = `/api/auth/login?redirect_uri=${redirectUrl}` setNavigationState(state) window.location.href = loginUrl } else { diff --git a/packages-answers/ui/src/getCachedSession.ts b/packages-answers/ui/src/getCachedSession.ts index 521c0da5d03..edbd29e53e9 100644 --- a/packages-answers/ui/src/getCachedSession.ts +++ b/packages-answers/ui/src/getCachedSession.ts @@ -112,9 +112,19 @@ const getCachedSession = cache( // console.log('FlagsmithState', flagsmithState); session.flagsmithState = flagsmithState } - if (session?.user?.chatflowDomain) { + + // Check for CHATFLOW_DOMAIN_OVERRIDE to override the chatflowDomain + if (process.env.CHATFLOW_DOMAIN_OVERRIDE) { + console.log('CHATFLOW_DOMAIN_OVERRIDE', process.env.CHATFLOW_DOMAIN_OVERRIDE) + // Override chatflowDomain with the environment variable + if (session?.user) { + session.user.chatflowDomain = process.env.CHATFLOW_DOMAIN_OVERRIDE + } + } else if (session?.user?.chatflowDomain) { + // Apply existing transformation if no override session.user.chatflowDomain = session.user.chatflowDomain?.replace('8080', '4000') } + return session as { user: User; flagsmithState: any; accessToken: string } } ) diff --git a/packages-answers/utils/package.json b/packages-answers/utils/package.json index 048e8fb40d2..c79d105a5fa 100644 --- a/packages-answers/utils/package.json +++ b/packages-answers/utils/package.json @@ -1,99 +1,100 @@ { - "name": "utils", - "version": "0.0.1", - "description": "Content Parser for Open AI", - "private": true, - "type": "module", - "files": [ - "dist/**" - ], - "scripts": { - "not-build": "tsc", - "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", - "not-dev": "tsc -w", - "lint": "TIMING=1 eslint \"src/**/*.ts*\"", - "test": "jest", - "airtable": "node -r dotenv/config airtable.js", - "jira": "node -r dotenv/config src/jira.js", - "slack": "node -r dotenv/config src/slack.js", - "blog": "node -r dotenv/config createblog.js", - "fgenerate": "node -r dotenv/config finetune-generate.js", - "egenerate": "node -r dotenv/config embeddings-generate.js", - "upload": "node -r dotenv/config fileupload.js", - "finetune": "node -r dotenv/config finetune.js", - "pinecone": "node -r dotenv/config pinecone.js", - "query": "node -r dotenv/config query.js" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@auth0/nextjs-auth0": "^3.5.0", - "@algolia/client-search": "^4.19.1", - "@aws-sdk/client-s3": "^3.374.0", - "@contentful/app-sdk": "^4.22.1", - "@contentful/rich-text-from-markdown": "^15.16.3", - "@dqbd/tiktoken": "^1.0.6", - "@pinecone-database/pinecone": "^0.0.5", - "@slack/web-api": "^6.8.1", - "airtable": "^0.11.6", - "algoliasearch": "^4.19.1", - "axios": "^1.4.0", - "cheerio": "^1.0.0-rc.12", - "contentful-management": "^10.39.1", - "csv": "^6.3.1", - "csv-parser": "^3.0.0", - "csv-stringify": "^6.4.0", - "dataloader": "^2.2.2", - "db": "workspace:*", - "dotenv": "^16.3.1", - "eventsource-parser": "^1.0.0", - "socket.io-client": "^4.7.5", - "ws": "^8.16.0", - "bufferutil": "^4.0.8", - "utf-8-validate": "^6.0.3", - "gpt-3-encoder": "^1.1.4", - "gpt-tokens": "^1.3.3", - "gpt3-tokenizer": "^1.1.5", - "handlebars": "^4.7.7", - "import-fresh": "^3.3.0", - "inngest": "^1.8.0", - "ioredis": "^5.3.2", - "jira.js": "^2.17.0", - "js-yaml": "^4.1.0", - "jsdom": "^22.1.0", - "langchain": "^0.0.116", - "mammoth": "^1.6.0", - "natural": "^6.2.0", - "next-auth": "^4.22.3", - "node-fetch": "^3.3.1", - "node-html-markdown": "^1.3.0", - "openai": "^3.2.1", - "openapi-typescript": "^6.3.7", - "pdfjs-dist": "^3.8.162", - "puppeteer": "^19.11.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "readline": "^1.3.0", - "request": "^2.88.2", - "sitemapper": "^3.2.6", - "stripe": "^12.17.0", - "swagger2openapi": "^7.0.8", - "uuid": "^9.0.0", - "yaml": "^2.2.1" - }, - "devDependencies": { - "@types/jest": "^29.5.0", - "@types/jsdom": "^21.1.1", - "@types/node": "^18.15.11", - "@types/react-dom": "^18.2.7", - "@types/swagger2openapi": "^7.0.0", - "@types/uuid": "^9.0.1", - "eslint": "^7.32.0", - "eslint-config-custom": "workspace:*", - "jest": "^29.5.0", - "openapi-types": "^12.1.3", - "tsconfig": "workspace:*", - "types": "workspace:*", - "typescript": "^4.8.4" - } + "name": "utils", + "version": "0.0.1", + "description": "Content Parser for Open AI", + "private": true, + "type": "module", + "files": [ + "dist/**" + ], + "scripts": { + "not-build": "tsc", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "not-dev": "tsc -w", + "lint": "TIMING=1 eslint \"src/**/*.ts*\"", + "test": "jest", + "airtable": "node -r dotenv/config airtable.js", + "jira": "node -r dotenv/config src/jira.js", + "slack": "node -r dotenv/config src/slack.js", + "blog": "node -r dotenv/config createblog.js", + "fgenerate": "node -r dotenv/config finetune-generate.js", + "egenerate": "node -r dotenv/config embeddings-generate.js", + "upload": "node -r dotenv/config fileupload.js", + "finetune": "node -r dotenv/config finetune.js", + "pinecone": "node -r dotenv/config pinecone.js", + "query": "node -r dotenv/config query.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@auth0/nextjs-auth0": "3.5.0", + "@auth0/auth0-react": "2.3.0", + "@algolia/client-search": "^4.19.1", + "@aws-sdk/client-s3": "^3.374.0", + "@contentful/app-sdk": "^4.22.1", + "@contentful/rich-text-from-markdown": "^15.16.3", + "@dqbd/tiktoken": "^1.0.6", + "@pinecone-database/pinecone": "^0.0.5", + "@slack/web-api": "^6.8.1", + "airtable": "^0.11.6", + "algoliasearch": "^4.19.1", + "axios": "^1.4.0", + "cheerio": "^1.0.0-rc.12", + "contentful-management": "^10.39.1", + "csv": "^6.3.1", + "csv-parser": "^3.0.0", + "csv-stringify": "^6.4.0", + "dataloader": "^2.2.2", + "db": "workspace:*", + "dotenv": "^16.3.1", + "eventsource-parser": "^1.0.0", + "socket.io-client": "^4.7.5", + "ws": "^8.16.0", + "bufferutil": "^4.0.8", + "utf-8-validate": "^6.0.3", + "gpt-3-encoder": "^1.1.4", + "gpt-tokens": "^1.3.3", + "gpt3-tokenizer": "^1.1.5", + "handlebars": "^4.7.7", + "import-fresh": "^3.3.0", + "inngest": "^1.8.0", + "ioredis": "^5.3.2", + "jira.js": "^2.17.0", + "js-yaml": "^4.1.0", + "jsdom": "^22.1.0", + "langchain": "^0.0.116", + "mammoth": "^1.6.0", + "natural": "^6.2.0", + "next-auth": "^4.22.3", + "node-fetch": "^3.3.1", + "node-html-markdown": "^1.3.0", + "openai": "^3.2.1", + "openapi-typescript": "^6.3.7", + "pdfjs-dist": "^3.8.162", + "puppeteer": "^19.11.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "readline": "^1.3.0", + "request": "^2.88.2", + "sitemapper": "^3.2.6", + "stripe": "^12.17.0", + "swagger2openapi": "^7.0.8", + "uuid": "^9.0.0", + "yaml": "^2.2.1" + }, + "devDependencies": { + "@types/jest": "^29.5.0", + "@types/jsdom": "^21.1.1", + "@types/node": "^18.15.11", + "@types/react-dom": "^18.2.7", + "@types/swagger2openapi": "^7.0.0", + "@types/uuid": "^9.0.1", + "eslint": "^7.32.0", + "eslint-config-custom": "workspace:*", + "jest": "^29.5.0", + "openapi-types": "^12.1.3", + "tsconfig": "workspace:*", + "types": "workspace:*", + "typescript": "^4.8.4" + } } diff --git a/packages/api-documentation/README-ZH.md b/packages/api-documentation/README-ZH.md new file mode 100644 index 00000000000..c8447f81ea2 --- /dev/null +++ b/packages/api-documentation/README-ZH.md @@ -0,0 +1,33 @@ + + +# Flowise API 文档 + +[English](./README.md) | 中文 + +这是 Flowise 公共 API 的列表,允许用户以编程方式执行与 GUI 中相同的许多任务。 + +独立运行: + +1. 启动 Flowise 服务器: + ```sh + cd Flowise + pnpm start + ``` +2. 启动 API 文档服务器: + ```sh + cd packages/api-documentation + pnpm start + ``` + +开发模式下运行: + +```sh +cd Flowise +pnpm dev +``` + +文档将在此地址提供:http://localhost:6655/api-docs + +## 许可证 + +此存储库中的源代码根据 Apache 2.0 许可证 提供 diff --git a/packages/api-documentation/README.md b/packages/api-documentation/README.md new file mode 100644 index 00000000000..1788561560a --- /dev/null +++ b/packages/api-documentation/README.md @@ -0,0 +1,33 @@ + + +# Flowise API Docs + +English | [中文](./README-ZH.md) + +A list of Flowise public APIs, allowing users to programmatically execute many of the same tasks as the same in the GUI. + +To run this standalone: + +1. Spin up Flowise server: + ```sh + cd Flowise + pnpm start + ``` +2. Start API Docs server: + ```sh + cd packages/api-documentation + pnpm start + ``` + +To run in dev mode: + +```sh +cd Flowise +pnpm dev +``` + +Docs will be served on: `http://localhost:6655/api-docs` + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/api-documentation/nodemon.json b/packages/api-documentation/nodemon.json new file mode 100644 index 00000000000..5bfdda3793c --- /dev/null +++ b/packages/api-documentation/nodemon.json @@ -0,0 +1,6 @@ +{ + "ignore": ["**/*.spec.ts", ".git", "node_modules"], + "watch": ["src"], + "exec": "ts-node ./src/index.ts", + "ext": "ts, yml" +} diff --git a/packages/api-documentation/package.json b/packages/api-documentation/package.json new file mode 100644 index 00000000000..891cda8e0a6 --- /dev/null +++ b/packages/api-documentation/package.json @@ -0,0 +1,21 @@ +{ + "name": "flowise-api", + "version": "1.0.2", + "description": "Flowise API documentation server", + "scripts": { + "build": "tsc", + "start": "node dist/index.js", + "dev": "concurrently \"tsc-watch --noClear -p ./tsconfig.json\" \"nodemon\"", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0" + }, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "swagger-jsdoc": "^6.2.8", + "swagger-ui-express": "^5.0.0" + }, + "devDependencies": { + "@types/swagger-jsdoc": "^6.0.1", + "@types/swagger-ui-express": "^4.1.3", + "tsc-watch": "^6.0.4" + } +} diff --git a/packages/api-documentation/src/configs/swagger.config.ts b/packages/api-documentation/src/configs/swagger.config.ts new file mode 100644 index 00000000000..1e645f1887c --- /dev/null +++ b/packages/api-documentation/src/configs/swagger.config.ts @@ -0,0 +1,44 @@ +import swaggerJSDoc from 'swagger-jsdoc' + +const swaggerUiOptions = { + failOnErrors: true, // Throw when parsing errors + baseDir: __dirname, // Base directory which we use to locate your JSDOC files + exposeApiDocs: true, + definition: { + openapi: '3.0.3', + info: { + title: 'Flowise APIs', + summary: 'Interactive swagger-ui auto-generated API docs from express, based on a swagger.yml file', + version: '1.0.0', + description: + 'This module serves auto-generated swagger-ui generated API docs from Flowise express backend, based on a swagger.yml file. Swagger is available on: http://localhost:6655/api-docs', + license: { + name: 'Apache 2.0', + url: 'https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md' + }, + contact: { + name: 'FlowiseAI', + email: 'support@flowiseai.com' + } + }, + servers: [ + { + url: 'http://localhost:4000/api/v1', + description: 'Flowise Server' + } + ] + }, + apis: [`${process.cwd()}/dist/routes/**/*.js`, `${process.cwd()}/src/yml/swagger.yml`] +} + +// https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md +const swaggerExplorerOptions = { + swaggerOptions: { + validatorUrl: '127.0.0.1' + }, + explorer: true +} + +const swaggerDocs = swaggerJSDoc(swaggerUiOptions) + +export { swaggerDocs, swaggerExplorerOptions } diff --git a/packages/api-documentation/src/index.ts b/packages/api-documentation/src/index.ts new file mode 100644 index 00000000000..9859ffdf920 --- /dev/null +++ b/packages/api-documentation/src/index.ts @@ -0,0 +1,17 @@ +import express, { Request, Response } from 'express' +import swaggerUi from 'swagger-ui-express' +import { swaggerDocs, swaggerExplorerOptions } from './configs/swagger.config' + +const app = express() +const port = 6655 + +app.get('/', (req: Request, res: Response) => { + res.redirect('/api-docs') +}) + +app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs, swaggerExplorerOptions)) + +app.listen(port, () => { + // eslint-disable-next-line no-console + console.log(`Flowise API documentation server listening on port ${port}`) +}) diff --git a/packages/api-documentation/src/yml/swagger.yml b/packages/api-documentation/src/yml/swagger.yml new file mode 100644 index 00000000000..21b8f1dd0f1 --- /dev/null +++ b/packages/api-documentation/src/yml/swagger.yml @@ -0,0 +1,2527 @@ +tags: + - name: assistants + - name: attachments + - name: chatmessage + - name: chatflows + - name: document-store + - name: feedback + - name: leads + - name: ping + - name: prediction + - name: tools + - name: upsert-history + - name: variables + - name: vector + +paths: + /chatmessage/{id}: + get: + tags: + - chatmessage + security: + - bearerAuth: [] + operationId: getAllChatMessages + summary: List all chat messages + description: Retrieve all chat messages for a specific chatflow. + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + - in: query + name: chatType + schema: + type: string + enum: [INTERNAL, EXTERNAL] + description: Filter by chat type + - in: query + name: order + schema: + type: string + enum: [ASC, DESC] + description: Sort order + - in: query + name: chatId + schema: + type: string + description: Filter by chat ID + - in: query + name: memoryType + schema: + type: string + example: Buffer Memory + description: Filter by memory type + - in: query + name: sessionId + schema: + type: string + description: Filter by session ID + - in: query + name: startDate + schema: + type: string + example: 2025-01-01T11:28:36.000Z + format: date-time + description: Filter by start date + - in: query + name: endDate + schema: + type: string + example: 2025-01-13T11:28:36.000Z + format: date-time + description: Filter by end date + - in: query + name: feedback + schema: + type: boolean + description: Filter by feedback + - in: query + name: feedbackType + schema: + type: string + enum: [THUMBS_UP, THUMBS_DOWN] + description: Filter by feedback type. Only applicable if feedback is true + responses: + '200': + description: A list of chat messages + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ChatMessage' + '500': + description: Internal error + + delete: + tags: + - chatmessage + security: + - bearerAuth: [] + operationId: removeAllChatMessages + summary: Delete all chat messages + description: Delete all chat messages for a specific chatflow. + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + - in: query + name: chatId + schema: + type: string + description: Filter by chat ID + - in: query + name: memoryType + schema: + type: string + example: Buffer Memory + description: Filter by memory type + - in: query + name: sessionId + schema: + type: string + description: Filter by session ID + - in: query + name: chatType + schema: + type: string + enum: [INTERNAL, EXTERNAL] + description: Filter by chat type + - in: query + name: startDate + schema: + type: string + example: 2025-01-01T11:28:36.000Z + description: Filter by start date + - in: query + name: endDate + schema: + type: string + example: 2025-01-13T11:28:36.000Z + description: Filter by end date + - in: query + name: feedbackType + schema: + type: string + enum: [THUMBS_UP, THUMBS_DOWN] + description: Filter by feedback type + - in: query + name: hardDelete + schema: + type: boolean + description: If hardDelete is true, messages will be deleted from the third party service as well + responses: + '200': + description: Chat messages deleted successfully + '400': + description: Invalid parameters + '404': + description: Chat messages not found + '500': + description: Internal error + /assistants: + post: + tags: + - assistants + security: + - bearerAuth: [] + operationId: createAssistant + summary: Create a new assistant + description: Create a new assistant with the provided details + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Assistant' + required: true + responses: + '200': + description: Assistant created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Assistant' + '400': + description: Invalid input provided + '422': + description: Validation exception + get: + tags: + - assistants + security: + - bearerAuth: [] + summary: List all assistants + description: Retrieve a list of all assistants + operationId: listAssistants + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Assistant' + '500': + description: Internal error + /assistants/{id}: + get: + tags: + - assistants + security: + - bearerAuth: [] + summary: Get assistant by ID + description: Retrieve a specific assistant by ID + operationId: getAssistantById + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Assistant ID + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Assistant' + '400': + description: The specified ID is invalid + '404': + description: Assistant not found + '500': + description: Internal error + put: + tags: + - assistants + security: + - bearerAuth: [] + summary: Update assistant details + description: Update the details of an existing assistant + operationId: updateAssistant + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Assistant ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Assistant' + responses: + '200': + description: Assistant updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Assistant' + '400': + description: The specified ID is invalid or body is missing + '404': + description: Assistant not found + '500': + description: Internal error + delete: + tags: + - assistants + security: + - bearerAuth: [] + summary: Delete an assistant + description: Delete an assistant by ID + operationId: deleteAssistant + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Assistant ID + responses: + '200': + description: Assistant deleted successfully + '400': + description: The specified ID is invalid + '404': + description: Assistant not found + '500': + description: Internal error + + /attachments/{chatflowId}/{chatId}: + post: + tags: + - attachments + security: + - bearerAuth: [] + operationId: createAttachment + summary: Create attachments array + description: Return contents of the files in plain string format + parameters: + - in: path + name: chatflowId + required: true + schema: + type: string + description: Chatflow ID + - in: path + name: chatId + required: true + schema: + type: string + description: Chat ID + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + files: + type: array + items: + type: string + format: binary + description: Files to be uploaded + base64: + type: boolean + default: false + description: Return contents of the files in base64 format + required: + - files + required: true + responses: + '200': + description: Attachments created successfully + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CreateAttachmentResponse' + '400': + description: Invalid input provided + '404': + description: Chatflow or ChatId not found + '422': + description: Validation error + '500': + description: Internal server error + + /chatflows: + post: + tags: + - chatflows + security: + - bearerAuth: [] + operationId: createChatflow + summary: Create a new chatflow + description: Create a new chatflow with the provided details + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + required: true + responses: + '200': + description: Chatflow created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + '400': + description: Invalid input provided + '422': + description: Validation exception + get: + tags: + - chatflows + security: + - bearerAuth: [] + summary: List all chatflows + description: Retrieve a list of all chatflows + operationId: listChatflows + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Chatflow' + '500': + description: Internal error + /chatflows/{id}: + get: + tags: + - chatflows + security: + - bearerAuth: [] + summary: Get chatflow by ID + description: Retrieve a specific chatflow by ID + operationId: getChatflowById + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + '400': + description: The specified ID is invalid + '404': + description: Chatflow not found + '500': + description: Internal error + put: + tags: + - chatflows + security: + - bearerAuth: [] + summary: Update chatflow details + description: Update the details of an existing chatflow + operationId: updateChatflow + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + responses: + '200': + description: Chatflow updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + '400': + description: The specified ID is invalid or body is missing + '404': + description: Chatflow not found + '500': + description: Internal error + delete: + tags: + - chatflows + security: + - bearerAuth: [] + summary: Delete a chatflow + description: Delete a chatflow by ID + operationId: deleteChatflow + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + responses: + '200': + description: Chatflow deleted successfully + '400': + description: The specified ID is invalid + '404': + description: Chatflow not found + '500': + description: Internal error + /chatflows/apikey/{apikey}: + get: + tags: + - chatflows + security: + - bearerAuth: [] + summary: Get chatflow by API key + description: Retrieve a chatflow using an API key + operationId: getChatflowByApiKey + parameters: + - in: path + name: apikey + required: true + schema: + type: string + description: API key associated with the chatflow + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Chatflow' + '400': + description: The specified API key is invalid + '404': + description: Chatflow not found + '500': + description: Internal error + + /document-store/store: + post: + tags: + - document-store + security: + - bearerAuth: [] + summary: Create a new document store + description: Creates a new document store with the provided details + operationId: createDocumentStore + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStore' + required: true + responses: + '200': + description: Successfully created document store + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStore' + '400': + description: Invalid request body + '500': + description: Internal server error + get: + tags: + - document-store + security: + - bearerAuth: [] + summary: List all document stores + description: Retrieves a list of all document stores + operationId: getAllDocumentStores + responses: + '200': + description: A list of document stores + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DocumentStore' + '500': + description: Internal server error + + /document-store/store/{id}: + get: + tags: + - document-store + security: + - bearerAuth: [] + summary: Get a specific document store + description: Retrieves details of a specific document store by its ID + operationId: getDocumentStoreById + parameters: + - in: path + name: id + required: true + schema: + type: string + format: uuid + description: Document Store ID + responses: + '200': + description: Successfully retrieved document store + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStore' + '404': + description: Document store not found + '500': + description: Internal server error + put: + tags: + - document-store + security: + - bearerAuth: [] + summary: Update a specific document store + description: Updates the details of a specific document store by its ID + operationId: updateDocumentStore + parameters: + - in: path + name: id + required: true + schema: + type: string + format: uuid + description: Document Store ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStore' + required: true + responses: + '200': + description: Successfully updated document store + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStore' + '404': + description: Document store not found + '500': + description: Internal server error + delete: + tags: + - document-store + security: + - bearerAuth: [] + summary: Delete a specific document store + description: Deletes a document store by its ID + operationId: deleteDocumentStore + parameters: + - in: path + name: id + required: true + schema: + type: string + format: uuid + description: Document Store ID + responses: + '200': + description: Successfully deleted document store + '404': + description: Document store not found + '500': + description: Internal server error + + /document-store/upsert/{id}: + post: + tags: + - document-store + security: + - bearerAuth: [] + summary: Upsert document to document store + description: Upsert document to document store + operationId: upsertDocument + parameters: + - in: path + name: id + required: true + schema: + type: string + format: uuid + description: Document Store ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStoreLoaderForUpsert' + multipart/form-data: + schema: + type: object + properties: + files: + type: array + items: + type: string + format: binary + description: Files to be uploaded + docId: + type: string + nullable: true + example: '603a7b51-ae7c-4b0a-8865-e454ed2f6766' + description: Document ID to use existing configuration + loader: + type: string + nullable: true + example: '{"name":"plainText","config":{"text":"why the sky is blue"}}' + description: Loader configurations + splitter: + type: string + nullable: true + example: '{"name":"recursiveCharacterTextSplitter","config":{"chunkSize":2000}}' + description: Splitter configurations + embedding: + type: string + nullable: true + example: '{"name":"openAIEmbeddings","config":{"modelName":"text-embedding-ada-002"}}' + description: Embedding configurations + vectorStore: + type: string + nullable: true + example: '{"name":"faiss"}' + description: Vector Store configurations + recordManager: + type: string + nullable: true + example: '{"name":"postgresRecordManager"}' + description: Record Manager configurations + metadata: + type: object + nullable: true + description: Metadata associated with the document + example: { 'foo': 'bar' } + replaceExisting: + type: boolean + nullable: true + description: Whether to replace existing document loader with the new upserted chunks. However this does not delete the existing embeddings in the vector store + createNewDocStore: + type: boolean + nullable: true + description: Whether to create a new document store + docStore: + type: object + nullable: true + description: Only when createNewDocStore is true, pass in the new document store configuration + properties: + name: + type: string + example: plainText + description: Name of the new document store to be created + description: + type: string + example: plainText + description: Description of the new document store to be created + required: + - files + required: true + responses: + '200': + description: Successfully execute upsert operation + content: + application/json: + schema: + $ref: '#/components/schemas/VectorUpsertResponse' + + '400': + description: Invalid request body + '500': + description: Internal server error + + /document-store/refresh/{id}: + post: + tags: + - document-store + security: + - bearerAuth: [] + summary: Re-process and upsert all documents in document store + description: Re-process and upsert all existing documents in document store + operationId: refreshDocument + parameters: + - in: path + name: id + required: true + schema: + type: string + format: uuid + description: Document Store ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStoreLoaderForRefresh' + required: true + responses: + '200': + description: Successfully execute refresh operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/VectorUpsertResponse' + + '400': + description: Invalid request body + '500': + description: Internal server error + + /document-store/vectorstore/query: + post: + tags: + - document-store + security: + - bearerAuth: [] + summary: Retrieval query + description: Retrieval query for the upserted chunks + operationId: queryVectorStore + requestBody: + content: + application/json: + schema: + type: object + required: + - storeId + - query + properties: + storeId: + type: string + description: Document Store ID + example: '603a7b51-ae7c-4b0a-8865-e454ed2f6766' + query: + type: string + description: Query to search for + example: 'What is the capital of France?' + required: true + responses: + '200': + description: Successfully executed query on vector store + content: + application/json: + schema: + type: object + properties: + timeTaken: + type: number + description: Time taken to execute the query (in milliseconds) + docs: + type: array + items: + $ref: '#/components/schemas/Document' + '400': + description: Invalid request body + '500': + description: Internal server error + + /document-store/loader/{storeId}/{loaderId}: + delete: + tags: + - document-store + security: + - bearerAuth: [] + summary: Delete specific document loader and associated chunks from document store + description: Delete specific document loader and associated chunks from document store. This does not delete data from vector store. + operationId: deleteLoaderFromDocumentStore + parameters: + - in: path + name: storeId + required: true + schema: + type: string + description: Document Store ID + - in: path + name: loaderId + required: true + schema: + type: string + description: Document Loader ID + responses: + '200': + description: Successfully deleted loader from document store + '400': + description: Invalid ID provided + '404': + description: Document Store not found + '500': + description: Internal server error + + /document-store/vectorstore/{id}: + delete: + tags: + - document-store + security: + - bearerAuth: [] + summary: Delete data from vector store + description: Only data that were upserted with Record Manager will be deleted from vector store + operationId: deleteVectorStoreFromStore + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Document Store ID + responses: + '200': + description: Successfully deleted data from vector store + '400': + description: Invalid ID provided + '404': + description: Document Store not found + '500': + description: Internal server error + + /document-store/chunks/{storeId}/{loaderId}/{pageNo}: + get: + tags: + - document-store + security: + - bearerAuth: [] + summary: Get chunks from a specific document loader + description: Get chunks from a specific document loader within a document store + operationId: getDocumentStoreFileChunks + parameters: + - in: path + name: storeId + required: true + schema: + type: string + format: uuid + description: Document Store ID + - in: path + name: loaderId + required: true + schema: + type: string + format: uuid + description: Document loader ID + - in: path + name: pageNo + required: true + schema: + type: string + description: Pagination number + responses: + '200': + description: Successfully retrieved chunks from document loader + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStoreFileChunkPagedResponse' + '404': + description: Document store not found + '500': + description: Internal server error + + /document-store/chunks/{storeId}/{loaderId}/{chunkId}: + put: + tags: + - document-store + security: + - bearerAuth: [] + summary: Update a specific chunk + description: Updates a specific chunk from a document loader + operationId: editDocumentStoreFileChunk + parameters: + - in: path + name: storeId + required: true + schema: + type: string + description: Document Store ID + - in: path + name: loaderId + required: true + schema: + type: string + description: Document Loader ID + - in: path + name: chunkId + required: true + schema: + type: string + description: Document Chunk ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + required: true + responses: + '200': + description: Successfully updated chunk + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentStoreFileChunkPagedResponse' + '404': + description: Document store not found + '500': + description: Internal server error + + delete: + tags: + - document-store + security: + - bearerAuth: [] + summary: Delete a specific chunk from a document loader + description: Delete a specific chunk from a document loader + operationId: deleteDocumentStoreFileChunk + parameters: + - in: path + name: storeId + required: true + schema: + type: string + description: Document Store ID + - in: path + name: loaderId + required: true + schema: + type: string + description: Document Loader ID + - in: path + name: chunkId + required: true + schema: + type: string + description: Document Chunk ID + responses: + '200': + description: Successfully deleted chunk + '400': + description: Invalid ID provided + '404': + description: Document Store not found + '500': + description: Internal server error + + /feedback: + post: + tags: + - feedback + security: + - bearerAuth: [] + operationId: createChatMessageFeedbackForChatflow + summary: Create new chat message feedback + description: Create new feedback for a specific chat flow. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChatMessageFeedback' + required: true + responses: + '200': + description: Feedback successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/ChatMessageFeedback' + '400': + description: Invalid input provided + '500': + description: Internal server error + /feedback/{id}: + get: + tags: + - feedback + security: + - bearerAuth: [] + summary: List all chat message feedbacks for a chatflow + description: Retrieve all feedbacks for a chatflow + operationId: getAllChatMessageFeedback + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + - in: query + name: chatId + schema: + type: string + description: Chat ID to filter feedbacks (optional) + - in: query + name: sortOrder + schema: + type: string + enum: [asc, desc] + default: asc + description: Sort order of feedbacks (optional) + - in: query + name: startDate + schema: + type: string + format: date-time + description: Filter feedbacks starting from this date (optional) + - in: query + name: endDate + schema: + type: string + format: date-time + description: Filter feedbacks up to this date (optional) + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ChatMessageFeedback' + '500': + description: Internal server error + put: + tags: + - feedback + security: + - bearerAuth: [] + summary: Update chat message feedback + description: Update a specific feedback + operationId: updateChatMessageFeedbackForChatflow + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chat Message Feedback ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChatMessageFeedback' + responses: + '200': + description: Feedback successfully updated + content: + application/json: + schema: + $ref: '#/components/schemas/ChatMessageFeedback' + '400': + description: Invalid input provided + '404': + description: Feedback with the specified ID was not found + '500': + description: Internal server error + + /leads: + post: + tags: + - leads + security: + - bearerAuth: [] + operationId: createLead + summary: Create a new lead in a chatflow + description: Create a new lead associated with a specific chatflow + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Lead' + required: true + responses: + '200': + description: Lead created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Lead' + '400': + description: Invalid request body + '422': + description: Validation error + '500': + description: Internal server error + + /leads/{id}: + get: + tags: + - leads + security: + - bearerAuth: [] + summary: Get all leads for a specific chatflow + description: Retrieve all leads associated with a specific chatflow + operationId: getAllLeadsForChatflow + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Lead' + '400': + description: Invalid ID provided + '404': + description: Leads not found + '500': + description: Internal server error + + /ping: + get: + tags: + - ping + summary: Ping the server + description: Ping the server to check if it is running + operationId: pingServer + responses: + '200': + description: Server is running + content: + text/plain: + schema: + type: string + example: pong + '500': + description: Internal server error + + /prediction/{id}: + post: + tags: + - prediction + security: + - bearerAuth: [] + operationId: createPrediction + summary: Create a new prediction + description: Create a new prediction + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Prediction' + multipart/form-data: + schema: + type: object + properties: + question: + type: string + description: Question to ask during the prediction process + files: + type: array + items: + type: string + format: binary + description: Files to be uploaded + modelName: + type: string + nullable: true + example: '' + description: Other override configurations + required: + - question + required: true + responses: + '200': + description: Prediction created successfully + content: + application/json: + schema: + type: object + properties: + text: + type: string + description: The result of the prediction + json: + type: object + description: The result of the prediction in JSON format if available + question: + type: string + description: The question asked during the prediction process + chatId: + type: string + description: The chat ID associated with the prediction + chatMessageId: + type: string + description: The chat message ID associated with the prediction + sessionId: + type: string + description: The session ID associated with the prediction + memoryType: + type: string + description: The memory type associated with the prediction + sourceDocuments: + type: array + items: + $ref: '#/components/schemas/Document' + usedTools: + type: array + items: + $ref: '#/components/schemas/UsedTool' + fileAnnotations: + type: array + items: + $ref: '#/components/schemas/FileAnnotation' + '400': + description: Invalid input provided + '404': + description: Chatflow not found + '422': + description: Validation error + '500': + description: Internal server error + /tools: + post: + tags: + - tools + security: + - bearerAuth: [] + operationId: createTool + summary: Create a new tool + description: Create a new tool + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Tool' + required: true + responses: + '200': + description: Tool created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Tool' + '400': + description: Invalid request body + '422': + description: Validation error + '500': + description: Internal server error + get: + tags: + - tools + security: + - bearerAuth: [] + summary: List all tools + description: Retrieve a list of all tools + operationId: getAllTools + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Tool' + '500': + description: Internal server error + + /tools/{id}: + get: + tags: + - tools + security: + - bearerAuth: [] + summary: Get a tool by ID + description: Retrieve a specific tool by ID + operationId: getToolById + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Tool ID + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Tool' + '400': + description: Invalid ID provided + '404': + description: Tool not found + '500': + description: Internal server error + put: + tags: + - tools + security: + - bearerAuth: [] + summary: Update a tool by ID + description: Update a specific tool by ID + operationId: updateTool + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Tool ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Tool' + required: true + responses: + '200': + description: Tool updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Tool' + '400': + description: Invalid ID or request body provided + '404': + description: Tool not found + '500': + description: Internal server error + delete: + tags: + - tools + security: + - bearerAuth: [] + summary: Delete a tool by ID + description: Delete a specific tool by ID + operationId: deleteTool + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Tool ID + responses: + '200': + description: Tool deleted successfully + '400': + description: Invalid ID provided + '404': + description: Tool not found + '500': + description: Internal server error + + /upsert-history/{id}: + get: + tags: + - upsert-history + security: + - bearerAuth: [] + summary: Get all upsert history records + description: Retrieve all upsert history records with optional filters + operationId: getAllUpsertHistory + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID to filter records by + - in: query + name: order + required: false + schema: + type: string + enum: [ASC, DESC] + default: ASC + description: Sort order of the results (ascending or descending) + - in: query + name: startDate + required: false + schema: + type: string + format: date-time + description: Filter records from this start date (inclusive) + - in: query + name: endDate + required: false + schema: + type: string + format: date-time + description: Filter records until this end date (inclusive) + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UpsertHistoryResponse' + '500': + description: Internal server error + patch: + tags: + - upsert-history + security: + - bearerAuth: [] + summary: Delete upsert history records + description: Soft delete upsert history records by IDs + operationId: patchDeleteUpsertHistory + requestBody: + content: + application/json: + schema: + type: object + properties: + ids: + type: array + items: + type: string + format: uuid + description: List of upsert history record IDs to delete + responses: + '200': + description: Successfully deleted records + '400': + description: Invalid request body + '500': + description: Internal server error + /variables: + post: + tags: + - variables + security: + - bearerAuth: [] + operationId: createVariable + summary: Create a new variable + description: Create a new variable + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Variable' + required: true + responses: + '200': + description: Variable created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Variable' + '400': + description: Invalid request body + '422': + description: Validation error + '500': + description: Internal server error + get: + tags: + - variables + security: + - bearerAuth: [] + summary: List all variables + description: Retrieve a list of all variables + operationId: getAllVariables + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Variable' + '500': + description: Internal server error + + /variables/{id}: + put: + tags: + - variables + security: + - bearerAuth: [] + summary: Update a variable by ID + description: Update a specific variable by ID + operationId: updateVariable + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Variable ID + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Variable' + required: true + responses: + '200': + description: Variable updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/Variable' + '400': + description: Invalid ID or request body provided + '404': + description: Variable not found + '500': + description: Internal server error + delete: + tags: + - variables + security: + - bearerAuth: [] + summary: Delete a variable by ID + description: Delete a specific variable by ID + operationId: deleteVariable + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Variable ID + responses: + '200': + description: Variable deleted successfully + '400': + description: Invalid ID provided + '404': + description: Variable not found + '500': + description: Internal server error + /vector/upsert/{id}: + post: + tags: + - vector + security: + - bearerAuth: [] + operationId: vectorUpsert + summary: Upsert vector embeddings + description: Upsert vector embeddings of documents in a chatflow + parameters: + - in: path + name: id + required: true + schema: + type: string + description: Chatflow ID + requestBody: + content: + application/json: + schema: + type: object + properties: + stopNodeId: + type: string + description: In cases when you have multiple vector store nodes, you can specify the node ID to store the vectors + example: 'node_1' + overrideConfig: + type: object + description: The configuration to override the default vector upsert settings (optional) + multipart/form-data: + schema: + type: object + properties: + files: + type: array + items: + type: string + format: binary + description: Files to be uploaded + modelName: + type: string + nullable: true + example: '' + description: Other override configurations + required: + - files + required: true + responses: + '200': + description: Vector embeddings upserted successfully + content: + application/json: + schema: + $ref: '#/components/schemas/VectorUpsertResponse' + '400': + description: Invalid input provided + '404': + description: Chatflow not found + '422': + description: Validation error + '500': + description: Internal server error + +components: + responses: + UnauthorizedError: + description: Access token is missing or invalid + schemas: + ApiKey: + type: object + properties: + apiKey: + type: string + example: 'vYV8OdUMRzRQbzpp2JzY5DvriBnuVHo3pYpPQ7IJWyw=' + apiSecret: + type: string + example: '50e19a35ee1df775c09628dade1c00f0f680c6e15256e34a6eab350b38b31352df35c4db7925a3e5dd41cc773a0e2529e6c6da18408a8bbeeb0ae4b0f0ab9486.a96478a9225ed6ab' + chatFlows: + type: array + example: [] + createdAt: + type: string + example: '10-Mar-24' + id: + type: string + example: '525e4daa2104f06ffdea5c1af37009be' + keyName: + type: string + example: 'someKeyName' + + ChatMessage: + type: object + properties: + id: + type: string + format: uuid + example: 'd290f1ee-6c54-4b01-90e6-d701748f0851' + role: + type: string + enum: [apiMessage, userMessage] + example: 'apiMessage' + chatflowid: + type: string + format: uuid + example: 'd290f1ee-6c54-4b01-90e6-d701748f0852' + content: + type: string + example: 'Hello, how can I help you today?' + sourceDocuments: + type: array + nullable: true + items: + $ref: '#/components/schemas/Document' + usedTools: + type: array + nullable: true + items: + $ref: '#/components/schemas/UsedTool' + fileAnnotations: + type: array + nullable: true + items: + $ref: '#/components/schemas/FileAnnotation' + agentReasoning: + type: array + nullable: true + items: + $ref: '#/components/schemas/AgentReasoning' + fileUploads: + type: array + nullable: true + items: + $ref: '#/components/schemas/FileUpload' + action: + type: array + nullable: true + items: + $ref: '#/components/schemas/Action' + chatType: + type: string + enum: [INTERNAL, EXTERNAL] + example: 'INTERNAL' + chatId: + type: string + example: 'chat12345' + memoryType: + type: string + nullable: true + sessionId: + type: string + nullable: true + createdDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + leadEmail: + type: string + nullable: true + example: 'user@example.com' + + Chatflow: + type: object + properties: + id: + type: string + example: 'd290f1ee-6c54-4b01-90e6-d701748f0851' + name: + type: string + example: 'MyChatFlow' + flowData: + type: string + example: '{}' + deployed: + type: boolean + isPublic: + type: boolean + apikeyid: + type: string + chatbotConfig: + type: string + example: '{}' + apiConfig: + type: string + example: '{}' + analytic: + type: string + example: '{}' + speechToText: + type: string + example: '{}' + category: + type: string + example: 'category1;category2' + type: + type: string + enum: [CHATFLOW, MULTIAGENT] + createdDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + updatedDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + + Document: + type: object + properties: + pageContent: + type: string + example: 'This is the content of the page.' + metadata: + type: object + additionalProperties: + type: string + example: + author: 'John Doe' + date: '2024-08-24' + + UsedTool: + type: object + properties: + tool: + type: string + example: 'Name of the tool' + toolInput: + type: object + additionalProperties: + type: string + example: + input: 'search query' + toolOutput: + type: string + + FileAnnotation: + type: object + properties: + filePath: + type: string + example: 'path/to/file' + fileName: + type: string + example: 'file.txt' + + FileUpload: + type: object + properties: + data: + type: string + example: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABjElEQVRIS+2Vv0oDQRDG' + type: + type: string + example: 'image' + name: + type: string + example: 'image.png' + mime: + type: string + example: 'image/png' + Action: + type: object + properties: + id: + type: string + format: uuid + example: '61beeb58-6ebe-4d51-aa0b-41d4c546ff08' + mapping: + type: object + properties: + approve: + type: string + example: 'Yes' + reject: + type: string + example: 'No' + toolCalls: + type: array + example: [] + elements: + type: array + + AgentReasoning: + type: object + properties: + agentName: + type: string + example: 'agent' + messages: + type: array + items: + type: string + example: ['hello'] + nodeName: + type: string + example: 'seqAgent' + nodeId: + type: string + example: 'seqAgent_0' + usedTools: + type: array + items: + $ref: '#/components/schemas/UsedTool' + sourceDocuments: + type: array + items: + $ref: '#/components/schemas/Document' + state: + type: object + additionalProperties: + type: string + + Assistant: + type: object + properties: + id: + type: string + example: 'd290f1ee-6c54-4b01-90e6-d701748f0851' + details: + type: object + properties: + id: + type: string + example: 'asst_zbNeYIuXIUSKVHjJkfRo6ilv' + name: + type: string + example: 'assistant' + description: + type: string + model: + type: string + example: 'gpt-4' + instructions: + type: string + example: 'You are a helpful assistant, do your best to answer question and query' + temperature: + type: number + example: 1 + top_p: + type: number + example: 1 + tools: + type: array + items: + type: string + example: ['function', 'code_interpreter', 'file_search'] + tool_resources: + type: object + additionalProperties: + type: object + credential: + type: string + example: '7db93c02-8d5a-4117-a8f1-3dfb6721b339' + iconSrc: + type: string + example: '/images/assistant.png' + createdDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + updatedDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + + Credential: + type: object + properties: + id: + type: string + example: 'cfd531e0-82fc-11e9-bc42-526af7764f64' + name: + type: string + example: 'My Credential' + credentialName: + type: string + example: 'openAIAPI' + encryptedData: + type: string + example: 'U2FsdGVkX1/3T2gnnsEtX6FJi1DbnYx0VVdS3XWZ5ro=' + createdDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + updatedDate: + type: string + format: date-time + example: '2024-08-24T14:15:22Z' + Prediction: + type: object + properties: + question: + type: string + description: The question being asked + overrideConfig: + type: object + description: The configuration to override the default prediction settings (optional) + history: + type: array + description: The history messages to be prepended (optional) + items: + type: object + properties: + role: + type: string + enum: [apiMessage, userMessage] + description: The role of the message + example: apiMessage + content: + type: string + description: The content of the message + example: 'Hello, how can I help you?' + uploads: + type: array + items: + type: object + properties: + type: + type: string + enum: [audio, url, file, 'file:rag', 'file:full'] + description: The type of file upload + example: file + name: + type: string + description: The name of the file or resource + example: 'image.png' + data: + type: string + description: The base64-encoded data or URL for the resource + example: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABjElEQVRIS+2Vv0oDQRDG' + mime: + type: string + description: The MIME type of the file or resource + example: 'image/png' + + Tool: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the tool + example: 'cfd531e0-82fc-11e9-bc42-526af7764f64' + name: + type: string + description: Name of the tool + example: 'date_time_tool' + description: + type: string + description: Description of the tool + example: 'A tool used for date and time operations' + color: + type: string + description: Color associated with the tool + example: '#FF5733' + iconSrc: + type: string + nullable: true + description: Source URL for the tool's icon + example: 'https://example.com/icons/date.png' + schema: + type: string + nullable: true + description: JSON schema associated with the tool + func: + type: string + nullable: true + description: Functionality description or code associated with the tool + createdDate: + type: string + format: date-time + description: Date and time when the tool was created + example: '2024-08-24T14:15:22Z' + updatedDate: + type: string + format: date-time + description: Date and time when the tool was last updated + example: '2024-08-24T14:15:22Z' + Variable: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the variable + example: 'cfd531e0-82fc-11e9-bc42-526af7764f64' + name: + type: string + description: Name of the variable + example: 'API_KEY' + value: + type: string + description: Value of the variable + nullable: true + example: 'my-secret-key' + type: + type: string + description: Type of the variable (e.g., string, number) + example: 'string' + createdDate: + type: string + format: date-time + description: Date and time when the variable was created + example: '2024-08-24T14:15:22Z' + updatedDate: + type: string + format: date-time + description: Date and time when the variable was last updated + example: '2024-08-24T14:15:22Z' + VectorUpsertResponse: + type: object + properties: + numAdded: + type: number + description: Number of vectors added + example: 1 + numDeleted: + type: number + description: Number of vectors deleted + example: 1 + numUpdated: + type: number + description: Number of vectors updated + example: 1 + numSkipped: + type: number + description: Number of vectors skipped (not added, deleted, or updated) + example: 1 + addedDocs: + type: array + items: + $ref: '#/components/schemas/Document' + Lead: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the lead + example: 'cfd531e0-82fc-11e9-bc42-526af7764f64' + name: + type: string + description: Name of the lead + example: 'John Doe' + email: + type: string + description: Email address of the lead + example: 'john.doe@example.com' + phone: + type: string + description: Phone number of the lead + example: '+1234567890' + chatflowid: + type: string + description: ID of the chatflow the lead is associated with + example: '7c4e8b7a-7b9a-4b4d-9f3e-2d28f1ebea02' + chatId: + type: string + description: ID of the chat session the lead is associated with + example: 'd7b0b5d8-85e6-4f2a-9c1f-9d9a0e2ebf6b' + createdDate: + type: string + format: date-time + description: Date and time when the lead was created + example: '2024-08-24T14:15:22Z' + UpsertHistoryResponse: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the upsert history record + example: 'cfd531e0-82fc-11e9-bc42-526af7764f64' + chatflowid: + type: string + description: ID of the chatflow associated with the upsert history + example: '7c4e8b7a-7b9a-4b4d-9f3e-2d28f1ebea02' + result: + type: string + description: Result of the upsert operation, stored as a JSON string + example: '{"status":"success","data":{"key":"value"}}' + flowData: + type: string + description: Flow data associated with the upsert operation, stored as a JSON string + example: '{"nodes":[],"edges":[]}' + date: + type: string + format: date-time + description: Date and time when the upsert operation was performed + example: '2024-08-24T14:15:22Z' + DocumentStore: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the document store + name: + type: string + description: Name of the document store + description: + type: string + description: Description of the document store + loaders: + type: string + description: Loaders associated with the document store, stored as JSON string + whereUsed: + type: string + description: Places where the document store is used, stored as JSON string + status: + type: string + enum: [EMPTY, SYNC, SYNCING, STALE, NEW, UPSERTING, UPSERTED] + description: Status of the document store + vectorStoreConfig: + type: string + description: Configuration for the vector store, stored as JSON string + embeddingConfig: + type: string + description: Configuration for the embedding, stored as JSON string + recordManagerConfig: + type: string + description: Configuration for the record manager, stored as JSON string + createdDate: + type: string + format: date-time + description: Date and time when the document store was created + updatedDate: + type: string + format: date-time + description: Date and time when the document store was last updated + + DocumentStoreFileChunk: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the file chunk + docId: + type: string + format: uuid + description: Document ID within the store + storeId: + type: string + format: uuid + description: Document Store ID + chunkNo: + type: integer + description: Chunk number within the document + pageContent: + type: string + description: Content of the chunk + metadata: + type: string + description: Metadata associated with the chunk + + DocumentStoreLoaderForPreview: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the document store loader + loaderId: + type: string + description: ID of the loader + loaderName: + type: string + description: Name of the loader + loaderConfig: + type: object + description: Configuration for the loader + splitterId: + type: string + description: ID of the text splitter + splitterName: + type: string + description: Name of the text splitter + splitterConfig: + type: object + description: Configuration for the text splitter + totalChunks: + type: number + description: Total number of chunks + totalChars: + type: number + description: Total number of characters + status: + type: string + enum: [EMPTY, SYNC, SYNCING, STALE, NEW, UPSERTING, UPSERTED] + description: Status of the document store loader + storeId: + type: string + description: ID of the document store + files: + type: array + items: + $ref: '#/components/schemas/DocumentStoreLoaderFile' + source: + type: string + description: Source of the document store loader + credential: + type: string + description: Credential associated with the document store loader + rehydrated: + type: boolean + description: Whether the loader has been rehydrated + preview: + type: boolean + description: Whether the loader is in preview mode + previewChunkCount: + type: number + description: Number of chunks in preview mode + + DocumentStoreLoaderFile: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the file + name: + type: string + description: Name of the file + mimePrefix: + type: string + description: MIME prefix of the file + size: + type: number + description: Size of the file + status: + type: string + enum: [EMPTY, SYNC, SYNCING, STALE, NEW, UPSERTING, UPSERTED] + description: Status of the file + uploaded: + type: string + format: date-time + description: Date and time when the file was uploaded + + DocumentStoreFileChunkPagedResponse: + type: object + properties: + chunks: + type: array + items: + $ref: '#/components/schemas/DocumentStoreFileChunk' + count: + type: number + example: 1 + file: + $ref: '#/components/schemas/DocumentStoreLoaderForPreview' + currentPage: + type: number + storeName: + type: string + description: + type: string + + DocumentStoreLoaderForUpsert: + type: object + properties: + docId: + type: string + format: uuid + nullable: true + description: Document ID within the store. If provided, existing configuration from the document will be used for the new document + metadata: + type: object + nullable: true + description: Metadata associated with the document + example: { 'foo': 'bar' } + replaceExisting: + type: boolean + nullable: true + description: Whether to replace existing document loader with the new upserted chunks. However this does not delete the existing embeddings in the vector store + createNewDocStore: + type: boolean + nullable: true + description: Whether to create a new document store + docStore: + type: object + nullable: true + description: Only when createNewDocStore is true, pass in the new document store configuration + properties: + name: + type: string + example: plainText + description: Name of the new document store to be created + description: + type: string + example: plainText + description: Description of the new document store to be created + loader: + type: object + nullable: true + properties: + name: + type: string + example: plainText + description: Name of the loader (camelCase) + config: + type: object + description: Configuration for the loader + splitter: + type: object + nullable: true + properties: + name: + type: string + example: recursiveCharacterTextSplitter + description: Name of the text splitter (camelCase) + config: + type: object + description: Configuration for the text splitter + embedding: + type: object + nullable: true + properties: + name: + type: string + example: openAIEmbeddings + description: Name of the embedding generator (camelCase) + config: + type: object + description: Configuration for the embedding generator + vectorStore: + type: object + nullable: true + properties: + name: + type: string + example: faiss + description: Name of the vector store (camelCase) + config: + type: object + description: Configuration for the vector store + recordManager: + type: object + nullable: true + properties: + name: + type: string + example: postgresRecordManager + description: Name of the record manager (camelCase) + config: + type: object + description: Configuration for the record manager + + DocumentStoreLoaderForRefresh: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/DocumentStoreLoaderForUpsert' + + ChatMessageFeedback: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the feedback + chatflowid: + type: string + format: uuid + description: Identifier for the chat flow + chatId: + type: string + description: Identifier for the chat + messageId: + type: string + format: uuid + description: Identifier for the message + rating: + type: string + enum: [THUMBS_UP, THUMBS_DOWN] + description: Rating for the message + content: + type: string + description: Feedback content + createdDate: + type: string + format: date-time + description: Date and time when the feedback was created + + CreateAttachmentResponse: + type: object + properties: + name: + type: string + description: Name of the file + mimeType: + type: string + description: Mime type of the file + size: + type: string + description: Size of the file + content: + type: string + description: Content of the file in string format + + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT # optional, for documentation purposes only diff --git a/packages/api-documentation/tsconfig.json b/packages/api-documentation/tsconfig.json new file mode 100644 index 00000000000..693ee1b8759 --- /dev/null +++ b/packages/api-documentation/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "lib": ["es2017"], + "target": "es2017" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "experimentalDecorators": true /* Enable experimental support for TC39 stage 2 draft decorators. */, + "emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */, + "module": "commonjs" /* Specify what module code is generated. */, + "outDir": "dist", + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + "strict": true /* Enable all strict type-checking options. */, + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "sourceMap": true, + "strictPropertyInitialization": false, + "declaration": true + }, + "include": ["src"] +} diff --git a/packages/components/credentials/AlibabaApi.credential.ts b/packages/components/credentials/AlibabaApi.credential.ts new file mode 100644 index 00000000000..7ebfd148fc1 --- /dev/null +++ b/packages/components/credentials/AlibabaApi.credential.ts @@ -0,0 +1,23 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class AlibabaApi implements INodeCredential { + label: string + name: string + version: number + inputs: INodeParams[] + + constructor() { + this.label = 'Alibaba API' + this.name = 'AlibabaApi' + this.version = 1.0 + this.inputs = [ + { + label: 'Alibaba Api Key', + name: 'alibabaApiKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: AlibabaApi } diff --git a/packages/components/credentials/ArizeApi.credential.ts b/packages/components/credentials/ArizeApi.credential.ts new file mode 100644 index 00000000000..4e060dff8c9 --- /dev/null +++ b/packages/components/credentials/ArizeApi.credential.ts @@ -0,0 +1,39 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class ArizeApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Arize API' + this.name = 'arizeApi' + this.version = 1.0 + this.description = + 'Refer to official guide on how to get API keys on Arize.' + this.inputs = [ + { + label: 'API Key', + name: 'arizeApiKey', + type: 'password', + placeholder: '' + }, + { + label: 'Space ID', + name: 'arizeSpaceId', + type: 'string', + placeholder: '' + }, + { + label: 'Endpoint', + name: 'arizeEndpoint', + type: 'string', + default: 'https://otlp.arize.com' + } + ] + } +} + +module.exports = { credClass: ArizeApi } diff --git a/packages/components/credentials/AzureCognitiveServices.credential.ts b/packages/components/credentials/AzureCognitiveServices.credential.ts new file mode 100644 index 00000000000..66323e088a9 --- /dev/null +++ b/packages/components/credentials/AzureCognitiveServices.credential.ts @@ -0,0 +1,39 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class AzureCognitiveServices implements INodeCredential { + label: string + name: string + version: number + inputs: INodeParams[] + + constructor() { + this.label = 'Azure Cognitive Services' + this.name = 'azureCognitiveServices' + this.version = 1.0 + this.inputs = [ + { + label: 'Azure Subscription Key', + name: 'azureSubscriptionKey', + type: 'password', + description: 'Your Azure Cognitive Services subscription key' + }, + { + label: 'Service Region', + name: 'serviceRegion', + type: 'string', + description: 'The Azure service region (e.g., "westus", "eastus")', + placeholder: 'westus' + }, + { + label: 'API Version', + name: 'apiVersion', + type: 'string', + description: 'The API version to use (e.g., "2024-05-15-preview")', + placeholder: '2024-05-15-preview', + default: '2024-05-15-preview' + } + ] + } +} + +module.exports = { credClass: AzureCognitiveServices } diff --git a/packages/components/credentials/BaiduApi.credential.ts b/packages/components/credentials/BaiduApi.credential.ts index f2d8ea20186..80439987b31 100644 --- a/packages/components/credentials/BaiduApi.credential.ts +++ b/packages/components/credentials/BaiduApi.credential.ts @@ -1,28 +1,28 @@ import { INodeParams, INodeCredential } from '../src/Interface' -class BaiduApi implements INodeCredential { +class BaiduQianfanApi implements INodeCredential { label: string name: string version: number inputs: INodeParams[] constructor() { - this.label = 'Baidu API' - this.name = 'baiduApi' - this.version = 1.0 + this.label = 'Baidu Qianfan API' + this.name = 'baiduQianfanApi' + this.version = 2.0 this.inputs = [ { - label: 'Baidu Api Key', - name: 'baiduApiKey', - type: 'password' + label: 'Qianfan Access Key', + name: 'qianfanAccessKey', + type: 'string' }, { - label: 'Baidu Secret Key', - name: 'baiduSecretKey', + label: 'Qianfan Secret Key', + name: 'qianfanSecretKey', type: 'password' } ] } } -module.exports = { credClass: BaiduApi } +module.exports = { credClass: BaiduQianfanApi } diff --git a/packages/components/credentials/CerebrasApi.credential.ts b/packages/components/credentials/CerebrasApi.credential.ts new file mode 100644 index 00000000000..5a701536f0f --- /dev/null +++ b/packages/components/credentials/CerebrasApi.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class CerebrasAPIAuth implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Cerebras API Key' + this.name = 'cerebrasAIApi' + this.version = 1.0 + this.inputs = [ + { + label: 'Cerebras API Key', + name: 'cerebrasApiKey', + type: 'password', + description: 'API Key (cloud.cerebras.ai)' + } + ] + } +} + +module.exports = { credClass: CerebrasAPIAuth } diff --git a/packages/components/credentials/ChromaApi.credential.ts b/packages/components/credentials/ChromaApi.credential.ts index 759c113cd65..676344bcc00 100644 --- a/packages/components/credentials/ChromaApi.credential.ts +++ b/packages/components/credentials/ChromaApi.credential.ts @@ -16,6 +16,16 @@ class ChromaApi implements INodeCredential { label: 'Chroma Api Key', name: 'chromaApiKey', type: 'password' + }, + { + label: 'Chroma Tenant', + name: 'chromaTenant', + type: 'string' + }, + { + label: 'Chroma Database', + name: 'chromaDatabase', + type: 'string' } ] } diff --git a/packages/components/credentials/ComposioApi.credential.ts b/packages/components/credentials/ComposioApi.credential.ts new file mode 100644 index 00000000000..ed406fa7068 --- /dev/null +++ b/packages/components/credentials/ComposioApi.credential.ts @@ -0,0 +1,23 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class ComposioApi implements INodeCredential { + label: string + name: string + version: number + inputs: INodeParams[] + + constructor() { + this.label = 'Composio API' + this.name = 'composioApi' + this.version = 1.0 + this.inputs = [ + { + label: 'Composio API Key', + name: 'composioApi', + type: 'password' + } + ] + } +} + +module.exports = { credClass: ComposioApi } diff --git a/packages/components/credentials/CouchbaseApi.credential.ts b/packages/components/credentials/CouchbaseApi.credential.ts index 5772014afa7..8d3c68898b8 100644 --- a/packages/components/credentials/CouchbaseApi.credential.ts +++ b/packages/components/credentials/CouchbaseApi.credential.ts @@ -1,7 +1,3 @@ -/* -* Temporary disabled due to the incompatibility with the docker node-alpine: -* https://github.com/FlowiseAI/Flowise/pull/2303 - import { INodeParams, INodeCredential } from '../src/Interface' class CouchbaseApi implements INodeCredential { @@ -36,4 +32,3 @@ class CouchbaseApi implements INodeCredential { } module.exports = { credClass: CouchbaseApi } -*/ diff --git a/packages/components/credentials/DeepseekApi.credential.ts b/packages/components/credentials/DeepseekApi.credential.ts new file mode 100644 index 00000000000..8b8999a8666 --- /dev/null +++ b/packages/components/credentials/DeepseekApi.credential.ts @@ -0,0 +1,23 @@ +import { INodeCredential, INodeParams } from '../src/Interface' + +class DeepseekApi implements INodeCredential { + label: string + name: string + version: number + inputs: INodeParams[] + + constructor() { + this.label = 'DeepseekAI API' + this.name = 'deepseekApi' + this.version = 1.0 + this.inputs = [ + { + label: 'DeepseekAI API Key', + name: 'deepseekApiKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: DeepseekApi } diff --git a/packages/components/credentials/E2B.credential.ts b/packages/components/credentials/E2B.credential.ts index 9228c6cbe8a..810ae071f41 100644 --- a/packages/components/credentials/E2B.credential.ts +++ b/packages/components/credentials/E2B.credential.ts @@ -1,5 +1,3 @@ -/* -* TODO: Implement codeInterpreter column to chat_message table import { INodeParams, INodeCredential } from '../src/Interface' class E2BApi implements INodeCredential { @@ -23,4 +21,3 @@ class E2BApi implements INodeCredential { } module.exports = { credClass: E2BApi } -*/ diff --git a/packages/components/credentials/FireCrawlApi.credential.ts b/packages/components/credentials/FireCrawlApi.credential.ts index b3daa363ccd..4a8ad75960e 100644 --- a/packages/components/credentials/FireCrawlApi.credential.ts +++ b/packages/components/credentials/FireCrawlApi.credential.ts @@ -10,7 +10,7 @@ class FireCrawlApiCredential implements INodeCredential { constructor() { this.label = 'FireCrawl API' this.name = 'fireCrawlApi' - this.version = 1.0 + this.version = 2.0 this.description = 'You can find the FireCrawl API token on your FireCrawl account page.' this.inputs = [ @@ -18,6 +18,12 @@ class FireCrawlApiCredential implements INodeCredential { label: 'FireCrawl API', name: 'firecrawlApiToken', type: 'password' + }, + { + label: 'FireCrawl API URL', + name: 'firecrawlApiUrl', + type: 'string', + default: 'https://api.firecrawl.dev' } ] } diff --git a/packages/components/credentials/IBMWatsonx.credential.ts b/packages/components/credentials/IBMWatsonx.credential.ts new file mode 100644 index 00000000000..fa4eeca42a3 --- /dev/null +++ b/packages/components/credentials/IBMWatsonx.credential.ts @@ -0,0 +1,69 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class IBMWatsonxCredential implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'IBM Watsonx' + this.name = 'ibmWatsonx' + this.version = 1.0 + this.inputs = [ + { + label: 'Version', + name: 'version', + type: 'string', + placeholder: 'YYYY-MM-DD' + }, + { + label: 'Service URL', + name: 'serviceUrl', + type: 'string', + placeholder: '' + }, + { + label: 'Project ID', + name: 'projectId', + type: 'string', + placeholder: '' + }, + { + label: 'Watsonx AI Auth Type', + name: 'watsonxAIAuthType', + type: 'options', + options: [ + { + label: 'IAM', + name: 'iam' + }, + { + label: 'Bearer Token', + name: 'bearertoken' + } + ], + default: 'iam' + }, + { + label: 'Watsonx AI IAM API Key', + name: 'watsonxAIApikey', + type: 'password', + description: 'API Key for Watsonx AI when using IAM', + placeholder: '', + optional: true + }, + { + label: 'Watsonx AI Bearer Token', + name: 'watsonxAIBearerToken', + type: 'password', + description: 'Bearer Token for Watsonx AI when using Bearer Token', + placeholder: '', + optional: true + } + ] + } +} + +module.exports = { credClass: IBMWatsonxCredential } diff --git a/packages/components/credentials/JinaApi.credential.ts b/packages/components/credentials/JinaApi.credential.ts new file mode 100644 index 00000000000..4041c7befbd --- /dev/null +++ b/packages/components/credentials/JinaApi.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class JinaAICredential implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'JinaAI API' + this.name = 'jinaAIApi' + this.version = 1.0 + this.description = 'You can get your API key from official console here.' + this.inputs = [ + { + label: 'JinaAI API Key', + name: 'jinaAIAPIKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: JinaAICredential } diff --git a/packages/components/credentials/LunaryApi.credential.ts b/packages/components/credentials/LunaryApi.credential.ts index b68b67509f0..7b43cfa3f03 100644 --- a/packages/components/credentials/LunaryApi.credential.ts +++ b/packages/components/credentials/LunaryApi.credential.ts @@ -8,22 +8,23 @@ class LunaryApi implements INodeCredential { inputs: INodeParams[] constructor() { - this.label = 'Lunary API' + this.label = 'Lunary AI' this.name = 'lunaryApi' this.version = 1.0 - this.description = 'Refer to official guide to get APP ID' + this.description = + 'Refer to the official guide to get a public key.' this.inputs = [ { - label: 'APP ID', + label: 'Public Key / Project ID', name: 'lunaryAppId', - type: 'password', - placeholder: '' + type: 'string', + placeholder: '' }, { label: 'Endpoint', name: 'lunaryEndpoint', type: 'string', - default: 'https://app.lunary.ai' + default: 'https://api.lunary.ai' } ] } diff --git a/packages/components/credentials/MeilisearchApi.credential.ts b/packages/components/credentials/MeilisearchApi.credential.ts new file mode 100644 index 00000000000..64d8367b002 --- /dev/null +++ b/packages/components/credentials/MeilisearchApi.credential.ts @@ -0,0 +1,32 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class MeilisearchApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Meilisearch API' + this.name = 'meilisearchApi' + this.version = 1.0 + this.description = + 'Refer to official guide on how to get an API Key, you need a search API KEY for basic searching functionality, admin API KEY is optional but needed for upsert functionality ' + this.inputs = [ + { + label: 'Meilisearch Search API Key', + name: 'meilisearchSearchApiKey', + type: 'password' + }, + { + label: 'Meilisearch Admin API Key', + name: 'meilisearchAdminApiKey', + type: 'password', + optional: true + } + ] + } +} + +module.exports = { credClass: MeilisearchApi } diff --git a/packages/components/credentials/Neo4jApi.credential.ts b/packages/components/credentials/Neo4jApi.credential.ts new file mode 100644 index 00000000000..89bd4d15d16 --- /dev/null +++ b/packages/components/credentials/Neo4jApi.credential.ts @@ -0,0 +1,39 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class Neo4jApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Neo4j API' + this.name = 'neo4jApi' + this.version = 1.0 + this.description = + 'Refer to official guide on Neo4j authentication' + this.inputs = [ + { + label: 'Neo4j URL', + name: 'url', + type: 'string', + description: 'Your Neo4j instance URL (e.g., neo4j://localhost:7687)' + }, + { + label: 'Username', + name: 'username', + type: 'string', + description: 'Neo4j database username' + }, + { + label: 'Password', + name: 'password', + type: 'password', + description: 'Neo4j database password' + } + ] + } +} + +module.exports = { credClass: Neo4jApi } diff --git a/packages/components/credentials/NvdiaNIMApi.credential.ts b/packages/components/credentials/NvdiaNIMApi.credential.ts new file mode 100644 index 00000000000..3cae6961cfc --- /dev/null +++ b/packages/components/credentials/NvdiaNIMApi.credential.ts @@ -0,0 +1,24 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class NvidiaNIMApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Nvdia NIM API Key' + this.name = 'nvidiaNIMApi' + this.version = 1.0 + this.inputs = [ + { + label: 'Nvidia NIM API Key', + name: 'nvidiaNIMApiKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: NvidiaNIMApi } diff --git a/packages/components/credentials/OpenAPIAuth.credential.ts b/packages/components/credentials/OpenRouterApi.credential.ts similarity index 50% rename from packages/components/credentials/OpenAPIAuth.credential.ts rename to packages/components/credentials/OpenRouterApi.credential.ts index 3f0ef9075db..baef6f6d9e2 100644 --- a/packages/components/credentials/OpenAPIAuth.credential.ts +++ b/packages/components/credentials/OpenRouterApi.credential.ts @@ -1,6 +1,6 @@ import { INodeParams, INodeCredential } from '../src/Interface' -class OpenAPIAuth implements INodeCredential { +class OpenRouterAPIAuth implements INodeCredential { label: string name: string version: number @@ -8,18 +8,18 @@ class OpenAPIAuth implements INodeCredential { inputs: INodeParams[] constructor() { - this.label = 'OpenAPI Auth Token' - this.name = 'openAPIAuth' + this.label = 'OpenRouter API Key' + this.name = 'openRouterApi' this.version = 1.0 this.inputs = [ { - label: 'OpenAPI Token', - name: 'openAPIToken', + label: 'OpenRouter API Key', + name: 'openRouterApiKey', type: 'password', - description: 'Auth Token. For example: Bearer ' + description: 'API Key' } ] } } -module.exports = { credClass: OpenAPIAuth } +module.exports = { credClass: OpenRouterAPIAuth } diff --git a/packages/components/credentials/PhoenixApi.credential.ts b/packages/components/credentials/PhoenixApi.credential.ts new file mode 100644 index 00000000000..cbd4ba54cf3 --- /dev/null +++ b/packages/components/credentials/PhoenixApi.credential.ts @@ -0,0 +1,33 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class PhoenixApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Phoenix API' + this.name = 'phoenixApi' + this.version = 1.0 + this.description = + 'Refer to official guide on how to get API keys on Phoenix.' + this.inputs = [ + { + label: 'API Key', + name: 'phoenixApiKey', + type: 'password', + placeholder: '' + }, + { + label: 'Endpoint', + name: 'phoenixEndpoint', + type: 'string', + default: 'https://app.phoenix.arize.com' + } + ] + } +} + +module.exports = { credClass: PhoenixApi } diff --git a/packages/components/credentials/PostgresUrl.credential.ts b/packages/components/credentials/PostgresUrl.credential.ts new file mode 100644 index 00000000000..fe3bf504545 --- /dev/null +++ b/packages/components/credentials/PostgresUrl.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class PostgresUrl implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Postgres URL' + this.name = 'PostgresUrl' + this.version = 1.0 + this.inputs = [ + { + label: 'Postgres URL', + name: 'postgresUrl', + type: 'string', + placeholder: 'postgresql://localhost/mydb' + } + ] + } +} + +module.exports = { credClass: PostgresUrl } diff --git a/packages/components/credentials/RedisCacheApi.credential.ts b/packages/components/credentials/RedisCacheApi.credential.ts index 2b4ad6187a4..d46f4419c51 100644 --- a/packages/components/credentials/RedisCacheApi.credential.ts +++ b/packages/components/credentials/RedisCacheApi.credential.ts @@ -22,7 +22,7 @@ class RedisCacheApi implements INodeCredential { label: 'Port', name: 'redisCachePort', type: 'number', - default: '6789' + default: '6379' }, { label: 'User', diff --git a/packages/components/credentials/SlackApi.credential.ts b/packages/components/credentials/SlackApi.credential.ts new file mode 100644 index 00000000000..d5f5f31a8a0 --- /dev/null +++ b/packages/components/credentials/SlackApi.credential.ts @@ -0,0 +1,32 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class SlackApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Slack API' + this.name = 'slackApi' + this.version = 1.0 + this.description = + 'Refer to official guide on how to get botToken and teamId on Slack' + this.inputs = [ + { + label: 'Bot Token', + name: 'botToken', + type: 'password' + }, + { + label: 'Team ID', + name: 'teamId', + type: 'string', + placeholder: '' + } + ] + } +} + +module.exports = { credClass: SlackApi } diff --git a/packages/components/credentials/StripeApi.credential.ts b/packages/components/credentials/StripeApi.credential.ts new file mode 100644 index 00000000000..9be183fe446 --- /dev/null +++ b/packages/components/credentials/StripeApi.credential.ts @@ -0,0 +1,27 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class StripeApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Stripe API' + this.name = 'stripeApi' + this.version = 1.0 + this.description = + 'Refer to official guide on how to get accessToken on Airtable' + this.inputs = [ + { + label: 'Stripe API Token', + name: 'stripeApiToken', + type: 'password', + placeholder: '' + } + ] + } +} + +module.exports = { credClass: StripeApi } diff --git a/packages/components/credentials/TavilyApi.credential.ts b/packages/components/credentials/TavilyApi.credential.ts new file mode 100644 index 00000000000..161ff4df0b0 --- /dev/null +++ b/packages/components/credentials/TavilyApi.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class TavilyApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Tavily API' + this.name = 'tavilyApi' + this.version = 1.0 + this.description = 'Tavily API is a real-time API to access Google search results' + this.inputs = [ + { + label: 'Tavily Api Key', + name: 'tavilyApiKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: TavilyApi } diff --git a/packages/components/credentials/WolframAlphaApp.credential.ts b/packages/components/credentials/WolframAlphaApp.credential.ts new file mode 100644 index 00000000000..69daae4a185 --- /dev/null +++ b/packages/components/credentials/WolframAlphaApp.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class WolframAlphaApp implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'WolframAlpha App ID' + this.name = 'wolframAlphaAppId' + this.version = 1.0 + this.description = 'Get an App Id from Wolfram Alpha Portal' + this.inputs = [ + { + label: 'App ID', + name: 'wolframAlphaAppId', + type: 'password' + } + ] + } +} + +module.exports = { credClass: WolframAlphaApp } diff --git a/packages/components/credentials/XaiApi.credential.ts b/packages/components/credentials/XaiApi.credential.ts new file mode 100644 index 00000000000..25ecc1967c0 --- /dev/null +++ b/packages/components/credentials/XaiApi.credential.ts @@ -0,0 +1,24 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class XaiApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Xai API' + this.name = 'xaiApi' + this.version = 1.0 + this.inputs = [ + { + label: 'X AI API Key', + name: 'xaiApiKey', + type: 'password' + } + ] + } +} + +module.exports = { credClass: XaiApi } diff --git a/packages/components/gulpfile.ts b/packages/components/gulpfile.ts index cacfb076210..49bcfafb0bd 100644 --- a/packages/components/gulpfile.ts +++ b/packages/components/gulpfile.ts @@ -1,7 +1,7 @@ const { src, dest } = require('gulp') function copyIcons() { - return src(['nodes/**/*.{jpg,png,svg}']).pipe(dest('dist/nodes')) + return src(['nodes/**/*.{jpg,png,svg}']).pipe(dest('dist/nodess')) } exports.default = copyIcons diff --git a/packages/components/models.json b/packages/components/models.json index 2f6090cbd30..42d6e8002f3 100644 --- a/packages/components/models.json +++ b/packages/components/models.json @@ -4,34 +4,39 @@ "name": "awsChatBedrock", "models": [ { - "label": "anthropic.claude-3.5-sonnet", - "name": "anthropic.claude-3-5-sonnet-20240620-v1:0", - "description": "Image to text, conversation, chat optimized" + "label": "anthropic.claude-3-7-sonnet-20250219-v1:0", + "name": "anthropic.claude-3-7-sonnet-20250219-v1:0", + "description": "(20250219-v1:0) specific version of Claude Sonnet 3.7 - hybrid reasoning model" }, { - "label": "anthropic.claude-3-haiku", - "name": "anthropic.claude-3-haiku-20240307-v1:0", - "description": "Image to text, conversation, chat optimized" + "label": "anthropic.claude-3-5-haiku-20241022-v1:0", + "name": "anthropic.claude-3-5-haiku-20241022-v1:0", + "description": "(20241022-v1:0) specific version of Claude Haiku 3.5 - fastest model" }, { - "label": "anthropic.claude-3-haiku", - "name": "anthropic.claude-3-haiku-20240307-v1:0", - "description": "Image to text, conversation, chat optimized" + "label": "anthropic.claude-3.5-sonnet-20241022-v2:0", + "name": "anthropic.claude-3-5-sonnet-20241022-v2:0", + "description": "(20241022-v2:0) specific version of Claude Sonnet 3.5 - most intelligent model" }, { - "label": "anthropic.claude-3.5-sonnet", + "label": "anthropic.claude-3.5-sonnet-20240620-v1:0", "name": "anthropic.claude-3-5-sonnet-20240620-v1:0", - "description": "3.5 version of Claude Sonnet model" + "description": "(20240620-v1:0) specific version of Claude Sonnet 3.5 - most intelligent model" + }, + { + "label": "anthropic.claude-3-opus", + "name": "anthropic.claude-3-opus-20240229-v1:0", + "description": "Powerful model for highly complex tasks, reasoning and analysis" }, { "label": "anthropic.claude-3-sonnet", "name": "anthropic.claude-3-sonnet-20240229-v1:0", - "description": "Image to text and code, multilingual conversation, complex reasoning and analysis" + "description": "Balance of intelligence and speed" }, { - "label": "anthropic.claude-3-opus", - "name": "anthropic.claude-3-opus-20240229-v1:0", - "description": "Image to text and code, multilingual conversation, complex reasoning and analysis" + "label": "anthropic.claude-3-haiku", + "name": "anthropic.claude-3-haiku-20240307-v1:0", + "description": "Fastest and most compact model for near-instant responsiveness" }, { "label": "anthropic.claude-instant-v1", @@ -230,6 +235,26 @@ { "name": "azureChatOpenAI", "models": [ + { + "label": "o3-mini", + "name": "o3-mini" + }, + { + "label": "o1", + "name": "o1" + }, + { + "label": "o1-preview", + "name": "o1-preview" + }, + { + "label": "o1-mini", + "name": "o1-mini" + }, + { + "label": "gpt-4o-mini", + "name": "gpt-4o-mini" + }, { "label": "gpt-4o", "name": "gpt-4o" @@ -253,12 +278,20 @@ { "label": "gpt-4-vision-preview", "name": "gpt-4-vision-preview" + }, + { + "label": "gpt-4.5-preview", + "name": "gpt-4.5-preview" } ] }, { "name": "azureChatOpenAI_LlamaIndex", "models": [ + { + "label": "gpt-4o-mini", + "name": "gpt-4o-mini" + }, { "label": "gpt-4o", "name": "gpt-4o" @@ -297,30 +330,45 @@ "name": "chatAnthropic", "models": [ { - "label": "claude-3.5-sonnet", - "name": "claude-3-5-sonnet-20240620", - "description": "Lastest and most capable model" + "label": "claude-3-7-sonnet-latest", + "name": "claude-3-7-sonnet-latest", + "description": "Most recent snapshot version of Claude Sonnet 3.7 model - hybrid reasoning model" }, { - "label": "claude-3-haiku", - "name": "claude-3-haiku-20240307", - "description": "Fastest and most compact model, designed for near-instant responsiveness" + "label": "claude-3-5-haiku-latest", + "name": "claude-3-5-haiku-latest", + "description": "Most recent snapshot version of Claude Haiku 3.5 - fastest model" }, { - "label": "claude-3-opus", - "name": "claude-3-opus-20240229", - "description": "Most powerful model for highly complex tasks" + "label": "claude-3.5-sonnet-latest", + "name": "claude-3-5-sonnet-latest", + "description": "Most recent snapshot version of Claude Sonnet 3.5 model - most intelligent model" + }, + { + "label": "claude-3.5-sonnet-20241022", + "name": "claude-3-5-sonnet-20241022", + "description": "(20241022) specific version of Claude Sonnet 3.5 - most intelligent model" }, { - "label": "claude-3.5-sonnet", + "label": "claude-3.5-sonnet-20240620", "name": "claude-3-5-sonnet-20240620", - "description": "3.5 version of Claude Sonnet model" + "description": "(20240620) specific version of Claude Sonnet 3.5 - most intelligent model" + }, + { + "label": "claude-3-opus", + "name": "claude-3-opus-20240229", + "description": "Powerful model for highly complex tasks, reasoning and analysis" }, { "label": "claude-3-sonnet", "name": "claude-3-sonnet-20240229", "description": "Ideal balance of intelligence and speed for enterprise workloads" }, + { + "label": "claude-3-haiku", + "name": "claude-3-haiku-20240307", + "description": "Fastest and most compact model, designed for near-instant responsiveness" + }, { "label": "claude-2.0 (legacy)", "name": "claude-2.0", @@ -372,29 +420,33 @@ "name": "chatGoogleGenerativeAI", "models": [ { - "label": "gemini-1.5-flash-latest", - "name": "gemini-1.5-flash-latest" + "label": "gemini-2.0-flash-001", + "name": "gemini-2.0-flash-001" }, { - "label": "gemini-1.5-pro-latest", - "name": "gemini-1.5-pro-latest" + "label": "gemini-2.0-flash-lite-001", + "name": "gemini-2.0-flash-lite-001" }, { - "label": "gemini-pro", - "name": "gemini-pro" + "label": "gemini-1.5-flash", + "name": "gemini-1.5-flash" + }, + { + "label": "gemini-1.5-flash-8b", + "name": "gemini-1.5-flash-8b" }, { - "label": "gemini-pro-vision", - "name": "gemini-pro-vision" + "label": "gemini-1.5-pro", + "name": "gemini-1.5-pro" } ] }, { - "name": "chatGooglePaLM", + "name": "chatAlibabaTongyi", "models": [ { - "label": "models/chat-bison-001", - "name": "models/chat-bison-001" + "label": "qwen-plus", + "name": "qwen-plus" } ] }, @@ -402,12 +454,20 @@ "name": "chatGoogleVertexAI", "models": [ { - "label": "gemini-1.5-flash", - "name": "gemini-1.5-flash-preview-0514" + "label": "gemini-1.5-flash-002", + "name": "gemini-1.5-flash-002" }, { - "label": "gemini-1.5-pro", - "name": "gemini-1.5-pro-preview-0409" + "label": "gemini-1.5-flash-001", + "name": "gemini-1.5-flash-001" + }, + { + "label": "gemini-1.5-pro-002", + "name": "gemini-1.5-pro-002" + }, + { + "label": "gemini-1.5-pro-001", + "name": "gemini-1.5-pro-001" }, { "label": "gemini-1.0-pro", @@ -418,26 +478,68 @@ "name": "gemini-1.0-pro-vision" }, { - "label": "chat-bison", - "name": "chat-bison" + "label": "claude-3-7-sonnet@20250219", + "name": "claude-3-7-sonnet@20250219", + "description": "(20250219-v1:0) specific version of Claude Sonnet 3.7 - hybrid reasoning model" + }, + { + "label": "claude-3-5-haiku@20241022", + "name": "claude-3-5-haiku@20241022", + "description": "(20241022-v1:0) specific version of Claude Haiku 3.5 - fastest model" }, { - "label": "codechat-bison", - "name": "codechat-bison" + "label": "claude-3-5-sonnet-v2@20241022", + "name": "claude-3-5-sonnet-v2@20241022", + "description": "(20241022-v2:0) specific version of Claude Sonnet 3.5 - most intelligent model" }, { - "label": "chat-bison-32k", - "name": "chat-bison-32k" + "label": "claude-3-opus@20240229", + "name": "claude-3-opus@20240229", + "description": "Powerful model for highly complex tasks, reasoning and analysis" }, { - "label": "codechat-bison-32k", - "name": "codechat-bison-32k" + "label": "claude-3-sonnet@20240229", + "name": "claude-3-sonnet@20240229", + "description": "Balance of intelligence and speed" + }, + { + "label": "claude-3-haiku@20240307", + "name": "claude-3-haiku@20240307", + "description": "Fastest and most compact model for near-instant responsiveness" } ] }, { "name": "groqChat", "models": [ + { + "label": "deepseek-r1-distill-llama-70b", + "name": "deepseek-r1-distill-llama-70b" + }, + { + "label": "llama-3.3-70b-versatile", + "name": "llama-3.3-70b-versatile" + }, + { + "label": "llama-3.3-70b-specdec", + "name": "llama-3.3-70b-specdec" + }, + { + "label": "llama-3.2-1b-preview", + "name": "llama-3.2-1b-preview" + }, + { + "label": "llama-3.2-3b-preview", + "name": "llama-3.2-3b-preview" + }, + { + "label": "llama-3.2-11b-text-preview", + "name": "llama-3.2-11b-text-preview" + }, + { + "label": "llama-3.2-90b-text-preview", + "name": "llama-3.2-90b-text-preview" + }, { "label": "llama-3.1-405b-reasoning", "name": "llama-3.1-405b-reasoning" @@ -489,9 +591,26 @@ } ] }, + { + "name": "deepseek", + "models": [ + { + "label": "deepseek-chat", + "name": "deepseek-chat" + }, + { + "label": "deepseek-reasoner", + "name": "deepseek-reasoner" + } + ] + }, { "name": "chatOpenAI", "models": [ + { + "label": "gpt-4.5-preview", + "name": "gpt-4.5-preview" + }, { "label": "gpt-4o-mini (latest)", "name": "gpt-4o-mini" @@ -504,6 +623,10 @@ "label": "gpt-4o (latest)", "name": "gpt-4o" }, + { + "label": "gpt-4o-2024-11-20", + "name": "gpt-4o-2024-11-20" + }, { "label": "gpt-4o-2024-08-06", "name": "gpt-4o-2024-08-06" @@ -512,6 +635,30 @@ "label": "gpt-4o-2024-05-13", "name": "gpt-4o-2024-05-13" }, + { + "label": "o3-mini (latest)", + "name": "o3-mini" + }, + { + "label": "o3-mini-2025-01-31", + "name": "o3-mini-2025-01-31" + }, + { + "label": "o1-preview (latest)", + "name": "o1-preview" + }, + { + "label": "o1-preview-2024-09-12", + "name": "o1-preview-2024-09-12" + }, + { + "label": "o1-mini (latest)", + "name": "o1-mini" + }, + { + "label": "o1-mini-2024-09-12", + "name": "o1-mini-2024-09-12" + }, { "label": "gpt-4 (latest)", "name": "gpt-4" @@ -996,15 +1143,6 @@ } ] }, - { - "name": "GooglePaLM", - "models": [ - { - "label": "models/text-bison-001", - "name": "models/text-bison-001" - } - ] - }, { "name": "googlevertexai", "models": [ @@ -1099,6 +1237,16 @@ { "name": "voyageAIEmbeddings", "models": [ + { + "label": "voyage-3", + "name": "voyage-3", + "description": "High-performance embedding model with excellent retrieval quality, 32K token context, and 1024 dimension size." + }, + { + "label": "voyage-3-lite", + "name": "voyage-3-lite", + "description": "Lightweight embedding model optimized for low latency and cost, 32K token context, and 512 dimension size." + }, { "label": "voyage-2", "name": "voyage-2", @@ -1141,18 +1289,21 @@ } ] }, - { - "name": "googlePaLMEmbeddings", - "models": [ - { - "label": "models/embedding-gecko-001", - "name": "models/embedding-gecko-001" - } - ] - }, { "name": "googlevertexaiEmbeddings", "models": [ + { + "label": "multimodalembedding", + "name": "multimodalembedding" + }, + { + "label": "text-embedding-004", + "name": "text-embedding-004" + }, + { + "label": "text-multilingual-embedding-002", + "name": "text-multilingual-embedding-002" + }, { "label": "textembedding-gecko@001", "name": "textembedding-gecko@001" @@ -1393,4 +1544,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/packages/components/nodes/agents/AirtableAgent/AirtableAgent.ts b/packages/components/nodes/agents/AirtableAgent/AirtableAgent.ts index 7b8349e80c1..d61ffd4be38 100644 --- a/packages/components/nodes/agents/AirtableAgent/AirtableAgent.ts +++ b/packages/components/nodes/agents/AirtableAgent/AirtableAgent.ts @@ -2,7 +2,7 @@ import axios from 'axios' import { BaseLanguageModel } from '@langchain/core/language_models/base' import { AgentExecutor } from 'langchain/agents' import { LLMChain } from 'langchain/chains' -import { ICommonObject, INode, INodeData, INodeParams, PromptTemplate } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer, PromptTemplate } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { LoadPyodide, finalSystemPrompt, systemPrompt } from './core' @@ -28,7 +28,7 @@ class Airtable_Agents implements INode { this.type = 'AgentExecutor' this.category = 'Agents' this.icon = 'airtable.svg' - this.description = 'Agent used to to answer queries on Airtable table' + this.description = 'Agent used to answer queries on Airtable table' this.baseClasses = [this.type, ...getBaseClasses(AgentExecutor)] this.credential = { label: 'Connect Credential', @@ -104,11 +104,17 @@ class Airtable_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + const credentialData = await getCredentialData(nodeData.credential ?? '', options) const accessToken = getCredentialParam('accessToken', credentialData, nodeData) @@ -123,7 +129,6 @@ class Airtable_Agents implements INode { let base64String = Buffer.from(JSON.stringify(airtableData)).toString('base64') const loggerHandler = new ConsoleCallbackHandler(options.logger) - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) const callbacks = await additionalCallbacks(nodeData, options) const pyodide = await LoadPyodide() @@ -158,7 +163,7 @@ json.dumps(my_dict)` const chain = new LLMChain({ llm: model, prompt: PromptTemplate.fromTemplate(systemPrompt), - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) const inputs = { dict: dataframeColDict, @@ -187,14 +192,15 @@ json.dumps(my_dict)` const chain = new LLMChain({ llm: model, prompt: PromptTemplate.fromTemplate(finalSystemPrompt), - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) const inputs = { question: input, answer: finalResult } - if (options.socketIO && options.socketIOClientId) { + if (options.shouldStreamResponse) { + const handler = new CustomChainHandler(shouldStreamResponse ? sseStreamer : undefined, chatId) const result = await chain.call(inputs, [loggerHandler, handler, ...callbacks]) return result?.text } else { diff --git a/packages/components/nodes/agents/AutoGPT/AutoGPT.ts b/packages/components/nodes/agents/AutoGPT/AutoGPT.ts index 4c1d962c3e4..c41a52965fd 100644 --- a/packages/components/nodes/agents/AutoGPT/AutoGPT.ts +++ b/packages/components/nodes/agents/AutoGPT/AutoGPT.ts @@ -113,7 +113,9 @@ class AutoGPT_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } diff --git a/packages/components/nodes/agents/BabyAGI/BabyAGI.ts b/packages/components/nodes/agents/BabyAGI/BabyAGI.ts index bfc910b7952..87d5cd28923 100644 --- a/packages/components/nodes/agents/BabyAGI/BabyAGI.ts +++ b/packages/components/nodes/agents/BabyAGI/BabyAGI.ts @@ -73,7 +73,9 @@ class BabyAGI_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } diff --git a/packages/components/nodes/agents/CSVAgent/CSVAgent.ts b/packages/components/nodes/agents/CSVAgent/CSVAgent.ts index 5d61bcda3d1..fbe85afc7b9 100644 --- a/packages/components/nodes/agents/CSVAgent/CSVAgent.ts +++ b/packages/components/nodes/agents/CSVAgent/CSVAgent.ts @@ -2,7 +2,7 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { AgentExecutor } from 'langchain/agents' import { LLMChain } from 'langchain/chains' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { ICommonObject, INode, INodeData, INodeParams, PromptTemplate } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer, PromptTemplate } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { LoadPyodide, finalSystemPrompt, systemPrompt } from './core' import { checkInputs, Moderation } from '../../moderation/Moderation' @@ -27,7 +27,7 @@ class CSV_Agents implements INode { this.type = 'AgentExecutor' this.category = 'Agents' this.icon = 'CSVagent.svg' - this.description = 'Agent used to to answer queries on CSV data' + this.description = 'Agent used to answer queries on CSV data' this.baseClasses = [this.type, ...getBaseClasses(AgentExecutor)] this.inputs = [ { @@ -90,13 +90,18 @@ class CSV_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } const loggerHandler = new ConsoleCallbackHandler(options.logger) - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + const callbacks = await additionalCallbacks(nodeData, options) let files: string[] = [] @@ -112,6 +117,7 @@ class CSV_Agents implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) base64String += fileData.toString('base64') } @@ -123,6 +129,7 @@ class CSV_Agents implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() base64String += splitDataURI.pop() ?? '' @@ -163,7 +170,7 @@ json.dumps(my_dict)` const chain = new LLMChain({ llm: model, prompt: PromptTemplate.fromTemplate(systemPrompt), - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) const inputs = { dict: dataframeColDict, @@ -194,14 +201,15 @@ json.dumps(my_dict)` prompt: PromptTemplate.fromTemplate( systemMessagePrompt ? `${systemMessagePrompt}\n${finalSystemPrompt}` : finalSystemPrompt ), - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) const inputs = { question: input, answer: finalResult } - if (options.socketIO && options.socketIOClientId) { + if (options.shouldStreamResponse) { + const handler = new CustomChainHandler(shouldStreamResponse ? sseStreamer : undefined, chatId) const result = await chain.call(inputs, [loggerHandler, handler, ...callbacks]) return result?.text } else { diff --git a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts index cddc81f864b..4a5d910873e 100644 --- a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts +++ b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts @@ -7,12 +7,21 @@ import { AgentStep } from '@langchain/core/agents' import { renderTemplate, MessagesPlaceholder, HumanMessagePromptTemplate, PromptTemplate } from '@langchain/core/prompts' import { RunnableSequence } from '@langchain/core/runnables' import { ChatConversationalAgent } from 'langchain/agents' -import { getBaseClasses } from '../../../src/utils' +import { getBaseClasses, transformBracesWithColon } from '../../../src/utils' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { IVisionChatModal, FlowiseMemory, ICommonObject, INode, INodeData, INodeParams, IUsedTool } from '../../../src/Interface' +import { + IVisionChatModal, + FlowiseMemory, + ICommonObject, + INode, + INodeData, + INodeParams, + IUsedTool, + IServerSideEventStreamer +} from '../../../src/Interface' import { AgentExecutor } from '../../../src/agents' import { addImagesToMessages, llmSupportsVision } from '../../../src/multiModalUtils' -import { checkInputs, Moderation } from '../../moderation/Moderation' +import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' import { formatResponse } from '../../outputparsers/OutputParserHelpers' const DEFAULT_PREFIX = `Assistant is a large language model trained by OpenAI. @@ -106,13 +115,18 @@ class ConversationalAgent_Agents implements INode { const memory = nodeData.inputs?.memory as FlowiseMemory const moderations = nodeData.inputs?.inputModeration as Moderation[] + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the BabyAGI agent input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -125,17 +139,33 @@ class ConversationalAgent_Agents implements INode { let sourceDocuments: ICommonObject[] = [] let usedTools: IUsedTool[] = [] - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + const handler = new CustomChainHandler(shouldStreamResponse ? sseStreamer : undefined, chatId) res = await executor.invoke({ input }, { callbacks: [loggerHandler, handler, ...callbacks] }) if (res.sourceDocuments) { - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', flatten(res.sourceDocuments)) + if (options.sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(options.chatId, flatten(res.sourceDocuments)) + } sourceDocuments = res.sourceDocuments } if (res.usedTools) { - options.socketIO.to(options.socketIOClientId).emit('usedTools', res.usedTools) + sseStreamer.streamUsedToolsEvent(options.chatId, res.usedTools) usedTools = res.usedTools } + // If the tool is set to returnDirect, stream the output to the client + if (res.usedTools && res.usedTools.length) { + let inputTools = nodeData.inputs?.tools + inputTools = flatten(inputTools) + for (const tool of res.usedTools) { + const inputTool = inputTools.find((inputTool: Tool) => inputTool.name === tool.tool) + if (inputTool && inputTool.returnDirect && options.sseStreamer) { + sseStreamer.streamTokenEvent(options.chatId, tool.toolOutput) + } + } + } + if (sseStreamer) { + sseStreamer.streamEndEvent(options.chatId) + } } else { res = await executor.invoke({ input }, { callbacks: [loggerHandler, ...callbacks] }) if (res.sourceDocuments) { @@ -187,7 +217,7 @@ const prepareAgent = async ( let tools = nodeData.inputs?.tools as Tool[] tools = flatten(tools) const memory = nodeData.inputs?.memory as FlowiseMemory - const systemMessage = nodeData.inputs?.systemMessage as string + let systemMessage = nodeData.inputs?.systemMessage as string const memoryKey = memory.memoryKey ? memory.memoryKey : 'chat_history' const inputKey = memory.inputKey ? memory.inputKey : 'input' const prependMessages = options?.prependMessages @@ -197,6 +227,8 @@ const prepareAgent = async ( toolNames: tools.map((tool) => tool.name) }) + systemMessage = transformBracesWithColon(systemMessage) + const prompt = ChatConversationalAgent.createPrompt(tools, { systemMessage: systemMessage ? systemMessage : DEFAULT_PREFIX, outputParser diff --git a/packages/components/nodes/agents/ConversationalRetrievalToolAgent/ConversationalRetrievalToolAgent.ts b/packages/components/nodes/agents/ConversationalRetrievalToolAgent/ConversationalRetrievalToolAgent.ts new file mode 100644 index 00000000000..54698ca1347 --- /dev/null +++ b/packages/components/nodes/agents/ConversationalRetrievalToolAgent/ConversationalRetrievalToolAgent.ts @@ -0,0 +1,298 @@ +import { flatten } from 'lodash' +import { BaseMessage } from '@langchain/core/messages' +import { ChainValues } from '@langchain/core/utils/types' +import { RunnableSequence } from '@langchain/core/runnables' +import { BaseChatModel } from '@langchain/core/language_models/chat_models' +import { ChatPromptTemplate, MessagesPlaceholder, HumanMessagePromptTemplate, PromptTemplate } from '@langchain/core/prompts' +import { formatToOpenAIToolMessages } from 'langchain/agents/format_scratchpad/openai_tools' +import { getBaseClasses, transformBracesWithColon } from '../../../src/utils' +import { type ToolsAgentStep } from 'langchain/agents/openai/output_parser' +import { + FlowiseMemory, + ICommonObject, + INode, + INodeData, + INodeParams, + IServerSideEventStreamer, + IUsedTool, + IVisionChatModal +} from '../../../src/Interface' +import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' +import { AgentExecutor, ToolCallingAgentOutputParser } from '../../../src/agents' +import { Moderation, checkInputs, streamResponse } from '../../moderation/Moderation' +import { formatResponse } from '../../outputparsers/OutputParserHelpers' +import type { Document } from '@langchain/core/documents' +import { BaseRetriever } from '@langchain/core/retrievers' +import { RESPONSE_TEMPLATE } from '../../chains/ConversationalRetrievalQAChain/prompts' +import { addImagesToMessages, llmSupportsVision } from '../../../src/multiModalUtils' + +class ConversationalRetrievalToolAgent_Agents implements INode { + label: string + name: string + author: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + sessionId?: string + + constructor(fields?: { sessionId?: string }) { + this.label = 'Conversational Retrieval Tool Agent' + this.name = 'conversationalRetrievalToolAgent' + this.author = 'niztal(falkor)' + this.version = 1.0 + this.type = 'AgentExecutor' + this.category = 'Agents' + this.icon = 'toolAgent.png' + this.description = `Agent that calls a vector store retrieval and uses Function Calling to pick the tools and args to call` + this.baseClasses = [this.type, ...getBaseClasses(AgentExecutor)] + this.inputs = [ + { + label: 'Tools', + name: 'tools', + type: 'Tool', + list: true + }, + { + label: 'Memory', + name: 'memory', + type: 'BaseChatMemory' + }, + { + label: 'Tool Calling Chat Model', + name: 'model', + type: 'BaseChatModel', + description: + 'Only compatible with models that are capable of function calling. ChatOpenAI, ChatMistral, ChatAnthropic, ChatVertexAI' + }, + { + label: 'System Message', + name: 'systemMessage', + type: 'string', + description: 'Taking the rephrased question, search for answer from the provided context', + warning: 'Prompt must include input variable: {context}', + rows: 4, + additionalParams: true, + optional: true, + default: RESPONSE_TEMPLATE + }, + { + label: 'Input Moderation', + description: 'Detect text that could generate harmful output and prevent it from being sent to the language model', + name: 'inputModeration', + type: 'Moderation', + optional: true, + list: true + }, + { + label: 'Max Iterations', + name: 'maxIterations', + type: 'number', + optional: true, + additionalParams: true + }, + { + label: 'Vector Store Retriever', + name: 'vectorStoreRetriever', + type: 'BaseRetriever' + } + ] + this.sessionId = fields?.sessionId + } + + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + return prepareAgent(nodeData, options, { sessionId: this.sessionId, chatId: options.chatId, input }) + } + + async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const memory = nodeData.inputs?.memory as FlowiseMemory + const moderations = nodeData.inputs?.inputModeration as Moderation[] + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (moderations && moderations.length > 0) { + try { + // Use the output of the moderation chain as input for the OpenAI Function Agent + input = await checkInputs(moderations, input) + } catch (e) { + await new Promise((resolve) => setTimeout(resolve, 500)) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } + return formatResponse(e.message) + } + } + + const executor = await prepareAgent(nodeData, options, { sessionId: this.sessionId, chatId: options.chatId, input }) + + const loggerHandler = new ConsoleCallbackHandler(options.logger) + const callbacks = await additionalCallbacks(nodeData, options) + + let res: ChainValues = {} + let sourceDocuments: ICommonObject[] = [] + let usedTools: IUsedTool[] = [] + + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) + res = await executor.invoke({ input }, { callbacks: [loggerHandler, handler, ...callbacks] }) + if (res.sourceDocuments) { + sseStreamer.streamSourceDocumentsEvent(chatId, flatten(res.sourceDocuments)) + sourceDocuments = res.sourceDocuments + } + if (res.usedTools) { + sseStreamer.streamUsedToolsEvent(chatId, res.usedTools) + usedTools = res.usedTools + } + } else { + res = await executor.invoke({ input }, { callbacks: [loggerHandler, ...callbacks] }) + if (res.sourceDocuments) { + sourceDocuments = res.sourceDocuments + } + if (res.usedTools) { + usedTools = res.usedTools + } + } + + let output = res?.output as string + + // Claude 3 Opus tends to spit out .. as well, discard that in final output + const regexPattern: RegExp = /[\s\S]*?<\/thinking>/ + const matches: RegExpMatchArray | null = output.match(regexPattern) + if (matches) { + for (const match of matches) { + output = output.replace(match, '') + } + } + + await memory.addChatMessages( + [ + { + text: input, + type: 'userMessage' + }, + { + text: output, + type: 'apiMessage' + } + ], + this.sessionId + ) + + let finalRes = res?.output + + if (sourceDocuments.length || usedTools.length) { + const finalRes: ICommonObject = { text: output } + if (sourceDocuments.length) { + finalRes.sourceDocuments = flatten(sourceDocuments) + } + if (usedTools.length) { + finalRes.usedTools = usedTools + } + return finalRes + } + + return finalRes + } +} + +const formatDocs = (docs: Document[]) => { + return docs.map((doc, i) => `${doc.pageContent}`).join('\n') +} + +const prepareAgent = async ( + nodeData: INodeData, + options: ICommonObject, + flowObj: { sessionId?: string; chatId?: string; input?: string } +) => { + const model = nodeData.inputs?.model as BaseChatModel + const maxIterations = nodeData.inputs?.maxIterations as string + const memory = nodeData.inputs?.memory as FlowiseMemory + let systemMessage = nodeData.inputs?.systemMessage as string + let tools = nodeData.inputs?.tools + tools = flatten(tools) + const memoryKey = memory.memoryKey ? memory.memoryKey : 'chat_history' + const inputKey = memory.inputKey ? memory.inputKey : 'input' + const vectorStoreRetriever = nodeData.inputs?.vectorStoreRetriever as BaseRetriever + + systemMessage = transformBracesWithColon(systemMessage) + + const prompt = ChatPromptTemplate.fromMessages([ + ['system', systemMessage ? systemMessage : `You are a helpful AI assistant.`], + new MessagesPlaceholder(memoryKey), + ['human', `{${inputKey}}`], + new MessagesPlaceholder('agent_scratchpad') + ]) + + if (llmSupportsVision(model)) { + const visionChatModel = model as IVisionChatModal + const messageContent = await addImagesToMessages(nodeData, options, model.multiModalOption) + + if (messageContent?.length) { + visionChatModel.setVisionModel() + + // Pop the `agent_scratchpad` MessagePlaceHolder + let messagePlaceholder = prompt.promptMessages.pop() as MessagesPlaceholder + if (prompt.promptMessages.at(-1) instanceof HumanMessagePromptTemplate) { + const lastMessage = prompt.promptMessages.pop() as HumanMessagePromptTemplate + const template = (lastMessage.prompt as PromptTemplate).template as string + const msg = HumanMessagePromptTemplate.fromTemplate([ + ...messageContent, + { + text: template + } + ]) + msg.inputVariables = lastMessage.inputVariables + prompt.promptMessages.push(msg) + } + + // Add the `agent_scratchpad` MessagePlaceHolder back + prompt.promptMessages.push(messagePlaceholder) + } else { + visionChatModel.revertToOriginalModel() + } + } + + if (model.bindTools === undefined) { + throw new Error(`This agent requires that the "bindTools()" method be implemented on the input model.`) + } + + const modelWithTools = model.bindTools(tools) + + const runnableAgent = RunnableSequence.from([ + { + [inputKey]: (i: { input: string; steps: ToolsAgentStep[] }) => i.input, + agent_scratchpad: (i: { input: string; steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(i.steps), + [memoryKey]: async (_: { input: string; steps: ToolsAgentStep[] }) => { + const messages = (await memory.getChatMessages(flowObj?.sessionId, true)) as BaseMessage[] + return messages ?? [] + }, + context: async (i: { input: string; chatHistory?: string }) => { + const relevantDocs = await vectorStoreRetriever.invoke(i.input) + const formattedDocs = formatDocs(relevantDocs) + return formattedDocs + } + }, + prompt, + modelWithTools, + new ToolCallingAgentOutputParser() + ]) + + const executor = AgentExecutor.fromAgentAndTools({ + agent: runnableAgent, + tools, + sessionId: flowObj?.sessionId, + chatId: flowObj?.chatId, + input: flowObj?.input, + verbose: process.env.DEBUG === 'true', + maxIterations: maxIterations ? parseFloat(maxIterations) : undefined + }) + + return executor +} + +module.exports = { nodeClass: ConversationalRetrievalToolAgent_Agents } diff --git a/packages/components/nodes/agents/ConversationalRetrievalToolAgent/toolAgent.png b/packages/components/nodes/agents/ConversationalRetrievalToolAgent/toolAgent.png new file mode 100644 index 00000000000..7bf44339bcb Binary files /dev/null and b/packages/components/nodes/agents/ConversationalRetrievalToolAgent/toolAgent.png differ diff --git a/packages/components/nodes/agents/LlamaIndexAgents/AnthropicAgent/AnthropicAgent_LlamaIndex.ts b/packages/components/nodes/agents/LlamaIndexAgents/AnthropicAgent/AnthropicAgent_LlamaIndex.ts index 8fa4c854211..c218ff65481 100644 --- a/packages/components/nodes/agents/LlamaIndexAgents/AnthropicAgent/AnthropicAgent_LlamaIndex.ts +++ b/packages/components/nodes/agents/LlamaIndexAgents/AnthropicAgent/AnthropicAgent_LlamaIndex.ts @@ -15,7 +15,6 @@ class AnthropicAgent_LlamaIndex_Agents implements INode { tags: string[] inputs: INodeParams[] sessionId?: string - badge?: string constructor(fields?: { sessionId?: string }) { this.label = 'Anthropic Agent' @@ -97,13 +96,13 @@ class AnthropicAgent_LlamaIndex_Agents implements INode { tools, llm: model, chatHistory: chatHistory, - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) let text = '' const usedTools: IUsedTool[] = [] - const response = await agent.chat({ message: input, chatHistory, verbose: process.env.DEBUG === 'true' ? true : false }) + const response = await agent.chat({ message: input, chatHistory, verbose: process.env.DEBUG === 'true' }) if (response.sources.length) { for (const sourceTool of response.sources) { diff --git a/packages/components/nodes/agents/LlamaIndexAgents/OpenAIToolAgent/OpenAIToolAgent_LlamaIndex.ts b/packages/components/nodes/agents/LlamaIndexAgents/OpenAIToolAgent/OpenAIToolAgent_LlamaIndex.ts index ed9895de0ed..07b2578bd87 100644 --- a/packages/components/nodes/agents/LlamaIndexAgents/OpenAIToolAgent/OpenAIToolAgent_LlamaIndex.ts +++ b/packages/components/nodes/agents/LlamaIndexAgents/OpenAIToolAgent/OpenAIToolAgent_LlamaIndex.ts @@ -1,7 +1,16 @@ import { flatten } from 'lodash' import { ChatMessage, OpenAI, OpenAIAgent } from 'llamaindex' import { getBaseClasses } from '../../../../src/utils' -import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeParams, IUsedTool } from '../../../../src/Interface' +import { + FlowiseMemory, + ICommonObject, + IMessage, + INode, + INodeData, + INodeParams, + IServerSideEventStreamer, + IUsedTool +} from '../../../../src/Interface' class OpenAIFunctionAgent_LlamaIndex_Agents implements INode { label: string @@ -15,7 +24,6 @@ class OpenAIFunctionAgent_LlamaIndex_Agents implements INode { tags: string[] inputs: INodeParams[] sessionId?: string - badge?: string constructor(fields?: { sessionId?: string }) { this.label = 'OpenAI Tool Agent' @@ -67,7 +75,9 @@ class OpenAIFunctionAgent_LlamaIndex_Agents implements INode { let tools = nodeData.inputs?.tools tools = flatten(tools) - const isStreamingEnabled = options.socketIO && options.socketIOClientId + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId const chatHistory = [] as ChatMessage[] @@ -97,26 +107,28 @@ class OpenAIFunctionAgent_LlamaIndex_Agents implements INode { tools, llm: model, chatHistory: chatHistory, - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) let text = '' let isStreamingStarted = false const usedTools: IUsedTool[] = [] - if (isStreamingEnabled) { + if (shouldStreamResponse) { const stream = await agent.chat({ message: input, chatHistory, stream: true, - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) for await (const chunk of stream) { //console.log('chunk', chunk) text += chunk.response.delta if (!isStreamingStarted) { isStreamingStarted = true - options.socketIO.to(options.socketIOClientId).emit('start', chunk.response.delta) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.response.delta) + } if (chunk.sources.length) { for (const sourceTool of chunk.sources) { usedTools.push({ @@ -125,14 +137,17 @@ class OpenAIFunctionAgent_LlamaIndex_Agents implements INode { toolOutput: sourceTool.output as any }) } - options.socketIO.to(options.socketIOClientId).emit('usedTools', usedTools) + if (sseStreamer) { + sseStreamer.streamUsedToolsEvent(chatId, usedTools) + } } } - - options.socketIO.to(options.socketIOClientId).emit('token', chunk.response.delta) + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.response.delta) + } } } else { - const response = await agent.chat({ message: input, chatHistory, verbose: process.env.DEBUG === 'true' ? true : false }) + const response = await agent.chat({ message: input, chatHistory, verbose: process.env.DEBUG === 'true' }) if (response.sources.length) { for (const sourceTool of response.sources) { usedTools.push({ diff --git a/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts b/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts index 98e76fedc86..6ff7fed3a04 100644 --- a/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts +++ b/packages/components/nodes/agents/OpenAIAssistant/OpenAIAssistant.ts @@ -1,4 +1,13 @@ -import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOptionsValue, INodeParams, IUsedTool } from '../../../src/Interface' +import { + ICommonObject, + IDatabaseEntity, + INode, + INodeData, + INodeOptionsValue, + INodeParams, + IServerSideEventStreamer, + IUsedTool +} from '../../../src/Interface' import OpenAI from 'openai' import { DataSource } from 'typeorm' import { getCredentialData, getCredentialParam } from '../../../src/utils' @@ -9,6 +18,7 @@ import { AnalyticHandler } from '../../../src/handler' import { Moderation, checkInputs, streamResponse } from '../../moderation/Moderation' import { formatResponse } from '../../outputparsers/OutputParserHelpers' import { addSingleFileToStorage } from '../../../src/storageUtils' +import { DynamicStructuredTool } from '../../tools/OpenAPIToolkit/core' const lenticularBracketRegex = /【[^】]*】/g const imageRegex = /]*\/>/g @@ -176,16 +186,19 @@ class OpenAIAssistant_Agents implements INode { const moderations = nodeData.inputs?.inputModeration as Moderation[] const _toolChoice = nodeData.inputs?.toolChoice as string const parallelToolCalls = nodeData.inputs?.parallelToolCalls as boolean - const isStreaming = options.socketIO && options.socketIOClientId - const socketIO = isStreaming ? options.socketIO : undefined - const socketIOClientId = isStreaming ? options.socketIOClientId : '' + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId if (moderations && moderations.length > 0) { try { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(isStreaming, e.message, socketIO, socketIOClientId) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -196,6 +209,7 @@ class OpenAIAssistant_Agents implements INode { const usedTools: IUsedTool[] = [] const fileAnnotations = [] + const artifacts = [] const assistant = await appDataSource.getRepository(databaseEntities['Assistant']).findOneBy({ id: selectedAssistantId @@ -254,28 +268,54 @@ class OpenAIAssistant_Agents implements INode { // List all runs, in case existing thread is still running if (!isNewThread) { const promise = (threadId: string) => { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { + const maxWaitTime = 30000 // Maximum wait time of 30 seconds + const startTime = Date.now() + let delay = 500 // Initial delay between retries + const maxRetries = 10 + let retries = 0 + const timeout = setInterval(async () => { - const allRuns = await openai.beta.threads.runs.list(threadId) - if (allRuns.data && allRuns.data.length) { - const firstRunId = allRuns.data[0].id - const runStatus = allRuns.data.find((run) => run.id === firstRunId)?.status - if ( - runStatus && - (runStatus === 'cancelled' || - runStatus === 'completed' || - runStatus === 'expired' || - runStatus === 'failed' || - runStatus === 'requires_action') - ) { + try { + const allRuns = await openai.beta.threads.runs.list(threadId) + if (allRuns.data && allRuns.data.length) { + const firstRunId = allRuns.data[0].id + const runStatus = allRuns.data.find((run) => run.id === firstRunId)?.status + if ( + runStatus && + (runStatus === 'cancelled' || + runStatus === 'completed' || + runStatus === 'expired' || + runStatus === 'failed' || + runStatus === 'requires_action') + ) { + clearInterval(timeout) + resolve() + } + } else { clearInterval(timeout) - resolve() + reject(new Error(`Empty Thread: ${threadId}`)) } - } else { + } catch (error: any) { + if (error.response?.status === 404) { + clearInterval(timeout) + reject(new Error(`Thread not found: ${threadId}`)) + } else if (error.response?.status === 429 && retries < maxRetries) { + retries++ + delay *= 2 + console.warn(`Rate limit exceeded, retrying in ${delay}ms...`) + } else { + clearInterval(timeout) + reject(new Error(`Unexpected error: ${error.message}`)) + } + } + + // Timeout condition to stop the loop if maxWaitTime is exceeded + if (Date.now() - startTime > maxWaitTime) { clearInterval(timeout) - resolve() + reject(new Error('Timeout waiting for thread to finish.')) } - }, 500) + }, delay) }) } await promise(threadId) @@ -307,7 +347,7 @@ class OpenAIAssistant_Agents implements INode { } } - if (isStreaming) { + if (shouldStreamResponse) { const streamThread = await openai.beta.threads.runs.create(threadId, { assistant_id: retrievedAssistant.id, stream: true, @@ -389,26 +429,37 @@ class OpenAIAssistant_Agents implements INode { if (message_content.value) { if (!isStreamingStarted) { isStreamingStarted = true - socketIO.to(socketIOClientId).emit('start', message_content.value) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, message_content.value) + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, message_content.value) } - socketIO.to(socketIOClientId).emit('token', message_content.value) } if (fileAnnotations.length) { if (!isStreamingStarted) { isStreamingStarted = true - socketIO.to(socketIOClientId).emit('start', '') + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, ' ') + } + } + if (sseStreamer) { + sseStreamer.streamFileAnnotationsEvent(chatId, fileAnnotations) } - socketIO.to(socketIOClientId).emit('fileAnnotations', fileAnnotations) } } else { text += chunk.text?.value if (!isStreamingStarted) { isStreamingStarted = true - socketIO.to(socketIOClientId).emit('start', chunk.text?.value) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.text?.value || '') + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.text?.value || '') } - - socketIO.to(socketIOClientId).emit('token', chunk.text?.value) } } @@ -416,19 +467,24 @@ class OpenAIAssistant_Agents implements INode { const fileId = chunk.image_file.file_id const fileObj = await openai.files.retrieve(fileId) - const buffer = await downloadImg(openai, fileId, `${fileObj.filename}.png`, options.chatflowid, options.chatId) - const base64String = Buffer.from(buffer).toString('base64') - - // TODO: Use a file path and retrieve image on the fly. Storing as base64 to localStorage and database will easily hit limits - const imgHTML = `${fileObj.filename}
` - text += imgHTML + const filePath = await downloadImg( + openai, + fileId, + `${fileObj.filename}.png`, + options.chatflowid, + options.chatId + ) + artifacts.push({ type: 'png', data: filePath }) if (!isStreamingStarted) { isStreamingStarted = true - socketIO.to(socketIOClientId).emit('start', imgHTML) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, ' ') + } + } + if (sseStreamer) { + sseStreamer.streamArtifactsEvent(chatId, artifacts) } - - socketIO.to(socketIOClientId).emit('token', imgHTML) } } @@ -449,7 +505,6 @@ class OpenAIAssistant_Agents implements INode { toolCallId: item.id }) }) - const submitToolOutputs = [] for (let i = 0; i < actions.length; i += 1) { const tool = tools.find((tool: any) => tool.name === actions[i].tool) @@ -484,26 +539,23 @@ class OpenAIAssistant_Agents implements INode { } try { - const stream = openai.beta.threads.runs.submitToolOutputsStream(threadId, runThreadId, { - tool_outputs: submitToolOutputs + await handleToolSubmission({ + openai, + threadId, + runThreadId, + submitToolOutputs, + tools, + analyticHandlers, + parentIds, + llmIds, + sseStreamer, + chatId, + options, + input, + usedTools, + text, + isStreamingStarted }) - - for await (const event of stream) { - if (event.event === 'thread.message.delta') { - const chunk = event.data.delta.content?.[0] - if (chunk && 'text' in chunk && chunk.text?.value) { - text += chunk.text.value - if (!isStreamingStarted) { - isStreamingStarted = true - socketIO.to(socketIOClientId).emit('start', chunk.text.value) - } - - socketIO.to(socketIOClientId).emit('token', chunk.text.value) - } - } - } - - socketIO.to(socketIOClientId).emit('usedTools', usedTools) } catch (error) { console.error('Error submitting tool outputs:', error) await openai.beta.threads.runs.cancel(threadId, runThreadId) @@ -535,6 +587,7 @@ class OpenAIAssistant_Agents implements INode { return { text, usedTools, + artifacts, fileAnnotations, assistant: { assistantId: openAIAssistantId, threadId, runId: runThreadId, messages: messageData } } @@ -542,94 +595,126 @@ class OpenAIAssistant_Agents implements INode { const promise = (threadId: string, runId: string) => { return new Promise((resolve, reject) => { + const maxWaitTime = 30000 // Maximum wait time of 30 seconds + const startTime = Date.now() + let delay = 500 // Initial delay between retries + const maxRetries = 10 + let retries = 0 + const timeout = setInterval(async () => { - const run = await openai.beta.threads.runs.retrieve(threadId, runId) - const state = run.status - if (state === 'completed') { - clearInterval(timeout) - resolve(state) - } else if (state === 'requires_action') { - if (run.required_action?.submit_tool_outputs.tool_calls) { + try { + const run = await openai.beta.threads.runs.retrieve(threadId, runId) + const state = run.status + + if (state === 'completed') { clearInterval(timeout) - const actions: ICommonObject[] = [] - run.required_action.submit_tool_outputs.tool_calls.forEach((item) => { - const functionCall = item.function - let args = {} - try { - args = JSON.parse(functionCall.arguments) - } catch (e) { - console.error('Error parsing arguments, default to empty object') - } - actions.push({ - tool: functionCall.name, - toolInput: args, - toolCallId: item.id + resolve(state) + } else if (state === 'requires_action') { + if (run.required_action?.submit_tool_outputs.tool_calls) { + clearInterval(timeout) + const actions: ICommonObject[] = [] + run.required_action.submit_tool_outputs.tool_calls.forEach((item) => { + const functionCall = item.function + let args = {} + try { + args = JSON.parse(functionCall.arguments) + } catch (e) { + console.error('Error parsing arguments, default to empty object') + } + actions.push({ + tool: functionCall.name, + toolInput: args, + toolCallId: item.id + }) }) - }) + const submitToolOutputs = [] + for (let i = 0; i < actions.length; i += 1) { + const tool = tools.find((tool: any) => tool.name === actions[i].tool) + if (!tool) continue + + // Start tool analytics + const toolIds = await analyticHandlers.onToolStart(tool.name, actions[i].toolInput, parentIds) + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamToolEvent(chatId, tool.name) + } - const submitToolOutputs = [] - for (let i = 0; i < actions.length; i += 1) { - const tool = tools.find((tool: any) => tool.name === actions[i].tool) - if (!tool) continue + try { + const toolOutput = await tool.call(actions[i].toolInput, undefined, undefined, { + sessionId: threadId, + chatId: options.chatId, + input + }) + await analyticHandlers.onToolEnd(toolIds, toolOutput) + submitToolOutputs.push({ + tool_call_id: actions[i].toolCallId, + output: toolOutput + }) + usedTools.push({ + tool: tool.name, + toolInput: actions[i].toolInput, + toolOutput + }) + } catch (e) { + await analyticHandlers.onToolEnd(toolIds, e) + console.error('Error executing tool', e) + clearInterval(timeout) + reject( + new Error( + `Error processing thread: ${state}, Thread ID: ${threadId}, Run ID: ${runId}, Tool: ${tool.name}` + ) + ) + return + } + } - // Start tool analytics - const toolIds = await analyticHandlers.onToolStart(tool.name, actions[i].toolInput, parentIds) - if (socketIO && socketIOClientId) socketIO.to(socketIOClientId).emit('tool', tool.name) + const newRun = await openai.beta.threads.runs.retrieve(threadId, runId) + const newStatus = newRun?.status try { - const toolOutput = await tool.call(actions[i].toolInput, undefined, undefined, { - sessionId: threadId, - chatId: options.chatId, - input - }) - await analyticHandlers.onToolEnd(toolIds, toolOutput) - submitToolOutputs.push({ - tool_call_id: actions[i].toolCallId, - output: toolOutput - }) - usedTools.push({ - tool: tool.name, - toolInput: actions[i].toolInput, - toolOutput - }) + if (submitToolOutputs.length && newStatus === 'requires_action') { + await openai.beta.threads.runs.submitToolOutputs(threadId, runId, { + tool_outputs: submitToolOutputs + }) + resolve(state) + } else { + await openai.beta.threads.runs.cancel(threadId, runId) + resolve('requires_action_retry') + } } catch (e) { - await analyticHandlers.onToolEnd(toolIds, e) - console.error('Error executing tool', e) clearInterval(timeout) reject( - new Error( - `Error processing thread: ${state}, Thread ID: ${threadId}, Run ID: ${runId}, Tool: ${tool.name}` - ) + new Error(`Error submitting tool outputs: ${state}, Thread ID: ${threadId}, Run ID: ${runId}`) ) - break } } - - const newRun = await openai.beta.threads.runs.retrieve(threadId, runId) - const newStatus = newRun?.status - - try { - if (submitToolOutputs.length && newStatus === 'requires_action') { - await openai.beta.threads.runs.submitToolOutputs(threadId, runId, { - tool_outputs: submitToolOutputs - }) - resolve(state) - } else { - await openai.beta.threads.runs.cancel(threadId, runId) - resolve('requires_action_retry') - } - } catch (e) { - clearInterval(timeout) - reject(new Error(`Error submitting tool outputs: ${state}, Thread ID: ${threadId}, Run ID: ${runId}`)) - } + } else if (state === 'cancelled' || state === 'expired' || state === 'failed') { + clearInterval(timeout) + reject( + new Error( + `Error processing thread: ${state}, Thread ID: ${threadId}, Run ID: ${runId}, Status: ${state}` + ) + ) } - } else if (state === 'cancelled' || state === 'expired' || state === 'failed') { + } catch (error: any) { + if (error.response?.status === 404 || error.response?.status === 429) { + clearInterval(timeout) + reject(new Error(`API error: ${error.response?.status} for Thread ID: ${threadId}, Run ID: ${runId}`)) + } else if (retries < maxRetries) { + retries++ + delay *= 2 // Exponential backoff + console.warn(`Transient error, retrying in ${delay}ms...`) + } else { + clearInterval(timeout) + reject(new Error(`Max retries reached. Error: ${error.message}`)) + } + } + + // Stop the loop if maximum wait time is exceeded + if (Date.now() - startTime > maxWaitTime) { clearInterval(timeout) - reject( - new Error(`Error processing thread: ${state}, Thread ID: ${threadId}, Run ID: ${runId}, Status: ${state}`) - ) + reject(new Error('Timeout waiting for thread to finish.')) } - }, 500) + }, delay) }) } @@ -737,12 +822,8 @@ class OpenAIAssistant_Agents implements INode { const fileId = content.image_file.file_id const fileObj = await openai.files.retrieve(fileId) - const buffer = await downloadImg(openai, fileId, `${fileObj.filename}.png`, options.chatflowid, options.chatId) - const base64String = Buffer.from(buffer).toString('base64') - - // TODO: Use a file path and retrieve image on the fly. Storing as base64 to localStorage and database will easily hit limits - const imgHTML = `${fileObj.filename}
` - returnVal += imgHTML + const filePath = await downloadImg(openai, fileId, `${fileObj.filename}.png`, options.chatflowid, options.chatId) + artifacts.push({ type: 'png', data: filePath }) } } @@ -755,6 +836,7 @@ class OpenAIAssistant_Agents implements INode { return { text: returnVal, usedTools, + artifacts, fileAnnotations, assistant: { assistantId: openAIAssistantId, threadId, runId: runThreadId, messages: messageData } } @@ -775,9 +857,9 @@ const downloadImg = async (openai: OpenAI, fileId: string, fileName: string, ... const image_data_buffer = Buffer.from(image_data) const mime = 'image/png' - await addSingleFileToStorage(mime, image_data_buffer, fileName, ...paths) + const res = await addSingleFileToStorage(mime, image_data_buffer, fileName, ...paths) - return image_data_buffer + return res } const downloadFile = async (openAIApiKey: string, fileObj: any, fileName: string, ...paths: string[]) => { @@ -805,15 +887,212 @@ const downloadFile = async (openAIApiKey: string, fileObj: any, fileName: string } } +interface ToolSubmissionParams { + openai: OpenAI + threadId: string + runThreadId: string + submitToolOutputs: any[] + tools: any[] + analyticHandlers: AnalyticHandler + parentIds: ICommonObject + llmIds: ICommonObject + sseStreamer: IServerSideEventStreamer + chatId: string + options: ICommonObject + input: string + usedTools: IUsedTool[] + text: string + isStreamingStarted: boolean +} + +interface ToolSubmissionResult { + text: string + isStreamingStarted: boolean +} + +async function handleToolSubmission(params: ToolSubmissionParams): Promise { + const { + openai, + threadId, + runThreadId, + submitToolOutputs, + tools, + analyticHandlers, + parentIds, + llmIds, + sseStreamer, + chatId, + options, + input, + usedTools + } = params + + let updatedText = params.text + let updatedIsStreamingStarted = params.isStreamingStarted + + const stream = openai.beta.threads.runs.submitToolOutputsStream(threadId, runThreadId, { + tool_outputs: submitToolOutputs + }) + + try { + for await (const event of stream) { + if (event.event === 'thread.message.delta') { + const chunk = event.data.delta.content?.[0] + if (chunk && 'text' in chunk && chunk.text?.value) { + updatedText += chunk.text.value + if (!updatedIsStreamingStarted) { + updatedIsStreamingStarted = true + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.text.value) + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.text.value) + } + } + } else if (event.event === 'thread.run.requires_action') { + if (event.data.required_action?.submit_tool_outputs.tool_calls) { + const actions: ICommonObject[] = [] + + event.data.required_action.submit_tool_outputs.tool_calls.forEach((item) => { + const functionCall = item.function + let args = {} + try { + args = JSON.parse(functionCall.arguments) + } catch (e) { + console.error('Error parsing arguments, default to empty object') + } + actions.push({ + tool: functionCall.name, + toolInput: args, + toolCallId: item.id + }) + }) + + const nestedToolOutputs = [] + for (let i = 0; i < actions.length; i += 1) { + const tool = tools.find((tool: any) => tool.name === actions[i].tool) + if (!tool) continue + + const toolIds = await analyticHandlers.onToolStart(tool.name, actions[i].toolInput, parentIds) + + try { + const toolOutput = await tool.call(actions[i].toolInput, undefined, undefined, { + sessionId: threadId, + chatId: options.chatId, + input + }) + await analyticHandlers.onToolEnd(toolIds, toolOutput) + nestedToolOutputs.push({ + tool_call_id: actions[i].toolCallId, + output: toolOutput + }) + usedTools.push({ + tool: tool.name, + toolInput: actions[i].toolInput, + toolOutput + }) + } catch (e) { + await analyticHandlers.onToolEnd(toolIds, e) + console.error('Error executing tool', e) + throw new Error(`Error executing tool. Tool: ${tool.name}. Thread ID: ${threadId}. Run ID: ${runThreadId}`) + } + } + + // Recursively handle nested tool submissions + const result = await handleToolSubmission({ + openai, + threadId, + runThreadId, + submitToolOutputs: nestedToolOutputs, + tools, + analyticHandlers, + parentIds, + llmIds, + sseStreamer, + chatId, + options, + input, + usedTools, + text: updatedText, + isStreamingStarted: updatedIsStreamingStarted + }) + updatedText = result.text + updatedIsStreamingStarted = result.isStreamingStarted + } + } + } + + if (sseStreamer) { + sseStreamer.streamUsedToolsEvent(chatId, usedTools) + } + + return { + text: updatedText, + isStreamingStarted: updatedIsStreamingStarted + } + } catch (error) { + console.error('Error submitting tool outputs:', error) + await openai.beta.threads.runs.cancel(threadId, runThreadId) + + const errMsg = `Error submitting tool outputs. Thread ID: ${threadId}. Run ID: ${runThreadId}` + + await analyticHandlers.onLLMError(llmIds, errMsg) + await analyticHandlers.onChainError(parentIds, errMsg, true) + + throw new Error(errMsg) + } +} + +interface JSONSchema { + type?: string + properties?: Record + additionalProperties?: boolean + required?: string[] + [key: string]: any +} + const formatToOpenAIAssistantTool = (tool: any): OpenAI.Beta.FunctionTool => { - return { + const parameters = zodToJsonSchema(tool.schema) as JSONSchema + + // For strict tools, we need to: + // 1. Set additionalProperties to false + // 2. Make all parameters required + // 3. Set the strict flag + if (tool instanceof DynamicStructuredTool && tool.isStrict()) { + // Get all property names from the schema + const properties = parameters.properties || {} + const allPropertyNames = Object.keys(properties) + + parameters.additionalProperties = false + parameters.required = allPropertyNames + + // Handle nested objects + for (const [_, prop] of Object.entries(properties)) { + if (prop.type === 'object') { + prop.additionalProperties = false + if (prop.properties) { + prop.required = Object.keys(prop.properties) + } + } + } + } + + const functionTool: OpenAI.Beta.FunctionTool = { type: 'function', function: { name: tool.name, description: tool.description, - parameters: zodToJsonSchema(tool.schema) + parameters } } + + // Add strict property if the tool is marked as strict + if (tool instanceof DynamicStructuredTool && tool.isStrict()) { + ;(functionTool.function as any).strict = true + } + + return functionTool } module.exports = { nodeClass: OpenAIAssistant_Agents } diff --git a/packages/components/nodes/agents/ReActAgentChat/ReActAgentChat.ts b/packages/components/nodes/agents/ReActAgentChat/ReActAgentChat.ts index 227f1070675..c0732d3f713 100644 --- a/packages/components/nodes/agents/ReActAgentChat/ReActAgentChat.ts +++ b/packages/components/nodes/agents/ReActAgentChat/ReActAgentChat.ts @@ -88,7 +88,9 @@ class ReActAgentChat_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } diff --git a/packages/components/nodes/agents/ReActAgentLLM/ReActAgentLLM.ts b/packages/components/nodes/agents/ReActAgentLLM/ReActAgentLLM.ts index 7547c807d91..1ab071f712e 100644 --- a/packages/components/nodes/agents/ReActAgentLLM/ReActAgentLLM.ts +++ b/packages/components/nodes/agents/ReActAgentLLM/ReActAgentLLM.ts @@ -77,7 +77,9 @@ class ReActAgentLLM_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } @@ -95,7 +97,7 @@ class ReActAgentLLM_Agents implements INode { const executor = new AgentExecutor({ agent, tools, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', maxIterations: maxIterations ? parseFloat(maxIterations) : undefined }) diff --git a/packages/components/nodes/agents/ToolAgent/ToolAgent.ts b/packages/components/nodes/agents/ToolAgent/ToolAgent.ts index 3bf3b2726eb..5ed93c620a5 100644 --- a/packages/components/nodes/agents/ToolAgent/ToolAgent.ts +++ b/packages/components/nodes/agents/ToolAgent/ToolAgent.ts @@ -1,4 +1,5 @@ import { flatten } from 'lodash' +import { Tool } from '@langchain/core/tools' import { BaseMessage } from '@langchain/core/messages' import { ChainValues } from '@langchain/core/utils/types' import { RunnableSequence } from '@langchain/core/runnables' @@ -6,8 +7,23 @@ import { BaseChatModel } from '@langchain/core/language_models/chat_models' import { ChatPromptTemplate, MessagesPlaceholder, HumanMessagePromptTemplate, PromptTemplate } from '@langchain/core/prompts' import { formatToOpenAIToolMessages } from 'langchain/agents/format_scratchpad/openai_tools' import { type ToolsAgentStep } from 'langchain/agents/openai/output_parser' -import { getBaseClasses } from '../../../src/utils' -import { FlowiseMemory, ICommonObject, INode, INodeData, INodeParams, IUsedTool, IVisionChatModal } from '../../../src/Interface' +import { + extractOutputFromArray, + getBaseClasses, + handleEscapeCharacters, + removeInvalidImageMarkdown, + transformBracesWithColon +} from '../../../src/utils' +import { + FlowiseMemory, + ICommonObject, + INode, + INodeData, + INodeParams, + IServerSideEventStreamer, + IUsedTool, + IVisionChatModal +} from '../../../src/Interface' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { AgentExecutor, ToolCallingAgentOutputParser } from '../../../src/agents' import { Moderation, checkInputs, streamResponse } from '../../moderation/Moderation' @@ -25,12 +41,11 @@ class ToolAgent_Agents implements INode { baseClasses: string[] inputs: INodeParams[] sessionId?: string - badge?: string constructor(fields?: { sessionId?: string }) { this.label = 'Tool Agent' this.name = 'toolAgent' - this.version = 1.0 + this.version = 2.0 this.type = 'AgentExecutor' this.category = 'Agents' this.icon = 'toolAgent.png' @@ -56,21 +71,21 @@ class ToolAgent_Agents implements INode { 'Only compatible with models that are capable of function calling: ChatOpenAI, ChatMistral, ChatAnthropic, ChatGoogleGenerativeAI, ChatVertexAI, GroqChat' }, { - label: 'Prompt', - name: 'prompt', - type: 'BasePromptTemplate', - optional: true, - description: 'Custom prompt for the agent. If not provided, default system message will be used' + label: 'Chat Prompt Template', + name: 'chatPromptTemplate', + type: 'ChatPromptTemplate', + description: 'Override existing prompt with Chat Prompt Template. Human Message must includes {input} variable', + optional: true }, { label: 'System Message', name: 'systemMessage', type: 'string', default: `You are a helpful AI assistant.`, + description: 'If Chat Prompt Template is provided, this will be ignored', rows: 4, optional: true, - additionalParams: true, - description: 'Used only if no custom prompt is provided' + additionalParams: true }, { label: 'Input Moderation', @@ -99,7 +114,9 @@ class ToolAgent_Agents implements INode { const memory = nodeData.inputs?.memory as FlowiseMemory const moderations = nodeData.inputs?.inputModeration as Moderation[] - const isStreamable = options.socketIO && options.socketIOClientId + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId if (moderations && moderations.length > 0) { try { @@ -107,8 +124,9 @@ class ToolAgent_Agents implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - if (isStreamable) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -121,18 +139,40 @@ class ToolAgent_Agents implements INode { let res: ChainValues = {} let sourceDocuments: ICommonObject[] = [] let usedTools: IUsedTool[] = [] + let artifacts = [] - if (isStreamable) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) res = await executor.invoke({ input }, { callbacks: [loggerHandler, handler, ...callbacks] }) if (res.sourceDocuments) { - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', flatten(res.sourceDocuments)) + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, flatten(res.sourceDocuments)) + } sourceDocuments = res.sourceDocuments } if (res.usedTools) { - options.socketIO.to(options.socketIOClientId).emit('usedTools', res.usedTools) + if (sseStreamer) { + sseStreamer.streamUsedToolsEvent(chatId, flatten(res.usedTools)) + } usedTools = res.usedTools } + if (res.artifacts) { + if (sseStreamer) { + sseStreamer.streamArtifactsEvent(chatId, flatten(res.artifacts)) + } + artifacts = res.artifacts + } + // If the tool is set to returnDirect, stream the output to the client + if (res.usedTools && res.usedTools.length) { + let inputTools = nodeData.inputs?.tools + inputTools = flatten(inputTools) + for (const tool of res.usedTools) { + const inputTool = inputTools.find((inputTool: Tool) => inputTool.name === tool.tool) + if (inputTool && inputTool.returnDirect && shouldStreamResponse) { + sseStreamer.streamTokenEvent(chatId, tool.toolOutput) + } + } + } } else { res = await executor.invoke({ input }, { callbacks: [loggerHandler, ...callbacks] }) if (res.sourceDocuments) { @@ -141,16 +181,17 @@ class ToolAgent_Agents implements INode { if (res.usedTools) { usedTools = res.usedTools } + if (res.artifacts) { + artifacts = res.artifacts + } } let output = res?.output - if (Array.isArray(output)) { - output = output[0]?.text || '' - } else if (typeof output === 'object') { - output = output?.text || '' - } + output = extractOutputFromArray(res?.output) + output = removeInvalidImageMarkdown(output) // Claude 3 Opus tends to spit out .. as well, discard that in final output + // https://docs.anthropic.com/en/docs/build-with-claude/tool-use#chain-of-thought const regexPattern: RegExp = /[\s\S]*?<\/thinking>/ const matches: RegExpMatchArray | null = output.match(regexPattern) if (matches) { @@ -175,7 +216,7 @@ class ToolAgent_Agents implements INode { let finalRes = output - if (sourceDocuments.length || usedTools.length) { + if (sourceDocuments.length || usedTools.length || artifacts.length) { const finalRes: ICommonObject = { text: output } if (sourceDocuments.length) { finalRes.sourceDocuments = flatten(sourceDocuments) @@ -183,6 +224,9 @@ class ToolAgent_Agents implements INode { if (usedTools.length) { finalRes.usedTools = usedTools } + if (artifacts.length) { + finalRes.artifacts = artifacts + } return finalRes } @@ -198,41 +242,45 @@ const prepareAgent = async ( const model = nodeData.inputs?.model as BaseChatModel const maxIterations = nodeData.inputs?.maxIterations as string const memory = nodeData.inputs?.memory as FlowiseMemory - const systemMessage = nodeData.inputs?.systemMessage as string - const customPrompt = nodeData.inputs?.prompt + let systemMessage = nodeData.inputs?.systemMessage as string let tools = nodeData.inputs?.tools tools = flatten(tools) const memoryKey = memory.memoryKey ? memory.memoryKey : 'chat_history' const inputKey = memory.inputKey ? memory.inputKey : 'input' const prependMessages = options?.prependMessages - let prompt: ChatPromptTemplate + systemMessage = transformBracesWithColon(systemMessage) - if (customPrompt) { - if (customPrompt instanceof ChatPromptTemplate) { - prompt = customPrompt - if (!prompt.promptMessages.some((msg) => msg instanceof MessagesPlaceholder && msg.variableName === 'agent_scratchpad')) { - prompt.promptMessages.push(new MessagesPlaceholder('agent_scratchpad')) - } - } else if (customPrompt instanceof PromptTemplate) { - // Convert PromptTemplate to ChatPromptTemplate - prompt = ChatPromptTemplate.fromMessages([ - ['system', systemMessage], - new MessagesPlaceholder(memoryKey), - HumanMessagePromptTemplate.fromTemplate(`{${inputKey}}`), - new MessagesPlaceholder('agent_scratchpad') - ]) - } else { - throw new Error('Unsupported prompt type. Please use ChatPromptTemplate or PromptTemplate.') - } - } else { - // Use default prompt - prompt = ChatPromptTemplate.fromMessages([ - ['system', systemMessage], + let prompt = ChatPromptTemplate.fromMessages([ + ['system', systemMessage], + new MessagesPlaceholder(memoryKey), + ['human', `{${inputKey}}`], + new MessagesPlaceholder('agent_scratchpad') + ]) + + let promptVariables = {} + const chatPromptTemplate = nodeData.inputs?.chatPromptTemplate as ChatPromptTemplate + if (chatPromptTemplate && chatPromptTemplate.promptMessages.length) { + const humanPrompt = chatPromptTemplate.promptMessages[chatPromptTemplate.promptMessages.length - 1] + const messages = [ + ...chatPromptTemplate.promptMessages.slice(0, -1), new MessagesPlaceholder(memoryKey), - ['human', `{${inputKey}}`], + humanPrompt, new MessagesPlaceholder('agent_scratchpad') - ]) + ] + prompt = ChatPromptTemplate.fromMessages(messages) + if ((chatPromptTemplate as any).promptValues) { + const promptValuesRaw = (chatPromptTemplate as any).promptValues + const promptValues = handleEscapeCharacters(promptValuesRaw, true) + for (const val in promptValues) { + promptVariables = { + ...promptVariables, + [val]: () => { + return promptValues[val] + } + } + } + } } if (llmSupportsVision(model)) { @@ -274,7 +322,31 @@ const prepareAgent = async ( if (model.bindTools === undefined) { throw new Error(`This agent requires that the "bindTools()" method be implemented on the input model.`) } + // Filter tools from tools with duplicate names, make sure the logs clearly show what happened + // Check for duplicate tool names and filter them out + // TODO: WE ABSOLUTELY NEED TO FIX THIS + // TODO: Why tools are duplicated? + const initialToolCount = tools.length + const uniqueToolNames = new Set(tools.map((tool: Tool) => tool.name)) + if (initialToolCount > uniqueToolNames.size) { + console.log(`[ToolAgent] Found duplicate tool names. Initial count: ${initialToolCount}, unique count: ${uniqueToolNames.size}`) + const duplicateTools = tools + .map((tool: Tool) => tool.name) + .filter((name: string, index: number, array: string[]) => array.indexOf(name) !== index) + console.log(`[ToolAgent] Duplicate tool names: ${JSON.stringify(duplicateTools)}`) + } + + tools = tools.filter((tool: Tool, index: number, self: Tool[]) => { + const firstIndex = self.findIndex((t) => t.name === tool.name) + const isDuplicate = firstIndex !== index + if (isDuplicate) { + console.log(`[ToolAgent] Filtering out duplicate tool: ${tool.name}`) + } + return firstIndex === index + }) + + console.log(`[ToolAgent] Binding ${tools.length} tools to model: ${tools.map((t: Tool) => t.name).join(', ')}`) const modelWithTools = model.bindTools(tools) const runnableAgent = RunnableSequence.from([ @@ -284,7 +356,8 @@ const prepareAgent = async ( [memoryKey]: async (_: { input: string; steps: ToolsAgentStep[] }) => { const messages = (await memory.getChatMessages(flowObj?.sessionId, true, prependMessages)) as BaseMessage[] return messages ?? [] - } + }, + ...promptVariables }, prompt, modelWithTools, @@ -297,7 +370,7 @@ const prepareAgent = async ( sessionId: flowObj?.sessionId, chatId: flowObj?.chatId, input: flowObj?.input, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', maxIterations: maxIterations ? parseFloat(maxIterations) : undefined }) diff --git a/packages/components/nodes/agents/XMLAgent/XMLAgent.ts b/packages/components/nodes/agents/XMLAgent/XMLAgent.ts index af311fcfbb0..92f46feb560 100644 --- a/packages/components/nodes/agents/XMLAgent/XMLAgent.ts +++ b/packages/components/nodes/agents/XMLAgent/XMLAgent.ts @@ -6,8 +6,17 @@ import { RunnableSequence } from '@langchain/core/runnables' import { Tool } from '@langchain/core/tools' import { ChatPromptTemplate, HumanMessagePromptTemplate, MessagesPlaceholder } from '@langchain/core/prompts' import { formatLogToMessage } from 'langchain/agents/format_scratchpad/log_to_message' -import { getBaseClasses } from '../../../src/utils' -import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeParams, IUsedTool } from '../../../src/Interface' +import { getBaseClasses, transformBracesWithColon } from '../../../src/utils' +import { + FlowiseMemory, + ICommonObject, + IMessage, + INode, + INodeData, + INodeParams, + IServerSideEventStreamer, + IUsedTool +} from '../../../src/Interface' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { AgentExecutor, XMLAgentOutputParser } from '../../../src/agents' import { Moderation, checkInputs } from '../../moderation/Moderation' @@ -48,7 +57,6 @@ class XMLAgent_Agents implements INode { baseClasses: string[] inputs: INodeParams[] sessionId?: string - badge?: string constructor(fields?: { sessionId?: string }) { this.label = 'XML Agent' @@ -112,13 +120,19 @@ class XMLAgent_Agents implements INode { const memory = nodeData.inputs?.memory as FlowiseMemory const moderations = nodeData.inputs?.inputModeration as Moderation[] + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the OpenAI Function Agent input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } @@ -131,17 +145,34 @@ class XMLAgent_Agents implements INode { let sourceDocuments: ICommonObject[] = [] let usedTools: IUsedTool[] = [] - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) res = await executor.invoke({ input }, { callbacks: [loggerHandler, handler, ...callbacks] }) if (res.sourceDocuments) { - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', flatten(res.sourceDocuments)) + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, flatten(res.sourceDocuments)) + } sourceDocuments = res.sourceDocuments } if (res.usedTools) { - options.socketIO.to(options.socketIOClientId).emit('usedTools', res.usedTools) + if (sseStreamer) { + sseStreamer.streamUsedToolsEvent(chatId, flatten(res.usedTools)) + } usedTools = res.usedTools } + // If the tool is set to returnDirect, stream the output to the client + if (res.usedTools && res.usedTools.length) { + let inputTools = nodeData.inputs?.tools + inputTools = flatten(inputTools) + for (const tool of res.usedTools) { + const inputTool = inputTools.find((inputTool: Tool) => inputTool.name === tool.tool) + if (inputTool && inputTool.returnDirect) { + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, tool.toolOutput) + } + } + } + } } else { res = await executor.invoke({ input }, { callbacks: [loggerHandler, ...callbacks] }) if (res.sourceDocuments) { @@ -191,13 +222,15 @@ const prepareAgent = async ( const model = nodeData.inputs?.model as BaseChatModel const maxIterations = nodeData.inputs?.maxIterations as string const memory = nodeData.inputs?.memory as FlowiseMemory - const systemMessage = nodeData.inputs?.systemMessage as string + let systemMessage = nodeData.inputs?.systemMessage as string let tools = nodeData.inputs?.tools tools = flatten(tools) const inputKey = memory.inputKey ? memory.inputKey : 'input' const memoryKey = memory.memoryKey ? memory.memoryKey : 'chat_history' const prependMessages = options?.prependMessages + systemMessage = transformBracesWithColon(systemMessage) + let promptMessage = systemMessage ? systemMessage : defaultSystemMessage if (memory.memoryKey) promptMessage = promptMessage.replaceAll('{chat_history}', `{${memory.memoryKey}}`) if (memory.inputKey) promptMessage = promptMessage.replaceAll('{input}', `{${memory.inputKey}}`) @@ -245,7 +278,7 @@ const prepareAgent = async ( chatId: flowObj?.chatId, input: flowObj?.input, isXML: true, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', maxIterations: maxIterations ? parseFloat(maxIterations) : undefined }) diff --git a/packages/components/nodes/analytic/Arize/Arize.ts b/packages/components/nodes/analytic/Arize/Arize.ts new file mode 100644 index 00000000000..f04f6017807 --- /dev/null +++ b/packages/components/nodes/analytic/Arize/Arize.ts @@ -0,0 +1,33 @@ +import { INode, INodeParams } from '../../../src/Interface' + +class Arize_Analytic implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs?: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'Arize' + this.name = 'arize' + this.version = 1.0 + this.type = 'Arize' + this.icon = 'arize.png' + this.category = 'Analytic' + this.baseClasses = [this.type] + this.inputs = [] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['arizeApi'] + } + } +} + +module.exports = { nodeClass: Arize_Analytic } diff --git a/packages/components/nodes/analytic/Arize/arize.png b/packages/components/nodes/analytic/Arize/arize.png new file mode 100644 index 00000000000..23c851ce911 Binary files /dev/null and b/packages/components/nodes/analytic/Arize/arize.png differ diff --git a/packages/components/nodes/analytic/Lunary/Lunary.svg b/packages/components/nodes/analytic/Lunary/Lunary.svg index 1528de5a93a..f0900d00e6c 100644 --- a/packages/components/nodes/analytic/Lunary/Lunary.svg +++ b/packages/components/nodes/analytic/Lunary/Lunary.svg @@ -1,7 +1,26 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/components/nodes/analytic/Phoenix/Phoenix.ts b/packages/components/nodes/analytic/Phoenix/Phoenix.ts new file mode 100644 index 00000000000..4e30a387c77 --- /dev/null +++ b/packages/components/nodes/analytic/Phoenix/Phoenix.ts @@ -0,0 +1,33 @@ +import { INode, INodeParams } from '../../../src/Interface' + +class Phoenix_Analytic implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs?: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'Phoenix' + this.name = 'phoenix' + this.version = 1.0 + this.type = 'Phoenix' + this.icon = 'phoenix.png' + this.category = 'Analytic' + this.baseClasses = [this.type] + this.inputs = [] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['phoenixApi'] + } + } +} + +module.exports = { nodeClass: Phoenix_Analytic } diff --git a/packages/components/nodes/analytic/Phoenix/phoenix.png b/packages/components/nodes/analytic/Phoenix/phoenix.png new file mode 100644 index 00000000000..b25150526b7 Binary files /dev/null and b/packages/components/nodes/analytic/Phoenix/phoenix.png differ diff --git a/packages/components/nodes/cache/InMemoryCache/InMemoryCache.ts b/packages/components/nodes/cache/InMemoryCache/InMemoryCache.ts index bddcfb70c96..0e613834f55 100644 --- a/packages/components/nodes/cache/InMemoryCache/InMemoryCache.ts +++ b/packages/components/nodes/cache/InMemoryCache/InMemoryCache.ts @@ -27,17 +27,17 @@ class InMemoryCache implements INode { } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const memoryMap = options.cachePool.getLLMCache(options.chatflowid) ?? new Map() + const memoryMap = (await options.cachePool.getLLMCache(options.chatflowid)) ?? new Map() const inMemCache = new InMemoryCacheExtended(memoryMap) inMemCache.lookup = async (prompt: string, llmKey: string): Promise => { - const memory = options.cachePool.getLLMCache(options.chatflowid) ?? inMemCache.cache + const memory = (await options.cachePool.getLLMCache(options.chatflowid)) ?? inMemCache.cache return Promise.resolve(memory.get(getCacheKey(prompt, llmKey)) ?? null) } inMemCache.update = async (prompt: string, llmKey: string, value: any): Promise => { inMemCache.cache.set(getCacheKey(prompt, llmKey), value) - options.cachePool.addLLMCache(options.chatflowid, inMemCache.cache) + await options.cachePool.addLLMCache(options.chatflowid, inMemCache.cache) } return inMemCache } diff --git a/packages/components/nodes/cache/InMemoryCache/InMemoryEmbeddingCache.ts b/packages/components/nodes/cache/InMemoryCache/InMemoryEmbeddingCache.ts index de426a72a34..d50bc722922 100644 --- a/packages/components/nodes/cache/InMemoryCache/InMemoryEmbeddingCache.ts +++ b/packages/components/nodes/cache/InMemoryCache/InMemoryEmbeddingCache.ts @@ -43,11 +43,11 @@ class InMemoryEmbeddingCache implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const namespace = nodeData.inputs?.namespace as string const underlyingEmbeddings = nodeData.inputs?.embeddings as Embeddings - const memoryMap = options.cachePool.getEmbeddingCache(options.chatflowid) ?? {} + const memoryMap = (await options.cachePool.getEmbeddingCache(options.chatflowid)) ?? {} const inMemCache = new InMemoryEmbeddingCacheExtended(memoryMap) inMemCache.mget = async (keys: string[]) => { - const memory = options.cachePool.getEmbeddingCache(options.chatflowid) ?? inMemCache.store + const memory = (await options.cachePool.getEmbeddingCache(options.chatflowid)) ?? inMemCache.store return keys.map((key) => memory[key]) } @@ -55,14 +55,14 @@ class InMemoryEmbeddingCache implements INode { for (const [key, value] of keyValuePairs) { inMemCache.store[key] = value } - options.cachePool.addEmbeddingCache(options.chatflowid, inMemCache.store) + await options.cachePool.addEmbeddingCache(options.chatflowid, inMemCache.store) } inMemCache.mdelete = async (keys: string[]): Promise => { for (const key of keys) { delete inMemCache.store[key] } - options.cachePool.addEmbeddingCache(options.chatflowid, inMemCache.store) + await options.cachePool.addEmbeddingCache(options.chatflowid, inMemCache.store) } return CacheBackedEmbeddings.fromBytesStore(underlyingEmbeddings, inMemCache, { diff --git a/packages/components/nodes/cache/RedisCache/RedisCache.ts b/packages/components/nodes/cache/RedisCache/RedisCache.ts index c43a9562474..6646575f8c9 100644 --- a/packages/components/nodes/cache/RedisCache/RedisCache.ts +++ b/packages/components/nodes/cache/RedisCache/RedisCache.ts @@ -1,47 +1,10 @@ -import { Redis, RedisOptions } from 'ioredis' -import { isEqual } from 'lodash' +import { Redis } from 'ioredis' import hash from 'object-hash' import { RedisCache as LangchainRedisCache } from '@langchain/community/caches/ioredis' import { StoredGeneration, mapStoredMessageToChatMessage } from '@langchain/core/messages' import { Generation, ChatGeneration } from '@langchain/core/outputs' import { getBaseClasses, getCredentialData, getCredentialParam, ICommonObject, INode, INodeData, INodeParams } from '../../../src' -let redisClientSingleton: Redis -let redisClientOption: RedisOptions -let redisClientUrl: string - -const getRedisClientbyOption = (option: RedisOptions) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } else if (redisClientSingleton && !isEqual(option, redisClientOption)) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } - return redisClientSingleton -} - -const getRedisClientbyUrl = (url: string) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } else if (redisClientSingleton && url !== redisClientUrl) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } - return redisClientSingleton -} - class RedisCache implements INode { label: string name: string @@ -85,33 +48,19 @@ class RedisCache implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const ttl = nodeData.inputs?.ttl as string - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const redisUrl = getCredentialParam('redisUrl', credentialData, nodeData) - - let client: Redis - if (!redisUrl || redisUrl === '') { - const username = getCredentialParam('redisCacheUser', credentialData, nodeData) - const password = getCredentialParam('redisCachePwd', credentialData, nodeData) - const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) - const host = getCredentialParam('redisCacheHost', credentialData, nodeData) - const sslEnabled = getCredentialParam('redisCacheSslEnabled', credentialData, nodeData) - - const tlsOptions = sslEnabled === true ? { tls: { rejectUnauthorized: false } } : {} - - client = getRedisClientbyOption({ - port: portStr ? parseInt(portStr) : 6379, - host, - username, - password, - ...tlsOptions - }) - } else { - client = getRedisClientbyUrl(redisUrl) - } - + let client = await getRedisClient(nodeData, options) const redisClient = new LangchainRedisCache(client) redisClient.lookup = async (prompt: string, llmKey: string) => { + try { + const pingResp = await client.ping() + if (pingResp !== 'PONG') { + client = await getRedisClient(nodeData, options) + } + } catch (error) { + client = await getRedisClient(nodeData, options) + } + let idx = 0 let key = getCacheKey(prompt, llmKey, String(idx)) let value = await client.get(key) @@ -125,10 +74,21 @@ class RedisCache implements INode { value = await client.get(key) } + client.quit() + return generations.length > 0 ? generations : null } redisClient.update = async (prompt: string, llmKey: string, value: Generation[]) => { + try { + const pingResp = await client.ping() + if (pingResp !== 'PONG') { + client = await getRedisClient(nodeData, options) + } + } catch (error) { + client = await getRedisClient(nodeData, options) + } + for (let i = 0; i < value.length; i += 1) { const key = getCacheKey(prompt, llmKey, String(i)) if (ttl) { @@ -137,12 +97,43 @@ class RedisCache implements INode { await client.set(key, JSON.stringify(serializeGeneration(value[i]))) } } + + client.quit() } + client.quit() + return redisClient } } +const getRedisClient = async (nodeData: INodeData, options: ICommonObject) => { + let client: Redis + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const redisUrl = getCredentialParam('redisUrl', credentialData, nodeData) + + if (!redisUrl || redisUrl === '') { + const username = getCredentialParam('redisCacheUser', credentialData, nodeData) + const password = getCredentialParam('redisCachePwd', credentialData, nodeData) + const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) + const host = getCredentialParam('redisCacheHost', credentialData, nodeData) + const sslEnabled = getCredentialParam('redisCacheSslEnabled', credentialData, nodeData) + + const tlsOptions = sslEnabled === true ? { tls: { rejectUnauthorized: false } } : {} + + client = new Redis({ + port: portStr ? parseInt(portStr) : 6379, + host, + username, + password, + ...tlsOptions + }) + } else { + client = new Redis(redisUrl) + } + return client +} const getCacheKey = (...strings: string[]): string => hash(strings.join('_')) const deserializeStoredGeneration = (storedGeneration: StoredGeneration) => { if (storedGeneration.message !== undefined) { diff --git a/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts b/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts index 807d10b0016..1e4ed86c89d 100644 --- a/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts +++ b/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts @@ -1,45 +1,11 @@ -import { Redis, RedisOptions } from 'ioredis' -import { isEqual } from 'lodash' +import { Redis } from 'ioredis' import { RedisByteStore } from '@langchain/community/storage/ioredis' -import { Embeddings } from '@langchain/core/embeddings' -import { CacheBackedEmbeddings } from 'langchain/embeddings/cache_backed' +import { Embeddings, EmbeddingsInterface } from '@langchain/core/embeddings' +import { CacheBackedEmbeddingsFields } from 'langchain/embeddings/cache_backed' import { getBaseClasses, getCredentialData, getCredentialParam, ICommonObject, INode, INodeData, INodeParams } from '../../../src' - -let redisClientSingleton: Redis -let redisClientOption: RedisOptions -let redisClientUrl: string - -const getRedisClientbyOption = (option: RedisOptions) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } else if (redisClientSingleton && !isEqual(option, redisClientOption)) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } - return redisClientSingleton -} - -const getRedisClientbyUrl = (url: string) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } else if (redisClientSingleton && url !== redisClientUrl) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } - return redisClientSingleton -} +import { BaseStore } from '@langchain/core/stores' +import { insecureHash } from '@langchain/core/utils/hash' +import { Document } from '@langchain/core/documents' class RedisEmbeddingsCache implements INode { label: string @@ -112,7 +78,7 @@ class RedisEmbeddingsCache implements INode { const tlsOptions = sslEnabled === true ? { tls: { rejectUnauthorized: false } } : {} - client = getRedisClientbyOption({ + client = new Redis({ port: portStr ? parseInt(portStr) : 6379, host, username, @@ -120,7 +86,7 @@ class RedisEmbeddingsCache implements INode { ...tlsOptions }) } else { - client = getRedisClientbyUrl(redisUrl) + client = new Redis(redisUrl) } ttl ??= '3600' @@ -130,10 +96,143 @@ class RedisEmbeddingsCache implements INode { ttl: ttlNumber }) - return CacheBackedEmbeddings.fromBytesStore(underlyingEmbeddings, redisStore, { - namespace: namespace + const store = CacheBackedEmbeddings.fromBytesStore(underlyingEmbeddings, redisStore, { + namespace: namespace, + redisClient: client + }) + + return store + } +} + +class CacheBackedEmbeddings extends Embeddings { + protected underlyingEmbeddings: EmbeddingsInterface + + protected documentEmbeddingStore: BaseStore + + protected redisClient?: Redis + + constructor(fields: CacheBackedEmbeddingsFields & { redisClient?: Redis }) { + super(fields) + this.underlyingEmbeddings = fields.underlyingEmbeddings + this.documentEmbeddingStore = fields.documentEmbeddingStore + this.redisClient = fields.redisClient + } + + async embedQuery(document: string): Promise { + const res = this.underlyingEmbeddings.embedQuery(document) + this.redisClient?.quit() + return res + } + + async embedDocuments(documents: string[]): Promise { + const vectors = await this.documentEmbeddingStore.mget(documents) + const missingIndicies = [] + const missingDocuments = [] + for (let i = 0; i < vectors.length; i += 1) { + if (vectors[i] === undefined) { + missingIndicies.push(i) + missingDocuments.push(documents[i]) + } + } + if (missingDocuments.length) { + const missingVectors = await this.underlyingEmbeddings.embedDocuments(missingDocuments) + const keyValuePairs: [string, number[]][] = missingDocuments.map((document, i) => [document, missingVectors[i]]) + await this.documentEmbeddingStore.mset(keyValuePairs) + for (let i = 0; i < missingIndicies.length; i += 1) { + vectors[missingIndicies[i]] = missingVectors[i] + } + } + this.redisClient?.quit() + return vectors as number[][] + } + + static fromBytesStore( + underlyingEmbeddings: EmbeddingsInterface, + documentEmbeddingStore: BaseStore, + options?: { + namespace?: string + redisClient?: Redis + } + ) { + const encoder = new TextEncoder() + const decoder = new TextDecoder() + const encoderBackedStore = new EncoderBackedStore({ + store: documentEmbeddingStore, + keyEncoder: (key) => (options?.namespace ?? '') + insecureHash(key), + valueSerializer: (value) => encoder.encode(JSON.stringify(value)), + valueDeserializer: (serializedValue) => JSON.parse(decoder.decode(serializedValue)) + }) + return new this({ + underlyingEmbeddings, + documentEmbeddingStore: encoderBackedStore, + redisClient: options?.redisClient + }) + } +} + +class EncoderBackedStore extends BaseStore { + lc_namespace = ['langchain', 'storage'] + + store: BaseStore + + keyEncoder: (key: K) => string + + valueSerializer: (value: V) => SerializedType + + valueDeserializer: (value: SerializedType) => V + + constructor(fields: { + store: BaseStore + keyEncoder: (key: K) => string + valueSerializer: (value: V) => SerializedType + valueDeserializer: (value: SerializedType) => V + }) { + super(fields) + this.store = fields.store + this.keyEncoder = fields.keyEncoder + this.valueSerializer = fields.valueSerializer + this.valueDeserializer = fields.valueDeserializer + } + + async mget(keys: K[]): Promise<(V | undefined)[]> { + const encodedKeys = keys.map(this.keyEncoder) + const values = await this.store.mget(encodedKeys) + return values.map((value) => { + if (value === undefined) { + return undefined + } + return this.valueDeserializer(value) }) } + + async mset(keyValuePairs: [K, V][]): Promise { + const encodedPairs: [string, SerializedType][] = keyValuePairs.map(([key, value]) => [ + this.keyEncoder(key), + this.valueSerializer(value) + ]) + return this.store.mset(encodedPairs) + } + + async mdelete(keys: K[]): Promise { + const encodedKeys = keys.map(this.keyEncoder) + return this.store.mdelete(encodedKeys) + } + + async *yieldKeys(prefix?: string | undefined): AsyncGenerator { + yield* this.store.yieldKeys(prefix) + } +} + +export function createDocumentStoreFromByteStore(store: BaseStore) { + const encoder = new TextEncoder() + const decoder = new TextDecoder() + return new EncoderBackedStore({ + store, + keyEncoder: (key: string) => key, + valueSerializer: (doc: Document) => encoder.encode(JSON.stringify({ pageContent: doc.pageContent, metadata: doc.metadata })), + valueDeserializer: (bytes: Uint8Array) => new Document(JSON.parse(decoder.decode(bytes))) + }) } module.exports = { nodeClass: RedisEmbeddingsCache } diff --git a/packages/components/nodes/chains/ApiChain/GETApiChain.ts b/packages/components/nodes/chains/ApiChain/GETApiChain.ts index cdf78ffc837..222970f44c5 100644 --- a/packages/components/nodes/chains/ApiChain/GETApiChain.ts +++ b/packages/components/nodes/chains/ApiChain/GETApiChain.ts @@ -2,7 +2,7 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { PromptTemplate } from '@langchain/core/prompts' import { APIChain } from 'langchain/chains' import { getBaseClasses } from '../../../src/utils' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' export const API_URL_RAW_PROMPT_TEMPLATE = `You are given the below API Documentation: @@ -100,9 +100,12 @@ class GETApiChain_Chains implements INode { const chain = await getAPIChain(apiDocs, model, headers, urlPrompt, ansPrompt) const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.run(input, [loggerHandler, handler, ...callbacks]) return res } else { @@ -126,7 +129,7 @@ const getAPIChain = async (documents: string, llm: BaseLanguageModel, headers: s const chain = APIChain.fromLLMAndAPIDocs(llm, documents, { apiUrlPrompt, apiResponsePrompt, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', headers: typeof headers === 'object' ? headers : headers ? JSON.parse(headers) : {} }) return chain diff --git a/packages/components/nodes/chains/ApiChain/OpenAPIChain.ts b/packages/components/nodes/chains/ApiChain/OpenAPIChain.ts index 27c1fe007e3..b5314ffe3db 100644 --- a/packages/components/nodes/chains/ApiChain/OpenAPIChain.ts +++ b/packages/components/nodes/chains/ApiChain/OpenAPIChain.ts @@ -1,5 +1,5 @@ import { APIChain, createOpenAPIChain } from 'langchain/chains' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' @@ -74,18 +74,24 @@ class OpenApiChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) const moderations = nodeData.inputs?.inputModeration as Moderation[] + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the OpenAPI chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.run(input, [loggerHandler, handler, ...callbacks]) return res } else { @@ -122,7 +128,7 @@ const initChain = async (nodeData: INodeData, options: ICommonObject) => { return await createOpenAPIChain(yamlString, { llm: model, headers: typeof headers === 'object' ? headers : headers ? JSON.parse(headers) : {}, - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) } diff --git a/packages/components/nodes/chains/ApiChain/POSTApiChain.ts b/packages/components/nodes/chains/ApiChain/POSTApiChain.ts index e6f0bd34994..da033d2d24f 100644 --- a/packages/components/nodes/chains/ApiChain/POSTApiChain.ts +++ b/packages/components/nodes/chains/ApiChain/POSTApiChain.ts @@ -2,7 +2,7 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { PromptTemplate } from '@langchain/core/prompts' import { API_RESPONSE_RAW_PROMPT_TEMPLATE, API_URL_RAW_PROMPT_TEMPLATE, APIChain } from './postCore' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' class POSTApiChain_Chains implements INode { @@ -90,8 +90,12 @@ class POSTApiChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2) + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.run(input, [loggerHandler, handler, ...callbacks]) return res } else { @@ -115,7 +119,7 @@ const getAPIChain = async (documents: string, llm: BaseLanguageModel, headers: s const chain = APIChain.fromLLMAndAPIDocs(llm, documents, { apiUrlPrompt, apiResponsePrompt, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', headers: typeof headers === 'object' ? headers : headers ? JSON.parse(headers) : {} }) return chain diff --git a/packages/components/nodes/chains/ConversationChain/ConversationChain.ts b/packages/components/nodes/chains/ConversationChain/ConversationChain.ts index 73dc9c68c71..f0d3de7aa55 100644 --- a/packages/components/nodes/chains/ConversationChain/ConversationChain.ts +++ b/packages/components/nodes/chains/ConversationChain/ConversationChain.ts @@ -23,10 +23,11 @@ import { INode, INodeData, INodeParams, - MessageContentImageUrl + MessageContentImageUrl, + IServerSideEventStreamer } from '../../../src/Interface' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { getBaseClasses, handleEscapeCharacters } from '../../../src/utils' +import { getBaseClasses, handleEscapeCharacters, transformBracesWithColon } from '../../../src/utils' let systemMessage = `The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.` const inputKey = 'input' @@ -114,13 +115,19 @@ class ConversationChain_Chains implements INode { const chain = await prepareChain(nodeData, options, this.sessionId) const moderations = nodeData.inputs?.inputModeration as Moderation[] + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the LLM chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(options.sseStreamer, options.chatId, e.message) + } return formatResponse(e.message) } } @@ -135,8 +142,8 @@ class ConversationChain_Chains implements INode { callbacks.push(new LCConsoleCallbackHandler()) } - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) callbacks.push(handler) res = await chain.invoke({ input }, { callbacks }) } else { @@ -163,7 +170,8 @@ class ConversationChain_Chains implements INode { const prepareChatPrompt = (nodeData: INodeData, humanImageMessages: MessageContentImageUrl[]) => { const memory = nodeData.inputs?.memory as FlowiseMemory - const prompt = nodeData.inputs?.systemMessagePrompt as string + let prompt = nodeData.inputs?.systemMessagePrompt as string + prompt = transformBracesWithColon(prompt) const chatPromptTemplate = nodeData.inputs?.chatPromptTemplate as ChatPromptTemplate let model = nodeData.inputs?.model as BaseChatModel diff --git a/packages/components/nodes/chains/ConversationalRetrievalQAChain/ConversationalRetrievalQAChain.ts b/packages/components/nodes/chains/ConversationalRetrievalQAChain/ConversationalRetrievalQAChain.ts index 5a0e40685dc..29528ae5c69 100644 --- a/packages/components/nodes/chains/ConversationalRetrievalQAChain/ConversationalRetrievalQAChain.ts +++ b/packages/components/nodes/chains/ConversationalRetrievalQAChain/ConversationalRetrievalQAChain.ts @@ -22,7 +22,8 @@ import { INodeData, INodeParams, IDatabaseEntity, - MemoryMethods + MemoryMethods, + IServerSideEventStreamer } from '../../../src/Interface' import { QA_TEMPLATE, REPHRASE_TEMPLATE, RESPONSE_TEMPLATE } from './prompts' @@ -181,6 +182,10 @@ class ConversationalRetrievalQAChain_Chains implements INode { const databaseEntities = options.databaseEntities as IDatabaseEntity const chatflowid = options.chatflowid as string + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + let customResponsePrompt = responsePrompt // If the deprecated systemMessagePrompt is still exists if (systemMessagePrompt) { @@ -205,7 +210,9 @@ class ConversationalRetrievalQAChain_Chains implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(options.sseStreamer, options.chatId, e.message) + } return formatResponse(e.message) } } @@ -234,18 +241,22 @@ class ConversationalRetrievalQAChain_Chains implements INode { let sourceDocuments: ICommonObject[] = [] let text = '' let isStreamingStarted = false - const isStreamingEnabled = options.socketIO && options.socketIOClientId for await (const chunk of stream) { streamedResponse = applyPatch(streamedResponse, chunk.ops).newDocument if (streamedResponse.final_output) { text = streamedResponse.final_output?.output - if (isStreamingEnabled) options.socketIO.to(options.socketIOClientId).emit('end') if (Array.isArray(streamedResponse?.logs?.[sourceRunnableName]?.final_output?.output)) { sourceDocuments = streamedResponse?.logs?.[sourceRunnableName]?.final_output?.output - if (isStreamingEnabled && returnSourceDocuments) - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', sourceDocuments) + if (shouldStreamResponse && returnSourceDocuments) { + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, sourceDocuments) + } + } + } + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamEndEvent(chatId) } } @@ -258,9 +269,17 @@ class ConversationalRetrievalQAChain_Chains implements INode { if (!isStreamingStarted) { isStreamingStarted = true - if (isStreamingEnabled) options.socketIO.to(options.socketIOClientId).emit('start', token) + if (shouldStreamResponse) { + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, token) + } + } + } + if (shouldStreamResponse) { + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, token) + } } - if (isStreamingEnabled) options.socketIO.to(options.socketIOClientId).emit('token', token) } } @@ -424,7 +443,7 @@ class BufferMemory extends FlowiseMemory implements MemoryMethods { } if (returnBaseMessages) { - return mapChatMessageToBaseMessage(chatMessage) + return await mapChatMessageToBaseMessage(chatMessage) } let returnIMessages: IMessage[] = [] diff --git a/packages/components/nodes/chains/GraphCypherQAChain/GraphCypherQAChain.ts b/packages/components/nodes/chains/GraphCypherQAChain/GraphCypherQAChain.ts new file mode 100644 index 00000000000..fb7dc4a7d86 --- /dev/null +++ b/packages/components/nodes/chains/GraphCypherQAChain/GraphCypherQAChain.ts @@ -0,0 +1,258 @@ +import { ICommonObject, INode, INodeData, INodeParams, INodeOutputsValue, IServerSideEventStreamer } from '../../../src/Interface' +import { FromLLMInput, GraphCypherQAChain } from '@langchain/community/chains/graph_qa/cypher' +import { getBaseClasses } from '../../../src/utils' +import { BasePromptTemplate, PromptTemplate, FewShotPromptTemplate } from '@langchain/core/prompts' +import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' +import { ConsoleCallbackHandler as LCConsoleCallbackHandler } from '@langchain/core/tracers/console' +import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' +import { formatResponse } from '../../outputparsers/OutputParserHelpers' + +class GraphCypherQA_Chain implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + inputs: INodeParams[] + sessionId?: string + outputs: INodeOutputsValue[] + + constructor(fields?: { sessionId?: string }) { + this.label = 'Graph Cypher QA Chain' + this.name = 'graphCypherQAChain' + this.version = 1.1 + this.type = 'GraphCypherQAChain' + this.icon = 'graphqa.svg' + this.category = 'Chains' + this.description = 'Advanced chain for question-answering against a Neo4j graph by generating Cypher statements' + this.baseClasses = [this.type, ...getBaseClasses(GraphCypherQAChain)] + this.sessionId = fields?.sessionId + this.inputs = [ + { + label: 'Language Model', + name: 'model', + type: 'BaseLanguageModel', + description: 'Model for generating Cypher queries and answers.' + }, + { + label: 'Neo4j Graph', + name: 'graph', + type: 'Neo4j' + }, + { + label: 'Cypher Generation Prompt', + name: 'cypherPrompt', + optional: true, + type: 'BasePromptTemplate', + description: + 'Prompt template for generating Cypher queries. Must include {schema} and {question} variables. If not provided, default prompt will be used.' + }, + { + label: 'Cypher Generation Model', + name: 'cypherModel', + optional: true, + type: 'BaseLanguageModel', + description: 'Model for generating Cypher queries. If not provided, the main model will be used.' + }, + { + label: 'QA Prompt', + name: 'qaPrompt', + optional: true, + type: 'BasePromptTemplate', + description: + 'Prompt template for generating answers. Must include {context} and {question} variables. If not provided, default prompt will be used.' + }, + { + label: 'QA Model', + name: 'qaModel', + optional: true, + type: 'BaseLanguageModel', + description: 'Model for generating answers. If not provided, the main model will be used.' + }, + { + label: 'Input Moderation', + description: 'Detect text that could generate harmful output and prevent it from being sent to the language model', + name: 'inputModeration', + type: 'Moderation', + optional: true, + list: true + }, + { + label: 'Return Direct', + name: 'returnDirect', + type: 'boolean', + default: false, + optional: true, + description: 'If true, return the raw query results instead of using the QA chain' + } + ] + this.outputs = [ + { + label: 'Graph Cypher QA Chain', + name: 'graphCypherQAChain', + baseClasses: [this.type, ...getBaseClasses(GraphCypherQAChain)] + }, + { + label: 'Output Prediction', + name: 'outputPrediction', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const model = nodeData.inputs?.model + const cypherModel = nodeData.inputs?.cypherModel + const qaModel = nodeData.inputs?.qaModel + const graph = nodeData.inputs?.graph + const cypherPrompt = nodeData.inputs?.cypherPrompt as BasePromptTemplate | FewShotPromptTemplate | undefined + const qaPrompt = nodeData.inputs?.qaPrompt as BasePromptTemplate | undefined + const returnDirect = nodeData.inputs?.returnDirect as boolean + const output = nodeData.outputs?.output as string + + if (!model) { + throw new Error('Language Model is required') + } + + // Handle prompt values if they exist + let cypherPromptTemplate: PromptTemplate | FewShotPromptTemplate | undefined + let qaPromptTemplate: PromptTemplate | undefined + + if (cypherPrompt) { + if (cypherPrompt instanceof PromptTemplate) { + cypherPromptTemplate = new PromptTemplate({ + template: cypherPrompt.template as string, + inputVariables: cypherPrompt.inputVariables + }) + if (!qaPrompt) { + throw new Error('QA Prompt is required when Cypher Prompt is a Prompt Template') + } + } else if (cypherPrompt instanceof FewShotPromptTemplate) { + const examplePrompt = cypherPrompt.examplePrompt as PromptTemplate + cypherPromptTemplate = new FewShotPromptTemplate({ + examples: cypherPrompt.examples, + examplePrompt: examplePrompt, + inputVariables: cypherPrompt.inputVariables, + prefix: cypherPrompt.prefix, + suffix: cypherPrompt.suffix, + exampleSeparator: cypherPrompt.exampleSeparator, + templateFormat: cypherPrompt.templateFormat + }) + } else { + cypherPromptTemplate = cypherPrompt as PromptTemplate + } + } + + if (qaPrompt instanceof PromptTemplate) { + qaPromptTemplate = new PromptTemplate({ + template: qaPrompt.template as string, + inputVariables: qaPrompt.inputVariables + }) + } + + // Validate required variables in prompts + if ( + cypherPromptTemplate && + (!cypherPromptTemplate?.inputVariables.includes('schema') || !cypherPromptTemplate?.inputVariables.includes('question')) + ) { + throw new Error('Cypher Generation Prompt must include {schema} and {question} variables') + } + + const fromLLMInput: FromLLMInput = { + llm: model, + graph, + returnDirect + } + + if (cypherPromptTemplate) { + fromLLMInput['cypherLLM'] = cypherModel ?? model + fromLLMInput['cypherPrompt'] = cypherPromptTemplate + } + + if (qaPromptTemplate) { + fromLLMInput['qaLLM'] = qaModel ?? model + fromLLMInput['qaPrompt'] = qaPromptTemplate + } + + const chain = GraphCypherQAChain.fromLLM(fromLLMInput) + + if (output === this.name) { + return chain + } else if (output === 'outputPrediction') { + nodeData.instance = chain + return await this.run(nodeData, input, options) + } + + return chain + } + + async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const chain = nodeData.instance as GraphCypherQAChain + const moderations = nodeData.inputs?.inputModeration as Moderation[] + const returnDirect = nodeData.inputs?.returnDirect as boolean + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + // Handle input moderation if configured + if (moderations && moderations.length > 0) { + try { + input = await checkInputs(moderations, input) + } catch (e) { + await new Promise((resolve) => setTimeout(resolve, 500)) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } + return formatResponse(e.message) + } + } + + const obj = { + query: input + } + + const loggerHandler = new ConsoleCallbackHandler(options.logger) + const callbackHandlers = await additionalCallbacks(nodeData, options) + let callbacks = [loggerHandler, ...callbackHandlers] + + if (process.env.DEBUG === 'true') { + callbacks.push(new LCConsoleCallbackHandler()) + } + + try { + let response + if (shouldStreamResponse) { + if (returnDirect) { + response = await chain.invoke(obj, { callbacks }) + let result = response?.result + if (typeof result === 'object') { + result = '```json\n' + JSON.stringify(result, null, 2) + } + if (result && typeof result === 'string') { + streamResponse(sseStreamer, chatId, result) + } + } else { + const handler = new CustomChainHandler(sseStreamer, chatId, 2) + callbacks.push(handler) + response = await chain.invoke(obj, { callbacks }) + } + } else { + response = await chain.invoke(obj, { callbacks }) + } + + return formatResponse(response?.result) + } catch (error) { + console.error('Error in GraphCypherQAChain:', error) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, error.message) + } + return formatResponse(`Error: ${error.message}`) + } + } +} + +module.exports = { nodeClass: GraphCypherQA_Chain } diff --git a/packages/components/nodes/chains/GraphCypherQAChain/graphqa.svg b/packages/components/nodes/chains/GraphCypherQAChain/graphqa.svg new file mode 100644 index 00000000000..06bd4751a61 --- /dev/null +++ b/packages/components/nodes/chains/GraphCypherQAChain/graphqa.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/components/nodes/chains/LLMChain/LLMChain.ts b/packages/components/nodes/chains/LLMChain/LLMChain.ts index 5a7d04569a6..f72603635e6 100644 --- a/packages/components/nodes/chains/LLMChain/LLMChain.ts +++ b/packages/components/nodes/chains/LLMChain/LLMChain.ts @@ -4,7 +4,15 @@ import { HumanMessage } from '@langchain/core/messages' import { ChatPromptTemplate, FewShotPromptTemplate, HumanMessagePromptTemplate, PromptTemplate } from '@langchain/core/prompts' import { OutputFixingParser } from 'langchain/output_parsers' import { LLMChain } from 'langchain/chains' -import { IVisionChatModal, ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { + IVisionChatModal, + ICommonObject, + INode, + INodeData, + INodeOutputsValue, + INodeParams, + IServerSideEventStreamer +} from '../../../src/Interface' import { additionalCallbacks, ConsoleCallbackHandler, CustomChainHandler } from '../../../src/handler' import { getBaseClasses, handleEscapeCharacters } from '../../../src/utils' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' @@ -162,18 +170,22 @@ const runPrediction = async ( const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - const isStreaming = !disableStreaming && options.socketIO && options.socketIOClientId - const socketIO = isStreaming ? options.socketIO : undefined - const socketIOClientId = isStreaming ? options.socketIOClientId : '' const moderations = nodeData.inputs?.inputModeration as Moderation[] + // this is true if the prediction is external and the client has requested streaming='true' + const shouldStreamResponse = !disableStreaming && options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the LLM chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(isStreaming, e.message, socketIO, socketIOClientId) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -237,7 +249,7 @@ const runPrediction = async ( for (const variable of inputVariables) { seen.push(variable) - if (promptValues[variable]) { + if (promptValues[variable] != null) { seen.pop() } } @@ -245,8 +257,8 @@ const runPrediction = async ( if (seen.length === 0) { // All inputVariables have fixed values specified const options = { ...promptValues } - if (isStreaming) { - const handler = new CustomChainHandler(socketIO, socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.call(options, [loggerHandler, handler, ...callbacks]) return formatResponse(res?.text) } else { @@ -261,8 +273,8 @@ const runPrediction = async ( ...promptValues, [lastValue]: input } - if (isStreaming) { - const handler = new CustomChainHandler(socketIO, socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.call(options, [loggerHandler, handler, ...callbacks]) return formatResponse(res?.text) } else { @@ -273,8 +285,9 @@ const runPrediction = async ( throw new Error(`Please provide Prompt Values for: ${seen.join(', ')}`) } } else { - if (isStreaming) { - const handler = new CustomChainHandler(socketIO, socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) + const res = await chain.run(input, [loggerHandler, handler, ...callbacks]) return formatResponse(res) } else { diff --git a/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts b/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts index fa91bb205e4..7863981c25e 100644 --- a/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts +++ b/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts @@ -1,6 +1,6 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { MultiPromptChain } from 'langchain/chains' -import { ICommonObject, INode, INodeData, INodeParams, PromptRetriever } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer, PromptRetriever } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' @@ -66,7 +66,7 @@ class MultiPromptChain_Chains implements INode { promptNames, promptDescriptions, promptTemplates, - llmChainOpts: { verbose: process.env.DEBUG === 'true' ? true : false } + llmChainOpts: { verbose: process.env.DEBUG === 'true' } }) return chain @@ -75,13 +75,21 @@ class MultiPromptChain_Chains implements INode { async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const chain = nodeData.instance as MultiPromptChain const moderations = nodeData.inputs?.inputModeration as Moderation[] + + // this is true if the prediction is external and the client has requested streaming='true' + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the Multi Prompt Chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(options.sseStreamer, options.chatId, e.message) + } return formatResponse(e.message) } } @@ -90,8 +98,8 @@ class MultiPromptChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId, 2) const res = await chain.call(obj, [loggerHandler, handler, ...callbacks]) return res?.text } else { diff --git a/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts b/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts index 71302d635af..eed73f4cc1e 100644 --- a/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts +++ b/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts @@ -1,6 +1,6 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { MultiRetrievalQAChain } from 'langchain/chains' -import { ICommonObject, INode, INodeData, INodeParams, VectorStoreRetriever } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer, VectorStoreRetriever } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' @@ -74,7 +74,7 @@ class MultiRetrievalQAChain_Chains implements INode { retrieverNames, retrieverDescriptions, retrievers, - retrievalQAChainOpts: { verbose: process.env.DEBUG === 'true' ? true : false, returnSourceDocuments } + retrievalQAChainOpts: { verbose: process.env.DEBUG === 'true', returnSourceDocuments } }) return chain } @@ -83,13 +83,20 @@ class MultiRetrievalQAChain_Chains implements INode { const chain = nodeData.instance as MultiRetrievalQAChain const returnSourceDocuments = nodeData.inputs?.returnSourceDocuments as boolean const moderations = nodeData.inputs?.inputModeration as Moderation[] + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the Multi Retrieval QA Chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (options.shouldStreamResponse) { + streamResponse(options.sseStreamer, options.chatId, e.message) + } return formatResponse(e.message) } } @@ -97,8 +104,8 @@ class MultiRetrievalQAChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2, returnSourceDocuments) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId, 2, returnSourceDocuments) const res = await chain.call(obj, [loggerHandler, handler, ...callbacks]) if (res.text && res.sourceDocuments) return res return res?.text diff --git a/packages/components/nodes/chains/RetrievalQAChain/RetrievalQAChain.ts b/packages/components/nodes/chains/RetrievalQAChain/RetrievalQAChain.ts index 9125f38fcae..8e7453d7524 100644 --- a/packages/components/nodes/chains/RetrievalQAChain/RetrievalQAChain.ts +++ b/packages/components/nodes/chains/RetrievalQAChain/RetrievalQAChain.ts @@ -2,7 +2,7 @@ import { BaseRetriever } from '@langchain/core/retrievers' import { BaseLanguageModel } from '@langchain/core/language_models/base' import { RetrievalQAChain } from 'langchain/chains' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' import { formatResponse } from '../../outputparsers/OutputParserHelpers' @@ -53,20 +53,27 @@ class RetrievalQAChain_Chains implements INode { const model = nodeData.inputs?.model as BaseLanguageModel const vectorStoreRetriever = nodeData.inputs?.vectorStoreRetriever as BaseRetriever - const chain = RetrievalQAChain.fromLLM(model, vectorStoreRetriever, { verbose: process.env.DEBUG === 'true' ? true : false }) + const chain = RetrievalQAChain.fromLLM(model, vectorStoreRetriever, { verbose: process.env.DEBUG === 'true' }) return chain } async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const chain = nodeData.instance as RetrievalQAChain const moderations = nodeData.inputs?.inputModeration as Moderation[] + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the Retrieval QA Chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -76,8 +83,8 @@ class RetrievalQAChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.call(obj, [loggerHandler, handler, ...callbacks]) return res?.text } else { diff --git a/packages/components/nodes/chains/SqlDatabaseChain/SqlDatabaseChain.ts b/packages/components/nodes/chains/SqlDatabaseChain/SqlDatabaseChain.ts index 21688d74bb0..cc062fb768d 100644 --- a/packages/components/nodes/chains/SqlDatabaseChain/SqlDatabaseChain.ts +++ b/packages/components/nodes/chains/SqlDatabaseChain/SqlDatabaseChain.ts @@ -4,9 +4,9 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { PromptTemplate, PromptTemplateInput } from '@langchain/core/prompts' import { SqlDatabaseChain, SqlDatabaseChainInput, DEFAULT_SQL_DATABASE_PROMPT } from 'langchain/chains/sql_db' import { SqlDatabase } from 'langchain/sql_db' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { getBaseClasses, getInputVariables } from '../../../src/utils' +import { getBaseClasses, getInputVariables, transformBracesWithColon } from '../../../src/utils' import { checkInputs, Moderation, streamResponse } from '../../moderation/Moderation' import { formatResponse } from '../../outputparsers/OutputParserHelpers' @@ -66,7 +66,7 @@ class SqlDatabaseChain_Chains implements INode { label: 'Connection string or file path (sqlite only)', name: 'url', type: 'string', - placeholder: '1270.0.0.1:5432/chinook' + placeholder: '127.0.0.1:5432/chinook' }, { label: 'Include Tables', @@ -166,13 +166,20 @@ class SqlDatabaseChain_Chains implements INode { const topK = nodeData.inputs?.topK as number const customPrompt = nodeData.inputs?.customPrompt as string const moderations = nodeData.inputs?.inputModeration as Moderation[] + + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the Sql Database Chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + streamResponse(sseStreamer, chatId, e.message) + } return formatResponse(e.message) } } @@ -190,8 +197,9 @@ class SqlDatabaseChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId, 2) + const res = await chain.run(input, [loggerHandler, handler, ...callbacks]) return res } else { @@ -233,11 +241,12 @@ const getSQLDBChain = async ( const obj: SqlDatabaseChainInput = { llm, database: db, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', topK: topK } if (customPrompt) { + customPrompt = transformBracesWithColon(customPrompt) const options: PromptTemplateInput = { template: customPrompt, inputVariables: getInputVariables(customPrompt) diff --git a/packages/components/nodes/chains/VectaraChain/VectaraChain.ts b/packages/components/nodes/chains/VectaraChain/VectaraChain.ts index e5427ca0f7d..dc34a166fb4 100644 --- a/packages/components/nodes/chains/VectaraChain/VectaraChain.ts +++ b/packages/components/nodes/chains/VectaraChain/VectaraChain.ts @@ -269,7 +269,9 @@ class VectaraChain_Chains implements INode { input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } diff --git a/packages/components/nodes/chains/VectorDBQAChain/VectorDBQAChain.ts b/packages/components/nodes/chains/VectorDBQAChain/VectorDBQAChain.ts index 129eb46acdd..ec1b2cf8bb5 100644 --- a/packages/components/nodes/chains/VectorDBQAChain/VectorDBQAChain.ts +++ b/packages/components/nodes/chains/VectorDBQAChain/VectorDBQAChain.ts @@ -2,7 +2,7 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base' import { VectorStore } from '@langchain/core/vectorstores' import { VectorDBQAChain } from 'langchain/chains' import { ConsoleCallbackHandler, CustomChainHandler, additionalCallbacks } from '../../../src/handler' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { checkInputs, Moderation } from '../../moderation/Moderation' import { formatResponse } from '../../outputparsers/OutputParserHelpers' @@ -55,7 +55,7 @@ class VectorDBQAChain_Chains implements INode { const chain = VectorDBQAChain.fromLLM(model, vectorStore, { k: (vectorStore as any)?.k ?? 4, - verbose: process.env.DEBUG === 'true' ? true : false + verbose: process.env.DEBUG === 'true' }) return chain } @@ -64,13 +64,19 @@ class VectorDBQAChain_Chains implements INode { const chain = nodeData.instance as VectorDBQAChain const moderations = nodeData.inputs?.inputModeration as Moderation[] + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + if (moderations && moderations.length > 0) { try { // Use the output of the moderation chain as input for the VectorDB QA Chain input = await checkInputs(moderations, input) } catch (e) { await new Promise((resolve) => setTimeout(resolve, 500)) - //streamResponse(options.socketIO && options.socketIOClientId, e.message, options.socketIO, options.socketIOClientId) + // if (options.shouldStreamResponse) { + // streamResponse(options.sseStreamer, options.chatId, e.message) + // } return formatResponse(e.message) } } @@ -81,8 +87,8 @@ class VectorDBQAChain_Chains implements INode { const loggerHandler = new ConsoleCallbackHandler(options.logger) const callbacks = await additionalCallbacks(nodeData, options) - if (options.socketIO && options.socketIOClientId) { - const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId) + if (shouldStreamResponse) { + const handler = new CustomChainHandler(sseStreamer, chatId) const res = await chain.call(obj, [loggerHandler, handler, ...callbacks]) return res?.text } else { diff --git a/packages/components/nodes/chatmodels/AWSBedrock/AWSChatBedrock.ts b/packages/components/nodes/chatmodels/AWSBedrock/AWSChatBedrock.ts index 0c6f5a15d89..b48bc7f0dc1 100644 --- a/packages/components/nodes/chatmodels/AWSBedrock/AWSChatBedrock.ts +++ b/packages/components/nodes/chatmodels/AWSBedrock/AWSChatBedrock.ts @@ -1,9 +1,9 @@ import { BaseCache } from '@langchain/core/caches' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { BedrockChat } from './FlowiseAWSChatBedrock' import { getModels, getRegions, MODEL_TYPE } from '../../../src/modelLoader' -import { BedrockChatFields } from '@langchain/community/chat_models/bedrock' +import { ChatBedrockConverseInput, ChatBedrockConverse } from '@langchain/aws' +import { BedrockChat } from './FlowiseAWSChatBedrock' /** * @author Michael Connor @@ -23,12 +23,12 @@ class AWSChatBedrock_ChatModels implements INode { constructor() { this.label = 'AWS ChatBedrock' this.name = 'awsChatBedrock' - this.version = 5.0 + this.version = 6.0 this.type = 'AWSChatBedrock' this.icon = 'aws.svg' this.category = 'Chat Models' - this.description = 'Wrapper around AWS Bedrock large language models that use the Chat endpoint' - this.baseClasses = [this.type, ...getBaseClasses(BedrockChat)] + this.description = 'Wrapper around AWS Bedrock large language models that use the Converse API' + this.baseClasses = [this.type, ...getBaseClasses(ChatBedrockConverse)] this.credential = { label: 'AWS Credential', name: 'credential', @@ -55,7 +55,7 @@ class AWSChatBedrock_ChatModels implements INode { name: 'model', type: 'asyncOptions', loadMethod: 'listModels', - default: 'anthropic.claude-3-haiku' + default: 'anthropic.claude-3-haiku-20240307-v1:0' }, { label: 'Custom Model Name', @@ -64,6 +64,14 @@ class AWSChatBedrock_ChatModels implements INode { type: 'string', optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Temperature', name: 'temperature', @@ -89,7 +97,7 @@ class AWSChatBedrock_ChatModels implements INode { name: 'allowImageUploads', type: 'boolean', description: - 'Only works with claude-3-* models when image is being uploaded from chat. Compatible with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent', + 'Allow image input. Refer to the docs for more details.', default: false, optional: true } @@ -115,7 +123,7 @@ class AWSChatBedrock_ChatModels implements INode { const cache = nodeData.inputs?.cache as BaseCache const streaming = nodeData.inputs?.streaming as boolean - const obj: BedrockChatFields = { + const obj: ChatBedrockConverseInput = { region: iRegion, model: customModel ? customModel : iModel, maxTokens: parseInt(iMax_tokens_to_sample, 10), @@ -153,7 +161,7 @@ class AWSChatBedrock_ChatModels implements INode { } const amazonBedrock = new BedrockChat(nodeData.id, obj) - if (obj.model?.includes('anthropic.claude-3')) amazonBedrock.setMultiModalOption(multiModalOption) + amazonBedrock.setMultiModalOption(multiModalOption) return amazonBedrock } } diff --git a/packages/components/nodes/chatmodels/AWSBedrock/FlowiseAWSChatBedrock.ts b/packages/components/nodes/chatmodels/AWSBedrock/FlowiseAWSChatBedrock.ts index 7d11bec0e30..4dec41fd1f7 100644 --- a/packages/components/nodes/chatmodels/AWSBedrock/FlowiseAWSChatBedrock.ts +++ b/packages/components/nodes/chatmodels/AWSBedrock/FlowiseAWSChatBedrock.ts @@ -1,5 +1,8 @@ -import { BedrockChatFields, BedrockChat as LCBedrockChat } from '@langchain/community/chat_models/bedrock' import { IVisionChatModal, IMultiModalOption } from '../../../src' +import { ChatBedrockConverse as LCBedrockChat, ChatBedrockConverseInput } from '@langchain/aws' + +const DEFAULT_IMAGE_MODEL = 'anthropic.claude-3-haiku-20240307-v1:0' +const DEFAULT_IMAGE_MAX_TOKEN = 1024 export class BedrockChat extends LCBedrockChat implements IVisionChatModal { configuredModel: string @@ -7,7 +10,7 @@ export class BedrockChat extends LCBedrockChat implements IVisionChatModal { multiModalOption: IMultiModalOption id: string - constructor(id: string, fields: BedrockChatFields) { + constructor(id: string, fields: ChatBedrockConverseInput) { super(fields) this.id = id this.configuredModel = fields?.model || '' @@ -25,8 +28,8 @@ export class BedrockChat extends LCBedrockChat implements IVisionChatModal { setVisionModel(): void { if (!this.model.startsWith('claude-3')) { - this.model = 'anthropic.claude-3-haiku-20240307-v1:0' - this.maxTokens = this.configuredMaxToken ? this.configuredMaxToken : 1024 + this.model = DEFAULT_IMAGE_MODEL + this.maxTokens = this.configuredMaxToken ? this.configuredMaxToken : DEFAULT_IMAGE_MAX_TOKEN } } } diff --git a/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts b/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts index 97d94764efa..d96028c15e3 100644 --- a/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts @@ -1,10 +1,15 @@ -import { AzureOpenAIInput, ChatOpenAI as LangchainChatOpenAI, OpenAIChatInput } from '@langchain/openai' +import { AzureOpenAIInput, AzureChatOpenAI as LangchainAzureChatOpenAI, ChatOpenAIFields, OpenAIClient } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' -import { BaseLLMParams } from '@langchain/core/language_models/llms' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { ChatOpenAI } from '../ChatOpenAI/FlowiseChatOpenAI' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' +import { AzureChatOpenAI } from './FlowiseAzureChatOpenAI' + +const serverCredentialsExists = + !!process.env.AZURE_OPENAI_API_KEY && + !!process.env.AZURE_OPENAI_API_INSTANCE_NAME && + !!process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME && + !!process.env.AZURE_OPENAI_API_VERSION class AzureChatOpenAI_ChatModels implements INode { label: string @@ -21,17 +26,18 @@ class AzureChatOpenAI_ChatModels implements INode { constructor() { this.label = 'Azure ChatOpenAI' this.name = 'azureChatOpenAI' - this.version = 5.0 + this.version = 7.0 this.type = 'AzureChatOpenAI' this.icon = 'Azure.svg' this.category = 'Chat Models' this.description = 'Wrapper around Azure OpenAI large language models that use the Chat endpoint' - this.baseClasses = [this.type, ...getBaseClasses(LangchainChatOpenAI)] + this.baseClasses = [this.type, ...getBaseClasses(LangchainAzureChatOpenAI)] this.credential = { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['azureOpenAIApi'] + credentialNames: ['azureOpenAIApi'], + optional: serverCredentialsExists } this.inputs = [ { @@ -62,6 +68,14 @@ class AzureChatOpenAI_ChatModels implements INode { optional: true, additionalParams: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Top Probability', name: 'topP', @@ -101,12 +115,19 @@ class AzureChatOpenAI_ChatModels implements INode { optional: true, additionalParams: true }, + { + label: 'BaseOptions', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true + }, { label: 'Allow Image Uploads', name: 'allowImageUploads', type: 'boolean', description: - 'Automatically uses gpt-4-vision-preview when image is being uploaded from chat. Only works with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent', + 'Allow image input. Refer to the docs for more details.', default: false, optional: true }, @@ -132,6 +153,29 @@ class AzureChatOpenAI_ChatModels implements INode { default: 'low', optional: false, additionalParams: true + }, + { + label: 'Reasoning Effort', + description: 'Constrains effort on reasoning for reasoning models. Only applicable for o1 and o3 models.', + name: 'reasoningEffort', + type: 'options', + options: [ + { + label: 'Low', + name: 'low' + }, + { + label: 'Medium', + name: 'medium' + }, + { + label: 'High', + name: 'high' + } + ], + default: 'medium', + optional: false, + additionalParams: true } ] } @@ -154,6 +198,8 @@ class AzureChatOpenAI_ChatModels implements INode { const cache = nodeData.inputs?.cache as BaseCache const topP = nodeData.inputs?.topP as string const basePath = nodeData.inputs?.basepath as string + const baseOptions = nodeData.inputs?.baseOptions + const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.Chat.ChatCompletionReasoningEffort const credentialData = await getCredentialData(nodeData.credential ?? '', options) const azureOpenAIApiKey = getCredentialParam('azureOpenAIApiKey', credentialData, nodeData) @@ -164,7 +210,7 @@ class AzureChatOpenAI_ChatModels implements INode { const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean const imageResolution = nodeData.inputs?.imageResolution as string - const obj: Partial & BaseLLMParams & Partial = { + const obj: ChatOpenAIFields & Partial = { temperature: parseFloat(temperature), modelName, azureOpenAIApiKey, @@ -181,6 +227,22 @@ class AzureChatOpenAI_ChatModels implements INode { if (cache) obj.cache = cache if (topP) obj.topP = parseFloat(topP) if (basePath) obj.azureOpenAIBasePath = basePath + if (baseOptions) { + try { + const parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + obj.configuration = { + defaultHeaders: parsedBaseOptions + } + } catch (exception) { + console.error('Error parsing base options', exception) + } + } + if (modelName === 'o3-mini') { + delete obj.temperature + } + if ((modelName.includes('o1') || modelName.includes('o3')) && reasoningEffort) { + obj.reasoningEffort = reasoningEffort + } const multiModalOption: IMultiModalOption = { image: { @@ -189,7 +251,7 @@ class AzureChatOpenAI_ChatModels implements INode { } } - const model = new ChatOpenAI(nodeData.id, obj) + const model = new AzureChatOpenAI(nodeData.id, obj) model.setMultiModalOption(multiModalOption) return model } diff --git a/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts b/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts new file mode 100644 index 00000000000..7a86a3a37c9 --- /dev/null +++ b/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts @@ -0,0 +1,41 @@ +import { AzureChatOpenAI as LangchainAzureChatOpenAI, OpenAIChatInput, AzureOpenAIInput, ClientOptions } from '@langchain/openai' +import { IMultiModalOption, IVisionChatModal } from '../../../src' +import { BaseChatModelParams } from '@langchain/core/language_models/chat_models' + +export class AzureChatOpenAI extends LangchainAzureChatOpenAI implements IVisionChatModal { + configuredModel: string + configuredMaxToken?: number + multiModalOption: IMultiModalOption + id: string + + constructor( + id: string, + fields?: Partial & + Partial & { + openAIApiKey?: string + openAIApiVersion?: string + openAIBasePath?: string + deploymentName?: string + } & BaseChatModelParams & { + configuration?: ClientOptions + } + ) { + super(fields) + this.id = id + this.configuredModel = fields?.modelName ?? '' + this.configuredMaxToken = fields?.maxTokens + } + + revertToOriginalModel(): void { + this.modelName = this.configuredModel + this.maxTokens = this.configuredMaxToken + } + + setMultiModalOption(multiModalOption: IMultiModalOption): void { + this.multiModalOption = multiModalOption + } + + setVisionModel(): void { + // pass + } +} diff --git a/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md b/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md new file mode 100644 index 00000000000..3bfd3396457 --- /dev/null +++ b/packages/components/nodes/chatmodels/AzureChatOpenAI/README.md @@ -0,0 +1,16 @@ +# Azure OpenAI Chat Model + +Azure OpenAI Chat Model integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| -------------------------------- | ------------------------------------------------------------------------ | ------ | ------- | +| AZURE_OPENAI_API_KEY | Default `credential.azureOpenAIApiKey` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_INSTANCE_NAME | Default `credential.azureOpenAIApiInstanceName` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_DEPLOYMENT_NAME | Default `credential.azureOpenAIApiDeploymentName` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_VERSION | Default `credential.azureOpenAIApiVersion` for Azure OpenAI Model | String | | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/chatmodels/ChatAlibabaTongyi/ChatAlibabaTongyi.ts b/packages/components/nodes/chatmodels/ChatAlibabaTongyi/ChatAlibabaTongyi.ts new file mode 100644 index 00000000000..92c4b0b71c9 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatAlibabaTongyi/ChatAlibabaTongyi.ts @@ -0,0 +1,87 @@ +import { BaseCache } from '@langchain/core/caches' +import { ChatAlibabaTongyi } from '@langchain/community/chat_models/alibaba_tongyi' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { BaseChatModelParams } from '@langchain/core/language_models/chat_models' + +class ChatAlibabaTongyi_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatAlibabaTongyi' + this.name = 'chatAlibabaTongyi' + this.version = 2.0 + this.type = 'ChatAlibabaTongyi' + this.icon = 'alibaba-svgrepo-com.svg' + this.category = 'Chat Models' + this.description = 'Wrapper around Alibaba Tongyi Chat Endpoints' + this.baseClasses = [this.type, ...getBaseClasses(ChatAlibabaTongyi)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['AlibabaApi'] + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model', + name: 'modelName', + type: 'string', + placeholder: 'qwen-plus' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const cache = nodeData.inputs?.cache as BaseCache + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const streaming = nodeData.inputs?.streaming as boolean + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const alibabaApiKey = getCredentialParam('alibabaApiKey', credentialData, nodeData) + + const obj: Partial & BaseChatModelParams = { + streaming: streaming ?? true, + alibabaApiKey, + model: modelName, + temperature: temperature ? parseFloat(temperature) : undefined + } + if (cache) obj.cache = cache + + const model = new ChatAlibabaTongyi(obj) + return model + } +} + +module.exports = { nodeClass: ChatAlibabaTongyi_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatAlibabaTongyi/alibaba-svgrepo-com.svg b/packages/components/nodes/chatmodels/ChatAlibabaTongyi/alibaba-svgrepo-com.svg new file mode 100644 index 00000000000..3ba6d875e60 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatAlibabaTongyi/alibaba-svgrepo-com.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatAnthropic/ChatAnthropic.ts b/packages/components/nodes/chatmodels/ChatAnthropic/ChatAnthropic.ts index 5d9a231cc9c..eec8fa51d48 100644 --- a/packages/components/nodes/chatmodels/ChatAnthropic/ChatAnthropic.ts +++ b/packages/components/nodes/chatmodels/ChatAnthropic/ChatAnthropic.ts @@ -21,7 +21,7 @@ class ChatAnthropic_ChatModels implements INode { constructor() { this.label = 'ChatAnthropic' this.name = 'chatAnthropic' - this.version = 6.0 + this.version = 8.0 this.type = 'ChatAnthropic' this.icon = 'Anthropic.svg' this.category = 'Chat Models' @@ -55,6 +55,14 @@ class ChatAnthropic_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Tokens', name: 'maxTokensToSample', @@ -79,12 +87,30 @@ class ChatAnthropic_ChatModels implements INode { optional: true, additionalParams: true }, + { + label: 'Extended Thinking', + name: 'extendedThinking', + type: 'boolean', + description: 'Enable extended thinking for reasoning model such as Claude Sonnet 3.7', + optional: true, + additionalParams: true + }, + { + label: 'Budget Tokens', + name: 'budgetTokens', + type: 'number', + step: 1, + default: 1024, + description: 'Maximum number of tokens Claude is allowed use for its internal reasoning process', + optional: true, + additionalParams: true + }, { label: 'Allow Image Uploads', name: 'allowImageUploads', type: 'boolean', description: - 'Automatically uses claude-3-* models when image is being uploaded from chat. Only works with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent', + 'Allow image input. Refer to the docs for more details.', default: false, optional: true } @@ -106,6 +132,8 @@ class ChatAnthropic_ChatModels implements INode { const topK = nodeData.inputs?.topK as string const streaming = nodeData.inputs?.streaming as boolean const cache = nodeData.inputs?.cache as BaseCache + const extendedThinking = nodeData.inputs?.extendedThinking as boolean + const budgetTokens = nodeData.inputs?.budgetTokens as string const credentialData = await getCredentialData(nodeData.credential ?? '', options) const anthropicApiKey = getCredentialParam('anthropicApiKey', credentialData, nodeData) @@ -123,6 +151,13 @@ class ChatAnthropic_ChatModels implements INode { if (topP) obj.topP = parseFloat(topP) if (topK) obj.topK = parseFloat(topK) if (cache) obj.cache = cache + if (extendedThinking) { + obj.thinking = { + type: 'enabled', + budget_tokens: parseInt(budgetTokens, 10) + } + delete obj.temperature + } const multiModalOption: IMultiModalOption = { image: { diff --git a/packages/components/nodes/chatmodels/ChatAnthropic/FlowiseChatAnthropic.ts b/packages/components/nodes/chatmodels/ChatAnthropic/FlowiseChatAnthropic.ts index 9bc5229276b..d12e9f9b659 100644 --- a/packages/components/nodes/chatmodels/ChatAnthropic/FlowiseChatAnthropic.ts +++ b/packages/components/nodes/chatmodels/ChatAnthropic/FlowiseChatAnthropic.ts @@ -1,15 +1,19 @@ import { AnthropicInput, ChatAnthropic as LangchainChatAnthropic } from '@langchain/anthropic' -import { BaseLLMParams } from '@langchain/core/language_models/llms' +import { type BaseChatModelParams } from '@langchain/core/language_models/chat_models' import { IVisionChatModal, IMultiModalOption } from '../../../src' +const DEFAULT_IMAGE_MODEL = 'claude-3-5-haiku-latest' +const DEFAULT_IMAGE_MAX_TOKEN = 2048 + export class ChatAnthropic extends LangchainChatAnthropic implements IVisionChatModal { configuredModel: string configuredMaxToken: number multiModalOption: IMultiModalOption id: string - constructor(id: string, fields: Partial & BaseLLMParams & { anthropicApiKey?: string }) { - super(fields) + constructor(id: string, fields?: Partial & BaseChatModelParams) { + // @ts-ignore + super(fields ?? {}) this.id = id this.configuredModel = fields?.modelName || '' this.configuredMaxToken = fields?.maxTokens ?? 2048 @@ -26,8 +30,8 @@ export class ChatAnthropic extends LangchainChatAnthropic implements IVisionChat setVisionModel(): void { if (!this.modelName.startsWith('claude-3')) { - this.modelName = 'claude-3-haiku-20240307' - this.maxTokens = this.configuredMaxToken ? this.configuredMaxToken : 2048 + this.modelName = DEFAULT_IMAGE_MODEL + this.maxTokens = this.configuredMaxToken ? this.configuredMaxToken : DEFAULT_IMAGE_MAX_TOKEN } } } diff --git a/packages/components/nodes/chatmodels/ChatBaiduWenxin/ChatBaiduWenxin.ts b/packages/components/nodes/chatmodels/ChatBaiduWenxin/ChatBaiduWenxin.ts index 265e8baf448..0941bbb695a 100644 --- a/packages/components/nodes/chatmodels/ChatBaiduWenxin/ChatBaiduWenxin.ts +++ b/packages/components/nodes/chatmodels/ChatBaiduWenxin/ChatBaiduWenxin.ts @@ -1,5 +1,5 @@ import { BaseCache } from '@langchain/core/caches' -import { ChatBaiduWenxin } from '@langchain/community/chat_models/baiduwenxin' +import { ChatBaiduQianfan } from '@langchain/baidu-qianfan' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' @@ -18,17 +18,17 @@ class ChatBaiduWenxin_ChatModels implements INode { constructor() { this.label = 'ChatBaiduWenxin' this.name = 'chatBaiduWenxin' - this.version = 1.0 + this.version = 2.0 this.type = 'ChatBaiduWenxin' this.icon = 'baiduwenxin.svg' this.category = 'Chat Models' this.description = 'Wrapper around BaiduWenxin Chat Endpoints' - this.baseClasses = [this.type, ...getBaseClasses(ChatBaiduWenxin)] + this.baseClasses = [this.type, ...getBaseClasses(ChatBaiduQianfan)] this.credential = { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['baiduApi'] + credentialNames: ['baiduQianfanApi'] } this.inputs = [ { @@ -50,6 +50,13 @@ class ChatBaiduWenxin_ChatModels implements INode { step: 0.1, default: 0.9, optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true } ] } @@ -58,21 +65,22 @@ class ChatBaiduWenxin_ChatModels implements INode { const cache = nodeData.inputs?.cache as BaseCache const temperature = nodeData.inputs?.temperature as string const modelName = nodeData.inputs?.modelName as string + const streaming = nodeData.inputs?.streaming as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const baiduApiKey = getCredentialParam('baiduApiKey', credentialData, nodeData) - const baiduSecretKey = getCredentialParam('baiduSecretKey', credentialData, nodeData) + const qianfanAccessKey = getCredentialParam('qianfanAccessKey', credentialData, nodeData) + const qianfanSecretKey = getCredentialParam('qianfanSecretKey', credentialData, nodeData) - const obj: Partial = { - streaming: true, - baiduApiKey, - baiduSecretKey, + const obj: Partial = { + streaming: streaming ?? true, + qianfanAccessKey, + qianfanSecretKey, modelName, temperature: temperature ? parseFloat(temperature) : undefined } if (cache) obj.cache = cache - const model = new ChatBaiduWenxin(obj) + const model = new ChatBaiduQianfan(obj) return model } } diff --git a/packages/components/nodes/chatmodels/ChatCerebras/ChatCerebras.ts b/packages/components/nodes/chatmodels/ChatCerebras/ChatCerebras.ts new file mode 100644 index 00000000000..2d65ebeb7fd --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatCerebras/ChatCerebras.ts @@ -0,0 +1,173 @@ +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' +import { BaseCache } from '@langchain/core/caches' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class ChatCerebras_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatCerebras' + this.name = 'chatCerebras' + this.version = 2.0 + this.type = 'ChatCerebras' + this.icon = 'cerebras.png' + this.category = 'Chat Models' + this.description = 'Wrapper around Cerebras Inference API' + this.baseClasses = [this.type, ...getBaseClasses(ChatOpenAI)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['cerebrasAIApi'], + optional: true + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model Name', + name: 'modelName', + type: 'string', + placeholder: 'llama3.1-8b' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Top Probability', + name: 'topP', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Frequency Penalty', + name: 'frequencyPenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Presence Penalty', + name: 'presencePenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Timeout', + name: 'timeout', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'BasePath', + name: 'basepath', + type: 'string', + optional: true, + default: 'https://api.cerebras.ai/v1', + additionalParams: true + }, + { + label: 'BaseOptions', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const topP = nodeData.inputs?.topP as string + const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string + const presencePenalty = nodeData.inputs?.presencePenalty as string + const timeout = nodeData.inputs?.timeout as string + const streaming = nodeData.inputs?.streaming as boolean + const basePath = nodeData.inputs?.basepath as string + const baseOptions = nodeData.inputs?.baseOptions + const cache = nodeData.inputs?.cache as BaseCache + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const cerebrasAIApiKey = getCredentialParam('cerebrasApiKey', credentialData, nodeData) + + const obj: ChatOpenAIFields = { + temperature: parseFloat(temperature), + modelName, + openAIApiKey: cerebrasAIApiKey, + streaming: streaming ?? true + } + + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (topP) obj.topP = parseFloat(topP) + if (frequencyPenalty) obj.frequencyPenalty = parseFloat(frequencyPenalty) + if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty) + if (timeout) obj.timeout = parseInt(timeout, 10) + if (cache) obj.cache = cache + + let parsedBaseOptions: any | undefined = undefined + + if (baseOptions) { + try { + parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + } catch (exception) { + throw new Error("Invalid JSON in the ChatCerebras's BaseOptions: " + exception) + } + } + + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new ChatOpenAI(obj) + return model + } +} + +module.exports = { nodeClass: ChatCerebras_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatCerebras/cerebras.png b/packages/components/nodes/chatmodels/ChatCerebras/cerebras.png new file mode 100644 index 00000000000..0b12258f1cc Binary files /dev/null and b/packages/components/nodes/chatmodels/ChatCerebras/cerebras.png differ diff --git a/packages/components/nodes/chatmodels/ChatCohere/ChatCohere.ts b/packages/components/nodes/chatmodels/ChatCohere/ChatCohere.ts index 8c2fc81794f..a49dc144283 100644 --- a/packages/components/nodes/chatmodels/ChatCohere/ChatCohere.ts +++ b/packages/components/nodes/chatmodels/ChatCohere/ChatCohere.ts @@ -19,7 +19,7 @@ class ChatCohere_ChatModels implements INode { constructor() { this.label = 'ChatCohere' this.name = 'chatCohere' - this.version = 1.0 + this.version = 2.0 this.type = 'ChatCohere' this.icon = 'Cohere.svg' this.category = 'Chat Models' @@ -52,6 +52,13 @@ class ChatCohere_ChatModels implements INode { step: 0.1, default: 0.7, optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true } ] } diff --git a/packages/components/nodes/chatmodels/ChatFireworks/ChatFireworks.ts b/packages/components/nodes/chatmodels/ChatFireworks/ChatFireworks.ts index 471c0872923..2f8b6abee6e 100644 --- a/packages/components/nodes/chatmodels/ChatFireworks/ChatFireworks.ts +++ b/packages/components/nodes/chatmodels/ChatFireworks/ChatFireworks.ts @@ -18,7 +18,7 @@ class ChatFireworks_ChatModels implements INode { constructor() { this.label = 'ChatFireworks' this.name = 'chatFireworks' - this.version = 1.0 + this.version = 2.0 this.type = 'ChatFireworks' this.icon = 'Fireworks.png' this.category = 'Chat Models' @@ -51,6 +51,13 @@ class ChatFireworks_ChatModels implements INode { step: 0.1, default: 0.9, optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true } ] } diff --git a/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/ChatGoogleGenerativeAI.ts b/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/ChatGoogleGenerativeAI.ts index 76287229377..3b13ab271aa 100644 --- a/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/ChatGoogleGenerativeAI.ts +++ b/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/ChatGoogleGenerativeAI.ts @@ -21,7 +21,7 @@ class GoogleGenerativeAI_ChatModels implements INode { constructor() { this.label = 'ChatGoogleGenerativeAI' this.name = 'chatGoogleGenerativeAI' - this.version = 2.0 + this.version = 3.0 this.type = 'ChatGoogleGenerativeAI' this.icon = 'GoogleGemini.svg' this.category = 'Chat Models' @@ -47,7 +47,15 @@ class GoogleGenerativeAI_ChatModels implements INode { name: 'modelName', type: 'asyncOptions', loadMethod: 'listModels', - default: 'gemini-pro' + default: 'gemini-1.5-flash-latest' + }, + { + label: 'Custom Model Name', + name: 'customModelName', + type: 'string', + placeholder: 'gemini-1.5-pro-exp-0801', + description: 'Custom model name to use. If provided, it will override the model selected', + additionalParams: true }, { label: 'Temperature', @@ -57,6 +65,14 @@ class GoogleGenerativeAI_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Output Tokens', name: 'maxOutputTokens', @@ -145,7 +161,7 @@ class GoogleGenerativeAI_ChatModels implements INode { name: 'allowImageUploads', type: 'boolean', description: - 'Automatically uses vision model when image is being uploaded from chat. Only works with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent', + 'Allow image input. Refer to the docs for more details.', default: false, optional: true } @@ -165,6 +181,7 @@ class GoogleGenerativeAI_ChatModels implements INode { const temperature = nodeData.inputs?.temperature as string const modelName = nodeData.inputs?.modelName as string + const customModelName = nodeData.inputs?.customModelName as string const maxOutputTokens = nodeData.inputs?.maxOutputTokens as string const topP = nodeData.inputs?.topP as string const topK = nodeData.inputs?.topK as string @@ -177,7 +194,7 @@ class GoogleGenerativeAI_ChatModels implements INode { const obj: Partial = { apiKey: apiKey, - modelName: modelName, + modelName: customModelName || modelName, streaming: streaming ?? true } diff --git a/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI.ts b/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI.ts index 0caebb69382..c26bf5a274f 100644 --- a/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI.ts +++ b/packages/components/nodes/chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI.ts @@ -26,6 +26,9 @@ import { isStructuredTool } from '@langchain/core/utils/function_calling' import { zodToJsonSchema } from 'zod-to-json-schema' import { BaseLanguageModelCallOptions } from '@langchain/core/language_models/base' +const DEFAULT_IMAGE_MAX_TOKEN = 8192 +const DEFAULT_IMAGE_MODEL = 'gemini-1.5-flash-latest' + interface TokenUsage { completionTokens?: number promptTokens?: number @@ -362,9 +365,9 @@ export class ChatGoogleGenerativeAI extends LangchainChatGoogleGenerativeAI impl } setVisionModel(): void { - if (this.modelName !== 'gemini-pro-vision' && this.modelName !== 'gemini-1.5-pro-latest') { - this.modelName = 'gemini-1.5-pro-latest' - this.maxOutputTokens = this.configuredMaxToken ? this.configuredMaxToken : 8192 + if (this.modelName === 'gemini-1.0-pro-latest') { + this.modelName = DEFAULT_IMAGE_MODEL + this.maxOutputTokens = this.configuredMaxToken ? this.configuredMaxToken : DEFAULT_IMAGE_MAX_TOKEN } } } @@ -607,13 +610,13 @@ function convertResponseContentToChatGenerationChunk( index: number } ): ChatGenerationChunk | null { - if (!response.candidates || response.candidates.length === 0) { + if (!response || !response.candidates || response.candidates.length === 0) { return null } const functionCalls = response.functionCalls() const [candidate] = response.candidates const { content, ...generationInfo } = candidate - const text = content?.parts[0]?.text ?? '' + const text = content?.parts?.[0]?.text ?? '' const toolCallChunks: ToolCallChunk[] = [] if (functionCalls) { diff --git a/packages/components/nodes/chatmodels/ChatGooglePaLM/ChatGooglePaLM.ts b/packages/components/nodes/chatmodels/ChatGooglePaLM/ChatGooglePaLM.ts deleted file mode 100644 index 2bc6982232f..00000000000 --- a/packages/components/nodes/chatmodels/ChatGooglePaLM/ChatGooglePaLM.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { ChatGooglePaLM, GooglePaLMChatInput } from '@langchain/community/chat_models/googlepalm' -import { BaseCache } from '@langchain/core/caches' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { getModels, MODEL_TYPE } from '../../../src/modelLoader' - -class ChatGooglePaLM_ChatModels implements INode { - label: string - name: string - version: number - type: string - icon: string - category: string - description: string - baseClasses: string[] - credential: INodeParams - inputs: INodeParams[] - - constructor() { - this.label = 'ChatGooglePaLM' - this.name = 'chatGooglePaLM' - this.version = 3.0 - this.type = 'ChatGooglePaLM' - this.icon = 'GooglePaLM.svg' - this.category = 'Chat Models' - this.description = 'Wrapper around Google MakerSuite PaLM large language models using the Chat endpoint' - this.baseClasses = [this.type, ...getBaseClasses(ChatGooglePaLM)] - this.credential = { - label: 'Connect Credential', - name: 'credential', - type: 'credential', - credentialNames: ['googleMakerSuite'] - } - this.inputs = [ - { - label: 'Cache', - name: 'cache', - type: 'BaseCache', - optional: true - }, - { - label: 'Model Name', - name: 'modelName', - type: 'asyncOptions', - loadMethod: 'listModels', - default: 'models/chat-bison-001' - }, - { - label: 'Temperature', - name: 'temperature', - type: 'number', - step: 0.1, - default: 0.7, - optional: true, - description: - 'Controls the randomness of the output.\n' + - 'Values can range from [0.0,1.0], inclusive. A value closer to 1.0 ' + - 'will produce responses that are more varied and creative, while ' + - 'a value closer to 0.0 will typically result in more straightforward ' + - 'responses from the model.' - }, - { - label: 'Top Probability', - name: 'topP', - type: 'number', - step: 0.1, - optional: true, - additionalParams: true, - description: - 'Top-p changes how the model selects tokens for output.\n' + - 'Tokens are selected from most probable to least until ' + - 'the sum of their probabilities equals the top-p value.\n' + - 'For example, if tokens A, B, and C have a probability of .3, .2, and .1 ' + - 'and the top-p value is .5, then the model will select either A or B ' + - 'as the next token (using temperature).' - }, - { - label: 'Top-k', - name: 'topK', - type: 'number', - step: 1, - optional: true, - additionalParams: true, - description: - 'Top-k changes how the model selects tokens for output.\n' + - 'A top-k of 1 means the selected token is the most probable among ' + - 'all tokens in the model vocabulary (also called greedy decoding), ' + - 'while a top-k of 3 means that the next token is selected from ' + - 'among the 3 most probable tokens (using temperature).' - } - // 'The "examples" field should contain a list of pairs of strings to use as prior turns for this conversation.' - // NB: While 'examples:[]' exists in langchain.ts backend, it is unlikely to be actually used there, since ChatOpenAI doesn't support it - ] - } - - //@ts-ignore - loadMethods = { - async listModels(): Promise { - return await getModels(MODEL_TYPE.CHAT, 'chatGooglePaLM') - } - } - - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const modelName = nodeData.inputs?.modelName as string - const temperature = nodeData.inputs?.temperature as string - const topP = nodeData.inputs?.topP as string - const topK = nodeData.inputs?.topK as string - const cache = nodeData.inputs?.cache as BaseCache - - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const googleMakerSuiteKey = getCredentialParam('googleMakerSuiteKey', credentialData, nodeData) - - const obj: Partial = { - modelName: modelName, - temperature: parseFloat(temperature), - apiKey: googleMakerSuiteKey - } - - if (topP) obj.topP = parseFloat(topP) - if (topK) obj.topK = parseFloat(topK) - if (cache) obj.cache = cache - - const model = new ChatGooglePaLM(obj) - return model - } -} - -module.exports = { nodeClass: ChatGooglePaLM_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatGooglePaLM/GooglePaLM.svg b/packages/components/nodes/chatmodels/ChatGooglePaLM/GooglePaLM.svg deleted file mode 100644 index ed47326a9ae..00000000000 --- a/packages/components/nodes/chatmodels/ChatGooglePaLM/GooglePaLM.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatGoogleVertexAI/ChatGoogleVertexAI.ts b/packages/components/nodes/chatmodels/ChatGoogleVertexAI/ChatGoogleVertexAI.ts index 58fc15f7593..5b813984bcb 100644 --- a/packages/components/nodes/chatmodels/ChatGoogleVertexAI/ChatGoogleVertexAI.ts +++ b/packages/components/nodes/chatmodels/ChatGoogleVertexAI/ChatGoogleVertexAI.ts @@ -1,9 +1,55 @@ import { BaseCache } from '@langchain/core/caches' -import { ChatVertexAI, ChatVertexAIInput } from '@langchain/google-vertexai' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' +import { ChatVertexAI as LcChatVertexAI, ChatVertexAIInput } from '@langchain/google-vertexai' +import { + ICommonObject, + IMultiModalOption, + INode, + INodeData, + INodeOptionsValue, + INodeParams, + IVisionChatModal +} from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' +const DEFAULT_IMAGE_MAX_TOKEN = 8192 +const DEFAULT_IMAGE_MODEL = 'gemini-1.5-flash-latest' + +class ChatVertexAI extends LcChatVertexAI implements IVisionChatModal { + configuredModel: string + configuredMaxToken: number + multiModalOption: IMultiModalOption + id: string + + constructor(id: string, fields?: ChatVertexAIInput) { + // @ts-ignore + if (fields?.model) { + fields.modelName = fields.model + delete fields.model + } + super(fields ?? {}) + this.id = id + this.configuredModel = fields?.modelName || '' + this.configuredMaxToken = fields?.maxOutputTokens ?? 2048 + } + + revertToOriginalModel(): void { + this.modelName = this.configuredModel + this.maxOutputTokens = this.configuredMaxToken + } + + setMultiModalOption(multiModalOption: IMultiModalOption): void { + this.multiModalOption = multiModalOption + } + + setVisionModel(): void { + if (!this.modelName.startsWith('claude-3')) { + this.modelName = DEFAULT_IMAGE_MODEL + this.maxOutputTokens = this.configuredMaxToken ? this.configuredMaxToken : DEFAULT_IMAGE_MAX_TOKEN + } + } +} + class GoogleVertexAI_ChatModels implements INode { label: string name: string @@ -19,7 +65,7 @@ class GoogleVertexAI_ChatModels implements INode { constructor() { this.label = 'ChatGoogleVertexAI' this.name = 'chatGoogleVertexAI' - this.version = 4.0 + this.version = 5.1 this.type = 'ChatGoogleVertexAI' this.icon = 'GoogleVertex.svg' this.category = 'Chat Models' @@ -45,8 +91,15 @@ class GoogleVertexAI_ChatModels implements INode { label: 'Model Name', name: 'modelName', type: 'asyncOptions', - loadMethod: 'listModels', - default: 'chat-bison' + loadMethod: 'listModels' + }, + { + label: 'Custom Model Name', + name: 'customModelName', + type: 'string', + placeholder: 'gemini-1.5-pro-exp-0801', + description: 'Custom model name to use. If provided, it will override the model selected', + additionalParams: true }, { label: 'Temperature', @@ -56,6 +109,23 @@ class GoogleVertexAI_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Allow Image Uploads', + name: 'allowImageUploads', + type: 'boolean', + description: + 'Allow image input. Refer to the docs for more details.', + default: false, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Output Tokens', name: 'maxOutputTokens', @@ -105,7 +175,6 @@ class GoogleVertexAI_ChatModels implements INode { throw new Error( 'Error: More than one component has been inputted. Please use only one of the following: Google Application Credential File Path or Google Credential JSON Object' ) - if (googleApplicationCredentialFilePath && !googleApplicationCredential) authOptions.keyFile = googleApplicationCredentialFilePath else if (!googleApplicationCredentialFilePath && googleApplicationCredential) @@ -116,23 +185,35 @@ class GoogleVertexAI_ChatModels implements INode { const temperature = nodeData.inputs?.temperature as string const modelName = nodeData.inputs?.modelName as string + const customModelName = nodeData.inputs?.customModelName as string const maxOutputTokens = nodeData.inputs?.maxOutputTokens as string const topP = nodeData.inputs?.topP as string const cache = nodeData.inputs?.cache as BaseCache const topK = nodeData.inputs?.topK as string + const streaming = nodeData.inputs?.streaming as boolean + + const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean + + const multiModalOption: IMultiModalOption = { + image: { + allowImageUploads: allowImageUploads ?? false + } + } const obj: ChatVertexAIInput = { temperature: parseFloat(temperature), - model: modelName + modelName: customModelName || modelName, + streaming: streaming ?? true } if (Object.keys(authOptions).length !== 0) obj.authOptions = authOptions - if (maxOutputTokens) obj.maxOutputTokens = parseInt(maxOutputTokens, 10) if (topP) obj.topP = parseFloat(topP) if (cache) obj.cache = cache if (topK) obj.topK = parseFloat(topK) - const model = new ChatVertexAI(obj) + const model = new ChatVertexAI(nodeData.id, obj) + model.setMultiModalOption(multiModalOption) + return model } } diff --git a/packages/components/nodes/chatmodels/ChatIBMWatsonx/ChatIBMWatsonx.ts b/packages/components/nodes/chatmodels/ChatIBMWatsonx/ChatIBMWatsonx.ts new file mode 100644 index 00000000000..f4655ace6cd --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatIBMWatsonx/ChatIBMWatsonx.ts @@ -0,0 +1,183 @@ +import { BaseCache } from '@langchain/core/caches' +import { ChatWatsonx, ChatWatsonxInput } from '@langchain/community/chat_models/ibm' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +interface WatsonxAuth { + watsonxAIApikey?: string + watsonxAIBearerToken?: string + watsonxAIUsername?: string + watsonxAIPassword?: string + watsonxAIUrl?: string + watsonxAIAuthType?: string +} + +class ChatIBMWatsonx_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatIBMWatsonx' + this.name = 'chatIBMWatsonx' + this.version = 2.0 + this.type = 'ChatIBMWatsonx' + this.icon = 'ibm.png' + this.category = 'Chat Models' + this.description = 'Wrapper around IBM watsonx.ai foundation models' + this.baseClasses = [this.type, ...getBaseClasses(ChatWatsonx)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['ibmWatsonx'] + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model', + name: 'modelName', + type: 'string', + placeholder: 'mistralai/mistral-large' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Frequency Penalty', + name: 'frequencyPenalty', + type: 'number', + step: 1, + optional: true, + additionalParams: true, + description: + "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim." + }, + { + label: 'Log Probs', + name: 'logprobs', + type: 'boolean', + default: false, + optional: true, + additionalParams: true, + description: + 'Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message.' + }, + { + label: 'N', + name: 'n', + type: 'number', + step: 1, + default: 1, + optional: true, + additionalParams: true, + description: + 'How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep n as 1 to minimize costs.' + }, + { + label: 'Presence Penalty', + name: 'presencePenalty', + type: 'number', + step: 1, + default: 1, + optional: true, + additionalParams: true, + description: + "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics." + }, + { + label: 'Top P', + name: 'topP', + type: 'number', + step: 0.1, + default: 0.1, + optional: true, + additionalParams: true, + description: + 'An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.' + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const cache = nodeData.inputs?.cache as BaseCache + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string + const logprobs = nodeData.inputs?.logprobs as boolean + const n = nodeData.inputs?.n as string + const presencePenalty = nodeData.inputs?.presencePenalty as string + const topP = nodeData.inputs?.topP as string + const streaming = nodeData.inputs?.streaming as boolean + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const version = getCredentialParam('version', credentialData, nodeData) + const serviceUrl = getCredentialParam('serviceUrl', credentialData, nodeData) + const projectId = getCredentialParam('projectId', credentialData, nodeData) + const watsonxAIAuthType = getCredentialParam('watsonxAIAuthType', credentialData, nodeData) + const watsonxAIApikey = getCredentialParam('watsonxAIApikey', credentialData, nodeData) + const watsonxAIBearerToken = getCredentialParam('watsonxAIBearerToken', credentialData, nodeData) + + const auth = { + version, + serviceUrl, + projectId, + watsonxAIAuthType, + watsonxAIApikey, + watsonxAIBearerToken + } + + const obj: ChatWatsonxInput & WatsonxAuth = { + ...auth, + streaming: streaming ?? true, + model: modelName, + temperature: temperature ? parseFloat(temperature) : undefined + } + if (cache) obj.cache = cache + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (frequencyPenalty) obj.frequencyPenalty = parseInt(frequencyPenalty, 10) + if (logprobs) obj.logprobs = logprobs + if (n) obj.maxTokens = parseInt(n, 10) + if (presencePenalty) obj.presencePenalty = parseInt(presencePenalty, 10) + if (topP) obj.topP = parseFloat(topP) + + const model = new ChatWatsonx(obj) + return model + } +} + +module.exports = { nodeClass: ChatIBMWatsonx_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatIBMWatsonx/ibm.png b/packages/components/nodes/chatmodels/ChatIBMWatsonx/ibm.png new file mode 100644 index 00000000000..a3a4be58100 Binary files /dev/null and b/packages/components/nodes/chatmodels/ChatIBMWatsonx/ibm.png differ diff --git a/packages/components/nodes/chatmodels/ChatLocalAI/ChatLocalAI.ts b/packages/components/nodes/chatmodels/ChatLocalAI/ChatLocalAI.ts index e8516ac4f78..3ce0efdfa42 100644 --- a/packages/components/nodes/chatmodels/ChatLocalAI/ChatLocalAI.ts +++ b/packages/components/nodes/chatmodels/ChatLocalAI/ChatLocalAI.ts @@ -1,6 +1,5 @@ -import { OpenAIChatInput, ChatOpenAI } from '@langchain/openai' +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' -import { BaseLLMParams } from '@langchain/core/language_models/llms' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' @@ -19,7 +18,7 @@ class ChatLocalAI_ChatModels implements INode { constructor() { this.label = 'ChatLocalAI' this.name = 'chatLocalAI' - this.version = 2.0 + this.version = 3.0 this.type = 'ChatLocalAI' this.icon = 'localai.png' this.category = 'Chat Models' @@ -59,6 +58,14 @@ class ChatLocalAI_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Tokens', name: 'maxTokens', @@ -93,15 +100,18 @@ class ChatLocalAI_ChatModels implements INode { const topP = nodeData.inputs?.topP as string const timeout = nodeData.inputs?.timeout as string const basePath = nodeData.inputs?.basePath as string + const streaming = nodeData.inputs?.streaming as boolean + const credentialData = await getCredentialData(nodeData.credential ?? '', options) const localAIApiKey = getCredentialParam('localAIApiKey', credentialData, nodeData) const cache = nodeData.inputs?.cache as BaseCache - const obj: Partial & BaseLLMParams & { openAIApiKey?: string } = { + const obj: ChatOpenAIFields = { temperature: parseFloat(temperature), modelName, - openAIApiKey: 'sk-' + openAIApiKey: 'sk-', + streaming: streaming ?? true } if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) @@ -109,8 +119,9 @@ class ChatLocalAI_ChatModels implements INode { if (timeout) obj.timeout = parseInt(timeout, 10) if (cache) obj.cache = cache if (localAIApiKey) obj.openAIApiKey = localAIApiKey + if (basePath) obj.configuration = { baseURL: basePath } - const model = new ChatOpenAI(obj, { basePath }) + const model = new ChatOpenAI(obj) return model } diff --git a/packages/components/nodes/chatmodels/ChatMistral/ChatMistral.ts b/packages/components/nodes/chatmodels/ChatMistral/ChatMistral.ts index b82272ac3ee..2c478b6831d 100644 --- a/packages/components/nodes/chatmodels/ChatMistral/ChatMistral.ts +++ b/packages/components/nodes/chatmodels/ChatMistral/ChatMistral.ts @@ -19,7 +19,7 @@ class ChatMistral_ChatModels implements INode { constructor() { this.label = 'ChatMistralAI' this.name = 'chatMistralAI' - this.version = 3.0 + this.version = 4.0 this.type = 'ChatMistralAI' this.icon = 'MistralAI.svg' this.category = 'Chat Models' @@ -55,6 +55,14 @@ class ChatMistral_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Output Tokens', name: 'maxOutputTokens', diff --git a/packages/components/nodes/chatmodels/ChatNemoGuardrails/ChatNemoGuardrails.ts b/packages/components/nodes/chatmodels/ChatNemoGuardrails/ChatNemoGuardrails.ts new file mode 100644 index 00000000000..8da1a7fbb11 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNemoGuardrails/ChatNemoGuardrails.ts @@ -0,0 +1,121 @@ +import { BaseChatModel, type BaseChatModelParams } from '@langchain/core/language_models/chat_models' +import { AIMessageChunk, BaseMessage } from '@langchain/core/messages' +import { BaseChatModelCallOptions } from '@langchain/core/language_models/chat_models' +import { NemoClient } from './NemoClient' +import { CallbackManager, CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager' +import { ChatResult } from '@langchain/core/outputs' +import { FailedAttemptHandler } from '@langchain/core/utils/async_caller' +import { getBaseClasses, INode, INodeData, INodeParams } from '../../../src' + +export interface ChatNemoGuardrailsCallOptions extends BaseChatModelCallOptions { + /** + * An array of strings to stop on. + */ + stop?: string[] +} + +export interface ChatNemoGuardrailsInput extends BaseChatModelParams { + configurationId?: string + /** + * The host URL of the Nemo server. + * @default "http://localhost:8000" + */ + baseUrl?: string +} + +class ChatNemoGuardrailsModel extends BaseChatModel implements ChatNemoGuardrailsInput { + configurationId: string + id: string + baseUrl: string + callbackManager?: CallbackManager | undefined + maxConcurrency?: number | undefined + maxRetries?: number | undefined + onFailedAttempt?: FailedAttemptHandler | undefined + client: NemoClient + + _llmType(): string { + return 'nemo-guardrails' + } + + _generate(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): Promise { + const generate = async (messages: BaseMessage[], client: NemoClient): Promise => { + const chatMessages = await client.chat(messages) + const generations = chatMessages.map((message) => { + return { + text: message.content?.toString() ?? '', + message + } + }) + + await runManager?.handleLLMNewToken(generations.length ? generations[0].text : '') + + return { + generations + } + } + return generate(messages, this.client) + } + + constructor({ id, fields }: { id: string; fields: Partial & BaseChatModelParams }) { + super(fields) + this.id = id + this.configurationId = fields.configurationId ?? '' + this.baseUrl = fields.baseUrl ?? '' + this.callbackManager = fields.callbackManager + this.maxConcurrency = fields.maxConcurrency + this.maxRetries = fields.maxRetries + this.onFailedAttempt = fields.onFailedAttempt + this.client = new NemoClient(this.baseUrl, this.configurationId) + } +} + +class ChatNemoGuardrailsChatModel implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Chat Nemo Guardrails' + this.name = 'chatNemoGuardrails' + this.version = 1.0 + this.type = 'ChatNemoGuardrails' + this.icon = 'nemo.svg' + this.category = 'Chat Models' + this.description = 'Access models through the Nemo Guardrails API' + this.baseClasses = [this.type, ...getBaseClasses(ChatNemoGuardrailsModel)] + this.inputs = [ + { + label: 'Configuration ID', + name: 'configurationId', + type: 'string', + optional: false + }, + { + label: 'Base URL', + name: 'baseUrl', + type: 'string', + optional: false + } + ] + } + + async init(nodeData: INodeData): Promise { + const configurationId = nodeData.inputs?.configurationId + const baseUrl = nodeData.inputs?.baseUrl + const obj: Partial = { + configurationId: configurationId, + baseUrl: baseUrl + } + const model = new ChatNemoGuardrailsModel({ id: nodeData.id, fields: obj }) + return model + } +} + +module.exports = { nodeClass: ChatNemoGuardrailsChatModel } diff --git a/packages/components/nodes/chatmodels/ChatNemoGuardrails/NemoClient.ts b/packages/components/nodes/chatmodels/ChatNemoGuardrails/NemoClient.ts new file mode 100644 index 00000000000..da14f9b40a1 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNemoGuardrails/NemoClient.ts @@ -0,0 +1,70 @@ +import { AIMessage, BaseMessage, HumanMessage, SystemMessage } from '@langchain/core/messages' + +export interface Config { + baseUrl: string + configurationId: string +} + +export class ClientConfig implements Config { + baseUrl: string + configurationId: string + + constructor(baseUrl: string, configurationId: string) { + this.baseUrl = baseUrl + this.configurationId = configurationId + } +} + +export class NemoClient { + private readonly config: Config + + constructor(baseUrl: string, configurationId: string) { + this.config = new ClientConfig(baseUrl, configurationId) + } + + getRoleFromMessage(message: BaseMessage): string { + if (message instanceof HumanMessage || message instanceof SystemMessage) { + return 'user' + } + + //AIMessage, ToolMessage, FunctionMessage + return 'assistant' + } + + getContentFromMessage(message: BaseMessage): string { + return message.content.toString() + } + + buildBody(messages: BaseMessage[], configurationId: string): any { + const bodyMessages = messages.map((message) => { + return { + role: this.getRoleFromMessage(message), + content: this.getContentFromMessage(message) + } + }) + + const body = { + config_id: configurationId, + messages: bodyMessages + } + + return body + } + + async chat(messages: BaseMessage[]): Promise { + const headers = new Headers() + headers.append('Content-Type', 'application/json') + + const body = this.buildBody(messages, this.config.configurationId) + + const requestOptions = { + method: 'POST', + body: JSON.stringify(body), + headers: headers + } + + return await fetch(`${this.config.baseUrl}/v1/chat/completions`, requestOptions) + .then((response) => response.json()) + .then((body) => body.messages.map((message: any) => new AIMessage(message.content))) + } +} diff --git a/packages/components/nodes/chatmodels/ChatNemoGuardrails/nemo.svg b/packages/components/nodes/chatmodels/ChatNemoGuardrails/nemo.svg new file mode 100644 index 00000000000..76a39e2e635 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNemoGuardrails/nemo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md b/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md new file mode 100644 index 00000000000..88dfdfeb60e --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md @@ -0,0 +1,20 @@ +Parameters: + +config_id +baseUrl + +``` +/v1/chat/completions +``` + +```json +{ + "config_id": "bedrock", + "messages": [ + { + "role": "user", + "content": "Hello! What can you do for me?" + } + ] +} +``` diff --git a/packages/components/nodes/chatmodels/ChatNvdiaNIM/ChatNvdiaNIM.ts b/packages/components/nodes/chatmodels/ChatNvdiaNIM/ChatNvdiaNIM.ts new file mode 100644 index 00000000000..86fdebfbf31 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNvdiaNIM/ChatNvdiaNIM.ts @@ -0,0 +1,172 @@ +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' +import { BaseCache } from '@langchain/core/caches' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class ChatNvdiaNIM_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Chat Nvidia NIM' + this.name = 'chatNvidiaNIM' + this.version = 1.0 + this.type = 'ChatNvidiaNIM' + this.icon = 'nvdia.svg' + this.category = 'Chat Models' + this.description = 'Wrapper around Nvdia NIM Inference API' + this.baseClasses = [this.type, ...getBaseClasses(ChatOpenAI)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['nvidiaNIMApi'], + optional: true + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model Name', + name: 'modelName', + type: 'string', + placeholder: 'microsoft/phi-3-mini-4k-instruct' + }, + { + label: 'Base Path', + name: 'basePath', + type: 'string', + description: 'Specify the URL of the deployed NIM Inference API', + placeholder: 'https://integrate.api.nvidia.com/v1' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Top Probability', + name: 'topP', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Frequency Penalty', + name: 'frequencyPenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Presence Penalty', + name: 'presencePenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Timeout', + name: 'timeout', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Base Options', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const topP = nodeData.inputs?.topP as string + const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string + const presencePenalty = nodeData.inputs?.presencePenalty as string + const timeout = nodeData.inputs?.timeout as string + const streaming = nodeData.inputs?.streaming as boolean + const basePath = nodeData.inputs?.basePath as string + const baseOptions = nodeData.inputs?.baseOptions + const cache = nodeData.inputs?.cache as BaseCache + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const nvidiaNIMApiKey = getCredentialParam('nvidiaNIMApiKey', credentialData, nodeData) + + const obj: ChatOpenAIFields & { nvdiaNIMApiKey?: string } = { + temperature: parseFloat(temperature), + modelName, + openAIApiKey: nvidiaNIMApiKey ?? 'sk-', + streaming: streaming ?? true + } + + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (topP) obj.topP = parseFloat(topP) + if (frequencyPenalty) obj.frequencyPenalty = parseFloat(frequencyPenalty) + if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty) + if (timeout) obj.timeout = parseInt(timeout, 10) + if (cache) obj.cache = cache + + let parsedBaseOptions: any | undefined = undefined + + if (baseOptions) { + try { + parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + } catch (exception) { + throw new Error("Invalid JSON in the ChatNvidiaNIM's baseOptions: " + exception) + } + } + + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new ChatOpenAI(obj) + return model + } +} + +module.exports = { nodeClass: ChatNvdiaNIM_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatNvdiaNIM/nvdia.svg b/packages/components/nodes/chatmodels/ChatNvdiaNIM/nvdia.svg new file mode 100644 index 00000000000..76a39e2e635 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatNvdiaNIM/nvdia.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatOllama/ChatOllama.ts b/packages/components/nodes/chatmodels/ChatOllama/ChatOllama.ts index 0d72df79e30..25bee4364c9 100644 --- a/packages/components/nodes/chatmodels/ChatOllama/ChatOllama.ts +++ b/packages/components/nodes/chatmodels/ChatOllama/ChatOllama.ts @@ -1,8 +1,9 @@ -import { ChatOllama, ChatOllamaInput } from '@langchain/ollama' +import { ChatOllamaInput } from '@langchain/ollama' import { BaseChatModelParams } from '@langchain/core/language_models/chat_models' import { BaseCache } from '@langchain/core/caches' -import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { IMultiModalOption, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' +import { ChatOllama } from './FlowiseChatOllama' class ChatOllama_ChatModels implements INode { label: string @@ -19,7 +20,7 @@ class ChatOllama_ChatModels implements INode { constructor() { this.label = 'ChatOllama' this.name = 'chatOllama' - this.version = 3.0 + this.version = 5.0 this.type = 'ChatOllama' this.icon = 'Ollama.svg' this.category = 'Chat Models' @@ -54,6 +55,32 @@ class ChatOllama_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Allow Image Uploads', + name: 'allowImageUploads', + type: 'boolean', + description: + 'Allow image input. Refer to the docs for more details.', + default: false, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'JSON Mode', + name: 'jsonMode', + type: 'boolean', + description: + 'Coerces model outputs to only return JSON. Specify in the system prompt to return JSON. Ex: Format all responses as JSON object', + optional: true, + additionalParams: true + }, { label: 'Keep Alive', name: 'keepAlive', @@ -203,13 +230,17 @@ class ChatOllama_ChatModels implements INode { const repeatLastN = nodeData.inputs?.repeatLastN as string const repeatPenalty = nodeData.inputs?.repeatPenalty as string const tfsZ = nodeData.inputs?.tfsZ as string + const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean + const jsonMode = nodeData.inputs?.jsonMode as boolean + const streaming = nodeData.inputs?.streaming as boolean const cache = nodeData.inputs?.cache as BaseCache const obj: ChatOllamaInput & BaseChatModelParams = { baseUrl, temperature: parseFloat(temperature), - model: modelName + model: modelName, + streaming: streaming ?? true } if (topP) obj.topP = parseFloat(topP) @@ -225,8 +256,16 @@ class ChatOllama_ChatModels implements INode { if (tfsZ) obj.tfsZ = parseFloat(tfsZ) if (keepAlive) obj.keepAlive = keepAlive if (cache) obj.cache = cache + if (jsonMode) obj.format = 'json' + + const multiModalOption: IMultiModalOption = { + image: { + allowImageUploads: allowImageUploads ?? false + } + } - const model = new ChatOllama(obj) + const model = new ChatOllama(nodeData.id, obj) + model.setMultiModalOption(multiModalOption) return model } } diff --git a/packages/components/nodes/chatmodels/ChatOllama/FlowiseChatOllama.ts b/packages/components/nodes/chatmodels/ChatOllama/FlowiseChatOllama.ts new file mode 100644 index 00000000000..3089562eaaf --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatOllama/FlowiseChatOllama.ts @@ -0,0 +1,27 @@ +import { ChatOllama as LCChatOllama, ChatOllamaInput } from '@langchain/ollama' +import { IMultiModalOption, IVisionChatModal } from '../../../src' + +export class ChatOllama extends LCChatOllama implements IVisionChatModal { + configuredModel: string + configuredMaxToken?: number + multiModalOption: IMultiModalOption + id: string + + constructor(id: string, fields?: ChatOllamaInput) { + super(fields) + this.id = id + this.configuredModel = fields?.model ?? '' + } + + revertToOriginalModel(): void { + this.model = this.configuredModel + } + + setMultiModalOption(multiModalOption: IMultiModalOption): void { + this.multiModalOption = multiModalOption + } + + setVisionModel(): void { + // pass + } +} diff --git a/packages/components/nodes/chatmodels/ChatOllamaFunction/ChatOllamaFunction.ts b/packages/components/nodes/chatmodels/ChatOllamaFunction/ChatOllamaFunction.ts deleted file mode 100644 index 1268c624e5e..00000000000 --- a/packages/components/nodes/chatmodels/ChatOllamaFunction/ChatOllamaFunction.ts +++ /dev/null @@ -1,810 +0,0 @@ -import { HumanMessage, AIMessage, BaseMessage, AIMessageChunk, ChatMessage } from '@langchain/core/messages' -import { ChatResult } from '@langchain/core/outputs' -import { SimpleChatModel, BaseChatModel, BaseChatModelParams } from '@langchain/core/language_models/chat_models' -import { SystemMessagePromptTemplate } from '@langchain/core/prompts' -import { BaseCache } from '@langchain/core/caches' -import { type StructuredToolInterface } from '@langchain/core/tools' -import type { BaseFunctionCallOptions, BaseLanguageModelInput } from '@langchain/core/language_models/base' -import { convertToOpenAIFunction } from '@langchain/core/utils/function_calling' -import { RunnableInterface } from '@langchain/core/runnables' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses } from '../../../src/utils' -import type { BaseLanguageModelCallOptions } from '@langchain/core/language_models/base' -import { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager' -import { ChatGenerationChunk } from '@langchain/core/outputs' -import type { StringWithAutocomplete } from '@langchain/core/utils/types' -import { createOllamaChatStream, createOllamaGenerateStream, type OllamaInput, type OllamaMessage } from './utils' - -const DEFAULT_TOOL_SYSTEM_TEMPLATE = `You have access to the following tools: -{tools} -You must always select one of the above tools and respond with only a JSON object matching the following schema: -{{ - "tool": , - "tool_input": -}}` - -class ChatOllamaFunction_ChatModels implements INode { - label: string - name: string - version: number - type: string - icon: string - category: string - description: string - baseClasses: string[] - credential: INodeParams - badge?: string - inputs: INodeParams[] - - constructor() { - this.label = 'ChatOllama Function' - this.name = 'chatOllamaFunction' - this.version = 1.0 - this.type = 'ChatOllamaFunction' - this.icon = 'Ollama.svg' - this.category = 'Chat Models' - this.badge = 'DEPRECATING' - this.description = 'Run open-source function-calling compatible LLM on Ollama' - this.baseClasses = [this.type, ...getBaseClasses(OllamaFunctions)] - this.inputs = [ - { - label: 'Cache', - name: 'cache', - type: 'BaseCache', - optional: true - }, - { - label: 'Base URL', - name: 'baseUrl', - type: 'string', - default: 'http://localhost:11434' - }, - { - label: 'Model Name', - name: 'modelName', - type: 'string', - description: 'Only compatible with function calling model like mistral', - placeholder: 'mistral' - }, - { - label: 'Temperature', - name: 'temperature', - type: 'number', - description: - 'The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8). Refer to docs for more details', - step: 0.1, - default: 0.9, - optional: true - }, - { - label: 'Tool System Prompt', - name: 'toolSystemPromptTemplate', - type: 'string', - rows: 4, - description: `Under the hood, Ollama's JSON mode is being used to constrain output to JSON. Output JSON will contains two keys: tool and tool_input fields. We then parse it to execute the tool. Because different models have different strengths, it may be helpful to pass in your own system prompt.`, - warning: `Prompt must always contains {tools} and instructions to respond with a JSON object with tool and tool_input fields`, - default: DEFAULT_TOOL_SYSTEM_TEMPLATE, - placeholder: DEFAULT_TOOL_SYSTEM_TEMPLATE, - additionalParams: true, - optional: true - }, - { - label: 'Top P', - name: 'topP', - type: 'number', - description: - 'Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9). Refer to docs for more details', - step: 0.1, - optional: true, - additionalParams: true - }, - { - label: 'Top K', - name: 'topK', - type: 'number', - description: - 'Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40). Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Mirostat', - name: 'mirostat', - type: 'number', - description: - 'Enable Mirostat sampling for controlling perplexity. (default: 0, 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0). Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Mirostat ETA', - name: 'mirostatEta', - type: 'number', - description: - 'Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1) Refer to docs for more details', - step: 0.1, - optional: true, - additionalParams: true - }, - { - label: 'Mirostat TAU', - name: 'mirostatTau', - type: 'number', - description: - 'Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0) Refer to docs for more details', - step: 0.1, - optional: true, - additionalParams: true - }, - { - label: 'Context Window Size', - name: 'numCtx', - type: 'number', - description: - 'Sets the size of the context window used to generate the next token. (Default: 2048) Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Number of GQA groups', - name: 'numGqa', - type: 'number', - description: - 'The number of GQA groups in the transformer layer. Required for some models, for example it is 8 for llama2:70b. Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Number of GPU', - name: 'numGpu', - type: 'number', - description: - 'The number of layers to send to the GPU(s). On macOS it defaults to 1 to enable metal support, 0 to disable. Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Number of Thread', - name: 'numThread', - type: 'number', - description: - 'Sets the number of threads to use during computation. By default, Ollama will detect this for optimal performance. It is recommended to set this value to the number of physical CPU cores your system has (as opposed to the logical number of cores). Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Repeat Last N', - name: 'repeatLastN', - type: 'number', - description: - 'Sets how far back for the model to look back to prevent repetition. (Default: 64, 0 = disabled, -1 = num_ctx). Refer to docs for more details', - step: 1, - optional: true, - additionalParams: true - }, - { - label: 'Repeat Penalty', - name: 'repeatPenalty', - type: 'number', - description: - 'Sets how strongly to penalize repetitions. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. (Default: 1.1). Refer to docs for more details', - step: 0.1, - optional: true, - additionalParams: true - }, - { - label: 'Stop Sequence', - name: 'stop', - type: 'string', - rows: 4, - placeholder: 'AI assistant:', - description: - 'Sets the stop sequences to use. Use comma to seperate different sequences. Refer to docs for more details', - optional: true, - additionalParams: true - }, - { - label: 'Tail Free Sampling', - name: 'tfsZ', - type: 'number', - description: - 'Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (Default: 1). Refer to docs for more details', - step: 0.1, - optional: true, - additionalParams: true - } - ] - } - - async init(nodeData: INodeData): Promise { - const temperature = nodeData.inputs?.temperature as string - const baseUrl = nodeData.inputs?.baseUrl as string - const modelName = nodeData.inputs?.modelName as string - const topP = nodeData.inputs?.topP as string - const topK = nodeData.inputs?.topK as string - const mirostat = nodeData.inputs?.mirostat as string - const mirostatEta = nodeData.inputs?.mirostatEta as string - const mirostatTau = nodeData.inputs?.mirostatTau as string - const numCtx = nodeData.inputs?.numCtx as string - const numGqa = nodeData.inputs?.numGqa as string - const numGpu = nodeData.inputs?.numGpu as string - const numThread = nodeData.inputs?.numThread as string - const repeatLastN = nodeData.inputs?.repeatLastN as string - const repeatPenalty = nodeData.inputs?.repeatPenalty as string - const stop = nodeData.inputs?.stop as string - const tfsZ = nodeData.inputs?.tfsZ as string - const toolSystemPromptTemplate = nodeData.inputs?.toolSystemPromptTemplate as string - - const cache = nodeData.inputs?.cache as BaseCache - - const obj: OllamaFunctionsInput = { - baseUrl, - temperature: parseFloat(temperature), - model: modelName, - toolSystemPromptTemplate: toolSystemPromptTemplate ? toolSystemPromptTemplate : DEFAULT_TOOL_SYSTEM_TEMPLATE - } - - if (topP) obj.topP = parseFloat(topP) - if (topK) obj.topK = parseFloat(topK) - if (mirostat) obj.mirostat = parseFloat(mirostat) - if (mirostatEta) obj.mirostatEta = parseFloat(mirostatEta) - if (mirostatTau) obj.mirostatTau = parseFloat(mirostatTau) - if (numCtx) obj.numCtx = parseFloat(numCtx) - if (numGqa) obj.numGqa = parseFloat(numGqa) - if (numGpu) obj.numGpu = parseFloat(numGpu) - if (numThread) obj.numThread = parseFloat(numThread) - if (repeatLastN) obj.repeatLastN = parseFloat(repeatLastN) - if (repeatPenalty) obj.repeatPenalty = parseFloat(repeatPenalty) - if (tfsZ) obj.tfsZ = parseFloat(tfsZ) - if (stop) { - const stopSequences = stop.split(',') - obj.stop = stopSequences - } - if (cache) obj.cache = cache - - const model = new OllamaFunctions(obj) - return model - } -} - -interface ChatOllamaFunctionsCallOptions extends BaseFunctionCallOptions {} - -type OllamaFunctionsInput = Partial & - BaseChatModelParams & { - llm?: OllamaChat - toolSystemPromptTemplate?: string - } - -class OllamaFunctions extends BaseChatModel { - llm: OllamaChat - - fields?: OllamaFunctionsInput - - toolSystemPromptTemplate: string = DEFAULT_TOOL_SYSTEM_TEMPLATE - - protected defaultResponseFunction = { - name: '__conversational_response', - description: 'Respond conversationally if no other tools should be called for a given query.', - parameters: { - type: 'object', - properties: { - response: { - type: 'string', - description: 'Conversational response to the user.' - } - }, - required: ['response'] - } - } - - static lc_name(): string { - return 'OllamaFunctions' - } - - constructor(fields?: OllamaFunctionsInput) { - super(fields ?? {}) - this.fields = fields - this.llm = fields?.llm ?? new OllamaChat({ ...fields, format: 'json' }) - this.toolSystemPromptTemplate = fields?.toolSystemPromptTemplate ?? this.toolSystemPromptTemplate - } - - invocationParams() { - return this.llm.invocationParams() - } - - /** @ignore */ - _identifyingParams() { - return this.llm._identifyingParams() - } - - async _generate( - messages: BaseMessage[], - options: this['ParsedCallOptions'], - runManager?: CallbackManagerForLLMRun | undefined - ): Promise { - let functions = options.functions ?? [] - if (options.function_call !== undefined) { - functions = functions.filter((fn) => fn.name === options.function_call?.name) - if (!functions.length) { - throw new Error(`If "function_call" is specified, you must also pass a matching function in "functions".`) - } - } else if (functions.length === 0) { - functions.push(this.defaultResponseFunction) - } - const systemPromptTemplate = SystemMessagePromptTemplate.fromTemplate(this.toolSystemPromptTemplate) - const systemMessage = await systemPromptTemplate.format({ - tools: JSON.stringify(functions, null, 2) - }) - - let generatedMessages = [systemMessage, ...messages] - let isToolResponse = false - if ( - messages.length > 3 && - messages[messages.length - 1]._getType() === 'tool' && - functions.length && - messages[messages.length - 1].additional_kwargs?.name === functions[0].name - ) { - const lastToolQuestion = messages[messages.length - 3].content - const lastToolResp = messages.pop()?.content - // Pop the message again to get rid of tool call message - messages.pop()?.content - const humanMessage = new HumanMessage({ - content: `Given user question: ${lastToolQuestion} and answer: ${lastToolResp}\n\nWrite a natural language response` - }) - generatedMessages = [...messages, humanMessage] - isToolResponse = true - this.llm = new OllamaChat({ ...this.fields }) - } - const chatResult = await this.llm._generate(generatedMessages, options, runManager) - const chatGenerationContent = chatResult.generations[0].message.content - - if (typeof chatGenerationContent !== 'string') { - throw new Error('OllamaFunctions does not support non-string output.') - } - - if (isToolResponse) { - return { - generations: [ - { - message: new AIMessage({ - content: chatGenerationContent - }), - text: chatGenerationContent - } - ] - } - } - - let parsedChatResult - try { - parsedChatResult = JSON.parse(chatGenerationContent) - } catch (e) { - throw new Error(`"${this.llm.model}" did not respond with valid JSON. Please try again.`) - } - - const calledToolName = parsedChatResult.tool - const calledToolArguments = parsedChatResult.tool_input - const calledTool = functions.find((fn) => fn.name === calledToolName) - if (calledTool === undefined) { - throw new Error(`Failed to parse a function call from ${this.llm.model} output: ${chatGenerationContent}`) - } - - if (calledTool.name === this.defaultResponseFunction.name) { - return { - generations: [ - { - message: new AIMessage({ - content: calledToolArguments.response - }), - text: calledToolArguments.response - } - ] - } - } - - const responseMessageWithFunctions = new AIMessage({ - content: '', - tool_calls: [ - { - name: calledToolName, - args: calledToolArguments || {} - } - ], - invalid_tool_calls: [], - additional_kwargs: { - function_call: { - name: calledToolName, - arguments: calledToolArguments ? JSON.stringify(calledToolArguments) : '' - }, - tool_calls: [ - { - id: Date.now().toString(), - type: 'function', - function: { - name: calledToolName, - arguments: calledToolArguments ? JSON.stringify(calledToolArguments) : '' - } - } - ] - } - }) - - return { - generations: [{ message: responseMessageWithFunctions, text: '' }] - } - } - - //@ts-ignore - override bindTools( - tools: StructuredToolInterface[], - kwargs?: Partial - ): RunnableInterface { - return this.bind({ - functions: tools.map((tool) => convertToOpenAIFunction(tool)), - ...kwargs - } as Partial) - } - - _llmType(): string { - return 'ollama_functions' - } - - /** @ignore */ - _combineLLMOutput() { - return [] - } -} - -export interface ChatOllamaInput extends OllamaInput {} - -interface ChatOllamaCallOptions extends BaseLanguageModelCallOptions {} - -class OllamaChat extends SimpleChatModel implements ChatOllamaInput { - static lc_name() { - return 'ChatOllama' - } - - lc_serializable = true - - model = 'llama2' - - baseUrl = 'http://localhost:11434' - - keepAlive = '5m' - - embeddingOnly?: boolean - - f16KV?: boolean - - frequencyPenalty?: number - - headers?: Record - - logitsAll?: boolean - - lowVram?: boolean - - mainGpu?: number - - mirostat?: number - - mirostatEta?: number - - mirostatTau?: number - - numBatch?: number - - numCtx?: number - - numGpu?: number - - numGqa?: number - - numKeep?: number - - numPredict?: number - - numThread?: number - - penalizeNewline?: boolean - - presencePenalty?: number - - repeatLastN?: number - - repeatPenalty?: number - - ropeFrequencyBase?: number - - ropeFrequencyScale?: number - - temperature?: number - - stop?: string[] - - tfsZ?: number - - topK?: number - - topP?: number - - typicalP?: number - - useMLock?: boolean - - useMMap?: boolean - - vocabOnly?: boolean - - format?: StringWithAutocomplete<'json'> - - constructor(fields: OllamaInput & BaseChatModelParams) { - super(fields) - this.model = fields.model ?? this.model - this.baseUrl = fields.baseUrl?.endsWith('/') ? fields.baseUrl.slice(0, -1) : fields.baseUrl ?? this.baseUrl - this.keepAlive = fields.keepAlive ?? this.keepAlive - this.embeddingOnly = fields.embeddingOnly - this.f16KV = fields.f16KV - this.frequencyPenalty = fields.frequencyPenalty - this.headers = fields.headers - this.logitsAll = fields.logitsAll - this.lowVram = fields.lowVram - this.mainGpu = fields.mainGpu - this.mirostat = fields.mirostat - this.mirostatEta = fields.mirostatEta - this.mirostatTau = fields.mirostatTau - this.numBatch = fields.numBatch - this.numCtx = fields.numCtx - this.numGpu = fields.numGpu - this.numGqa = fields.numGqa - this.numKeep = fields.numKeep - this.numPredict = fields.numPredict - this.numThread = fields.numThread - this.penalizeNewline = fields.penalizeNewline - this.presencePenalty = fields.presencePenalty - this.repeatLastN = fields.repeatLastN - this.repeatPenalty = fields.repeatPenalty - this.ropeFrequencyBase = fields.ropeFrequencyBase - this.ropeFrequencyScale = fields.ropeFrequencyScale - this.temperature = fields.temperature - this.stop = fields.stop - this.tfsZ = fields.tfsZ - this.topK = fields.topK - this.topP = fields.topP - this.typicalP = fields.typicalP - this.useMLock = fields.useMLock - this.useMMap = fields.useMMap - this.vocabOnly = fields.vocabOnly - this.format = fields.format - } - - _llmType() { - return 'ollama' - } - - /** - * A method that returns the parameters for an Ollama API call. It - * includes model and options parameters. - * @param options Optional parsed call options. - * @returns An object containing the parameters for an Ollama API call. - */ - invocationParams(options?: this['ParsedCallOptions']) { - return { - model: this.model, - format: this.format, - keep_alive: this.keepAlive, - options: { - embedding_only: this.embeddingOnly, - f16_kv: this.f16KV, - frequency_penalty: this.frequencyPenalty, - logits_all: this.logitsAll, - low_vram: this.lowVram, - main_gpu: this.mainGpu, - mirostat: this.mirostat, - mirostat_eta: this.mirostatEta, - mirostat_tau: this.mirostatTau, - num_batch: this.numBatch, - num_ctx: this.numCtx, - num_gpu: this.numGpu, - num_gqa: this.numGqa, - num_keep: this.numKeep, - num_predict: this.numPredict, - num_thread: this.numThread, - penalize_newline: this.penalizeNewline, - presence_penalty: this.presencePenalty, - repeat_last_n: this.repeatLastN, - repeat_penalty: this.repeatPenalty, - rope_frequency_base: this.ropeFrequencyBase, - rope_frequency_scale: this.ropeFrequencyScale, - temperature: this.temperature, - stop: options?.stop ?? this.stop, - tfs_z: this.tfsZ, - top_k: this.topK, - top_p: this.topP, - typical_p: this.typicalP, - use_mlock: this.useMLock, - use_mmap: this.useMMap, - vocab_only: this.vocabOnly - } - } - } - - _combineLLMOutput() { - return {} - } - - /** @deprecated */ - async *_streamResponseChunksLegacy( - input: BaseMessage[], - options: this['ParsedCallOptions'], - runManager?: CallbackManagerForLLMRun - ): AsyncGenerator { - const stream = createOllamaGenerateStream( - this.baseUrl, - { - ...this.invocationParams(options), - prompt: this._formatMessagesAsPrompt(input) - }, - { - ...options, - headers: this.headers - } - ) - for await (const chunk of stream) { - if (!chunk.done) { - yield new ChatGenerationChunk({ - text: chunk.response, - message: new AIMessageChunk({ content: chunk.response }) - }) - await runManager?.handleLLMNewToken(chunk.response ?? '') - } else { - yield new ChatGenerationChunk({ - text: '', - message: new AIMessageChunk({ content: '' }), - generationInfo: { - model: chunk.model, - total_duration: chunk.total_duration, - load_duration: chunk.load_duration, - prompt_eval_count: chunk.prompt_eval_count, - prompt_eval_duration: chunk.prompt_eval_duration, - eval_count: chunk.eval_count, - eval_duration: chunk.eval_duration - } - }) - } - } - } - - async *_streamResponseChunks( - input: BaseMessage[], - options: this['ParsedCallOptions'], - runManager?: CallbackManagerForLLMRun - ): AsyncGenerator { - try { - const stream = await this.caller.call(async () => - createOllamaChatStream( - this.baseUrl, - { - ...this.invocationParams(options), - messages: this._convertMessagesToOllamaMessages(input) - }, - { - ...options, - headers: this.headers - } - ) - ) - for await (const chunk of stream) { - if (!chunk.done) { - yield new ChatGenerationChunk({ - text: chunk.message.content, - message: new AIMessageChunk({ content: chunk.message.content }) - }) - await runManager?.handleLLMNewToken(chunk.message.content ?? '') - } else { - yield new ChatGenerationChunk({ - text: '', - message: new AIMessageChunk({ content: '' }), - generationInfo: { - model: chunk.model, - total_duration: chunk.total_duration, - load_duration: chunk.load_duration, - prompt_eval_count: chunk.prompt_eval_count, - prompt_eval_duration: chunk.prompt_eval_duration, - eval_count: chunk.eval_count, - eval_duration: chunk.eval_duration - } - }) - } - } - } catch (e: any) { - if (e.response?.status === 404) { - console.warn( - '[WARNING]: It seems you are using a legacy version of Ollama. Please upgrade to a newer version for better chat support.' - ) - yield* this._streamResponseChunksLegacy(input, options, runManager) - } else { - throw e - } - } - } - - protected _convertMessagesToOllamaMessages(messages: BaseMessage[]): OllamaMessage[] { - return messages.map((message) => { - let role - if (message._getType() === 'human') { - role = 'user' - } else if (message._getType() === 'ai' || message._getType() === 'tool') { - role = 'assistant' - } else if (message._getType() === 'system') { - role = 'system' - } else { - throw new Error(`Unsupported message type for Ollama: ${message._getType()}`) - } - let content = '' - const images = [] - if (typeof message.content === 'string') { - content = message.content - } else { - for (const contentPart of message.content) { - if (contentPart.type === 'text') { - content = `${content}\n${contentPart.text}` - } else if (contentPart.type === 'image_url' && typeof contentPart.image_url === 'string') { - const imageUrlComponents = contentPart.image_url.split(',') - // Support both data:image/jpeg;base64, format as well - images.push(imageUrlComponents[1] ?? imageUrlComponents[0]) - } else { - throw new Error( - `Unsupported message content type. Must either have type "text" or type "image_url" with a string "image_url" field.` - ) - } - } - } - return { - role, - content, - images - } - }) - } - - /** @deprecated */ - protected _formatMessagesAsPrompt(messages: BaseMessage[]): string { - const formattedMessages = messages - .map((message) => { - let messageText - if (message._getType() === 'human') { - messageText = `[INST] ${message.content} [/INST]` - } else if (message._getType() === 'ai') { - messageText = message.content - } else if (message._getType() === 'system') { - messageText = `<> ${message.content} <>` - } else if (ChatMessage.isInstance(message)) { - messageText = `\n\n${message.role[0].toUpperCase()}${message.role.slice(1)}: ${message.content}` - } else { - console.warn(`Unsupported message type passed to Ollama: "${message._getType()}"`) - messageText = '' - } - return messageText - }) - .join('\n') - return formattedMessages - } - - /** @ignore */ - async _call(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): Promise { - const chunks = [] - for await (const chunk of this._streamResponseChunks(messages, options, runManager)) { - chunks.push(chunk.message.content) - } - return chunks.join('') - } -} - -module.exports = { nodeClass: ChatOllamaFunction_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatOllamaFunction/Ollama.svg b/packages/components/nodes/chatmodels/ChatOllamaFunction/Ollama.svg deleted file mode 100644 index 2dc8df5311e..00000000000 --- a/packages/components/nodes/chatmodels/ChatOllamaFunction/Ollama.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatOllamaFunction/utils.ts b/packages/components/nodes/chatmodels/ChatOllamaFunction/utils.ts deleted file mode 100644 index 4947b9d97a2..00000000000 --- a/packages/components/nodes/chatmodels/ChatOllamaFunction/utils.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { IterableReadableStream } from '@langchain/core/utils/stream' -import type { StringWithAutocomplete } from '@langchain/core/utils/types' -import { BaseLanguageModelCallOptions } from '@langchain/core/language_models/base' - -export interface OllamaInput { - embeddingOnly?: boolean - f16KV?: boolean - frequencyPenalty?: number - headers?: Record - keepAlive?: string - logitsAll?: boolean - lowVram?: boolean - mainGpu?: number - model?: string - baseUrl?: string - mirostat?: number - mirostatEta?: number - mirostatTau?: number - numBatch?: number - numCtx?: number - numGpu?: number - numGqa?: number - numKeep?: number - numPredict?: number - numThread?: number - penalizeNewline?: boolean - presencePenalty?: number - repeatLastN?: number - repeatPenalty?: number - ropeFrequencyBase?: number - ropeFrequencyScale?: number - temperature?: number - stop?: string[] - tfsZ?: number - topK?: number - topP?: number - typicalP?: number - useMLock?: boolean - useMMap?: boolean - vocabOnly?: boolean - format?: StringWithAutocomplete<'json'> -} - -export interface OllamaRequestParams { - model: string - format?: StringWithAutocomplete<'json'> - images?: string[] - options: { - embedding_only?: boolean - f16_kv?: boolean - frequency_penalty?: number - logits_all?: boolean - low_vram?: boolean - main_gpu?: number - mirostat?: number - mirostat_eta?: number - mirostat_tau?: number - num_batch?: number - num_ctx?: number - num_gpu?: number - num_gqa?: number - num_keep?: number - num_thread?: number - num_predict?: number - penalize_newline?: boolean - presence_penalty?: number - repeat_last_n?: number - repeat_penalty?: number - rope_frequency_base?: number - rope_frequency_scale?: number - temperature?: number - stop?: string[] - tfs_z?: number - top_k?: number - top_p?: number - typical_p?: number - use_mlock?: boolean - use_mmap?: boolean - vocab_only?: boolean - } -} - -export type OllamaMessage = { - role: StringWithAutocomplete<'user' | 'assistant' | 'system'> - content: string - images?: string[] -} - -export interface OllamaGenerateRequestParams extends OllamaRequestParams { - prompt: string -} - -export interface OllamaChatRequestParams extends OllamaRequestParams { - messages: OllamaMessage[] -} - -export type BaseOllamaGenerationChunk = { - model: string - created_at: string - done: boolean - total_duration?: number - load_duration?: number - prompt_eval_count?: number - prompt_eval_duration?: number - eval_count?: number - eval_duration?: number -} - -export type OllamaGenerationChunk = BaseOllamaGenerationChunk & { - response: string -} - -export type OllamaChatGenerationChunk = BaseOllamaGenerationChunk & { - message: OllamaMessage -} - -export type OllamaCallOptions = BaseLanguageModelCallOptions & { - headers?: Record -} - -async function* createOllamaStream(url: string, params: OllamaRequestParams, options: OllamaCallOptions) { - let formattedUrl = url - if (formattedUrl.startsWith('http://localhost:')) { - // Node 18 has issues with resolving "localhost" - // See https://github.com/node-fetch/node-fetch/issues/1624 - formattedUrl = formattedUrl.replace('http://localhost:', 'http://127.0.0.1:') - } - const response = await fetch(formattedUrl, { - method: 'POST', - body: JSON.stringify(params), - headers: { - 'Content-Type': 'application/json', - ...options.headers - }, - signal: options.signal - }) - if (!response.ok) { - let error - const responseText = await response.text() - try { - const json = JSON.parse(responseText) - error = new Error(`Ollama call failed with status code ${response.status}: ${json.error}`) - } catch (e) { - error = new Error(`Ollama call failed with status code ${response.status}: ${responseText}`) - } - ;(error as any).response = response - throw error - } - if (!response.body) { - throw new Error('Could not begin Ollama stream. Please check the given URL and try again.') - } - - const stream = IterableReadableStream.fromReadableStream(response.body) - - const decoder = new TextDecoder() - let extra = '' - for await (const chunk of stream) { - const decoded = extra + decoder.decode(chunk) - const lines = decoded.split('\n') - extra = lines.pop() || '' - for (const line of lines) { - try { - yield JSON.parse(line) - } catch (e) { - console.warn(`Received a non-JSON parseable chunk: ${line}`) - } - } - } -} - -export async function* createOllamaGenerateStream( - baseUrl: string, - params: OllamaGenerateRequestParams, - options: OllamaCallOptions -): AsyncGenerator { - yield* createOllamaStream(`${baseUrl}/api/generate`, params, options) -} - -export async function* createOllamaChatStream( - baseUrl: string, - params: OllamaChatRequestParams, - options: OllamaCallOptions -): AsyncGenerator { - yield* createOllamaStream(`${baseUrl}/api/chat`, params, options) -} diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts index e8378a806ca..c893d727896 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts @@ -1,11 +1,10 @@ -import type { ClientOptions } from 'openai' -import { ChatOpenAI as LangchainChatOpenAI, OpenAIChatInput, AzureOpenAIInput, LegacyOpenAIInput } from '@langchain/openai' +import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields, OpenAIClient } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' -import { BaseChatModelParams } from '@langchain/core/language_models/chat_models' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { ChatOpenAI } from './FlowiseChatOpenAI' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' +import { HttpsProxyAgent } from 'https-proxy-agent' class ChatOpenAI_ChatModels implements INode { label: string @@ -22,7 +21,7 @@ class ChatOpenAI_ChatModels implements INode { constructor() { this.label = 'ChatOpenAI' this.name = 'chatOpenAI' - this.version = 6.0 + this.version = 8.1 this.type = 'ChatOpenAI' this.icon = 'openai.svg' this.category = 'Chat Models' @@ -46,7 +45,7 @@ class ChatOpenAI_ChatModels implements INode { name: 'modelName', type: 'asyncOptions', loadMethod: 'listModels', - default: 'gpt-3.5-turbo' + default: 'gpt-4o-mini' }, { label: 'Temperature', @@ -56,6 +55,14 @@ class ChatOpenAI_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Tokens', name: 'maxTokens', @@ -96,6 +103,24 @@ class ChatOpenAI_ChatModels implements INode { optional: true, additionalParams: true }, + { + label: 'Strict Tool Calling', + name: 'strictToolCalling', + type: 'boolean', + description: + 'Whether the model supports the `strict` argument when passing in tools. If not specified, the `strict` argument will not be passed to OpenAI.', + optional: true, + additionalParams: true + }, + { + label: 'Stop Sequence', + name: 'stopSequence', + type: 'string', + rows: 4, + optional: true, + description: 'List of stop words to use when generating. Use comma to separate multiple stop words.', + additionalParams: true + }, { label: 'BasePath', name: 'basepath', @@ -103,6 +128,13 @@ class ChatOpenAI_ChatModels implements INode { optional: true, additionalParams: true }, + { + label: 'Proxy Url', + name: 'proxyUrl', + type: 'string', + optional: true, + additionalParams: true + }, { label: 'BaseOptions', name: 'baseOptions', @@ -115,7 +147,7 @@ class ChatOpenAI_ChatModels implements INode { name: 'allowImageUploads', type: 'boolean', description: - 'Automatically uses gpt-4-vision-preview when image is being uploaded from chat. Only works with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent', + 'Allow image input. Refer to the docs for more details.', default: false, optional: true }, @@ -141,6 +173,29 @@ class ChatOpenAI_ChatModels implements INode { default: 'low', optional: false, additionalParams: true + }, + { + label: 'Reasoning Effort', + description: 'Constrains effort on reasoning for reasoning models. Only applicable for o1 and o3 models.', + name: 'reasoningEffort', + type: 'options', + options: [ + { + label: 'Low', + name: 'low' + }, + { + label: 'Medium', + name: 'medium' + }, + { + label: 'High', + name: 'high' + } + ], + default: 'medium', + optional: false, + additionalParams: true } ] } @@ -160,9 +215,13 @@ class ChatOpenAI_ChatModels implements INode { const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string const presencePenalty = nodeData.inputs?.presencePenalty as string const timeout = nodeData.inputs?.timeout as string + const stopSequence = nodeData.inputs?.stopSequence as string const streaming = nodeData.inputs?.streaming as boolean + const strictToolCalling = nodeData.inputs?.strictToolCalling as boolean const basePath = nodeData.inputs?.basepath as string + const proxyUrl = nodeData.inputs?.proxyUrl as string const baseOptions = nodeData.inputs?.baseOptions + const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.Chat.ChatCompletionReasoningEffort const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean const imageResolution = nodeData.inputs?.imageResolution as string @@ -175,21 +234,30 @@ class ChatOpenAI_ChatModels implements INode { const cache = nodeData.inputs?.cache as BaseCache - const obj: Partial & - Partial & - BaseChatModelParams & { configuration?: ClientOptions & LegacyOpenAIInput } = { + const obj: ChatOpenAIFields = { temperature: parseFloat(temperature), modelName, openAIApiKey, streaming: streaming ?? true } + if (modelName.includes('o3')) { + delete obj.temperature + } + if ((modelName.includes('o1') || modelName.includes('o3')) && reasoningEffort) { + obj.reasoningEffort = reasoningEffort + } if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) if (topP) obj.topP = parseFloat(topP) if (frequencyPenalty) obj.frequencyPenalty = parseFloat(frequencyPenalty) if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty) if (timeout) obj.timeout = parseInt(timeout, 10) if (cache) obj.cache = cache + if (stopSequence) { + const stopSequenceArray = stopSequence.split(',').map((item) => item.trim()) + obj.stop = stopSequenceArray + } + if (strictToolCalling) obj.supportsStrictToolCalling = strictToolCalling let parsedBaseOptions: any | undefined = undefined @@ -204,7 +272,14 @@ class ChatOpenAI_ChatModels implements INode { if (basePath || parsedBaseOptions) { obj.configuration = { baseURL: basePath, - baseOptions: parsedBaseOptions + defaultHeaders: parsedBaseOptions + } + } + + if (proxyUrl) { + obj.configuration = { + ...obj?.configuration, + httpAgent: new HttpsProxyAgent(proxyUrl) } } diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts index 0065a895c64..adb57f31289 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts @@ -1,6 +1,4 @@ -import type { ClientOptions } from 'openai' -import { ChatOpenAI as LangchainChatOpenAI, OpenAIChatInput, LegacyOpenAIInput, AzureOpenAIInput } from '@langchain/openai' -import { BaseChatModelParams } from '@langchain/core/language_models/chat_models' +import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { IMultiModalOption, IVisionChatModal } from '../../../src' export class ChatOpenAI extends LangchainChatOpenAI implements IVisionChatModal { @@ -9,15 +7,8 @@ export class ChatOpenAI extends LangchainChatOpenAI implements IVisionChatModal multiModalOption: IMultiModalOption id: string - constructor( - id: string, - fields?: Partial & - Partial & - BaseChatModelParams & { configuration?: ClientOptions & LegacyOpenAIInput }, - /** @deprecated */ - configuration?: ClientOptions & LegacyOpenAIInput - ) { - super(fields, configuration) + constructor(id: string, fields?: ChatOpenAIFields) { + super(fields) this.id = id this.configuredModel = fields?.modelName ?? '' this.configuredMaxToken = fields?.maxTokens @@ -33,9 +24,6 @@ export class ChatOpenAI extends LangchainChatOpenAI implements IVisionChatModal } setVisionModel(): void { - if (this.modelName !== 'gpt-4-turbo' && !this.modelName.includes('vision')) { - this.modelName = 'gpt-4-turbo' - this.maxTokens = this.configuredMaxToken ? this.configuredMaxToken : 1024 - } + // pass } } diff --git a/packages/components/nodes/chatmodels/ChatOpenAICustom/ChatOpenAICustom.ts b/packages/components/nodes/chatmodels/ChatOpenAICustom/ChatOpenAICustom.ts index b341bd122b9..b076b461fb1 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAICustom/ChatOpenAICustom.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAICustom/ChatOpenAICustom.ts @@ -1,6 +1,5 @@ -import { ChatOpenAI, OpenAIChatInput } from '@langchain/openai' +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' -import { BaseLLMParams } from '@langchain/core/language_models/llms' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' @@ -19,7 +18,7 @@ class ChatOpenAICustom_ChatModels implements INode { constructor() { this.label = 'ChatOpenAI Custom' this.name = 'chatOpenAICustom' - this.version = 3.0 + this.version = 4.0 this.type = 'ChatOpenAI-Custom' this.icon = 'openai.svg' this.category = 'Chat Models' @@ -53,6 +52,14 @@ class ChatOpenAICustom_ChatModels implements INode { default: 0.9, optional: true }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, { label: 'Max Tokens', name: 'maxTokens', @@ -126,7 +133,7 @@ class ChatOpenAICustom_ChatModels implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const openAIApiKey = getCredentialParam('openAIApiKey', credentialData, nodeData) - const obj: Partial & BaseLLMParams & { openAIApiKey?: string } = { + const obj: ChatOpenAIFields = { temperature: parseFloat(temperature), modelName, openAIApiKey, @@ -149,10 +156,15 @@ class ChatOpenAICustom_ChatModels implements INode { throw new Error("Invalid JSON in the ChatOpenAI's BaseOptions: " + exception) } } - const model = new ChatOpenAI(obj, { - basePath, - baseOptions: parsedBaseOptions - }) + + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new ChatOpenAI(obj) return model } } diff --git a/packages/components/nodes/chatmodels/ChatOpenRouter/ChatOpenRouter.ts b/packages/components/nodes/chatmodels/ChatOpenRouter/ChatOpenRouter.ts new file mode 100644 index 00000000000..4ac3c4f4c39 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatOpenRouter/ChatOpenRouter.ts @@ -0,0 +1,173 @@ +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' +import { BaseCache } from '@langchain/core/caches' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class ChatOpenRouter_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatOpenRouter' + this.name = 'chatOpenRouter' + this.version = 1.0 + this.type = 'ChatOpenRouter' + this.icon = 'openRouter.svg' + this.category = 'Chat Models' + this.description = 'Wrapper around Open Router Inference API' + this.baseClasses = [this.type, ...getBaseClasses(ChatOpenAI)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['openRouterApi'], + optional: true + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model Name', + name: 'modelName', + type: 'string', + placeholder: 'openai/gpt-3.5-turbo' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Top Probability', + name: 'topP', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Frequency Penalty', + name: 'frequencyPenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Presence Penalty', + name: 'presencePenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Timeout', + name: 'timeout', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'BasePath', + name: 'basepath', + type: 'string', + optional: true, + default: 'https://openrouter.ai/api/v1', + additionalParams: true + }, + { + label: 'BaseOptions', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const topP = nodeData.inputs?.topP as string + const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string + const presencePenalty = nodeData.inputs?.presencePenalty as string + const timeout = nodeData.inputs?.timeout as string + const streaming = nodeData.inputs?.streaming as boolean + const basePath = (nodeData.inputs?.basepath as string) || 'https://openrouter.ai/api/v1' + const baseOptions = nodeData.inputs?.baseOptions + const cache = nodeData.inputs?.cache as BaseCache + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const openRouterApiKey = getCredentialParam('openRouterApiKey', credentialData, nodeData) + + const obj: ChatOpenAIFields = { + temperature: parseFloat(temperature), + modelName, + openAIApiKey: openRouterApiKey, + streaming: streaming ?? true + } + + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (topP) obj.topP = parseFloat(topP) + if (frequencyPenalty) obj.frequencyPenalty = parseFloat(frequencyPenalty) + if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty) + if (timeout) obj.timeout = parseInt(timeout, 10) + if (cache) obj.cache = cache + + let parsedBaseOptions: any | undefined = undefined + + if (baseOptions) { + try { + parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + } catch (exception) { + throw new Error("Invalid JSON in the ChatCerebras's BaseOptions: " + exception) + } + } + + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new ChatOpenAI(obj) + return model + } +} + +module.exports = { nodeClass: ChatOpenRouter_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatOpenRouter/openRouter.svg b/packages/components/nodes/chatmodels/ChatOpenRouter/openRouter.svg new file mode 100644 index 00000000000..14188d4cf74 --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatOpenRouter/openRouter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/chatmodels/ChatTogetherAI/ChatTogetherAI.ts b/packages/components/nodes/chatmodels/ChatTogetherAI/ChatTogetherAI.ts index fe36bbe3327..d24a295512e 100644 --- a/packages/components/nodes/chatmodels/ChatTogetherAI/ChatTogetherAI.ts +++ b/packages/components/nodes/chatmodels/ChatTogetherAI/ChatTogetherAI.ts @@ -18,7 +18,7 @@ class ChatTogetherAI_ChatModels implements INode { constructor() { this.label = 'ChatTogetherAI' this.name = 'chatTogetherAI' - this.version = 1.0 + this.version = 2.0 this.type = 'ChatTogetherAI' this.icon = 'togetherai.png' this.category = 'Chat Models' @@ -51,6 +51,13 @@ class ChatTogetherAI_ChatModels implements INode { step: 0.1, default: 0.9, optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true } ] } diff --git a/packages/components/nodes/chatmodels/ChatXAI/ChatXAI.ts b/packages/components/nodes/chatmodels/ChatXAI/ChatXAI.ts new file mode 100644 index 00000000000..a6f41e884ef --- /dev/null +++ b/packages/components/nodes/chatmodels/ChatXAI/ChatXAI.ts @@ -0,0 +1,105 @@ +import { BaseCache } from '@langchain/core/caches' +import { ChatXAI, ChatXAIInput } from '@langchain/xai' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class ChatXAI_ChatModels implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatXAI' + this.name = 'chatXAI' + this.version = 1.0 + this.type = 'ChatXAI' + this.icon = 'xai.png' + this.category = 'Chat Models' + this.description = 'Wrapper around Grok from XAI' + this.baseClasses = [this.type, ...getBaseClasses(ChatXAI)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['xaiApi'] + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model', + name: 'modelName', + type: 'string', + placeholder: 'grok-beta' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.9, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const cache = nodeData.inputs?.cache as BaseCache + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const streaming = nodeData.inputs?.streaming as boolean + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const xaiApiKey = getCredentialParam('xaiApiKey', credentialData, nodeData) + + const obj: ChatXAIInput = { + apiKey: xaiApiKey, + streaming: streaming ?? true, + model: modelName, + temperature: temperature ? parseFloat(temperature) : undefined + } + if (cache) obj.cache = cache + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + + const model = new ChatXAI(obj) + return model + } +} + +module.exports = { nodeClass: ChatXAI_ChatModels } diff --git a/packages/components/nodes/chatmodels/ChatXAI/xai.png b/packages/components/nodes/chatmodels/ChatXAI/xai.png new file mode 100644 index 00000000000..2c2d7e863f1 Binary files /dev/null and b/packages/components/nodes/chatmodels/ChatXAI/xai.png differ diff --git a/packages/components/nodes/chatmodels/Deepseek/Deepseek.ts b/packages/components/nodes/chatmodels/Deepseek/Deepseek.ts new file mode 100644 index 00000000000..5f5e9556339 --- /dev/null +++ b/packages/components/nodes/chatmodels/Deepseek/Deepseek.ts @@ -0,0 +1,195 @@ +import { BaseCache } from '@langchain/core/caches' +import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' +import { getModels, MODEL_TYPE } from '../../../src/modelLoader' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class Deepseek_ChatModels implements INode { + readonly baseURL: string = 'https://api.deepseek.com' + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'ChatDeepseek' + this.name = 'chatDeepseek' + this.version = 1.0 + this.type = 'chatDeepseek' + this.icon = 'deepseek.svg' + this.category = 'Chat Models' + this.description = 'Wrapper around Deepseek large language models that use the Chat endpoint' + this.baseClasses = [this.type, ...getBaseClasses(ChatOpenAI)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['deepseekApi'] + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model Name', + name: 'modelName', + type: 'asyncOptions', + loadMethod: 'listModels', + default: 'deepseek-chat' + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + default: 0.7, + optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true, + additionalParams: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Top Probability', + name: 'topP', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Frequency Penalty', + name: 'frequencyPenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Presence Penalty', + name: 'presencePenalty', + type: 'number', + step: 0.1, + optional: true, + additionalParams: true + }, + { + label: 'Timeout', + name: 'timeout', + type: 'number', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Stop Sequence', + name: 'stopSequence', + type: 'string', + rows: 4, + optional: true, + description: 'List of stop words to use when generating. Use comma to separate multiple stop words.', + additionalParams: true + }, + { + label: 'Base Options', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true, + description: 'Additional options to pass to the Deepseek client. This should be a JSON object.' + } + ] + } + + //@ts-ignore + loadMethods = { + async listModels(): Promise { + return await getModels(MODEL_TYPE.CHAT, 'deepseek') + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const maxTokens = nodeData.inputs?.maxTokens as string + const topP = nodeData.inputs?.topP as string + const frequencyPenalty = nodeData.inputs?.frequencyPenalty as string + const presencePenalty = nodeData.inputs?.presencePenalty as string + const timeout = nodeData.inputs?.timeout as string + const stopSequence = nodeData.inputs?.stopSequence as string + const streaming = nodeData.inputs?.streaming as boolean + const baseOptions = nodeData.inputs?.baseOptions + + if (nodeData.inputs?.credentialId) { + nodeData.credential = nodeData.inputs?.credentialId + } + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const openAIApiKey = getCredentialParam('deepseekApiKey', credentialData, nodeData) + + const cache = nodeData.inputs?.cache as BaseCache + + const obj: ChatOpenAIFields = { + temperature: parseFloat(temperature), + modelName, + openAIApiKey, + streaming: streaming ?? true + } + + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (topP) obj.topP = parseFloat(topP) + if (frequencyPenalty) obj.frequencyPenalty = parseFloat(frequencyPenalty) + if (presencePenalty) obj.presencePenalty = parseFloat(presencePenalty) + if (timeout) obj.timeout = parseInt(timeout, 10) + if (cache) obj.cache = cache + if (stopSequence) { + const stopSequenceArray = stopSequence.split(',').map((item) => item.trim()) + obj.stop = stopSequenceArray + } + + let parsedBaseOptions: any | undefined = undefined + + if (baseOptions) { + try { + parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + if (parsedBaseOptions.baseURL) { + console.warn("The 'baseURL' parameter is not allowed when using the ChatDeepseek node.") + parsedBaseOptions.baseURL = undefined + } + } catch (exception) { + throw new Error('Invalid JSON in the BaseOptions: ' + exception) + } + } + + const model = new ChatOpenAI({ + ...obj, + configuration: { + baseURL: this.baseURL, + ...parsedBaseOptions + } + }) + return model + } +} + +module.exports = { nodeClass: Deepseek_ChatModels } diff --git a/packages/components/nodes/chatmodels/Deepseek/deepseek.svg b/packages/components/nodes/chatmodels/Deepseek/deepseek.svg new file mode 100644 index 00000000000..fff8df94369 --- /dev/null +++ b/packages/components/nodes/chatmodels/Deepseek/deepseek.svg @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/packages/components/nodes/chatmodels/Groq/Groq.ts b/packages/components/nodes/chatmodels/Groq/Groq.ts index 680de7f9580..50b04074523 100644 --- a/packages/components/nodes/chatmodels/Groq/Groq.ts +++ b/packages/components/nodes/chatmodels/Groq/Groq.ts @@ -19,7 +19,7 @@ class Groq_ChatModels implements INode { constructor() { this.label = 'GroqChat' this.name = 'groqChat' - this.version = 3.0 + this.version = 4.0 this.type = 'GroqChat' this.icon = 'groq.png' this.category = 'Chat Models' @@ -53,6 +53,13 @@ class Groq_ChatModels implements INode { step: 0.1, default: 0.9, optional: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: true, + optional: true } ] } diff --git a/packages/components/nodes/documentloaders/API/APILoader.ts b/packages/components/nodes/documentloaders/API/APILoader.ts index 1196b61297f..02b77f789ee 100644 --- a/packages/components/nodes/documentloaders/API/APILoader.ts +++ b/packages/components/nodes/documentloaders/API/APILoader.ts @@ -3,7 +3,8 @@ import { omit } from 'lodash' import { Document } from '@langchain/core/documents' import { TextSplitter } from 'langchain/text_splitter' import { BaseDocumentLoader } from 'langchain/document_loaders/base' -import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { handleEscapeCharacters } from '../../../src/utils' class API_DocumentLoaders implements INode { label: string @@ -15,11 +16,12 @@ class API_DocumentLoaders implements INode { category: string baseClasses: string[] inputs?: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'API Loader' this.name = 'apiLoader' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'api.svg' this.category = 'Document Loaders' @@ -88,6 +90,20 @@ class API_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData): Promise { const headers = nodeData.inputs?.headers as string @@ -97,6 +113,7 @@ class API_DocumentLoaders implements INode { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -161,7 +178,15 @@ class API_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Airtable/Airtable.ts b/packages/components/nodes/documentloaders/Airtable/Airtable.ts index 0828ffc468a..2c11f3f7d5f 100644 --- a/packages/components/nodes/documentloaders/Airtable/Airtable.ts +++ b/packages/components/nodes/documentloaders/Airtable/Airtable.ts @@ -4,7 +4,8 @@ import { Document } from '@langchain/core/documents' import { TextSplitter } from 'langchain/text_splitter' import { BaseDocumentLoader } from 'langchain/document_loaders/base' import { getCredentialData, getCredentialParam } from '../../../src/utils' -import { IDocument, ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { IDocument, ICommonObject, INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' +import { handleEscapeCharacters } from '../../../src' class Airtable_DocumentLoaders implements INode { label: string @@ -17,11 +18,12 @@ class Airtable_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs?: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Airtable' this.name = 'airtable' - this.version = 3.0 + this.version = 3.02 this.type = 'Document' this.icon = 'airtable.svg' this.category = 'Document Loaders' @@ -111,6 +113,30 @@ class Airtable_DocumentLoaders implements INode { placeholder: 'key1, key2, key3.nestedKey1', optional: true, additionalParams: true + }, + { + label: 'Filter By Formula', + name: 'filterByFormula', + type: 'string', + placeholder: 'NOT({Id} = "")', + optional: true, + additionalParams: true, + description: + 'A formula used to filter records. The formula will be evaluated for each record, and if the result is not 0, false, "", NaN, [], or #Error! the record will be included in the response.' + } + ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] } ] } @@ -125,6 +151,7 @@ class Airtable_DocumentLoaders implements INode { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const filterByFormula = nodeData.inputs?.filterByFormula as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -141,7 +168,8 @@ class Airtable_DocumentLoaders implements INode { fields, returnAll, accessToken, - limit: limit ? parseInt(limit, 10) : 100 + limit: limit ? parseInt(limit, 10) : 100, + filterByFormula } const loader = new AirtableLoader(airtableOptions) @@ -191,6 +219,16 @@ class Airtable_DocumentLoaders implements INode { })) } + const output = nodeData.outputs?.output as string + + if (output === 'text') { + let finalText = '' + for (const doc of docs) { + finalText += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finalText, false) + } + return docs } } @@ -204,6 +242,7 @@ interface AirtableLoaderParams { limit?: number returnAll?: boolean textField?: string + filterByFormula?: string } interface AirtableLoaderRequest { @@ -211,6 +250,7 @@ interface AirtableLoaderRequest { view: string | undefined fields?: string[] offset?: string + filterByFormula?: string } interface AirtableLoaderResponse { @@ -239,7 +279,18 @@ class AirtableLoader extends BaseDocumentLoader { public readonly returnAll: boolean - constructor({ baseId, tableId, viewId, fields = [], accessToken, limit = 100, returnAll = false }: AirtableLoaderParams) { + public readonly filterByFormula?: string + + constructor({ + baseId, + tableId, + viewId, + fields = [], + accessToken, + limit = 100, + returnAll = false, + filterByFormula + }: AirtableLoaderParams) { super() this.baseId = baseId this.tableId = tableId @@ -248,6 +299,7 @@ class AirtableLoader extends BaseDocumentLoader { this.accessToken = accessToken this.limit = limit this.returnAll = returnAll + this.filterByFormula = filterByFormula } public async load(): Promise { @@ -310,6 +362,10 @@ class AirtableLoader extends BaseDocumentLoader { data.fields = this.fields } + if (this.filterByFormula) { + data.filterByFormula = this.filterByFormula + } + let response: AirtableLoaderResponse let returnPages: AirtableLoaderPage[] = [] @@ -340,6 +396,10 @@ class AirtableLoader extends BaseDocumentLoader { data.fields = this.fields } + if (this.filterByFormula) { + data.filterByFormula = this.filterByFormula + } + let response: AirtableLoaderResponse let returnPages: AirtableLoaderPage[] = [] do { diff --git a/packages/components/nodes/documentloaders/ApifyWebsiteContentCrawler/ApifyWebsiteContentCrawler.ts b/packages/components/nodes/documentloaders/ApifyWebsiteContentCrawler/ApifyWebsiteContentCrawler.ts index 04f62e28402..41b91ef5dd4 100644 --- a/packages/components/nodes/documentloaders/ApifyWebsiteContentCrawler/ApifyWebsiteContentCrawler.ts +++ b/packages/components/nodes/documentloaders/ApifyWebsiteContentCrawler/ApifyWebsiteContentCrawler.ts @@ -1,6 +1,6 @@ import { omit } from 'lodash' -import { INode, INodeData, INodeParams, ICommonObject } from '../../../src/Interface' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { INode, INodeData, INodeParams, ICommonObject, INodeOutputsValue } from '../../../src/Interface' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' import { TextSplitter } from 'langchain/text_splitter' import { ApifyDatasetLoader } from '@langchain/community/document_loaders/web/apify_dataset' import { Document } from '@langchain/core/documents' @@ -16,16 +16,23 @@ class ApifyWebsiteContentCrawler_DocumentLoaders implements INode { baseClasses: string[] inputs: INodeParams[] credential: INodeParams + outputs: INodeOutputsValue[] constructor() { this.label = 'Apify Website Content Crawler' this.name = 'apifyWebsiteContentCrawler' this.type = 'Document' this.icon = 'apify-symbol-transparent.svg' - this.version = 2.0 + this.version = 3.0 this.category = 'Document Loaders' this.description = 'Load data from Apify Website Content Crawler' this.baseClasses = [this.type] + this.credential = { + label: 'Connect Apify API', + name: 'credential', + type: 'credential', + credentialNames: ['apifyApi'] + } this.inputs = [ { label: 'Text Splitter', @@ -112,18 +119,27 @@ class ApifyWebsiteContentCrawler_DocumentLoaders implements INode { additionalParams: true } ] - this.credential = { - label: 'Connect Apify API', - name: 'credential', - type: 'credential', - credentialNames: ['apifyApi'] - } + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -203,7 +219,15 @@ class ApifyWebsiteContentCrawler_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/BraveSearchAPI/BraveSearchAPI.ts b/packages/components/nodes/documentloaders/BraveSearchAPI/BraveSearchAPI.ts new file mode 100644 index 00000000000..61da9c24f2a --- /dev/null +++ b/packages/components/nodes/documentloaders/BraveSearchAPI/BraveSearchAPI.ts @@ -0,0 +1,165 @@ +import { omit } from 'lodash' +import { ICommonObject, IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { TextSplitter } from 'langchain/text_splitter' +import { BraveSearch } from '@langchain/community/tools/brave_search' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' +import { Document } from '@langchain/core/documents' + +class BraveSearchAPI_DocumentLoaders implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'BraveSearch API Document Loader' + this.name = 'braveSearchApiLoader' + this.version = 2.0 + this.type = 'Document' + this.icon = 'brave.svg' + this.category = 'Document Loaders' + this.description = 'Load and process data from BraveSearch results' + this.baseClasses = [this.type] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + optional: false, + credentialNames: ['braveSearchApi'] + } + this.inputs = [ + { + label: 'Query', + name: 'query', + type: 'string' + }, + { + label: 'Text Splitter', + name: 'textSplitter', + type: 'TextSplitter', + optional: true + }, + { + label: 'Additional Metadata', + name: 'metadata', + type: 'json', + description: 'Additional metadata to be added to the extracted documents', + optional: true, + additionalParams: true + }, + { + label: 'Omit Metadata Keys', + name: 'omitMetadataKeys', + type: 'string', + rows: 4, + description: + 'Each document loader comes with a default set of metadata keys that are extracted from the document. You can use this field to omit some of the default metadata keys. The value should be a list of keys, separated by comma. Use * to omit all metadata keys except the ones you specify in the Additional Metadata field', + placeholder: 'key1, key2, key3.nestedKey1', + optional: true, + additionalParams: true + } + ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const textSplitter = nodeData.inputs?.textSplitter as TextSplitter + const query = nodeData.inputs?.query as string + const metadata = nodeData.inputs?.metadata + const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string + + let omitMetadataKeys: string[] = [] + if (_omitMetadataKeys) { + omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) + } + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const braveApiKey = getCredentialParam('braveApiKey', credentialData, nodeData) + const loader = new BraveSearch({ apiKey: braveApiKey }) + + let docs: IDocument[] = [] + const searchResults = await loader._call(query) // Use _call method for search + const parsedResults = JSON.parse(searchResults) // Parse the JSON string to get documents + + // Format the results to match the expected Document structure + docs = parsedResults.map( + (result: any) => + new Document({ + pageContent: result.snippet, // Assuming snippet is the content + metadata: { + title: result.title, + link: result.link + } + }) + ) + + if (textSplitter) { + docs = await textSplitter.splitDocuments(docs) + } + + if (metadata) { + const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? { + ...parsedMetadata + } + : omit( + { + ...doc.metadata, + ...parsedMetadata + }, + omitMetadataKeys + ) + })) + } else { + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? {} + : omit( + { + ...doc.metadata + }, + omitMetadataKeys + ) + })) + } + + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } + } +} + +module.exports = { nodeClass: BraveSearchAPI_DocumentLoaders } diff --git a/packages/components/nodes/documentloaders/BraveSearchAPI/brave.svg b/packages/components/nodes/documentloaders/BraveSearchAPI/brave.svg new file mode 100644 index 00000000000..b1e233577b7 --- /dev/null +++ b/packages/components/nodes/documentloaders/BraveSearchAPI/brave.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/components/nodes/documentloaders/Cheerio/Cheerio.ts b/packages/components/nodes/documentloaders/Cheerio/Cheerio.ts index 7889d8866e3..851fdd21754 100644 --- a/packages/components/nodes/documentloaders/Cheerio/Cheerio.ts +++ b/packages/components/nodes/documentloaders/Cheerio/Cheerio.ts @@ -4,9 +4,9 @@ import { CheerioWebBaseLoader, WebBaseLoaderParams } from '@langchain/community/ import { Document } from '@langchain/core/documents' import { test } from 'linkifyjs' import { parse } from 'css-what' -import { webCrawl, xmlScrape } from '../../../src' import { SelectorType } from 'cheerio' -import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INodeOutputsValue, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { handleEscapeCharacters, webCrawl, xmlScrape } from '../../../src/utils' class CustomCheerioLoader extends CheerioWebBaseLoader { // Additional parameters for customizing the loader's behavior @@ -58,11 +58,12 @@ class Cheerio_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Cheerio Web Scraper' this.name = 'cheerioWebScraper' - this.version = 1.1 + this.version = 2.0 this.type = 'Document' this.icon = 'cheerio.svg' this.category = 'Document Loaders' @@ -170,6 +171,20 @@ class Cheerio_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -182,6 +197,7 @@ class Cheerio_DocumentLoaders implements INode { const outputParams = { outputFormat, excludeSelector } let limit = parseInt(nodeData.inputs?.limit as string) + const output = nodeData.outputs?.output as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string @@ -287,7 +303,15 @@ class Cheerio_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Confluence/Confluence.ts b/packages/components/nodes/documentloaders/Confluence/Confluence.ts index e148713b053..776d28547b4 100644 --- a/packages/components/nodes/documentloaders/Confluence/Confluence.ts +++ b/packages/components/nodes/documentloaders/Confluence/Confluence.ts @@ -1,8 +1,8 @@ import { omit } from 'lodash' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { ConfluencePagesLoader, ConfluencePagesLoaderParams } from '@langchain/community/document_loaders/web/confluence' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' +import { ICommonObject, INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' class Confluence_DocumentLoaders implements INode { label: string @@ -15,11 +15,12 @@ class Confluence_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Confluence' this.name = 'confluence' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'confluence.svg' this.category = 'Document Loaders' @@ -79,6 +80,20 @@ class Confluence_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -88,6 +103,7 @@ class Confluence_DocumentLoaders implements INode { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -157,7 +173,15 @@ class Confluence_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Csv/Csv.ts b/packages/components/nodes/documentloaders/Csv/Csv.ts index 749c3e5583c..10186cf23a2 100644 --- a/packages/components/nodes/documentloaders/Csv/Csv.ts +++ b/packages/components/nodes/documentloaders/Csv/Csv.ts @@ -1,8 +1,7 @@ -import { omit } from 'lodash' -import { ICommonObject, IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' -import { CSVLoader } from '@langchain/community/document_loaders/fs/csv' -import { getFileFromStorage, handleEscapeCharacters } from '../../../src' +import { CSVLoader } from './CsvLoader' +import { getFileFromStorage, handleDocumentLoaderDocuments, handleDocumentLoaderMetadata, handleDocumentLoaderOutput } from '../../../src' +import { ICommonObject, IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' class Csv_DocumentLoaders implements INode { label: string @@ -19,7 +18,7 @@ class Csv_DocumentLoaders implements INode { constructor() { this.label = 'Csv File' this.name = 'csvFile' - this.version = 2.0 + this.version = 3.0 this.type = 'Document' this.icon = 'csv.svg' this.category = 'Document Loaders' @@ -82,21 +81,11 @@ class Csv_DocumentLoaders implements INode { ] } - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const textSplitter = nodeData.inputs?.textSplitter as TextSplitter + getFiles(nodeData: INodeData) { const csvFileBase64 = nodeData.inputs?.csvFile as string - const columnName = nodeData.inputs?.columnName as string - const metadata = nodeData.inputs?.metadata - const output = nodeData.outputs?.output as string - const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string - let omitMetadataKeys: string[] = [] - if (_omitMetadataKeys) { - omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) - } - - let docs: IDocument[] = [] let files: string[] = [] + let fromStorage: boolean = true if (csvFileBase64.startsWith('FILE-STORAGE::')) { const fileName = csvFileBase64.replace('FILE-STORAGE::', '') @@ -105,20 +94,6 @@ class Csv_DocumentLoaders implements INode { } else { files = [fileName] } - const chatflowid = options.chatflowid - - for (const file of files) { - const fileData = await getFileFromStorage(file, chatflowid) - const blob = new Blob([fileData]) - const loader = new CSVLoader(blob, columnName.trim().length === 0 ? undefined : columnName.trim()) - - if (textSplitter) { - docs = await loader.load() - docs = await textSplitter.splitDocuments(docs) - } else { - docs.push(...(await loader.load())) - } - } } else { if (csvFileBase64.startsWith('[') && csvFileBase64.endsWith(']')) { files = JSON.parse(csvFileBase64) @@ -126,63 +101,49 @@ class Csv_DocumentLoaders implements INode { files = [csvFileBase64] } - for (const file of files) { - const splitDataURI = file.split(',') - splitDataURI.pop() - const bf = Buffer.from(splitDataURI.pop() || '', 'base64') - const blob = new Blob([bf]) - const loader = new CSVLoader(blob, columnName.trim().length === 0 ? undefined : columnName.trim()) - - if (textSplitter) { - docs = await loader.load() - docs = await textSplitter.splitDocuments(docs) - } else { - docs.push(...(await loader.load())) - } - } + fromStorage = false } - if (metadata) { - const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? { - ...parsedMetadata - } - : omit( - { - ...doc.metadata, - ...parsedMetadata - }, - omitMetadataKeys - ) - })) + return { files, fromStorage } + } + + async getFileData(file: string, { chatflowid }: { chatflowid: string }, fromStorage?: boolean) { + if (fromStorage) { + return getFileFromStorage(file, chatflowid) } else { - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? {} - : omit( - { - ...doc.metadata - }, - omitMetadataKeys - ) - })) + const splitDataURI = file.split(',') + splitDataURI.pop() + return Buffer.from(splitDataURI.pop() || '', 'base64') } + } - if (output === 'document') { - return docs - } else { - let finaltext = '' - for (const doc of docs) { - finaltext += `${doc.pageContent}\n` - } - return handleEscapeCharacters(finaltext, false) + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const textSplitter = nodeData.inputs?.textSplitter as TextSplitter + const columnName = nodeData.inputs?.columnName as string + const metadata = nodeData.inputs?.metadata + const output = nodeData.outputs?.output as string + const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + + let docs: IDocument[] = [] + + const chatflowid = options.chatflowid + + const { files, fromStorage } = this.getFiles(nodeData) + + for (const file of files) { + if (!file) continue + + const fileData = await this.getFileData(file, { chatflowid }, fromStorage) + const blob = new Blob([fileData]) + const loader = new CSVLoader(blob, columnName.trim().length === 0 ? undefined : columnName.trim()) + + // use spread instead of push, because it raises RangeError: Maximum call stack size exceeded when too many docs + docs = [...docs, ...(await handleDocumentLoaderDocuments(loader, textSplitter))] } + + docs = handleDocumentLoaderMetadata(docs, _omitMetadataKeys, metadata) + + return handleDocumentLoaderOutput(docs, output) } } diff --git a/packages/components/nodes/documentloaders/Csv/CsvLoader.ts b/packages/components/nodes/documentloaders/Csv/CsvLoader.ts new file mode 100644 index 00000000000..35d4a1fce63 --- /dev/null +++ b/packages/components/nodes/documentloaders/Csv/CsvLoader.ts @@ -0,0 +1,74 @@ +import { TextLoader } from 'langchain/document_loaders/fs/text' +import Papa from 'papaparse' + +type CSVLoaderOptions = { + // Return specifific column from key (string) or index (integer) + column?: string | number + // Force separator (default: auto detect) + separator?: string +} + +/** + * A class that extends the TextLoader class. It represents a document + * loader that loads documents from a CSV file. It has a constructor that + * takes a `filePathOrBlob` parameter representing the path to the CSV + * file or a Blob object, and an optional `options` parameter of type + * `CSVLoaderOptions` or a string representing the column to use as the + * document's pageContent. + */ +export class CSVLoader extends TextLoader { + protected options: CSVLoaderOptions = {} + + constructor(filePathOrBlob: ConstructorParameters[0], options?: CSVLoaderOptions | string) { + super(filePathOrBlob) + + if (typeof options === 'string') { + this.options = { column: options } + } else { + this.options = options ?? this.options + } + } + /** + * A protected method that parses the raw CSV data and returns an array of + * strings representing the pageContent of each document. It uses the + * `papaparse` to parse the CSV data. If + * the `column` option is specified, it checks if the column exists in the + * CSV file and returns the values of that column as the pageContent. If + * the `column` option is not specified, it converts each row of the CSV + * data into key/value pairs and joins them with newline characters. + * @param raw The raw CSV data to be parsed. + * @returns An array of strings representing the pageContent of each document. + */ + async parse(raw: string): Promise { + const { column, separator } = this.options + + const { + data: parsed, + meta: { fields = [] } + } = Papa.parse<{ [K: string]: string }>(raw.trim(), { + delimiter: separator, + header: true + }) + + if (column !== undefined) { + if (!fields.length) { + throw new Error(`Unable to resolve fields from header.`) + } + + let searchIdx = column + + if (typeof column == 'number') { + searchIdx = fields[column] + } + + if (!fields.includes(searchIdx as string)) { + throw new Error(`Column ${column} not found in CSV file.`) + } + + // Note TextLoader will raise an exception if the value is null. + return parsed.map((row) => row[searchIdx]) + } + + return parsed.map((row) => fields.map((key) => `${key.trim() || '_0'}: ${row[key]?.trim()}`).join('\n')) + } +} diff --git a/packages/components/nodes/documentloaders/CustomDocumentLoader/CustomDocumentLoader.ts b/packages/components/nodes/documentloaders/CustomDocumentLoader/CustomDocumentLoader.ts index efc7efa1bd1..ed19a01e731 100644 --- a/packages/components/nodes/documentloaders/CustomDocumentLoader/CustomDocumentLoader.ts +++ b/packages/components/nodes/documentloaders/CustomDocumentLoader/CustomDocumentLoader.ts @@ -1,5 +1,5 @@ import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' -import { NodeVM } from 'vm2' +import { NodeVM } from '@flowiseai/nodevm' import { DataSource } from 'typeorm' import { availableDependencies, defaultAllowBuiltInDep, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' @@ -11,7 +11,6 @@ class CustomDocumentLoader_DocumentLoaders implements INode { type: string icon: string category: string - badge: string baseClasses: string[] inputs: INodeParams[] outputs: INodeOutputsValue[] @@ -107,7 +106,14 @@ class CustomDocumentLoader_DocumentLoaders implements INode { } } - let sandbox: any = { $input: input } + let sandbox: any = { + $input: input, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } sandbox['$vars'] = prepareSandboxVars(variables) sandbox['$flow'] = flow @@ -129,7 +135,10 @@ class CustomDocumentLoader_DocumentLoaders implements INode { require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(nodeVMOptions) diff --git a/packages/components/nodes/documentloaders/DocumentStore/DocStoreLoader.ts b/packages/components/nodes/documentloaders/DocumentStore/DocStoreLoader.ts index decd209d6c3..ceac3a72393 100644 --- a/packages/components/nodes/documentloaders/DocumentStore/DocStoreLoader.ts +++ b/packages/components/nodes/documentloaders/DocumentStore/DocStoreLoader.ts @@ -14,7 +14,6 @@ class DocStore_DocumentLoaders implements INode { baseClasses: string[] inputs: INodeParams[] outputs: INodeOutputsValue[] - badge: string constructor() { this.label = 'Document Store' diff --git a/packages/components/nodes/documentloaders/Docx/Docx.ts b/packages/components/nodes/documentloaders/Docx/Docx.ts index 11dbfffc61d..70ab2c5c747 100644 --- a/packages/components/nodes/documentloaders/Docx/Docx.ts +++ b/packages/components/nodes/documentloaders/Docx/Docx.ts @@ -1,8 +1,8 @@ import { omit } from 'lodash' -import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, IDocument, INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { DocxLoader } from '@langchain/community/document_loaders/fs/docx' -import { getFileFromStorage } from '../../../src' +import { getFileFromStorage, handleEscapeCharacters } from '../../../src' class Docx_DocumentLoaders implements INode { label: string @@ -14,11 +14,12 @@ class Docx_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Docx File' this.name = 'docxFile' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'docx.svg' this.category = 'Document Loaders' @@ -57,6 +58,20 @@ class Docx_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -64,6 +79,7 @@ class Docx_DocumentLoaders implements INode { const docxFileBase64 = nodeData.inputs?.docxFile as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -83,6 +99,7 @@ class Docx_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const blob = new Blob([fileData]) const loader = new DocxLoader(blob) @@ -103,6 +120,7 @@ class Docx_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') @@ -151,7 +169,15 @@ class Docx_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Epub/Epub.ts b/packages/components/nodes/documentloaders/Epub/Epub.ts new file mode 100644 index 00000000000..088d01a4e19 --- /dev/null +++ b/packages/components/nodes/documentloaders/Epub/Epub.ts @@ -0,0 +1,202 @@ +import { omit } from 'lodash' +import { IDocument, ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { TextSplitter } from 'langchain/text_splitter' +import { getFileFromStorage, handleEscapeCharacters, INodeOutputsValue } from '../../../src' +import { EPubLoader } from '@langchain/community/document_loaders/fs/epub' + +import * as fs from 'fs' +import * as path from 'path' +class Epub_DocumentLoaders implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'Epub File' + this.name = 'epubFile' + this.version = 1.0 + this.type = 'Document' + this.icon = 'epub.svg' + this.category = 'Document Loaders' + this.description = 'Load data from EPUB files' + this.baseClasses = [this.type] + + this.inputs = [ + { + label: 'Epub File', + name: 'epubFile', + type: 'file', + fileType: '.epub' + }, + { + label: 'Text Splitter', + name: 'textSplitter', + type: 'TextSplitter', + optional: true + }, + { + label: 'Usage', + name: 'usage', + type: 'options', + options: [ + { + label: 'One document per chapter', + name: 'perChapter' + }, + { + label: 'One document per file', + name: 'perFile' + } + ], + default: 'perChapter' + }, + { + label: 'Additional Metadata', + name: 'metadata', + type: 'json', + description: 'Additional metadata to be added to the extracted documents', + optional: true, + additionalParams: true + }, + { + label: 'Omit Metadata Keys', + name: 'omitMetadataKeys', + type: 'string', + rows: 4, + description: 'Metadata keys to omit, comma-separated', + placeholder: 'key1, key2, key3', + optional: true, + additionalParams: true + } + ] + + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated text from documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const textSplitter = nodeData.inputs?.textSplitter as TextSplitter + const epubFileBase64 = nodeData.inputs?.epubFile as string + const usage = nodeData.inputs?.usage as string + const metadata = nodeData.inputs?.metadata + const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string + + let omitMetadataKeys: string[] = [] + if (_omitMetadataKeys) { + omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) + } + + let docs: IDocument[] = [] + let files: string[] = [] + + const tempDir = path.join(process.cwd(), 'temp_epub_files') + fs.mkdirSync(tempDir, { recursive: true }) + + try { + if (epubFileBase64.startsWith('FILE-STORAGE::')) { + const fileName = epubFileBase64.replace('FILE-STORAGE::', '') + files = fileName.startsWith('[') && fileName.endsWith(']') ? JSON.parse(fileName) : [fileName] + + const chatflowid = options.chatflowid + + for (const file of files) { + if (!file) continue + const fileData = await getFileFromStorage(file, chatflowid) + const tempFilePath = path.join(tempDir, `${Date.now()}_${file}`) + fs.writeFileSync(tempFilePath, fileData) + await this.extractDocs(usage, tempFilePath, textSplitter, docs) + } + } else { + files = epubFileBase64.startsWith('[') && epubFileBase64.endsWith(']') ? JSON.parse(epubFileBase64) : [epubFileBase64] + + for (const file of files) { + if (!file) continue + const splitDataURI = file.split(',') + splitDataURI.pop() + const fileBuffer = Buffer.from(splitDataURI.pop() || '', 'base64') + const tempFilePath = path.join(tempDir, `${Date.now()}_epub_file.epub`) + fs.writeFileSync(tempFilePath, fileBuffer) + await this.extractDocs(usage, tempFilePath, textSplitter, docs) + } + } + + if (metadata) { + const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? { + ...parsedMetadata + } + : omit( + { + ...doc.metadata, + ...parsedMetadata + }, + omitMetadataKeys + ) + })) + } else { + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? {} + : omit( + { + ...doc.metadata + }, + omitMetadataKeys + ) + })) + } + + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } + } catch (error) { + console.error('Error processing EPUB files:', error) + throw error + } finally { + fs.rmSync(tempDir, { recursive: true, force: true }) + } + } + + private async extractDocs(usage: string, filePath: string, textSplitter: TextSplitter, docs: IDocument[]) { + const loader = new EPubLoader(filePath, { splitChapters: usage === 'perChapter' }) + const loadedDocs = await loader.load() + + const processedDocs = textSplitter ? await textSplitter.splitDocuments(loadedDocs) : loadedDocs + + docs.push(...processedDocs) + } +} + +module.exports = { nodeClass: Epub_DocumentLoaders } diff --git a/packages/components/nodes/documentloaders/Epub/epub.svg b/packages/components/nodes/documentloaders/Epub/epub.svg new file mode 100644 index 00000000000..e33f34f56f4 --- /dev/null +++ b/packages/components/nodes/documentloaders/Epub/epub.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/packages/components/nodes/documentloaders/Figma/Figma.ts b/packages/components/nodes/documentloaders/Figma/Figma.ts index cb44e0dfe65..d07c681a2ca 100644 --- a/packages/components/nodes/documentloaders/Figma/Figma.ts +++ b/packages/components/nodes/documentloaders/Figma/Figma.ts @@ -1,6 +1,6 @@ import { omit } from 'lodash' -import { getCredentialData, getCredentialParam } from '../../../src' -import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src' +import { ICommonObject, IDocument, INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' import { FigmaFileLoader, FigmaLoaderParams } from '@langchain/community/document_loaders/web/figma' import { TextSplitter } from 'langchain/text_splitter' @@ -15,11 +15,12 @@ class Figma_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Figma' this.name = 'figma' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'figma.svg' this.category = 'Document Loaders' @@ -80,6 +81,20 @@ class Figma_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -88,6 +103,7 @@ class Figma_DocumentLoaders implements INode { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -146,7 +162,15 @@ class Figma_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/File/File.ts b/packages/components/nodes/documentloaders/File/File.ts new file mode 100644 index 00000000000..2a8bea1a3b7 --- /dev/null +++ b/packages/components/nodes/documentloaders/File/File.ts @@ -0,0 +1,339 @@ +import { omit } from 'lodash' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { TextSplitter } from 'langchain/text_splitter' +import { TextLoader } from 'langchain/document_loaders/fs/text' +import { JSONLinesLoader, JSONLoader } from 'langchain/document_loaders/fs/json' +import { CSVLoader } from '@langchain/community/document_loaders/fs/csv' +import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf' +import { DocxLoader } from '@langchain/community/document_loaders/fs/docx' +import { BaseDocumentLoader } from 'langchain/document_loaders/base' +import { Document } from '@langchain/core/documents' +import { getFileFromStorage } from '../../../src/storageUtils' +import { handleEscapeCharacters, mapMimeTypeToExt } from '../../../src/utils' + +class File_DocumentLoaders implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'File Loader' + this.name = 'fileLoader' + this.version = 2.0 + this.type = 'Document' + this.icon = 'file.svg' + this.category = 'Document Loaders' + this.description = `A generic file loader that can load txt, json, csv, docx, pdf, and other files` + this.baseClasses = [this.type] + this.inputs = [ + { + label: 'File', + name: 'file', + type: 'file', + fileType: '*' + }, + { + label: 'Text Splitter', + name: 'textSplitter', + type: 'TextSplitter', + optional: true + }, + { + label: 'Pdf Usage', + name: 'pdfUsage', + type: 'options', + description: 'Only when loading PDF files', + options: [ + { + label: 'One document per page', + name: 'perPage' + }, + { + label: 'One document per file', + name: 'perFile' + } + ], + default: 'perPage', + optional: true, + additionalParams: true + }, + { + label: 'JSONL Pointer Extraction', + name: 'pointerName', + type: 'string', + description: 'Only when loading JSONL files', + placeholder: '', + optional: true, + additionalParams: true + }, + { + label: 'Additional Metadata', + name: 'metadata', + type: 'json', + description: 'Additional metadata to be added to the extracted documents', + optional: true, + additionalParams: true + }, + { + label: 'Omit Metadata Keys', + name: 'omitMetadataKeys', + type: 'string', + rows: 4, + description: + 'Each document loader comes with a default set of metadata keys that are extracted from the document. You can use this field to omit some of the default metadata keys. The value should be a list of keys, seperated by comma. Use * to omit all metadata keys execept the ones you specify in the Additional Metadata field', + placeholder: 'key1, key2, key3.nestedKey1', + optional: true, + additionalParams: true + } + ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const textSplitter = nodeData.inputs?.textSplitter as TextSplitter + const fileBase64 = nodeData.inputs?.file as string + const metadata = nodeData.inputs?.metadata + const pdfUsage = nodeData.inputs?.pdfUsage + const pointerName = nodeData.inputs?.pointerName as string + const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string + + let omitMetadataKeys: string[] = [] + if (_omitMetadataKeys) { + omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) + } + + let files: string[] = [] + const fileBlobs: { blob: Blob; ext: string }[] = [] + + //FILE-STORAGE::["CONTRIBUTING.md","LICENSE.md","README.md"] + const totalFiles = getOverrideFileInputs(nodeData) || fileBase64 + if (totalFiles.startsWith('FILE-STORAGE::')) { + const fileName = totalFiles.replace('FILE-STORAGE::', '') + if (fileName.startsWith('[') && fileName.endsWith(']')) { + files = JSON.parse(fileName) + } else { + files = [fileName] + } + const chatflowid = options.chatflowid + + // specific to createAttachment to get files from chatId + const retrieveAttachmentChatId = options.retrieveAttachmentChatId + if (retrieveAttachmentChatId) { + for (const file of files) { + if (!file) continue + const fileData = await getFileFromStorage(file, chatflowid, options.chatId) + const blob = new Blob([fileData]) + fileBlobs.push({ blob, ext: file.split('.').pop() || '' }) + } + } else { + for (const file of files) { + if (!file) continue + const fileData = await getFileFromStorage(file, chatflowid) + const blob = new Blob([fileData]) + fileBlobs.push({ blob, ext: file.split('.').pop() || '' }) + } + } + } else { + if (totalFiles.startsWith('[') && totalFiles.endsWith(']')) { + files = JSON.parse(totalFiles) + } else { + files = [totalFiles] + } + + for (const file of files) { + if (!file) continue + const splitDataURI = file.split(',') + splitDataURI.pop() + const bf = Buffer.from(splitDataURI.pop() || '', 'base64') + const blob = new Blob([bf]) + + let extension = '' + // eslint-disable-next-line no-useless-escape + const match = file.match(/^data:([A-Za-z-+\/]+);base64,/) + + if (!match) { + fileBlobs.push({ + blob, + ext: extension + }) + } else { + const mimeType = match[1] + fileBlobs.push({ + blob, + ext: mapMimeTypeToExt(mimeType) + }) + } + } + } + + const loader = new MultiFileLoader(fileBlobs, { + json: (blob) => new JSONLoader(blob), + jsonl: (blob) => new JSONLinesLoader(blob, '/' + pointerName.trim()), + txt: (blob) => new TextLoader(blob), + csv: (blob) => new CSVLoader(blob), + xls: (blob) => new CSVLoader(blob), + xlsx: (blob) => new CSVLoader(blob), + docx: (blob) => new DocxLoader(blob), + doc: (blob) => new DocxLoader(blob), + pdf: (blob) => + pdfUsage === 'perFile' + ? // @ts-ignore + new PDFLoader(blob, { splitPages: false, pdfjs: () => import('pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js') }) + : // @ts-ignore + new PDFLoader(blob, { pdfjs: () => import('pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js') }), + '': (blob) => new TextLoader(blob) + }) + let docs = [] + + if (textSplitter) { + docs = await loader.load() + docs = await textSplitter.splitDocuments(docs) + } else { + docs = await loader.load() + } + + if (metadata) { + const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? { + ...parsedMetadata + } + : omit( + { + ...doc.metadata, + ...parsedMetadata + }, + omitMetadataKeys + ) + })) + } else { + docs = docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? {} + : omit( + { + ...doc.metadata + }, + omitMetadataKeys + ) + })) + } + + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } + } +} + +const getOverrideFileInputs = (nodeData: INodeData) => { + const txtFileBase64 = nodeData.inputs?.txtFile as string + const pdfFileBase64 = nodeData.inputs?.pdfFile as string + const jsonFileBase64 = nodeData.inputs?.jsonFile as string + const csvFileBase64 = nodeData.inputs?.csvFile as string + const jsonlinesFileBase64 = nodeData.inputs?.jsonlinesFile as string + const docxFileBase64 = nodeData.inputs?.docxFile as string + const yamlFileBase64 = nodeData.inputs?.yamlFile as string + + const removePrefix = (storageFile: string): string[] => { + const fileName = storageFile.replace('FILE-STORAGE::', '') + if (fileName.startsWith('[') && fileName.endsWith(']')) { + return JSON.parse(fileName) + } + return [fileName] + } + + // If exists, combine all file inputs into an array + const files: string[] = [] + if (txtFileBase64) { + files.push(...removePrefix(txtFileBase64)) + } + if (pdfFileBase64) { + files.push(...removePrefix(pdfFileBase64)) + } + if (jsonFileBase64) { + files.push(...removePrefix(jsonFileBase64)) + } + if (csvFileBase64) { + files.push(...removePrefix(csvFileBase64)) + } + if (jsonlinesFileBase64) { + files.push(...removePrefix(jsonlinesFileBase64)) + } + if (docxFileBase64) { + files.push(...removePrefix(docxFileBase64)) + } + if (yamlFileBase64) { + files.push(...removePrefix(yamlFileBase64)) + } + + return files.length ? `FILE-STORAGE::${JSON.stringify(files)}` : '' +} + +interface LoadersMapping { + [extension: string]: (blob: Blob) => BaseDocumentLoader +} + +class MultiFileLoader extends BaseDocumentLoader { + constructor(public fileBlobs: { blob: Blob; ext: string }[], public loaders: LoadersMapping) { + super() + + if (Object.keys(loaders).length === 0) { + throw new Error('Must provide at least one loader') + } + } + + public async load(): Promise { + const documents: Document[] = [] + + for (const fileBlob of this.fileBlobs) { + const loaderFactory = this.loaders[fileBlob.ext] + if (loaderFactory) { + const loader = loaderFactory(fileBlob.blob) + documents.push(...(await loader.load())) + } else { + const loader = new TextLoader(fileBlob.blob) + try { + documents.push(...(await loader.load())) + } catch (error) { + throw new Error(`Error loading file`) + } + } + } + + return documents + } +} + +module.exports = { nodeClass: File_DocumentLoaders } diff --git a/packages/components/nodes/documentloaders/File/file.svg b/packages/components/nodes/documentloaders/File/file.svg new file mode 100644 index 00000000000..8963ffbc5dc --- /dev/null +++ b/packages/components/nodes/documentloaders/File/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts b/packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts index 4669bfd24e9..a2707d13b07 100644 --- a/packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts +++ b/packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts @@ -1,8 +1,8 @@ import { TextSplitter } from 'langchain/text_splitter' import { Document, DocumentInterface } from '@langchain/core/documents' import { BaseDocumentLoader } from 'langchain/document_loaders/base' -import { INode, INodeData, INodeParams, ICommonObject } from '../../../src/Interface' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { INode, INodeData, INodeParams, ICommonObject, INodeOutputsValue } from '../../../src/Interface' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' import axios, { AxiosResponse, AxiosRequestHeaders } from 'axios' import { z } from 'zod' import { zodToJsonSchema } from 'zod-to-json-schema' @@ -194,19 +194,21 @@ class FirecrawlApp { interface FirecrawlLoaderParameters { url: string apiKey?: string + apiUrl?: string mode?: 'crawl' | 'scrape' params?: Record } class FireCrawlLoader extends BaseDocumentLoader { private apiKey: string + private apiUrl: string private url: string private mode: 'crawl' | 'scrape' private params?: Record constructor(loaderParams: FirecrawlLoaderParameters) { super() - const { apiKey, url, mode = 'crawl', params } = loaderParams + const { apiKey, apiUrl, url, mode = 'crawl', params } = loaderParams if (!apiKey) { throw new Error('Firecrawl API key not set. You can set it as FIRECRAWL_API_KEY in your .env file, or pass it to Firecrawl.') } @@ -215,10 +217,11 @@ class FireCrawlLoader extends BaseDocumentLoader { this.url = url this.mode = mode this.params = params + this.apiUrl = apiUrl || 'https://api.firecrawl.dev' } public async load(): Promise { - const app = new FirecrawlApp({ apiKey: this.apiKey }) + const app = new FirecrawlApp({ apiKey: this.apiKey, apiUrl: this.apiUrl }) let firecrawlDocs: FirecrawlDocument[] if (this.mode === 'scrape') { @@ -256,16 +259,23 @@ class FireCrawl_DocumentLoaders implements INode { baseClasses: string[] inputs: INodeParams[] credential: INodeParams + outputs: INodeOutputsValue[] constructor() { this.label = 'FireCrawl' this.name = 'fireCrawl' this.type = 'Document' this.icon = 'firecrawl.png' - this.version = 1.0 + this.version = 2.1 this.category = 'Document Loaders' this.description = 'Load data from URL using FireCrawl' this.baseClasses = [this.type] + this.credential = { + label: 'FireCrawl API', + name: 'credential', + type: 'credential', + credentialNames: ['fireCrawlApi'] + } this.inputs = [ { label: 'Text Splitter', @@ -297,15 +307,59 @@ class FireCrawl_DocumentLoaders implements INode { } ], default: 'crawl' + }, + { + // maxCrawlPages + label: 'Max Crawl Pages', + name: 'maxCrawlPages', + type: 'string', + description: 'Maximum number of pages to crawl', + optional: true, + additionalParams: true + }, + { + // generateImgAltText + label: 'Generate Image Alt Text', + name: 'generateImgAltText', + type: 'boolean', + description: 'Generate alt text for images', + optional: true, + additionalParams: true + }, + { + // returnOnlyUrls + label: 'Return Only URLs', + name: 'returnOnlyUrls', + type: 'boolean', + description: 'Return only URLs of the crawled pages', + optional: true, + additionalParams: true + }, + { + // onlyMainContent + label: 'Only Main Content', + name: 'onlyMainContent', + type: 'boolean', + description: 'Extract only the main content of the page', + optional: true, + additionalParams: true } // ... (other input parameters) ] - this.credential = { - label: 'FireCrawl API', - name: 'credential', - type: 'credential', - credentialNames: ['fireCrawlApi'] - } + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -319,6 +373,8 @@ class FireCrawl_DocumentLoaders implements INode { const onlyMainContent = nodeData.inputs?.onlyMainContent as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const firecrawlApiToken = getCredentialParam('firecrawlApiToken', credentialData, nodeData) + const firecrawlApiUrl = getCredentialParam('firecrawlApiUrl', credentialData, nodeData, 'https://api.firecrawl.dev') + const output = nodeData.outputs?.output as string const urlPatternsExcludes = nodeData.inputs?.urlPatternsExcludes ? (nodeData.inputs.urlPatternsExcludes.split(',') as string[]) @@ -331,6 +387,7 @@ class FireCrawl_DocumentLoaders implements INode { url, mode: crawlerType as 'crawl' | 'scrape', apiKey: firecrawlApiToken, + apiUrl: firecrawlApiUrl, params: { crawlerOptions: { includes: urlPatternsIncludes, @@ -344,7 +401,6 @@ class FireCrawl_DocumentLoaders implements INode { } } } - const loader = new FireCrawlLoader(input) let docs = [] @@ -371,7 +427,15 @@ class FireCrawl_DocumentLoaders implements INode { return finaldocs } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Folder/Folder.ts b/packages/components/nodes/documentloaders/Folder/Folder.ts index fe289f84b8d..1a6afe05718 100644 --- a/packages/components/nodes/documentloaders/Folder/Folder.ts +++ b/packages/components/nodes/documentloaders/Folder/Folder.ts @@ -1,12 +1,13 @@ import { omit } from 'lodash' -import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { TextLoader } from 'langchain/document_loaders/fs/text' import { DirectoryLoader } from 'langchain/document_loaders/fs/directory' -import { JSONLoader } from 'langchain/document_loaders/fs/json' +import { JSONLinesLoader, JSONLoader } from 'langchain/document_loaders/fs/json' import { CSVLoader } from '@langchain/community/document_loaders/fs/csv' import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf' import { DocxLoader } from '@langchain/community/document_loaders/fs/docx' +import { handleEscapeCharacters } from '../../../src/utils' class Folder_DocumentLoaders implements INode { label: string @@ -18,11 +19,12 @@ class Folder_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Folder with Files' this.name = 'folderFiles' - this.version = 2.0 + this.version = 4.0 this.type = 'Document' this.icon = 'folder.svg' this.category = 'Document Loaders' @@ -51,6 +53,7 @@ class Folder_DocumentLoaders implements INode { label: 'Pdf Usage', name: 'pdfUsage', type: 'options', + description: 'Only when loading PDF files', options: [ { label: 'One document per page', @@ -65,6 +68,15 @@ class Folder_DocumentLoaders implements INode { optional: true, additionalParams: true }, + { + label: 'JSONL Pointer Extraction', + name: 'pointerName', + type: 'string', + description: 'Only when loading JSONL files', + placeholder: '', + optional: true, + additionalParams: true + }, { label: 'Additional Metadata', name: 'metadata', @@ -85,6 +97,20 @@ class Folder_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData): Promise { @@ -93,7 +119,9 @@ class Folder_DocumentLoaders implements INode { const metadata = nodeData.inputs?.metadata const recursive = nodeData.inputs?.recursive as boolean const pdfUsage = nodeData.inputs?.pdfUsage + const pointerName = nodeData.inputs?.pointerName as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -104,8 +132,12 @@ class Folder_DocumentLoaders implements INode { folderPath, { '.json': (path) => new JSONLoader(path), + '.jsonl': (blob) => new JSONLinesLoader(blob, '/' + pointerName.trim()), '.txt': (path) => new TextLoader(path), '.csv': (path) => new CSVLoader(path), + '.xls': (path) => new CSVLoader(path), + '.xlsx': (path) => new CSVLoader(path), + '.doc': (path) => new DocxLoader(path), '.docx': (path) => new DocxLoader(path), '.pdf': (path) => pdfUsage === 'perFile' @@ -191,7 +223,15 @@ class Folder_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Gitbook/Gitbook.ts b/packages/components/nodes/documentloaders/Gitbook/Gitbook.ts index ae4ed951b14..a8db37f7f95 100644 --- a/packages/components/nodes/documentloaders/Gitbook/Gitbook.ts +++ b/packages/components/nodes/documentloaders/Gitbook/Gitbook.ts @@ -1,7 +1,8 @@ import { omit } from 'lodash' -import { IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { GitbookLoader } from '@langchain/community/document_loaders/web/gitbook' +import { handleEscapeCharacters } from '../../../src/utils' class Gitbook_DocumentLoaders implements INode { label: string @@ -13,11 +14,12 @@ class Gitbook_DocumentLoaders implements INode { category: string baseClasses: string[] inputs?: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'GitBook' this.name = 'gitbook' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'gitbook.svg' this.category = 'Document Loaders' @@ -64,6 +66,20 @@ class Gitbook_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData): Promise { const webPath = nodeData.inputs?.webPath as string @@ -71,6 +87,7 @@ class Gitbook_DocumentLoaders implements INode { const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -120,7 +137,15 @@ class Gitbook_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Github/Github.ts b/packages/components/nodes/documentloaders/Github/Github.ts index b19cf3c5ec6..116b7f6fd7d 100644 --- a/packages/components/nodes/documentloaders/Github/Github.ts +++ b/packages/components/nodes/documentloaders/Github/Github.ts @@ -2,7 +2,7 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { GithubRepoLoader, GithubRepoLoaderParams } from '@langchain/community/document_loaders/web/github' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters, INodeOutputsValue } from '../../../src' class Github_DocumentLoaders implements INode { label: string @@ -15,11 +15,12 @@ class Github_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Github' this.name = 'github' - this.version = 2.0 + this.version = 3.0 this.type = 'Document' this.icon = 'github.svg' this.category = 'Document Loaders' @@ -106,6 +107,20 @@ class Github_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -118,6 +133,7 @@ class Github_DocumentLoaders implements INode { const maxRetries = nodeData.inputs?.maxRetries as string const ignorePath = nodeData.inputs?.ignorePath as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -181,7 +197,15 @@ class Github_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Json/Json.ts b/packages/components/nodes/documentloaders/Json/Json.ts index ba017d89d91..ee07f1369be 100644 --- a/packages/components/nodes/documentloaders/Json/Json.ts +++ b/packages/components/nodes/documentloaders/Json/Json.ts @@ -1,8 +1,36 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' -import { JSONLoader } from 'langchain/document_loaders/fs/json' -import { getFileFromStorage } from '../../../src' +import { getFileFromStorage, handleEscapeCharacters, INodeOutputsValue } from '../../../src' +import { Document } from '@langchain/core/documents' +import jsonpointer from 'jsonpointer' +import type { readFile as ReadFileT } from 'node:fs/promises' +import { BaseDocumentLoader } from 'langchain/document_loaders/base' + +const howToUseCode = ` +You can add metadata dynamically from the document: + +For example, if the JSON document is: +\`\`\`json +[ + { + "url": "https://www.google.com", + "body": "This is body 1" + }, + { + "url": "https://www.yahoo.com", + "body": "This is body 2" + } +] + +\`\`\` + +You can have the "url" value as metadata by returning the following: +\`\`\`json +{ + "url": "/url" +} +\`\`\`` class Json_DocumentLoaders implements INode { label: string @@ -14,11 +42,12 @@ class Json_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Json File' this.name = 'jsonFile' - this.version = 1.0 + this.version = 3.0 this.type = 'Document' this.icon = 'json.svg' this.category = 'Document Loaders' @@ -41,15 +70,21 @@ class Json_DocumentLoaders implements INode { label: 'Pointers Extraction (separated by commas)', name: 'pointersName', type: 'string', - description: 'Extracting multiple pointers', - placeholder: 'Enter pointers name', + description: + 'Ex: { "key": "value" }, Pointer Extraction = "key", "value" will be extracted as pageContent of the chunk. Use comma to separate multiple pointers', + placeholder: 'key1, key2', optional: true }, { label: 'Additional Metadata', name: 'metadata', type: 'json', - description: 'Additional metadata to be added to the extracted documents', + description: + 'Additional metadata to be added to the extracted documents. You can add metadata dynamically from the document. Ex: { "key": "value", "source": "www.example.com" }. Metadata: { "page": "/source" } will extract the value of the key "source" from the document and add it to the metadata with the key "page"', + hint: { + label: 'How to use', + value: howToUseCode + }, optional: true, additionalParams: true }, @@ -65,6 +100,20 @@ class Json_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -73,6 +122,7 @@ class Json_DocumentLoaders implements INode { const pointersName = nodeData.inputs?.pointersName as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -99,9 +149,10 @@ class Json_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const blob = new Blob([fileData]) - const loader = new JSONLoader(blob, pointers.length != 0 ? pointers : undefined) + const loader = new JSONLoader(blob, pointers.length != 0 ? pointers : undefined, metadata) if (textSplitter) { let splittedDocs = await loader.load() @@ -119,11 +170,12 @@ class Json_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') const blob = new Blob([bf]) - const loader = new JSONLoader(blob, pointers.length != 0 ? pointers : undefined) + const loader = new JSONLoader(blob, pointers.length != 0 ? pointers : undefined, metadata) if (textSplitter) { let splittedDocs = await loader.load() @@ -136,7 +188,8 @@ class Json_DocumentLoaders implements INode { } if (metadata) { - const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + let parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + parsedMetadata = removeValuesStartingWithSlash(parsedMetadata) docs = docs.map((doc) => ({ ...doc, metadata: @@ -167,7 +220,221 @@ class Json_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } + } +} + +const removeValuesStartingWithSlash = (obj: Record): Record => { + const result: Record = {} + + for (const key in obj) { + const value = obj[key] + if (typeof value === 'string' && value.startsWith('/')) { + continue + } + result[key] = value + } + + return result +} + +class TextLoader extends BaseDocumentLoader { + constructor(public filePathOrBlob: string | Blob) { + super() + } + + protected async parse(raw: string): Promise<{ pageContent: string; metadata: ICommonObject }[]> { + return [{ pageContent: raw, metadata: {} }] + } + + public async load(): Promise { + let text: string + let metadata: Record + if (typeof this.filePathOrBlob === 'string') { + const { readFile } = await TextLoader.imports() + text = await readFile(this.filePathOrBlob, 'utf8') + metadata = { source: this.filePathOrBlob } + } else { + text = await this.filePathOrBlob.text() + metadata = { source: 'blob', blobType: this.filePathOrBlob.type } + } + const parsed = await this.parse(text) + parsed.forEach((parsedData, i) => { + const { pageContent } = parsedData + if (typeof pageContent !== 'string') { + throw new Error(`Expected string, at position ${i} got ${typeof pageContent}`) + } + }) + return parsed.map((parsedData, i) => { + const { pageContent, metadata: additionalMetadata } = parsedData + return new Document({ + pageContent, + metadata: + parsed.length === 1 + ? { ...metadata, ...additionalMetadata } + : { + ...metadata, + line: i + 1, + ...additionalMetadata + } + }) + }) + } + + static async imports(): Promise<{ + readFile: typeof ReadFileT + }> { + try { + const { readFile } = await import('node:fs/promises') + return { readFile } + } catch (e) { + console.error(e) + throw new Error(`Failed to load fs/promises. Make sure you are running in Node.js environment.`) + } + } +} + +class JSONLoader extends TextLoader { + public pointers: string[] + private metadataMapping: Record + + constructor(filePathOrBlob: string | Blob, pointers: string | string[] = [], metadataMapping: Record = {}) { + super(filePathOrBlob) + this.pointers = Array.isArray(pointers) ? pointers : [pointers] + if (metadataMapping) { + this.metadataMapping = typeof metadataMapping === 'object' ? metadataMapping : JSON.parse(metadataMapping) + } + } + + protected async parse(raw: string): Promise { + const json = JSON.parse(raw.trim()) + const documents: Document[] = [] + + // Handle both single object and array of objects + const jsonArray = Array.isArray(json) ? json : [json] + + for (const item of jsonArray) { + const content = this.extractContent(item) + const metadata = this.extractMetadata(item) + + for (const pageContent of content) { + documents.push({ + pageContent, + metadata + }) + } + } + + return documents + } + + /** + * Extracts content based on specified pointers or all strings if no pointers + */ + private extractContent(json: any): string[] { + const compiledPointers = this.pointers.map((pointer) => jsonpointer.compile(pointer)) + + return this.extractArrayStringsFromObject(json, compiledPointers, !(this.pointers.length > 0)) + } + + /** + * Extracts metadata based on the mapping configuration + */ + private extractMetadata(json: any): Record { + let metadata: Record = {} + + if (this.metadataMapping) { + const values = Object.values(this.metadataMapping).filter((value) => typeof value === 'string' && value.startsWith('/')) + for (const value of values) { + if (value) { + const key = Object.keys(this.metadataMapping).find((key) => this.metadataMapping?.[key] === value) + if (key) { + metadata = { + ...metadata, + [key]: jsonpointer.get(json, value) + } + } + } + } + } + + return metadata + } + + /** + * If JSON pointers are specified, return all strings below any of them + * and exclude all other nodes expect if they match a JSON pointer. + * If no JSON pointer is specified then return all string in the object. + */ + private extractArrayStringsFromObject( + json: any, + pointers: jsonpointer[], + extractAllStrings = false, + keyHasBeenFound = false + ): string[] { + if (!json) { + return [] + } + + if (typeof json === 'string' && extractAllStrings) { + return [json] + } + + if (Array.isArray(json) && extractAllStrings) { + let extractedString: string[] = [] + for (const element of json) { + extractedString = extractedString.concat(this.extractArrayStringsFromObject(element, pointers, true)) + } + return extractedString + } + + if (typeof json === 'object') { + if (extractAllStrings) { + return this.extractArrayStringsFromObject(Object.values(json), pointers, true) + } + + const targetedEntries = this.getTargetedEntries(json, pointers) + const thisLevelEntries = Object.values(json) as object[] + const notTargetedEntries = thisLevelEntries.filter((entry: object) => !targetedEntries.includes(entry)) + + let extractedStrings: string[] = [] + if (targetedEntries.length > 0) { + for (const oneEntry of targetedEntries) { + extractedStrings = extractedStrings.concat(this.extractArrayStringsFromObject(oneEntry, pointers, true, true)) + } + + for (const oneEntry of notTargetedEntries) { + extractedStrings = extractedStrings.concat(this.extractArrayStringsFromObject(oneEntry, pointers, false, true)) + } + } else if (extractAllStrings || !keyHasBeenFound) { + for (const oneEntry of notTargetedEntries) { + extractedStrings = extractedStrings.concat(this.extractArrayStringsFromObject(oneEntry, pointers, extractAllStrings)) + } + } + + return extractedStrings + } + + return [] + } + + private getTargetedEntries(json: object, pointers: jsonpointer[]): object[] { + const targetEntries = [] + for (const pointer of pointers) { + const targetedEntry = pointer.get(json) + if (targetedEntry) { + targetEntries.push(targetedEntry) + } + } + return targetEntries } } diff --git a/packages/components/nodes/documentloaders/Jsonlines/Jsonlines.ts b/packages/components/nodes/documentloaders/Jsonlines/Jsonlines.ts index 1a4cbb613f1..fe345e00d52 100644 --- a/packages/components/nodes/documentloaders/Jsonlines/Jsonlines.ts +++ b/packages/components/nodes/documentloaders/Jsonlines/Jsonlines.ts @@ -1,8 +1,31 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' -import { JSONLinesLoader } from 'langchain/document_loaders/fs/json' -import { getFileFromStorage } from '../../../src' +import jsonpointer from 'jsonpointer' +import { getFileFromStorage, handleEscapeCharacters, INodeOutputsValue } from '../../../src' +import { BaseDocumentLoader } from 'langchain/document_loaders/base' +import { Document } from '@langchain/core/documents' +import type { readFile as ReadFileT } from 'node:fs/promises' + +const howToUseCode = ` +You can add metadata dynamically from the document: + +For example, if the document is: +\`\`\`jsonl +{ + "source": "www.example.com", "content": "Hello World!" +} +{ + "source": "www.example2.com", "content": "Hi World!" +} +\`\`\` + +You can have the "source" value as metadata by returning the following: +\`\`\`json +{ + "source": "/source" +} +\`\`\`` class Jsonlines_DocumentLoaders implements INode { label: string @@ -14,11 +37,12 @@ class Jsonlines_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Json Lines File' this.name = 'jsonlinesFile' - this.version = 1.0 + this.version = 3.0 this.type = 'Document' this.icon = 'jsonlines.svg' this.category = 'Document Loaders' @@ -41,14 +65,20 @@ class Jsonlines_DocumentLoaders implements INode { label: 'Pointer Extraction', name: 'pointerName', type: 'string', - placeholder: 'Enter pointer name', + placeholder: 'key', + description: 'Ex: { "key": "value" }, Pointer Extraction = "key", "value" will be extracted as pageContent of the chunk', optional: false }, { label: 'Additional Metadata', name: 'metadata', type: 'json', - description: 'Additional metadata to be added to the extracted documents', + description: + 'Additional metadata to be added to the extracted documents. You can add metadata dynamically from the document. Ex: { "key": "value", "source": "www.example.com" }. Metadata: { "page": "/source" } will extract the value of the key "source" from the document and add it to the metadata with the key "page"', + hint: { + label: 'How to use', + value: howToUseCode + }, optional: true, additionalParams: true }, @@ -64,6 +94,20 @@ class Jsonlines_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -72,6 +116,7 @@ class Jsonlines_DocumentLoaders implements INode { const pointerName = nodeData.inputs?.pointerName as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -93,9 +138,10 @@ class Jsonlines_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const blob = new Blob([fileData]) - const loader = new JSONLinesLoader(blob, pointer) + const loader = new JSONLinesLoader(blob, pointer, metadata) if (textSplitter) { let splittedDocs = await loader.load() @@ -113,11 +159,12 @@ class Jsonlines_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') const blob = new Blob([bf]) - const loader = new JSONLinesLoader(blob, pointer) + const loader = new JSONLinesLoader(blob, pointer, metadata) if (textSplitter) { let splittedDocs = await loader.load() @@ -130,7 +177,8 @@ class Jsonlines_DocumentLoaders implements INode { } if (metadata) { - const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + let parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + parsedMetadata = removeValuesStartingWithSlash(parsedMetadata) docs = docs.map((doc) => ({ ...doc, metadata: @@ -161,7 +209,133 @@ class Jsonlines_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } + } +} + +const removeValuesStartingWithSlash = (obj: Record): Record => { + const result: Record = {} + + for (const key in obj) { + const value = obj[key] + if (typeof value === 'string' && value.startsWith('/')) { + continue + } + result[key] = value + } + + return result +} + +class TextLoader extends BaseDocumentLoader { + constructor(public filePathOrBlob: string | Blob) { + super() + } + + protected async parse(raw: string): Promise<{ pageContent: string; metadata: ICommonObject }[]> { + return [{ pageContent: raw, metadata: {} }] + } + + public async load(): Promise { + let text: string + let metadata: Record + if (typeof this.filePathOrBlob === 'string') { + const { readFile } = await TextLoader.imports() + text = await readFile(this.filePathOrBlob, 'utf8') + metadata = { source: this.filePathOrBlob } + } else { + text = await this.filePathOrBlob.text() + metadata = { source: 'blob', blobType: this.filePathOrBlob.type } + } + const parsed = await this.parse(text) + parsed.forEach((parsedData, i) => { + const { pageContent } = parsedData + if (typeof pageContent !== 'string') { + throw new Error(`Expected string, at position ${i} got ${typeof pageContent}`) + } + }) + return parsed.map((parsedData, i) => { + const { pageContent, metadata: additionalMetadata } = parsedData + return new Document({ + pageContent, + metadata: + parsed.length === 1 + ? { ...metadata, ...additionalMetadata } + : { + ...metadata, + line: i + 1, + ...additionalMetadata + } + }) + }) + } + + static async imports(): Promise<{ + readFile: typeof ReadFileT + }> { + try { + const { readFile } = await import('node:fs/promises') + return { readFile } + } catch (e) { + console.error(e) + throw new Error(`Failed to load fs/promises. Make sure you are running in Node.js environment.`) + } + } +} + +class JSONLinesLoader extends TextLoader { + metadata?: ICommonObject + additionalMetadata: ICommonObject[] = [] + + constructor(filePathOrBlob: string | Blob, public pointer: string, metadata?: any) { + super(filePathOrBlob) + if (metadata) { + this.metadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) + } + } + + async getAdditionalMetadata(): Promise { + return this.additionalMetadata + } + + protected async parse(raw: string): Promise<{ pageContent: string; metadata: ICommonObject }[]> { + const lines = raw.split('\n') + const jsons = lines + .map((line) => line.trim()) + .filter(Boolean) + .map((line) => JSON.parse(line)) + const pointer = jsonpointer.compile(this.pointer) + if (this.metadata) { + const values = Object.values(this.metadata).filter((value) => typeof value === 'string' && value.startsWith('/')) + let newJsons = [] + for (const json of jsons) { + let metadata = {} + for (const value of values) { + if (value) { + const key = Object.keys(this.metadata).find((key) => this.metadata?.[key] === value) + if (key) { + metadata = { + ...metadata, + [key]: jsonpointer.get(json, value) + } + } + } + } + newJsons.push({ pageContent: pointer.get(json), metadata }) + } + return newJsons + } + return jsons.map((json) => { + return { pageContent: pointer.get(json), metadata: {} } + }) } } diff --git a/packages/components/nodes/documentloaders/Notion/NotionDB.ts b/packages/components/nodes/documentloaders/Notion/NotionDB.ts index a38db89cb1d..7fe3fe43c6d 100644 --- a/packages/components/nodes/documentloaders/Notion/NotionDB.ts +++ b/packages/components/nodes/documentloaders/Notion/NotionDB.ts @@ -2,7 +2,7 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { NotionAPILoader, NotionAPILoaderOptions } from '@langchain/community/document_loaders/web/notionapi' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters, INodeOutputsValue } from '../../../src' class NotionDB_DocumentLoaders implements INode { label: string @@ -15,11 +15,12 @@ class NotionDB_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Notion Database' this.name = 'notionDB' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'notion-db.svg' this.category = 'Document Loaders' @@ -64,6 +65,20 @@ class NotionDB_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -71,6 +86,7 @@ class NotionDB_DocumentLoaders implements INode { const databaseId = nodeData.inputs?.databaseId as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -133,7 +149,15 @@ class NotionDB_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Notion/NotionFolder.ts b/packages/components/nodes/documentloaders/Notion/NotionFolder.ts index 507d722e98e..fc9b6201b3c 100644 --- a/packages/components/nodes/documentloaders/Notion/NotionFolder.ts +++ b/packages/components/nodes/documentloaders/Notion/NotionFolder.ts @@ -1,7 +1,8 @@ import { omit } from 'lodash' -import { IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' +import { IDocument, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { NotionLoader } from '@langchain/community/document_loaders/fs/notion' +import { handleEscapeCharacters } from '../../../src/utils' class NotionFolder_DocumentLoaders implements INode { label: string @@ -13,11 +14,12 @@ class NotionFolder_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Notion Folder' this.name = 'notionFolder' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'notion-folder.svg' this.category = 'Document Loaders' @@ -57,6 +59,20 @@ class NotionFolder_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData): Promise { @@ -64,6 +80,7 @@ class NotionFolder_DocumentLoaders implements INode { const notionFolder = nodeData.inputs?.notionFolder as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -112,7 +129,15 @@ class NotionFolder_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Notion/NotionPage.ts b/packages/components/nodes/documentloaders/Notion/NotionPage.ts index b21a3219aa4..a6338d7f0bd 100644 --- a/packages/components/nodes/documentloaders/Notion/NotionPage.ts +++ b/packages/components/nodes/documentloaders/Notion/NotionPage.ts @@ -2,7 +2,7 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { NotionAPILoader, NotionAPILoaderOptions } from '@langchain/community/document_loaders/web/notionapi' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters, INodeOutputsValue } from '../../../src' class NotionPage_DocumentLoaders implements INode { label: string @@ -15,11 +15,12 @@ class NotionPage_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Notion Page' this.name = 'notionPage' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'notion-page.svg' this.category = 'Document Loaders' @@ -65,6 +66,20 @@ class NotionPage_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -72,6 +87,7 @@ class NotionPage_DocumentLoaders implements INode { const pageId = nodeData.inputs?.pageId as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -130,7 +146,15 @@ class NotionPage_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Pdf/Pdf.ts b/packages/components/nodes/documentloaders/Pdf/Pdf.ts index 95566f592a2..7e4c777ffae 100644 --- a/packages/components/nodes/documentloaders/Pdf/Pdf.ts +++ b/packages/components/nodes/documentloaders/Pdf/Pdf.ts @@ -2,7 +2,7 @@ import { omit } from 'lodash' import { IDocument, ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf' -import { getFileFromStorage } from '../../../src' +import { getFileFromStorage, handleEscapeCharacters, INodeOutputsValue } from '../../../src' class Pdf_DocumentLoaders implements INode { label: string @@ -14,11 +14,12 @@ class Pdf_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Pdf File' this.name = 'pdfFile' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'pdf.svg' this.category = 'Document Loaders' @@ -80,6 +81,20 @@ class Pdf_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -89,6 +104,7 @@ class Pdf_DocumentLoaders implements INode { const metadata = nodeData.inputs?.metadata const legacyBuild = nodeData.inputs?.legacyBuild as boolean const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -109,6 +125,7 @@ class Pdf_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const bf = Buffer.from(fileData) await this.extractDocs(usage, bf, legacyBuild, textSplitter, docs) @@ -121,6 +138,7 @@ class Pdf_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') @@ -160,7 +178,15 @@ class Pdf_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } private async extractDocs(usage: string, bf: Buffer, legacyBuild: boolean, textSplitter: TextSplitter, docs: IDocument[]) { diff --git a/packages/components/nodes/documentloaders/Playwright/Playwright.ts b/packages/components/nodes/documentloaders/Playwright/Playwright.ts index bdb6590104b..f0946dbd834 100644 --- a/packages/components/nodes/documentloaders/Playwright/Playwright.ts +++ b/packages/components/nodes/documentloaders/Playwright/Playwright.ts @@ -8,7 +8,7 @@ import { PlaywrightWebBaseLoaderOptions } from '@langchain/community/document_loaders/web/playwright' import { test } from 'linkifyjs' -import { webCrawl, xmlScrape } from '../../../src' +import { handleEscapeCharacters, INodeOutputsValue, webCrawl, xmlScrape } from '../../../src' class Playwright_DocumentLoaders implements INode { label: string @@ -20,11 +20,12 @@ class Playwright_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Playwright Web Scraper' this.name = 'playwrightWebScraper' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'playwright.svg' this.category = 'Document Loaders' @@ -132,6 +133,20 @@ class Playwright_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -143,6 +158,7 @@ class Playwright_DocumentLoaders implements INode { let waitUntilGoToOption = nodeData.inputs?.waitUntilGoToOption as 'load' | 'domcontentloaded' | 'networkidle' | 'commit' | undefined let waitForSelector = nodeData.inputs?.waitForSelector as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -251,7 +267,15 @@ class Playwright_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Puppeteer/Puppeteer.ts b/packages/components/nodes/documentloaders/Puppeteer/Puppeteer.ts index a47d8abcd45..fa88f96328d 100644 --- a/packages/components/nodes/documentloaders/Puppeteer/Puppeteer.ts +++ b/packages/components/nodes/documentloaders/Puppeteer/Puppeteer.ts @@ -3,7 +3,7 @@ import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../. import { TextSplitter } from 'langchain/text_splitter' import { Browser, Page, PuppeteerWebBaseLoader, PuppeteerWebBaseLoaderOptions } from '@langchain/community/document_loaders/web/puppeteer' import { test } from 'linkifyjs' -import { webCrawl, xmlScrape } from '../../../src' +import { handleEscapeCharacters, INodeOutputsValue, webCrawl, xmlScrape } from '../../../src' import { PuppeteerLifeCycleEvent } from 'puppeteer' class Puppeteer_DocumentLoaders implements INode { @@ -16,11 +16,12 @@ class Puppeteer_DocumentLoaders implements INode { category: string baseClasses: string[] inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Puppeteer Web Scraper' this.name = 'puppeteerWebScraper' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'puppeteer.svg' this.category = 'Document Loaders' @@ -128,6 +129,20 @@ class Puppeteer_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -139,6 +154,7 @@ class Puppeteer_DocumentLoaders implements INode { let waitUntilGoToOption = nodeData.inputs?.waitUntilGoToOption as PuppeteerLifeCycleEvent let waitForSelector = nodeData.inputs?.waitForSelector as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -247,7 +263,15 @@ class Puppeteer_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/S3Directory/S3Directory.ts b/packages/components/nodes/documentloaders/S3Directory/S3Directory.ts index cb2ea79150f..072822aef38 100644 --- a/packages/components/nodes/documentloaders/S3Directory/S3Directory.ts +++ b/packages/components/nodes/documentloaders/S3Directory/S3Directory.ts @@ -1,6 +1,11 @@ -import { omit } from 'lodash' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { + getCredentialData, + getCredentialParam, + handleDocumentLoaderDocuments, + handleDocumentLoaderMetadata, + handleDocumentLoaderOutput +} from '../../../src/utils' import { S3Client, GetObjectCommand, S3ClientConfig, ListObjectsV2Command, ListObjectsV2Output } from '@aws-sdk/client-s3' import { getRegions, MODEL_TYPE } from '../../../src/modelLoader' import { Readable } from 'node:stream' @@ -10,12 +15,13 @@ import * as os from 'node:os' import { DirectoryLoader } from 'langchain/document_loaders/fs/directory' import { JSONLoader } from 'langchain/document_loaders/fs/json' -import { CSVLoader } from '@langchain/community/document_loaders/fs/csv' import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf' import { DocxLoader } from '@langchain/community/document_loaders/fs/docx' import { TextLoader } from 'langchain/document_loaders/fs/text' import { TextSplitter } from 'langchain/text_splitter' +import { CSVLoader } from '../Csv/CsvLoader' + class S3_DocumentLoaders implements INode { label: string name: string @@ -27,11 +33,12 @@ class S3_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs?: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'S3 Directory' this.name = 's3Directory' - this.version = 3.0 + this.version = 4.0 this.type = 'Document' this.icon = 's3.svg' this.category = 'Document Loaders' @@ -117,6 +124,20 @@ class S3_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } loadMethods = { @@ -134,11 +155,7 @@ class S3_DocumentLoaders implements INode { const pdfUsage = nodeData.inputs?.pdfUsage const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string - - let omitMetadataKeys: string[] = [] - if (_omitMetadataKeys) { - omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) - } + const output = nodeData.outputs?.output as string let credentials: S3ClientConfig['credentials'] | undefined @@ -225,11 +242,11 @@ class S3_DocumentLoaders implements INode { '.csv': (path) => new CSVLoader(path), '.docx': (path) => new DocxLoader(path), '.pdf': (path) => - pdfUsage === 'perFile' - ? // @ts-ignore - new PDFLoader(path, { splitPages: false, pdfjs: () => import('pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js') }) - : // @ts-ignore - new PDFLoader(path, { pdfjs: () => import('pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js') }), + new PDFLoader(path, { + splitPages: pdfUsage !== 'perFile', + // @ts-ignore + pdfjs: () => import('pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js') + }), '.aspx': (path) => new TextLoader(path), '.asp': (path) => new TextLoader(path), '.cpp': (path) => new TextLoader(path), // C++ @@ -268,55 +285,16 @@ class S3_DocumentLoaders implements INode { true ) - let docs = [] + let docs = await handleDocumentLoaderDocuments(loader, textSplitter) - if (textSplitter) { - let splittedDocs = await loader.load() - splittedDocs = await textSplitter.splitDocuments(splittedDocs) - docs.push(...splittedDocs) - } else { - docs = await loader.load() - } + docs = handleDocumentLoaderMetadata(docs, _omitMetadataKeys, metadata) - if (metadata) { - const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? { - ...parsedMetadata - } - : omit( - { - ...doc.metadata, - ...parsedMetadata - }, - omitMetadataKeys - ) - })) - } else { - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? {} - : omit( - { - ...doc.metadata - }, - omitMetadataKeys - ) - })) - } - - // remove the temp directory before returning docs - fsDefault.rmSync(tempDir, { recursive: true }) - - return docs + return handleDocumentLoaderOutput(docs, output) } catch (e: any) { - fsDefault.rmSync(tempDir, { recursive: true }) throw new Error(`Failed to load data from bucket ${bucketName}: ${e.message}`) + } finally { + // remove the temp directory before returning docs + fsDefault.rmSync(tempDir, { recursive: true }) } } } diff --git a/packages/components/nodes/documentloaders/S3File/README.md b/packages/components/nodes/documentloaders/S3File/README.md new file mode 100644 index 00000000000..ad069f5db80 --- /dev/null +++ b/packages/components/nodes/documentloaders/S3File/README.md @@ -0,0 +1,13 @@ +# S3 File Loader + +DS File Loarder integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| -------------------- | ----------------------------------------------- | ------ | ---------------------------------------- | +| UNSTRUCTURED_API_URL | Default `unstructuredApiUrl` for S3 File Loader | String | http://localhost:8000/general/v0/general | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/documentloaders/S3File/S3File.ts b/packages/components/nodes/documentloaders/S3File/S3File.ts index 2e8fcaf1852..51c1980459c 100644 --- a/packages/components/nodes/documentloaders/S3File/S3File.ts +++ b/packages/components/nodes/documentloaders/S3File/S3File.ts @@ -1,5 +1,4 @@ -import { omit } from 'lodash' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { S3Loader } from '@langchain/community/document_loaders/web/s3' import { UnstructuredLoader, @@ -8,7 +7,13 @@ import { SkipInferTableTypes, HiResModelName } from '@langchain/community/document_loaders/fs/unstructured' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { + getCredentialData, + getCredentialParam, + handleDocumentLoaderDocuments, + handleDocumentLoaderMetadata, + handleDocumentLoaderOutput +} from '../../../src/utils' import { S3Client, GetObjectCommand, S3ClientConfig } from '@aws-sdk/client-s3' import { getRegions, MODEL_TYPE } from '../../../src/modelLoader' import { Readable } from 'node:stream' @@ -27,11 +32,12 @@ class S3_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs?: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'S3' this.name = 'S3' - this.version = 3.0 + this.version = 4.0 this.type = 'Document' this.icon = 's3.svg' this.category = 'Document Loaders' @@ -70,7 +76,8 @@ class S3_DocumentLoaders implements INode { description: 'Your Unstructured.io URL. Read more on how to get started', type: 'string', - default: 'http://localhost:8000/general/v0/general' + placeholder: process.env.UNSTRUCTURED_API_URL || 'http://localhost:8000/general/v0/general', + optional: !!process.env.UNSTRUCTURED_API_URL }, { label: 'Unstructured API KEY', @@ -433,6 +440,20 @@ class S3_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } loadMethods = { @@ -465,11 +486,7 @@ class S3_DocumentLoaders implements INode { const newAfterNChars = nodeData.inputs?.newAfterNChars as number const maxCharacters = nodeData.inputs?.maxCharacters as number const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string - - let omitMetadataKeys: string[] = [] - if (_omitMetadataKeys) { - omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) - } + const output = nodeData.outputs?.output as string let credentials: S3ClientConfig['credentials'] | undefined @@ -555,48 +572,15 @@ class S3_DocumentLoaders implements INode { const unstructuredLoader = new UnstructuredLoader(filePath, obj) - let docs = await unstructuredLoader.load() - - if (metadata) { - const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? { - ...parsedMetadata - } - : omit( - { - ...doc.metadata, - ...parsedMetadata, - [sourceIdKey]: doc.metadata[sourceIdKey] || sourceIdKey - }, - omitMetadataKeys - ) - })) - } else { - docs = docs.map((doc) => ({ - ...doc, - metadata: - _omitMetadataKeys === '*' - ? {} - : omit( - { - ...doc.metadata, - [sourceIdKey]: doc.metadata[sourceIdKey] || sourceIdKey - }, - omitMetadataKeys - ) - })) - } + let docs = await handleDocumentLoaderDocuments(unstructuredLoader) - fsDefault.rmSync(path.dirname(filePath), { recursive: true }) + docs = handleDocumentLoaderMetadata(docs, _omitMetadataKeys, metadata, sourceIdKey) - return docs + return handleDocumentLoaderOutput(docs, output) } catch { - fsDefault.rmSync(path.dirname(filePath), { recursive: true }) throw new Error(`Failed to load file ${filePath} using unstructured loader.`) + } finally { + fsDefault.rmSync(path.dirname(filePath), { recursive: true }) } } diff --git a/packages/components/nodes/documentloaders/SearchApi/SearchAPI.ts b/packages/components/nodes/documentloaders/SearchApi/SearchAPI.ts index 4a86162469e..4ab028be4ab 100644 --- a/packages/components/nodes/documentloaders/SearchApi/SearchAPI.ts +++ b/packages/components/nodes/documentloaders/SearchApi/SearchAPI.ts @@ -2,7 +2,7 @@ import { omit } from 'lodash' import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { SearchApiLoader } from '@langchain/community/document_loaders/web/searchapi' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters, INodeOutputsValue } from '../../../src' // Provides access to multiple search engines using the SearchApi. // For available parameters & engines, refer to: https://www.searchapi.io/docs/google @@ -17,11 +17,12 @@ class SearchAPI_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'SearchApi For Web Search' this.name = 'searchApi' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'searchapi.svg' this.category = 'Document Loaders' @@ -74,6 +75,20 @@ class SearchAPI_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -82,6 +97,7 @@ class SearchAPI_DocumentLoaders implements INode { const customParameters = nodeData.inputs?.customParameters const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -146,7 +162,15 @@ class SearchAPI_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/SerpApi/SerpAPI.ts b/packages/components/nodes/documentloaders/SerpApi/SerpAPI.ts index 1710e006d00..0220cf4fb22 100644 --- a/packages/components/nodes/documentloaders/SerpApi/SerpAPI.ts +++ b/packages/components/nodes/documentloaders/SerpApi/SerpAPI.ts @@ -1,8 +1,8 @@ import { omit } from 'lodash' -import { ICommonObject, IDocument, INode, INodeData, INodeParams } from '../../../src/Interface' import { TextSplitter } from 'langchain/text_splitter' import { SerpAPILoader } from '@langchain/community/document_loaders/web/serpapi' -import { getCredentialData, getCredentialParam } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src' +import { ICommonObject, IDocument, INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' class SerpAPI_DocumentLoaders implements INode { label: string @@ -15,11 +15,12 @@ class SerpAPI_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'SerpApi For Web Search' this.name = 'serpApi' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'serp.svg' this.category = 'Document Loaders' @@ -64,6 +65,20 @@ class SerpAPI_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -71,6 +86,7 @@ class SerpAPI_DocumentLoaders implements INode { const query = nodeData.inputs?.query as string const metadata = nodeData.inputs?.metadata const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -121,7 +137,15 @@ class SerpAPI_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Spider/Spider.ts b/packages/components/nodes/documentloaders/Spider/Spider.ts index 3dbb4baf5ba..71e5d46aa2d 100644 --- a/packages/components/nodes/documentloaders/Spider/Spider.ts +++ b/packages/components/nodes/documentloaders/Spider/Spider.ts @@ -2,8 +2,8 @@ import { omit } from 'lodash' import { TextSplitter } from 'langchain/text_splitter' import { Document, DocumentInterface } from '@langchain/core/documents' import { BaseDocumentLoader } from 'langchain/document_loaders/base' -import { INode, INodeData, INodeParams, ICommonObject } from '../../../src/Interface' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { INode, INodeData, INodeParams, ICommonObject, INodeOutputsValue } from '../../../src/Interface' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' import SpiderApp from './SpiderApp' interface SpiderLoaderParameters { @@ -85,11 +85,12 @@ class Spider_DocumentLoaders implements INode { baseClasses: string[] inputs: INodeParams[] credential: INodeParams + outputs: INodeOutputsValue[] constructor() { this.label = 'Spider Document Loaders' this.name = 'spiderDocumentLoaders' - this.version = 1.0 + this.version = 2.0 this.type = 'Document' this.icon = 'spider.svg' this.category = 'Document Loaders' @@ -168,6 +169,20 @@ class Spider_DocumentLoaders implements INode { type: 'credential', credentialNames: ['spiderApi'] } + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -180,6 +195,7 @@ class Spider_DocumentLoaders implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const spiderApiKey = getCredentialParam('spiderApiKey', credentialData, nodeData) const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -244,7 +260,15 @@ class Spider_DocumentLoaders implements INode { ) })) - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Text/Text.ts b/packages/components/nodes/documentloaders/Text/Text.ts index 13aae026b56..950107d6a7a 100644 --- a/packages/components/nodes/documentloaders/Text/Text.ts +++ b/packages/components/nodes/documentloaders/Text/Text.ts @@ -101,6 +101,7 @@ class Text_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const blob = new Blob([fileData]) const loader = new TextLoader(blob) @@ -121,6 +122,7 @@ class Text_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') diff --git a/packages/components/nodes/documentloaders/Unstructured/README.md b/packages/components/nodes/documentloaders/Unstructured/README.md new file mode 100644 index 00000000000..5295e9f1f38 --- /dev/null +++ b/packages/components/nodes/documentloaders/Unstructured/README.md @@ -0,0 +1,13 @@ +# Unstructured File/Floder Loader + +Unstructured File Loader integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| -------------------- | ---------------------------------------------------- | ------ | ---------------------------------------- | +| UNSTRUCTURED_API_URL | Default `apiUrl` for Unstructured File/Floder Loader | String | http://localhost:8000/general/v0/general | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/documentloaders/Unstructured/Unstructured.ts b/packages/components/nodes/documentloaders/Unstructured/Unstructured.ts index 07ef437f4c1..8f3e49f6258 100644 --- a/packages/components/nodes/documentloaders/Unstructured/Unstructured.ts +++ b/packages/components/nodes/documentloaders/Unstructured/Unstructured.ts @@ -29,9 +29,9 @@ type Element = { export class UnstructuredLoader extends BaseDocumentLoader { public filePath: string - private apiUrl = 'https://api.unstructured.io/general/v0/general' + private apiUrl = process.env.UNSTRUCTURED_API_URL || 'https://api.unstructuredapp.io/general/v0/general' - private apiKey?: string + private apiKey: string | undefined = process.env.UNSTRUCTURED_API_KEY private strategy: StringWithAutocomplete = 'hi_res' @@ -66,10 +66,10 @@ export class UnstructuredLoader extends BaseDocumentLoader { const options = optionsOrLegacyFilePath this.apiKey = options.apiKey - this.apiUrl = options.apiUrl ?? this.apiUrl - this.strategy = options.strategy ?? this.strategy + this.apiUrl = options.apiUrl || this.apiUrl + this.strategy = options.strategy || this.strategy this.encoding = options.encoding - this.ocrLanguages = options.ocrLanguages ?? this.ocrLanguages + this.ocrLanguages = options.ocrLanguages || this.ocrLanguages this.coordinates = options.coordinates this.pdfInferTableStructure = options.pdfInferTableStructure this.xmlKeepTags = options.xmlKeepTags @@ -128,7 +128,7 @@ export class UnstructuredLoader extends BaseDocumentLoader { } const headers = { - 'UNSTRUCTURED-API-KEY': this.apiKey ?? '' + 'UNSTRUCTURED-API-KEY': this.apiKey || '' } const response = await fetch(this.apiUrl, { diff --git a/packages/components/nodes/documentloaders/Unstructured/UnstructuredFile.ts b/packages/components/nodes/documentloaders/Unstructured/UnstructuredFile.ts index df3bb09f6b8..82aa03accec 100644 --- a/packages/components/nodes/documentloaders/Unstructured/UnstructuredFile.ts +++ b/packages/components/nodes/documentloaders/Unstructured/UnstructuredFile.ts @@ -7,8 +7,8 @@ import { HiResModelName, UnstructuredLoader as LCUnstructuredLoader } from '@langchain/community/document_loaders/fs/unstructured' -import { getCredentialData, getCredentialParam } from '../../../src/utils' -import { getFileFromStorage } from '../../../src' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' +import { getFileFromStorage, INodeOutputsValue } from '../../../src' import { UnstructuredLoader } from './Unstructured' class UnstructuredFile_DocumentLoaders implements INode { @@ -22,11 +22,12 @@ class UnstructuredFile_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Unstructured File Loader' this.name = 'unstructuredFileLoader' - this.version = 3.0 + this.version = 4.0 this.type = 'Document' this.icon = 'unstructured-file.svg' this.category = 'Document Loaders' @@ -40,6 +41,7 @@ class UnstructuredFile_DocumentLoaders implements INode { optional: true } this.inputs = [ + /** Deprecated { label: 'File Path', name: 'filePath', @@ -49,6 +51,7 @@ class UnstructuredFile_DocumentLoaders implements INode { warning: 'Use the File Upload instead of File path. If file is uploaded, this path is ignored. Path will be deprecated in future releases.' }, + */ { label: 'Files Upload', name: 'fileObject', @@ -61,9 +64,10 @@ class UnstructuredFile_DocumentLoaders implements INode { label: 'Unstructured API URL', name: 'unstructuredAPIUrl', description: - 'Unstructured API URL. Read more on how to get started', + 'Unstructured API URL. Read more on how to get started', type: 'string', - default: 'http://localhost:8000/general/v0/general' + placeholder: process.env.UNSTRUCTURED_API_URL || 'http://localhost:8000/general/v0/general', + optional: !!process.env.UNSTRUCTURED_API_URL }, { label: 'Strategy', @@ -199,7 +203,7 @@ class UnstructuredFile_DocumentLoaders implements INode { { label: 'Hi-Res Model Name', name: 'hiResModelName', - description: 'The name of the inference model used when strategy is hi_res. Default: detectron2_onnx.', + description: 'The name of the inference model used when strategy is hi_res', type: 'options', options: [ { @@ -226,8 +230,7 @@ class UnstructuredFile_DocumentLoaders implements INode { } ], optional: true, - additionalParams: true, - default: 'detectron2_onnx' + additionalParams: true }, { label: 'Chunking Strategy', @@ -240,9 +243,21 @@ class UnstructuredFile_DocumentLoaders implements INode { label: 'None', name: 'None' }, + { + label: 'Basic', + name: 'basic' + }, { label: 'By Title', name: 'by_title' + }, + { + label: 'By Page', + name: 'by_page' + }, + { + label: 'By Similarity', + name: 'by_similarity' } ], optional: true, @@ -420,6 +435,20 @@ class UnstructuredFile_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -433,16 +462,17 @@ class UnstructuredFile_DocumentLoaders implements INode { : ([] as SkipInferTableTypes[]) const hiResModelName = nodeData.inputs?.hiResModelName as HiResModelName const includePageBreaks = nodeData.inputs?.includePageBreaks as boolean - const chunkingStrategy = nodeData.inputs?.chunkingStrategy as 'None' | 'by_title' + const chunkingStrategy = nodeData.inputs?.chunkingStrategy as string const metadata = nodeData.inputs?.metadata const sourceIdKey = (nodeData.inputs?.sourceIdKey as string) || 'source' const ocrLanguages = nodeData.inputs?.ocrLanguages ? JSON.parse(nodeData.inputs?.ocrLanguages as string) : ([] as string[]) const xmlKeepTags = nodeData.inputs?.xmlKeepTags as boolean const multiPageSections = nodeData.inputs?.multiPageSections as boolean - const combineUnderNChars = nodeData.inputs?.combineUnderNChars as number - const newAfterNChars = nodeData.inputs?.newAfterNChars as number - const maxCharacters = nodeData.inputs?.maxCharacters as number + const combineUnderNChars = nodeData.inputs?.combineUnderNChars as string + const newAfterNChars = nodeData.inputs?.newAfterNChars as string + const maxCharacters = nodeData.inputs?.maxCharacters as string const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -470,10 +500,19 @@ class UnstructuredFile_DocumentLoaders implements INode { chunkingStrategy, ocrLanguages, xmlKeepTags, - multiPageSections, - combineUnderNChars, - newAfterNChars, - maxCharacters + multiPageSections + } + + if (combineUnderNChars) { + obj.combineUnderNChars = parseInt(combineUnderNChars, 10) + } + + if (newAfterNChars) { + obj.newAfterNChars = parseInt(newAfterNChars, 10) + } + + if (maxCharacters) { + obj.maxCharacters = parseInt(maxCharacters, 10) } const credentialData = await getCredentialData(nodeData.credential ?? '', options) @@ -496,6 +535,7 @@ class UnstructuredFile_DocumentLoaders implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const loaderDocs = await loader.loadAndSplitBuffer(fileData, file) docs.push(...loaderDocs) @@ -508,6 +548,7 @@ class UnstructuredFile_DocumentLoaders implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') const filename = splitDataURI.pop()?.split(':')[1] ?? '' const bf = Buffer.from(splitDataURI.pop() || '', 'base64') @@ -557,7 +598,15 @@ class UnstructuredFile_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/documentloaders/Unstructured/UnstructuredFolder.ts b/packages/components/nodes/documentloaders/Unstructured/UnstructuredFolder.ts index 996af5ac1ed..efa20caf189 100644 --- a/packages/components/nodes/documentloaders/Unstructured/UnstructuredFolder.ts +++ b/packages/components/nodes/documentloaders/Unstructured/UnstructuredFolder.ts @@ -1,5 +1,5 @@ import { omit } from 'lodash' -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' import { UnstructuredDirectoryLoader, UnstructuredLoaderOptions, @@ -7,7 +7,7 @@ import { SkipInferTableTypes, HiResModelName } from '@langchain/community/document_loaders/fs/unstructured' -import { getCredentialData, getCredentialParam } from '../../../src/utils' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src/utils' class UnstructuredFolder_DocumentLoaders implements INode { label: string @@ -20,11 +20,12 @@ class UnstructuredFolder_DocumentLoaders implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] + outputs: INodeOutputsValue[] constructor() { this.label = 'Unstructured Folder Loader' this.name = 'unstructuredFolderLoader' - this.version = 2.0 + this.version = 3.0 this.type = 'Document' this.icon = 'unstructured-folder.svg' this.category = 'Document Loaders' @@ -51,7 +52,8 @@ class UnstructuredFolder_DocumentLoaders implements INode { description: 'Unstructured API URL. Read more on how to get started', type: 'string', - default: 'http://localhost:8000/general/v0/general' + placeholder: process.env.UNSTRUCTURED_API_URL || 'http://localhost:8000/general/v0/general', + optional: !!process.env.UNSTRUCTURED_API_URL }, { label: 'Strategy', @@ -399,6 +401,20 @@ class UnstructuredFolder_DocumentLoaders implements INode { additionalParams: true } ] + this.outputs = [ + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: [...this.baseClasses, 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { @@ -422,6 +438,7 @@ class UnstructuredFolder_DocumentLoaders implements INode { const newAfterNChars = nodeData.inputs?.newAfterNChars as number const maxCharacters = nodeData.inputs?.maxCharacters as number const _omitMetadataKeys = nodeData.inputs?.omitMetadataKeys as string + const output = nodeData.outputs?.output as string let omitMetadataKeys: string[] = [] if (_omitMetadataKeys) { @@ -486,7 +503,15 @@ class UnstructuredFolder_DocumentLoaders implements INode { })) } - return docs + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } } } diff --git a/packages/components/nodes/embeddings/AzureOpenAIEmbedding/AzureOpenAIEmbedding.ts b/packages/components/nodes/embeddings/AzureOpenAIEmbedding/AzureOpenAIEmbedding.ts index df98c3d4072..6e4b747b4b4 100644 --- a/packages/components/nodes/embeddings/AzureOpenAIEmbedding/AzureOpenAIEmbedding.ts +++ b/packages/components/nodes/embeddings/AzureOpenAIEmbedding/AzureOpenAIEmbedding.ts @@ -1,7 +1,13 @@ -import { AzureOpenAIInput, OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' +import { AzureOpenAIInput, ClientOptions, AzureOpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +const serverCredentialsExists = + !!process.env.AZURE_OPENAI_API_KEY && + !!process.env.AZURE_OPENAI_API_INSTANCE_NAME && + (!!process.env.AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME || !!process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME) && + !!process.env.AZURE_OPENAI_API_VERSION + class AzureOpenAIEmbedding_Embeddings implements INode { label: string name: string @@ -17,17 +23,18 @@ class AzureOpenAIEmbedding_Embeddings implements INode { constructor() { this.label = 'Azure OpenAI Embeddings' this.name = 'azureOpenAIEmbeddings' - this.version = 1.0 + this.version = 2.0 this.type = 'AzureOpenAIEmbeddings' this.icon = 'Azure.svg' this.category = 'Embeddings' this.description = 'Azure OpenAI API to generate embeddings for a given text' - this.baseClasses = [this.type, ...getBaseClasses(OpenAIEmbeddings)] + this.baseClasses = [this.type, ...getBaseClasses(AzureOpenAIEmbeddings)] this.credential = { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['azureOpenAIApi'] + credentialNames: ['azureOpenAIApi'], + optional: serverCredentialsExists } this.inputs = [ { @@ -44,6 +51,20 @@ class AzureOpenAIEmbedding_Embeddings implements INode { type: 'number', optional: true, additionalParams: true + }, + { + label: 'BasePath', + name: 'basepath', + type: 'string', + optional: true, + additionalParams: true + }, + { + label: 'BaseOptions', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true } ] } @@ -51,6 +72,8 @@ class AzureOpenAIEmbedding_Embeddings implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const batchSize = nodeData.inputs?.batchSize as string const timeout = nodeData.inputs?.timeout as string + const basePath = nodeData.inputs?.basepath as string + const baseOptions = nodeData.inputs?.baseOptions const credentialData = await getCredentialData(nodeData.credential ?? '', options) const azureOpenAIApiKey = getCredentialParam('azureOpenAIApiKey', credentialData, nodeData) @@ -58,17 +81,28 @@ class AzureOpenAIEmbedding_Embeddings implements INode { const azureOpenAIApiDeploymentName = getCredentialParam('azureOpenAIApiDeploymentName', credentialData, nodeData) const azureOpenAIApiVersion = getCredentialParam('azureOpenAIApiVersion', credentialData, nodeData) - const obj: Partial & Partial = { + const obj: Partial & Partial & { configuration?: ClientOptions } = { azureOpenAIApiKey, azureOpenAIApiInstanceName, azureOpenAIApiDeploymentName, - azureOpenAIApiVersion + azureOpenAIApiVersion, + azureOpenAIBasePath: basePath || undefined } if (batchSize) obj.batchSize = parseInt(batchSize, 10) if (timeout) obj.timeout = parseInt(timeout, 10) + if (baseOptions) { + try { + const parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + obj.configuration = { + defaultHeaders: parsedBaseOptions + } + } catch (exception) { + console.error('Error parsing base options', exception) + } + } - const model = new OpenAIEmbeddings(obj) + const model = new AzureOpenAIEmbeddings(obj) return model } } diff --git a/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md b/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md new file mode 100644 index 00000000000..bd8df9f5392 --- /dev/null +++ b/packages/components/nodes/embeddings/AzureOpenAIEmbedding/README.md @@ -0,0 +1,16 @@ +# Azure OpenAI Embedding Model + +Azure OpenAI Embedding Model integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| ------------------------------------------- | ------------------------------------------------------------------------ | ------ | ------- | +| AZURE_OPENAI_API_KEY | Default `credential.azureOpenAIApiKey` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_INSTANCE_NAME | Default `credential.azureOpenAIApiInstanceName` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME | Default `credential.azureOpenAIApiDeploymentName` for Azure OpenAI Model | String | | +| AZURE_OPENAI_API_VERSION | Default `credential.azureOpenAIApiVersion` for Azure OpenAI Model | String | | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLM.svg b/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLM.svg deleted file mode 100644 index ed47326a9ae..00000000000 --- a/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLM.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLMEmbedding.ts b/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLMEmbedding.ts deleted file mode 100644 index c93a56bcca9..00000000000 --- a/packages/components/nodes/embeddings/GooglePaLMEmbedding/GooglePaLMEmbedding.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { GooglePaLMEmbeddings, GooglePaLMEmbeddingsParams } from '@langchain/community/embeddings/googlepalm' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { MODEL_TYPE, getModels } from '../../../src/modelLoader' - -class GooglePaLMEmbedding_Embeddings implements INode { - label: string - name: string - version: number - type: string - icon: string - category: string - description: string - baseClasses: string[] - credential: INodeParams - inputs: INodeParams[] - - constructor() { - this.label = 'Google PaLM Embeddings' - this.name = 'googlePaLMEmbeddings' - this.version = 2.0 - this.type = 'GooglePaLMEmbeddings' - this.icon = 'GooglePaLM.svg' - this.category = 'Embeddings' - this.description = 'Google MakerSuite PaLM API to generate embeddings for a given text' - this.baseClasses = [this.type, ...getBaseClasses(GooglePaLMEmbeddings)] - this.credential = { - label: 'Connect Credential', - name: 'credential', - type: 'credential', - credentialNames: ['googleMakerSuite'] - } - this.inputs = [ - { - label: 'Model Name', - name: 'modelName', - type: 'asyncOptions', - loadMethod: 'listModels', - default: 'models/embedding-gecko-001' - } - ] - } - - //@ts-ignore - loadMethods = { - async listModels(): Promise { - return await getModels(MODEL_TYPE.EMBEDDING, 'googlePaLMEmbeddings') - } - } - - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const modelName = nodeData.inputs?.modelName as string - - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const googleMakerSuiteKey = getCredentialParam('googleMakerSuiteKey', credentialData, nodeData) - - const obj: Partial = { - modelName: modelName, - apiKey: googleMakerSuiteKey - } - - const model = new GooglePaLMEmbeddings(obj) - return model - } -} - -module.exports = { nodeClass: GooglePaLMEmbedding_Embeddings } diff --git a/packages/components/nodes/embeddings/GoogleVertexAIEmbedding/GoogleVertexAIEmbedding.ts b/packages/components/nodes/embeddings/GoogleVertexAIEmbedding/GoogleVertexAIEmbedding.ts index fb1d6104775..b34fd954c17 100644 --- a/packages/components/nodes/embeddings/GoogleVertexAIEmbedding/GoogleVertexAIEmbedding.ts +++ b/packages/components/nodes/embeddings/GoogleVertexAIEmbedding/GoogleVertexAIEmbedding.ts @@ -1,5 +1,4 @@ -import { GoogleAuthOptions } from 'google-auth-library' -import { GoogleVertexAIEmbeddings, GoogleVertexAIEmbeddingsParams } from '@langchain/community/embeddings/googlevertexai' +import { VertexAIEmbeddings, GoogleVertexAIEmbeddingsInput } from '@langchain/google-vertexai' import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { MODEL_TYPE, getModels } from '../../../src/modelLoader' @@ -24,7 +23,7 @@ class GoogleVertexAIEmbedding_Embeddings implements INode { this.icon = 'GoogleVertex.svg' this.category = 'Embeddings' this.description = 'Google vertexAI API to generate embeddings for a given text' - this.baseClasses = [this.type, ...getBaseClasses(GoogleVertexAIEmbeddings)] + this.baseClasses = [this.type, ...getBaseClasses(VertexAIEmbeddings)] this.credential = { label: 'Connect Credential', name: 'credential', @@ -59,7 +58,7 @@ class GoogleVertexAIEmbedding_Embeddings implements INode { const googleApplicationCredential = getCredentialParam('googleApplicationCredential', credentialData, nodeData) const projectID = getCredentialParam('projectID', credentialData, nodeData) - const authOptions: GoogleAuthOptions = {} + const authOptions: any = {} if (Object.keys(credentialData).length !== 0) { if (!googleApplicationCredentialFilePath && !googleApplicationCredential) throw new Error('Please specify your Google Application Credential') @@ -75,11 +74,12 @@ class GoogleVertexAIEmbedding_Embeddings implements INode { if (projectID) authOptions.projectId = projectID } - const obj: GoogleVertexAIEmbeddingsParams = {} - if (modelName) obj.model = modelName + const obj: GoogleVertexAIEmbeddingsInput = { + model: modelName + } if (Object.keys(authOptions).length !== 0) obj.authOptions = authOptions - const model = new GoogleVertexAIEmbeddings(obj) + const model = new VertexAIEmbeddings(obj) return model } } diff --git a/packages/components/nodes/embeddings/IBMWatsonxEmbedding/IBMWatsonxEmbedding.ts b/packages/components/nodes/embeddings/IBMWatsonxEmbedding/IBMWatsonxEmbedding.ts new file mode 100644 index 00000000000..45b0d628db0 --- /dev/null +++ b/packages/components/nodes/embeddings/IBMWatsonxEmbedding/IBMWatsonxEmbedding.ts @@ -0,0 +1,107 @@ +import { WatsonxEmbeddings, WatsonxInputEmbeddings } from '@langchain/community/embeddings/ibm' +import { WatsonxAuth } from '@langchain/community/dist/types/ibm' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class IBMWatsonx_Embeddings implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'IBM Watsonx Embeddings' + this.name = 'ibmEmbedding' + this.version = 1.0 + this.type = 'WatsonxEmbeddings' + this.icon = 'ibm.png' + this.category = 'Embeddings' + this.description = 'Generate embeddings for a given text using open source model on IBM Watsonx' + this.baseClasses = [this.type, ...getBaseClasses(WatsonxEmbeddings)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['ibmWatsonx'] + } + this.inputs = [ + { + label: 'Model Name', + name: 'modelName', + type: 'string', + default: 'ibm/slate-30m-english-rtrvr' + }, + { + label: 'Truncate Input Tokens', + name: 'truncateInputTokens', + type: 'number', + description: 'Truncate the input tokens.', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Max Retries', + name: 'maxRetries', + type: 'number', + description: 'The maximum number of retries.', + step: 1, + optional: true, + additionalParams: true + }, + { + label: 'Max Concurrency', + name: 'maxConcurrency', + type: 'number', + description: 'The maximum number of concurrencies.', + step: 1, + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const modelName = nodeData.inputs?.modelName as string + const truncateInputTokens = nodeData.inputs?.truncateInputTokens as string + const maxRetries = nodeData.inputs?.maxRetries as string + const maxConcurrency = nodeData.inputs?.maxConcurrency as string + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const version = getCredentialParam('version', credentialData, nodeData) + const serviceUrl = getCredentialParam('serviceUrl', credentialData, nodeData) + const projectId = getCredentialParam('projectId', credentialData, nodeData) + const watsonxAIAuthType = getCredentialParam('watsonxAIAuthType', credentialData, nodeData) + const watsonxAIApikey = getCredentialParam('watsonxAIApikey', credentialData, nodeData) + const watsonxAIBearerToken = getCredentialParam('watsonxAIBearerToken', credentialData, nodeData) + + const auth = { + version, + serviceUrl, + projectId, + watsonxAIAuthType, + watsonxAIApikey, + watsonxAIBearerToken + } + + const obj: WatsonxInputEmbeddings & WatsonxAuth = { + ...auth, + model: modelName + } + + if (truncateInputTokens) obj.truncateInputTokens = parseInt(truncateInputTokens, 10) + if (maxRetries) obj.maxRetries = parseInt(maxRetries, 10) + if (maxConcurrency) obj.maxConcurrency = parseInt(maxConcurrency, 10) + + const model = new WatsonxEmbeddings(obj) + return model + } +} + +module.exports = { nodeClass: IBMWatsonx_Embeddings } diff --git a/packages/components/nodes/embeddings/IBMWatsonxEmbedding/ibm.png b/packages/components/nodes/embeddings/IBMWatsonxEmbedding/ibm.png new file mode 100644 index 00000000000..a3a4be58100 Binary files /dev/null and b/packages/components/nodes/embeddings/IBMWatsonxEmbedding/ibm.png differ diff --git a/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.svg b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.svg new file mode 100644 index 00000000000..95b99d8b5e5 --- /dev/null +++ b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts new file mode 100644 index 00000000000..bdb138f85ad --- /dev/null +++ b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts @@ -0,0 +1,88 @@ +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { JinaEmbeddings } from '@langchain/community/embeddings/jina' + +class ExtendedJinaEmbeddings extends JinaEmbeddings { + private late_chunking: boolean + + constructor(fields: ConstructorParameters[0] & { late_chunking?: boolean }) { + const { late_chunking = false, ...restFields } = fields + super(restFields) + this.late_chunking = late_chunking + } +} + +class JinaAIEmbedding_Embeddings implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Jina Embeddings' + this.name = 'jinaEmbeddings' + this.version = 3.0 + this.type = 'JinaEmbeddings' + this.icon = 'JinaAIEmbedding.svg' + this.category = 'Embeddings' + this.description = 'JinaAI API to generate embeddings for a given text' + this.baseClasses = [this.type, ...getBaseClasses(JinaEmbeddings)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['jinaAIApi'] + } + this.inputs = [ + { + label: 'Model Name', + name: 'modelName', + type: 'string', + default: 'jina-embeddings-v3', + description: 'Refer to JinaAI documentation for available models' + }, + { + label: 'Dimensions', + name: 'modelDimensions', + type: 'number', + default: 1024, + description: + 'Refer to JinaAI documentation for available dimensions' + }, + { + label: 'Allow Late Chunking', + name: 'allowLateChunking', + type: 'boolean', + description: + 'Refer to JinaAI documentation guidance on late chunking', + default: false, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const modelName = nodeData.inputs?.modelName as string + const modelDimensions = nodeData.inputs?.modelDimensions as number + const allowLateChunking = nodeData.inputs?.modelDimensions as boolean + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const apiKey = getCredentialParam('jinaAIAPIKey', credentialData, nodeData) + + const model = new ExtendedJinaEmbeddings({ + apiKey: apiKey, + model: modelName, + dimensions: modelDimensions, + late_chunking: allowLateChunking + }) + + return model + } +} + +module.exports = { nodeClass: JinaAIEmbedding_Embeddings } diff --git a/packages/components/nodes/embeddings/LocalAIEmbedding/LocalAIEmbedding.ts b/packages/components/nodes/embeddings/LocalAIEmbedding/LocalAIEmbedding.ts index 46820c21724..ec2683c6173 100644 --- a/packages/components/nodes/embeddings/LocalAIEmbedding/LocalAIEmbedding.ts +++ b/packages/components/nodes/embeddings/LocalAIEmbedding/LocalAIEmbedding.ts @@ -1,4 +1,4 @@ -import { OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' +import { ClientOptions, OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getCredentialData, getCredentialParam } from '../../../src/utils' @@ -53,14 +53,16 @@ class LocalAIEmbedding_Embeddings implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const localAIApiKey = getCredentialParam('localAIApiKey', credentialData, nodeData) - const obj: Partial & { openAIApiKey?: string } = { + const obj: Partial & { openAIApiKey?: string; configuration?: ClientOptions } = { modelName, openAIApiKey: 'sk-' } if (localAIApiKey) obj.openAIApiKey = localAIApiKey - const model = new OpenAIEmbeddings(obj, { basePath }) + if (basePath) obj.configuration = { baseURL: basePath } + + const model = new OpenAIEmbeddings(obj) return model } diff --git a/packages/components/nodes/embeddings/OpenAIEmbedding/OpenAIEmbedding.ts b/packages/components/nodes/embeddings/OpenAIEmbedding/OpenAIEmbedding.ts index 48be7c56a1e..f11171812a1 100644 --- a/packages/components/nodes/embeddings/OpenAIEmbedding/OpenAIEmbedding.ts +++ b/packages/components/nodes/embeddings/OpenAIEmbedding/OpenAIEmbedding.ts @@ -1,4 +1,4 @@ -import { OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' +import { ClientOptions, OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { MODEL_TYPE, getModels } from '../../../src/modelLoader' @@ -97,7 +97,7 @@ class OpenAIEmbedding_Embeddings implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const openAIApiKey = getCredentialParam('openAIApiKey', credentialData, nodeData) - const obj: Partial & { openAIApiKey?: string } = { + const obj: Partial & { openAIApiKey?: string; configuration?: ClientOptions } = { openAIApiKey, modelName } @@ -107,7 +107,13 @@ class OpenAIEmbedding_Embeddings implements INode { if (timeout) obj.timeout = parseInt(timeout, 10) if (dimensions) obj.dimensions = parseInt(dimensions, 10) - const model = new OpenAIEmbeddings(obj, { basePath }) + if (basePath) { + obj.configuration = { + baseURL: basePath + } + } + + const model = new OpenAIEmbeddings(obj) return model } } diff --git a/packages/components/nodes/embeddings/OpenAIEmbeddingCustom/OpenAIEmbeddingCustom.ts b/packages/components/nodes/embeddings/OpenAIEmbeddingCustom/OpenAIEmbeddingCustom.ts index d45ff498efc..d0e65a012a6 100644 --- a/packages/components/nodes/embeddings/OpenAIEmbeddingCustom/OpenAIEmbeddingCustom.ts +++ b/packages/components/nodes/embeddings/OpenAIEmbeddingCustom/OpenAIEmbeddingCustom.ts @@ -1,4 +1,4 @@ -import { OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' +import { ClientOptions, OpenAIEmbeddings, OpenAIEmbeddingsParams } from '@langchain/openai' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' @@ -17,7 +17,7 @@ class OpenAIEmbeddingCustom_Embeddings implements INode { constructor() { this.label = 'OpenAI Embeddings Custom' this.name = 'openAIEmbeddingsCustom' - this.version = 2.0 + this.version = 3.0 this.type = 'OpenAIEmbeddingsCustom' this.icon = 'openai.svg' this.category = 'Embeddings' @@ -58,6 +58,13 @@ class OpenAIEmbeddingCustom_Embeddings implements INode { optional: true, additionalParams: true }, + { + label: 'BaseOptions', + name: 'baseOptions', + type: 'json', + optional: true, + additionalParams: true + }, { label: 'Model Name', name: 'modelName', @@ -81,11 +88,12 @@ class OpenAIEmbeddingCustom_Embeddings implements INode { const basePath = nodeData.inputs?.basepath as string const modelName = nodeData.inputs?.modelName as string const dimensions = nodeData.inputs?.dimensions as string + const baseOptions = nodeData.inputs?.baseOptions const credentialData = await getCredentialData(nodeData.credential ?? '', options) const openAIApiKey = getCredentialParam('openAIApiKey', credentialData, nodeData) - const obj: Partial & { openAIApiKey?: string } = { + const obj: Partial & { openAIApiKey?: string; configuration?: ClientOptions } = { openAIApiKey } @@ -95,7 +103,23 @@ class OpenAIEmbeddingCustom_Embeddings implements INode { if (modelName) obj.modelName = modelName if (dimensions) obj.dimensions = parseInt(dimensions, 10) - const model = new OpenAIEmbeddings(obj, { basePath }) + let parsedBaseOptions: any | undefined = undefined + if (baseOptions) { + try { + parsedBaseOptions = typeof baseOptions === 'object' ? baseOptions : JSON.parse(baseOptions) + } catch (exception) { + throw new Error("Invalid JSON in the ChatOpenAI's BaseOptions: " + exception) + } + } + + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new OpenAIEmbeddings(obj) return model } } diff --git a/packages/components/nodes/engine/ChatEngine/ContextChatEngine.ts b/packages/components/nodes/engine/ChatEngine/ContextChatEngine.ts index a5bacaad070..35b6ae069b4 100644 --- a/packages/components/nodes/engine/ChatEngine/ContextChatEngine.ts +++ b/packages/components/nodes/engine/ChatEngine/ContextChatEngine.ts @@ -1,4 +1,13 @@ -import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { + FlowiseMemory, + ICommonObject, + IMessage, + INode, + INodeData, + INodeOutputsValue, + INodeParams, + IServerSideEventStreamer +} from '../../../src/Interface' import { Metadata, BaseRetriever, LLM, ContextChatEngine, ChatMessage, NodeWithScore } from 'llamaindex' import { reformatSourceDocuments } from '../EngineUtils' @@ -103,24 +112,33 @@ class ContextChatEngine_LlamaIndex implements INode { let isStreamingStarted = false let sourceDocuments: ICommonObject[] = [] let sourceNodes: NodeWithScore[] = [] - const isStreamingEnabled = options.socketIO && options.socketIOClientId - if (isStreamingEnabled) { + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (shouldStreamResponse) { const stream = await chatEngine.chat({ message: input, chatHistory, stream: true }) for await (const chunk of stream) { text += chunk.response if (chunk.sourceNodes) sourceNodes = chunk.sourceNodes if (!isStreamingStarted) { isStreamingStarted = true - options.socketIO.to(options.socketIOClientId).emit('start', chunk.response) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.response) + } } - options.socketIO.to(options.socketIOClientId).emit('token', chunk.response) + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.response) + } } if (returnSourceDocuments) { sourceDocuments = reformatSourceDocuments(sourceNodes) - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', sourceDocuments) + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, sourceDocuments) + } } } else { const response = await chatEngine.chat({ message: input, chatHistory }) diff --git a/packages/components/nodes/engine/ChatEngine/SimpleChatEngine.ts b/packages/components/nodes/engine/ChatEngine/SimpleChatEngine.ts index 5734288d1da..e6045fda6c6 100644 --- a/packages/components/nodes/engine/ChatEngine/SimpleChatEngine.ts +++ b/packages/components/nodes/engine/ChatEngine/SimpleChatEngine.ts @@ -1,4 +1,13 @@ -import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { + FlowiseMemory, + ICommonObject, + IMessage, + INode, + INodeData, + INodeOutputsValue, + INodeParams, + IServerSideEventStreamer +} from '../../../src/Interface' import { LLM, ChatMessage, SimpleChatEngine } from 'llamaindex' class SimpleChatEngine_LlamaIndex implements INode { @@ -86,18 +95,24 @@ class SimpleChatEngine_LlamaIndex implements INode { let text = '' let isStreamingStarted = false - const isStreamingEnabled = options.socketIO && options.socketIOClientId - if (isStreamingEnabled) { + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (shouldStreamResponse) { const stream = await chatEngine.chat({ message: input, chatHistory, stream: true }) for await (const chunk of stream) { text += chunk.response if (!isStreamingStarted) { isStreamingStarted = true - options.socketIO.to(options.socketIOClientId).emit('start', chunk.response) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.response) + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.response) } - - options.socketIO.to(options.socketIOClientId).emit('token', chunk.response) } } else { const response = await chatEngine.chat({ message: input, chatHistory }) diff --git a/packages/components/nodes/engine/QueryEngine/QueryEngine.ts b/packages/components/nodes/engine/QueryEngine/QueryEngine.ts index 7d8d4fe4cad..14eb3c5de1d 100644 --- a/packages/components/nodes/engine/QueryEngine/QueryEngine.ts +++ b/packages/components/nodes/engine/QueryEngine/QueryEngine.ts @@ -1,4 +1,4 @@ -import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { RetrieverQueryEngine, ResponseSynthesizer, @@ -71,24 +71,32 @@ class QueryEngine_LlamaIndex implements INode { let sourceDocuments: ICommonObject[] = [] let sourceNodes: NodeWithScore[] = [] let isStreamingStarted = false - const isStreamingEnabled = options.socketIO && options.socketIOClientId - if (isStreamingEnabled) { + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (shouldStreamResponse) { const stream = await queryEngine.query({ query: input, stream: true }) for await (const chunk of stream) { text += chunk.response if (chunk.sourceNodes) sourceNodes = chunk.sourceNodes if (!isStreamingStarted) { isStreamingStarted = true - options.socketIO.to(options.socketIOClientId).emit('start', chunk.response) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.response) + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.response) } - - options.socketIO.to(options.socketIOClientId).emit('token', chunk.response) } if (returnSourceDocuments) { sourceDocuments = reformatSourceDocuments(sourceNodes) - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', sourceDocuments) + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, sourceDocuments) + } } } else { const response = await queryEngine.query({ query: input }) diff --git a/packages/components/nodes/engine/SubQuestionQueryEngine/SubQuestionQueryEngine.ts b/packages/components/nodes/engine/SubQuestionQueryEngine/SubQuestionQueryEngine.ts index eb6f85dccb4..6d8ceead9c4 100644 --- a/packages/components/nodes/engine/SubQuestionQueryEngine/SubQuestionQueryEngine.ts +++ b/packages/components/nodes/engine/SubQuestionQueryEngine/SubQuestionQueryEngine.ts @@ -1,5 +1,5 @@ import { flatten } from 'lodash' -import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IServerSideEventStreamer } from '../../../src/Interface' import { TreeSummarize, SimpleResponseBuilder, @@ -88,24 +88,32 @@ class SubQuestionQueryEngine_LlamaIndex implements INode { let sourceDocuments: ICommonObject[] = [] let sourceNodes: NodeWithScore[] = [] let isStreamingStarted = false - const isStreamingEnabled = options.socketIO && options.socketIOClientId - if (isStreamingEnabled) { + const shouldStreamResponse = options.shouldStreamResponse + const sseStreamer: IServerSideEventStreamer = options.sseStreamer as IServerSideEventStreamer + const chatId = options.chatId + + if (shouldStreamResponse) { const stream = await queryEngine.query({ query: input, stream: true }) for await (const chunk of stream) { text += chunk.response if (chunk.sourceNodes) sourceNodes = chunk.sourceNodes if (!isStreamingStarted) { isStreamingStarted = true - options.socketIO.to(options.socketIOClientId).emit('start', chunk.response) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, chunk.response) + } + } + if (sseStreamer) { + sseStreamer.streamTokenEvent(chatId, chunk.response) } - - options.socketIO.to(options.socketIOClientId).emit('token', chunk.response) } if (returnSourceDocuments) { sourceDocuments = reformatSourceDocuments(sourceNodes) - options.socketIO.to(options.socketIOClientId).emit('sourceDocuments', sourceDocuments) + if (sseStreamer) { + sseStreamer.streamSourceDocumentsEvent(chatId, sourceDocuments) + } } } else { const response = await queryEngine.query({ query: input }) diff --git a/packages/components/nodes/graphs/Neo4j/Neo4j.ts b/packages/components/nodes/graphs/Neo4j/Neo4j.ts new file mode 100644 index 00000000000..e1214b92fb8 --- /dev/null +++ b/packages/components/nodes/graphs/Neo4j/Neo4j.ts @@ -0,0 +1,80 @@ +import { getBaseClasses, getCredentialData } from '../../../src/utils' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { Neo4jGraph } from '@langchain/community/graphs/neo4j_graph' + +class Neo4j_Graphs implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Neo4j' + this.name = 'Neo4j' + this.version = 1.0 + this.type = 'Neo4j' + this.icon = 'neo4j.svg' + this.category = 'Graph' + this.description = 'Connect with Neo4j graph database' + this.baseClasses = [this.type, ...getBaseClasses(Neo4jGraph)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['neo4jApi'] + } + this.inputs = [ + { + label: 'Database', + name: 'database', + type: 'string', + placeholder: 'neo4j', + optional: true + }, + { + label: 'Timeout (ms)', + name: 'timeoutMs', + type: 'number', + default: 5000, + optional: true + }, + { + label: 'Enhanced Schema', + name: 'enhancedSchema', + type: 'boolean', + default: false, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const database = nodeData.inputs?.database as string + const timeoutMs = nodeData.inputs?.timeoutMs as number + const enhancedSchema = nodeData.inputs?.enhancedSchema as boolean + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + + const neo4jConfig = { + url: credentialData?.url, + username: credentialData?.username, + password: credentialData?.password + } + + const neo4jGraph = await Neo4jGraph.initialize({ + ...neo4jConfig, + ...(database && { database }), + ...(timeoutMs && { timeoutMs }), + ...(enhancedSchema && { enhancedSchema }) + }) + + return neo4jGraph + } +} + +module.exports = { nodeClass: Neo4j_Graphs } diff --git a/packages/components/nodes/graphs/Neo4j/neo4j.svg b/packages/components/nodes/graphs/Neo4j/neo4j.svg new file mode 100644 index 00000000000..2de29da77bd --- /dev/null +++ b/packages/components/nodes/graphs/Neo4j/neo4j.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/llms/Azure OpenAI/AzureOpenAI.ts b/packages/components/nodes/llms/Azure OpenAI/AzureOpenAI.ts index 0996699374e..86689d23485 100644 --- a/packages/components/nodes/llms/Azure OpenAI/AzureOpenAI.ts +++ b/packages/components/nodes/llms/Azure OpenAI/AzureOpenAI.ts @@ -1,10 +1,16 @@ -import { AzureOpenAIInput, OpenAI, OpenAIInput } from '@langchain/openai' +import { AzureOpenAIInput, AzureOpenAI, OpenAIInput } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' import { BaseLLMParams } from '@langchain/core/language_models/llms' import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' +const serverCredentialsExists = + !!process.env.AZURE_OPENAI_API_KEY && + !!process.env.AZURE_OPENAI_API_INSTANCE_NAME && + !!process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME && + !!process.env.AZURE_OPENAI_API_VERSION + class AzureOpenAI_LLMs implements INode { label: string name: string @@ -25,12 +31,13 @@ class AzureOpenAI_LLMs implements INode { this.icon = 'Azure.svg' this.category = 'LLMs' this.description = 'Wrapper around Azure OpenAI large language models' - this.baseClasses = [this.type, ...getBaseClasses(OpenAI)] + this.baseClasses = [this.type, ...getBaseClasses(AzureOpenAI)] this.credential = { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['azureOpenAIApi'] + credentialNames: ['azureOpenAIApi'], + optional: serverCredentialsExists } this.inputs = [ { @@ -158,7 +165,7 @@ class AzureOpenAI_LLMs implements INode { if (cache) obj.cache = cache if (basePath) obj.azureOpenAIBasePath = basePath - const model = new OpenAI(obj) + const model = new AzureOpenAI(obj) return model } } diff --git a/packages/components/nodes/llms/Azure OpenAI/README.md b/packages/components/nodes/llms/Azure OpenAI/README.md new file mode 100644 index 00000000000..9d7dd4a5044 --- /dev/null +++ b/packages/components/nodes/llms/Azure OpenAI/README.md @@ -0,0 +1,16 @@ +# Azure OpenAI LLM + +Azure OpenAI LLM integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| -------------------------------- | ---------------------------------------------------------------------- | ------ | ------- | +| AZURE_OPENAI_API_KEY | Default `credential.azureOpenAIApiKey` for Azure OpenAI LLM | String | | +| AZURE_OPENAI_API_INSTANCE_NAME | Default `credential.azureOpenAIApiInstanceName` for Azure OpenAI LLM | String | | +| AZURE_OPENAI_API_DEPLOYMENT_NAME | Default `credential.azureOpenAIApiDeploymentName` for Azure OpenAI LLM | String | | +| AZURE_OPENAI_API_VERSION | Default `credential.azureOpenAIApiVersion` for Azure OpenAI LLM | String | | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/llms/GooglePaLM/GooglePaLM.svg b/packages/components/nodes/llms/GooglePaLM/GooglePaLM.svg deleted file mode 100644 index ed47326a9ae..00000000000 --- a/packages/components/nodes/llms/GooglePaLM/GooglePaLM.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/components/nodes/llms/GooglePaLM/GooglePaLM.ts b/packages/components/nodes/llms/GooglePaLM/GooglePaLM.ts deleted file mode 100644 index 8e7198394be..00000000000 --- a/packages/components/nodes/llms/GooglePaLM/GooglePaLM.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { GooglePaLM, GooglePaLMTextInput } from '@langchain/community/llms/googlepalm' -import { BaseCache } from '@langchain/core/caches' -import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { getModels, MODEL_TYPE } from '../../../src/modelLoader' - -class GooglePaLM_LLMs implements INode { - label: string - name: string - version: number - type: string - icon: string - category: string - description: string - baseClasses: string[] - credential: INodeParams - inputs: INodeParams[] - - constructor() { - this.label = 'GooglePaLM' - this.name = 'GooglePaLM' - this.version = 3.0 - this.type = 'GooglePaLM' - this.icon = 'GooglePaLM.svg' - this.category = 'LLMs' - this.description = 'Wrapper around Google MakerSuite PaLM large language models' - this.baseClasses = [this.type, ...getBaseClasses(GooglePaLM)] - this.credential = { - label: 'Connect Credential', - name: 'credential', - type: 'credential', - credentialNames: ['googleMakerSuite'] - } - this.inputs = [ - { - label: 'Cache', - name: 'cache', - type: 'BaseCache', - optional: true - }, - { - label: 'Model Name', - name: 'modelName', - type: 'asyncOptions', - loadMethod: 'listModels', - default: 'models/text-bison-001' - }, - { - label: 'Temperature', - name: 'temperature', - type: 'number', - step: 0.1, - default: 0.7, - optional: true, - description: - 'Controls the randomness of the output.\n' + - 'Values can range from [0.0,1.0], inclusive. A value closer to 1.0 ' + - 'will produce responses that are more varied and creative, while ' + - 'a value closer to 0.0 will typically result in more straightforward ' + - 'responses from the model.' - }, - { - label: 'Max Output Tokens', - name: 'maxOutputTokens', - type: 'number', - step: 1, - optional: true, - additionalParams: true, - description: 'Maximum number of tokens to generate in the completion.' - }, - { - label: 'Top Probability', - name: 'topP', - type: 'number', - step: 0.1, - optional: true, - additionalParams: true, - description: - 'Top-p changes how the model selects tokens for output.\n' + - 'Tokens are selected from most probable to least until ' + - 'the sum of their probabilities equals the top-p value.\n' + - 'For example, if tokens A, B, and C have a probability of .3, .2, and .1 ' + - 'and the top-p value is .5, then the model will select either A or B ' + - 'as the next token (using temperature).' - }, - { - label: 'Top-k', - name: 'topK', - type: 'number', - step: 1, - optional: true, - additionalParams: true, - description: - 'Top-k changes how the model selects tokens for output.\n' + - 'A top-k of 1 means the selected token is the most probable among ' + - 'all tokens in the model vocabulary (also called greedy decoding), ' + - 'while a top-k of 3 means that the next token is selected from ' + - 'among the 3 most probable tokens (using temperature).' - }, - { - label: 'Stop Sequences', - name: 'stopSequencesObj', - type: 'json', - optional: true, - additionalParams: true - //default: { list:[] }, - //description: - // 'The "list" field should contain a list of character strings (up to 5) that will stop output generation.\n' + - // ' * If specified, the API will stop at the first appearance of a stop sequence.\n' + - // 'Note: The stop sequence will not be included as part of the response.' - } - /* - { - label: 'Safety Settings', - name: 'safetySettings', - type: 'json', - optional: true, - additionalParams: true - } - */ - ] - } - - //@ts-ignore - loadMethods = { - async listModels(): Promise { - return await getModels(MODEL_TYPE.LLM, 'GooglePaLM') - } - } - - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const modelName = nodeData.inputs?.modelName as string - const temperature = nodeData.inputs?.temperature as string - const maxOutputTokens = nodeData.inputs?.maxOutputTokens as string - const topP = nodeData.inputs?.topP as string - const topK = nodeData.inputs?.topK as string - const stopSequencesObj = nodeData.inputs?.stopSequencesObj - const cache = nodeData.inputs?.cache as BaseCache - - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const googleMakerSuiteKey = getCredentialParam('googleMakerSuiteKey', credentialData, nodeData) - - const obj: Partial = { - modelName: modelName, - temperature: parseFloat(temperature), - apiKey: googleMakerSuiteKey - } - - if (maxOutputTokens) obj.maxOutputTokens = parseInt(maxOutputTokens, 10) - if (topP) obj.topP = parseFloat(topP) - if (topK) obj.topK = parseFloat(topK) - if (cache) obj.cache = cache - - let parsedStopSequences: any | undefined = undefined - if (stopSequencesObj) { - try { - parsedStopSequences = typeof stopSequencesObj === 'object' ? stopSequencesObj : JSON.parse(stopSequencesObj) - obj.stopSequences = parsedStopSequences.list || [] - } catch (exception) { - throw new Error("Invalid JSON in the GooglePaLM's stopSequences: " + exception) - } - } - - const model = new GooglePaLM(obj) - return model - } -} - -module.exports = { nodeClass: GooglePaLM_LLMs } diff --git a/packages/components/nodes/llms/GoogleVertexAI/GoogleVertexAI.ts b/packages/components/nodes/llms/GoogleVertexAI/GoogleVertexAI.ts index 3a02a764be9..fa6ec0000c0 100644 --- a/packages/components/nodes/llms/GoogleVertexAI/GoogleVertexAI.ts +++ b/packages/components/nodes/llms/GoogleVertexAI/GoogleVertexAI.ts @@ -1,6 +1,5 @@ -import { GoogleAuthOptions } from 'google-auth-library' import { BaseCache } from '@langchain/core/caches' -import { GoogleVertexAI, GoogleVertexAITextInput } from '@langchain/community/llms/googlevertexai' +import { VertexAI, VertexAIInput } from '@langchain/google-vertexai' import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' @@ -25,7 +24,7 @@ class GoogleVertexAI_LLMs implements INode { this.icon = 'GoogleVertex.svg' this.category = 'LLMs' this.description = 'Wrapper around GoogleVertexAI large language models' - this.baseClasses = [this.type, ...getBaseClasses(GoogleVertexAI)] + this.baseClasses = [this.type, ...getBaseClasses(VertexAI)] this.credential = { label: 'Connect Credential', name: 'credential', @@ -89,7 +88,7 @@ class GoogleVertexAI_LLMs implements INode { const googleApplicationCredential = getCredentialParam('googleApplicationCredential', credentialData, nodeData) const projectID = getCredentialParam('projectID', credentialData, nodeData) - const authOptions: GoogleAuthOptions = {} + const authOptions: any = {} if (Object.keys(credentialData).length !== 0) { if (!googleApplicationCredentialFilePath && !googleApplicationCredential) throw new Error('Please specify your Google Application Credential') @@ -112,7 +111,7 @@ class GoogleVertexAI_LLMs implements INode { const topP = nodeData.inputs?.topP as string const cache = nodeData.inputs?.cache as BaseCache - const obj: Partial = { + const obj: Partial = { temperature: parseFloat(temperature), model: modelName } @@ -122,7 +121,7 @@ class GoogleVertexAI_LLMs implements INode { if (topP) obj.topP = parseFloat(topP) if (cache) obj.cache = cache - const model = new GoogleVertexAI(obj) + const model = new VertexAI(obj) return model } } diff --git a/packages/components/nodes/llms/IBMWatsonx/IBMWatsonx.ts b/packages/components/nodes/llms/IBMWatsonx/IBMWatsonx.ts new file mode 100644 index 00000000000..8d138eb2592 --- /dev/null +++ b/packages/components/nodes/llms/IBMWatsonx/IBMWatsonx.ts @@ -0,0 +1,231 @@ +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src' +import { WatsonxLLM, WatsonxInputLLM } from '@langchain/community/llms/ibm' +import { WatsonxAuth } from '@langchain/community/dist/types/ibm' +import { BaseCache } from '@langchain/core/caches' + +class IBMWatsonx_LLMs implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'IBMWatsonx' + this.name = 'ibmWatsonx' + this.version = 1.0 + this.type = 'IBMWatsonx' + this.icon = 'ibm.png' + this.category = 'LLMs' + this.description = 'Wrapper around IBM watsonx.ai foundation models' + this.baseClasses = [this.type, ...getBaseClasses(WatsonxLLM)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['ibmWatsonx'] + } + this.inputs = [ + { + label: 'Cache', + name: 'cache', + type: 'BaseCache', + optional: true + }, + { + label: 'Model', + name: 'modelId', + type: 'string', + default: 'ibm/granite-13b-instruct-v2', + description: 'The name of the model to query.' + }, + { + label: 'Decoding Method', + name: 'decodingMethod', + type: 'options', + options: [ + { label: 'sample', name: 'sample' }, + { label: 'greedy', name: 'greedy' } + ], + default: 'greedy', + description: + 'Set decoding to Greedy to always select words with the highest probability. Set decoding to Sampling to customize the variability of word selection.', + optional: true, + additionalParams: true + }, + { + label: 'Top K', + name: 'topK', + type: 'number', + description: + 'The topK parameter is used to limit the number of choices for the next predicted word or token. It specifies the maximum number of tokens to consider at each step, based on their probability of occurrence. This technique helps to speed up the generation process and can improve the quality of the generated text by focusing on the most likely options.', + step: 1, + default: 50, + optional: true, + additionalParams: true + }, + { + label: 'Top P', + name: 'topP', + type: 'number', + description: + 'The topP (nucleus) parameter is used to dynamically adjust the number of choices for each predicted token based on the cumulative probabilities. It specifies a probability threshold, below which all less likely tokens are filtered out. This technique helps to maintain diversity and generate more fluent and natural-sounding text.', + step: 0.1, + default: 0.7, + optional: true, + additionalParams: true + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + description: + 'A decimal number that determines the degree of randomness in the response. A value of 1 will always yield the same output. A temperature less than 1 favors more correctness and is appropriate for question answering or summarization. A value greater than 1 introduces more randomness in the output.', + step: 0.1, + default: 0.7, + optional: true, + additionalParams: true + }, + { + label: 'Repeat Penalty', + name: 'repetitionPenalty', + type: 'number', + description: + 'A number that controls the diversity of generated text by reducing the likelihood of repeated sequences. Higher values decrease repetition.', + step: 0.1, + default: 1, + optional: true, + additionalParams: true + }, + { + label: 'Streaming', + name: 'streaming', + type: 'boolean', + default: false, + description: 'Whether or not to stream tokens as they are generated.' + }, + { + label: 'Max New Tokens', + name: 'maxNewTokens', + type: 'number', + step: 1, + default: 100, + description: + 'The maximum number of new tokens to be generated. The maximum supported value for this field depends on the model being used.', + optional: true, + additionalParams: true + }, + { + label: 'Min New Tokens', + name: 'minNewTokens', + type: 'number', + step: 1, + default: 1, + description: 'If stop sequences are given, they are ignored until minimum tokens are generated.', + optional: true, + additionalParams: true + }, + { + label: 'Stop Sequence', + name: 'stopSequence', + type: 'string', + rows: 4, + placeholder: 'AI assistant:', + description: 'A list of tokens at which the generation should stop.', + optional: true, + additionalParams: true + }, + { + label: 'Include Stop Sequence', + name: 'includeStopSequence', + type: 'boolean', + default: false, + description: + 'Pass false to omit matched stop sequences from the end of the output text. The default is true, meaning that the output will end with the stop sequence text when matched.', + optional: true, + additionalParams: true + }, + { + label: 'Random Seed', + name: 'randomSeed', + type: 'number', + placeholder: '62345', + description: 'Random number generator seed to use in sampling mode for experimental repeatability.', + optional: true, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const decodingMethod = nodeData.inputs?.decodingMethod as string + const temperature = nodeData.inputs?.temperature as string + const maxNewTokens = nodeData.inputs?.maxNewTokens as string + const minNewTokens = nodeData.inputs?.minNewTokens as string + const topP = nodeData.inputs?.topP as string + const topK = nodeData.inputs?.topK as string + const repetitionPenalty = nodeData.inputs?.repetitionPenalty as string + const modelId = nodeData.inputs?.modelId as string + const stopSequence = nodeData.inputs?.stopSequence as string + const randomSeed = nodeData.inputs?.randomSeed as string + const includeStopSequence = nodeData.inputs?.includeStopSequence as boolean + const streaming = nodeData.inputs?.streaming as boolean + + const cache = nodeData.inputs?.cache as BaseCache + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const version = getCredentialParam('version', credentialData, nodeData) + const serviceUrl = getCredentialParam('serviceUrl', credentialData, nodeData) + const projectId = getCredentialParam('projectId', credentialData, nodeData) + const watsonxAIAuthType = getCredentialParam('watsonxAIAuthType', credentialData, nodeData) + const watsonxAIApikey = getCredentialParam('watsonxAIApikey', credentialData, nodeData) + const watsonxAIBearerToken = getCredentialParam('watsonxAIBearerToken', credentialData, nodeData) + + const auth = { + version, + serviceUrl, + projectId, + watsonxAIAuthType, + watsonxAIApikey, + watsonxAIBearerToken + } + + const obj: WatsonxInputLLM & WatsonxAuth = { + ...auth, + model: modelId, + streaming: streaming ?? true + } + + if (decodingMethod) obj.decodingMethod = decodingMethod + if (repetitionPenalty) obj.repetitionPenalty = parseFloat(repetitionPenalty) + if (maxNewTokens) obj.maxNewTokens = parseInt(maxNewTokens) + if (minNewTokens) obj.minNewTokens = parseInt(minNewTokens) + if (decodingMethod === 'sample') { + if (temperature) obj.temperature = parseFloat(temperature) + if (topP) obj.topP = parseFloat(topP) + if (topK) obj.topK = parseInt(topK) + } + if (stopSequence) { + obj.stopSequence = stopSequence.split(', ') || [''] + } + if (randomSeed) { + obj.randomSeed = parseInt(randomSeed) + } + if (includeStopSequence) { + obj.includeStopSequence = includeStopSequence + } + + if (cache) obj.cache = cache + + const watsonXAI = new WatsonxLLM(obj) + return watsonXAI + } +} + +module.exports = { nodeClass: IBMWatsonx_LLMs } diff --git a/packages/components/nodes/llms/IBMWatsonx/ibm.png b/packages/components/nodes/llms/IBMWatsonx/ibm.png new file mode 100644 index 00000000000..a3a4be58100 Binary files /dev/null and b/packages/components/nodes/llms/IBMWatsonx/ibm.png differ diff --git a/packages/components/nodes/llms/OpenAI/OpenAI.ts b/packages/components/nodes/llms/OpenAI/OpenAI.ts index 4f6ad726d52..06b237c01eb 100644 --- a/packages/components/nodes/llms/OpenAI/OpenAI.ts +++ b/packages/components/nodes/llms/OpenAI/OpenAI.ts @@ -1,4 +1,4 @@ -import { OpenAI, OpenAIInput } from '@langchain/openai' +import { ClientOptions, OpenAI, OpenAIInput } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' import { BaseLLMParams } from '@langchain/core/language_models/llms' import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' @@ -153,7 +153,7 @@ class OpenAI_LLMs implements INode { const cache = nodeData.inputs?.cache as BaseCache - const obj: Partial & BaseLLMParams & { openAIApiKey?: string } = { + const obj: Partial & BaseLLMParams & { configuration?: ClientOptions } = { temperature: parseFloat(temperature), modelName, openAIApiKey, @@ -179,10 +179,14 @@ class OpenAI_LLMs implements INode { } } - const model = new OpenAI(obj, { - basePath, - baseOptions: parsedBaseOptions - }) + if (basePath || parsedBaseOptions) { + obj.configuration = { + baseURL: basePath, + defaultHeaders: parsedBaseOptions + } + } + + const model = new OpenAI(obj) return model } } diff --git a/packages/components/nodes/memory/AgentMemory/AgentMemory.ts b/packages/components/nodes/memory/AgentMemory/AgentMemory.ts index 2542a73ed90..d317e138f1d 100644 --- a/packages/components/nodes/memory/AgentMemory/AgentMemory.ts +++ b/packages/components/nodes/memory/AgentMemory/AgentMemory.ts @@ -1,9 +1,11 @@ import path from 'path' -import { getBaseClasses, getUserHome } from '../../../src/utils' +import { getBaseClasses, getCredentialData, getCredentialParam, getUserHome } from '../../../src/utils' import { SaverOptions } from './interface' import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams } from '../../../src/Interface' -import { SqliteSaver } from './sqliteSaver' +import { SqliteSaver } from './SQLiteAgentMemory/sqliteSaver' import { DataSource } from 'typeorm' +import { PostgresSaver } from './PostgresAgentMemory/pgSaver' +import { MySQLSaver } from './MySQLAgentMemory/mysqlSaver' class AgentMemory_Memory implements INode { label: string @@ -16,16 +18,25 @@ class AgentMemory_Memory implements INode { badge: string baseClasses: string[] inputs: INodeParams[] + credential: INodeParams constructor() { this.label = 'Agent Memory' this.name = 'agentMemory' - this.version = 1.0 + this.version = 2.0 this.type = 'AgentMemory' this.icon = 'agentmemory.svg' this.category = 'Memory' this.description = 'Memory for agentflow to remember the state of the conversation' this.baseClasses = [this.type, ...getBaseClasses(SqliteSaver)] + this.badge = 'DEPRECATING' + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['PostgresApi', 'MySQLApi'], + optional: true + } this.inputs = [ { label: 'Database', @@ -35,6 +46,14 @@ class AgentMemory_Memory implements INode { { label: 'SQLite', name: 'sqlite' + }, + { + label: 'PostgreSQL', + name: 'postgres' + }, + { + label: 'MySQL', + name: 'mysql' } ], default: 'sqlite' @@ -49,6 +68,30 @@ class AgentMemory_Memory implements INode { additionalParams: true, optional: true }, + { + label: 'Host', + name: 'host', + type: 'string', + description: 'If PostgresQL/MySQL is selected, provide the host of the database', + additionalParams: true, + optional: true + }, + { + label: 'Database', + name: 'database', + type: 'string', + description: 'If PostgresQL/MySQL is selected, provide the name of the database', + additionalParams: true, + optional: true + }, + { + label: 'Port', + name: 'port', + type: 'number', + description: 'If PostgresQL/MySQL is selected, provide the port of the database', + additionalParams: true, + optional: true + }, { label: 'Additional Connection Configuration', name: 'additionalConfig', @@ -78,7 +121,7 @@ class AgentMemory_Memory implements INode { const threadId = options.sessionId || options.chatId - const datasourceOptions: ICommonObject = { + let datasourceOptions: ICommonObject = { ...additionalConfiguration, type: databaseType } @@ -96,6 +139,55 @@ class AgentMemory_Memory implements INode { } const recordManager = new SqliteSaver(args) return recordManager + } else if (databaseType === 'postgres') { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const user = getCredentialParam('user', credentialData, nodeData) + const password = getCredentialParam('password', credentialData, nodeData) + const _port = (nodeData.inputs?.port as string) || '5432' + const port = parseInt(_port) + datasourceOptions = { + ...datasourceOptions, + host: nodeData.inputs?.host as string, + port, + database: nodeData.inputs?.database as string, + username: user, + user: user, + password: password + } + const args: SaverOptions = { + datasourceOptions, + threadId, + appDataSource, + databaseEntities, + chatflowid + } + const recordManager = new PostgresSaver(args) + return recordManager + } else if (databaseType === 'mysql') { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const user = getCredentialParam('user', credentialData, nodeData) + const password = getCredentialParam('password', credentialData, nodeData) + const _port = (nodeData.inputs?.port as string) || '3306' + const port = parseInt(_port) + datasourceOptions = { + ...datasourceOptions, + host: nodeData.inputs?.host as string, + port, + database: nodeData.inputs?.database as string, + username: user, + user: user, + password: password, + charset: 'utf8mb4' + } + const args: SaverOptions = { + datasourceOptions, + threadId, + appDataSource, + databaseEntities, + chatflowid + } + const recordManager = new MySQLSaver(args) + return recordManager } return undefined diff --git a/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/MySQLAgentMemory.ts b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/MySQLAgentMemory.ts new file mode 100644 index 00000000000..af3ebe6191b --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/MySQLAgentMemory.ts @@ -0,0 +1,112 @@ +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../../src/utils' +import { SaverOptions } from '../interface' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams } from '../../../../src/Interface' +import { DataSource } from 'typeorm' +import { MySQLSaver } from './mysqlSaver' + +class MySQLAgentMemory_Memory implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + badge: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'MySQL Agent Memory' + this.name = 'mySQLAgentMemory' + this.version = 1.0 + this.type = 'AgentMemory' + this.icon = 'mysql.png' + this.category = 'Memory' + this.description = 'Memory for agentflow to remember the state of the conversation using MySQL database' + this.baseClasses = [this.type, ...getBaseClasses(MySQLSaver)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['MySQLApi'], + optional: true + } + this.inputs = [ + { + label: 'Host', + name: 'host', + type: 'string' + }, + { + label: 'Database', + name: 'database', + type: 'string' + }, + { + label: 'Port', + name: 'port', + type: 'number', + default: '3306' + }, + { + label: 'Additional Connection Configuration', + name: 'additionalConfig', + type: 'json', + additionalParams: true, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const additionalConfig = nodeData.inputs?.additionalConfig as string + const databaseEntities = options.databaseEntities as IDatabaseEntity + const chatflowid = options.chatflowid as string + const appDataSource = options.appDataSource as DataSource + + let additionalConfiguration = {} + if (additionalConfig) { + try { + additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) + } catch (exception) { + throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + } + } + + const threadId = options.sessionId || options.chatId + + let datasourceOptions: ICommonObject = { + ...additionalConfiguration, + type: 'mysql' + } + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const user = getCredentialParam('user', credentialData, nodeData) + const password = getCredentialParam('password', credentialData, nodeData) + const _port = (nodeData.inputs?.port as string) || '3306' + const port = parseInt(_port) + datasourceOptions = { + ...datasourceOptions, + host: nodeData.inputs?.host as string, + port, + database: nodeData.inputs?.database as string, + username: user, + user: user, + password: password, + charset: 'utf8mb4' + } + const args: SaverOptions = { + datasourceOptions, + threadId, + appDataSource, + databaseEntities, + chatflowid + } + const recordManager = new MySQLSaver(args) + return recordManager + } +} + +module.exports = { nodeClass: MySQLAgentMemory_Memory } diff --git a/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysql.png b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysql.png new file mode 100644 index 00000000000..11c2d8b2e83 Binary files /dev/null and b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysql.png differ diff --git a/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysqlSaver.ts b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysqlSaver.ts new file mode 100644 index 00000000000..5b41b08874b --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysqlSaver.ts @@ -0,0 +1,267 @@ +import { BaseCheckpointSaver, Checkpoint, CheckpointMetadata } from '@langchain/langgraph' +import { RunnableConfig } from '@langchain/core/runnables' +import { BaseMessage } from '@langchain/core/messages' +import { DataSource } from 'typeorm' +import { CheckpointTuple, SaverOptions, SerializerProtocol } from '../interface' +import { IMessage, MemoryMethods } from '../../../../src/Interface' +import { mapChatMessageToBaseMessage } from '../../../../src/utils' + +export class MySQLSaver extends BaseCheckpointSaver implements MemoryMethods { + protected isSetup: boolean + config: SaverOptions + threadId: string + tableName = 'checkpoints' + + constructor(config: SaverOptions, serde?: SerializerProtocol) { + super(serde) + this.config = config + const { threadId } = config + this.threadId = threadId + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { datasourceOptions } = this.config + if (!datasourceOptions) { + throw new Error('No datasource options provided') + } + // Prevent using default Postgres port, otherwise will throw uncaught error and crashing the app + if (datasourceOptions.port === 5432) { + throw new Error('Invalid port number') + } + const dataSource = new DataSource(datasourceOptions) + await dataSource.initialize() + return dataSource + } + + private async setup(dataSource: DataSource): Promise { + if (this.isSetup) return + + try { + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + await queryRunner.manager.query(` + CREATE TABLE IF NOT EXISTS ${tableName} ( + thread_id VARCHAR(255) NOT NULL, + checkpoint_id VARCHAR(255) NOT NULL, + parent_id VARCHAR(255), + checkpoint BLOB, + metadata BLOB, + PRIMARY KEY (thread_id, checkpoint_id) + );`) + await queryRunner.release() + } catch (error) { + console.error(`Error creating ${this.tableName} table`, error) + throw new Error(`Error creating ${this.tableName} table`) + } + + this.isSetup = true + } + + async getTuple(config: RunnableConfig): Promise { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + const thread_id = config.configurable?.thread_id || this.threadId + const checkpoint_id = config.configurable?.checkpoint_id + const tableName = this.sanitizeTableName(this.tableName) + + try { + const queryRunner = dataSource.createQueryRunner() + const sql = checkpoint_id + ? `SELECT checkpoint, parent_id, metadata FROM ${tableName} WHERE thread_id = ? AND checkpoint_id = ?` + : `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = ? ORDER BY checkpoint_id DESC LIMIT 1` + + const rows = await queryRunner.manager.query(sql, checkpoint_id ? [thread_id, checkpoint_id] : [thread_id]) + await queryRunner.release() + + if (rows && rows.length > 0) { + const row = rows[0] + return { + config: { + configurable: { + thread_id: row.thread_id || thread_id, + checkpoint_id: row.checkpoint_id || checkpoint_id + } + }, + checkpoint: (await this.serde.parse(row.checkpoint.toString())) as Checkpoint, + metadata: (await this.serde.parse(row.metadata.toString())) as CheckpointMetadata, + parentConfig: row.parent_id + ? { + configurable: { + thread_id, + checkpoint_id: row.parent_id + } + } + : undefined + } + } + } catch (error) { + console.error(`Error retrieving ${this.tableName}`, error) + throw new Error(`Error retrieving ${this.tableName}`) + } finally { + await dataSource.destroy() + } + return undefined + } + + async *list(config: RunnableConfig, limit?: number, before?: RunnableConfig): AsyncGenerator { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + const queryRunner = dataSource.createQueryRunner() + try { + const threadId = config.configurable?.thread_id || this.threadId + const tableName = this.sanitizeTableName(this.tableName) + let sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = ? ${ + before ? 'AND checkpoint_id < ?' : '' + } ORDER BY checkpoint_id DESC` + if (limit) { + sql += ` LIMIT ${limit}` + } + const args = [threadId, before?.configurable?.checkpoint_id].filter(Boolean) + + const rows = await queryRunner.manager.query(sql, args) + await queryRunner.release() + + if (rows && rows.length > 0) { + for (const row of rows) { + yield { + config: { + configurable: { + thread_id: row.thread_id, + checkpoint_id: row.checkpoint_id + } + }, + checkpoint: (await this.serde.parse(row.checkpoint.toString())) as Checkpoint, + metadata: (await this.serde.parse(row.metadata.toString())) as CheckpointMetadata, + parentConfig: row.parent_id + ? { + configurable: { + thread_id: row.thread_id, + checkpoint_id: row.parent_id + } + } + : undefined + } + } + } + } catch (error) { + console.error(`Error listing checkpoints`, error) + throw new Error(`Error listing checkpoints`) + } finally { + await dataSource.destroy() + } + } + + async put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + if (!config.configurable?.checkpoint_id) return {} + try { + const queryRunner = dataSource.createQueryRunner() + const row = [ + config.configurable?.thread_id || this.threadId, + checkpoint.id, + config.configurable?.checkpoint_id, + Buffer.from(this.serde.stringify(checkpoint)), // Encode to binary + Buffer.from(this.serde.stringify(metadata)) // Encode to binary + ] + const tableName = this.sanitizeTableName(this.tableName) + + const query = `INSERT INTO ${tableName} (thread_id, checkpoint_id, parent_id, checkpoint, metadata) + VALUES (?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE checkpoint = VALUES(checkpoint), metadata = VALUES(metadata)` + + await queryRunner.manager.query(query, row) + await queryRunner.release() + } catch (error) { + console.error('Error saving checkpoint', error) + throw new Error('Error saving checkpoint') + } finally { + await dataSource.destroy() + } + + return { + configurable: { + thread_id: config.configurable?.thread_id || this.threadId, + checkpoint_id: checkpoint.id + } + } + } + + async delete(threadId: string): Promise { + if (!threadId) return + + const dataSource = await this.getDataSource() + await this.setup(dataSource) + const tableName = this.sanitizeTableName(this.tableName) + + try { + const queryRunner = dataSource.createQueryRunner() + const query = `DELETE FROM ${tableName} WHERE thread_id = ?;` + await queryRunner.manager.query(query, [threadId]) + await queryRunner.release() + } catch (error) { + console.error(`Error deleting thread_id ${threadId}`, error) + } finally { + await dataSource.destroy() + } + } + + async getChatMessages( + overrideSessionId = '', + returnBaseMessages = false, + prependMessages?: IMessage[] + ): Promise { + if (!overrideSessionId) return [] + + const chatMessage = await this.config.appDataSource.getRepository(this.config.databaseEntities['ChatMessage']).find({ + where: { + sessionId: overrideSessionId, + chatflowid: this.config.chatflowid + }, + order: { + createdDate: 'ASC' + } + }) + + if (prependMessages?.length) { + chatMessage.unshift(...prependMessages) + } + + if (returnBaseMessages) { + return await mapChatMessageToBaseMessage(chatMessage) + } + + let returnIMessages: IMessage[] = [] + for (const m of chatMessage) { + returnIMessages.push({ + message: m.content as string, + type: m.role + }) + } + + return returnIMessages + } + + async addChatMessages(): Promise { + // Empty as it's not being used + } + + async clearChatMessages(overrideSessionId = ''): Promise { + if (!overrideSessionId) return + await this.delete(overrideSessionId) + } +} diff --git a/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/PostgresAgentMemory.ts b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/PostgresAgentMemory.ts new file mode 100644 index 00000000000..cb6d041a6b2 --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/PostgresAgentMemory.ts @@ -0,0 +1,111 @@ +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../../src/utils' +import { SaverOptions } from '../interface' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams } from '../../../../src/Interface' +import { DataSource } from 'typeorm' +import { PostgresSaver } from './pgSaver' + +class PostgresAgentMemory_Memory implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + badge: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'Postgres Agent Memory' + this.name = 'postgresAgentMemory' + this.version = 1.0 + this.type = 'AgentMemory' + this.icon = 'postgres.svg' + this.category = 'Memory' + this.description = 'Memory for agentflow to remember the state of the conversation using Postgres database' + this.baseClasses = [this.type, ...getBaseClasses(PostgresSaver)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['PostgresApi'], + optional: true + } + this.inputs = [ + { + label: 'Host', + name: 'host', + type: 'string' + }, + { + label: 'Database', + name: 'database', + type: 'string' + }, + { + label: 'Port', + name: 'port', + type: 'number', + default: '5432' + }, + { + label: 'Additional Connection Configuration', + name: 'additionalConfig', + type: 'json', + additionalParams: true, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const additionalConfig = nodeData.inputs?.additionalConfig as string + const databaseEntities = options.databaseEntities as IDatabaseEntity + const chatflowid = options.chatflowid as string + const appDataSource = options.appDataSource as DataSource + + let additionalConfiguration = {} + if (additionalConfig) { + try { + additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) + } catch (exception) { + throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + } + } + + const threadId = options.sessionId || options.chatId + + let datasourceOptions: ICommonObject = { + ...additionalConfiguration, + type: 'postgres' + } + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const user = getCredentialParam('user', credentialData, nodeData) + const password = getCredentialParam('password', credentialData, nodeData) + const _port = (nodeData.inputs?.port as string) || '5432' + const port = parseInt(_port) + datasourceOptions = { + ...datasourceOptions, + host: nodeData.inputs?.host as string, + port, + database: nodeData.inputs?.database as string, + username: user, + user: user, + password: password + } + const args: SaverOptions = { + datasourceOptions, + threadId, + appDataSource, + databaseEntities, + chatflowid + } + const recordManager = new PostgresSaver(args) + return recordManager + } +} + +module.exports = { nodeClass: PostgresAgentMemory_Memory } diff --git a/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/pgSaver.ts b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/pgSaver.ts new file mode 100644 index 00000000000..5bc69f663b9 --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/pgSaver.ts @@ -0,0 +1,306 @@ +import { BaseCheckpointSaver, Checkpoint, CheckpointMetadata } from '@langchain/langgraph' +import { RunnableConfig } from '@langchain/core/runnables' +import { BaseMessage } from '@langchain/core/messages' +import { DataSource } from 'typeorm' +import { CheckpointTuple, SaverOptions, SerializerProtocol } from '../interface' +import { IMessage, MemoryMethods } from '../../../../src/Interface' +import { mapChatMessageToBaseMessage } from '../../../../src/utils' + +export class PostgresSaver extends BaseCheckpointSaver implements MemoryMethods { + protected isSetup: boolean + config: SaverOptions + threadId: string + tableName = 'checkpoints' + + constructor(config: SaverOptions, serde?: SerializerProtocol) { + super(serde) + this.config = config + const { threadId } = config + this.threadId = threadId + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { datasourceOptions } = this.config + if (!datasourceOptions) { + throw new Error('No datasource options provided') + } + // Prevent using default MySQL port, otherwise will throw uncaught error and crashing the app + if (datasourceOptions.port === 3006) { + throw new Error('Invalid port number') + } + const dataSource = new DataSource(datasourceOptions) + await dataSource.initialize() + return dataSource + } + + private async setup(dataSource: DataSource): Promise { + if (this.isSetup) { + return + } + + try { + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + await queryRunner.manager.query(` +CREATE TABLE IF NOT EXISTS ${tableName} ( + thread_id TEXT NOT NULL, + checkpoint_id TEXT NOT NULL, + parent_id TEXT, + checkpoint BYTEA, + metadata BYTEA, + PRIMARY KEY (thread_id, checkpoint_id));`) + await queryRunner.release() + } catch (error) { + console.error(`Error creating ${this.tableName} table`, error) + throw new Error(`Error creating ${this.tableName} table`) + } + + this.isSetup = true + } + + async getTuple(config: RunnableConfig): Promise { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + const thread_id = config.configurable?.thread_id || this.threadId + const checkpoint_id = config.configurable?.checkpoint_id + const tableName = this.sanitizeTableName(this.tableName) + + if (checkpoint_id) { + try { + const queryRunner = dataSource.createQueryRunner() + const keys = [thread_id, checkpoint_id] + const sql = `SELECT checkpoint, parent_id, metadata FROM ${tableName} WHERE thread_id = $1 AND checkpoint_id = $2` + + const rows = await queryRunner.manager.query(sql, keys) + await queryRunner.release() + + if (rows && rows.length > 0) { + return { + config, + checkpoint: (await this.serde.parse(rows[0].checkpoint.toString())) as Checkpoint, + metadata: (await this.serde.parse(rows[0].metadata.toString())) as CheckpointMetadata, + parentConfig: rows[0].parent_id + ? { + configurable: { + thread_id, + checkpoint_id: rows[0].parent_id + } + } + : undefined + } + } + } catch (error) { + console.error(`Error retrieving ${tableName}`, error) + throw new Error(`Error retrieving ${tableName}`) + } finally { + await dataSource.destroy() + } + } else { + try { + const queryRunner = dataSource.createQueryRunner() + const keys = [thread_id] + const sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = $1 ORDER BY checkpoint_id DESC LIMIT 1` + + const rows = await queryRunner.manager.query(sql, keys) + await queryRunner.release() + + if (rows && rows.length > 0) { + return { + config: { + configurable: { + thread_id: rows[0].thread_id, + checkpoint_id: rows[0].checkpoint_id + } + }, + checkpoint: (await this.serde.parse(rows[0].checkpoint)) as Checkpoint, + metadata: (await this.serde.parse(rows[0].metadata)) as CheckpointMetadata, + parentConfig: rows[0].parent_id + ? { + configurable: { + thread_id: rows[0].thread_id, + checkpoint_id: rows[0].parent_id + } + } + : undefined + } + } + } catch (error) { + console.error(`Error retrieving ${tableName}`, error) + throw new Error(`Error retrieving ${tableName}`) + } finally { + await dataSource.destroy() + } + } + return undefined + } + + async *list(config: RunnableConfig, limit?: number, before?: RunnableConfig): AsyncGenerator { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + const queryRunner = dataSource.createQueryRunner() + const thread_id = config.configurable?.thread_id || this.threadId + const tableName = this.sanitizeTableName(this.tableName) + let sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = $1` + const args = [thread_id] + + if (before?.configurable?.checkpoint_id) { + sql += ' AND checkpoint_id < $2' + args.push(before.configurable.checkpoint_id) + } + + sql += ' ORDER BY checkpoint_id DESC' + if (limit) { + sql += ` LIMIT ${limit}` + } + + try { + const rows = await queryRunner.manager.query(sql, args) + await queryRunner.release() + + if (rows && rows.length > 0) { + for (const row of rows) { + yield { + config: { + configurable: { + thread_id: row.thread_id, + checkpoint_id: row.checkpoint_id + } + }, + checkpoint: (await this.serde.parse(rows[0].checkpoint.toString())) as Checkpoint, + metadata: (await this.serde.parse(rows[0].metadata.toString())) as CheckpointMetadata, + parentConfig: row.parent_id + ? { + configurable: { + thread_id: row.thread_id, + checkpoint_id: row.parent_id + } + } + : undefined + } + } + } + } catch (error) { + console.error(`Error listing ${tableName}`, error) + throw new Error(`Error listing ${tableName}`) + } finally { + await dataSource.destroy() + } + } + + async put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise { + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + if (!config.configurable?.checkpoint_id) return {} + try { + const queryRunner = dataSource.createQueryRunner() + const row = [ + config.configurable?.thread_id || this.threadId, + checkpoint.id, + config.configurable?.checkpoint_id, + Buffer.from(this.serde.stringify(checkpoint)), // Encode to binary + Buffer.from(this.serde.stringify(metadata)) // Encode to binary + ] + const tableName = this.sanitizeTableName(this.tableName) + + const query = `INSERT INTO ${tableName} (thread_id, checkpoint_id, parent_id, checkpoint, metadata) + VALUES ($1, $2, $3, $4, $5) + ON CONFLICT (thread_id, checkpoint_id) + DO UPDATE SET checkpoint = EXCLUDED.checkpoint, metadata = EXCLUDED.metadata` + + await queryRunner.manager.query(query, row) + await queryRunner.release() + } catch (error) { + console.error('Error saving checkpoint', error) + throw new Error('Error saving checkpoint') + } finally { + await dataSource.destroy() + } + + return { + configurable: { + thread_id: config.configurable?.thread_id || this.threadId, + checkpoint_id: checkpoint.id + } + } + } + + async delete(threadId: string): Promise { + if (!threadId) { + return + } + + const dataSource = await this.getDataSource() + await this.setup(dataSource) + const tableName = this.sanitizeTableName(this.tableName) + + const query = `DELETE FROM "${tableName}" WHERE thread_id = $1;` + + try { + const queryRunner = dataSource.createQueryRunner() + await queryRunner.manager.query(query, [threadId]) + await queryRunner.release() + } catch (error) { + console.error(`Error deleting thread_id ${threadId}`, error) + } finally { + await dataSource.destroy() + } + } + + async getChatMessages( + overrideSessionId = '', + returnBaseMessages = false, + prependMessages?: IMessage[] + ): Promise { + if (!overrideSessionId) return [] + + const chatMessage = await this.config.appDataSource.getRepository(this.config.databaseEntities['ChatMessage']).find({ + where: { + sessionId: overrideSessionId, + chatflowid: this.config.chatflowid + }, + order: { + createdDate: 'ASC' + } + }) + + if (prependMessages?.length) { + chatMessage.unshift(...prependMessages) + } + + if (returnBaseMessages) { + return await mapChatMessageToBaseMessage(chatMessage) + } + + let returnIMessages: IMessage[] = [] + for (const m of chatMessage) { + returnIMessages.push({ + message: m.content as string, + type: m.role + }) + } + return returnIMessages + } + + async addChatMessages(): Promise { + // Empty as it's not being used + } + + async clearChatMessages(overrideSessionId = ''): Promise { + await this.delete(overrideSessionId) + } +} diff --git a/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/postgres.svg b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/postgres.svg new file mode 100644 index 00000000000..f631e7a842c --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/PostgresAgentMemory/postgres.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/SQLiteAgentMemory.ts b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/SQLiteAgentMemory.ts new file mode 100644 index 00000000000..b301e3a8830 --- /dev/null +++ b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/SQLiteAgentMemory.ts @@ -0,0 +1,87 @@ +import path from 'path' +import { getBaseClasses, getUserHome } from '../../../../src/utils' +import { SaverOptions } from '../interface' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams } from '../../../../src/Interface' +import { SqliteSaver } from './sqliteSaver' +import { DataSource } from 'typeorm' + +class SQLiteAgentMemory_Memory implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + badge: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'SQLite Agent Memory' + this.name = 'sqliteAgentMemory' + this.version = 1.0 + this.type = 'SQLiteAgentMemory' + this.icon = 'sqlite.png' + this.category = 'Memory' + this.description = 'Memory for agentflow to remember the state of the conversation using SQLite database' + this.baseClasses = [this.type, ...getBaseClasses(SqliteSaver)] + this.inputs = [ + /*{ + label: 'Database File Path', + name: 'databaseFilePath', + type: 'string', + placeholder: 'C:\\Users\\User\\.flowise\\database.sqlite', + description: 'Path to the SQLite database file. Leave empty to use default application database', + optional: true + },*/ + { + label: 'Additional Connection Configuration', + name: 'additionalConfig', + type: 'json', + additionalParams: true, + optional: true + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const additionalConfig = nodeData.inputs?.additionalConfig as string + const databaseEntities = options.databaseEntities as IDatabaseEntity + const chatflowid = options.chatflowid as string + const appDataSource = options.appDataSource as DataSource + + let additionalConfiguration = {} + if (additionalConfig) { + try { + additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) + } catch (exception) { + throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + } + } + + const threadId = options.sessionId || options.chatId + + const database = path.join(process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise'), 'database.sqlite') + + let datasourceOptions: ICommonObject = { + database, + ...additionalConfiguration, + type: 'sqlite' + } + + const args: SaverOptions = { + datasourceOptions, + threadId, + appDataSource, + databaseEntities, + chatflowid + } + + const recordManager = new SqliteSaver(args) + return recordManager + } +} + +module.exports = { nodeClass: SQLiteAgentMemory_Memory } diff --git a/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqlite.png b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqlite.png new file mode 100644 index 00000000000..9f35f2bdf3c Binary files /dev/null and b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqlite.png differ diff --git a/packages/components/nodes/memory/AgentMemory/sqliteSaver.ts b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqliteSaver.ts similarity index 55% rename from packages/components/nodes/memory/AgentMemory/sqliteSaver.ts rename to packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqliteSaver.ts index a8eace00dfd..351c7896185 100644 --- a/packages/components/nodes/memory/AgentMemory/sqliteSaver.ts +++ b/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqliteSaver.ts @@ -1,49 +1,60 @@ import { BaseCheckpointSaver, Checkpoint, CheckpointMetadata } from '@langchain/langgraph' import { RunnableConfig } from '@langchain/core/runnables' import { BaseMessage } from '@langchain/core/messages' -import { DataSource, QueryRunner } from 'typeorm' -import { CheckpointTuple, SaverOptions, SerializerProtocol } from './interface' -import { IMessage, MemoryMethods } from '../../../src/Interface' -import { mapChatMessageToBaseMessage } from '../../../src/utils' +import { DataSource } from 'typeorm' +import { CheckpointTuple, SaverOptions, SerializerProtocol } from '../interface' +import { IMessage, MemoryMethods } from '../../../../src/Interface' +import { mapChatMessageToBaseMessage } from '../../../../src/utils' export class SqliteSaver extends BaseCheckpointSaver implements MemoryMethods { protected isSetup: boolean - - datasource: DataSource - - queryRunner: QueryRunner - config: SaverOptions - threadId: string - tableName = 'checkpoints' constructor(config: SaverOptions, serde?: SerializerProtocol) { super(serde) this.config = config - const { datasourceOptions, threadId } = config + const { threadId } = config this.threadId = threadId - this.datasource = new DataSource(datasourceOptions) } - private async setup(): Promise { + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { datasourceOptions } = this.config + const dataSource = new DataSource(datasourceOptions) + await dataSource.initialize() + return dataSource + } + + private async setup(dataSource: DataSource): Promise { if (this.isSetup) { return } try { - const appDataSource = await this.datasource.initialize() - - this.queryRunner = appDataSource.createQueryRunner() - await this.queryRunner.manager.query(` -CREATE TABLE IF NOT EXISTS ${this.tableName} ( + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + await queryRunner.manager.query(` +CREATE TABLE IF NOT EXISTS ${tableName} ( thread_id TEXT NOT NULL, checkpoint_id TEXT NOT NULL, parent_id TEXT, checkpoint BLOB, metadata BLOB, PRIMARY KEY (thread_id, checkpoint_id));`) + await queryRunner.release() } catch (error) { console.error(`Error creating ${this.tableName} table`, error) throw new Error(`Error creating ${this.tableName} table`) @@ -53,16 +64,21 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( } async getTuple(config: RunnableConfig): Promise { - await this.setup() + const dataSource = await this.getDataSource() + await this.setup(dataSource) + const thread_id = config.configurable?.thread_id || this.threadId const checkpoint_id = config.configurable?.checkpoint_id + const tableName = this.sanitizeTableName(this.tableName) if (checkpoint_id) { try { + const queryRunner = dataSource.createQueryRunner() const keys = [thread_id, checkpoint_id] - const sql = `SELECT checkpoint, parent_id, metadata FROM ${this.tableName} WHERE thread_id = ? AND checkpoint_id = ?` + const sql = `SELECT checkpoint, parent_id, metadata FROM ${tableName} WHERE thread_id = ? AND checkpoint_id = ?` - const rows = await this.queryRunner.manager.query(sql, [...keys]) + const rows = await queryRunner.manager.query(sql, [...keys]) + await queryRunner.release() if (rows && rows.length > 0) { return { @@ -80,43 +96,58 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( } } } catch (error) { - console.error(`Error retrieving ${this.tableName}`, error) - throw new Error(`Error retrieving ${this.tableName}`) + console.error(`Error retrieving ${tableName}`, error) + throw new Error(`Error retrieving ${tableName}`) + } finally { + await dataSource.destroy() } } else { - const keys = [thread_id] - const sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${this.tableName} WHERE thread_id = ? ORDER BY checkpoint_id DESC LIMIT 1` + try { + const queryRunner = dataSource.createQueryRunner() + const keys = [thread_id] + const sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = ? ORDER BY checkpoint_id DESC LIMIT 1` - const rows = await this.queryRunner.manager.query(sql, [...keys]) + const rows = await queryRunner.manager.query(sql, [...keys]) + await queryRunner.release() - if (rows && rows.length > 0) { - return { - config: { - configurable: { - thread_id: rows[0].thread_id, - checkpoint_id: rows[0].checkpoint_id - } - }, - checkpoint: (await this.serde.parse(rows[0].checkpoint)) as Checkpoint, - metadata: (await this.serde.parse(rows[0].metadata)) as CheckpointMetadata, - parentConfig: rows[0].parent_id - ? { - configurable: { - thread_id: rows[0].thread_id, - checkpoint_id: rows[0].parent_id + if (rows && rows.length > 0) { + return { + config: { + configurable: { + thread_id: rows[0].thread_id, + checkpoint_id: rows[0].checkpoint_id + } + }, + checkpoint: (await this.serde.parse(rows[0].checkpoint)) as Checkpoint, + metadata: (await this.serde.parse(rows[0].metadata)) as CheckpointMetadata, + parentConfig: rows[0].parent_id + ? { + configurable: { + thread_id: rows[0].thread_id, + checkpoint_id: rows[0].parent_id + } } - } - : undefined + : undefined + } } + } catch (error) { + console.error(`Error retrieving ${tableName}`, error) + throw new Error(`Error retrieving ${tableName}`) + } finally { + await dataSource.destroy() } } return undefined } async *list(config: RunnableConfig, limit?: number, before?: RunnableConfig): AsyncGenerator { - await this.setup() + const dataSource = await this.getDataSource() + await this.setup(dataSource) + + const queryRunner = dataSource.createQueryRunner() const thread_id = config.configurable?.thread_id || this.threadId - let sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${this.tableName} WHERE thread_id = ? ${ + const tableName = this.sanitizeTableName(this.tableName) + let sql = `SELECT thread_id, checkpoint_id, parent_id, checkpoint, metadata FROM ${tableName} WHERE thread_id = ? ${ before ? 'AND checkpoint_id < ?' : '' } ORDER BY checkpoint_id DESC` if (limit) { @@ -125,7 +156,8 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( const args = [thread_id, before?.configurable?.checkpoint_id].filter(Boolean) try { - const rows = await this.queryRunner.manager.query(sql, [...args]) + const rows = await queryRunner.manager.query(sql, [...args]) + await queryRunner.release() if (rows && rows.length > 0) { for (const row of rows) { @@ -150,15 +182,20 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( } } } catch (error) { - console.error(`Error listing ${this.tableName}`, error) - throw new Error(`Error listing ${this.tableName}`) + console.error(`Error listing ${tableName}`, error) + throw new Error(`Error listing ${tableName}`) + } finally { + await dataSource.destroy() } } async put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise { - await this.setup() + const dataSource = await this.getDataSource() + await this.setup(dataSource) + if (!config.configurable?.checkpoint_id) return {} try { + const queryRunner = dataSource.createQueryRunner() const row = [ config.configurable?.thread_id || this.threadId, checkpoint.id, @@ -166,13 +203,16 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( this.serde.stringify(checkpoint), this.serde.stringify(metadata) ] + const tableName = this.sanitizeTableName(this.tableName) + const query = `INSERT OR REPLACE INTO ${tableName} (thread_id, checkpoint_id, parent_id, checkpoint, metadata) VALUES (?, ?, ?, ?, ?)` - const query = `INSERT OR REPLACE INTO ${this.tableName} (thread_id, checkpoint_id, parent_id, checkpoint, metadata) VALUES (?, ?, ?, ?, ?)` - - await this.queryRunner.manager.query(query, row) + await queryRunner.manager.query(query, row) + await queryRunner.release() } catch (error) { console.error('Error saving checkpoint', error) throw new Error('Error saving checkpoint') + } finally { + await dataSource.destroy() } return { @@ -187,13 +227,20 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( if (!threadId) { return } - await this.setup() - const query = `DELETE FROM "${this.tableName}" WHERE thread_id = ?;` + + const dataSource = await this.getDataSource() + await this.setup(dataSource) + const tableName = this.sanitizeTableName(this.tableName) + const query = `DELETE FROM "${tableName}" WHERE thread_id = ?;` try { - await this.queryRunner.manager.query(query, [threadId]) + const queryRunner = dataSource.createQueryRunner() + await queryRunner.manager.query(query, [threadId]) + await queryRunner.release() } catch (error) { console.error(`Error deleting thread_id ${threadId}`, error) + } finally { + await dataSource.destroy() } } @@ -219,7 +266,7 @@ CREATE TABLE IF NOT EXISTS ${this.tableName} ( } if (returnBaseMessages) { - return mapChatMessageToBaseMessage(chatMessage) + return await mapChatMessageToBaseMessage(chatMessage) } let returnIMessages: IMessage[] = [] diff --git a/packages/components/nodes/memory/BufferMemory/BufferMemory.ts b/packages/components/nodes/memory/BufferMemory/BufferMemory.ts index 63056007c5d..972301daf8b 100644 --- a/packages/components/nodes/memory/BufferMemory/BufferMemory.ts +++ b/packages/components/nodes/memory/BufferMemory/BufferMemory.ts @@ -117,7 +117,7 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { } if (returnBaseMessages) { - return mapChatMessageToBaseMessage(chatMessage) + return await mapChatMessageToBaseMessage(chatMessage) } let returnIMessages: IMessage[] = [] diff --git a/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts b/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts index 422cac55fcd..82cfd92916f 100644 --- a/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts +++ b/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts @@ -118,21 +118,23 @@ class BufferWindowMemoryExtended extends FlowiseWindowMemory implements MemoryMe sessionId: id, chatflowid: this.chatflowid }, - take: this.k + 1, order: { - createdDate: 'DESC' // we get the latest top K + createdDate: 'ASC' } }) - // reverse the order of human and ai messages - if (chatMessage.length) chatMessage.reverse() + if (this.k <= 0) { + chatMessage = [] + } else { + chatMessage = chatMessage.slice(-this.k * 2) + } if (prependMessages?.length) { chatMessage.unshift(...prependMessages) } if (returnBaseMessages) { - return mapChatMessageToBaseMessage(chatMessage) + return await mapChatMessageToBaseMessage(chatMessage) } let returnIMessages: IMessage[] = [] diff --git a/packages/components/nodes/memory/ConversationSummaryBufferMemory/ConversationSummaryBufferMemory.ts b/packages/components/nodes/memory/ConversationSummaryBufferMemory/ConversationSummaryBufferMemory.ts index 5f58b0ca823..c45f93484be 100644 --- a/packages/components/nodes/memory/ConversationSummaryBufferMemory/ConversationSummaryBufferMemory.ts +++ b/packages/components/nodes/memory/ConversationSummaryBufferMemory/ConversationSummaryBufferMemory.ts @@ -10,9 +10,10 @@ import { } from '../../../src/Interface' import { getBaseClasses, mapChatMessageToBaseMessage } from '../../../src/utils' import { BaseLanguageModel } from '@langchain/core/language_models/base' -import { BaseMessage, getBufferString } from '@langchain/core/messages' +import { BaseMessage, getBufferString, HumanMessage } from '@langchain/core/messages' import { ConversationSummaryBufferMemory, ConversationSummaryBufferMemoryInput } from 'langchain/memory' import { DataSource } from 'typeorm' +import { ChatAnthropic } from '../../chatmodels/ChatAnthropic/FlowiseChatAnthropic' class ConversationSummaryBufferMemory_Memory implements INode { label: string @@ -136,7 +137,7 @@ class ConversationSummaryBufferMemoryExtended extends FlowiseSummaryBufferMemory chatMessage.unshift(...prependMessages) } - let baseMessages = mapChatMessageToBaseMessage(chatMessage) + let baseMessages = await mapChatMessageToBaseMessage(chatMessage) // Prune baseMessages if it exceeds max token limit if (this.movingSummaryBuffer) { @@ -163,7 +164,12 @@ class ConversationSummaryBufferMemoryExtended extends FlowiseSummaryBufferMemory // ----------- Finished Pruning --------------- if (this.movingSummaryBuffer) { - baseMessages = [new this.summaryChatMessageClass(this.movingSummaryBuffer), ...baseMessages] + // Anthropic doesn't support multiple system messages + if (this.llm instanceof ChatAnthropic) { + baseMessages = [new HumanMessage(`Below is the summarized conversation:\n\n${this.movingSummaryBuffer}`), ...baseMessages] + } else { + baseMessages = [new this.summaryChatMessageClass(this.movingSummaryBuffer), ...baseMessages] + } } if (returnBaseMessages) { diff --git a/packages/components/nodes/memory/ConversationSummaryMemory/ConversationSummaryMemory.ts b/packages/components/nodes/memory/ConversationSummaryMemory/ConversationSummaryMemory.ts index bd1c5617d90..6c4d078baf7 100644 --- a/packages/components/nodes/memory/ConversationSummaryMemory/ConversationSummaryMemory.ts +++ b/packages/components/nodes/memory/ConversationSummaryMemory/ConversationSummaryMemory.ts @@ -10,9 +10,10 @@ import { } from '../../../src/Interface' import { getBaseClasses, mapChatMessageToBaseMessage } from '../../../src/utils' import { BaseLanguageModel } from '@langchain/core/language_models/base' -import { BaseMessage, SystemMessage } from '@langchain/core/messages' +import { BaseMessage, HumanMessage, SystemMessage } from '@langchain/core/messages' import { ConversationSummaryMemory, ConversationSummaryMemoryInput } from 'langchain/memory' import { DataSource } from 'typeorm' +import { ChatAnthropic } from '../../chatmodels/ChatAnthropic/FlowiseChatAnthropic' class ConversationSummaryMemory_Memory implements INode { label: string @@ -127,7 +128,7 @@ class ConversationSummaryMemoryExtended extends FlowiseSummaryMemory implements chatMessage.unshift(...prependMessages) } - const baseMessages = mapChatMessageToBaseMessage(chatMessage) + const baseMessages = await mapChatMessageToBaseMessage(chatMessage) // Get summary if (this.llm && typeof this.llm !== 'string') { @@ -135,7 +136,12 @@ class ConversationSummaryMemoryExtended extends FlowiseSummaryMemory implements } if (returnBaseMessages) { - return [new SystemMessage(this.buffer)] + // Anthropic doesn't support multiple system messages + if (this.llm instanceof ChatAnthropic) { + return [new HumanMessage(`Below is the summarized conversation:\n\n${this.buffer}`)] + } else { + return [new SystemMessage(this.buffer)] + } } if (this.buffer) { diff --git a/packages/components/nodes/memory/DynamoDb/DynamoDb.ts b/packages/components/nodes/memory/DynamoDb/DynamoDb.ts index 94525e96772..0ad0354f46c 100644 --- a/packages/components/nodes/memory/DynamoDb/DynamoDb.ts +++ b/packages/components/nodes/memory/DynamoDb/DynamoDb.ts @@ -260,7 +260,7 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { .filter((x): x is StoredMessage => x.type !== undefined && x.data.content !== undefined) const baseMessages = messages.map(mapStoredMessageToChatMessage) if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) } return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) } diff --git a/packages/components/nodes/memory/MongoDBMemory/MongoDBMemory.ts b/packages/components/nodes/memory/MongoDBMemory/MongoDBMemory.ts index 98979d9fab4..44832466ec8 100644 --- a/packages/components/nodes/memory/MongoDBMemory/MongoDBMemory.ts +++ b/packages/components/nodes/memory/MongoDBMemory/MongoDBMemory.ts @@ -1,5 +1,4 @@ -import { MongoClient, Collection, Document } from 'mongodb' -import { MongoDBChatMessageHistory } from '@langchain/mongodb' +import { MongoClient } from 'mongodb' import { BufferMemory, BufferMemoryInput } from 'langchain/memory' import { mapStoredMessageToChatMessage, AIMessage, HumanMessage, BaseMessage } from '@langchain/core/messages' import { @@ -7,28 +6,13 @@ import { getBaseClasses, getCredentialData, getCredentialParam, + getVersion, mapChatMessageToBaseMessage } from '../../../src/utils' import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeParams, MemoryMethods, MessageType } from '../../../src/Interface' -let mongoClientSingleton: MongoClient -let mongoUrl: string - -const getMongoClient = async (newMongoUrl: string) => { - if (!mongoClientSingleton) { - // if client does not exist - mongoClientSingleton = new MongoClient(newMongoUrl) - mongoUrl = newMongoUrl - return mongoClientSingleton - } else if (mongoClientSingleton && newMongoUrl !== mongoUrl) { - // if client exists but url changed - mongoClientSingleton.close() - mongoClientSingleton = new MongoClient(newMongoUrl) - mongoUrl = newMongoUrl - return mongoClientSingleton - } - return mongoClientSingleton -} +// TODO: Add ability to specify env variable and use singleton pattern (i.e initialize MongoDB on server and pass to component) + class MongoDB_Memory implements INode { label: string name: string @@ -102,62 +86,43 @@ const initializeMongoDB = async (nodeData: INodeData, options: ICommonObject): P const credentialData = await getCredentialData(nodeData.credential ?? '', options) const mongoDBConnectUrl = getCredentialParam('mongoDBConnectUrl', credentialData, nodeData) - - const client = await getMongoClient(mongoDBConnectUrl) - const collection = client.db(databaseName).collection(collectionName) - - const mongoDBChatMessageHistory = new MongoDBChatMessageHistory({ - collection, - sessionId - }) - - // @ts-ignore - mongoDBChatMessageHistory.getMessages = async (): Promise => { - const document = await collection.findOne({ - sessionId: (mongoDBChatMessageHistory as any).sessionId - }) - const messages = document?.messages || [] - return messages.map(mapStoredMessageToChatMessage) - } - - // @ts-ignore - mongoDBChatMessageHistory.addMessage = async (message: BaseMessage): Promise => { - const messages = [message].map((msg) => msg.toDict()) - await collection.updateOne( - { sessionId: (mongoDBChatMessageHistory as any).sessionId }, - { - $push: { messages: { $each: messages } } - }, - { upsert: true } - ) - } - - mongoDBChatMessageHistory.clear = async (): Promise => { - await collection.deleteOne({ sessionId: (mongoDBChatMessageHistory as any).sessionId }) - } + const driverInfo = { name: 'Flowise', version: (await getVersion()).version } return new BufferMemoryExtended({ memoryKey: memoryKey ?? 'chat_history', - // @ts-ignore - chatHistory: mongoDBChatMessageHistory, sessionId, - collection + mongoConnection: { + databaseName, + collectionName, + mongoDBConnectUrl, + driverInfo + } }) } interface BufferMemoryExtendedInput { - collection: Collection sessionId: string + mongoConnection: { + databaseName: string + collectionName: string + mongoDBConnectUrl: string + driverInfo: { name: string; version: string } + } } class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { sessionId = '' - collection: Collection + mongoConnection: { + databaseName: string + collectionName: string + mongoDBConnectUrl: string + driverInfo: { name: string; version: string } + } constructor(fields: BufferMemoryInput & BufferMemoryExtendedInput) { super(fields) this.sessionId = fields.sessionId - this.collection = fields.collection + this.mongoConnection = fields.mongoConnection } async getChatMessages( @@ -165,20 +130,24 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { returnBaseMessages = false, prependMessages?: IMessage[] ): Promise { - if (!this.collection) return [] + const client = new MongoClient(this.mongoConnection.mongoDBConnectUrl, { driverInfo: this.mongoConnection.driverInfo }) + const collection = client.db(this.mongoConnection.databaseName).collection(this.mongoConnection.collectionName) const id = overrideSessionId ? overrideSessionId : this.sessionId - const document = await this.collection.findOne({ sessionId: id }) + const document = await collection.findOne({ sessionId: id }) const messages = document?.messages || [] const baseMessages = messages.map(mapStoredMessageToChatMessage) if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) } + + await client.close() return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) } async addChatMessages(msgArray: { text: string; type: MessageType }[], overrideSessionId = ''): Promise { - if (!this.collection) return + const client = new MongoClient(this.mongoConnection.mongoDBConnectUrl, { driverInfo: this.mongoConnection.driverInfo }) + const collection = client.db(this.mongoConnection.databaseName).collection(this.mongoConnection.collectionName) const id = overrideSessionId ? overrideSessionId : this.sessionId const input = msgArray.find((msg) => msg.type === 'userMessage') @@ -187,7 +156,7 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { if (input) { const newInputMessage = new HumanMessage(input.text) const messageToAdd = [newInputMessage].map((msg) => msg.toDict()) - await this.collection.updateOne( + await collection.updateOne( { sessionId: id }, { $push: { messages: { $each: messageToAdd } } @@ -199,7 +168,7 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { if (output) { const newOutputMessage = new AIMessage(output.text) const messageToAdd = [newOutputMessage].map((msg) => msg.toDict()) - await this.collection.updateOne( + await collection.updateOne( { sessionId: id }, { $push: { messages: { $each: messageToAdd } } @@ -207,14 +176,19 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { { upsert: true } ) } + + await client.close() } async clearChatMessages(overrideSessionId = ''): Promise { - if (!this.collection) return + const client = new MongoClient(this.mongoConnection.mongoDBConnectUrl, { driverInfo: this.mongoConnection.driverInfo }) + const collection = client.db(this.mongoConnection.databaseName).collection(this.mongoConnection.collectionName) const id = overrideSessionId ? overrideSessionId : this.sessionId - await this.collection.deleteOne({ sessionId: id }) + await collection.deleteOne({ sessionId: id }) await this.clear() + + await client.close() } } diff --git a/packages/components/nodes/memory/RedisBackedChatMemory/RedisBackedChatMemory.ts b/packages/components/nodes/memory/RedisBackedChatMemory/RedisBackedChatMemory.ts index 9900b8cd0fe..2f4f3ca077b 100644 --- a/packages/components/nodes/memory/RedisBackedChatMemory/RedisBackedChatMemory.ts +++ b/packages/components/nodes/memory/RedisBackedChatMemory/RedisBackedChatMemory.ts @@ -1,7 +1,5 @@ import { Redis, RedisOptions } from 'ioredis' -import { isEqual } from 'lodash' import { BufferMemory, BufferMemoryInput } from 'langchain/memory' -import { RedisChatMessageHistory, RedisChatMessageHistoryInput } from '@langchain/community/stores/message/ioredis' import { mapStoredMessageToChatMessage, BaseMessage, AIMessage, HumanMessage } from '@langchain/core/messages' import { INode, INodeData, INodeParams, ICommonObject, MessageType, IMessage, MemoryMethods, FlowiseMemory } from '../../../src/Interface' import { @@ -12,42 +10,6 @@ import { mapChatMessageToBaseMessage } from '../../../src/utils' -let redisClientSingleton: Redis -let redisClientOption: RedisOptions -let redisClientUrl: string - -const getRedisClientbyOption = (option: RedisOptions) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } else if (redisClientSingleton && !isEqual(option, redisClientOption)) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } - return redisClientSingleton -} - -const getRedisClientbyUrl = (url: string) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } else if (redisClientSingleton && url !== redisClientUrl) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = new Redis(url) - redisClientUrl = url - return redisClientSingleton - } - return redisClientSingleton -} - class RedisBackedChatMemory_Memory implements INode { label: string name: string @@ -91,7 +53,7 @@ class RedisBackedChatMemory_Memory implements INode { label: 'Session Timeouts', name: 'sessionTTL', type: 'number', - description: 'Omit this parameter to make sessions never expire', + description: 'Seconds till a session expires. If not specified, the session will never expire.', additionalParams: true, optional: true }, @@ -114,11 +76,11 @@ class RedisBackedChatMemory_Memory implements INode { } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - return await initalizeRedis(nodeData, options) + return await initializeRedis(nodeData, options) } } -const initalizeRedis = async (nodeData: INodeData, options: ICommonObject): Promise => { +const initializeRedis = async (nodeData: INodeData, options: ICommonObject): Promise => { const sessionTTL = nodeData.inputs?.sessionTTL as number const memoryKey = nodeData.inputs?.memoryKey as string const sessionId = nodeData.inputs?.sessionId as string @@ -127,73 +89,55 @@ const initalizeRedis = async (nodeData: INodeData, options: ICommonObject): Prom const credentialData = await getCredentialData(nodeData.credential ?? '', options) const redisUrl = getCredentialParam('redisUrl', credentialData, nodeData) - let client: Redis - - if (!redisUrl || redisUrl === '') { - const username = getCredentialParam('redisCacheUser', credentialData, nodeData) - const password = getCredentialParam('redisCachePwd', credentialData, nodeData) - const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) - const host = getCredentialParam('redisCacheHost', credentialData, nodeData) - const sslEnabled = getCredentialParam('redisCacheSslEnabled', credentialData, nodeData) - - const tlsOptions = sslEnabled === true ? { tls: { rejectUnauthorized: false } } : {} - - client = getRedisClientbyOption({ - port: portStr ? parseInt(portStr) : 6379, - host, - username, - password, - ...tlsOptions - }) - } else { - client = getRedisClientbyUrl(redisUrl) - } - - let obj: RedisChatMessageHistoryInput = { - sessionId, - client - } - - if (sessionTTL) { - obj = { - ...obj, - sessionTTL - } - } - - const redisChatMessageHistory = new RedisChatMessageHistory(obj) + const redisOptions = redisUrl + ? redisUrl + : ({ + port: parseInt(getCredentialParam('redisCachePort', credentialData, nodeData) || '6379'), + host: getCredentialParam('redisCacheHost', credentialData, nodeData), + username: getCredentialParam('redisCacheUser', credentialData, nodeData), + password: getCredentialParam('redisCachePwd', credentialData, nodeData), + tls: getCredentialParam('redisCacheSslEnabled', credentialData, nodeData) ? { rejectUnauthorized: false } : undefined + } as RedisOptions) const memory = new BufferMemoryExtended({ memoryKey: memoryKey ?? 'chat_history', - chatHistory: redisChatMessageHistory, sessionId, windowSize, - redisClient: client, - sessionTTL + sessionTTL, + redisOptions }) return memory } interface BufferMemoryExtendedInput { - redisClient: Redis sessionId: string windowSize?: number sessionTTL?: number + redisOptions: RedisOptions | string } class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { sessionId = '' - redisClient: Redis windowSize?: number sessionTTL?: number + redisOptions: RedisOptions | string constructor(fields: BufferMemoryInput & BufferMemoryExtendedInput) { super(fields) this.sessionId = fields.sessionId - this.redisClient = fields.redisClient this.windowSize = fields.windowSize this.sessionTTL = fields.sessionTTL + this.redisOptions = fields.redisOptions + } + + private async withRedisClient(fn: (client: Redis) => Promise): Promise { + const client = typeof this.redisOptions === 'string' ? new Redis(this.redisOptions) : new Redis(this.redisOptions) + try { + return await fn(client) + } finally { + await client.quit() + } } async getChatMessages( @@ -201,46 +145,46 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { returnBaseMessages = false, prependMessages?: IMessage[] ): Promise { - if (!this.redisClient) return [] - - const id = overrideSessionId ? overrideSessionId : this.sessionId - const rawStoredMessages = await this.redisClient.lrange(id, this.windowSize ? this.windowSize * -1 : 0, -1) - const orderedMessages = rawStoredMessages.reverse().map((message) => JSON.parse(message)) - const baseMessages = orderedMessages.map(mapStoredMessageToChatMessage) - if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) - } - return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) + return this.withRedisClient(async (client) => { + const id = overrideSessionId ? overrideSessionId : this.sessionId + const rawStoredMessages = await client.lrange(id, this.windowSize ? this.windowSize * -1 : 0, -1) + const orderedMessages = rawStoredMessages.reverse().map((message) => JSON.parse(message)) + const baseMessages = orderedMessages.map(mapStoredMessageToChatMessage) + if (prependMessages?.length) { + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) + } + return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) + }) } async addChatMessages(msgArray: { text: string; type: MessageType }[], overrideSessionId = ''): Promise { - if (!this.redisClient) return - - const id = overrideSessionId ? overrideSessionId : this.sessionId - const input = msgArray.find((msg) => msg.type === 'userMessage') - const output = msgArray.find((msg) => msg.type === 'apiMessage') - - if (input) { - const newInputMessage = new HumanMessage(input.text) - const messageToAdd = [newInputMessage].map((msg) => msg.toDict()) - await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0])) - if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL) - } + await this.withRedisClient(async (client) => { + const id = overrideSessionId ? overrideSessionId : this.sessionId + const input = msgArray.find((msg) => msg.type === 'userMessage') + const output = msgArray.find((msg) => msg.type === 'apiMessage') + + if (input) { + const newInputMessage = new HumanMessage(input.text) + const messageToAdd = [newInputMessage].map((msg) => msg.toDict()) + await client.lpush(id, JSON.stringify(messageToAdd[0])) + if (this.sessionTTL) await client.expire(id, this.sessionTTL) + } - if (output) { - const newOutputMessage = new AIMessage(output.text) - const messageToAdd = [newOutputMessage].map((msg) => msg.toDict()) - await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0])) - if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL) - } + if (output) { + const newOutputMessage = new AIMessage(output.text) + const messageToAdd = [newOutputMessage].map((msg) => msg.toDict()) + await client.lpush(id, JSON.stringify(messageToAdd[0])) + if (this.sessionTTL) await client.expire(id, this.sessionTTL) + } + }) } async clearChatMessages(overrideSessionId = ''): Promise { - if (!this.redisClient) return - - const id = overrideSessionId ? overrideSessionId : this.sessionId - await this.redisClient.del(id) - await this.clear() + await this.withRedisClient(async (client) => { + const id = overrideSessionId ? overrideSessionId : this.sessionId + await client.del(id) + await this.clear() + }) } } diff --git a/packages/components/nodes/memory/UpstashRedisBackedChatMemory/UpstashRedisBackedChatMemory.ts b/packages/components/nodes/memory/UpstashRedisBackedChatMemory/UpstashRedisBackedChatMemory.ts index 7eb9b3906ce..5c3d74dd5b8 100644 --- a/packages/components/nodes/memory/UpstashRedisBackedChatMemory/UpstashRedisBackedChatMemory.ts +++ b/packages/components/nodes/memory/UpstashRedisBackedChatMemory/UpstashRedisBackedChatMemory.ts @@ -1,5 +1,4 @@ -import { Redis, RedisConfigNodejs } from '@upstash/redis' -import { isEqual } from 'lodash' +import { Redis } from '@upstash/redis' import { BufferMemory, BufferMemoryInput } from 'langchain/memory' import { UpstashRedisChatMessageHistory } from '@langchain/community/stores/message/upstash_redis' import { mapStoredMessageToChatMessage, AIMessage, HumanMessage, StoredMessage, BaseMessage } from '@langchain/core/messages' @@ -13,24 +12,6 @@ import { } from '../../../src/utils' import { ICommonObject } from '../../../src/Interface' -let redisClientSingleton: Redis -let redisClientOption: RedisConfigNodejs - -const getRedisClientbyOption = (option: RedisConfigNodejs) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } else if (redisClientSingleton && !isEqual(option, redisClientOption)) { - // if client exists but option changed - redisClientSingleton = new Redis(option) - redisClientOption = option - return redisClientSingleton - } - return redisClientSingleton -} - class UpstashRedisBackedChatMemory_Memory implements INode { label: string name: string @@ -80,7 +61,7 @@ class UpstashRedisBackedChatMemory_Memory implements INode { label: 'Session Timeouts', name: 'sessionTTL', type: 'number', - description: 'Omit this parameter to make sessions never expire', + description: 'Seconds till a session expires. If not specified, the session will never expire.', additionalParams: true, optional: true }, @@ -109,7 +90,7 @@ const initalizeUpstashRedis = async (nodeData: INodeData, options: ICommonObject const credentialData = await getCredentialData(nodeData.credential ?? '', options) const upstashRestToken = getCredentialParam('upstashRestToken', credentialData, nodeData) - const client = getRedisClientbyOption({ + const client = new Redis({ url: baseURL, token: upstashRestToken }) @@ -162,7 +143,7 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods { const previousMessages = orderedMessages.filter((x): x is StoredMessage => x.type !== undefined && x.data.content !== undefined) const baseMessages = previousMessages.map(mapStoredMessageToChatMessage) if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) } return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) } diff --git a/packages/components/nodes/memory/ZepMemory/ZepMemory.ts b/packages/components/nodes/memory/ZepMemory/ZepMemory.ts index 3f654146dc6..7832d0ff526 100644 --- a/packages/components/nodes/memory/ZepMemory/ZepMemory.ts +++ b/packages/components/nodes/memory/ZepMemory/ZepMemory.ts @@ -176,7 +176,7 @@ class ZepMemoryExtended extends ZepMemory implements MemoryMethods { const memoryVariables = await this.loadMemoryVariables({}, id) const baseMessages = memoryVariables[this.memoryKey] if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) } return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) } diff --git a/packages/components/nodes/memory/ZepMemoryCloud/ZepMemoryCloud.ts b/packages/components/nodes/memory/ZepMemoryCloud/ZepMemoryCloud.ts index b524bfe5483..237e026c721 100644 --- a/packages/components/nodes/memory/ZepMemoryCloud/ZepMemoryCloud.ts +++ b/packages/components/nodes/memory/ZepMemoryCloud/ZepMemoryCloud.ts @@ -169,7 +169,7 @@ class ZepMemoryExtended extends ZepMemory implements MemoryMethods { const memoryVariables = await this.loadMemoryVariables({}, id) const baseMessages = memoryVariables[this.memoryKey] if (prependMessages?.length) { - baseMessages.unshift(...mapChatMessageToBaseMessage(prependMessages)) + baseMessages.unshift(...(await mapChatMessageToBaseMessage(prependMessages))) } return returnBaseMessages ? baseMessages : convertBaseMessagetoIMessage(baseMessages) } diff --git a/packages/components/nodes/moderation/Moderation.ts b/packages/components/nodes/moderation/Moderation.ts index 9fd2bfde340..7e37ee5be17 100644 --- a/packages/components/nodes/moderation/Moderation.ts +++ b/packages/components/nodes/moderation/Moderation.ts @@ -1,4 +1,4 @@ -import { Server } from 'socket.io' +import { IServerSideEventStreamer } from '../../src' export abstract class Moderation { abstract checkForViolations(input: string): Promise @@ -13,15 +13,13 @@ export const checkInputs = async (inputModerations: Moderation[], input: string) // is this the correct location for this function? // should we have a utils files that all node components can use? -export const streamResponse = (isStreaming: any, response: string, socketIO: Server, socketIOClientId: string) => { - if (isStreaming) { - const result = response.split(/(\s+)/) - result.forEach((token: string, index: number) => { - if (index === 0) { - socketIO.to(socketIOClientId).emit('start', token) - } - socketIO.to(socketIOClientId).emit('token', token) - }) - socketIO.to(socketIOClientId).emit('end') - } +export const streamResponse = (sseStreamer: IServerSideEventStreamer, chatId: string, response: string) => { + const result = response.split(/(\s+)/) + result.forEach((token: string, index: number) => { + if (index === 0) { + sseStreamer.streamStartEvent(chatId, token) + } + sseStreamer.streamTokenEvent(chatId, token) + }) + sseStreamer.streamEndEvent(chatId) } diff --git a/packages/components/nodes/multiagents/Supervisor/Supervisor.ts b/packages/components/nodes/multiagents/Supervisor/Supervisor.ts index cccd23486ef..1cd78eae004 100644 --- a/packages/components/nodes/multiagents/Supervisor/Supervisor.ts +++ b/packages/components/nodes/multiagents/Supervisor/Supervisor.ts @@ -209,11 +209,11 @@ class Supervisor_MultiAgents implements INode { prompt = messages.prompt multiModalMessageContent = messages.multiModalMessageContent - if (llm.bindTools === undefined) { + if ((llm as any).bindTools === undefined) { throw new Error(`This agent only compatible with function calling models.`) } - const modelWithTool = llm.bindTools([tool]) + const modelWithTool = (llm as any).bindTools([tool]) const outputParser = new ToolCallingAgentOutputParser() @@ -464,11 +464,11 @@ class Supervisor_MultiAgents implements INode { prompt = messages.prompt multiModalMessageContent = messages.multiModalMessageContent - if (llm.bindTools === undefined) { + if ((llm as any).bindTools === undefined) { throw new Error(`This agent only compatible with function calling models.`) } - const modelWithTool = llm.bindTools([tool]) + const modelWithTool = (llm as any).bindTools([tool]) const outputParser = new ToolCallingAgentOutputParser() diff --git a/packages/components/nodes/multiagents/Worker/Worker.ts b/packages/components/nodes/multiagents/Worker/Worker.ts index 06a5d059cc2..5651135a14d 100644 --- a/packages/components/nodes/multiagents/Worker/Worker.ts +++ b/packages/components/nodes/multiagents/Worker/Worker.ts @@ -233,7 +233,7 @@ async function createAgent( sessionId: flowObj?.sessionId, chatId: flowObj?.chatId, input: flowObj?.input, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', maxIterations: maxIterations ? parseFloat(maxIterations) : undefined }) return executor diff --git a/packages/components/nodes/outputparsers/StructuredOutputParser/StructuredOutputParser.ts b/packages/components/nodes/outputparsers/StructuredOutputParser/StructuredOutputParser.ts index 5162730d84f..85110e71894 100644 --- a/packages/components/nodes/outputparsers/StructuredOutputParser/StructuredOutputParser.ts +++ b/packages/components/nodes/outputparsers/StructuredOutputParser/StructuredOutputParser.ts @@ -3,6 +3,7 @@ import { BaseOutputParser } from '@langchain/core/output_parsers' import { StructuredOutputParser as LangchainStructuredOutputParser } from 'langchain/output_parsers' import { CATEGORY } from '../OutputParserHelpers' import { convertSchemaToZod, getBaseClasses, INode, INodeData, INodeParams } from '../../../src' +import { jsonrepair } from 'jsonrepair' class StructuredOutputParser implements INode { label: string @@ -74,6 +75,14 @@ class StructuredOutputParser implements INode { const zodSchema = z.object(convertSchemaToZod(jsonStructure)) as any const structuredOutputParser = LangchainStructuredOutputParser.fromZodSchema(zodSchema) + const baseParse = structuredOutputParser.parse + + // Fix broken JSON from LLM + structuredOutputParser.parse = (text) => { + const jsonString = text.includes('```') ? text.trim().split(/```(?:json)?/)[1] : text.trim() + return baseParse.call(structuredOutputParser, jsonrepair(jsonString)) + } + // NOTE: When we change Flowise to return a json response, the following has to be changed to: JsonStructuredOutputParser Object.defineProperty(structuredOutputParser, 'autoFix', { enumerable: true, diff --git a/packages/components/nodes/outputparsers/StructuredOutputParserAdvanced/StructuredOutputParserAdvanced.ts b/packages/components/nodes/outputparsers/StructuredOutputParserAdvanced/StructuredOutputParserAdvanced.ts index 69c45ff0039..e9f55964190 100644 --- a/packages/components/nodes/outputparsers/StructuredOutputParserAdvanced/StructuredOutputParserAdvanced.ts +++ b/packages/components/nodes/outputparsers/StructuredOutputParserAdvanced/StructuredOutputParserAdvanced.ts @@ -3,6 +3,7 @@ import { BaseOutputParser } from '@langchain/core/output_parsers' import { StructuredOutputParser as LangchainStructuredOutputParser } from 'langchain/output_parsers' import { CATEGORY } from '../OutputParserHelpers' import { z } from 'zod' +import { jsonrepair } from 'jsonrepair' class AdvancedStructuredOutputParser implements INode { label: string @@ -62,6 +63,14 @@ class AdvancedStructuredOutputParser implements INode { try { const structuredOutputParser = LangchainStructuredOutputParser.fromZodSchema(zodSchema) + const baseParse = structuredOutputParser.parse + + // Fix broken JSON from LLM + structuredOutputParser.parse = (text) => { + const jsonString = text.includes('```') ? text.trim().split(/```(?:json)?/)[1] : text.trim() + return baseParse.call(structuredOutputParser, jsonrepair(jsonString)) + } + // NOTE: When we change Flowise to return a json response, the following has to be changed to: JsonStructuredOutputParser Object.defineProperty(structuredOutputParser, 'autoFix', { enumerable: true, diff --git a/packages/components/nodes/prompts/ChatPromptTemplate/ChatPromptTemplate.ts b/packages/components/nodes/prompts/ChatPromptTemplate/ChatPromptTemplate.ts index 88fa02d3f62..b1c0fbc0635 100644 --- a/packages/components/nodes/prompts/ChatPromptTemplate/ChatPromptTemplate.ts +++ b/packages/components/nodes/prompts/ChatPromptTemplate/ChatPromptTemplate.ts @@ -1,6 +1,33 @@ -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses } from '../../../src/utils' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, transformBracesWithColon } from '../../../src/utils' import { ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate } from '@langchain/core/prompts' +import { getVM } from '../../sequentialagents/commonUtils' +import { DataSource } from 'typeorm' +const defaultFunc = `const { AIMessage, HumanMessage, ToolMessage } = require('@langchain/core/messages'); + +return [ + new HumanMessage("What is 333382 🦜 1932?"), + new AIMessage({ + content: "", + tool_calls: [ + { + id: "12345", + name: "calulator", + args: { + number1: 333382, + number2: 1932, + operation: "divide", + }, + }, + ], + }), + new ToolMessage({ + tool_call_id: "12345", + content: "The answer is 172.558.", + }), + new AIMessage("The answer is 172.558."), +]` +const TAB_IDENTIFIER = 'selectedMessagesTab' class ChatPromptTemplate_Prompts implements INode { label: string @@ -16,7 +43,7 @@ class ChatPromptTemplate_Prompts implements INode { constructor() { this.label = 'Chat Prompt Template' this.name = 'chatPromptTemplate' - this.version = 1.0 + this.version = 2.0 this.type = 'ChatPromptTemplate' this.icon = 'prompt.svg' this.category = 'Prompts' @@ -33,6 +60,7 @@ class ChatPromptTemplate_Prompts implements INode { { label: 'Human Message', name: 'humanMessagePrompt', + description: 'This prompt will be added at the end of the messages as human message', type: 'string', rows: 4, placeholder: `{text}` @@ -44,20 +72,68 @@ class ChatPromptTemplate_Prompts implements INode { optional: true, acceptVariable: true, list: true + }, + { + label: 'Messages History', + name: 'messageHistory', + description: 'Add messages after System Message. This is useful when you want to provide few shot examples', + type: 'tabs', + tabIdentifier: TAB_IDENTIFIER, + additionalParams: true, + default: 'messageHistoryCode', + tabs: [ + //TODO: add UI for messageHistory + { + label: 'Add Messages (Code)', + name: 'messageHistoryCode', + type: 'code', + hideCodeExecute: true, + codeExample: defaultFunc, + optional: true, + additionalParams: true + } + ] } ] } - async init(nodeData: INodeData): Promise { - const systemMessagePrompt = nodeData.inputs?.systemMessagePrompt as string - const humanMessagePrompt = nodeData.inputs?.humanMessagePrompt as string + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + let systemMessagePrompt = nodeData.inputs?.systemMessagePrompt as string + let humanMessagePrompt = nodeData.inputs?.humanMessagePrompt as string const promptValuesStr = nodeData.inputs?.promptValues + const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string + const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'messageHistoryCode' + const messageHistoryCode = nodeData.inputs?.messageHistoryCode + const messageHistory = nodeData.inputs?.messageHistory + + systemMessagePrompt = transformBracesWithColon(systemMessagePrompt) + humanMessagePrompt = transformBracesWithColon(humanMessagePrompt) - const prompt = ChatPromptTemplate.fromMessages([ + let prompt = ChatPromptTemplate.fromMessages([ SystemMessagePromptTemplate.fromTemplate(systemMessagePrompt), HumanMessagePromptTemplate.fromTemplate(humanMessagePrompt) ]) + if ( + (messageHistory && messageHistory === 'messageHistoryCode' && messageHistoryCode) || + (selectedTab === 'messageHistoryCode' && messageHistoryCode) + ) { + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const vm = await getVM(appDataSource, databaseEntities, nodeData, {}) + try { + const response = await vm.run(`module.exports = async function() {${messageHistoryCode}}()`, __dirname) + if (!Array.isArray(response)) throw new Error('Returned message history must be an array') + prompt = ChatPromptTemplate.fromMessages([ + SystemMessagePromptTemplate.fromTemplate(systemMessagePrompt), + ...response, + HumanMessagePromptTemplate.fromTemplate(humanMessagePrompt) + ]) + } catch (e) { + throw new Error(e) + } + } + let promptValues: ICommonObject = {} if (promptValuesStr) { try { diff --git a/packages/components/nodes/prompts/FewShotPromptTemplate/FewShotPromptTemplate.ts b/packages/components/nodes/prompts/FewShotPromptTemplate/FewShotPromptTemplate.ts index f2d9c0fae55..ff93b988c35 100644 --- a/packages/components/nodes/prompts/FewShotPromptTemplate/FewShotPromptTemplate.ts +++ b/packages/components/nodes/prompts/FewShotPromptTemplate/FewShotPromptTemplate.ts @@ -86,7 +86,7 @@ class FewShotPromptTemplate_Prompts implements INode { const templateFormat = nodeData.inputs?.templateFormat as TemplateFormat const examplePrompt = nodeData.inputs?.examplePrompt as PromptTemplate - const inputVariables = getInputVariables(suffix) + const inputVariables = [...new Set([...getInputVariables(suffix), ...getInputVariables(prefix)])] let examples: Example[] = [] if (examplesStr) { diff --git a/packages/components/nodes/prompts/PromptLangfuse/PromptLangfuse.ts b/packages/components/nodes/prompts/PromptLangfuse/PromptLangfuse.ts index 63dbe953012..8695ac1cc10 100644 --- a/packages/components/nodes/prompts/PromptLangfuse/PromptLangfuse.ts +++ b/packages/components/nodes/prompts/PromptLangfuse/PromptLangfuse.ts @@ -1,5 +1,5 @@ import { ICommonObject, INode, INodeData, INodeParams, PromptTemplate } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam, getInputVariables } from '../../../src/utils' +import { getBaseClasses, getCredentialData, getCredentialParam, getInputVariables, transformBracesWithColon } from '../../../src/utils' import { PromptTemplateInput } from '@langchain/core/prompts' import { Langfuse } from 'langfuse' @@ -64,7 +64,7 @@ class PromptLangfuse_Prompts implements INode { }) const langfusePrompt = await langfuse.getPrompt(nodeData.inputs?.template as string) - const template = langfusePrompt.getLangchainPrompt() + let template = langfusePrompt.getLangchainPrompt() const promptValuesStr = nodeData.inputs?.promptValues @@ -78,6 +78,7 @@ class PromptLangfuse_Prompts implements INode { } const inputVariables = getInputVariables(template) + template = transformBracesWithColon(template) try { const options: PromptTemplateInput = { diff --git a/packages/components/nodes/prompts/PromptTemplate/PromptTemplate.ts b/packages/components/nodes/prompts/PromptTemplate/PromptTemplate.ts index 7ecf37d1d98..ead5bab9a57 100644 --- a/packages/components/nodes/prompts/PromptTemplate/PromptTemplate.ts +++ b/packages/components/nodes/prompts/PromptTemplate/PromptTemplate.ts @@ -1,5 +1,5 @@ import { ICommonObject, INode, INodeData, INodeParams, PromptTemplate } from '../../../src/Interface' -import { getBaseClasses, getInputVariables } from '../../../src/utils' +import { getBaseClasses, getInputVariables, transformBracesWithColon } from '../../../src/utils' import { PromptTemplateInput } from '@langchain/core/prompts' class PromptTemplate_Prompts implements INode { @@ -42,7 +42,7 @@ class PromptTemplate_Prompts implements INode { } async init(nodeData: INodeData): Promise { - const template = nodeData.inputs?.template as string + let template = nodeData.inputs?.template as string const promptValuesStr = nodeData.inputs?.promptValues let promptValues: ICommonObject = {} @@ -55,6 +55,7 @@ class PromptTemplate_Prompts implements INode { } const inputVariables = getInputVariables(template) + template = transformBracesWithColon(template) try { const options: PromptTemplateInput = { diff --git a/packages/components/nodes/recordmanager/MySQLRecordManager/MySQLrecordManager.ts b/packages/components/nodes/recordmanager/MySQLRecordManager/MySQLrecordManager.ts index 9e7055208eb..a1571b028c1 100644 --- a/packages/components/nodes/recordmanager/MySQLRecordManager/MySQLrecordManager.ts +++ b/packages/components/nodes/recordmanager/MySQLRecordManager/MySQLrecordManager.ts @@ -1,7 +1,7 @@ import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { ListKeyOptions, RecordManagerInterface, UpdateOptions } from '@langchain/community/indexes/base' -import { DataSource, QueryRunner } from 'typeorm' +import { DataSource } from 'typeorm' class MySQLRecordManager_RecordManager implements INode { label: string @@ -167,29 +167,50 @@ type MySQLRecordManagerOptions = { class MySQLRecordManager implements RecordManagerInterface { lc_namespace = ['langchain', 'recordmanagers', 'mysql'] - - datasource: DataSource - - queryRunner: QueryRunner - + config: MySQLRecordManagerOptions tableName: string - namespace: string constructor(namespace: string, config: MySQLRecordManagerOptions) { - const { mysqlOptions, tableName } = config + const { tableName } = config this.namespace = namespace this.tableName = tableName || 'upsertion_records' - this.datasource = new DataSource(mysqlOptions) + this.config = config + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { mysqlOptions } = this.config + if (!mysqlOptions) { + throw new Error('No datasource options provided') + } + // Prevent using default Postgres port, otherwise will throw uncaught error and crashing the app + if (mysqlOptions.port === 5432) { + throw new Error('Invalid port number') + } + const dataSource = new DataSource(mysqlOptions) + await dataSource.initialize() + return dataSource } async createSchema(): Promise { try { - const appDataSource = await this.datasource.initialize() - - this.queryRunner = appDataSource.createQueryRunner() + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) - await this.queryRunner.manager.query(`create table if not exists \`${this.tableName}\` ( + await queryRunner.manager.query(`create table if not exists \`${this.sanitizeTableName(tableName)}\` ( \`uuid\` varchar(36) primary key default (UUID()), \`key\` varchar(255) not null, \`namespace\` varchar(255) not null, @@ -197,17 +218,20 @@ class MySQLRecordManager implements RecordManagerInterface { \`group_id\` longtext, unique key \`unique_key_namespace\` (\`key\`, \`namespace\`));`) + const columns = [`updated_at`, `key`, `namespace`, `group_id`] for (const column of columns) { // MySQL does not support 'IF NOT EXISTS' function for Index - const Check = await this.queryRunner.manager.query( + const Check = await queryRunner.manager.query( `SELECT COUNT(1) IndexIsThere FROM INFORMATION_SCHEMA.STATISTICS - WHERE table_schema=DATABASE() AND table_name='${this.tableName}' AND index_name='${column}_index';` + WHERE table_schema=DATABASE() AND table_name='${tableName}' AND index_name='${column}_index';` ) if (Check[0].IndexIsThere === 0) - await this.queryRunner.manager.query(`CREATE INDEX \`${column}_index\` - ON \`${this.tableName}\` (\`${column}\`);`) + await queryRunner.manager.query(`CREATE INDEX \`${column}_index\` + ON \`${tableName}\` (\`${column}\`);`) } + + await queryRunner.release() } catch (e: any) { // This error indicates that the table already exists // Due to asynchronous nature of the code, it is possible that @@ -221,12 +245,17 @@ class MySQLRecordManager implements RecordManagerInterface { } async getTime(): Promise { + const dataSource = await this.getDataSource() try { - const res = await this.queryRunner.manager.query(`SELECT UNIX_TIMESTAMP(NOW()) AS epoch`) + const queryRunner = dataSource.createQueryRunner() + const res = await queryRunner.manager.query(`SELECT UNIX_TIMESTAMP(NOW()) AS epoch`) + await queryRunner.release() return Number.parseFloat(res[0].epoch) } catch (error) { console.error('Error getting time in MySQLRecordManager:') throw error + } finally { + await dataSource.destroy() } } @@ -235,6 +264,10 @@ class MySQLRecordManager implements RecordManagerInterface { return } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + const updatedAt = await this.getTime() const { timeAtLeast, groupIds: _groupIds } = updateOptions ?? {} @@ -256,14 +289,23 @@ class MySQLRecordManager implements RecordManagerInterface { ]) const query = ` - INSERT INTO \`${this.tableName}\` (\`key\`, \`namespace\`, \`updated_at\`, \`group_id\`) + INSERT INTO \`${tableName}\` (\`key\`, \`namespace\`, \`updated_at\`, \`group_id\`) VALUES (?, ?, ?, ?) - ON DUPLICATE KEY UPDATE updated_at = updated_at;` + ON DUPLICATE KEY UPDATE \`updated_at\` = VALUES(\`updated_at\`)` // To handle multiple files upsert - for (const record of recordsToUpsert) { - // Consider using a transaction for batch operations - await this.queryRunner.manager.query(query, record.flat()) + try { + for (const record of recordsToUpsert) { + // Consider using a transaction for batch operations + await queryRunner.manager.query(query, record.flat()) + } + + await queryRunner.release() + } catch (error) { + console.error('Error updating in MySQLRecordManager:') + throw error + } finally { + await dataSource.destroy() } } @@ -272,11 +314,15 @@ class MySQLRecordManager implements RecordManagerInterface { return [] } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + // Prepare the placeholders and the query const placeholders = keys.map(() => `?`).join(', ') const query = ` SELECT \`key\` - FROM \`${this.tableName}\` + FROM \`${tableName}\` WHERE \`namespace\` = ? AND \`key\` IN (${placeholders})` // Initialize an array to fill with the existence checks @@ -284,24 +330,31 @@ class MySQLRecordManager implements RecordManagerInterface { try { // Execute the query - const rows = await this.queryRunner.manager.query(query, [this.namespace, ...keys.flat()]) + const rows = await queryRunner.manager.query(query, [this.namespace, ...keys.flat()]) // Create a set of existing keys for faster lookup const existingKeysSet = new Set(rows.map((row: { key: string }) => row.key)) // Map the input keys to booleans indicating if they exist keys.forEach((key, index) => { existsArray[index] = existingKeysSet.has(key) }) + await queryRunner.release() return existsArray } catch (error) { console.error('Error checking existence of keys') - throw error // Allow the caller to handle the error + throw error + } finally { + await dataSource.destroy() } } async listKeys(options?: ListKeyOptions): Promise { + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + try { const { before, after, limit, groupIds } = options ?? {} - let query = `SELECT \`key\` FROM \`${this.tableName}\` WHERE \`namespace\` = ?` + let query = `SELECT \`key\` FROM \`${tableName}\` WHERE \`namespace\` = ?` const values: (string | number | string[])[] = [this.namespace] if (before) { @@ -330,11 +383,14 @@ class MySQLRecordManager implements RecordManagerInterface { query += ';' // Directly using try/catch with async/await for cleaner flow - const result = await this.queryRunner.manager.query(query, values) + const result = await queryRunner.manager.query(query, values) + await queryRunner.release() return result.map((row: { key: string }) => row.key) } catch (error) { console.error('MySQLRecordManager listKeys Error: ') - throw error // Re-throw the error to be handled by the caller + throw error + } finally { + await dataSource.destroy() } } @@ -343,16 +399,23 @@ class MySQLRecordManager implements RecordManagerInterface { return } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + const placeholders = keys.map(() => '?').join(', ') - const query = `DELETE FROM \`${this.tableName}\` WHERE \`namespace\` = ? AND \`key\` IN (${placeholders});` + const query = `DELETE FROM \`${tableName}\` WHERE \`namespace\` = ? AND \`key\` IN (${placeholders});` const values = [this.namespace, ...keys].map((v) => (typeof v !== 'string' ? `${v}` : v)) // Directly using try/catch with async/await for cleaner flow try { - await this.queryRunner.manager.query(query, values) + await queryRunner.manager.query(query, values) + await queryRunner.release() } catch (error) { console.error('Error deleting keys') - throw error // Re-throw the error to be handled by the caller + throw error + } finally { + await dataSource.destroy() } } } diff --git a/packages/components/nodes/recordmanager/PostgresRecordManager/PostgresRecordManager.ts b/packages/components/nodes/recordmanager/PostgresRecordManager/PostgresRecordManager.ts index e01d85b5b0a..63beee92793 100644 --- a/packages/components/nodes/recordmanager/PostgresRecordManager/PostgresRecordManager.ts +++ b/packages/components/nodes/recordmanager/PostgresRecordManager/PostgresRecordManager.ts @@ -1,7 +1,11 @@ import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { ListKeyOptions, RecordManagerInterface, UpdateOptions } from '@langchain/community/indexes/base' -import { DataSource, QueryRunner } from 'typeorm' +import { DataSource } from 'typeorm' +import { getHost } from '../../vectorstores/Postgres/utils' +import { getDatabase, getPort, getTableName } from './utils' + +const serverCredentialsExists = !!process.env.POSTGRES_RECORDMANAGER_USER && !!process.env.POSTGRES_RECORDMANAGER_PASSWORD class PostgresRecordManager_RecordManager implements INode { label: string @@ -29,18 +33,22 @@ class PostgresRecordManager_RecordManager implements INode { { label: 'Host', name: 'host', - type: 'string' + type: 'string', + placeholder: getHost(), + optional: !!getHost() }, { label: 'Database', name: 'database', - type: 'string' + type: 'string', + placeholder: getDatabase(), + optional: !!getDatabase() }, { label: 'Port', name: 'port', type: 'number', - placeholder: '5432', + placeholder: getPort(), optional: true }, { @@ -54,7 +62,7 @@ class PostgresRecordManager_RecordManager implements INode { label: 'Table Name', name: 'tableName', type: 'string', - placeholder: 'upsertion_records', + placeholder: getTableName(), additionalParams: true, optional: true }, @@ -110,16 +118,16 @@ class PostgresRecordManager_RecordManager implements INode { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['PostgresApi'] + credentialNames: ['PostgresApi'], + optional: serverCredentialsExists } } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const user = getCredentialParam('user', credentialData, nodeData) - const password = getCredentialParam('password', credentialData, nodeData) - const _tableName = nodeData.inputs?.tableName as string - const tableName = _tableName ? _tableName : 'upsertion_records' + const user = getCredentialParam('user', credentialData, nodeData, process.env.POSTGRES_RECORDMANAGER_USER) + const password = getCredentialParam('password', credentialData, nodeData, process.env.POSTGRES_RECORDMANAGER_PASSWORD) + const tableName = getTableName(nodeData) const additionalConfig = nodeData.inputs?.additionalConfig as string const _namespace = nodeData.inputs?.namespace as string const namespace = _namespace ? _namespace : options.chatflowid @@ -139,11 +147,11 @@ class PostgresRecordManager_RecordManager implements INode { const postgresConnectionOptions = { ...additionalConfiguration, type: 'postgres', - host: nodeData.inputs?.host as string, - port: nodeData.inputs?.port as number, + host: getHost(nodeData), + port: getPort(nodeData), username: user, password: password, - database: nodeData.inputs?.database as string + database: getDatabase(nodeData) } const args = { @@ -162,35 +170,56 @@ class PostgresRecordManager_RecordManager implements INode { type PostgresRecordManagerOptions = { postgresConnectionOptions: any - tableName?: string + tableName: string } class PostgresRecordManager implements RecordManagerInterface { lc_namespace = ['langchain', 'recordmanagers', 'postgres'] - - datasource: DataSource - - queryRunner: QueryRunner - + config: PostgresRecordManagerOptions tableName: string - namespace: string constructor(namespace: string, config: PostgresRecordManagerOptions) { - const { postgresConnectionOptions, tableName } = config + const { tableName } = config this.namespace = namespace - this.datasource = new DataSource(postgresConnectionOptions) - this.tableName = tableName || 'upsertion_records' + this.tableName = tableName + this.config = config + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { postgresConnectionOptions } = this.config + if (!postgresConnectionOptions) { + throw new Error('No datasource options provided') + } + // Prevent using default MySQL port, otherwise will throw uncaught error and crashing the app + if (postgresConnectionOptions.port === 3006) { + throw new Error('Invalid port number') + } + const dataSource = new DataSource(postgresConnectionOptions) + await dataSource.initialize() + return dataSource } async createSchema(): Promise { try { - const appDataSource = await this.datasource.initialize() + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) - this.queryRunner = appDataSource.createQueryRunner() - - await this.queryRunner.manager.query(` - CREATE TABLE IF NOT EXISTS "${this.tableName}" ( + await queryRunner.manager.query(` + CREATE TABLE IF NOT EXISTS "${tableName}" ( uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(), key TEXT NOT NULL, namespace TEXT NOT NULL, @@ -198,10 +227,12 @@ class PostgresRecordManager implements RecordManagerInterface { group_id TEXT, UNIQUE (key, namespace) ); - CREATE INDEX IF NOT EXISTS updated_at_index ON "${this.tableName}" (updated_at); - CREATE INDEX IF NOT EXISTS key_index ON "${this.tableName}" (key); - CREATE INDEX IF NOT EXISTS namespace_index ON "${this.tableName}" (namespace); - CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) + CREATE INDEX IF NOT EXISTS updated_at_index ON "${tableName}" (updated_at); + CREATE INDEX IF NOT EXISTS key_index ON "${tableName}" (key); + CREATE INDEX IF NOT EXISTS namespace_index ON "${tableName}" (namespace); + CREATE INDEX IF NOT EXISTS group_id_index ON "${tableName}" (group_id);`) + + await queryRunner.release() } catch (e: any) { // This error indicates that the table already exists // Due to asynchronous nature of the code, it is possible that @@ -215,8 +246,18 @@ class PostgresRecordManager implements RecordManagerInterface { } async getTime(): Promise { - const res = await this.queryRunner.manager.query('SELECT EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)') - return Number.parseFloat(res[0].extract) + const dataSource = await this.getDataSource() + try { + const queryRunner = dataSource.createQueryRunner() + const res = await queryRunner.manager.query('SELECT EXTRACT(EPOCH FROM CURRENT_TIMESTAMP)') + await queryRunner.release() + return Number.parseFloat(res[0].extract) + } catch (error) { + console.error('Error getting time in PostgresRecordManager:') + throw error + } finally { + await dataSource.destroy() + } } /** @@ -239,6 +280,10 @@ class PostgresRecordManager implements RecordManagerInterface { return } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + const updatedAt = await this.getTime() const { timeAtLeast, groupIds: _groupIds } = updateOptions ?? {} @@ -256,8 +301,16 @@ class PostgresRecordManager implements RecordManagerInterface { const valuesPlaceholders = recordsToUpsert.map((_, j) => this.generatePlaceholderForRowAt(j, recordsToUpsert[0].length)).join(', ') - const query = `INSERT INTO "${this.tableName}" (key, namespace, updated_at, group_id) VALUES ${valuesPlaceholders} ON CONFLICT (key, namespace) DO UPDATE SET updated_at = EXCLUDED.updated_at;` - await this.queryRunner.manager.query(query, recordsToUpsert.flat()) + const query = `INSERT INTO "${tableName}" (key, namespace, updated_at, group_id) VALUES ${valuesPlaceholders} ON CONFLICT (key, namespace) DO UPDATE SET updated_at = EXCLUDED.updated_at;` + try { + await queryRunner.manager.query(query, recordsToUpsert.flat()) + await queryRunner.release() + } catch (error) { + console.error('Error updating in PostgresRecordManager:') + throw error + } finally { + await dataSource.destroy() + } } async exists(keys: string[]): Promise { @@ -265,19 +318,33 @@ class PostgresRecordManager implements RecordManagerInterface { return [] } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + const startIndex = 2 const arrayPlaceholders = keys.map((_, i) => `$${i + startIndex}`).join(', ') const query = ` - SELECT k, (key is not null) ex from unnest(ARRAY[${arrayPlaceholders}]) k left join "${this.tableName}" on k=key and namespace = $1; + SELECT k, (key is not null) ex from unnest(ARRAY[${arrayPlaceholders}]) k left join "${tableName}" on k=key and namespace = $1; ` - const res = await this.queryRunner.manager.query(query, [this.namespace, ...keys.flat()]) - return res.map((row: { ex: boolean }) => row.ex) + try { + const res = await queryRunner.manager.query(query, [this.namespace, ...keys.flat()]) + await queryRunner.release() + return res.map((row: { ex: boolean }) => row.ex) + } catch (error) { + console.error('Error checking existence of keys in PostgresRecordManager:') + throw error + } finally { + await dataSource.destroy() + } } async listKeys(options?: ListKeyOptions): Promise { const { before, after, limit, groupIds } = options ?? {} - let query = `SELECT key FROM "${this.tableName}" WHERE namespace = $1` + const tableName = this.sanitizeTableName(this.tableName) + + let query = `SELECT key FROM "${tableName}" WHERE namespace = $1` const values: (string | number | (string | null)[])[] = [this.namespace] let index = 2 @@ -306,8 +373,20 @@ class PostgresRecordManager implements RecordManagerInterface { } query += ';' - const res = await this.queryRunner.manager.query(query, values) - return res.map((row: { key: string }) => row.key) + + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + + try { + const res = await queryRunner.manager.query(query, values) + await queryRunner.release() + return res.map((row: { key: string }) => row.key) + } catch (error) { + console.error('Error listing keys in PostgresRecordManager:') + throw error + } finally { + await dataSource.destroy() + } } async deleteKeys(keys: string[]): Promise { @@ -315,16 +394,20 @@ class PostgresRecordManager implements RecordManagerInterface { return } - const query = `DELETE FROM "${this.tableName}" WHERE namespace = $1 AND key = ANY($2);` - await this.queryRunner.manager.query(query, [this.namespace, keys]) - } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) - /** - * Terminates the connection pool. - * @returns {Promise} - */ - async end(): Promise { - if (this.datasource && this.datasource.isInitialized) await this.datasource.destroy() + try { + const query = `DELETE FROM "${tableName}" WHERE namespace = $1 AND key = ANY($2);` + await queryRunner.manager.query(query, [this.namespace, keys]) + await queryRunner.release() + } catch (error) { + console.error('Error deleting keys') + throw error + } finally { + await dataSource.destroy() + } } } diff --git a/packages/components/nodes/recordmanager/PostgresRecordManager/README.md b/packages/components/nodes/recordmanager/PostgresRecordManager/README.md new file mode 100644 index 00000000000..4c2c592f79d --- /dev/null +++ b/packages/components/nodes/recordmanager/PostgresRecordManager/README.md @@ -0,0 +1,18 @@ +# Postgres Record Manager + +Postgres Record Manager integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| --------------------------------- | ----------------------------------------------- | ------ | ----------------- | +| POSTGRES_RECORDMANAGER_HOST | Default `host` for Postgres Record Manager | String | | +| POSTGRES_RECORDMANAGER_PORT | Default `port` for Postgres Record Manager | Number | 5432 | +| POSTGRES_RECORDMANAGER_USER | Default `user` for Postgres Record Manager | String | | +| POSTGRES_RECORDMANAGER_PASSWORD | Default `password` for Postgres Record Manager | String | | +| POSTGRES_RECORDMANAGER_DATABASE | Default `database` for Postgres Record Manager | String | | +| POSTGRES_RECORDMANAGER_TABLE_NAME | Default `tableName` for Postgres Record Manager | String | upsertion_records | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/recordmanager/PostgresRecordManager/utils.ts b/packages/components/nodes/recordmanager/PostgresRecordManager/utils.ts new file mode 100644 index 00000000000..f9a8d9ae06e --- /dev/null +++ b/packages/components/nodes/recordmanager/PostgresRecordManager/utils.ts @@ -0,0 +1,17 @@ +import { defaultChain, INodeData } from '../../../src' + +export function getHost(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.host, process.env.POSTGRES_RECORDMANAGER_HOST) +} + +export function getDatabase(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.database, process.env.POSTGRES_RECORDMANAGER_DATABASE) +} + +export function getPort(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.port, process.env.POSTGRES_RECORDMANAGER_PORT, '5432') +} + +export function getTableName(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.tableName, process.env.POSTGRES_RECORDMANAGER_TABLE_NAME, 'upsertion_records') +} diff --git a/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts b/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts index daf4b73501c..c209f4956fc 100644 --- a/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts +++ b/packages/components/nodes/recordmanager/SQLiteRecordManager/SQLiteRecordManager.ts @@ -1,7 +1,7 @@ import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses } from '../../../src/utils' +import { getBaseClasses, getUserHome } from '../../../src/utils' import { ListKeyOptions, RecordManagerInterface, UpdateOptions } from '@langchain/community/indexes/base' -import { DataSource, QueryRunner } from 'typeorm' +import { DataSource } from 'typeorm' import path from 'path' class SQLiteRecordManager_RecordManager implements INode { @@ -19,19 +19,19 @@ class SQLiteRecordManager_RecordManager implements INode { constructor() { this.label = 'SQLite Record Manager' this.name = 'SQLiteRecordManager' - this.version = 1.0 + this.version = 1.1 this.type = 'SQLite RecordManager' this.icon = 'sqlite.png' this.category = 'Record Manager' this.description = 'Use SQLite to keep track of document writes into the vector databases' this.baseClasses = [this.type, 'RecordManager', ...getBaseClasses(SQLiteRecordManager)] this.inputs = [ - { + /*{ label: 'Database File Path', name: 'databaseFilePath', type: 'string', placeholder: 'C:\\Users\\User\\.flowise\\database.sqlite' - }, + },*/ { label: 'Additional Connection Configuration', name: 'additionalConfig', @@ -106,7 +106,6 @@ class SQLiteRecordManager_RecordManager implements INode { const cleanup = nodeData.inputs?.cleanup as string const _sourceIdKey = nodeData.inputs?.sourceIdKey as string const sourceIdKey = _sourceIdKey ? _sourceIdKey : 'source' - const databaseFilePath = nodeData.inputs?.databaseFilePath as string let additionalConfiguration = {} if (additionalConfig) { @@ -117,10 +116,12 @@ class SQLiteRecordManager_RecordManager implements INode { } } + const database = path.join(process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise'), 'database.sqlite') + const sqliteOptions = { + database, ...additionalConfiguration, - type: 'sqlite', - database: path.resolve(databaseFilePath) + type: 'sqlite' } const args = { @@ -144,30 +145,47 @@ type SQLiteRecordManagerOptions = { class SQLiteRecordManager implements RecordManagerInterface { lc_namespace = ['langchain', 'recordmanagers', 'sqlite'] - - datasource: DataSource - - queryRunner: QueryRunner - tableName: string - namespace: string + config: SQLiteRecordManagerOptions constructor(namespace: string, config: SQLiteRecordManagerOptions) { - const { sqliteOptions, tableName } = config + const { tableName } = config this.namespace = namespace this.tableName = tableName || 'upsertion_records' - this.datasource = new DataSource(sqliteOptions) + this.config = config + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + private async getDataSource(): Promise { + const { sqliteOptions } = this.config + if (!sqliteOptions) { + throw new Error('No datasource options provided') + } + const dataSource = new DataSource(sqliteOptions) + await dataSource.initialize() + return dataSource } async createSchema(): Promise { try { - const appDataSource = await this.datasource.initialize() - - this.queryRunner = appDataSource.createQueryRunner() + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) - await this.queryRunner.manager.query(` -CREATE TABLE IF NOT EXISTS "${this.tableName}" ( + await queryRunner.manager.query(` +CREATE TABLE IF NOT EXISTS "${tableName}" ( uuid TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))), key TEXT NOT NULL, namespace TEXT NOT NULL, @@ -175,10 +193,12 @@ CREATE TABLE IF NOT EXISTS "${this.tableName}" ( group_id TEXT, UNIQUE (key, namespace) ); -CREATE INDEX IF NOT EXISTS updated_at_index ON "${this.tableName}" (updated_at); -CREATE INDEX IF NOT EXISTS key_index ON "${this.tableName}" (key); -CREATE INDEX IF NOT EXISTS namespace_index ON "${this.tableName}" (namespace); -CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) +CREATE INDEX IF NOT EXISTS updated_at_index ON "${tableName}" (updated_at); +CREATE INDEX IF NOT EXISTS key_index ON "${tableName}" (key); +CREATE INDEX IF NOT EXISTS namespace_index ON "${tableName}" (namespace); +CREATE INDEX IF NOT EXISTS group_id_index ON "${tableName}" (group_id);`) + + await queryRunner.release() } catch (e: any) { // This error indicates that the table already exists // Due to asynchronous nature of the code, it is possible that @@ -192,12 +212,17 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) } async getTime(): Promise { + const dataSource = await this.getDataSource() try { - const res = await this.queryRunner.manager.query(`SELECT strftime('%s', 'now') AS epoch`) + const queryRunner = dataSource.createQueryRunner() + const res = await queryRunner.manager.query(`SELECT strftime('%s', 'now') AS epoch`) + await queryRunner.release() return Number.parseFloat(res[0].epoch) } catch (error) { console.error('Error getting time in SQLiteRecordManager:') throw error + } finally { + await dataSource.destroy() } } @@ -205,6 +230,9 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) if (keys.length === 0) { return } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) const updatedAt = await this.getTime() const { timeAtLeast, groupIds: _groupIds } = updateOptions ?? {} @@ -227,14 +255,22 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) ]) const query = ` - INSERT INTO "${this.tableName}" (key, namespace, updated_at, group_id) + INSERT INTO "${tableName}" (key, namespace, updated_at, group_id) VALUES (?, ?, ?, ?) ON CONFLICT (key, namespace) DO UPDATE SET updated_at = excluded.updated_at` - // To handle multiple files upsert - for (const record of recordsToUpsert) { - // Consider using a transaction for batch operations - await this.queryRunner.manager.query(query, record.flat()) + try { + // To handle multiple files upsert + for (const record of recordsToUpsert) { + // Consider using a transaction for batch operations + await queryRunner.manager.query(query, record.flat()) + } + await queryRunner.release() + } catch (error) { + console.error('Error updating in SQLiteRecordManager:') + throw error + } finally { + await dataSource.destroy() } } @@ -242,36 +278,45 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) if (keys.length === 0) { return [] } + const tableName = this.sanitizeTableName(this.tableName) // Prepare the placeholders and the query const placeholders = keys.map(() => `?`).join(', ') const sql = ` SELECT key - FROM "${this.tableName}" + FROM "${tableName}" WHERE namespace = ? AND key IN (${placeholders})` // Initialize an array to fill with the existence checks const existsArray = new Array(keys.length).fill(false) + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + try { // Execute the query - const rows = await this.queryRunner.manager.query(sql, [this.namespace, ...keys.flat()]) + const rows = await queryRunner.manager.query(sql, [this.namespace, ...keys.flat()]) // Create a set of existing keys for faster lookup const existingKeysSet = new Set(rows.map((row: { key: string }) => row.key)) // Map the input keys to booleans indicating if they exist keys.forEach((key, index) => { existsArray[index] = existingKeysSet.has(key) }) + await queryRunner.release() return existsArray } catch (error) { console.error('Error checking existence of keys') throw error // Allow the caller to handle the error + } finally { + await dataSource.destroy() } } async listKeys(options?: ListKeyOptions): Promise { const { before, after, limit, groupIds } = options ?? {} - let query = `SELECT key FROM "${this.tableName}" WHERE namespace = ?` + const tableName = this.sanitizeTableName(this.tableName) + + let query = `SELECT key FROM "${tableName}" WHERE namespace = ?` const values: (string | number | string[])[] = [this.namespace] if (before) { @@ -299,13 +344,19 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) query += ';' + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + // Directly using try/catch with async/await for cleaner flow try { - const result = await this.queryRunner.manager.query(query, values) + const result = await queryRunner.manager.query(query, values) + await queryRunner.release() return result.map((row: { key: string }) => row.key) } catch (error) { console.error('Error listing keys.') throw error // Re-throw the error to be handled by the caller + } finally { + await dataSource.destroy() } } @@ -314,16 +365,23 @@ CREATE INDEX IF NOT EXISTS group_id_index ON "${this.tableName}" (group_id);`) return } + const dataSource = await this.getDataSource() + const queryRunner = dataSource.createQueryRunner() + const tableName = this.sanitizeTableName(this.tableName) + const placeholders = keys.map(() => '?').join(', ') - const query = `DELETE FROM "${this.tableName}" WHERE namespace = ? AND key IN (${placeholders});` + const query = `DELETE FROM "${tableName}" WHERE namespace = ? AND key IN (${placeholders});` const values = [this.namespace, ...keys].map((v) => (typeof v !== 'string' ? `${v}` : v)) // Directly using try/catch with async/await for cleaner flow try { - await this.queryRunner.manager.query(query, values) + await queryRunner.manager.query(query, values) + await queryRunner.release() } catch (error) { console.error('Error deleting keys') throw error // Re-throw the error to be handled by the caller + } finally { + await dataSource.destroy() } } } diff --git a/packages/components/nodes/retrievers/AWSBedrockKBRetriever/AWSBedrockKBRetriever.ts b/packages/components/nodes/retrievers/AWSBedrockKBRetriever/AWSBedrockKBRetriever.ts index 70dc664aa7f..0471de73351 100644 --- a/packages/components/nodes/retrievers/AWSBedrockKBRetriever/AWSBedrockKBRetriever.ts +++ b/packages/components/nodes/retrievers/AWSBedrockKBRetriever/AWSBedrockKBRetriever.ts @@ -15,7 +15,6 @@ class AWSBedrockKBRetriever_Retrievers implements INode { baseClasses: string[] credential: INodeParams inputs: INodeParams[] - badge: string constructor() { this.label = 'AWS Bedrock Knowledge Base Retriever' @@ -24,7 +23,6 @@ class AWSBedrockKBRetriever_Retrievers implements INode { this.type = 'AWSBedrockKBRetriever' this.icon = 'AWSBedrockKBRetriever.svg' this.category = 'Retrievers' - this.badge = 'NEW' this.description = 'Connect to AWS Bedrock Knowledge Base API and retrieve relevant chunks' this.baseClasses = [this.type, 'BaseRetriever'] this.credential = { diff --git a/packages/components/nodes/retrievers/CohereRerankRetriever/CohereRerankRetriever.ts b/packages/components/nodes/retrievers/CohereRerankRetriever/CohereRerankRetriever.ts index 6d11165a271..b4f8f867201 100644 --- a/packages/components/nodes/retrievers/CohereRerankRetriever/CohereRerankRetriever.ts +++ b/packages/components/nodes/retrievers/CohereRerankRetriever/CohereRerankRetriever.ts @@ -46,15 +46,19 @@ class CohereRerankRetriever_Retrievers implements INode { type: 'options', options: [ { - label: 'rerank-english-v2.0', - name: 'rerank-english-v2.0' + label: 'rerank-v3.5', + name: 'rerank-v3.5' }, { - label: 'rerank-multilingual-v2.0', - name: 'rerank-multilingual-v2.0' + label: 'rerank-english-v3.0', + name: 'rerank-english-v3.0' + }, + { + label: 'rerank-multilingual-v3.0', + name: 'rerank-multilingual-v3.0' } ], - default: 'rerank-english-v2.0', + default: 'rerank-v3.5', optional: true }, { diff --git a/packages/components/nodes/retrievers/CustomRetriever/CustomRetriever.ts b/packages/components/nodes/retrievers/CustomRetriever/CustomRetriever.ts new file mode 100644 index 00000000000..3a459b51d36 --- /dev/null +++ b/packages/components/nodes/retrievers/CustomRetriever/CustomRetriever.ts @@ -0,0 +1,159 @@ +import { get } from 'lodash' +import { Document } from '@langchain/core/documents' +import { VectorStore, VectorStoreRetriever, VectorStoreRetrieverInput } from '@langchain/core/vectorstores' +import { INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' +import { handleEscapeCharacters } from '../../../src' + +const defaultReturnFormat = '{{context}}\nSource: {{metadata.source}}' + +class CustomRetriever_Retrievers implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'Custom Retriever' + this.name = 'customRetriever' + this.version = 1.0 + this.type = 'CustomRetriever' + this.icon = 'customRetriever.svg' + this.category = 'Retrievers' + this.description = 'Return results based on predefined format' + this.baseClasses = [this.type, 'BaseRetriever'] + this.inputs = [ + { + label: 'Vector Store', + name: 'vectorStore', + type: 'VectorStore' + }, + { + label: 'Query', + name: 'query', + type: 'string', + description: 'Query to retrieve documents from retriever. If not specified, user question will be used', + optional: true, + acceptVariable: true + }, + { + label: 'Result Format', + name: 'resultFormat', + type: 'string', + rows: 4, + description: + 'Format to return the results in. Use {{context}} to insert the pageContent of the document and {{metadata.key}} to insert metadata values.', + default: defaultReturnFormat + }, + { + label: 'Top K', + name: 'topK', + description: 'Number of top results to fetch. Default to vector store topK', + placeholder: '4', + type: 'number', + additionalParams: true, + optional: true + } + ] + this.outputs = [ + { + label: 'Custom Retriever', + name: 'retriever', + baseClasses: this.baseClasses + }, + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: ['Document', 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, input: string): Promise { + const vectorStore = nodeData.inputs?.vectorStore as VectorStore + const query = nodeData.inputs?.query as string + const topK = nodeData.inputs?.topK as string + const resultFormat = nodeData.inputs?.resultFormat as string + + const output = nodeData.outputs?.output as string + + const retriever = CustomRetriever.fromVectorStore(vectorStore, { + resultFormat, + topK: topK ? parseInt(topK, 10) : (vectorStore as any)?.k ?? 4 + }) + + if (output === 'retriever') return retriever + else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input) + else if (output === 'text') { + let finaltext = '' + + const docs = await retriever.getRelevantDocuments(query ? query : input) + + for (const doc of docs) finaltext += `${doc.pageContent}\n` + + return handleEscapeCharacters(finaltext, false) + } + + return retriever + } +} + +type RetrieverInput = Omit, 'k'> & { + topK?: number + resultFormat?: string +} + +class CustomRetriever extends VectorStoreRetriever { + resultFormat: string + topK = 4 + + constructor(input: RetrieverInput) { + super(input) + this.topK = input.topK ?? this.topK + this.resultFormat = input.resultFormat ?? this.resultFormat + } + + async getRelevantDocuments(query: string): Promise { + const results = await this.vectorStore.similaritySearchWithScore(query, this.topK, this.filter) + + const finalDocs: Document[] = [] + for (const result of results) { + let res = this.resultFormat.replace(/{{context}}/g, result[0].pageContent) + res = replaceMetadata(res, result[0].metadata) + finalDocs.push( + new Document({ + pageContent: res, + metadata: result[0].metadata + }) + ) + } + return finalDocs + } + + static fromVectorStore(vectorStore: V, options: Omit, 'vectorStore'>) { + return new this({ ...options, vectorStore }) + } +} + +function replaceMetadata(template: string, metadata: Record): string { + const metadataRegex = /{{metadata\.([\w.]+)}}/g + + return template.replace(metadataRegex, (match, path) => { + const value = get(metadata, path) + return value !== undefined ? String(value) : match + }) +} + +module.exports = { nodeClass: CustomRetriever_Retrievers } diff --git a/packages/components/nodes/retrievers/CustomRetriever/customRetriever.svg b/packages/components/nodes/retrievers/CustomRetriever/customRetriever.svg new file mode 100644 index 00000000000..aa0e9c3eb48 --- /dev/null +++ b/packages/components/nodes/retrievers/CustomRetriever/customRetriever.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts b/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts new file mode 100644 index 00000000000..48168445477 --- /dev/null +++ b/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts @@ -0,0 +1,217 @@ +import { Document } from '@langchain/core/documents' +import { VectorStore, VectorStoreRetriever, VectorStoreRetrieverInput } from '@langchain/core/vectorstores' +import { INode, INodeData, INodeParams, INodeOutputsValue } from '../../../src/Interface' +import { handleEscapeCharacters } from '../../../src' +import { z } from 'zod' +import { convertStructuredSchemaToZod, ExtractTool } from '../../sequentialagents/commonUtils' +import { ChatGoogleGenerativeAI } from '@langchain/google-genai' + +const queryPrefix = 'query' +const defaultPrompt = `Extract keywords from the query: {{${queryPrefix}}}` + +class ExtractMetadataRetriever_Retrievers implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + badge?: string + baseClasses: string[] + inputs: INodeParams[] + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'Extract Metadata Retriever' + this.name = 'extractMetadataRetriever' + this.version = 1.0 + this.type = 'ExtractMetadataRetriever' + this.icon = 'dynamicMetadataRetriever.svg' + this.category = 'Retrievers' + this.description = 'Extract keywords/metadata from the query and use it to filter documents' + this.baseClasses = [this.type, 'BaseRetriever'] + this.badge = 'BETA' + this.inputs = [ + { + label: 'Vector Store', + name: 'vectorStore', + type: 'VectorStore' + }, + { + label: 'Chat Model', + name: 'model', + type: 'BaseChatModel' + }, + { + label: 'Query', + name: 'query', + type: 'string', + description: 'Query to retrieve documents from retriever. If not specified, user question will be used', + optional: true, + acceptVariable: true + }, + { + label: 'Prompt', + name: 'dynamicMetadataFilterRetrieverPrompt', + type: 'string', + description: 'Prompt to extract metadata from query', + rows: 4, + additionalParams: true, + default: defaultPrompt + }, + { + label: 'JSON Structured Output', + name: 'dynamicMetadataFilterRetrieverStructuredOutput', + type: 'datagrid', + description: + 'Instruct the model to give output in a JSON structured schema. This output will be used as the metadata filter for connected vector store', + datagrid: [ + { field: 'key', headerName: 'Key', editable: true }, + { + field: 'type', + headerName: 'Type', + type: 'singleSelect', + valueOptions: ['String', 'String Array', 'Number', 'Boolean', 'Enum'], + editable: true + }, + { field: 'enumValues', headerName: 'Enum Values', editable: true }, + { field: 'description', headerName: 'Description', flex: 1, editable: true } + ], + optional: true, + additionalParams: true + }, + { + label: 'Top K', + name: 'topK', + description: 'Number of top results to fetch. Default to vector store topK', + placeholder: '4', + type: 'number', + additionalParams: true, + optional: true + } + ] + this.outputs = [ + { + label: 'Extract Metadata Retriever', + name: 'retriever', + baseClasses: this.baseClasses + }, + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: ['Document', 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, input: string): Promise { + const vectorStore = nodeData.inputs?.vectorStore as VectorStore + let llm = nodeData.inputs?.model + const llmStructuredOutput = nodeData.inputs?.dynamicMetadataFilterRetrieverStructuredOutput + const topK = nodeData.inputs?.topK as string + const dynamicMetadataFilterRetrieverPrompt = nodeData.inputs?.dynamicMetadataFilterRetrieverPrompt as string + const query = nodeData.inputs?.query as string + const finalInputQuery = query ? query : input + + const output = nodeData.outputs?.output as string + + if (llmStructuredOutput && llmStructuredOutput !== '[]') { + try { + const structuredOutput = z.object(convertStructuredSchemaToZod(llmStructuredOutput)) + + if (llm instanceof ChatGoogleGenerativeAI) { + const tool = new ExtractTool({ + schema: structuredOutput + }) + // @ts-ignore + const modelWithTool = llm.bind({ + tools: [tool] + }) as any + llm = modelWithTool + } else { + // @ts-ignore + llm = llm.withStructuredOutput(structuredOutput) + } + } catch (exception) { + console.error(exception) + } + } + + const retriever = DynamicMetadataRetriever.fromVectorStore(vectorStore, { + structuredLLM: llm, + prompt: dynamicMetadataFilterRetrieverPrompt, + topK: topK ? parseInt(topK, 10) : (vectorStore as any)?.k ?? 4 + }) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter + + if (output === 'retriever') return retriever + else if (output === 'document') return await retriever.getRelevantDocuments(finalInputQuery) + else if (output === 'text') { + let finaltext = '' + + const docs = await retriever.getRelevantDocuments(finalInputQuery) + + for (const doc of docs) finaltext += `${doc.pageContent}\n` + + return handleEscapeCharacters(finaltext, false) + } + + return retriever + } +} + +type RetrieverInput = Omit, 'k'> & { + topK?: number + structuredLLM: any + prompt: string +} + +class DynamicMetadataRetriever extends VectorStoreRetriever { + topK = 4 + structuredLLM: any + prompt = '' + + constructor(input: RetrieverInput) { + super(input) + this.topK = input.topK ?? this.topK + this.structuredLLM = input.structuredLLM ?? this.structuredLLM + this.prompt = input.prompt ?? this.prompt + } + + async getFilter(query: string): Promise { + const structuredResponse = await this.structuredLLM.invoke(this.prompt.replace(`{{${queryPrefix}}}`, query)) + return structuredResponse + } + + async getRelevantDocuments(query: string): Promise { + const newFilter = await this.getFilter(query) + // @ts-ignore + this.filter = { ...this.filter, ...newFilter } + const results = await this.vectorStore.similaritySearchWithScore(query, this.topK, this.filter) + + const finalDocs: Document[] = [] + for (const result of results) { + finalDocs.push( + new Document({ + pageContent: result[0].pageContent, + metadata: result[0].metadata + }) + ) + } + return finalDocs + } + + static fromVectorStore(vectorStore: V, options: Omit, 'vectorStore'>) { + return new this({ ...options, vectorStore }) + } +} + +module.exports = { nodeClass: ExtractMetadataRetriever_Retrievers } diff --git a/packages/components/nodes/retrievers/ExtractMetadataRetriever/dynamicMetadataRetriever.svg b/packages/components/nodes/retrievers/ExtractMetadataRetriever/dynamicMetadataRetriever.svg new file mode 100644 index 00000000000..78f0e76c8d3 --- /dev/null +++ b/packages/components/nodes/retrievers/ExtractMetadataRetriever/dynamicMetadataRetriever.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts b/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts index 0a4d6988128..580d4ba4c0b 100644 --- a/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts +++ b/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts @@ -172,6 +172,7 @@ Passage:` else if (promptKey) obj.promptTemplate = promptKey const retriever = new HydeRetriever(obj) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter if (output === 'retriever') return retriever else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input) diff --git a/packages/components/nodes/retrievers/JinaRerankRetriever/JinaAI.svg b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaAI.svg new file mode 100644 index 00000000000..95b99d8b5e5 --- /dev/null +++ b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaAI.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerank.ts b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerank.ts new file mode 100644 index 00000000000..f55ea53abe4 --- /dev/null +++ b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerank.ts @@ -0,0 +1,51 @@ +import { Callbacks } from '@langchain/core/callbacks/manager' +import { Document } from '@langchain/core/documents' +import axios from 'axios' +import { BaseDocumentCompressor } from 'langchain/retrievers/document_compressors' + +export class JinaRerank extends BaseDocumentCompressor { + private jinaAPIKey: string + private readonly JINA_RERANK_API_URL = 'https://api.jina.ai/v1/rerank' + private model: string = 'jina-reranker-v2-base-multilingual' + private readonly topN: number + + constructor(jinaAPIKey: string, model: string, topN: number) { + super() + this.jinaAPIKey = jinaAPIKey + this.model = model + this.topN = topN + } + async compressDocuments( + documents: Document>[], + query: string, + _?: Callbacks | undefined + ): Promise>[]> { + if (documents.length === 0) { + return [] + } + const config = { + headers: { + Authorization: `Bearer ${this.jinaAPIKey}`, + 'Content-Type': 'application/json' + } + } + const data = { + model: this.model, + query: query, + documents: documents.map((doc) => doc.pageContent), + top_n: this.topN + } + try { + let returnedDocs = await axios.post(this.JINA_RERANK_API_URL, data, config) + const finalResults: Document>[] = [] + returnedDocs.data.results.forEach((result: any) => { + const doc = documents[result.index] + doc.metadata.relevance_score = result.relevance_score + finalResults.push(doc) + }) + return finalResults + } catch (error) { + return documents + } + } +} diff --git a/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerankRetriever.ts b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerankRetriever.ts new file mode 100644 index 00000000000..3160f3f7a30 --- /dev/null +++ b/packages/components/nodes/retrievers/JinaRerankRetriever/JinaRerankRetriever.ts @@ -0,0 +1,129 @@ +import { BaseRetriever } from '@langchain/core/retrievers' +import { ContextualCompressionRetriever } from 'langchain/retrievers/contextual_compression' +import { getCredentialData, getCredentialParam, handleEscapeCharacters } from '../../../src' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { JinaRerank } from './JinaRerank' + +class JinaRerankRetriever_Retrievers implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + badge: string + outputs: INodeOutputsValue[] + + constructor() { + this.label = 'Jina AI Rerank Retriever' + this.name = 'JinaRerankRetriever' + this.version = 1.0 + this.type = 'JinaRerankRetriever' + this.icon = 'JinaAI.svg' + this.category = 'Retrievers' + this.description = 'Jina AI Rerank indexes the documents from most to least semantically relevant to the query.' + this.baseClasses = [this.type, 'BaseRetriever'] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['jinaAIApi'] + } + this.inputs = [ + { + label: 'Vector Store Retriever', + name: 'baseRetriever', + type: 'VectorStoreRetriever' + }, + { + label: 'Model Name', + name: 'model', + type: 'options', + options: [ + { + label: 'jina-reranker-v2-base-multilingual', + name: 'jina-reranker-v2-base-multilingual' + }, + { + label: 'jina-colbert-v2', + name: 'jina-colbert-v2' + } + ], + default: 'jina-reranker-v2-base-multilingual', + optional: true + }, + { + label: 'Query', + name: 'query', + type: 'string', + description: 'Query to retrieve documents from retriever. If not specified, user question will be used', + optional: true, + acceptVariable: true + }, + { + label: 'Top N', + name: 'topN', + description: 'Number of top results to fetch. Default to 4', + placeholder: '4', + default: 4, + type: 'number', + additionalParams: true, + optional: true + } + ] + this.outputs = [ + { + label: 'Jina AI Rerank Retriever', + name: 'retriever', + baseClasses: this.baseClasses + }, + { + label: 'Document', + name: 'document', + description: 'Array of document objects containing metadata and pageContent', + baseClasses: ['Document', 'json'] + }, + { + label: 'Text', + name: 'text', + description: 'Concatenated string from pageContent of documents', + baseClasses: ['string', 'json'] + } + ] + } + + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const baseRetriever = nodeData.inputs?.baseRetriever as BaseRetriever + const model = nodeData.inputs?.model as string + const query = nodeData.inputs?.query as string + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const jinaApiKey = getCredentialParam('jinaAIAPIKey', credentialData, nodeData) + const topN = nodeData.inputs?.topN ? parseFloat(nodeData.inputs?.topN as string) : 4 + const output = nodeData.outputs?.output as string + + const jinaCompressor = new JinaRerank(jinaApiKey, model, topN) + + const retriever = new ContextualCompressionRetriever({ + baseCompressor: jinaCompressor, + baseRetriever: baseRetriever + }) + + if (output === 'retriever') return retriever + else if (output === 'document') return await retriever.invoke(query ? query : input) + else if (output === 'text') { + const docs = await retriever.invoke(query ? query : input) + let finaltext = '' + for (const doc of docs) finaltext += `${doc.pageContent}\n` + + return handleEscapeCharacters(finaltext, false) + } + + return retriever + } +} + +module.exports = { nodeClass: JinaRerankRetriever_Retrievers } diff --git a/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts b/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts index 3802f0da8ac..fd845a35c96 100644 --- a/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts +++ b/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts @@ -71,7 +71,7 @@ class MultiQueryRetriever_Retrievers implements INode { const retriever = MultiQueryRetriever.fromLLM({ llm: model, - retriever: vectorStore.asRetriever(), + retriever: vectorStore.asRetriever({ filter: vectorStore?.lc_kwargs?.filter ?? vectorStore?.filter }), verbose: process.env.DEBUG === 'true', // @ts-ignore prompt: PromptTemplate.fromTemplate(prompt) diff --git a/packages/components/nodes/retrievers/PromptRetriever/PromptRetriever.ts b/packages/components/nodes/retrievers/PromptRetriever/PromptRetriever.ts index 7ffaa64fafe..2966eee2391 100644 --- a/packages/components/nodes/retrievers/PromptRetriever/PromptRetriever.ts +++ b/packages/components/nodes/retrievers/PromptRetriever/PromptRetriever.ts @@ -1,3 +1,4 @@ +import { transformBracesWithColon } from '../../../src' import { INode, INodeData, INodeParams, PromptRetriever, PromptRetrieverInput } from '../../../src/Interface' class PromptRetriever_Retrievers implements INode { @@ -48,7 +49,8 @@ class PromptRetriever_Retrievers implements INode { async init(nodeData: INodeData): Promise { const name = nodeData.inputs?.name as string const description = nodeData.inputs?.description as string - const systemMessage = nodeData.inputs?.systemMessage as string + let systemMessage = nodeData.inputs?.systemMessage as string + systemMessage = transformBracesWithColon(systemMessage) const obj = { name, diff --git a/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts b/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts index 36141c5ca63..47ae2d00076 100644 --- a/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts +++ b/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts @@ -50,7 +50,7 @@ export class ReciprocalRankFusion extends BaseDocumentCompressor { }) const docList: Document>[][] = [] for (let i = 0; i < queries.length; i++) { - const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5) + const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5, this.baseRetriever.filter) const docs: any[] = [] resultOne.forEach((doc) => { docs.push(doc) diff --git a/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts b/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts index bdfb10d9769..94c2d021764 100644 --- a/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts +++ b/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts @@ -100,6 +100,7 @@ class SimilarityThresholdRetriever_Retrievers implements INode { maxK: maxK ? parseInt(maxK, 10) : 100, kIncrement: kIncrement ? parseInt(kIncrement, 10) : 2 }) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter if (output === 'retriever') return retriever else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input) diff --git a/packages/components/nodes/retrievers/VoyageAIRetriever/VoyageAIRerankRetriever.ts b/packages/components/nodes/retrievers/VoyageAIRetriever/VoyageAIRerankRetriever.ts index 8acf4dd6eea..53f02187fde 100644 --- a/packages/components/nodes/retrievers/VoyageAIRetriever/VoyageAIRerankRetriever.ts +++ b/packages/components/nodes/retrievers/VoyageAIRetriever/VoyageAIRerankRetriever.ts @@ -49,9 +49,17 @@ class VoyageAIRerankRetriever_Retrievers implements INode { label: 'rerank-lite-1', name: 'rerank-lite-1' }, + { + label: 'rerank-lite-2', + name: 'rerank-lite-2' + }, { label: 'rerank-1', name: 'rerank-1' + }, + { + label: 'rerank-2', + name: 'rerank-2' } ], default: 'rerank-lite-1', diff --git a/packages/components/nodes/sequentialagents/Agent/Agent.ts b/packages/components/nodes/sequentialagents/Agent/Agent.ts index 1116f6d38a5..ad626207429 100644 --- a/packages/components/nodes/sequentialagents/Agent/Agent.ts +++ b/packages/components/nodes/sequentialagents/Agent/Agent.ts @@ -18,18 +18,30 @@ import { ISeqAgentNode, IDatabaseEntity, IUsedTool, - IDocument + IDocument, + IStateWithMessages, + ConversationHistorySelection } from '../../../src/Interface' -import { ToolCallingAgentOutputParser, AgentExecutor, SOURCE_DOCUMENTS_PREFIX } from '../../../src/agents' -import { getInputVariables, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { ToolCallingAgentOutputParser, AgentExecutor, SOURCE_DOCUMENTS_PREFIX, ARTIFACTS_PREFIX } from '../../../src/agents' +import { + extractOutputFromArray, + getInputVariables, + getVars, + handleEscapeCharacters, + prepareSandboxVars, + removeInvalidImageMarkdown, + transformBracesWithColon +} from '../../../src/utils' import { customGet, getVM, processImageMessage, transformObjectPropertyToFunction, + filterConversationHistory, restructureMessages, MessagesState, - RunnableCallable + RunnableCallable, + checkMessageHistory } from '../commonUtils' import { END, StateGraph } from '@langchain/langgraph' import { StructuredTool } from '@langchain/core/tools' @@ -66,9 +78,9 @@ const howToUseCode = ` "sourceDocuments": [ { "pageContent": "This is the page content", - "metadata": "{foo: var}", + "metadata": "{foo: var}" } - ], + ] } \`\`\` @@ -100,10 +112,10 @@ const howToUse = ` |-----------|-----------| | user | john doe | -2. If you want to use the agent's output as the value to update state, it is available as available as \`$flow.output\` with the following structure: +2. If you want to use the Agent's output as the value to update state, it is available as available as \`$flow.output\` with the following structure: \`\`\`json { - "output": "Hello! How can I assist you today?", + "content": "Hello! How can I assist you today?", "usedTools": [ { "tool": "tool-name", @@ -114,9 +126,9 @@ const howToUse = ` "sourceDocuments": [ { "pageContent": "This is the page content", - "metadata": "{foo: var}", + "metadata": "{foo: var}" } - ], + ] } \`\`\` @@ -149,6 +161,31 @@ const defaultFunc = `const result = $flow.output; return { aggregate: [result.content] };` + +const messageHistoryExample = `const { AIMessage, HumanMessage, ToolMessage } = require('@langchain/core/messages'); + +return [ + new HumanMessage("What is 333382 🦜 1932?"), + new AIMessage({ + content: "", + tool_calls: [ + { + id: "12345", + name: "calulator", + args: { + number1: 333382, + number2: 1932, + operation: "divide", + }, + }, + ], + }), + new ToolMessage({ + tool_call_id: "12345", + content: "The answer is 172.558.", + }), + new AIMessage("The answer is 172.558."), +]` const TAB_IDENTIFIER = 'selectedUpdateStateMemoryTab' class Agent_SeqAgents implements INode { @@ -168,7 +205,7 @@ class Agent_SeqAgents implements INode { constructor() { this.label = 'Agent' this.name = 'seqAgent' - this.version = 2.0 + this.version = 4.1 this.type = 'Agent' this.icon = 'seqAgent.png' this.category = 'Sequential Agents' @@ -190,6 +227,53 @@ class Agent_SeqAgents implements INode { optional: true, default: examplePrompt }, + { + label: 'Prepend Messages History', + name: 'messageHistory', + description: + 'Prepend a list of messages between System Prompt and Human Prompt. This is useful when you want to provide few shot examples', + type: 'code', + hideCodeExecute: true, + codeExample: messageHistoryExample, + optional: true, + additionalParams: true + }, + { + label: 'Conversation History', + name: 'conversationHistorySelection', + type: 'options', + options: [ + { + label: 'User Question', + name: 'user_question', + description: 'Use the user question from the historical conversation messages as input.' + }, + { + label: 'Last Conversation Message', + name: 'last_message', + description: 'Use the last conversation message from the historical conversation messages as input.' + }, + { + label: 'All Conversation Messages', + name: 'all_messages', + description: 'Use all conversation messages from the historical conversation messages as input.' + }, + { + label: 'Empty', + name: 'empty', + description: + 'Do not use any messages from the conversation history. ' + + 'Ensure to use either System Prompt, Human Prompt, or Messages History.' + } + ], + default: 'all_messages', + optional: true, + description: + 'Select which messages from the conversation history to include in the prompt. ' + + 'The selected messages will be inserted between the System Prompt (if defined) and ' + + '[Messages History, Human Prompt].', + additionalParams: true + }, { label: 'Human Prompt', name: 'humanMessagePrompt', @@ -207,9 +291,11 @@ class Agent_SeqAgents implements INode { optional: true }, { - label: 'Start | Agent | Condition | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Start | Agent | Condition | LLMNode | ToolNode', + type: 'Start | Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, Condition, LLM Node, Tool Node, Custom Function, Execute Flow', list: true }, { @@ -222,7 +308,12 @@ class Agent_SeqAgents implements INode { { label: 'Require Approval', name: 'interrupt', - description: 'Require approval before executing tools. Will proceed when tools are not called', + description: + 'Pause execution and request user approval before running tools.\n' + + 'If enabled, the agent will prompt the user with customizable approve/reject options\n' + + 'and will proceed only after approval. This requires a configured agent memory to manage\n' + + 'the state and handle approval requests.\n' + + 'If no tools are invoked, the agent proceeds without interruption.', type: 'boolean', optional: true }, @@ -368,7 +459,9 @@ class Agent_SeqAgents implements INode { let tools = nodeData.inputs?.tools tools = flatten(tools) let agentSystemPrompt = nodeData.inputs?.systemMessagePrompt as string + agentSystemPrompt = transformBracesWithColon(agentSystemPrompt) let agentHumanPrompt = nodeData.inputs?.humanMessagePrompt as string + agentHumanPrompt = transformBracesWithColon(agentHumanPrompt) const agentLabel = nodeData.inputs?.agentName as string const sequentialNodes = nodeData.inputs?.sequentialNode as ISeqAgentNode[] const maxIterations = nodeData.inputs?.maxIterations as string @@ -426,6 +519,8 @@ class Agent_SeqAgents implements INode { llm, interrupt, agent: await createAgent( + nodeData, + options, agentName, state, llm, @@ -515,6 +610,8 @@ class Agent_SeqAgents implements INode { } async function createAgent( + nodeData: INodeData, + options: ICommonObject, agentName: string, state: ISeqAgentsState, llm: BaseChatModel, @@ -535,7 +632,8 @@ async function createAgent( if (systemPrompt) promptArrays.unshift(['system', systemPrompt]) if (humanPrompt) promptArrays.push(['human', humanPrompt]) - const prompt = ChatPromptTemplate.fromMessages(promptArrays) + let prompt = ChatPromptTemplate.fromMessages(promptArrays) + prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt) if (multiModalMessageContent.length) { const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent]) @@ -582,7 +680,7 @@ async function createAgent( sessionId: flowObj?.sessionId, chatId: flowObj?.chatId, input: flowObj?.input, - verbose: process.env.DEBUG === 'true' ? true : false, + verbose: process.env.DEBUG === 'true', maxIterations: maxIterations ? parseFloat(maxIterations) : undefined }) return executor @@ -597,7 +695,9 @@ async function createAgent( if (systemPrompt) promptArrays.unshift(['system', systemPrompt]) if (humanPrompt) promptArrays.push(['human', humanPrompt]) - const prompt = ChatPromptTemplate.fromMessages(promptArrays) + let prompt = ChatPromptTemplate.fromMessages(promptArrays) + prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt) + if (multiModalMessageContent.length) { const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent]) prompt.promptMessages.splice(1, 0, msg) @@ -624,7 +724,8 @@ async function createAgent( if (systemPrompt) promptArrays.unshift(['system', systemPrompt]) if (humanPrompt) promptArrays.push(['human', humanPrompt]) - const prompt = ChatPromptTemplate.fromMessages(promptArrays) + let prompt = ChatPromptTemplate.fromMessages(promptArrays) + prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt) if (multiModalMessageContent.length) { const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent]) @@ -681,6 +782,9 @@ async function agentNode( throw new Error('Aborted!') } + const historySelection = (nodeData.inputs?.conversationHistorySelection || 'all_messages') as ConversationHistorySelection + // @ts-ignore + state.messages = filterConversationHistory(historySelection, input, state) // @ts-ignore state.messages = restructureMessages(llm, state) @@ -688,11 +792,16 @@ async function agentNode( if (interrupt) { const messages = state.messages as unknown as BaseMessage[] - const lastMessage = messages[messages.length - 1] + const lastMessage = messages.length ? messages[messages.length - 1] : null // If the last message is a tool message and is an interrupted message, format output into standard agent output - if (lastMessage._getType() === 'tool' && lastMessage.additional_kwargs?.nodeId === nodeData.id) { - let formattedAgentResult: { output?: string; usedTools?: IUsedTool[]; sourceDocuments?: IDocument[] } = {} + if (lastMessage && lastMessage._getType() === 'tool' && lastMessage.additional_kwargs?.nodeId === nodeData.id) { + let formattedAgentResult: { + output?: string + usedTools?: IUsedTool[] + sourceDocuments?: IDocument[] + artifacts?: ICommonObject[] + } = {} formattedAgentResult.output = result.content if (lastMessage.additional_kwargs?.usedTools) { formattedAgentResult.usedTools = lastMessage.additional_kwargs.usedTools as IUsedTool[] @@ -700,6 +809,9 @@ async function agentNode( if (lastMessage.additional_kwargs?.sourceDocuments) { formattedAgentResult.sourceDocuments = lastMessage.additional_kwargs.sourceDocuments as IDocument[] } + if (lastMessage.additional_kwargs?.artifacts) { + formattedAgentResult.artifacts = lastMessage.additional_kwargs.artifacts as ICommonObject[] + } result = formattedAgentResult } else { result.name = name @@ -718,12 +830,17 @@ async function agentNode( if (result.sourceDocuments) { additional_kwargs.sourceDocuments = result.sourceDocuments } + if (result.artifacts) { + additional_kwargs.artifacts = result.artifacts + } if (result.output) { result.content = result.output delete result.output } - const outputContent = typeof result === 'string' ? result : result.content || result.output + let outputContent = typeof result === 'string' ? result : result.content || result.output + outputContent = extractOutputFromArray(outputContent) + outputContent = removeInvalidImageMarkdown(outputContent) if (nodeData.inputs?.updateStateMemoryUI || nodeData.inputs?.updateStateMemoryCode) { let formattedOutput = { @@ -859,20 +976,51 @@ class ToolNode extends RunnableCallable } private async run(input: BaseMessage[] | MessagesState, config: RunnableConfig): Promise { - const message = Array.isArray(input) ? input[input.length - 1] : input.messages[input.messages.length - 1] + let messages: BaseMessage[] + + // Check if input is an array of BaseMessage[] + if (Array.isArray(input)) { + messages = input + } + // Check if input is IStateWithMessages + else if ((input as IStateWithMessages).messages) { + messages = (input as IStateWithMessages).messages + } + // Handle MessagesState type + else { + messages = (input as MessagesState).messages + } + + // Get the last message + const message = messages[messages.length - 1] if (message._getType() !== 'ai') { throw new Error('ToolNode only accepts AIMessages as input.') } + // Extract all properties except messages for IStateWithMessages + const { messages: _, ...inputWithoutMessages } = Array.isArray(input) ? { messages: input } : input + const ChannelsWithoutMessages = { + chatId: this.options.chatId, + sessionId: this.options.sessionId, + input: this.inputQuery, + state: inputWithoutMessages + } + const outputs = await Promise.all( (message as AIMessage).tool_calls?.map(async (call) => { const tool = this.tools.find((tool) => tool.name === call.name) if (tool === undefined) { throw new Error(`Tool ${call.name} not found.`) } + if (tool && (tool as any).setFlowObject) { + // @ts-ignore + tool.setFlowObject(ChannelsWithoutMessages) + } let output = await tool.invoke(call.args, config) let sourceDocuments: Document[] = [] + let artifacts = [] + if (output?.includes(SOURCE_DOCUMENTS_PREFIX)) { const outputArray = output.split(SOURCE_DOCUMENTS_PREFIX) output = outputArray[0] @@ -883,12 +1031,23 @@ class ToolNode extends RunnableCallable console.error('Error parsing source documents from tool') } } + if (output?.includes(ARTIFACTS_PREFIX)) { + const outputArray = output.split(ARTIFACTS_PREFIX) + output = outputArray[0] + try { + artifacts = JSON.parse(outputArray[1]) + } catch (e) { + console.error('Error parsing artifacts from tool') + } + } + return new ToolMessage({ name: tool.name, content: typeof output === 'string' ? output : JSON.stringify(output), tool_call_id: call.id!, additional_kwargs: { sourceDocuments, + artifacts, args: call.args, usedTools: [ { diff --git a/packages/components/nodes/sequentialagents/Condition/Condition.ts b/packages/components/nodes/sequentialagents/Condition/Condition.ts index bb402805b22..1455c17b1a7 100644 --- a/packages/components/nodes/sequentialagents/Condition/Condition.ts +++ b/packages/components/nodes/sequentialagents/Condition/Condition.ts @@ -96,7 +96,7 @@ class Condition_SeqAgents implements INode { constructor() { this.label = 'Condition' this.name = 'seqCondition' - this.version = 2.0 + this.version = 2.1 this.type = 'Condition' this.icon = 'condition.svg' this.category = 'Sequential Agents' @@ -112,9 +112,11 @@ class Condition_SeqAgents implements INode { placeholder: 'If X, then Y' }, { - label: 'Start | Agent | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Start | Agent | LLMNode | ToolNode', + type: 'Start | Agent | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, LLM Node, Tool Node, Custom Function, Execute Flow', list: true }, { diff --git a/packages/components/nodes/sequentialagents/ConditionAgent/ConditionAgent.ts b/packages/components/nodes/sequentialagents/ConditionAgent/ConditionAgent.ts index dff6e135ffc..ae56efe129b 100644 --- a/packages/components/nodes/sequentialagents/ConditionAgent/ConditionAgent.ts +++ b/packages/components/nodes/sequentialagents/ConditionAgent/ConditionAgent.ts @@ -6,6 +6,7 @@ import { RunnableSequence, RunnablePassthrough, RunnableConfig } from '@langchai import { BaseMessage } from '@langchain/core/messages' import { BaseChatModel } from '@langchain/core/language_models/chat_models' import { + ConversationHistorySelection, ICommonObject, IDatabaseEntity, INode, @@ -15,7 +16,7 @@ import { ISeqAgentNode, ISeqAgentsState } from '../../../src/Interface' -import { getInputVariables, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { getInputVariables, getVars, handleEscapeCharacters, prepareSandboxVars, transformBracesWithColon } from '../../../src/utils' import { ExtractTool, checkCondition, @@ -23,6 +24,7 @@ import { customGet, getVM, transformObjectPropertyToFunction, + filterConversationHistory, restructureMessages } from '../commonUtils' import { ChatGoogleGenerativeAI } from '../../chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI' @@ -149,7 +151,7 @@ class ConditionAgent_SeqAgents implements INode { constructor() { this.label = 'Condition Agent' this.name = 'seqConditionAgent' - this.version = 2.0 + this.version = 3.1 this.type = 'ConditionAgent' this.icon = 'condition.svg' this.category = 'Sequential Agents' @@ -164,9 +166,11 @@ class ConditionAgent_SeqAgents implements INode { placeholder: 'Condition Agent' }, { - label: 'Start | Agent | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Start | Agent | LLMNode | ToolNode', + type: 'Start | Agent | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, LLM Node, Tool Node, Custom Function, Execute Flow', list: true }, { @@ -185,6 +189,42 @@ class ConditionAgent_SeqAgents implements INode { additionalParams: true, optional: true }, + { + label: 'Conversation History', + name: 'conversationHistorySelection', + type: 'options', + options: [ + { + label: 'User Question', + name: 'user_question', + description: 'Use the user question from the historical conversation messages as input.' + }, + { + label: 'Last Conversation Message', + name: 'last_message', + description: 'Use the last conversation message from the historical conversation messages as input.' + }, + { + label: 'All Conversation Messages', + name: 'all_messages', + description: 'Use all conversation messages from the historical conversation messages as input.' + }, + { + label: 'Empty', + name: 'empty', + description: + 'Do not use any messages from the conversation history. ' + + 'Ensure to use either System Prompt, Human Prompt, or Messages History.' + } + ], + default: 'all_messages', + optional: true, + description: + 'Select which messages from the conversation history to include in the prompt. ' + + 'The selected messages will be inserted between the System Prompt (if defined) and ' + + 'Human Prompt.', + additionalParams: true + }, { label: 'Human Prompt', name: 'humanMessagePrompt', @@ -350,7 +390,9 @@ class ConditionAgent_SeqAgents implements INode { const output = nodeData.outputs?.output as string const sequentialNodes = nodeData.inputs?.sequentialNode as ISeqAgentNode[] let agentPrompt = nodeData.inputs?.systemMessagePrompt as string + agentPrompt = transformBracesWithColon(agentPrompt) let humanPrompt = nodeData.inputs?.humanMessagePrompt as string + humanPrompt = transformBracesWithColon(humanPrompt) const promptValuesStr = nodeData.inputs?.promptValues const conditionAgentStructuredOutput = nodeData.inputs?.conditionAgentStructuredOutput const model = nodeData.inputs?.model as BaseChatModel @@ -481,6 +523,9 @@ const runCondition = async ( }) } + const historySelection = (nodeData.inputs?.conversationHistorySelection || 'all_messages') as ConversationHistorySelection + // @ts-ignore + state.messages = filterConversationHistory(historySelection, input, state) // @ts-ignore state.messages = restructureMessages(model, state) diff --git a/packages/components/nodes/sequentialagents/CustomFunction/CustomFunction.ts b/packages/components/nodes/sequentialagents/CustomFunction/CustomFunction.ts new file mode 100644 index 00000000000..b7d831e17d0 --- /dev/null +++ b/packages/components/nodes/sequentialagents/CustomFunction/CustomFunction.ts @@ -0,0 +1,257 @@ +import { NodeVM } from '@flowiseai/nodevm' +import { DataSource } from 'typeorm' +import { availableDependencies, defaultAllowBuiltInDep, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams, ISeqAgentNode, ISeqAgentsState } from '../../../src/Interface' +import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages' +import { customGet } from '../commonUtils' + +const howToUseCode = ` +1. Must return a string value at the end of function. + +2. You can get default flow config, including the current "state": + - \`$flow.sessionId\` + - \`$flow.chatId\` + - \`$flow.chatflowId\` + - \`$flow.input\` + - \`$flow.state\` + +3. You can get custom variables: \`$vars.\` + +` + +class CustomFunction_SeqAgents implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Custom JS Function' + this.name = 'seqCustomFunction' + this.version = 1.0 + this.type = 'CustomFunction' + this.icon = 'customfunction.svg' + this.category = 'Sequential Agents' + this.description = `Execute custom javascript function` + this.baseClasses = [this.type] + this.inputs = [ + { + label: 'Input Variables', + name: 'functionInputVariables', + description: 'Input variables can be used in the function with prefix $. For example: $var', + type: 'json', + optional: true, + acceptVariable: true, + list: true + }, + { + label: 'Sequential Node', + name: 'sequentialNode', + type: 'Start | Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, Condition, LLM Node, Tool Node, Custom Function, Execute Flow', + list: true + }, + { + label: 'Function Name', + name: 'functionName', + type: 'string', + placeholder: 'My Function' + }, + { + label: 'Javascript Function', + name: 'javascriptFunction', + type: 'code', + hint: { + label: 'How to use', + value: howToUseCode + } + }, + { + label: 'Return Value As', + name: 'returnValueAs', + type: 'options', + options: [ + { label: 'AI Message', name: 'aiMessage' }, + { label: 'Human Message', name: 'humanMessage' }, + { + label: 'State Object', + name: 'stateObj', + description: "Return as state object, ex: { foo: bar }. This will update the custom state 'foo' to 'bar'" + } + ], + default: 'aiMessage' + } + ] + } + + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const functionName = nodeData.inputs?.functionName as string + const javascriptFunction = nodeData.inputs?.javascriptFunction as string + const functionInputVariablesRaw = nodeData.inputs?.functionInputVariables + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const sequentialNodes = nodeData.inputs?.sequentialNode as ISeqAgentNode[] + const returnValueAs = nodeData.inputs?.returnValueAs as string + + if (!sequentialNodes || !sequentialNodes.length) throw new Error('Custom function must have a predecessor!') + + const executeFunc = async (state: ISeqAgentsState) => { + const variables = await getVars(appDataSource, databaseEntities, nodeData) + const flow = { + chatflowId: options.chatflowid, + sessionId: options.sessionId, + chatId: options.chatId, + input, + state + } + + let inputVars: ICommonObject = {} + if (functionInputVariablesRaw) { + try { + inputVars = + typeof functionInputVariablesRaw === 'object' ? functionInputVariablesRaw : JSON.parse(functionInputVariablesRaw) + } catch (exception) { + throw new Error('Invalid JSON in the Custom Function Input Variables: ' + exception) + } + } + + // Some values might be a stringified JSON, parse it + for (const key in inputVars) { + let value = inputVars[key] + if (typeof value === 'string') { + value = handleEscapeCharacters(value, true) + if (value.startsWith('{') && value.endsWith('}')) { + try { + value = JSON.parse(value) + const nodeId = value.id || '' + if (nodeId) { + const messages = state.messages as unknown as BaseMessage[] + const content = messages.find((msg) => msg.additional_kwargs?.nodeId === nodeId)?.content + if (content) { + value = content + } + } + } catch (e) { + // ignore + } + } + + if (value.startsWith('$flow.')) { + const variableValue = customGet(flow, value.replace('$flow.', '')) + if (variableValue) { + value = variableValue + } + } else if (value.startsWith('$vars')) { + value = customGet(flow, value.replace('$', '')) + } + inputVars[key] = value + } + } + + let sandbox: any = { + $input: input, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } + sandbox['$vars'] = prepareSandboxVars(variables) + sandbox['$flow'] = flow + + if (Object.keys(inputVars).length) { + for (const item in inputVars) { + sandbox[`$${item}`] = inputVars[item] + } + } + + const builtinDeps = process.env.TOOL_FUNCTION_BUILTIN_DEP + ? defaultAllowBuiltInDep.concat(process.env.TOOL_FUNCTION_BUILTIN_DEP.split(',')) + : defaultAllowBuiltInDep + const externalDeps = process.env.TOOL_FUNCTION_EXTERNAL_DEP ? process.env.TOOL_FUNCTION_EXTERNAL_DEP.split(',') : [] + const deps = availableDependencies.concat(externalDeps) + + const nodeVMOptions = { + console: 'inherit', + sandbox, + require: { + external: { modules: deps }, + builtin: builtinDeps + }, + eval: false, + wasm: false, + timeout: 10000 + } as any + + const vm = new NodeVM(nodeVMOptions) + try { + const response = await vm.run(`module.exports = async function() {${javascriptFunction}}()`, __dirname) + + if (returnValueAs === 'stateObj') { + if (typeof response !== 'object') { + throw new Error('Custom function must return an object!') + } + return { + ...state, + ...response + } + } + + if (typeof response !== 'string') { + throw new Error('Custom function must return a string!') + } + + if (returnValueAs === 'humanMessage') { + return { + messages: [ + new HumanMessage({ + content: response, + additional_kwargs: { + nodeId: nodeData.id + } + }) + ] + } + } + + return { + messages: [ + new AIMessage({ + content: response, + additional_kwargs: { + nodeId: nodeData.id + } + }) + ] + } + } catch (e) { + throw new Error(e) + } + } + + const startLLM = sequentialNodes[0].startLLM + + const returnOutput: ISeqAgentNode = { + id: nodeData.id, + node: executeFunc, + name: functionName.toLowerCase().replace(/\s/g, '_').trim(), + label: functionName, + type: 'utilities', + output: 'CustomFunction', + llm: startLLM, + startLLM, + multiModalMessageContent: sequentialNodes[0]?.multiModalMessageContent, + predecessorAgents: sequentialNodes + } + + return returnOutput + } +} + +module.exports = { nodeClass: CustomFunction_SeqAgents } diff --git a/packages/components/nodes/sequentialagents/CustomFunction/customfunction.svg b/packages/components/nodes/sequentialagents/CustomFunction/customfunction.svg new file mode 100644 index 00000000000..506f3248cb5 --- /dev/null +++ b/packages/components/nodes/sequentialagents/CustomFunction/customfunction.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/components/nodes/sequentialagents/End/End.ts b/packages/components/nodes/sequentialagents/End/End.ts index 8b22338610d..7705195665b 100644 --- a/packages/components/nodes/sequentialagents/End/End.ts +++ b/packages/components/nodes/sequentialagents/End/End.ts @@ -18,7 +18,7 @@ class End_SeqAgents implements INode { constructor() { this.label = 'End' this.name = 'seqEnd' - this.version = 2.0 + this.version = 2.1 this.type = 'End' this.icon = 'end.svg' this.category = 'Sequential Agents' @@ -27,9 +27,11 @@ class End_SeqAgents implements INode { this.documentation = 'https://docs.flowiseai.com/using-flowise/agentflows/sequential-agents#id-10.-end-node' this.inputs = [ { - label: 'Agent | Condition | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Agent | Condition | LLMNode | ToolNode' + type: 'Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Agent, Condition, LLM Node, Tool Node, Custom Function, Execute Flow' } ] this.hideOutput = true diff --git a/packages/components/nodes/sequentialagents/ExecuteFlow/ExecuteFlow.ts b/packages/components/nodes/sequentialagents/ExecuteFlow/ExecuteFlow.ts new file mode 100644 index 00000000000..479ebfbb48a --- /dev/null +++ b/packages/components/nodes/sequentialagents/ExecuteFlow/ExecuteFlow.ts @@ -0,0 +1,339 @@ +import { NodeVM } from '@flowiseai/nodevm' +import { DataSource } from 'typeorm' +import { + availableDependencies, + defaultAllowBuiltInDep, + getCredentialData, + getCredentialParam, + getVars, + prepareSandboxVars +} from '../../../src/utils' +import { + ICommonObject, + IDatabaseEntity, + INode, + INodeData, + INodeOptionsValue, + INodeParams, + ISeqAgentNode, + ISeqAgentsState +} from '../../../src/Interface' +import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages' +import { v4 as uuidv4 } from 'uuid' + +class ExecuteFlow_SeqAgents implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + + constructor() { + this.label = 'Execute Flow' + this.name = 'seqExecuteFlow' + this.version = 1.0 + this.type = 'ExecuteFlow' + this.icon = 'executeflow.svg' + this.category = 'Sequential Agents' + this.description = `Execute chatflow/agentflow and return final response` + this.baseClasses = [this.type] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['chatflowApi'], + optional: true + } + this.inputs = [ + { + label: 'Sequential Node', + name: 'sequentialNode', + type: 'Start | Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, Condition, LLM Node, Tool Node, Custom Function, Execute Flow', + list: true + }, + { + label: 'Name', + name: 'seqExecuteFlowName', + type: 'string' + }, + { + label: 'Select Flow', + name: 'selectedFlow', + type: 'asyncOptions', + loadMethod: 'listFlows' + }, + { + label: 'Input', + name: 'seqExecuteFlowInput', + type: 'options', + description: 'Select one of the following or enter custom input', + freeSolo: true, + loadPreviousNodes: true, + options: [ + { + label: '{{ question }}', + name: 'userQuestion', + description: 'Use the user question from the chat as input.' + } + ] + }, + { + label: 'Override Config', + name: 'overrideConfig', + description: 'Override the config passed to the flow.', + type: 'json', + optional: true, + additionalParams: true + }, + { + label: 'Base URL', + name: 'baseURL', + type: 'string', + description: + 'Base URL to Flowise. By default, it is the URL of the incoming request. Useful when you need to execute flow through an alternative route.', + placeholder: 'http://localhost:3000', + optional: true, + additionalParams: true + }, + { + label: 'Start new session per message', + name: 'startNewSession', + type: 'boolean', + description: + 'Whether to continue the session or start a new one with each interaction. Useful for flows with memory if you want to avoid it.', + default: false, + optional: true, + additionalParams: true + }, + { + label: 'Return Value As', + name: 'returnValueAs', + type: 'options', + options: [ + { label: 'AI Message', name: 'aiMessage' }, + { label: 'Human Message', name: 'humanMessage' }, + { + label: 'State Object', + name: 'stateObj', + description: "Return as state object, ex: { foo: bar }. This will update the custom state 'foo' to 'bar'" + } + ], + default: 'aiMessage' + } + ] + } + + //@ts-ignore + loadMethods = { + async listFlows(_: INodeData, options: ICommonObject): Promise { + const returnData: INodeOptionsValue[] = [] + + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + if (appDataSource === undefined || !appDataSource) { + return returnData + } + + const chatflows = await appDataSource.getRepository(databaseEntities['ChatFlow']).find() + + for (let i = 0; i < chatflows.length; i += 1) { + const data = { + label: chatflows[i].name, + name: chatflows[i].id + } as INodeOptionsValue + returnData.push(data) + } + return returnData + } + } + + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + const selectedFlowId = nodeData.inputs?.selectedFlow as string + const _seqExecuteFlowName = nodeData.inputs?.seqExecuteFlowName as string + if (!_seqExecuteFlowName) throw new Error('Execute Flow node name is required!') + const seqExecuteFlowName = _seqExecuteFlowName.toLowerCase().replace(/\s/g, '_').trim() + const startNewSession = nodeData.inputs?.startNewSession as boolean + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const sequentialNodes = nodeData.inputs?.sequentialNode as ISeqAgentNode[] + const seqExecuteFlowInput = nodeData.inputs?.seqExecuteFlowInput as string + const overrideConfig = + typeof nodeData.inputs?.overrideConfig === 'string' && + nodeData.inputs.overrideConfig.startsWith('{') && + nodeData.inputs.overrideConfig.endsWith('}') + ? JSON.parse(nodeData.inputs.overrideConfig) + : nodeData.inputs?.overrideConfig + + if (!sequentialNodes || !sequentialNodes.length) throw new Error('Execute Flow must have a predecessor!') + + const baseURL = (nodeData.inputs?.baseURL as string) || (options.baseURL as string) + const returnValueAs = nodeData.inputs?.returnValueAs as string + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const chatflowApiKey = getCredentialParam('chatflowApiKey', credentialData, nodeData) + + if (selectedFlowId === options.chatflowid) throw new Error('Cannot call the same agentflow!') + + let headers = {} + if (chatflowApiKey) headers = { Authorization: `Bearer ${chatflowApiKey}` } + + const chatflowId = options.chatflowid + const sessionId = options.sessionId + const chatId = options.chatId + + const executeFunc = async (state: ISeqAgentsState) => { + const variables = await getVars(appDataSource, databaseEntities, nodeData) + + let flowInput = '' + if (seqExecuteFlowInput === 'userQuestion') { + flowInput = input + } else if (seqExecuteFlowInput && seqExecuteFlowInput.startsWith('{{') && seqExecuteFlowInput.endsWith('}}')) { + const nodeId = seqExecuteFlowInput.replace('{{', '').replace('}}', '').replace('$', '').trim() + const messageOutputs = ((state.messages as unknown as BaseMessage[]) ?? []).filter( + (message) => message.additional_kwargs && message.additional_kwargs?.nodeId === nodeId + ) + const messageOutput = messageOutputs[messageOutputs.length - 1] + + if (messageOutput) { + flowInput = JSON.stringify(messageOutput.content) + } + } + + const flow = { + chatflowId, + sessionId, + chatId, + input: flowInput, + state + } + + const body = { + question: flowInput, + chatId: startNewSession ? uuidv4() : chatId, + overrideConfig: { + sessionId: startNewSession ? uuidv4() : sessionId, + ...(overrideConfig ?? {}) + } + } + + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + ...headers + }, + body: JSON.stringify(body) + } + + let sandbox: ICommonObject = { + $input: flowInput, + $callOptions: options, + $callBody: body, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } + sandbox['$vars'] = prepareSandboxVars(variables) + sandbox['$flow'] = flow + + const code = ` + const fetch = require('node-fetch'); + const url = "${baseURL}/api/v1/prediction/${selectedFlowId}"; + + const body = $callBody; + + const options = $callOptions; + + try { + const response = await fetch(url, options); + const resp = await response.json(); + return resp.text; + } catch (error) { + console.error(error); + return ''; + } +` + + const builtinDeps = process.env.TOOL_FUNCTION_BUILTIN_DEP + ? defaultAllowBuiltInDep.concat(process.env.TOOL_FUNCTION_BUILTIN_DEP.split(',')) + : defaultAllowBuiltInDep + const externalDeps = process.env.TOOL_FUNCTION_EXTERNAL_DEP ? process.env.TOOL_FUNCTION_EXTERNAL_DEP.split(',') : [] + const deps = availableDependencies.concat(externalDeps) + + const nodeVMOptions = { + console: 'inherit', + sandbox, + require: { + external: { modules: deps }, + builtin: builtinDeps + }, + eval: false, + wasm: false, + timeout: 10000 + } as any + + const vm = new NodeVM(nodeVMOptions) + try { + let response = await vm.run(`module.exports = async function() {${code}}()`, __dirname) + + if (typeof response === 'object') { + response = JSON.stringify(response) + } + + if (returnValueAs === 'humanMessage') { + return { + messages: [ + new HumanMessage({ + content: response, + additional_kwargs: { + nodeId: nodeData.id + } + }) + ] + } + } + + return { + messages: [ + new AIMessage({ + content: response, + additional_kwargs: { + nodeId: nodeData.id + } + }) + ] + } + } catch (e) { + throw new Error(e) + } + } + + const startLLM = sequentialNodes[0].startLLM + + const returnOutput: ISeqAgentNode = { + id: nodeData.id, + node: executeFunc, + name: seqExecuteFlowName, + label: _seqExecuteFlowName, + type: 'utilities', + output: 'ExecuteFlow', + llm: startLLM, + startLLM, + multiModalMessageContent: sequentialNodes[0]?.multiModalMessageContent, + predecessorAgents: sequentialNodes + } + + return returnOutput + } +} + +module.exports = { nodeClass: ExecuteFlow_SeqAgents } diff --git a/packages/components/nodes/sequentialagents/ExecuteFlow/executeflow.svg b/packages/components/nodes/sequentialagents/ExecuteFlow/executeflow.svg new file mode 100644 index 00000000000..f97d2511457 --- /dev/null +++ b/packages/components/nodes/sequentialagents/ExecuteFlow/executeflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts b/packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts index 17b5830d90a..182f1a41bf4 100644 --- a/packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts +++ b/packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts @@ -14,10 +14,18 @@ import { MessageContentImageUrl, INodeOutputsValue, ISeqAgentNode, - IDatabaseEntity + IDatabaseEntity, + ConversationHistorySelection } from '../../../src/Interface' import { AgentExecutor } from '../../../src/agents' -import { getInputVariables, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { + extractOutputFromArray, + getInputVariables, + getVars, + handleEscapeCharacters, + prepareSandboxVars, + transformBracesWithColon +} from '../../../src/utils' import { ExtractTool, convertStructuredSchemaToZod, @@ -25,7 +33,9 @@ import { getVM, processImageMessage, transformObjectPropertyToFunction, - restructureMessages + filterConversationHistory, + restructureMessages, + checkMessageHistory } from '../commonUtils' import { ChatGoogleGenerativeAI } from '../../chatmodels/ChatGoogleGenerativeAI/FlowiseChatGoogleGenerativeAI' @@ -87,7 +97,7 @@ const howToUse = ` |-----------|-----------| | user | john doe | -2. If you want to use the agent's output as the value to update state, it is available as available as \`$flow.output\` with the following structure: +2. If you want to use the LLM Node's output as the value to update state, it is available as available as \`$flow.output\` with the following structure: \`\`\`json { "content": 'Hello! How can I assist you today?', @@ -130,6 +140,31 @@ return { aggregate: [result.content] };` +const messageHistoryExample = `const { AIMessage, HumanMessage, ToolMessage } = require('@langchain/core/messages'); + +return [ + new HumanMessage("What is 333382 🦜 1932?"), + new AIMessage({ + content: "", + tool_calls: [ + { + id: "12345", + name: "calulator", + args: { + number1: 333382, + number2: 1932, + operation: "divide", + }, + }, + ], + }), + new ToolMessage({ + tool_call_id: "12345", + content: "The answer is 172.558.", + }), + new AIMessage("The answer is 172.558."), +]` + class LLMNode_SeqAgents implements INode { label: string name: string @@ -147,7 +182,7 @@ class LLMNode_SeqAgents implements INode { constructor() { this.label = 'LLM Node' this.name = 'seqLLMNode' - this.version = 2.0 + this.version = 4.1 this.type = 'LLMNode' this.icon = 'llmNode.svg' this.category = 'Sequential Agents' @@ -169,6 +204,53 @@ class LLMNode_SeqAgents implements INode { optional: true, additionalParams: true }, + { + label: 'Prepend Messages History', + name: 'messageHistory', + description: + 'Prepend a list of messages between System Prompt and Human Prompt. This is useful when you want to provide few shot examples', + type: 'code', + hideCodeExecute: true, + codeExample: messageHistoryExample, + optional: true, + additionalParams: true + }, + { + label: 'Conversation History', + name: 'conversationHistorySelection', + type: 'options', + options: [ + { + label: 'User Question', + name: 'user_question', + description: 'Use the user question from the historical conversation messages as input.' + }, + { + label: 'Last Conversation Message', + name: 'last_message', + description: 'Use the last conversation message from the historical conversation messages as input.' + }, + { + label: 'All Conversation Messages', + name: 'all_messages', + description: 'Use all conversation messages from the historical conversation messages as input.' + }, + { + label: 'Empty', + name: 'empty', + description: + 'Do not use any messages from the conversation history. ' + + 'Ensure to use either System Prompt, Human Prompt, or Messages History.' + } + ], + default: 'all_messages', + optional: true, + description: + 'Select which messages from the conversation history to include in the prompt. ' + + 'The selected messages will be inserted between the System Prompt (if defined) and ' + + '[Messages History, Human Prompt].', + additionalParams: true + }, { label: 'Human Prompt', name: 'humanMessagePrompt', @@ -179,9 +261,11 @@ class LLMNode_SeqAgents implements INode { additionalParams: true }, { - label: 'Start | Agent | Condition | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Start | Agent | Condition | LLMNode | ToolNode', + type: 'Start | Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Start, Agent, Condition, LLM, Tool Node, Custom Function, Execute Flow', list: true }, { @@ -313,7 +397,9 @@ class LLMNode_SeqAgents implements INode { tools = flatten(tools) let systemPrompt = nodeData.inputs?.systemMessagePrompt as string + systemPrompt = transformBracesWithColon(systemPrompt) let humanPrompt = nodeData.inputs?.humanMessagePrompt as string + humanPrompt = transformBracesWithColon(humanPrompt) const llmNodeLabel = nodeData.inputs?.llmNodeName as string const sequentialNodes = nodeData.inputs?.sequentialNode as ISeqAgentNode[] const model = nodeData.inputs?.model as BaseChatModel @@ -355,6 +441,8 @@ class LLMNode_SeqAgents implements INode { state, llm, agent: await createAgent( + nodeData, + options, llmNodeName, state, bindModel || llm, @@ -394,6 +482,8 @@ class LLMNode_SeqAgents implements INode { } async function createAgent( + nodeData: INodeData, + options: ICommonObject, llmNodeName: string, state: ISeqAgentsState, llm: BaseChatModel, @@ -438,7 +528,9 @@ async function createAgent( if (systemPrompt) promptArrays.unshift(['system', systemPrompt]) if (humanPrompt) promptArrays.push(['human', humanPrompt]) - const prompt = ChatPromptTemplate.fromMessages(promptArrays) + let prompt = ChatPromptTemplate.fromMessages(promptArrays) + prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt) + if (multiModalMessageContent.length) { const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent]) prompt.promptMessages.splice(1, 0, msg) @@ -491,6 +583,9 @@ async function agentNode( throw new Error('Aborted!') } + const historySelection = (nodeData.inputs?.conversationHistorySelection || 'all_messages') as ConversationHistorySelection + // @ts-ignore + state.messages = filterConversationHistory(historySelection, input, state) // @ts-ignore state.messages = restructureMessages(llm, state) @@ -523,6 +618,8 @@ async function agentNode( } else { result.name = name result.additional_kwargs = { ...result.additional_kwargs, nodeId: nodeData.id } + let outputContent = typeof result === 'string' ? result : result.content + result.content = extractOutputFromArray(outputContent) return { ...returnedOutput, messages: [result] @@ -543,6 +640,8 @@ async function agentNode( } else { result.name = name result.additional_kwargs = { ...result.additional_kwargs, nodeId: nodeData.id } + let outputContent = typeof result === 'string' ? result : result.content + result.content = extractOutputFromArray(outputContent) return { messages: [result] } diff --git a/packages/components/nodes/sequentialagents/Loop/Loop.ts b/packages/components/nodes/sequentialagents/Loop/Loop.ts index 357c0883b89..ba0a012c620 100644 --- a/packages/components/nodes/sequentialagents/Loop/Loop.ts +++ b/packages/components/nodes/sequentialagents/Loop/Loop.ts @@ -17,7 +17,7 @@ class Loop_SeqAgents implements INode { constructor() { this.label = 'Loop' this.name = 'seqLoop' - this.version = 2.0 + this.version = 2.1 this.type = 'Loop' this.icon = 'loop.svg' this.category = 'Sequential Agents' @@ -26,9 +26,11 @@ class Loop_SeqAgents implements INode { this.documentation = 'https://docs.flowiseai.com/using-flowise/agentflows/sequential-agents#id-9.-loop-node' this.inputs = [ { - label: 'Agent | Condition | LLM | Tool Node', + label: 'Sequential Node', name: 'sequentialNode', - type: 'Agent | Condition | LLMNode | ToolNode', + type: 'Agent | Condition | LLMNode | ToolNode | CustomFunction | ExecuteFlow', + description: + 'Can be connected to one of the following nodes: Agent, Condition, LLM Node, Tool Node, Custom Function, Execute Flow', list: true }, { diff --git a/packages/components/nodes/sequentialagents/State/State.ts b/packages/components/nodes/sequentialagents/State/State.ts index d10e616ca5a..5c48cb7a782 100644 --- a/packages/components/nodes/sequentialagents/State/State.ts +++ b/packages/components/nodes/sequentialagents/State/State.ts @@ -1,8 +1,8 @@ import { START } from '@langchain/langgraph' +import { NodeVM } from '@flowiseai/nodevm' +import { DataSource } from 'typeorm' import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams, ISeqAgentNode } from '../../../src/Interface' import { availableDependencies, defaultAllowBuiltInDep, getVars, prepareSandboxVars } from '../../../src/utils' -import { NodeVM } from 'vm2' -import { DataSource } from 'typeorm' const defaultFunc = `{ aggregate: { @@ -107,13 +107,15 @@ class State_SeqAgents implements INode { if (stateMemory && stateMemory !== 'stateMemoryUI' && stateMemory !== 'stateMemoryCode') { try { + const parsedSchemaFromUI = typeof stateMemoryUI === 'string' ? JSON.parse(stateMemoryUI) : stateMemoryUI const parsedSchema = typeof stateMemory === 'string' ? JSON.parse(stateMemory) : stateMemory + const combinedMemorySchema = [...parsedSchemaFromUI, ...parsedSchema] const obj: ICommonObject = {} - for (const sch of parsedSchema) { - const key = sch.Key + for (const sch of combinedMemorySchema) { + const key = sch.Key ?? sch.key if (!key) throw new Error(`Key is required`) - const type = sch.Operation - const defaultValue = sch['Default Value'] + const type = sch.Operation ?? sch.type + const defaultValue = sch['Default Value'] ?? sch.defaultValue if (type === 'Append') { obj[key] = { @@ -196,7 +198,13 @@ class State_SeqAgents implements INode { input } - let sandbox: any = {} + let sandbox: any = { + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } sandbox['$vars'] = prepareSandboxVars(variables) sandbox['$flow'] = flow @@ -212,7 +220,10 @@ class State_SeqAgents implements INode { require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(nodeVMOptions) diff --git a/packages/components/nodes/sequentialagents/ToolNode/ToolNode.ts b/packages/components/nodes/sequentialagents/ToolNode/ToolNode.ts index 44cefc8794f..fda82aec95b 100644 --- a/packages/components/nodes/sequentialagents/ToolNode/ToolNode.ts +++ b/packages/components/nodes/sequentialagents/ToolNode/ToolNode.ts @@ -1,9 +1,18 @@ import { flatten } from 'lodash' -import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeParams, ISeqAgentNode, IUsedTool } from '../../../src/Interface' +import { + ICommonObject, + IDatabaseEntity, + INode, + INodeData, + INodeParams, + ISeqAgentNode, + IUsedTool, + IStateWithMessages +} from '../../../src/Interface' import { AIMessage, AIMessageChunk, BaseMessage, ToolMessage } from '@langchain/core/messages' import { StructuredTool } from '@langchain/core/tools' import { RunnableConfig } from '@langchain/core/runnables' -import { SOURCE_DOCUMENTS_PREFIX } from '../../../src/agents' +import { ARTIFACTS_PREFIX, SOURCE_DOCUMENTS_PREFIX } from '../../../src/agents' import { Document } from '@langchain/core/documents' import { DataSource } from 'typeorm' import { MessagesState, RunnableCallable, customGet, getVM } from '../commonUtils' @@ -39,9 +48,9 @@ const howToUseCode = ` "sourceDocuments": [ { "pageContent": "This is the page content", - "metadata": "{foo: var}", + "metadata": "{foo: var}" } - ], + ] } ] \`\`\` @@ -55,7 +64,7 @@ const howToUseCode = ` */ return { - "sources": $flow.output[0].sourceDocuments + "sources": $flow.output[0].toolOutput } \`\`\` @@ -80,17 +89,19 @@ const howToUse = ` |-----------|-----------| | user | john doe | -2. If you want to use the agent's output as the value to update state, it is available as available as \`$flow.output\` with the following structure (array): +2. If you want to use the Tool Node's output as the value to update state, it is available as available as \`$flow.output\` with the following structure (array): \`\`\`json [ { - "content": "Hello! How can I assist you today?", + "tool": "tool's name", + "toolInput": {}, + "toolOutput": "tool's output content", "sourceDocuments": [ { "pageContent": "This is the page content", - "metadata": "{foo: var}", + "metadata": "{foo: var}" } - ], + ] } ] \`\`\` @@ -98,7 +109,7 @@ const howToUse = ` For example: | Key | Value | |--------------|-------------------------------------------| - | sources | \`$flow.output[0].sourceDocuments\` | + | sources | \`$flow.output[0].toolOutput\` | 3. You can get default flow config, including the current "state": - \`$flow.sessionId\` @@ -143,7 +154,7 @@ class ToolNode_SeqAgents implements INode { constructor() { this.label = 'Tool Node' this.name = 'seqToolNode' - this.version = 2.0 + this.version = 2.1 this.type = 'ToolNode' this.icon = 'toolNode.svg' this.category = 'Sequential Agents' @@ -350,7 +361,7 @@ class ToolNode_SeqAgents implements INode { } } -class ToolNode extends RunnableCallable { +class ToolNode extends RunnableCallable { tools: StructuredTool[] nodeData: INodeData inputQuery: string @@ -372,21 +383,51 @@ class ToolNode extends RunnableCallable this.options = options } - private async run(input: BaseMessage[] | MessagesState, config: RunnableConfig): Promise { - const message = Array.isArray(input) ? input[input.length - 1] : input.messages[input.messages.length - 1] + private async run(input: T, config: RunnableConfig): Promise { + let messages: BaseMessage[] + + // Check if input is an array of BaseMessage[] + if (Array.isArray(input)) { + messages = input + } + // Check if input is IStateWithMessages + else if ((input as IStateWithMessages).messages) { + messages = (input as IStateWithMessages).messages + } + // Handle MessagesState type + else { + messages = (input as MessagesState).messages + } + + // Get the last message + const message = messages[messages.length - 1] if (message._getType() !== 'ai') { throw new Error('ToolNode only accepts AIMessages as input.') } + // Extract all properties except messages for IStateWithMessages + const { messages: _, ...inputWithoutMessages } = Array.isArray(input) ? { messages: input } : input + const ChannelsWithoutMessages = { + chatId: this.options.chatId, + sessionId: this.options.sessionId, + input: this.inputQuery, + state: inputWithoutMessages + } + const outputs = await Promise.all( (message as AIMessage).tool_calls?.map(async (call) => { const tool = this.tools.find((tool) => tool.name === call.name) if (tool === undefined) { throw new Error(`Tool ${call.name} not found.`) } + if (tool && (tool as any).setFlowObject) { + // @ts-ignore + tool.setFlowObject(ChannelsWithoutMessages) + } let output = await tool.invoke(call.args, config) let sourceDocuments: Document[] = [] + let artifacts = [] if (output?.includes(SOURCE_DOCUMENTS_PREFIX)) { const outputArray = output.split(SOURCE_DOCUMENTS_PREFIX) output = outputArray[0] @@ -397,12 +438,23 @@ class ToolNode extends RunnableCallable console.error('Error parsing source documents from tool') } } + if (output?.includes(ARTIFACTS_PREFIX)) { + const outputArray = output.split(ARTIFACTS_PREFIX) + output = outputArray[0] + try { + artifacts = JSON.parse(outputArray[1]) + } catch (e) { + console.error('Error parsing artifacts from tool') + } + } + return new ToolMessage({ name: tool.name, content: typeof output === 'string' ? output : JSON.stringify(output), tool_call_id: call.id!, additional_kwargs: { sourceDocuments, + artifacts, args: call.args, usedTools: [ { @@ -436,7 +488,7 @@ const getReturnOutput = async ( input: string, options: ICommonObject, outputs: ToolMessage[], - state: BaseMessage[] | MessagesState + state: ICommonObject ) => { const appDataSource = options.appDataSource as DataSource const databaseEntities = options.databaseEntities as IDatabaseEntity @@ -453,7 +505,8 @@ const getReturnOutput = async ( tool: output.name, toolInput: output.additional_kwargs.args, toolOutput: output.content, - sourceDocuments: output.additional_kwargs.sourceDocuments + sourceDocuments: output.additional_kwargs.sourceDocuments, + artifacts: output.additional_kwargs.artifacts } as IUsedTool }) diff --git a/packages/components/nodes/sequentialagents/commonUtils.ts b/packages/components/nodes/sequentialagents/commonUtils.ts index b68de0bc429..3fe298f7f04 100644 --- a/packages/components/nodes/sequentialagents/commonUtils.ts +++ b/packages/components/nodes/sequentialagents/commonUtils.ts @@ -1,7 +1,7 @@ import { get } from 'lodash' import { z } from 'zod' import { DataSource } from 'typeorm' -import { NodeVM } from 'vm2' +import { NodeVM } from '@flowiseai/nodevm' import { StructuredTool } from '@langchain/core/tools' import { ChatMistralAI } from '@langchain/mistralai' import { ChatAnthropic } from '@langchain/anthropic' @@ -9,8 +9,16 @@ import { Runnable, RunnableConfig, mergeConfigs } from '@langchain/core/runnable import { AIMessage, BaseMessage, HumanMessage, MessageContentImageUrl, ToolMessage } from '@langchain/core/messages' import { BaseChatModel } from '@langchain/core/language_models/chat_models' import { addImagesToMessages, llmSupportsVision } from '../../src/multiModalUtils' -import { ICommonObject, IDatabaseEntity, INodeData, ISeqAgentsState, IVisionChatModal } from '../../src/Interface' +import { + ICommonObject, + IDatabaseEntity, + INodeData, + ISeqAgentsState, + IVisionChatModal, + ConversationHistorySelection +} from '../../src/Interface' import { availableDependencies, defaultAllowBuiltInDep, getVars, prepareSandboxVars } from '../../src/utils' +import { ChatPromptTemplate, BaseMessagePromptTemplateLike } from '@langchain/core/prompts' export const checkCondition = (input: string | number | undefined, condition: string, value: string | number = ''): boolean => { if (!input && condition === 'Is Empty') return true @@ -91,7 +99,25 @@ export const transformObjectPropertyToFunction = (obj: ICommonObject, state: ISe (message) => message.additional_kwargs && message.additional_kwargs?.nodeId === parsedValue.id ) const messageOutput = messageOutputs[messageOutputs.length - 1] - if (messageOutput) value = messageOutput.content + if (messageOutput) { + // if messageOutput.content is a string, set value to the content + if (typeof messageOutput.content === 'string') value = messageOutput.content + // if messageOutput.content is an array + else if (Array.isArray(messageOutput.content)) { + if (messageOutput.content.length === 0) { + throw new Error(`Message output content is an empty array for node ${parsedValue.id}`) + } + // Get the first element of the array + const messageOutputContentFirstElement: any = messageOutput.content[0] + + if (typeof messageOutputContentFirstElement === 'string') value = messageOutputContentFirstElement + // If messageOutputContentFirstElement is an object and has a text property, set value to the text property + else if (typeof messageOutputContentFirstElement === 'object' && messageOutputContentFirstElement.text) + value = messageOutputContentFirstElement.text + // Otherwise, stringify the messageOutputContentFirstElement + else value = JSON.stringify(messageOutputContentFirstElement) + } + } } } catch (e) { // do nothing @@ -127,7 +153,13 @@ export const processImageMessage = async (llm: BaseChatModel, nodeData: INodeDat export const getVM = async (appDataSource: DataSource, databaseEntities: IDatabaseEntity, nodeData: INodeData, flow: ICommonObject) => { const variables = await getVars(appDataSource, databaseEntities, nodeData) - let sandbox: any = {} + let sandbox: any = { + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } sandbox['$vars'] = prepareSandboxVars(variables) sandbox['$flow'] = flow @@ -143,7 +175,10 @@ export const getVM = async (appDataSource: DataSource, databaseEntities: IDataba require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any return new NodeVM(nodeVMOptions) @@ -207,11 +242,39 @@ export const convertStructuredSchemaToZod = (schema: string | object): ICommonOb } } +/** + * Filter the conversation history based on the selected option. + * + * @param historySelection - The selected history option. + * @param input - The user input. + * @param state - The current state of the sequential llm or agent node. + */ +export function filterConversationHistory( + historySelection: ConversationHistorySelection, + input: string, + state: ISeqAgentsState +): BaseMessage[] { + switch (historySelection) { + case 'user_question': + return [new HumanMessage(input)] + case 'last_message': + // @ts-ignore + return state.messages?.length ? [state.messages[state.messages.length - 1] as BaseMessage] : [] + case 'empty': + return [] + case 'all_messages': + // @ts-ignore + return (state.messages as BaseMessage[]) ?? [] + default: + throw new Error(`Unhandled conversationHistorySelection: ${historySelection}`) + } +} + export const restructureMessages = (llm: BaseChatModel, state: ISeqAgentsState) => { const messages: BaseMessage[] = [] for (const message of state.messages as unknown as BaseMessage[]) { // Sometimes Anthropic can return a message with content types of array, ignore that EXECEPT when tool calls are present - if ((message as any).tool_calls?.length) { + if ((message as any).tool_calls?.length && message.content !== '') { message.content = JSON.stringify(message.content) } @@ -344,3 +407,34 @@ export class RunnableCallable extends Runnable { return returnValue } } + +export const checkMessageHistory = async ( + nodeData: INodeData, + options: ICommonObject, + prompt: ChatPromptTemplate, + promptArrays: BaseMessagePromptTemplateLike[], + sysPrompt: string +) => { + const messageHistory = nodeData.inputs?.messageHistory + + if (messageHistory) { + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const vm = await getVM(appDataSource, databaseEntities, nodeData, {}) + try { + const response = await vm.run(`module.exports = async function() {${messageHistory}}()`, __dirname) + if (!Array.isArray(response)) throw new Error('Returned message history must be an array') + if (sysPrompt) { + // insert at index 1 + promptArrays.splice(1, 0, ...response) + } else { + promptArrays.unshift(...response) + } + prompt = ChatPromptTemplate.fromMessages(promptArrays) + } catch (e) { + throw new Error(e) + } + } + + return prompt +} diff --git a/packages/components/nodes/tools/ChainTool/core.ts b/packages/components/nodes/tools/ChainTool/core.ts index 60ba5977637..1848b81caca 100644 --- a/packages/components/nodes/tools/ChainTool/core.ts +++ b/packages/components/nodes/tools/ChainTool/core.ts @@ -1,6 +1,7 @@ import { DynamicTool, DynamicToolInput } from '@langchain/core/tools' import { BaseChain } from 'langchain/chains' import { handleEscapeCharacters } from '../../../src/utils' +import { CustomChainHandler } from '../../../src' export interface ChainToolInput extends Omit { chain: BaseChain @@ -13,13 +14,18 @@ export class ChainTool extends DynamicTool { super({ ...rest, func: async (input, runManager) => { - // To enable LLM Chain which has promptValues + const childManagers = runManager?.getChild() + const handlers = childManagers?.handlers?.filter((handler) => !(handler instanceof CustomChainHandler)) || [] + if (childManagers) childManagers.handlers = handlers + if ((chain as any).prompt && (chain as any).prompt.promptValues) { const promptValues = handleEscapeCharacters((chain as any).prompt.promptValues, true) - const values = await chain.call(promptValues, runManager?.getChild()) + const values = await chain.call(promptValues, childManagers) return values?.text } - return chain.run(input, runManager?.getChild()) + + const values = chain.run(input, childManagers) + return values } }) this.chain = chain diff --git a/packages/components/nodes/tools/ChatflowTool/ChatflowTool.ts b/packages/components/nodes/tools/ChatflowTool/ChatflowTool.ts index 0a8d5516804..f0f71811015 100644 --- a/packages/components/nodes/tools/ChatflowTool/ChatflowTool.ts +++ b/packages/components/nodes/tools/ChatflowTool/ChatflowTool.ts @@ -1,6 +1,6 @@ import { DataSource } from 'typeorm' import { z } from 'zod' -import { NodeVM } from 'vm2' +import { NodeVM } from '@flowiseai/nodevm' import { RunnableConfig } from '@langchain/core/runnables' import { CallbackManagerForToolRun, Callbacks, CallbackManager, parseCallbackConfigArg } from '@langchain/core/callbacks/manager' import { StructuredTool } from '@langchain/core/tools' @@ -23,7 +23,7 @@ class ChatflowTool_Tools implements INode { constructor() { this.label = 'Chatflow Tool' this.name = 'ChatflowTool' - this.version = 3.0 + this.version = 5.0 this.type = 'ChatflowTool' this.icon = 'chatflowTool.svg' this.category = 'Tools' @@ -57,6 +57,20 @@ class ChatflowTool_Tools implements INode { placeholder: 'State of the Union QA - useful for when you need to ask questions about the most recent state of the union address.' }, + { + label: 'Return Direct', + name: 'returnDirect', + type: 'boolean', + optional: true + }, + { + label: 'Override Config', + name: 'overrideConfig', + description: 'Override the config passed to the Chatflow.', + type: 'json', + optional: true, + additionalParams: true + }, { label: 'Base URL', name: 'baseURL', @@ -126,7 +140,14 @@ class ChatflowTool_Tools implements INode { const _name = nodeData.inputs?.name as string const description = nodeData.inputs?.description as string const useQuestionFromChat = nodeData.inputs?.useQuestionFromChat as boolean + const returnDirect = nodeData.inputs?.returnDirect as boolean const customInput = nodeData.inputs?.customInput as string + const overrideConfig = + typeof nodeData.inputs?.overrideConfig === 'string' && + nodeData.inputs.overrideConfig.startsWith('{') && + nodeData.inputs.overrideConfig.endsWith('}') + ? JSON.parse(nodeData.inputs.overrideConfig) + : nodeData.inputs?.overrideConfig const startNewSession = nodeData.inputs?.startNewSession as boolean @@ -143,13 +164,23 @@ class ChatflowTool_Tools implements INode { let toolInput = '' if (useQuestionFromChat) { toolInput = input - } else if (!customInput) { + } else if (customInput) { toolInput = customInput } let name = _name || 'chatflow_tool' - return new ChatflowTool({ name, baseURL, description, chatflowid: selectedChatflowId, startNewSession, headers, input: toolInput }) + return new ChatflowTool({ + name, + baseURL, + description, + returnDirect, + chatflowid: selectedChatflowId, + startNewSession, + headers, + input: toolInput, + overrideConfig + }) } } @@ -172,26 +203,33 @@ class ChatflowTool extends StructuredTool { headers = {} + overrideConfig?: object + schema = z.object({ input: z.string().describe('input question') + // overrideConfig: z.record(z.any()).optional().describe('override config'), // This will be passed to the Agent, so comment it for now. }) as any constructor({ name, description, + returnDirect, input, chatflowid, startNewSession, baseURL, - headers + headers, + overrideConfig }: { name: string description: string + returnDirect: boolean input: string chatflowid: string startNewSession: boolean baseURL: string headers: ICommonObject + overrideConfig?: object }) { super() this.name = name @@ -201,6 +239,8 @@ class ChatflowTool extends StructuredTool { this.startNewSession = startNewSession this.headers = headers this.chatflowid = chatflowid + this.overrideConfig = overrideConfig + this.returnDirect = returnDirect } async call( @@ -244,6 +284,9 @@ class ChatflowTool extends StructuredTool { await runManager?.handleToolError(e) throw e } + if (result && typeof result !== 'string') { + result = JSON.stringify(result) + } await runManager?.handleToolEnd(result) return result } @@ -260,7 +303,9 @@ class ChatflowTool extends StructuredTool { question: inputQuestion, chatId: this.startNewSession ? uuidv4() : flowConfig?.chatId, overrideConfig: { - sessionId: this.startNewSession ? uuidv4() : flowConfig?.sessionId + sessionId: this.startNewSession ? uuidv4() : flowConfig?.sessionId, + ...(this.overrideConfig ?? {}), + ...(arg.overrideConfig ?? {}) } } @@ -273,7 +318,15 @@ class ChatflowTool extends StructuredTool { body: JSON.stringify(body) } - let sandbox = { $callOptions: options, $callBody: body } + let sandbox = { + $callOptions: options, + $callBody: body, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } const code = ` const fetch = require('node-fetch'); @@ -304,7 +357,10 @@ try { require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(vmOptions) diff --git a/packages/components/nodes/tools/CodeInterpreterE2B/CodeInterpreterE2B.ts b/packages/components/nodes/tools/CodeInterpreterE2B/CodeInterpreterE2B.ts new file mode 100644 index 00000000000..8c3967dc927 --- /dev/null +++ b/packages/components/nodes/tools/CodeInterpreterE2B/CodeInterpreterE2B.ts @@ -0,0 +1,269 @@ +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { StructuredTool, ToolInputParsingException, ToolParams } from '@langchain/core/tools' +import { CodeInterpreter } from '@e2b/code-interpreter' +import { z } from 'zod' +import { addSingleFileToStorage } from '../../../src/storageUtils' +import { CallbackManager, CallbackManagerForToolRun, Callbacks, parseCallbackConfigArg } from '@langchain/core/callbacks/manager' +import { RunnableConfig } from '@langchain/core/runnables' +import { ARTIFACTS_PREFIX } from '../../../src/agents' + +const DESC = `Evaluates python code in a sandbox environment. \ +The environment is long running and exists across multiple executions. \ +You must send the whole script every time and print your outputs. \ +Script should be pure python code that can be evaluated. \ +It should be in python format NOT markdown. \ +The code should NOT be wrapped in backticks. \ +All python packages including requests, matplotlib, scipy, numpy, pandas, \ +etc are available. Create and display chart using "plt.show()".` +const NAME = 'code_interpreter' + +class Code_Interpreter_Tools implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + badge: string + credential: INodeParams + + constructor() { + this.label = 'Code Interpreter by E2B' + this.name = 'codeInterpreterE2B' + this.version = 1.0 + this.type = 'CodeInterpreter' + this.icon = 'e2b.png' + this.category = 'Tools' + this.description = 'Execute code in a sandbox environment' + this.baseClasses = [this.type, 'Tool', ...getBaseClasses(E2BTool)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['E2BApi'], + optional: true + } + this.inputs = [ + { + label: 'Tool Name', + name: 'toolName', + type: 'string', + description: 'Specify the name of the tool', + default: 'code_interpreter' + }, + { + label: 'Tool Description', + name: 'toolDesc', + type: 'string', + rows: 4, + description: 'Specify the description of the tool', + default: DESC + } + ] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const toolDesc = nodeData.inputs?.toolDesc as string + const toolName = nodeData.inputs?.toolName as string + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const e2bApiKey = getCredentialParam('e2bApiKey', credentialData, nodeData) + + return await E2BTool.initialize({ + description: toolDesc ?? DESC, + name: toolName ?? NAME, + apiKey: e2bApiKey, + schema: z.object({ + input: z.string().describe('Python code to be executed in the sandbox environment') + }), + chatflowid: options.chatflowid + }) + } +} + +type E2BToolParams = ToolParams +type E2BToolInput = { + name: string + description: string + apiKey: string + schema: any + chatflowid: string + templateCodeInterpreterE2B?: string + domainCodeInterpreterE2B?: string +} + +export class E2BTool extends StructuredTool { + static lc_name() { + return 'E2BTool' + } + + name = NAME + + description = DESC + + instance: CodeInterpreter + + apiKey: string + + schema + + chatflowid: string + + flowObj: ICommonObject + + templateCodeInterpreterE2B?: string + domainCodeInterpreterE2B?: string + + constructor(options: E2BToolParams & E2BToolInput) { + super(options) + this.description = options.description + this.name = options.name + this.apiKey = options.apiKey + this.schema = options.schema + this.chatflowid = options.chatflowid + this.templateCodeInterpreterE2B = options.templateCodeInterpreterE2B + this.domainCodeInterpreterE2B = options.domainCodeInterpreterE2B + } + + static async initialize(options: Partial & E2BToolInput) { + return new this({ + name: options.name, + description: options.description, + apiKey: options.apiKey, + schema: options.schema, + chatflowid: options.chatflowid, + templateCodeInterpreterE2B: options.templateCodeInterpreterE2B, + domainCodeInterpreterE2B: options.domainCodeInterpreterE2B + }) + } + + async call( + arg: z.infer, + configArg?: RunnableConfig | Callbacks, + tags?: string[], + flowConfig?: { sessionId?: string; chatId?: string; input?: string; state?: ICommonObject } + ): Promise { + const config = parseCallbackConfigArg(configArg) + if (config.runName === undefined) { + config.runName = this.name + } + let parsed + try { + parsed = await this.schema.parseAsync(arg) + } catch (e) { + throw new ToolInputParsingException(`Received tool input did not match expected schema`, JSON.stringify(arg)) + } + const callbackManager_ = await CallbackManager.configure( + config.callbacks, + this.callbacks, + config.tags || tags, + this.tags, + config.metadata, + this.metadata, + { verbose: this.verbose } + ) + const runManager = await callbackManager_?.handleToolStart( + this.toJSON(), + typeof parsed === 'string' ? parsed : JSON.stringify(parsed), + undefined, + undefined, + undefined, + undefined, + config.runName + ) + let result + try { + result = await this._call(parsed, runManager, flowConfig) + } catch (e) { + await runManager?.handleToolError(e) + throw e + } + if (result && typeof result !== 'string') { + result = JSON.stringify(result) + } + await runManager?.handleToolEnd(result) + return result + } + + // @ts-ignore + protected async _call( + arg: z.infer, + _?: CallbackManagerForToolRun, + flowConfig?: { sessionId?: string; chatId?: string; input?: string } + ): Promise { + flowConfig = { ...this.flowObj, ...flowConfig } + try { + if ('input' in arg) { + this.instance = await CodeInterpreter.create({ apiKey: this.apiKey }) + const execution = await this.instance.notebook.execCell(arg?.input) + + const artifacts = [] + for (const result of execution.results) { + for (const key in result) { + if (!(result as any)[key]) continue + + if (key === 'png') { + //@ts-ignore + const pngData = Buffer.from(result.png, 'base64') + + const filename = `artifact_${Date.now()}.png` + + const res = await addSingleFileToStorage( + 'image/png', + pngData, + filename, + this.chatflowid, + flowConfig!.chatId as string + ) + artifacts.push({ type: 'png', data: res }) + } else if (key === 'jpeg') { + //@ts-ignore + const jpegData = Buffer.from(result.jpeg, 'base64') + + const filename = `artifact_${Date.now()}.jpg` + + const res = await addSingleFileToStorage( + 'image/jpg', + jpegData, + filename, + this.chatflowid, + flowConfig!.chatId as string + ) + artifacts.push({ type: 'jpeg', data: res }) + } else if (key === 'html' || key === 'markdown' || key === 'latex' || key === 'json' || key === 'javascript') { + artifacts.push({ type: key, data: (result as any)[key] }) + } //TODO: support for pdf + } + } + + this.instance.close() + + let output = '' + + if (execution.text) output = execution.text + if (!execution.text && execution.logs.stdout.length) output = execution.logs.stdout.join('\n') + + if (execution.error) { + return `${execution.error.name}: ${execution.error.value}` + } + + return artifacts.length > 0 ? output + ARTIFACTS_PREFIX + JSON.stringify(artifacts) : output + } else { + return 'No input provided' + } + } catch (e) { + if (this.instance) this.instance.close() + return typeof e === 'string' ? e : JSON.stringify(e, null, 2) + } + } + + setFlowObject(flowObj: ICommonObject) { + this.flowObj = flowObj + } +} + +module.exports = { nodeClass: Code_Interpreter_Tools } diff --git a/packages/components/nodes/tools/E2B/e2b.png b/packages/components/nodes/tools/CodeInterpreterE2B/e2b.png similarity index 100% rename from packages/components/nodes/tools/E2B/e2b.png rename to packages/components/nodes/tools/CodeInterpreterE2B/e2b.png diff --git a/packages/components/nodes/tools/Composio/Composio.ts b/packages/components/nodes/tools/Composio/Composio.ts new file mode 100644 index 00000000000..e08ad9ac17c --- /dev/null +++ b/packages/components/nodes/tools/Composio/Composio.ts @@ -0,0 +1,235 @@ +import { Tool } from '@langchain/core/tools' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { LangchainToolSet } from 'composio-core' + +class ComposioTool extends Tool { + name = 'composio' + description = 'Tool for interacting with Composio applications and performing actions' + toolset: any + appName: string + actions: string[] + + constructor(toolset: any, appName: string, actions: string[]) { + super() + this.toolset = toolset + this.appName = appName + this.actions = actions + } + + async _call(input: string): Promise { + try { + return `Executed action on ${this.appName} with input: ${input}` + } catch (error) { + return 'Failed to execute action' + } + } +} + +class Composio_Tools implements INode { + label: string + name: string + version: number + type: string + icon: string + category: string + description: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Composio' + this.name = 'composio' + this.version = 2.0 + this.type = 'Composio' + this.icon = 'composio.svg' + this.category = 'Tools' + this.description = 'Toolset with over 250+ Apps for building AI-powered applications' + this.baseClasses = [this.type, ...getBaseClasses(ComposioTool)] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['composioApi'] + } + this.inputs = [ + { + label: 'App Name', + name: 'appName', + type: 'asyncOptions', + loadMethod: 'listApps', + description: 'Select the app to connect with', + refresh: true + }, + { + label: 'Auth Status', + name: 'authStatus', + type: 'asyncOptions', + loadMethod: 'authStatus', + placeholder: 'Connection status will appear here', + refresh: true + }, + { + label: 'Actions to Use', + name: 'actions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + description: 'Select the actions you want to use', + refresh: true + } + ] + } + + //@ts-ignore + loadMethods = { + listApps: async (nodeData: INodeData, options?: ICommonObject): Promise => { + try { + const credentialData = await getCredentialData(nodeData.credential ?? '', options ?? {}) + const composioApiKey = getCredentialParam('composioApi', credentialData, nodeData) + + if (!composioApiKey) { + return [ + { + label: 'API Key Required', + name: 'placeholder', + description: 'Enter Composio API key in the credential field' + } + ] + } + + const toolset = new LangchainToolSet({ apiKey: composioApiKey }) + const apps = await toolset.client.apps.list() + apps.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return apps.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + console.error('Error loading apps:', error) + return [ + { + label: 'Error Loading Apps', + name: 'error', + description: 'Failed to load apps. Please check your API key and try again' + } + ] + } + }, + listActions: async (nodeData: INodeData, options?: ICommonObject): Promise => { + try { + const credentialData = await getCredentialData(nodeData.credential ?? '', options ?? {}) + const composioApiKey = getCredentialParam('composioApi', credentialData, nodeData) + const appName = nodeData.inputs?.appName as string + + if (!composioApiKey) { + return [ + { + label: 'API Key Required', + name: 'placeholder', + description: 'Enter Composio API key in the credential field' + } + ] + } + + if (!appName) { + return [ + { + label: 'Select an App first', + name: 'placeholder', + description: 'Select an app from the dropdown to view available actions' + } + ] + } + + const toolset = new LangchainToolSet({ apiKey: composioApiKey }) + const actions = await toolset.getTools({ apps: [appName] }) + actions.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return actions.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + console.error('Error loading actions:', error) + return [ + { + label: 'Error Loading Actions', + name: 'error', + description: 'Failed to load actions. Please check your API key and try again' + } + ] + } + }, + authStatus: async (nodeData: INodeData, options?: ICommonObject): Promise => { + const credentialData = await getCredentialData(nodeData.credential ?? '', options ?? {}) + const composioApiKey = getCredentialParam('composioApi', credentialData, nodeData) + const appName = nodeData.inputs?.appName as string + + if (!composioApiKey) { + return [ + { + label: 'API Key Required', + name: 'placeholder', + description: 'Enter Composio API key in the credential field' + } + ] + } + + if (!appName) { + return [ + { + label: 'Select an App first', + name: 'placeholder', + description: 'Select an app from the dropdown to view available actions' + } + ] + } + + const toolset = new LangchainToolSet({ apiKey: composioApiKey }) + const authStatus = await toolset.client.getEntity('default').getConnection({ app: appName.toLowerCase() }) + return [ + { + label: authStatus ? 'Connected' : 'Not Connected', + name: authStatus ? 'Connected' : 'Not Connected', + description: authStatus ? 'Selected app has an active connection' : 'Please connect the app on app.composio.dev' + } + ] + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + if (!nodeData.inputs) nodeData.inputs = {} + + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const composioApiKey = getCredentialParam('composioApi', credentialData, nodeData) + + if (!composioApiKey) { + nodeData.inputs = { + appName: undefined, + authStatus: '', + actions: [] + } + throw new Error('API Key Required') + } + + const _actions = nodeData.inputs?.actions + let actions = [] + if (_actions) { + try { + actions = typeof _actions === 'string' ? JSON.parse(_actions) : _actions + } catch (error) { + console.error('Error parsing actions:', error) + } + } + + const toolset = new LangchainToolSet({ apiKey: composioApiKey }) + const tools = await toolset.getTools({ actions }) + return tools + } +} + +module.exports = { nodeClass: Composio_Tools } diff --git a/packages/components/nodes/tools/Composio/composio.svg b/packages/components/nodes/tools/Composio/composio.svg new file mode 100644 index 00000000000..1436d1b822c --- /dev/null +++ b/packages/components/nodes/tools/Composio/composio.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/components/nodes/tools/CurrentDateTime/CurrentDateTime.ts b/packages/components/nodes/tools/CurrentDateTime/CurrentDateTime.ts new file mode 100644 index 00000000000..f65747c4d40 --- /dev/null +++ b/packages/components/nodes/tools/CurrentDateTime/CurrentDateTime.ts @@ -0,0 +1,74 @@ +import { z } from 'zod' +import { INode } from '../../../src/Interface' +import { DynamicStructuredTool } from '../CustomTool/core' + +const code = ` +const now = new Date(); + +// Format date as YYYY-MM-DD +const date = now.toISOString().split('T')[0]; + +// Get time in HH:MM:SS format +const time = now.toTimeString().split(' ')[0]; + +// Get day of week +const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; +const day = days[now.getDay()]; + +// Get timezone information +const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; +const timezoneOffset = now.getTimezoneOffset(); +const timezoneOffsetHours = Math.abs(Math.floor(timezoneOffset / 60)); +const timezoneOffsetMinutes = Math.abs(timezoneOffset % 60); +const timezoneOffsetFormatted = + (timezoneOffset <= 0 ? '+' : '-') + + timezoneOffsetHours.toString().padStart(2, '0') + ':' + + timezoneOffsetMinutes.toString().padStart(2, '0'); + +return { + date, + time, + day, + timezone, + timezoneOffset: timezoneOffsetFormatted, + iso8601: now.toISOString(), + unix_timestamp: Math.floor(now.getTime() / 1000) +}; +` + +class CurrentDateTime_Tools implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + + constructor() { + this.label = 'CurrentDateTime' + this.name = 'currentDateTime' + this.version = 1.0 + this.type = 'CurrentDateTime' + this.icon = 'currentDateTime.svg' + this.category = 'Tools' + this.description = 'Get todays day, date and time.' + this.baseClasses = [this.type, 'Tool'] + } + + async init(): Promise { + const obj = { + name: 'current_date_time', + description: 'Useful to get current day, date and time.', + schema: z.object({}), + code: code + } + + let dynamicStructuredTool = new DynamicStructuredTool(obj) + + return dynamicStructuredTool + } +} + +module.exports = { nodeClass: CurrentDateTime_Tools } diff --git a/packages/components/nodes/tools/CurrentDateTime/currentDateTime.svg b/packages/components/nodes/tools/CurrentDateTime/currentDateTime.svg new file mode 100644 index 00000000000..929244cf47c --- /dev/null +++ b/packages/components/nodes/tools/CurrentDateTime/currentDateTime.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/tools/CustomTool/CustomTool.ts b/packages/components/nodes/tools/CustomTool/CustomTool.ts index 89fae9fdd5b..284349c46c9 100644 --- a/packages/components/nodes/tools/CustomTool/CustomTool.ts +++ b/packages/components/nodes/tools/CustomTool/CustomTool.ts @@ -18,7 +18,7 @@ class CustomTool_Tools implements INode { constructor() { this.label = 'Custom Tool' this.name = 'customTool' - this.version = 1.0 + this.version = 3.0 this.type = 'CustomTool' this.icon = 'customtool.svg' this.category = 'Tools' @@ -29,6 +29,37 @@ class CustomTool_Tools implements INode { name: 'selectedTool', type: 'asyncOptions', loadMethod: 'listTools' + }, + { + label: 'Return Direct', + name: 'returnDirect', + description: 'Return the output of the tool directly to the user', + type: 'boolean', + optional: true + }, + { + label: 'Custom Tool Name', + name: 'customToolName', + type: 'string', + hidden: true + }, + { + label: 'Custom Tool Description', + name: 'customToolDesc', + type: 'string', + hidden: true + }, + { + label: 'Custom Tool Schema', + name: 'customToolSchema', + type: 'string', + hidden: true + }, + { + label: 'Custom Tool Func', + name: 'customToolFunc', + type: 'string', + hidden: true } ] this.baseClasses = [this.type, 'Tool', ...getBaseClasses(DynamicStructuredTool)] @@ -83,6 +114,7 @@ class CustomTool_Tools implements INode { const customToolName = nodeData.inputs?.customToolName as string const customToolDesc = nodeData.inputs?.customToolDesc as string const customToolSchema = nodeData.inputs?.customToolSchema as string + const customToolReturnDirect = nodeData.inputs?.returnDirect as boolean const appDataSource = options.appDataSource as DataSource const databaseEntities = options.databaseEntities as IDatabaseEntity @@ -134,6 +166,7 @@ class CustomTool_Tools implements INode { let dynamicStructuredTool = new DynamicStructuredTool(obj) dynamicStructuredTool.setVariables(variables) dynamicStructuredTool.setFlowObject(flow) + dynamicStructuredTool.returnDirect = customToolReturnDirect return dynamicStructuredTool } catch (e) { diff --git a/packages/components/nodes/tools/CustomTool/core.ts b/packages/components/nodes/tools/CustomTool/core.ts index 3e032579c96..e64f776b8b3 100644 --- a/packages/components/nodes/tools/CustomTool/core.ts +++ b/packages/components/nodes/tools/CustomTool/core.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { NodeVM } from 'vm2' +import { NodeVM } from '@flowiseai/nodevm' import { RunnableConfig } from '@langchain/core/runnables' import { StructuredTool, ToolParams } from '@langchain/core/tools' import { CallbackManagerForToolRun, Callbacks, CallbackManager, parseCallbackConfigArg } from '@langchain/core/callbacks/manager' @@ -111,7 +111,13 @@ export class DynamicStructuredTool< _?: CallbackManagerForToolRun, flowConfig?: { sessionId?: string; chatId?: string; input?: string; state?: ICommonObject } ): Promise { - let sandbox: any = {} + let sandbox: any = { + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } if (typeof arg === 'object' && Object.keys(arg).length) { for (const item in arg) { sandbox[`$${item}`] = arg[item] @@ -137,7 +143,10 @@ export class DynamicStructuredTool< require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(options) diff --git a/packages/components/nodes/tools/E2B/E2B.ts b/packages/components/nodes/tools/E2B/E2B.ts deleted file mode 100644 index 9954e4bd20d..00000000000 --- a/packages/components/nodes/tools/E2B/E2B.ts +++ /dev/null @@ -1,151 +0,0 @@ -/* -* TODO: Implement codeInterpreter column to chat_message table -import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { StructuredTool, ToolParams } from '@langchain/core/tools' -import { CodeInterpreter } from '@e2b/code-interpreter' -import { z } from 'zod' - -const DESC = `Evaluates python code in a sandbox environment. \ -The environment is long running and exists across multiple executions. \ -You must send the whole script every time and print your outputs. \ -Script should be pure python code that can be evaluated. \ -It should be in python format NOT markdown. \ -The code should NOT be wrapped in backticks. \ -All python packages including requests, matplotlib, scipy, numpy, pandas, \ -etc are available. Create and display chart using "plt.show()".` -const NAME = 'code_interpreter' - -class E2B_Tools implements INode { - label: string - name: string - version: number - description: string - type: string - icon: string - category: string - baseClasses: string[] - inputs: INodeParams[] - badge: string - credential: INodeParams - - constructor() { - this.label = 'E2B' - this.name = 'e2b' - this.version = 1.0 - this.type = 'E2B' - this.icon = 'e2b.png' - this.category = 'Tools' - this.description = 'Execute code in E2B Code Intepreter' - this.baseClasses = [this.type, 'Tool', ...getBaseClasses(E2BTool)] - this.credential = { - label: 'Connect Credential', - name: 'credential', - type: 'credential', - credentialNames: ['E2BApi'] - } - this.inputs = [ - { - label: 'Tool Name', - name: 'toolName', - type: 'string', - description: 'Specify the name of the tool', - default: 'code_interpreter' - }, - { - label: 'Tool Description', - name: 'toolDesc', - type: 'string', - rows: 4, - description: 'Specify the description of the tool', - default: DESC - } - ] - } - - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const toolDesc = nodeData.inputs?.toolDesc as string - const toolName = nodeData.inputs?.toolName as string - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const e2bApiKey = getCredentialParam('e2bApiKey', credentialData, nodeData) - const socketIO = options.socketIO - const socketIOClientId = options.socketIOClientId - - return await E2BTool.initialize({ - description: toolDesc ?? DESC, - name: toolName ?? NAME, - apiKey: e2bApiKey, - schema: z.object({ - input: z.string().describe('Python code to be executed in the sandbox environment') - }), - socketIO, - socketIOClientId - }) - } -} - -type E2BToolParams = ToolParams & { instance: CodeInterpreter } - -export class E2BTool extends StructuredTool { - static lc_name() { - return 'E2BTool' - } - - name = NAME - - description = DESC - - instance: CodeInterpreter - - apiKey: string - - schema - - socketIO - - socketIOClientId = '' - - constructor(options: E2BToolParams & { name: string; description: string, apiKey: string, schema: any, socketIO: any, socketIOClientId: string}) { - super(options) - this.instance = options.instance - this.description = options.description - this.name = options.name - this.apiKey = options.apiKey - this.schema = options.schema - this.returnDirect = true - this.socketIO = options.socketIO - this.socketIOClientId = options.socketIOClientId - } - - static async initialize(options: Partial & { name: string; description: string, apiKey: string, schema: any, socketIO: any, socketIOClientId: string }) { - const instance = await CodeInterpreter.create({ apiKey: options.apiKey }) - return new this({ instance, name: options.name, description: options.description, apiKey: options.apiKey, schema: options.schema, socketIO: options.socketIO, socketIOClientId: options.socketIOClientId}) - } - - async _call(args: any) { - try { - if ('input' in args) { - const execution = await this.instance.notebook.execCell(args?.input) - let imgHTML = '' - for (const result of execution.results) { - if (result.png) { - imgHTML += `\n\nimage
` - } - if (result.jpeg) { - imgHTML += `\n\nimage
` - } - } - const output = execution.text ? execution.text + imgHTML : imgHTML - if (this.socketIO && this.socketIOClientId) this.socketIO.to(this.socketIOClientId).emit('token', output) - return output - } else { - return 'No input provided' - } - } catch (e) { - return typeof e === 'string' ? e : JSON.stringify(e, null, 2) - } - } -} - -module.exports = { nodeClass: E2B_Tools } -*/ diff --git a/packages/components/nodes/tools/ExaSearch/ExaSearch.ts b/packages/components/nodes/tools/ExaSearch/ExaSearch.ts index 9cfafadee7e..532ea77b1a7 100644 --- a/packages/components/nodes/tools/ExaSearch/ExaSearch.ts +++ b/packages/components/nodes/tools/ExaSearch/ExaSearch.ts @@ -20,7 +20,7 @@ class ExaSearch_Tools implements INode { constructor() { this.label = 'Exa Search' this.name = 'exaSearch' - this.version = 1.0 + this.version = 1.1 this.type = 'ExaSearch' this.icon = 'exa.svg' this.category = 'Tools' @@ -58,8 +58,8 @@ class ExaSearch_Tools implements INode { name: 'neural' }, { - label: 'magic', - name: 'magic', + label: 'auto', + name: 'auto', description: 'decides between keyword and neural' } ], @@ -116,6 +116,14 @@ class ExaSearch_Tools implements INode { { label: 'personal site', name: 'personal site' + }, + { + label: 'linkedin profile', + name: 'linkedin profile' + }, + { + label: 'financial report', + name: 'financial report' } ], optional: true, @@ -192,7 +200,7 @@ class ExaSearch_Tools implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const description = nodeData.inputs?.description as string const numResults = nodeData.inputs?.numResults as string - const type = nodeData.inputs?.type as string + const type = nodeData.inputs?.type as 'keyword' | 'neural' | 'auto' | undefined const useAutoprompt = nodeData.inputs?.useAutoprompt as boolean const category = nodeData.inputs?.category as string const includeDomains = nodeData.inputs?.includeDomains as string @@ -211,7 +219,7 @@ class ExaSearch_Tools implements INode { numResults: numResults ? parseFloat(numResults) : undefined, type: type || undefined, useAutoprompt: useAutoprompt || undefined, - category: category || undefined, + category: (category as any) || undefined, includeDomains: includeDomains ? includeDomains.split(',') : undefined, excludeDomains: excludeDomains ? excludeDomains.split(',') : undefined, startCrawlDate: startCrawlDate || undefined, diff --git a/packages/components/nodes/tools/MCP/BraveSearch/BraveSearchMCP.ts b/packages/components/nodes/tools/MCP/BraveSearch/BraveSearchMCP.ts new file mode 100644 index 00000000000..9d5ccd39fdb --- /dev/null +++ b/packages/components/nodes/tools/MCP/BraveSearch/BraveSearchMCP.ts @@ -0,0 +1,108 @@ +import { Tool } from '@langchain/core/tools' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../../src/Interface' +import { getCredentialData, getCredentialParam, getNodeModulesPackagePath } from '../../../../src/utils' +import { MCPToolkit } from '../core' + +class BraveSearch_MCP implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + documentation: string + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Brave Search MCP' + this.name = 'braveSearchMCP' + this.version = 1.0 + this.type = 'BraveSearch MCP Tool' + this.icon = 'brave.svg' + this.category = 'Tools (MCP)' + this.description = 'MCP server that integrates the Brave Search API - a real-time API to access web search capabilities' + this.documentation = 'https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search' + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['braveSearchApi'] + } + this.inputs = [ + { + label: 'Available Actions', + name: 'mcpActions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + refresh: true + } + ] + this.baseClasses = ['Tool'] + } + + //@ts-ignore + loadMethods = { + listActions: async (nodeData: INodeData, options: ICommonObject): Promise => { + try { + const toolset = await this.getTools(nodeData, options) + toolset.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return toolset.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + return [ + { + label: 'No Available Actions', + name: 'error', + description: 'No available actions, please check your API key and refresh' + } + ] + } + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const tools = await this.getTools(nodeData, options) + + const _mcpActions = nodeData.inputs?.mcpActions + let mcpActions = [] + if (_mcpActions) { + try { + mcpActions = typeof _mcpActions === 'string' ? JSON.parse(_mcpActions) : _mcpActions + } catch (error) { + console.error('Error parsing mcp actions:', error) + } + } + + return tools.filter((tool: any) => mcpActions.includes(tool.name)) + } + + async getTools(nodeData: INodeData, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const braveApiKey = getCredentialParam('braveApiKey', credentialData, nodeData) + const packagePath = getNodeModulesPackagePath('@modelcontextprotocol/server-brave-search/dist/index.js') + + const serverParams = { + command: 'node', + args: [packagePath], + env: { + BRAVE_API_KEY: braveApiKey + } + } + + const toolkit = new MCPToolkit(serverParams, 'stdio') + await toolkit.initialize() + + const tools = toolkit.tools ?? [] + + return tools as Tool[] + } +} + +module.exports = { nodeClass: BraveSearch_MCP } diff --git a/packages/components/nodes/tools/MCP/BraveSearch/brave.svg b/packages/components/nodes/tools/MCP/BraveSearch/brave.svg new file mode 100644 index 00000000000..b1e233577b7 --- /dev/null +++ b/packages/components/nodes/tools/MCP/BraveSearch/brave.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts b/packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts new file mode 100644 index 00000000000..548c595ecbf --- /dev/null +++ b/packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts @@ -0,0 +1,129 @@ +import { Tool } from '@langchain/core/tools' +import { INode, INodeData, INodeOptionsValue, INodeParams } from '../../../../src/Interface' +import { MCPToolkit } from '../core' + +const mcpServerConfig = `{ + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"] +}` + +class Custom_MCP implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + documentation: string + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Custom MCP' + this.name = 'customMCP' + this.version = 1.0 + this.type = 'Custom MCP Tool' + this.icon = 'customMCP.png' + this.category = 'Tools (MCP)' + this.description = 'Custom MCP Config' + this.documentation = 'https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search' + this.inputs = [ + { + label: 'MCP Server Config', + name: 'mcpServerConfig', + type: 'code', + hideCodeExecute: true, + placeholder: mcpServerConfig + }, + { + label: 'Available Actions', + name: 'mcpActions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + refresh: true + } + ] + this.baseClasses = ['Tool'] + } + + //@ts-ignore + loadMethods = { + listActions: async (nodeData: INodeData): Promise => { + try { + const toolset = await this.getTools(nodeData) + toolset.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return toolset.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + return [ + { + label: 'No Available Actions', + name: 'error', + description: 'No available actions, please check your API key and refresh' + } + ] + } + } + } + + async init(nodeData: INodeData): Promise { + const tools = await this.getTools(nodeData) + + const _mcpActions = nodeData.inputs?.mcpActions + let mcpActions = [] + if (_mcpActions) { + try { + mcpActions = typeof _mcpActions === 'string' ? JSON.parse(_mcpActions) : _mcpActions + } catch (error) { + console.error('Error parsing mcp actions:', error) + } + } + + return tools.filter((tool: any) => mcpActions.includes(tool.name)) + } + + async getTools(nodeData: INodeData): Promise { + const mcpServerConfig = nodeData.inputs?.mcpServerConfig as string + + if (!mcpServerConfig) { + throw new Error('MCP Server Config is required') + } + + try { + let serverParams + if (typeof mcpServerConfig === 'object') { + serverParams = mcpServerConfig + } else if (typeof mcpServerConfig === 'string') { + const serverParamsString = convertToValidJSONString(mcpServerConfig) + serverParams = JSON.parse(serverParamsString) + } + + const toolkit = new MCPToolkit(serverParams, 'stdio') + await toolkit.initialize() + + const tools = toolkit.tools ?? [] + + return tools as Tool[] + } catch (error) { + throw new Error(`Invalid MCP Server Config: ${error}`) + } + } +} + +function convertToValidJSONString(inputString: string) { + try { + const jsObject = Function('return ' + inputString)() + return JSON.stringify(jsObject, null, 2) + } catch (error) { + console.error('Error converting to JSON:', error) + return '' + } +} + +module.exports = { nodeClass: Custom_MCP } diff --git a/packages/components/nodes/tools/MCP/CustomMCP/customMCP.png b/packages/components/nodes/tools/MCP/CustomMCP/customMCP.png new file mode 100644 index 00000000000..6950234610a Binary files /dev/null and b/packages/components/nodes/tools/MCP/CustomMCP/customMCP.png differ diff --git a/packages/components/nodes/tools/MCP/Github/GithubMCP.ts b/packages/components/nodes/tools/MCP/Github/GithubMCP.ts new file mode 100644 index 00000000000..f0beafe95b1 --- /dev/null +++ b/packages/components/nodes/tools/MCP/Github/GithubMCP.ts @@ -0,0 +1,114 @@ +import { Tool } from '@langchain/core/tools' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../../src/Interface' +import { getCredentialData, getCredentialParam, getNodeModulesPackagePath } from '../../../../src/utils' +import { MCPToolkit } from '../core' + +class Github_MCP implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + documentation: string + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Github MCP' + this.name = 'githubMCP' + this.version = 1.0 + this.type = 'Github MCP Tool' + this.icon = 'github.svg' + this.category = 'Tools (MCP)' + this.description = 'MCP Server for the GitHub API' + this.documentation = 'https://github.com/modelcontextprotocol/servers/tree/main/src/github' + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['githubApi'] + } + this.inputs = [ + { + label: 'Available Actions', + name: 'mcpActions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + refresh: true + } + ] + this.baseClasses = ['Tool'] + } + + //@ts-ignore + loadMethods = { + listActions: async (nodeData: INodeData, options: ICommonObject): Promise => { + try { + const toolset = await this.getTools(nodeData, options) + toolset.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return toolset.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + console.error('Error listing actions:', error) + return [ + { + label: 'No Available Actions', + name: 'error', + description: 'No available actions, please check your Github Access Token and refresh' + } + ] + } + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const tools = await this.getTools(nodeData, options) + + const _mcpActions = nodeData.inputs?.mcpActions + let mcpActions = [] + if (_mcpActions) { + try { + mcpActions = typeof _mcpActions === 'string' ? JSON.parse(_mcpActions) : _mcpActions + } catch (error) { + console.error('Error parsing mcp actions:', error) + } + } + + return tools.filter((tool: any) => mcpActions.includes(tool.name)) + } + + async getTools(nodeData: INodeData, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const accessToken = getCredentialParam('accessToken', credentialData, nodeData) + + if (!accessToken) { + throw new Error('Missing Github Access Token') + } + + const packagePath = getNodeModulesPackagePath('@modelcontextprotocol/server-github/dist/index.js') + + const serverParams = { + command: 'node', + args: [packagePath], + env: { + GITHUB_PERSONAL_ACCESS_TOKEN: accessToken + } + } + + const toolkit = new MCPToolkit(serverParams, 'stdio') + await toolkit.initialize() + + const tools = toolkit.tools ?? [] + + return tools as Tool[] + } +} + +module.exports = { nodeClass: Github_MCP } diff --git a/packages/components/nodes/tools/MCP/Github/github.svg b/packages/components/nodes/tools/MCP/Github/github.svg new file mode 100644 index 00000000000..01f228d108b --- /dev/null +++ b/packages/components/nodes/tools/MCP/Github/github.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/components/nodes/tools/MCP/PostgreSQL/PostgreSQLMCP.ts b/packages/components/nodes/tools/MCP/PostgreSQL/PostgreSQLMCP.ts new file mode 100644 index 00000000000..d9fc0418d40 --- /dev/null +++ b/packages/components/nodes/tools/MCP/PostgreSQL/PostgreSQLMCP.ts @@ -0,0 +1,111 @@ +import { Tool } from '@langchain/core/tools' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../../src/Interface' +import { getCredentialData, getCredentialParam, getNodeModulesPackagePath } from '../../../../src/utils' +import { MCPToolkit } from '../core' + +class PostgreSQL_MCP implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + credential: INodeParams + documentation: string + inputs: INodeParams[] + + constructor() { + this.label = 'PostgreSQL MCP' + this.name = 'postgreSQLMCP' + this.version = 1.0 + this.type = 'PostgreSQL MCP Tool' + this.icon = 'postgres.svg' + this.category = 'Tools (MCP)' + this.description = 'MCP server that provides read-only access to PostgreSQL databases' + this.documentation = 'https://github.com/modelcontextprotocol/servers/tree/main/src/postgres' + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['PostgresUrl'] + } + this.inputs = [ + { + label: 'Available Actions', + name: 'mcpActions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + refresh: true + } + ] + this.baseClasses = ['Tool'] + } + + //@ts-ignore + loadMethods = { + listActions: async (nodeData: INodeData, options: ICommonObject): Promise => { + try { + const toolset = await this.getTools(nodeData, options) + toolset.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return toolset.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + console.error('Error listing actions:', error) + return [ + { + label: 'No Available Actions', + name: 'error', + description: 'No available actions, please check your postgres url and refresh' + } + ] + } + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const tools = await this.getTools(nodeData, options) + + const _mcpActions = nodeData.inputs?.mcpActions + let mcpActions = [] + if (_mcpActions) { + try { + mcpActions = typeof _mcpActions === 'string' ? JSON.parse(_mcpActions) : _mcpActions + } catch (error) { + console.error('Error parsing mcp actions:', error) + } + } + + return tools.filter((tool: any) => mcpActions.includes(tool.name)) + } + + async getTools(nodeData: INodeData, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const postgresUrl = getCredentialParam('postgresUrl', credentialData, nodeData) + + if (!postgresUrl) { + throw new Error('No postgres url provided') + } + + const packagePath = getNodeModulesPackagePath('@modelcontextprotocol/server-postgres/dist/index.js') + + const serverParams = { + command: 'node', + args: [packagePath, postgresUrl] + } + + const toolkit = new MCPToolkit(serverParams, 'stdio') + await toolkit.initialize() + + const tools = toolkit.tools ?? [] + + return tools as Tool[] + } +} + +module.exports = { nodeClass: PostgreSQL_MCP } diff --git a/packages/components/nodes/tools/MCP/PostgreSQL/postgres.svg b/packages/components/nodes/tools/MCP/PostgreSQL/postgres.svg new file mode 100644 index 00000000000..f631e7a842c --- /dev/null +++ b/packages/components/nodes/tools/MCP/PostgreSQL/postgres.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/tools/MCP/Slack/SlackMCP.ts b/packages/components/nodes/tools/MCP/Slack/SlackMCP.ts new file mode 100644 index 00000000000..af3068207cb --- /dev/null +++ b/packages/components/nodes/tools/MCP/Slack/SlackMCP.ts @@ -0,0 +1,116 @@ +import { Tool } from '@langchain/core/tools' +import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../../src/Interface' +import { getCredentialData, getCredentialParam, getNodeModulesPackagePath } from '../../../../src/utils' +import { MCPToolkit } from '../core' + +class Slack_MCP implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + documentation: string + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Slack MCP' + this.name = 'slackMCP' + this.version = 1.0 + this.type = 'Slack MCP Tool' + this.icon = 'slack.svg' + this.category = 'Tools (MCP)' + this.description = 'MCP Server for the Slack API' + this.documentation = 'https://github.com/modelcontextprotocol/servers/tree/main/src/slack' + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['slackApi'] + } + this.inputs = [ + { + label: 'Available Actions', + name: 'mcpActions', + type: 'asyncMultiOptions', + loadMethod: 'listActions', + refresh: true + } + ] + this.baseClasses = ['Tool'] + } + + //@ts-ignore + loadMethods = { + listActions: async (nodeData: INodeData, options: ICommonObject): Promise => { + try { + const toolset = await this.getTools(nodeData, options) + toolset.sort((a: any, b: any) => a.name.localeCompare(b.name)) + + return toolset.map(({ name, ...rest }) => ({ + label: name.toUpperCase(), + name: name, + description: rest.description || name + })) + } catch (error) { + console.error('Error listing actions:', error) + return [ + { + label: 'No Available Actions', + name: 'error', + description: 'No available actions, please check your Slack Bot Token and refresh' + } + ] + } + } + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const tools = await this.getTools(nodeData, options) + + const _mcpActions = nodeData.inputs?.mcpActions + let mcpActions = [] + if (_mcpActions) { + try { + mcpActions = typeof _mcpActions === 'string' ? JSON.parse(_mcpActions) : _mcpActions + } catch (error) { + console.error('Error parsing mcp actions:', error) + } + } + + return tools.filter((tool: any) => mcpActions.includes(tool.name)) + } + + async getTools(nodeData: INodeData, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const botToken = getCredentialParam('botToken', credentialData, nodeData) + const teamId = getCredentialParam('teamId', credentialData, nodeData) + + if (!botToken || !teamId) { + throw new Error('Missing Credentials') + } + + const packagePath = getNodeModulesPackagePath('@modelcontextprotocol/server-slack/dist/index.js') + + const serverParams = { + command: 'node', + args: [packagePath], + env: { + SLACK_BOT_TOKEN: botToken, + SLACK_TEAM_ID: teamId + } + } + + const toolkit = new MCPToolkit(serverParams, 'stdio') + await toolkit.initialize() + + const tools = toolkit.tools ?? [] + + return tools as Tool[] + } +} + +module.exports = { nodeClass: Slack_MCP } diff --git a/packages/components/nodes/tools/MCP/Slack/slack.svg b/packages/components/nodes/tools/MCP/Slack/slack.svg new file mode 100644 index 00000000000..69a4eb6a217 --- /dev/null +++ b/packages/components/nodes/tools/MCP/Slack/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/tools/MCP/core.ts b/packages/components/nodes/tools/MCP/core.ts new file mode 100644 index 00000000000..235f9d50f28 --- /dev/null +++ b/packages/components/nodes/tools/MCP/core.ts @@ -0,0 +1,104 @@ +import { CallToolRequest, CallToolResultSchema, ListToolsResult, ListToolsResultSchema } from '@modelcontextprotocol/sdk/types.js' +import { Client } from '@modelcontextprotocol/sdk/client/index.js' +import { StdioClientTransport, StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js' +import { BaseToolkit, tool, Tool } from '@langchain/core/tools' +import { z } from 'zod' + +export class MCPToolkit extends BaseToolkit { + tools: Tool[] = [] + _tools: ListToolsResult | null = null + model_config: any + transport: StdioClientTransport | null = null + client: Client | null = null + constructor(serverParams: StdioServerParameters | any, transport: 'stdio' | 'sse') { + super() + if (transport === 'stdio') { + this.transport = new StdioClientTransport(serverParams as StdioServerParameters) + } else { + // TODO: this.transport = new SSEClientTransport(serverParams.url); + } + } + async initialize() { + if (this._tools === null) { + this.client = new Client( + { + name: 'flowise-client', + version: '1.0.0' + }, + { + capabilities: {} + } + ) + if (this.transport === null) { + throw new Error('Transport is not initialized') + } + await this.client.connect(this.transport) + this._tools = await this.client.request({ method: 'tools/list' }, ListToolsResultSchema) + + this.tools = await this.get_tools() + } + } + + async get_tools(): Promise { + if (this._tools === null || this.client === null) { + throw new Error('Must initialize the toolkit first') + } + const toolsPromises = this._tools.tools.map(async (tool: any) => { + if (this.client === null) { + throw new Error('Client is not initialized') + } + return await MCPTool({ + client: this.client, + name: tool.name, + description: tool.description || '', + argsSchema: createSchemaModel(tool.inputSchema) + }) + }) + return Promise.all(toolsPromises) + } +} + +export async function MCPTool({ + client, + name, + description, + argsSchema +}: { + client: Client + name: string + description: string + argsSchema: any +}): Promise { + return tool( + async (input): Promise => { + const req: CallToolRequest = { method: 'tools/call', params: { name: name, arguments: input } } + const res = await client.request(req, CallToolResultSchema) + const content = res.content + const contentString = JSON.stringify(content) + return contentString + }, + { + name: name, + description: description, + schema: argsSchema + } + ) +} + +function createSchemaModel( + inputSchema: { + type: 'object' + properties?: import('zod').objectOutputType<{}, import('zod').ZodTypeAny, 'passthrough'> | undefined + } & { [k: string]: unknown } +): any { + if (inputSchema.type !== 'object' || !inputSchema.properties) { + throw new Error('Invalid schema type or missing properties') + } + + const schemaProperties = Object.entries(inputSchema.properties).reduce((acc, [key, _]) => { + acc[key] = z.any() + return acc + }, {} as Record) + + return z.object(schemaProperties) +} diff --git a/packages/components/nodes/tools/OpenAPIToolkit/OpenAPIToolkit.ts b/packages/components/nodes/tools/OpenAPIToolkit/OpenAPIToolkit.ts index a958b09bb83..d44f5f103f9 100644 --- a/packages/components/nodes/tools/OpenAPIToolkit/OpenAPIToolkit.ts +++ b/packages/components/nodes/tools/OpenAPIToolkit/OpenAPIToolkit.ts @@ -1,9 +1,10 @@ import { load } from 'js-yaml' -import { BaseLanguageModel } from '@langchain/core/language_models/base' -import { OpenApiToolkit } from 'langchain/agents' -import { JsonSpec, JsonObject } from './core' import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' -import { getCredentialData, getCredentialParam, getFileFromStorage } from '../../../src' +import { getFileFromStorage, getVars, IDatabaseEntity, IVariable } from '../../../src' +import $RefParser from '@apidevtools/json-schema-ref-parser' +import { z, ZodSchema, ZodTypeAny } from 'zod' +import { defaultCode, DynamicStructuredTool, howToUseCode } from './core' +import { DataSource } from 'typeorm' class OpenAPIToolkit_Tools implements INode { label: string @@ -20,69 +21,306 @@ class OpenAPIToolkit_Tools implements INode { constructor() { this.label = 'OpenAPI Toolkit' this.name = 'openAPIToolkit' - this.version = 1.0 + this.version = 2.0 this.type = 'OpenAPIToolkit' this.icon = 'openapi.svg' this.category = 'Tools' - this.description = 'Load OpenAPI specification' - this.credential = { - label: 'Connect Credential', - name: 'credential', - type: 'credential', - description: 'Only needed if the YAML OpenAPI Spec requires authentication', - optional: true, - credentialNames: ['openAPIAuth'] - } + this.description = 'Load OpenAPI specification, and converts each API endpoint to a tool' this.inputs = [ - { - label: 'Language Model', - name: 'model', - type: 'BaseLanguageModel' - }, { label: 'YAML File', name: 'yamlFile', type: 'file', fileType: '.yaml' + }, + { + label: 'Return Direct', + name: 'returnDirect', + description: 'Return the output of the tool directly to the user', + type: 'boolean', + optional: true + }, + { + label: 'Headers', + name: 'headers', + type: 'json', + description: 'Request headers to be sent with the API request. For example, {"Authorization": "Bearer token"}', + additionalParams: true, + optional: true + }, + { + label: 'Remove null parameters', + name: 'removeNulls', + type: 'boolean', + optional: true, + description: 'Remove all keys with null values from the parsed arguments' + }, + { + label: 'Custom Code', + name: 'customCode', + type: 'code', + hint: { + label: 'How to use', + value: howToUseCode + }, + codeExample: defaultCode, + description: `Custom code to return the output of the tool. The code should be a function that takes in the input and returns a string`, + hideCodeExecute: true, + default: defaultCode, + additionalParams: true } ] this.baseClasses = [this.type, 'Tool'] } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const model = nodeData.inputs?.model as BaseLanguageModel + const toolReturnDirect = nodeData.inputs?.returnDirect as boolean const yamlFileBase64 = nodeData.inputs?.yamlFile as string + const customCode = nodeData.inputs?.customCode as string + const _headers = nodeData.inputs?.headers as string + const removeNulls = nodeData.inputs?.removeNulls as boolean - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const openAPIToken = getCredentialParam('openAPIToken', credentialData, nodeData) + const headers = typeof _headers === 'object' ? _headers : _headers ? JSON.parse(_headers) : {} - let data: JsonObject + let data if (yamlFileBase64.startsWith('FILE-STORAGE::')) { const file = yamlFileBase64.replace('FILE-STORAGE::', '') const chatflowid = options.chatflowid const fileData = await getFileFromStorage(file, chatflowid) const utf8String = fileData.toString('utf-8') - data = load(utf8String) as JsonObject + data = load(utf8String) } else { const splitDataURI = yamlFileBase64.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') const utf8String = bf.toString('utf-8') - data = load(utf8String) as JsonObject + data = load(utf8String) } if (!data) { throw new Error('Failed to load OpenAPI spec') } - const headers: ICommonObject = { - 'Content-Type': 'application/json' + const _data: any = await $RefParser.dereference(data) + + const baseUrl = _data.servers[0]?.url + if (!baseUrl) { + throw new Error('OpenAPI spec does not contain a server URL') } - if (openAPIToken) headers.Authorization = `Bearer ${openAPIToken}` - const toolkit = new OpenApiToolkit(new JsonSpec(data), model, headers) - return toolkit.tools + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const variables = await getVars(appDataSource, databaseEntities, nodeData) + + const flow = { chatflowId: options.chatflowid } + + const tools = getTools(_data.paths, baseUrl, headers, variables, flow, toolReturnDirect, customCode, removeNulls) + return tools + } +} + +const jsonSchemaToZodSchema = (schema: any, requiredList: string[], keyName: string): ZodSchema => { + if (schema.properties) { + // Handle object types by recursively processing properties + const zodShape: Record = {} + for (const key in schema.properties) { + zodShape[key] = jsonSchemaToZodSchema(schema.properties[key], requiredList, key) + } + return z.object(zodShape) + } else if (schema.oneOf || schema.anyOf) { + // Handle oneOf/anyOf by mapping each option to a Zod schema + const schemas = schema.oneOf || schema.anyOf + const zodSchemas = schemas.map((subSchema: any) => jsonSchemaToZodSchema(subSchema, requiredList, keyName)) + return z.union(zodSchemas).describe(schema?.description ?? schema?.title ?? keyName) + } else if (schema.enum) { + // Handle enum types with their title and description + return requiredList.includes(keyName) + ? z.enum(schema.enum).describe(schema?.description ?? schema?.title ?? keyName) + : z + .enum(schema.enum) + .describe(schema?.description ?? schema?.title ?? keyName) + .optional() + } else if (schema.type === 'string') { + return requiredList.includes(keyName) + ? z.string({ required_error: `${keyName} required` }).describe(schema?.description ?? keyName) + : z + .string() + .describe(schema?.description ?? keyName) + .optional() + } else if (schema.type === 'array') { + return z.array(jsonSchemaToZodSchema(schema.items, requiredList, keyName)) + } else if (schema.type === 'boolean') { + return requiredList.includes(keyName) + ? z.boolean({ required_error: `${keyName} required` }).describe(schema?.description ?? keyName) + : z + .boolean() + .describe(schema?.description ?? keyName) + .optional() + } else if (schema.type === 'number') { + let numberSchema = z.number() + if (typeof schema.minimum === 'number') { + numberSchema = numberSchema.min(schema.minimum) + } + if (typeof schema.maximum === 'number') { + numberSchema = numberSchema.max(schema.maximum) + } + return requiredList.includes(keyName) + ? numberSchema.describe(schema?.description ?? keyName) + : numberSchema.describe(schema?.description ?? keyName).optional() + } else if (schema.type === 'integer') { + let numberSchema = z.number().int() + return requiredList.includes(keyName) + ? numberSchema.describe(schema?.description ?? keyName) + : numberSchema.describe(schema?.description ?? keyName).optional() + } else if (schema.type === 'null') { + return z.null() + } + console.error(`jsonSchemaToZodSchema returns UNKNOWN! ${keyName}`, schema) + // Fallback to unknown type if unrecognized + return z.unknown() +} + +const extractParameters = (param: ICommonObject, paramZodObj: ICommonObject) => { + const paramSchema = param.schema + const paramName = param.name + const paramDesc = paramSchema.description || paramSchema.title || param.description || param.name + + if (paramSchema.enum) { + const enumValues = paramSchema.enum as string[] + // Combine title and description from schema + const enumDesc = [paramSchema.title, paramSchema.description, `Valid values: ${enumValues.join(', ')}`].filter(Boolean).join('. ') + + if (param.required) { + paramZodObj[paramName] = z.enum(enumValues as [string, ...string[]]).describe(enumDesc) + } else { + paramZodObj[paramName] = z + .enum(enumValues as [string, ...string[]]) + .describe(enumDesc) + .optional() + } + return paramZodObj + } else if (paramSchema.type === 'string') { + if (param.required) { + paramZodObj[paramName] = z.string({ required_error: `${paramName} required` }).describe(paramDesc) + } else { + paramZodObj[paramName] = z.string().describe(paramDesc).optional() + } + } else if (paramSchema.type === 'number') { + if (param.required) { + paramZodObj[paramName] = z.number({ required_error: `${paramName} required` }).describe(paramDesc) + } else { + paramZodObj[paramName] = z.number().describe(paramDesc).optional() + } + } else if (paramSchema.type === 'boolean') { + if (param.required) { + paramZodObj[paramName] = z.boolean({ required_error: `${paramName} required` }).describe(paramDesc) + } else { + paramZodObj[paramName] = z.boolean().describe(paramDesc).optional() + } + } else if (paramSchema.anyOf || paramSchema.type === 'anyOf') { + // Handle anyOf by using jsonSchemaToZodSchema + const requiredList = param.required ? [paramName] : [] + paramZodObj[paramName] = jsonSchemaToZodSchema(paramSchema, requiredList, paramName) + } + + return paramZodObj +} + +const getTools = ( + paths: any[], + baseUrl: string, + headers: ICommonObject, + variables: IVariable[], + flow: ICommonObject, + returnDirect: boolean, + customCode?: string, + removeNulls?: boolean +) => { + const tools = [] + for (const path in paths) { + // example of path: "/engines" + const methods = paths[path] + for (const method in methods) { + // example of method: "get" + const spec = methods[method] + const toolName = spec.operationId + const toolDesc = spec.description || spec.summary || toolName + + let zodObj: ICommonObject = {} + if (spec.parameters) { + // Get parameters with in = path + let paramZodObjPath: ICommonObject = {} + for (const param of spec.parameters.filter((param: any) => param.in === 'path')) { + paramZodObjPath = extractParameters(param, paramZodObjPath) + } + + // Get parameters with in = query + let paramZodObjQuery: ICommonObject = {} + for (const param of spec.parameters.filter((param: any) => param.in === 'query')) { + paramZodObjQuery = extractParameters(param, paramZodObjQuery) + } + + // Combine path and query parameters + zodObj = { + ...zodObj, + PathParameters: z.object(paramZodObjPath), + QueryParameters: z.object(paramZodObjQuery) + } + } + + if (spec.requestBody) { + let content: any = {} + if (spec.requestBody.content['application/json']) { + content = spec.requestBody.content['application/json'] + } else if (spec.requestBody.content['application/x-www-form-urlencoded']) { + content = spec.requestBody.content['application/x-www-form-urlencoded'] + } else if (spec.requestBody.content['multipart/form-data']) { + content = spec.requestBody.content['multipart/form-data'] + } else if (spec.requestBody.content['text/plain']) { + content = spec.requestBody.content['text/plain'] + } + const requestBodySchema = content.schema + if (requestBodySchema) { + const requiredList = requestBodySchema.required || [] + const requestBodyZodObj = jsonSchemaToZodSchema(requestBodySchema, requiredList, 'properties') + zodObj = { + ...zodObj, + RequestBody: requestBodyZodObj + } + } else { + zodObj = { + ...zodObj, + input: z.string().describe('Query input').optional() + } + } + } + + if (!spec.parameters && !spec.requestBody) { + zodObj = { + input: z.string().describe('Query input').optional() + } + } + + const toolObj = { + name: toolName, + description: toolDesc, + schema: z.object(zodObj), + baseUrl: `${baseUrl}${path}`, + method: method, + headers, + customCode, + strict: spec['x-strict'] === true, + removeNulls + } + + const dynamicStructuredTool = new DynamicStructuredTool(toolObj) + dynamicStructuredTool.setVariables(variables) + dynamicStructuredTool.setFlowObject(flow) + dynamicStructuredTool.returnDirect = returnDirect + tools.push(dynamicStructuredTool) + } } + return tools } module.exports = { nodeClass: OpenAPIToolkit_Tools } diff --git a/packages/components/nodes/tools/OpenAPIToolkit/core.ts b/packages/components/nodes/tools/OpenAPIToolkit/core.ts index 7e332db220a..f7701770e56 100644 --- a/packages/components/nodes/tools/OpenAPIToolkit/core.ts +++ b/packages/components/nodes/tools/OpenAPIToolkit/core.ts @@ -1,140 +1,296 @@ -import jsonpointer from 'jsonpointer' -import { Serializable } from '@langchain/core/load/serializable' -import { Tool, ToolParams } from '@langchain/core/tools' +import { z } from 'zod' +import { RequestInit } from 'node-fetch' +import { NodeVM } from '@flowiseai/nodevm' +import { RunnableConfig } from '@langchain/core/runnables' +import { StructuredTool, ToolParams } from '@langchain/core/tools' +import { CallbackManagerForToolRun, Callbacks, CallbackManager, parseCallbackConfigArg } from '@langchain/core/callbacks/manager' +import { availableDependencies, defaultAllowBuiltInDep, prepareSandboxVars } from '../../../src/utils' +import { ICommonObject } from '../../../src/Interface' -export type Json = string | number | boolean | null | { [key: string]: Json } | Json[] +const removeNulls = (obj: Record) => { + Object.keys(obj).forEach((key) => { + if (obj[key] === null) { + delete obj[key] + } else if (typeof obj[key] === 'object' && obj[key] !== null) { + removeNulls(obj[key]) + if (Object.keys(obj[key]).length === 0) { + delete obj[key] + } + } + }) + return obj +} + +interface HttpRequestObject { + PathParameters?: Record + QueryParameters?: Record + RequestBody?: Record +} -export type JsonObject = { [key: string]: Json } +export const defaultCode = `const fetch = require('node-fetch'); +const url = $url; +const options = $options; -/** - * Represents a JSON object in the LangChain framework. Provides methods - * to get keys and values from the JSON object. - */ -export class JsonSpec extends Serializable { - lc_namespace = ['langchain', 'tools', 'json'] +try { + const response = await fetch(url, options); + const resp = await response.json(); + return JSON.stringify(resp); +} catch (error) { + console.error(error); + return ''; +} +` +export const howToUseCode = `- **Libraries:** + You can use any libraries imported in Flowise. - obj: JsonObject +- **Tool Input Arguments:** + Tool input arguments are available as the following variables: + - \`$PathParameters\` + - \`$QueryParameters\` + - \`$RequestBody\` - maxValueLength = 4000 +- **HTTP Requests:** + By default, you can get the following values for making HTTP requests: + - \`$url\` + - \`$options\` - constructor(obj: JsonObject, max_value_length = 4000) { - super(...arguments) - this.obj = obj - this.maxValueLength = max_value_length - } +- **Default Flow Config:** + You can access the default flow configuration using these variables: + - \`$flow.sessionId\` + - \`$flow.chatId\` + - \`$flow.chatflowId\` + - \`$flow.input\` + - \`$flow.state\` - /** - * Retrieves all keys at a given path in the JSON object. - * @param input The path to the keys in the JSON object, provided as a string in JSON pointer syntax. - * @returns A string containing all keys at the given path, separated by commas. - */ - public getKeys(input: string): string { - const pointer = jsonpointer.compile(input) - const res = pointer.get(this.obj) as Json - if (typeof res === 'object' && !Array.isArray(res) && res !== null) { - return Object.keys(res) - .map((i) => i.replaceAll('~', '~0').replaceAll('/', '~1')) - .join(', ') +- **Custom Variables:** + You can get custom variables using the syntax: + - \`$vars.\` + +- **Return Value:** + The function must return a **string** value at the end. + +\`\`\`js +${defaultCode} +\`\`\` +` + +const getUrl = (baseUrl: string, requestObject: HttpRequestObject) => { + let url = baseUrl + + // Add PathParameters to URL if present + if (requestObject.PathParameters) { + for (const [key, value] of Object.entries(requestObject.PathParameters)) { + url = url.replace(`{${key}}`, encodeURIComponent(String(value))) } + } - throw new Error(`Value at ${input} is not a dictionary, get the value directly instead.`) + // Add QueryParameters to URL if present + if (requestObject.QueryParameters) { + const queryParams = new URLSearchParams(requestObject.QueryParameters as Record) + url += `?${queryParams.toString()}` } - /** - * Retrieves the value at a given path in the JSON object. - * @param input The path to the value in the JSON object, provided as a string in JSON pointer syntax. - * @returns The value at the given path in the JSON object, as a string. If the value is a large dictionary or exceeds the maximum length, a message is returned instead. - */ - public getValue(input: string): string { - const pointer = jsonpointer.compile(input) - const res = pointer.get(this.obj) as Json - - if (res === null || res === undefined) { - throw new Error(`Value at ${input} is null or undefined.`) - } + return url +} - const str = typeof res === 'object' ? JSON.stringify(res) : res.toString() - if (typeof res === 'object' && !Array.isArray(res) && str.length > this.maxValueLength) { - return `Value is a large dictionary, should explore its keys directly.` - } +class ToolInputParsingException extends Error { + output?: string - if (str.length > this.maxValueLength) { - return `${str.slice(0, this.maxValueLength)}...` - } - return str + constructor(message: string, output?: string) { + super(message) + this.output = output } } -export interface JsonToolFields extends ToolParams { - jsonSpec: JsonSpec +export interface BaseDynamicToolInput extends ToolParams { + name: string + description: string + returnDirect?: boolean } -/** - * A tool in the LangChain framework that lists all keys at a given path - * in a JSON object. - */ -export class JsonListKeysTool extends Tool { - static lc_name() { - return 'JsonListKeysTool' - } +export interface DynamicStructuredToolInput< + // eslint-disable-next-line + T extends z.ZodObject = z.ZodObject +> extends BaseDynamicToolInput { + func?: (input: z.infer, runManager?: CallbackManagerForToolRun) => Promise + schema: T + baseUrl: string + method: string + headers: ICommonObject + customCode?: string + strict?: boolean + removeNulls?: boolean +} - name = 'json_list_keys' +export class DynamicStructuredTool< + // eslint-disable-next-line + T extends z.ZodObject = z.ZodObject +> extends StructuredTool { + name: string - jsonSpec: JsonSpec + description: string - constructor(jsonSpec: JsonSpec) + baseUrl: string - constructor(fields: JsonToolFields) + method: string - constructor(fields: JsonSpec | JsonToolFields) { - if (!('jsonSpec' in fields)) { - // eslint-disable-next-line no-param-reassign - fields = { jsonSpec: fields } - } - super(fields) + headers: ICommonObject + + customCode?: string + + strict?: boolean - this.jsonSpec = fields.jsonSpec + func: DynamicStructuredToolInput['func'] + + // @ts-ignore + schema: T + private variables: any[] + private flowObj: any + private removeNulls: boolean + + constructor(fields: DynamicStructuredToolInput) { + super(fields) + this.name = fields.name + this.description = fields.description + this.func = fields.func + this.returnDirect = fields.returnDirect ?? this.returnDirect + this.schema = fields.schema + this.baseUrl = fields.baseUrl + this.method = fields.method + this.headers = fields.headers + this.customCode = fields.customCode + this.strict = fields.strict + this.removeNulls = fields.removeNulls ?? false } - /** @ignore */ - async _call(input: string) { + async call( + arg: z.output, + configArg?: RunnableConfig | Callbacks, + tags?: string[], + flowConfig?: { sessionId?: string; chatId?: string; input?: string; state?: ICommonObject } + ): Promise { + const config = parseCallbackConfigArg(configArg) + if (config.runName === undefined) { + config.runName = this.name + } + let parsed + try { + parsed = await this.schema.parseAsync(arg) + } catch (e) { + throw new ToolInputParsingException(`Received tool input did not match expected schema ${e}`, JSON.stringify(arg)) + } + const callbackManager_ = await CallbackManager.configure( + config.callbacks, + this.callbacks, + config.tags || tags, + this.tags, + config.metadata, + this.metadata, + { verbose: this.verbose } + ) + const runManager = await callbackManager_?.handleToolStart( + this.toJSON(), + typeof parsed === 'string' ? parsed : JSON.stringify(parsed), + undefined, + undefined, + undefined, + undefined, + config.runName + ) + let result try { - return this.jsonSpec.getKeys(input) - } catch (error) { - return `${error}` + result = await this._call(parsed, runManager, flowConfig) + } catch (e) { + await runManager?.handleToolError(e) + throw e } + if (result && typeof result !== 'string') { + result = JSON.stringify(result) + } + await runManager?.handleToolEnd(result) + return result } - description = `Can be used to list all keys at a given path. - Before calling this you should be SURE that the path to this exists. - The input is a text representation of the path to the json as json pointer syntax (e.g. /key1/0/key2).` -} + // @ts-ignore + protected async _call( + arg: z.output, + _?: CallbackManagerForToolRun, + flowConfig?: { sessionId?: string; chatId?: string; input?: string; state?: ICommonObject } + ): Promise { + let sandbox: any = { + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } + let processedArg = { ...arg } -/** - * A tool in the LangChain framework that retrieves the value at a given - * path in a JSON object. - */ -export class JsonGetValueTool extends Tool { - static lc_name() { - return 'JsonGetValueTool' - } + if (this.removeNulls && typeof processedArg === 'object' && processedArg !== null) { + processedArg = removeNulls(processedArg) + } - name = 'json_get_value' + if (typeof processedArg === 'object' && Object.keys(processedArg).length) { + for (const item in processedArg) { + sandbox[`$${item}`] = processedArg[item] + } + } - constructor(public jsonSpec: JsonSpec) { - super() - } + sandbox['$vars'] = prepareSandboxVars(this.variables) - /** @ignore */ - async _call(input: string) { - try { - return this.jsonSpec.getValue(input) - } catch (error) { - return `${error}` + // inject flow properties + if (this.flowObj) { + sandbox['$flow'] = { ...this.flowObj, ...flowConfig } + } + + const callOptions: RequestInit = { + method: this.method, + headers: { + 'Content-Type': 'application/json', + ...this.headers + } + } + if (arg.RequestBody && this.method.toUpperCase() !== 'GET') { + callOptions.body = JSON.stringify(arg.RequestBody) } + sandbox['$options'] = callOptions + + const completeUrl = getUrl(this.baseUrl, arg) + sandbox['$url'] = completeUrl + + const builtinDeps = process.env.TOOL_FUNCTION_BUILTIN_DEP + ? defaultAllowBuiltInDep.concat(process.env.TOOL_FUNCTION_BUILTIN_DEP.split(',')) + : defaultAllowBuiltInDep + const externalDeps = process.env.TOOL_FUNCTION_EXTERNAL_DEP ? process.env.TOOL_FUNCTION_EXTERNAL_DEP.split(',') : [] + const deps = availableDependencies.concat(externalDeps) + + const options = { + console: 'inherit', + sandbox, + require: { + external: { modules: deps }, + builtin: builtinDeps + }, + eval: false, + wasm: false, + timeout: 10000 + } as any + + const vm = new NodeVM(options) + const response = await vm.run(`module.exports = async function() {${this.customCode || defaultCode}}()`, __dirname) + + return response + } + + setVariables(variables: any[]) { + this.variables = variables } - description = `Can be used to see value in string format at a given path. - Before calling this you should be SURE that the path to this exists. - The input is a text representation of the path to the json as json pointer syntax (e.g. /key1/0/key2).` + setFlowObject(flow: any) { + this.flowObj = flow + } + + isStrict(): boolean { + return this.strict === true + } } diff --git a/packages/components/nodes/tools/PythonInterpreter/PythonInterpreter.ts b/packages/components/nodes/tools/PythonInterpreter/PythonInterpreter.ts deleted file mode 100644 index fa577632e52..00000000000 --- a/packages/components/nodes/tools/PythonInterpreter/PythonInterpreter.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses } from '../../../src/utils' -import { loadPyodide, type PyodideInterface } from 'pyodide' -import { Tool, ToolParams } from '@langchain/core/tools' -import * as path from 'path' -import { getUserHome } from '../../../src/utils' - -let pyodideInstance: PyodideInterface | undefined -const DESC = `Evaluates python code in a sandbox environment. The environment resets on every execution. You must send the whole script every time and print your outputs. Script should be pure python code that can be evaluated. Use only packages available in Pyodide.` -const NAME = 'python_interpreter' - -async function LoadPyodide(): Promise { - if (pyodideInstance === undefined) { - const obj = { packageCacheDir: path.join(getUserHome(), '.flowise', 'pyodideCacheDir') } - pyodideInstance = await loadPyodide(obj) - } - return pyodideInstance -} - -class PythonInterpreter_Tools implements INode { - label: string - name: string - version: number - description: string - type: string - icon: string - category: string - baseClasses: string[] - inputs: INodeParams[] - badge: string - - constructor() { - this.label = 'Python Interpreter' - this.name = 'pythonInterpreter' - this.version = 1.0 - this.type = 'PythonInterpreter' - this.icon = 'python.svg' - this.category = 'Tools' - this.description = 'Execute python code in Pyodide sandbox environment' - this.baseClasses = [this.type, 'Tool', ...getBaseClasses(PythonInterpreterTool)] - this.inputs = [ - { - label: 'Tool Name', - name: 'toolName', - type: 'string', - description: 'Specify the name of the tool', - default: 'python_interpreter' - }, - { - label: 'Tool Description', - name: 'toolDesc', - type: 'string', - rows: 4, - description: 'Specify the description of the tool', - default: DESC - } - ] - } - - async init(nodeData: INodeData): Promise { - const toolDesc = nodeData.inputs?.toolDesc as string - const toolName = nodeData.inputs?.toolName as string - - return await PythonInterpreterTool.initialize({ - description: toolDesc ?? DESC, - name: toolName ?? NAME - }) - } -} - -type PythonInterpreterToolParams = Parameters[0] & - ToolParams & { - instance: PyodideInterface - } - -export class PythonInterpreterTool extends Tool { - static lc_name() { - return 'PythonInterpreterTool' - } - - name = NAME - - description = DESC - - pyodideInstance: PyodideInterface - - stdout = '' - - stderr = '' - - constructor(options: PythonInterpreterToolParams & { name: string; description: string }) { - super(options) - this.description = options.description - this.name = options.name - this.pyodideInstance = options.instance - this.pyodideInstance.setStderr({ - batched: (text: string) => { - this.stderr += text - } - }) - this.pyodideInstance.setStdout({ - batched: (text: string) => { - this.stdout += text - } - }) - } - - static async initialize(options: Partial & { name: string; description: string }) { - const instance = await LoadPyodide() - return new this({ instance, name: options.name, description: options.description }) - } - - async _call(script: string) { - this.stdout = '' - this.stderr = '' - - try { - await this.pyodideInstance.loadPackagesFromImports(script) - await this.pyodideInstance.runPythonAsync(script) - return JSON.stringify({ stdout: this.stdout, stderr: this.stderr }, null, 2) - } catch (e) { - return typeof e === 'string' ? e : JSON.stringify(e, null, 2) - } - } -} - -module.exports = { nodeClass: PythonInterpreter_Tools } diff --git a/packages/components/nodes/tools/PythonInterpreter/python.svg b/packages/components/nodes/tools/PythonInterpreter/python.svg deleted file mode 100644 index 9cbbf9478df..00000000000 --- a/packages/components/nodes/tools/PythonInterpreter/python.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/components/nodes/tools/RetrieverTool/RetrieverTool.ts b/packages/components/nodes/tools/RetrieverTool/RetrieverTool.ts index 1e5f76d12ce..0010bce9c50 100644 --- a/packages/components/nodes/tools/RetrieverTool/RetrieverTool.ts +++ b/packages/components/nodes/tools/RetrieverTool/RetrieverTool.ts @@ -1,11 +1,120 @@ import { z } from 'zod' -import { DynamicStructuredTool } from '@langchain/core/tools' -import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager' -import { DynamicTool } from '@langchain/core/tools' +import { CallbackManager, CallbackManagerForToolRun, Callbacks, parseCallbackConfigArg } from '@langchain/core/callbacks/manager' +import { BaseDynamicToolInput, DynamicTool, StructuredTool, ToolInputParsingException } from '@langchain/core/tools' import { BaseRetriever } from '@langchain/core/retrievers' -import { INode, INodeData, INodeParams } from '../../../src/Interface' -import { getBaseClasses } from '../../../src/utils' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, resolveFlowObjValue } from '../../../src/utils' import { SOURCE_DOCUMENTS_PREFIX } from '../../../src/agents' +import { RunnableConfig } from '@langchain/core/runnables' +import { VectorStoreRetriever } from '@langchain/core/vectorstores' + +const howToUse = `Add additional filters to vector store. You can also filter with flow config, including the current "state": +- \`$flow.sessionId\` +- \`$flow.chatId\` +- \`$flow.chatflowId\` +- \`$flow.input\` +- \`$flow.state\` +` + +type ZodObjectAny = z.ZodObject +type IFlowConfig = { sessionId?: string; chatId?: string; input?: string; state?: ICommonObject } +interface DynamicStructuredToolInput = z.ZodObject> + extends BaseDynamicToolInput { + func?: (input: z.infer, runManager?: CallbackManagerForToolRun, flowConfig?: IFlowConfig) => Promise + schema: T +} + +class DynamicStructuredTool = z.ZodObject> extends StructuredTool< + T extends ZodObjectAny ? T : ZodObjectAny +> { + static lc_name() { + return 'DynamicStructuredTool' + } + + name: string + + description: string + + func: DynamicStructuredToolInput['func'] + + // @ts-ignore + schema: T + + private flowObj: any + + constructor(fields: DynamicStructuredToolInput) { + super(fields) + this.name = fields.name + this.description = fields.description + this.func = fields.func + this.returnDirect = fields.returnDirect ?? this.returnDirect + this.schema = fields.schema + } + + async call(arg: any, configArg?: RunnableConfig | Callbacks, tags?: string[], flowConfig?: IFlowConfig): Promise { + const config = parseCallbackConfigArg(configArg) + if (config.runName === undefined) { + config.runName = this.name + } + let parsed + try { + parsed = await this.schema.parseAsync(arg) + } catch (e) { + throw new ToolInputParsingException(`Received tool input did not match expected schema`, JSON.stringify(arg)) + } + const callbackManager_ = await CallbackManager.configure( + config.callbacks, + this.callbacks, + config.tags || tags, + this.tags, + config.metadata, + this.metadata, + { verbose: this.verbose } + ) + const runManager = await callbackManager_?.handleToolStart( + this.toJSON(), + typeof parsed === 'string' ? parsed : JSON.stringify(parsed), + undefined, + undefined, + undefined, + undefined, + config.runName + ) + let result + try { + result = await this._call(parsed, runManager, flowConfig) + } catch (e) { + await runManager?.handleToolError(e) + throw e + } + if (result && typeof result !== 'string') { + result = JSON.stringify(result) + } + await runManager?.handleToolEnd(result) + return result + } + + // @ts-ignore + protected _call(arg: any, runManager?: CallbackManagerForToolRun, flowConfig?: IFlowConfig): Promise { + let flowConfiguration: ICommonObject = {} + if (typeof arg === 'object' && Object.keys(arg).length) { + for (const item in arg) { + flowConfiguration[`$${item}`] = arg[item] + } + } + + // inject flow properties + if (this.flowObj) { + flowConfiguration['$flow'] = { ...this.flowObj, ...flowConfig } + } + + return this.func!(arg as any, runManager, flowConfiguration) + } + + setFlowObject(flow: any) { + this.flowObj = flow + } +} class Retriever_Tools implements INode { label: string @@ -22,7 +131,7 @@ class Retriever_Tools implements INode { constructor() { this.label = 'Retriever Tool' this.name = 'retrieverTool' - this.version = 2.0 + this.version = 3.0 this.type = 'RetrieverTool' this.icon = 'retrievertool.svg' this.category = 'Tools' @@ -53,23 +162,48 @@ class Retriever_Tools implements INode { name: 'returnSourceDocuments', type: 'boolean', optional: true + }, + { + label: 'Additional Metadata Filter', + name: 'retrieverToolMetadataFilter', + type: 'json', + description: 'Add additional metadata filter on top of the existing filter from vector store', + optional: true, + additionalParams: true, + hint: { + label: 'What can you filter?', + value: howToUse + } } ] } - async init(nodeData: INodeData): Promise { + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const name = nodeData.inputs?.name as string const description = nodeData.inputs?.description as string const retriever = nodeData.inputs?.retriever as BaseRetriever const returnSourceDocuments = nodeData.inputs?.returnSourceDocuments as boolean + const retrieverToolMetadataFilter = nodeData.inputs?.retrieverToolMetadataFilter const input = { name, description } - const func = async ({ input }: { input: string }, runManager?: CallbackManagerForToolRun) => { - const docs = await retriever.getRelevantDocuments(input, runManager?.getChild('retriever')) + const flow = { chatflowId: options.chatflowid } + + const func = async ({ input }: { input: string }, _?: CallbackManagerForToolRun, flowConfig?: IFlowConfig) => { + if (retrieverToolMetadataFilter) { + const flowObj = flowConfig + + const metadatafilter = + typeof retrieverToolMetadataFilter === 'object' ? retrieverToolMetadataFilter : JSON.parse(retrieverToolMetadataFilter) + const newMetadataFilter = resolveFlowObjValue(metadatafilter, flowObj) + + const vectorStore = (retriever as VectorStoreRetriever).vectorStore + vectorStore.filter = newMetadataFilter + } + const docs = await retriever.invoke(input) const content = docs.map((doc) => doc.pageContent).join('\n\n') const sourceDocuments = JSON.stringify(docs) return returnSourceDocuments ? content + SOURCE_DOCUMENTS_PREFIX + sourceDocuments : content @@ -80,6 +214,7 @@ class Retriever_Tools implements INode { }) as any const tool = new DynamicStructuredTool({ ...input, func, schema }) + tool.setFlowObject(flow) return tool } } diff --git a/packages/components/nodes/tools/Searxng/Searxng.ts b/packages/components/nodes/tools/Searxng/Searxng.ts index b3f647371ec..4357124904a 100644 --- a/packages/components/nodes/tools/Searxng/Searxng.ts +++ b/packages/components/nodes/tools/Searxng/Searxng.ts @@ -1,7 +1,60 @@ -import { SearxngSearch } from '@langchain/community/tools/searxng_search' +import { Tool } from '@langchain/core/tools' import { INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' +const defaultDesc = + 'A meta search engine. Useful for when you need to answer questions about current events. Input should be a search query. Output is a JSON array of the query results' +const defaultName = 'searxng-search' + +interface SearxngResults { + query: string + number_of_results: number + results: Array<{ + url: string + title: string + content: string + img_src: string + engine: string + parsed_url: Array + template: string + engines: Array + positions: Array + score: number + category: string + pretty_url: string + open_group?: boolean + close_group?: boolean + }> + answers: Array + corrections: Array + infoboxes: Array<{ + infobox: string + content: string + engine: string + engines: Array + }> + suggestions: Array + unresponsive_engines: Array +} + +interface SearxngCustomHeaders { + [key: string]: string +} + +interface SearxngSearchParams { + numResults?: number + categories?: string + engines?: string + language?: string + pageNumber?: number + timeRange?: number + format?: string + resultsOnNewTab?: 0 | 1 + imageProxy?: boolean + autocomplete?: string + safesearch?: 0 | 1 | 2 +} + class Searxng_Tools implements INode { label: string name: string @@ -16,7 +69,7 @@ class Searxng_Tools implements INode { constructor() { this.label = 'SearXNG' this.name = 'searXNG' - this.version = 1.0 + this.version = 3.0 this.type = 'SearXNG' this.icon = 'SearXNG.svg' this.category = 'Tools' @@ -26,7 +79,47 @@ class Searxng_Tools implements INode { label: 'Base URL', name: 'apiBase', type: 'string', - default: 'http://searxng:8080' + default: 'http://localhost:8080' + }, + { + label: 'Tool Name', + name: 'toolName', + type: 'string', + default: defaultName + }, + { + label: 'Tool Description', + name: 'toolDescription', + type: 'string', + rows: 4, + default: defaultDesc + }, + { + label: 'Headers', + name: 'headers', + type: 'json', + description: 'Custom headers for the request', + optional: true, + additionalParams: true + }, + { + label: 'Format', + name: 'format', + type: 'options', + options: [ + { + label: 'JSON', + name: 'json' + }, + { + label: 'HTML', + name: 'html' + } + ], + default: 'json', + description: + 'Format of the response. You need to enable search formats in settings.yml. Refer to SearXNG Setup Guide for more details.', + additionalParams: true }, { label: 'Categories', @@ -86,34 +179,162 @@ class Searxng_Tools implements INode { async init(nodeData: INodeData, _: string): Promise { const apiBase = nodeData.inputs?.apiBase as string + const headers = nodeData.inputs?.headers as string const categories = nodeData.inputs?.categories as string const engines = nodeData.inputs?.engines as string const language = nodeData.inputs?.language as string - const pageno = nodeData.inputs?.pageno as number + const pageno = nodeData.inputs?.pageno as string const time_range = nodeData.inputs?.time_range as string const safesearch = nodeData.inputs?.safesearch as 0 | 1 | 2 | undefined - const format = 'json' as 'json' - - const params = { - format, - categories, - engines, - language, - pageno, - time_range, - safesearch - } + const format = nodeData.inputs?.format as string + const toolName = nodeData.inputs?.toolName as string + const toolDescription = nodeData.inputs?.toolDescription as string + + const params: SearxngSearchParams = {} - const headers = {} + if (categories) params.categories = categories + if (engines) params.engines = engines + if (language) params.language = language + if (pageno) params.pageNumber = parseFloat(pageno) + if (time_range) params.timeRange = parseFloat(time_range) + if (safesearch) params.safesearch = safesearch + if (format) params.format = format + + let customHeaders = undefined + if (headers) { + customHeaders = typeof headers === 'string' ? JSON.parse(headers) : headers + } const tool = new SearxngSearch({ apiBase, params, - headers + headers: customHeaders, + toolName, + toolDescription }) return tool } } +class SearxngSearch extends Tool { + static lc_name() { + return 'SearxngSearch' + } + + name = defaultName + + description = defaultDesc + + protected apiBase?: string + + protected params?: SearxngSearchParams = { + numResults: 10, + pageNumber: 1, + imageProxy: true, + safesearch: 0 + } + + protected headers?: SearxngCustomHeaders + + get lc_secrets(): { [key: string]: string } | undefined { + return { + apiBase: 'SEARXNG_API_BASE' + } + } + + constructor({ + apiBase, + params, + headers, + toolName, + toolDescription + }: { + apiBase?: string + params?: SearxngSearchParams + headers?: SearxngCustomHeaders + toolName?: string + toolDescription?: string + }) { + super(...arguments) + + this.apiBase = apiBase + this.headers = { 'content-type': 'application/json', ...headers } + + if (!this.apiBase) { + throw new Error(`SEARXNG_API_BASE not set. You can set it as "SEARXNG_API_BASE" in your environment variables.`) + } + + if (params) { + this.params = { ...this.params, ...params } + } + + if (toolName) { + this.name = toolName + } + + if (toolDescription) { + this.description = toolDescription + } + } + + protected buildUrl

(path: string, parameters: P, baseUrl: string): string { + const nonUndefinedParams: [string, string][] = Object.entries(parameters) + .filter(([_, value]) => value !== undefined) + .map(([key, value]) => [key, value.toString()]) // Avoid string conversion + const searchParams = new URLSearchParams(nonUndefinedParams) + return `${baseUrl}/${path}?${searchParams}` + } + + async _call(input: string): Promise { + const queryParams = { + q: input, + ...this.params + } + const url = this.buildUrl('search', queryParams, this.apiBase as string) + + const resp = await fetch(url, { + method: 'POST', + headers: this.headers, + signal: AbortSignal.timeout(5 * 1000) // 5 seconds + }) + + if (!resp.ok) { + throw new Error(resp.statusText) + } + + const res: SearxngResults = await resp.json() + + if (!res.results.length && !res.answers.length && !res.infoboxes.length && !res.suggestions.length) { + return 'No good results found.' + } else if (res.results.length) { + const response: string[] = [] + + res.results.forEach((r) => { + response.push( + JSON.stringify({ + title: r.title || '', + link: r.url || '', + snippet: r.content || '' + }) + ) + }) + + return response.slice(0, this.params?.numResults).toString() + } else if (res.answers.length) { + return res.answers[0] + } else if (res.infoboxes.length) { + return res.infoboxes[0]?.content.replaceAll(/<[^>]+>/gi, '') + } else if (res.suggestions.length) { + let suggestions = 'Suggestions: ' + res.suggestions.forEach((s) => { + suggestions += `${s}, ` + }) + return suggestions + } else { + return 'No good results found.' + } + } +} + module.exports = { nodeClass: Searxng_Tools } diff --git a/packages/components/nodes/tools/StripeTool/StripeTool.ts b/packages/components/nodes/tools/StripeTool/StripeTool.ts new file mode 100644 index 00000000000..df6c17a9643 --- /dev/null +++ b/packages/components/nodes/tools/StripeTool/StripeTool.ts @@ -0,0 +1,271 @@ +import { StripeAgentToolkit } from '@stripe/agent-toolkit/langchain' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { convertMultiOptionsToStringArray, getCredentialData, getCredentialParam } from '../../../src/utils' + +class StripeTool_Tools implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + badge?: string + + constructor() { + this.label = 'StripeAgentTool' + this.name = 'stripeAgentTool' + this.version = 1.0 + this.type = 'stripeAgentTool' + this.icon = 'stripe.png' + this.category = 'Tools' + this.description = 'Use Stripe Agent function calling for financial transactions' + this.badge = 'BETA' + this.inputs = [ + { + label: 'Payment Links', + name: 'paymentLinks', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Products', + name: 'products', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Prices', + name: 'prices', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Balance', + name: 'balance', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Invoice Items', + name: 'invoiceItems', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Invoices', + name: 'invoices', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + }, + { + label: 'Customers', + name: 'customers', + type: 'multiOptions', + options: [ + { + label: 'Create', + name: 'create' + }, + { + label: 'Update', + name: 'update' + }, + { + label: 'Read', + name: 'read' + } + ], + optional: true, + additionalParams: true + } + ] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['stripeApi'] + } + this.baseClasses = [this.type, 'Tool'] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const stripeApiToken = getCredentialParam('stripeApiToken', credentialData, nodeData) + + const _paymentLinks = nodeData.inputs?.paymentLinks as string + let paymentLinks: string[] = convertMultiOptionsToStringArray(_paymentLinks) + + const _products = nodeData.inputs?.products as string + let products: string[] = convertMultiOptionsToStringArray(_products) + + const _prices = nodeData.inputs?.prices as string + let prices: string[] = convertMultiOptionsToStringArray(_prices) + + const _balance = nodeData.inputs?.balance as string + let balance: string[] = convertMultiOptionsToStringArray(_balance) + + const _invoiceItems = nodeData.inputs?.invoiceItems as string + let invoiceItems: string[] = convertMultiOptionsToStringArray(_invoiceItems) + + const _invoices = nodeData.inputs?.invoices as string + let invoices: string[] = convertMultiOptionsToStringArray(_invoices) + + const _customers = nodeData.inputs?.customers as string + let customers: string[] = convertMultiOptionsToStringArray(_customers) + + const actionObj: any = {} + if (paymentLinks.length > 0) { + actionObj['paymentLinks'] = {} + if (paymentLinks.includes('create')) actionObj['paymentLinks'].create = true + if (paymentLinks.includes('read')) actionObj['paymentLinks'].read = true + if (paymentLinks.includes('update')) actionObj['paymentLinks'].update = true + } + if (products.length > 0) { + actionObj['products'] = {} + if (products.includes('create')) actionObj['products'].create = true + if (products.includes('read')) actionObj['products'].read = true + if (products.includes('update')) actionObj['products'].update = true + } + if (prices.length > 0) { + actionObj['prices'] = {} + if (prices.includes('create')) actionObj['prices'].create = true + if (prices.includes('read')) actionObj['prices'].read = true + if (prices.includes('update')) actionObj['prices'].update = true + } + if (balance.length > 0) { + actionObj['balance'] = {} + if (balance.includes('create')) actionObj['balance'].create = true + if (balance.includes('read')) actionObj['balance'].read = true + if (balance.includes('update')) actionObj['balance'].update = true + } + if (invoiceItems.length > 0) { + actionObj['invoiceItems'] = {} + if (invoiceItems.includes('create')) actionObj['invoiceItems'].create = true + if (invoiceItems.includes('read')) actionObj['invoiceItems'].read = true + if (invoiceItems.includes('update')) actionObj['invoiceItems'].update = true + } + if (invoices.length > 0) { + actionObj['invoices'] = {} + if (invoices.includes('create')) actionObj['invoices'].create = true + if (invoices.includes('read')) actionObj['invoices'].read = true + if (invoices.includes('update')) actionObj['invoices'].update = true + } + if (customers.length > 0) { + actionObj['customers'] = {} + if (customers.includes('create')) actionObj['customers'].create = true + if (customers.includes('read')) actionObj['customers'].read = true + if (customers.includes('update')) actionObj['customers'].update = true + } + + const stripeAgentToolkit = new StripeAgentToolkit({ + secretKey: stripeApiToken, + configuration: { + actions: actionObj + } + }) + + const stripeTool = stripeAgentToolkit.getTools() + for (const tool of stripeTool) { + // convert tool name into small letter, and space to underscore, ex: Create Payment Link => create_payment_link + tool.name = tool.name.split(' ').join('_').toLowerCase() + } + + return stripeTool + } +} + +module.exports = { nodeClass: StripeTool_Tools } diff --git a/packages/components/nodes/tools/StripeTool/stripe.png b/packages/components/nodes/tools/StripeTool/stripe.png new file mode 100644 index 00000000000..b73ff0db395 Binary files /dev/null and b/packages/components/nodes/tools/StripeTool/stripe.png differ diff --git a/packages/components/nodes/tools/TavilyAPI/TavilyAPI.ts b/packages/components/nodes/tools/TavilyAPI/TavilyAPI.ts new file mode 100644 index 00000000000..68e44c54670 --- /dev/null +++ b/packages/components/nodes/tools/TavilyAPI/TavilyAPI.ts @@ -0,0 +1,42 @@ +import { TavilySearchResults } from '@langchain/community/tools/tavily_search' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class TavilyAPI_Tools implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'Tavily API' + this.name = 'tavilyAPI' + this.version = 1.0 + this.type = 'TavilyAPI' + this.icon = 'tavily.svg' + this.category = 'Tools' + this.description = 'Wrapper around TavilyAPI - a real-time API to access Google search results' + this.inputs = [] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['tavilyApi'] + } + this.baseClasses = [this.type, ...getBaseClasses(TavilySearchResults)] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const tavilyApiKey = getCredentialParam('tavilyApiKey', credentialData, nodeData) + return new TavilySearchResults({ apiKey: tavilyApiKey }) + } +} + +module.exports = { nodeClass: TavilyAPI_Tools } diff --git a/packages/components/nodes/tools/TavilyAPI/tavily.svg b/packages/components/nodes/tools/TavilyAPI/tavily.svg new file mode 100644 index 00000000000..141d1d3d6e5 --- /dev/null +++ b/packages/components/nodes/tools/TavilyAPI/tavily.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/nodes/tools/WolframAlpha/WolframAlpha.ts b/packages/components/nodes/tools/WolframAlpha/WolframAlpha.ts new file mode 100644 index 00000000000..8342c1295e6 --- /dev/null +++ b/packages/components/nodes/tools/WolframAlpha/WolframAlpha.ts @@ -0,0 +1,44 @@ +import { WolframAlphaTool } from '@langchain/community/tools/wolframalpha' +import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' + +class WolframAlpha_Tools implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + credential: INodeParams + inputs: INodeParams[] + + constructor() { + this.label = 'WolframAlpha' + this.name = 'wolframAlpha' + this.version = 1.0 + this.type = 'WolframAlpha' + this.icon = 'wolframalpha.png' + this.category = 'Tools' + this.description = 'Wrapper around WolframAlpha - a powerful computational knowledge engine' + this.inputs = [] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['wolframAlphaAppId'] + } + this.baseClasses = [this.type, ...getBaseClasses(WolframAlphaTool)] + } + + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const wolframAlphaAppId = getCredentialParam('wolframAlphaAppId', credentialData, nodeData) + return new WolframAlphaTool({ + appid: wolframAlphaAppId + }) + } +} + +module.exports = { nodeClass: WolframAlpha_Tools } diff --git a/packages/components/nodes/tools/WolframAlpha/wolframalpha.png b/packages/components/nodes/tools/WolframAlpha/wolframalpha.png new file mode 100644 index 00000000000..77ef000be62 Binary files /dev/null and b/packages/components/nodes/tools/WolframAlpha/wolframalpha.png differ diff --git a/packages/components/nodes/utilities/CustomFunction/CustomFunction.ts b/packages/components/nodes/utilities/CustomFunction/CustomFunction.ts index 4ba3f30d24d..079f186ba22 100644 --- a/packages/components/nodes/utilities/CustomFunction/CustomFunction.ts +++ b/packages/components/nodes/utilities/CustomFunction/CustomFunction.ts @@ -1,7 +1,9 @@ -import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' -import { NodeVM } from 'vm2' +import { flatten } from 'lodash' +import { type StructuredTool } from '@langchain/core/tools' +import { NodeVM } from '@flowiseai/nodevm' import { DataSource } from 'typeorm' import { availableDependencies, defaultAllowBuiltInDep, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' class CustomFunction_Utilities implements INode { label: string @@ -19,7 +21,7 @@ class CustomFunction_Utilities implements INode { constructor() { this.label = 'Custom JS Function' this.name = 'customFunction' - this.version = 2.0 + this.version = 3.0 this.type = 'CustomFunction' this.icon = 'customfunction.svg' this.category = 'Utilities' @@ -43,6 +45,14 @@ class CustomFunction_Utilities implements INode { optional: true, placeholder: 'My Function' }, + { + label: 'Additional Tools', + description: 'Tools can be used in the function with $tools.{tool_name}.invoke(args)', + name: 'tools', + type: 'Tool', + list: true, + optional: true + }, { label: 'Javascript Function', name: 'javascriptFunction', @@ -71,12 +81,14 @@ class CustomFunction_Utilities implements INode { const functionInputVariablesRaw = nodeData.inputs?.functionInputVariables const appDataSource = options.appDataSource as DataSource const databaseEntities = options.databaseEntities as IDatabaseEntity + const tools = Object.fromEntries((flatten(nodeData.inputs?.tools) as StructuredTool[])?.map((tool) => [tool.name, tool]) ?? []) const variables = await getVars(appDataSource, databaseEntities, nodeData) const flow = { chatflowId: options.chatflowid, sessionId: options.sessionId, chatId: options.chatId, + rawOutput: options.rawOutput || '', input } @@ -106,9 +118,17 @@ class CustomFunction_Utilities implements INode { } } - let sandbox: any = { $input: input } + let sandbox: any = { + $input: input, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } sandbox['$vars'] = prepareSandboxVars(variables) sandbox['$flow'] = flow + sandbox['$tools'] = tools if (Object.keys(inputVars).length) { for (const item in inputVars) { @@ -128,7 +148,10 @@ class CustomFunction_Utilities implements INode { require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(nodeVMOptions) diff --git a/packages/components/nodes/utilities/IfElseFunction/IfElseFunction.ts b/packages/components/nodes/utilities/IfElseFunction/IfElseFunction.ts index 005f2a01976..08b81163652 100644 --- a/packages/components/nodes/utilities/IfElseFunction/IfElseFunction.ts +++ b/packages/components/nodes/utilities/IfElseFunction/IfElseFunction.ts @@ -1,7 +1,7 @@ -import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' -import { NodeVM } from 'vm2' +import { NodeVM } from '@flowiseai/nodevm' import { DataSource } from 'typeorm' import { availableDependencies, defaultAllowBuiltInDep, getVars, handleEscapeCharacters, prepareSandboxVars } from '../../../src/utils' +import { ICommonObject, IDatabaseEntity, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' class IfElseFunction_Utilities implements INode { label: string @@ -119,7 +119,14 @@ class IfElseFunction_Utilities implements INode { } } - let sandbox: any = { $input: input } + let sandbox: any = { + $input: input, + util: undefined, + Symbol: undefined, + child_process: undefined, + fs: undefined, + process: undefined + } sandbox['$vars'] = prepareSandboxVars(variables) sandbox['$flow'] = flow @@ -141,7 +148,10 @@ class IfElseFunction_Utilities implements INode { require: { external: { modules: deps }, builtin: builtinDeps - } + }, + eval: false, + wasm: false, + timeout: 10000 } as any const vm = new NodeVM(nodeVMOptions) diff --git a/packages/components/nodes/utilities/SetVariable/SetVariable.ts b/packages/components/nodes/utilities/SetVariable/SetVariable.ts index 00ada3fd3f6..227b673ee6d 100644 --- a/packages/components/nodes/utilities/SetVariable/SetVariable.ts +++ b/packages/components/nodes/utilities/SetVariable/SetVariable.ts @@ -16,7 +16,7 @@ class SetVariable_Utilities implements INode { constructor() { this.label = 'Set Variable' this.name = 'setVariable' - this.version = 2.0 + this.version = 2.1 this.type = 'SetVariable' this.icon = 'setvar.svg' this.category = 'Utilities' @@ -36,6 +36,14 @@ class SetVariable_Utilities implements INode { name: 'variableName', type: 'string', placeholder: 'var1' + }, + { + label: 'Show Output', + name: 'showOutput', + description: 'Show the output result in the Prediction API response', + type: 'boolean', + optional: true, + additionalParams: true } ] this.outputs = [ diff --git a/packages/components/nodes/vectorstores/Chroma/Chroma.ts b/packages/components/nodes/vectorstores/Chroma/Chroma.ts index d71f097682f..62f4b8a644b 100644 --- a/packages/components/nodes/vectorstores/Chroma/Chroma.ts +++ b/packages/components/nodes/vectorstores/Chroma/Chroma.ts @@ -111,6 +111,8 @@ class Chroma_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) + const chromaTenant = getCredentialParam('chromaTenant', credentialData, nodeData) + const chromaDatabase = getCredentialParam('chromaDatabase', credentialData, nodeData) const flattenDocs = docs && docs.length ? flatten(docs) : [] const finalDocs = [] @@ -124,9 +126,13 @@ class Chroma_VectorStores implements INode { collectionName: string url?: string chromaApiKey?: string + chromaTenant?: string + chromaDatabase?: string } = { collectionName } if (chromaURL) obj.url = chromaURL if (chromaApiKey) obj.chromaApiKey = chromaApiKey + if (chromaTenant) obj.chromaTenant = chromaTenant + if (chromaDatabase) obj.chromaDatabase = chromaDatabase try { if (recordManager) { @@ -159,14 +165,20 @@ class Chroma_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) + const chromaTenant = getCredentialParam('chromaTenant', credentialData, nodeData) + const chromaDatabase = getCredentialParam('chromaDatabase', credentialData, nodeData) const obj: { collectionName: string url?: string chromaApiKey?: string + chromaTenant?: string + chromaDatabase?: string } = { collectionName } if (chromaURL) obj.url = chromaURL if (chromaApiKey) obj.chromaApiKey = chromaApiKey + if (chromaTenant) obj.chromaTenant = chromaTenant + if (chromaDatabase) obj.chromaDatabase = chromaDatabase try { if (recordManager) { @@ -199,6 +211,8 @@ class Chroma_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const chromaApiKey = getCredentialParam('chromaApiKey', credentialData, nodeData) + const chromaTenant = getCredentialParam('chromaTenant', credentialData, nodeData) + const chromaDatabase = getCredentialParam('chromaDatabase', credentialData, nodeData) const chromaMetadataFilter = nodeData.inputs?.chromaMetadataFilter @@ -206,10 +220,14 @@ class Chroma_VectorStores implements INode { collectionName: string url?: string chromaApiKey?: string + chromaTenant?: string + chromaDatabase?: string filter?: object | undefined } = { collectionName } if (chromaURL) obj.url = chromaURL if (chromaApiKey) obj.chromaApiKey = chromaApiKey + if (chromaTenant) obj.chromaTenant = chromaTenant + if (chromaDatabase) obj.chromaDatabase = chromaDatabase if (chromaMetadataFilter) { const metadatafilter = typeof chromaMetadataFilter === 'object' ? chromaMetadataFilter : JSON.parse(chromaMetadataFilter) obj.filter = metadatafilter diff --git a/packages/components/nodes/vectorstores/Chroma/core.ts b/packages/components/nodes/vectorstores/Chroma/core.ts index c5fa92e7514..2e538fbb976 100644 --- a/packages/components/nodes/vectorstores/Chroma/core.ts +++ b/packages/components/nodes/vectorstores/Chroma/core.ts @@ -10,6 +10,8 @@ interface ChromaAuth { export class ChromaExtended extends Chroma { chromaApiKey?: string + chromaTenant?: string + chromaDatabase?: string constructor(embeddings: Embeddings, args: ChromaLibArgs & Partial) { super(embeddings, args) @@ -35,6 +37,12 @@ export class ChromaExtended extends Chroma { } } } + if (this.chromaTenant) { + obj.tenant = this.chromaTenant + } + if (this.chromaDatabase) { + obj.database = this.chromaDatabase + } this.index = new ChromaClient(obj) } try { diff --git a/packages/components/nodes/vectorstores/Couchbase/Couchbase.ts b/packages/components/nodes/vectorstores/Couchbase/Couchbase.ts index 3dd79d751cd..83c45271e6e 100644 --- a/packages/components/nodes/vectorstores/Couchbase/Couchbase.ts +++ b/packages/components/nodes/vectorstores/Couchbase/Couchbase.ts @@ -1,7 +1,3 @@ -/* -* Temporary disabled due to the incompatibility with the docker node-alpine: -* https://github.com/FlowiseAI/Flowise/pull/2303 - import { flatten } from 'lodash' import { Embeddings } from '@langchain/core/embeddings' import { Document } from '@langchain/core/documents' @@ -231,4 +227,3 @@ class Couchbase_VectorStores implements INode { } module.exports = { nodeClass: Couchbase_VectorStores } -*/ diff --git a/packages/components/nodes/vectorstores/DocumentStoreVS/DocStoreVector.ts b/packages/components/nodes/vectorstores/DocumentStoreVS/DocStoreVector.ts index 6ce47f71648..ba2660e0b2a 100644 --- a/packages/components/nodes/vectorstores/DocumentStoreVS/DocStoreVector.ts +++ b/packages/components/nodes/vectorstores/DocumentStoreVS/DocStoreVector.ts @@ -12,7 +12,6 @@ class DocStore_VectorStores implements INode { baseClasses: string[] inputs: INodeParams[] outputs: INodeOutputsValue[] - badge: string constructor() { this.label = 'Document Store (Vector)' @@ -20,7 +19,6 @@ class DocStore_VectorStores implements INode { this.version = 1.0 this.type = 'DocumentStoreVS' this.icon = 'dstore.svg' - this.badge = 'New' this.category = 'Vector Stores' this.description = `Search and retrieve documents from Document Store` this.baseClasses = [this.type] diff --git a/packages/components/nodes/vectorstores/Elasticsearch/Elasticsearch.ts b/packages/components/nodes/vectorstores/Elasticsearch/Elasticsearch.ts index d752928e7ab..9cd9969e74f 100644 --- a/packages/components/nodes/vectorstores/Elasticsearch/Elasticsearch.ts +++ b/packages/components/nodes/vectorstores/Elasticsearch/Elasticsearch.ts @@ -138,7 +138,14 @@ class Elasticsearch_VectorStores implements INode { }) // end of workaround - const elasticSearchClientArgs = prepareClientArgs(endPoint, cloudId, credentialData, nodeData, similarityMeasure, indexName) + const { elasticClient, elasticSearchClientArgs } = prepareClientArgs( + endPoint, + cloudId, + credentialData, + nodeData, + similarityMeasure, + indexName + ) const vectorStore = new ElasticVectorSearch(embeddings, elasticSearchClientArgs) try { @@ -155,9 +162,11 @@ class Elasticsearch_VectorStores implements INode { vectorStoreName: indexName } }) + await elasticClient.close() return res } else { await vectorStore.addDocuments(finalDocs) + await elasticClient.close() return { numAdded: finalDocs.length, addedDocs: finalDocs } } } catch (e) { @@ -174,7 +183,14 @@ class Elasticsearch_VectorStores implements INode { const endPoint = getCredentialParam('endpoint', credentialData, nodeData) const cloudId = getCredentialParam('cloudId', credentialData, nodeData) - const elasticSearchClientArgs = prepareClientArgs(endPoint, cloudId, credentialData, nodeData, similarityMeasure, indexName) + const { elasticClient, elasticSearchClientArgs } = prepareClientArgs( + endPoint, + cloudId, + credentialData, + nodeData, + similarityMeasure, + indexName + ) const vectorStore = new ElasticVectorSearch(embeddings, elasticSearchClientArgs) try { @@ -186,8 +202,10 @@ class Elasticsearch_VectorStores implements INode { await vectorStore.delete({ ids: keys }) await recordManager.deleteKeys(keys) + await elasticClient.close() } else { await vectorStore.delete({ ids }) + await elasticClient.close() } } catch (e) { throw new Error(e) @@ -206,8 +224,22 @@ class Elasticsearch_VectorStores implements INode { const k = topK ? parseFloat(topK) : 4 const output = nodeData.outputs?.output as string - const elasticSearchClientArgs = prepareClientArgs(endPoint, cloudId, credentialData, nodeData, similarityMeasure, indexName) + const { elasticClient, elasticSearchClientArgs } = prepareClientArgs( + endPoint, + cloudId, + credentialData, + nodeData, + similarityMeasure, + indexName + ) const vectorStore = await ElasticVectorSearch.fromExistingIndex(embeddings, elasticSearchClientArgs) + const originalSimilaritySearchVectorWithScore = vectorStore.similaritySearchVectorWithScore + + vectorStore.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { + const results = await originalSimilaritySearchVectorWithScore.call(vectorStore, query, k, filter) + await elasticClient.close() + return results + } if (output === 'retriever') { return vectorStore.asRetriever(k) @@ -289,12 +321,17 @@ const prepareClientArgs = ( similarity: 'l2_norm' } } + + const elasticClient = new Client(elasticSearchClientOptions) const elasticSearchClientArgs: ElasticClientArgs = { - client: new Client(elasticSearchClientOptions), + client: elasticClient, indexName: indexName, vectorSearchOptions: vectorSearchOptions } - return elasticSearchClientArgs + return { + elasticClient, + elasticSearchClientArgs + } } module.exports = { nodeClass: Elasticsearch_VectorStores } diff --git a/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.png b/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.png new file mode 100644 index 00000000000..7bbb458fa99 Binary files /dev/null and b/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.png differ diff --git a/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.ts b/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.ts new file mode 100644 index 00000000000..eed428cdbcc --- /dev/null +++ b/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.ts @@ -0,0 +1,271 @@ +import { getCredentialData, getCredentialParam } from '../../../src' +import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams } from '../../../src/Interface' +import { Meilisearch } from 'meilisearch' +import { MeilisearchRetriever } from './core' +import { flatten } from 'lodash' +import { Document } from '@langchain/core/documents' +import { v4 as uuidv4 } from 'uuid' +import { Embeddings } from '@langchain/core/embeddings' + +class MeilisearchRetriever_node implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + credential: INodeParams + outputs: INodeOutputsValue[] + author?: string + + constructor() { + this.label = 'Meilisearch' + this.name = 'meilisearch' + this.version = 1.0 + this.type = 'Meilisearch' + this.icon = 'Meilisearch.png' + this.category = 'Vector Stores' + this.description = `Upsert embedded data and perform similarity search upon query using Meilisearch hybrid search functionality` + this.baseClasses = ['BaseRetriever'] + this.credential = { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['meilisearchApi'] + } + this.inputs = [ + { + label: 'Document', + name: 'document', + type: 'Document', + list: true, + optional: true + }, + { + label: 'Embeddings', + name: 'embeddings', + type: 'Embeddings' + }, + { + label: 'Host', + name: 'host', + type: 'string', + description: "This is the URL for the desired Meilisearch instance, the URL must not end with a '/'" + }, + { + label: 'Index Uid', + name: 'indexUid', + type: 'string', + description: 'UID for the index to answer from' + }, + { + label: 'Delete Index if exists', + name: 'deleteIndex', + type: 'boolean', + optional: true + }, + { + label: 'Top K', + name: 'K', + type: 'number', + description: 'number of top searches to return as context, default is 4', + additionalParams: true, + optional: true + }, + { + label: 'Semantic Ratio', + name: 'semanticRatio', + type: 'number', + description: 'percentage of sematic reasoning in meilisearch hybrid search, default is 0.75', + additionalParams: true, + optional: true + }, + { + label: 'Search Filter', + name: 'searchFilter', + type: 'string', + description: 'search filter to apply on searchable attributes', + additionalParams: true, + optional: true + } + ] + this.outputs = [ + { + label: 'Meilisearch Retriever', + name: 'MeilisearchRetriever', + description: 'retrieve answers', + baseClasses: this.baseClasses + } + ] + this.outputs = [ + { + label: 'Meilisearch Retriever', + name: 'retriever', + baseClasses: this.baseClasses + } + ] + } + //@ts-ignore + vectorStoreMethods = { + async upsert(nodeData: INodeData, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const meilisearchAdminApiKey = getCredentialParam('meilisearchAdminApiKey', credentialData, nodeData) + const docs = nodeData.inputs?.document as Document[] + const host = nodeData.inputs?.host as string + const indexUid = nodeData.inputs?.indexUid as string + const deleteIndex = nodeData.inputs?.deleteIndex as boolean + const embeddings = nodeData.inputs?.embeddings as Embeddings + let embeddingDimension: number = 384 + const client = new Meilisearch({ + host: host, + apiKey: meilisearchAdminApiKey + }) + const flattenDocs = docs && docs.length ? flatten(docs) : [] + const finalDocs = [] + for (let i = 0; i < flattenDocs.length; i += 1) { + if (flattenDocs[i] && flattenDocs[i].pageContent) { + const uniqueId = uuidv4() + const { pageContent, metadata } = flattenDocs[i] + const docEmbedding = await embeddings.embedQuery(pageContent) + embeddingDimension = docEmbedding.length + const documentForIndexing = { + pageContent, + metadata, + objectID: uniqueId, + _vectors: { + ollama: { + embeddings: docEmbedding, + regenerate: false + } + } + } + finalDocs.push(documentForIndexing) + } + } + let taskUid_created: number = 0 + + if (deleteIndex) { + try { + const deleteResponse = await client.deleteIndex(indexUid) + taskUid_created = deleteResponse.taskUid + let deleteTaskStatus = await client.getTask(taskUid_created) + + while (deleteTaskStatus.status !== 'succeeded') { + deleteTaskStatus = await client.getTask(taskUid_created) + if (deleteTaskStatus.error !== null || deleteTaskStatus.status === 'failed') { + throw new Error('Error during index deletion task: ' + deleteTaskStatus.error) + } + } + } catch (error) { + console.error(error) + console.warn('Error occured when deleting your index, if it did not exist, we will create one for you... ') + } + } + + let index: any + + try { + index = await client.getIndex(indexUid) + } catch (error) { + console.warn('Index not found, creating a new index...') + + try { + const createResponse = await client.createIndex(indexUid, { primaryKey: 'objectID' }) + taskUid_created = createResponse.taskUid + let createTaskStatus = await client.getTask(taskUid_created) + + while (createTaskStatus.status !== 'succeeded') { + createTaskStatus = await client.getTask(taskUid_created) + if (createTaskStatus.error !== null || createTaskStatus.status === 'failed') { + throw new Error('Error during index creation task: ' + createTaskStatus.error) + } + } + index = await client.getIndex(indexUid) + } catch (taskError) { + console.error('Error during index creation process:', taskError) + } + } + + try { + await index.updateFilterableAttributes(['metadata']) + await index.updateSettings({ + embedders: { + ollama: { + source: 'userProvided', + dimensions: embeddingDimension + } + } + }) + const addResponse = await index.addDocuments(finalDocs) + taskUid_created = addResponse.taskUid + let AddTaskStatus = await client.getTask(taskUid_created) + while (AddTaskStatus.status !== 'succeeded') { + AddTaskStatus = await client.getTask(taskUid_created) + if (AddTaskStatus.error !== null || AddTaskStatus.status === 'failed') { + throw new Error('Error during documents adding task: ' + AddTaskStatus.error) + } + } + index = await client.getIndex(indexUid) + } catch (error) { + console.error('Error occurred while adding documents:', error) + } + return { numAdded: finalDocs.length, addedDocs: finalDocs } + } + } + async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { + const credentialData = await getCredentialData(nodeData.credential ?? '', options) + const meilisearchSearchApiKey = getCredentialParam('meilisearchSearchApiKey', credentialData, nodeData) + const meilisearchAdminApiKey = getCredentialParam('meilisearchAdminApiKey', credentialData, nodeData) + const host = nodeData.inputs?.host as string + const indexUid = nodeData.inputs?.indexUid as string + const K = nodeData.inputs?.K as string + const semanticRatio = nodeData.inputs?.semanticRatio as string + const embeddings = nodeData.inputs?.embeddings as Embeddings + const searchFilter = nodeData.inputs?.searchFilter as string + + const experimentalEndpoint = host + '/experimental-features/' + const token = meilisearchAdminApiKey + + const experimentalOptions = { + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + }, + body: JSON.stringify({ + vectorStore: true + }) + } + + try { + const response = await fetch(experimentalEndpoint, experimentalOptions) + if (!response.ok) { + throw new Error(`Failed to enable vectorStore: ${response.statusText}`) + } + + const data = await response.json() + + const vectorStoreEnabled = data.vectorStore + if (vectorStoreEnabled !== true) { + throw new Error('Failed to enable vectorStore, vectorStrore property returned is not true') + } + } catch (error) { + console.error('Error enabling vectorStore feature:', error) + } + + const hybridsearchretriever = new MeilisearchRetriever( + host, + meilisearchSearchApiKey, + indexUid, + K, + semanticRatio, + embeddings, + searchFilter + ) + return hybridsearchretriever + } +} +module.exports = { nodeClass: MeilisearchRetriever_node } diff --git a/packages/components/nodes/vectorstores/Meilisearch/core.ts b/packages/components/nodes/vectorstores/Meilisearch/core.ts new file mode 100644 index 00000000000..b3479d85982 --- /dev/null +++ b/packages/components/nodes/vectorstores/Meilisearch/core.ts @@ -0,0 +1,97 @@ +import { BaseRetriever, type BaseRetrieverInput } from '@langchain/core/retrievers' +import { Document } from '@langchain/core/documents' +import { Meilisearch } from 'meilisearch' +import { Embeddings } from '@langchain/core/embeddings' + +export interface CustomRetrieverInput extends BaseRetrieverInput {} + +export class MeilisearchRetriever extends BaseRetriever { + lc_namespace = ['langchain', 'retrievers'] + private readonly meilisearchSearchApiKey: any + private readonly host: any + private indexUid: string + private K: string + private semanticRatio: string + private embeddings: Embeddings + private searchFilter: string + constructor( + host: string, + meilisearchSearchApiKey: any, + indexUid: string, + K: string, + semanticRatio: string, + embeddings: Embeddings, + searchFilter: string, + fields?: CustomRetrieverInput + ) { + super(fields) + this.meilisearchSearchApiKey = meilisearchSearchApiKey + this.host = host + this.indexUid = indexUid + this.embeddings = embeddings + this.searchFilter = searchFilter + + if (semanticRatio == '') { + this.semanticRatio = '0.75' + } else { + let semanticRatio_Float = parseFloat(semanticRatio) + if (semanticRatio_Float > 1.0) { + this.semanticRatio = '1.0' + } else if (semanticRatio_Float < 0.0) { + this.semanticRatio = '0.0' + } else { + this.semanticRatio = semanticRatio + } + } + + if (K == '') { + K = '4' + } + this.K = K + } + + async _getRelevantDocuments(query: string): Promise { + // Pass `runManager?.getChild()` when invoking internal runnables to enable tracing + // const additionalDocs = await someOtherRunnable.invoke(params, runManager?.getChild()) + const client = new Meilisearch({ + host: this.host, + apiKey: this.meilisearchSearchApiKey + }) + + const index = await client.index(this.indexUid) + const questionEmbedding = await this.embeddings.embedQuery(query) + // Perform the search + const searchResults = await index.search(query, { + filter: this.searchFilter, + vector: questionEmbedding, + limit: parseInt(this.K), // Optional: Limit the number of results + attributesToRetrieve: ['*'], // Optional: Specify which fields to retrieve + hybrid: { + semanticRatio: parseFloat(this.semanticRatio), + embedder: 'ollama' + } + }) + const hits = searchResults.hits + let documents: Document[] = [ + new Document({ + pageContent: 'mock page', + metadata: {} + }) + ] + try { + documents = hits.map( + (hit: any) => + new Document({ + pageContent: hit.pageContent, + metadata: { + objectID: hit.objectID, + ...hit.metadata + } + }) + ) + } catch (e) { + console.error('Error occurred while adding documents:', e) + } + return documents + } +} diff --git a/packages/components/nodes/vectorstores/Milvus/Milvus.ts b/packages/components/nodes/vectorstores/Milvus/Milvus.ts index 74cf4717332..e10c2cfc5b9 100644 --- a/packages/components/nodes/vectorstores/Milvus/Milvus.ts +++ b/packages/components/nodes/vectorstores/Milvus/Milvus.ts @@ -4,7 +4,8 @@ import { Document } from '@langchain/core/documents' import { MilvusLibArgs, Milvus } from '@langchain/community/vectorstores/milvus' import { Embeddings } from '@langchain/core/embeddings' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { FLOWISE_CHATID, getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { howToUseFileUpload } from '../VectorStoreUtils' interface InsertRow { [x: string]: string | number[] @@ -27,7 +28,7 @@ class Milvus_VectorStores implements INode { constructor() { this.label = 'Milvus' this.name = 'milvus' - this.version = 1.0 + this.version = 2.1 this.type = 'Milvus' this.icon = 'milvus.svg' this.category = 'Vector Stores' @@ -64,6 +65,25 @@ class Milvus_VectorStores implements INode { name: 'milvusCollection', type: 'string' }, + { + label: 'Milvus Partition Name', + name: 'milvusPartition', + default: '_default', + type: 'string', + optional: true + }, + { + label: 'File Upload', + name: 'fileUpload', + description: 'Allow file upload on the chat', + hint: { + label: 'How to use', + value: howToUseFileUpload + }, + type: 'boolean', + additionalParams: true, + optional: true + }, { label: 'Milvus Text Field', name: 'milvusTextField', @@ -90,6 +110,46 @@ class Milvus_VectorStores implements INode { type: 'number', additionalParams: true, optional: true + }, + { + label: 'Secure', + name: 'secure', + type: 'boolean', + optional: true, + description: 'Enable secure connection to Milvus server', + additionalParams: true + }, + { + label: 'Client PEM Path', + name: 'clientPemPath', + type: 'string', + optional: true, + description: 'Path to the client PEM file', + additionalParams: true + }, + { + label: 'Client Key Path', + name: 'clientKeyPath', + type: 'string', + optional: true, + description: 'Path to the client key file', + additionalParams: true + }, + { + label: 'CA PEM Path', + name: 'caPemPath', + type: 'string', + optional: true, + description: 'Path to the root PEM file', + additionalParams: true + }, + { + label: 'Server Name', + name: 'serverName', + type: 'string', + optional: true, + description: 'Server name for the secure connection', + additionalParams: true } ] this.outputs = [ @@ -116,16 +176,41 @@ class Milvus_VectorStores implements INode { // embeddings const docs = nodeData.inputs?.document as Document[] const embeddings = nodeData.inputs?.embeddings as Embeddings + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean // credential const credentialData = await getCredentialData(nodeData.credential ?? '', options) const milvusUser = getCredentialParam('milvusUser', credentialData, nodeData) const milvusPassword = getCredentialParam('milvusPassword', credentialData, nodeData) + // tls + const secure = nodeData.inputs?.secure as boolean + const clientPemPath = nodeData.inputs?.clientPemPath as string + const clientKeyPath = nodeData.inputs?.clientKeyPath as string + const caPemPath = nodeData.inputs?.caPemPath as string + const serverName = nodeData.inputs?.serverName as string + + // partition + const partitionName = nodeData.inputs?.milvusPartition ?? '_default' + // init MilvusLibArgs const milVusArgs: MilvusLibArgs = { url: address, - collectionName: collectionName + collectionName: collectionName, + partitionName: partitionName + } + + if (secure) { + milVusArgs.clientConfig = { + address: address, + ssl: secure, + tls: { + rootCertPath: caPemPath, + certChainPath: clientPemPath, + privateKeyPath: clientKeyPath, + serverName: serverName + } + } } if (milvusUser) milVusArgs.username = milvusUser @@ -135,6 +220,9 @@ class Milvus_VectorStores implements INode { const finalDocs = [] for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { + if (isFileUploadEnabled && options.chatId) { + flattenDocs[i].metadata = { ...flattenDocs[i].metadata, [FLOWISE_CHATID]: options.chatId } + } finalDocs.push(new Document(flattenDocs[i])) } } @@ -158,8 +246,9 @@ class Milvus_VectorStores implements INode { // server setup const address = nodeData.inputs?.milvusServerUrl as string const collectionName = nodeData.inputs?.milvusCollection as string - const milvusFilter = nodeData.inputs?.milvusFilter as string + const _milvusFilter = nodeData.inputs?.milvusFilter as string const textField = nodeData.inputs?.milvusTextField as string + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean // embeddings const embeddings = nodeData.inputs?.embeddings as Embeddings @@ -176,16 +265,46 @@ class Milvus_VectorStores implements INode { const milvusUser = getCredentialParam('milvusUser', credentialData, nodeData) const milvusPassword = getCredentialParam('milvusPassword', credentialData, nodeData) + // tls + const secure = nodeData.inputs?.secure as boolean + const clientPemPath = nodeData.inputs?.clientPemPath as string + const clientKeyPath = nodeData.inputs?.clientKeyPath as string + const caPemPath = nodeData.inputs?.caPemPath as string + const serverName = nodeData.inputs?.serverName as string + + // partition + const partitionName = nodeData.inputs?.milvusPartition ?? '_default' + // init MilvusLibArgs const milVusArgs: MilvusLibArgs = { url: address, collectionName: collectionName, + partitionName: partitionName, textField: textField } + if (secure) { + milVusArgs.clientConfig = { + address: address, + ssl: secure, + tls: { + rootCertPath: caPemPath, + certChainPath: clientPemPath, + privateKeyPath: clientKeyPath, + serverName: serverName + } + } + } + if (milvusUser) milVusArgs.username = milvusUser if (milvusPassword) milVusArgs.password = milvusPassword + let milvusFilter = _milvusFilter + if (isFileUploadEnabled && options.chatId) { + if (milvusFilter) milvusFilter += ` OR ${FLOWISE_CHATID} == "${options.chatId}" OR NOT EXISTS(${FLOWISE_CHATID})` + else milvusFilter = `${FLOWISE_CHATID} == "${options.chatId}" OR NOT EXISTS(${FLOWISE_CHATID})` + } + const vectorStore = await Milvus.fromExistingCollection(embeddings, milVusArgs) // Avoid Illegal Invocation @@ -245,7 +364,7 @@ const similaritySearchVectorWithScore = async (query: number[], k: number, vecto anns_field: vectorStore.vectorField, topk: k.toString(), metric_type: vectorStore.indexCreateParams.metric_type, - params: vectorStore.indexSearchParams + params: JSON.stringify(vectorStore.indexSearchParams) } const searchResp = await vectorStore.client.search({ collection_name: vectorStore.collectionName, diff --git a/packages/components/nodes/vectorstores/MongoDBAtlas/MongoDBAtlas.ts b/packages/components/nodes/vectorstores/MongoDBAtlas/MongoDBAtlas.ts index 1554497a90d..785c64484f6 100644 --- a/packages/components/nodes/vectorstores/MongoDBAtlas/MongoDBAtlas.ts +++ b/packages/components/nodes/vectorstores/MongoDBAtlas/MongoDBAtlas.ts @@ -1,13 +1,12 @@ import { flatten } from 'lodash' -import { MongoClient } from 'mongodb' -import { MongoDBAtlasVectorSearch } from '@langchain/mongodb' import { Embeddings } from '@langchain/core/embeddings' import { Document } from '@langchain/core/documents' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam, getVersion } from '../../../src/utils' +import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { addMMRInputParams, resolveVectorStoreOrRetriever } from '../VectorStoreUtils' -import { VectorStore } from '@langchain/core/vectorstores' +import { MongoDBAtlasVectorSearch } from './core' +// TODO: Add ability to specify env variable and use singleton pattern (i.e initialize MongoDB on server and pass to component) class MongoDBAtlas_VectorStores implements INode { label: string name: string @@ -86,6 +85,13 @@ class MongoDBAtlas_VectorStores implements INode { additionalParams: true, optional: true }, + { + label: 'Mongodb Metadata Filter', + name: 'mongoMetadataFilter', + type: 'json', + optional: true, + additionalParams: true + }, { label: 'Top K', name: 'topK', @@ -135,20 +141,18 @@ class MongoDBAtlas_VectorStores implements INode { } } - const mongoClient = await getMongoClient(mongoDBConnectUrl) try { - const collection = mongoClient.db(databaseName).collection(collectionName) - if (!textKey || textKey === '') textKey = 'text' if (!embeddingKey || embeddingKey === '') embeddingKey = 'embedding' const mongoDBAtlasVectorSearch = new MongoDBAtlasVectorSearch(embeddings, { - collection, + connectionDetails: { mongoDBConnectUrl, databaseName, collectionName }, indexName, textKey, embeddingKey }) await mongoDBAtlasVectorSearch.addDocuments(finalDocs) + return { numAdded: finalDocs.length, addedDocs: finalDocs } } catch (e) { throw new Error(e) @@ -164,48 +168,41 @@ class MongoDBAtlas_VectorStores implements INode { let textKey = nodeData.inputs?.textKey as string let embeddingKey = nodeData.inputs?.embeddingKey as string const embeddings = nodeData.inputs?.embeddings as Embeddings + const mongoMetadataFilter = nodeData.inputs?.mongoMetadataFilter as object let mongoDBConnectUrl = getCredentialParam('mongoDBConnectUrl', credentialData, nodeData) - const mongoClient = await getMongoClient(mongoDBConnectUrl) - try { - const collection = mongoClient.db(databaseName).collection(collectionName) + const mongoDbFilter: MongoDBAtlasVectorSearch['FilterType'] = {} + try { if (!textKey || textKey === '') textKey = 'text' if (!embeddingKey || embeddingKey === '') embeddingKey = 'embedding' const vectorStore = new MongoDBAtlasVectorSearch(embeddings, { - collection, + connectionDetails: { mongoDBConnectUrl, databaseName, collectionName }, indexName, textKey, embeddingKey - }) as unknown as VectorStore + }) + + if (mongoMetadataFilter) { + const metadataFilter = typeof mongoMetadataFilter === 'object' ? mongoMetadataFilter : JSON.parse(mongoMetadataFilter) + + for (const key in metadataFilter) { + mongoDbFilter.preFilter = { + ...mongoDbFilter.preFilter, + [key]: { + $eq: metadataFilter[key] + } + } + } + } - return resolveVectorStoreOrRetriever(nodeData, vectorStore) + return resolveVectorStoreOrRetriever(nodeData, vectorStore, mongoDbFilter) } catch (e) { throw new Error(e) } } } -let mongoClientSingleton: MongoClient -let mongoUrl: string - -const getMongoClient = async (newMongoUrl: string) => { - const driverInfo = { name: 'Flowise', version: (await getVersion()).version } - - if (!mongoClientSingleton) { - // if client does not exist - mongoClientSingleton = new MongoClient(newMongoUrl, { driverInfo }) - mongoUrl = newMongoUrl - return mongoClientSingleton - } else if (mongoClientSingleton && newMongoUrl !== mongoUrl) { - // if client exists but url changed - mongoClientSingleton.close() - mongoClientSingleton = new MongoClient(newMongoUrl, { driverInfo }) - mongoUrl = newMongoUrl - return mongoClientSingleton - } - return mongoClientSingleton -} module.exports = { nodeClass: MongoDBAtlas_VectorStores } diff --git a/packages/components/nodes/vectorstores/MongoDBAtlas/core.ts b/packages/components/nodes/vectorstores/MongoDBAtlas/core.ts new file mode 100644 index 00000000000..eb26178eea3 --- /dev/null +++ b/packages/components/nodes/vectorstores/MongoDBAtlas/core.ts @@ -0,0 +1,237 @@ +import { MongoClient, type Document as MongoDBDocument } from 'mongodb' +import { MaxMarginalRelevanceSearchOptions, VectorStore } from '@langchain/core/vectorstores' +import type { EmbeddingsInterface } from '@langchain/core/embeddings' +import { chunkArray } from '@langchain/core/utils/chunk_array' +import { Document } from '@langchain/core/documents' +import { maximalMarginalRelevance } from '@langchain/core/utils/math' +import { AsyncCaller, AsyncCallerParams } from '@langchain/core/utils/async_caller' +import { getVersion } from '../../../src/utils' + +export interface MongoDBAtlasVectorSearchLibArgs extends AsyncCallerParams { + readonly connectionDetails: { + readonly mongoDBConnectUrl: string + readonly databaseName: string + readonly collectionName: string + } + readonly indexName?: string + readonly textKey?: string + readonly embeddingKey?: string + readonly primaryKey?: string +} + +type MongoDBAtlasFilter = { + preFilter?: MongoDBDocument + postFilterPipeline?: MongoDBDocument[] + includeEmbeddings?: boolean +} & MongoDBDocument + +export class MongoDBAtlasVectorSearch extends VectorStore { + declare FilterType: MongoDBAtlasFilter + + private readonly connectionDetails: { + readonly mongoDBConnectUrl: string + readonly databaseName: string + readonly collectionName: string + } + + private readonly indexName: string + + private readonly textKey: string + + private readonly embeddingKey: string + + private readonly primaryKey: string + + private caller: AsyncCaller + + _vectorstoreType(): string { + return 'mongodb_atlas' + } + + constructor(embeddings: EmbeddingsInterface, args: MongoDBAtlasVectorSearchLibArgs) { + super(embeddings, args) + this.connectionDetails = args.connectionDetails + this.indexName = args.indexName ?? 'default' + this.textKey = args.textKey ?? 'text' + this.embeddingKey = args.embeddingKey ?? 'embedding' + this.primaryKey = args.primaryKey ?? '_id' + this.caller = new AsyncCaller(args) + } + + async getClient() { + const driverInfo = { name: 'Flowise', version: (await getVersion()).version } + const mongoClient = new MongoClient(this.connectionDetails.mongoDBConnectUrl, { driverInfo }) + return mongoClient + } + + async closeConnection(client: MongoClient) { + await client.close() + } + + async addVectors(vectors: number[][], documents: Document[], options?: { ids?: string[] }) { + const client = await this.getClient() + const collection = client.db(this.connectionDetails.databaseName).collection(this.connectionDetails.collectionName) + const docs = vectors.map((embedding, idx) => ({ + [this.textKey]: documents[idx].pageContent, + [this.embeddingKey]: embedding, + ...documents[idx].metadata + })) + if (options?.ids === undefined) { + await collection.insertMany(docs) + } else { + if (options.ids.length !== vectors.length) { + throw new Error(`If provided, "options.ids" must be an array with the same length as "vectors".`) + } + const { ids } = options + for (let i = 0; i < docs.length; i += 1) { + await this.caller.call(async () => { + await collection.updateOne( + { [this.primaryKey]: ids[i] }, + { $set: { [this.primaryKey]: ids[i], ...docs[i] } }, + { upsert: true } + ) + }) + } + } + await this.closeConnection(client) + return options?.ids ?? docs.map((doc) => doc[this.primaryKey]) + } + + async addDocuments(documents: Document[], options?: { ids?: string[] }) { + const texts = documents.map(({ pageContent }) => pageContent) + return this.addVectors(await this.embeddings.embedDocuments(texts), documents, options) + } + + async similaritySearchVectorWithScore(query: number[], k: number, filter?: MongoDBAtlasFilter): Promise<[Document, number][]> { + const client = await this.getClient() + const collection = client.db(this.connectionDetails.databaseName).collection(this.connectionDetails.collectionName) + + const postFilterPipeline = filter?.postFilterPipeline ?? [] + const preFilter: MongoDBDocument | undefined = + filter?.preFilter || filter?.postFilterPipeline || filter?.includeEmbeddings ? filter.preFilter : filter + const removeEmbeddingsPipeline = !filter?.includeEmbeddings + ? [ + { + $project: { + [this.embeddingKey]: 0 + } + } + ] + : [] + + const pipeline: MongoDBDocument[] = [ + { + $vectorSearch: { + queryVector: this.fixArrayPrecision(query), + index: this.indexName, + path: this.embeddingKey, + limit: k, + numCandidates: 10 * k, + ...(preFilter && { filter: preFilter }) + } + }, + { + $set: { + score: { $meta: 'vectorSearchScore' } + } + }, + ...removeEmbeddingsPipeline, + ...postFilterPipeline + ] + + const results = await collection + .aggregate(pipeline) + .map<[Document, number]>((result) => { + const { score, [this.textKey]: text, ...metadata } = result + return [new Document({ pageContent: text, metadata }), score] + }) + .toArray() + + await this.closeConnection(client) + + return results + } + + async maxMarginalRelevanceSearch(query: string, options: MaxMarginalRelevanceSearchOptions): Promise { + const { k, fetchK = 20, lambda = 0.5, filter } = options + + const queryEmbedding = await this.embeddings.embedQuery(query) + + // preserve the original value of includeEmbeddings + const includeEmbeddingsFlag = options.filter?.includeEmbeddings || false + + // update filter to include embeddings, as they will be used in MMR + const includeEmbeddingsFilter = { + ...filter, + includeEmbeddings: true + } + + const resultDocs = await this.similaritySearchVectorWithScore( + this.fixArrayPrecision(queryEmbedding), + fetchK, + includeEmbeddingsFilter + ) + + const embeddingList = resultDocs.map((doc) => doc[0].metadata[this.embeddingKey]) + + const mmrIndexes = maximalMarginalRelevance(queryEmbedding, embeddingList, lambda, k) + + return mmrIndexes.map((idx) => { + const doc = resultDocs[idx][0] + + // remove embeddings if they were not requested originally + if (!includeEmbeddingsFlag) { + delete doc.metadata[this.embeddingKey] + } + return doc + }) + } + + async delete(params: { ids: any[] }): Promise { + const client = await this.getClient() + const collection = client.db(this.connectionDetails.databaseName).collection(this.connectionDetails.collectionName) + const CHUNK_SIZE = 50 + const chunkIds: any[][] = chunkArray(params.ids, CHUNK_SIZE) + for (const chunk of chunkIds) { + await collection.deleteMany({ _id: { $in: chunk } }) + } + await this.closeConnection(client) + } + + static async fromTexts( + texts: string[], + metadatas: object[] | object, + embeddings: EmbeddingsInterface, + dbConfig: MongoDBAtlasVectorSearchLibArgs & { ids?: string[] } + ): Promise { + const docs: Document[] = [] + for (let i = 0; i < texts.length; i += 1) { + const metadata = Array.isArray(metadatas) ? metadatas[i] : metadatas + const newDoc = new Document({ + pageContent: texts[i], + metadata + }) + docs.push(newDoc) + } + return MongoDBAtlasVectorSearch.fromDocuments(docs, embeddings, dbConfig) + } + + static async fromDocuments( + docs: Document[], + embeddings: EmbeddingsInterface, + dbConfig: MongoDBAtlasVectorSearchLibArgs & { ids?: string[] } + ): Promise { + const instance = new this(embeddings, dbConfig) + await instance.addDocuments(docs, { ids: dbConfig.ids }) + return instance + } + + fixArrayPrecision(array: number[]) { + return array.map((value) => { + if (Number.isInteger(value)) { + return value + 0.000000000000001 + } + return value + }) + } +} diff --git a/packages/components/nodes/vectorstores/Pinecone/Pinecone.ts b/packages/components/nodes/vectorstores/Pinecone/Pinecone.ts index ead54466972..94b7bdcf36b 100644 --- a/packages/components/nodes/vectorstores/Pinecone/Pinecone.ts +++ b/packages/components/nodes/vectorstores/Pinecone/Pinecone.ts @@ -1,31 +1,14 @@ -import { flatten, isEqual } from 'lodash' -import { Pinecone, PineconeConfiguration } from '@pinecone-database/pinecone' +import { flatten } from 'lodash' +import { Pinecone } from '@pinecone-database/pinecone' import { PineconeStoreParams, PineconeStore } from '@langchain/pinecone' import { Embeddings } from '@langchain/core/embeddings' import { Document } from '@langchain/core/documents' import { VectorStore } from '@langchain/core/vectorstores' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { addMMRInputParams, resolveVectorStoreOrRetriever } from '../VectorStoreUtils' +import { FLOWISE_CHATID, getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { addMMRInputParams, howToUseFileUpload, resolveVectorStoreOrRetriever } from '../VectorStoreUtils' import { index } from '../../../src/indexing' -let pineconeClientSingleton: Pinecone -let pineconeClientOption: PineconeConfiguration - -const getPineconeClient = (option: PineconeConfiguration) => { - if (!pineconeClientSingleton) { - // if client doesn't exists - pineconeClientSingleton = new Pinecone(option) - pineconeClientOption = option - return pineconeClientSingleton - } else if (pineconeClientSingleton && !isEqual(option, pineconeClientOption)) { - // if client exists but option changed - pineconeClientSingleton = new Pinecone(option) - return pineconeClientSingleton - } - return pineconeClientSingleton -} - class Pinecone_VectorStores implements INode { label: string name: string @@ -43,7 +26,7 @@ class Pinecone_VectorStores implements INode { constructor() { this.label = 'Pinecone' this.name = 'pinecone' - this.version = 4.0 + this.version = 5.0 this.type = 'Pinecone' this.icon = 'pinecone.svg' this.category = 'Vector Stores' @@ -88,6 +71,18 @@ class Pinecone_VectorStores implements INode { additionalParams: true, optional: true }, + { + label: 'File Upload', + name: 'fileUpload', + description: 'Allow file upload on the chat', + hint: { + label: 'How to use', + value: howToUseFileUpload + }, + type: 'boolean', + additionalParams: true, + optional: true + }, { label: 'Pinecone Text Key', name: 'pineconeTextKey', @@ -138,11 +133,12 @@ class Pinecone_VectorStores implements INode { const embeddings = nodeData.inputs?.embeddings as Embeddings const recordManager = nodeData.inputs?.recordManager const pineconeTextKey = nodeData.inputs?.pineconeTextKey as string + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const pineconeApiKey = getCredentialParam('pineconeApiKey', credentialData, nodeData) - const client = getPineconeClient({ apiKey: pineconeApiKey }) + const client = new Pinecone({ apiKey: pineconeApiKey }) const pineconeIndex = client.Index(_index) @@ -150,6 +146,9 @@ class Pinecone_VectorStores implements INode { const finalDocs = [] for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { + if (isFileUploadEnabled && options.chatId) { + flattenDocs[i].metadata = { ...flattenDocs[i].metadata, [FLOWISE_CHATID]: options.chatId } + } finalDocs.push(new Document(flattenDocs[i])) } } @@ -195,7 +194,7 @@ class Pinecone_VectorStores implements INode { const credentialData = await getCredentialData(nodeData.credential ?? '', options) const pineconeApiKey = getCredentialParam('pineconeApiKey', credentialData, nodeData) - const client = getPineconeClient({ apiKey: pineconeApiKey }) + const client = new Pinecone({ apiKey: pineconeApiKey }) const pineconeIndex = client.Index(_index) @@ -232,11 +231,12 @@ class Pinecone_VectorStores implements INode { const pineconeMetadataFilter = nodeData.inputs?.pineconeMetadataFilter const embeddings = nodeData.inputs?.embeddings as Embeddings const pineconeTextKey = nodeData.inputs?.pineconeTextKey as string + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const pineconeApiKey = getCredentialParam('pineconeApiKey', credentialData, nodeData) - const client = getPineconeClient({ apiKey: pineconeApiKey }) + const client = new Pinecone({ apiKey: pineconeApiKey }) const pineconeIndex = client.Index(index) @@ -251,6 +251,14 @@ class Pinecone_VectorStores implements INode { metadatafilter = typeof pineconeMetadataFilter === 'object' ? pineconeMetadataFilter : JSON.parse(pineconeMetadataFilter) obj.filter = metadatafilter } + if (isFileUploadEnabled && options.chatId) { + obj.filter = obj.filter || {} + obj.filter.$or = [ + ...(obj.filter.$or || []), + { [FLOWISE_CHATID]: { $eq: options.chatId } }, + { [FLOWISE_CHATID]: { $exists: false } } + ] + } const vectorStore = (await PineconeStore.fromExistingIndex(embeddings, obj)) as unknown as VectorStore diff --git a/packages/components/nodes/vectorstores/Pinecone/Pinecone_LlamaIndex.ts b/packages/components/nodes/vectorstores/Pinecone/Pinecone_LlamaIndex.ts index 075b82a7f59..ad0371ef533 100644 --- a/packages/components/nodes/vectorstores/Pinecone/Pinecone_LlamaIndex.ts +++ b/packages/components/nodes/vectorstores/Pinecone/Pinecone_LlamaIndex.ts @@ -295,8 +295,11 @@ class PineconeVectorStore extends VectorStoreBase implements VectorStoreNoEmbedM async query(query: VectorStoreQuery): Promise { const queryOptions: any = { vector: query.queryEmbedding, - topK: query.similarityTopK, - filter: this.queryFilter + topK: query.similarityTopK + } + + if (this.queryFilter && Object.keys(this.queryFilter).length > 0) { + queryOptions.filter = this.queryFilter } const idx = await this.index() diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index 4a4d5443a76..1e7621c3f27 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -1,12 +1,16 @@ -import { Pool } from 'pg' import { flatten } from 'lodash' -import { DataSourceOptions } from 'typeorm' -import { Embeddings } from '@langchain/core/embeddings' import { Document } from '@langchain/core/documents' -import { TypeORMVectorStore, TypeORMVectorStoreDocument } from '@langchain/community/vectorstores/typeorm' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { FLOWISE_CHATID, getBaseClasses } from '../../../src/utils' import { index } from '../../../src/indexing' +import { howToUseFileUpload } from '../VectorStoreUtils' +import { VectorStore } from '@langchain/core/vectorstores' +import { VectorStoreDriver } from './driver/Base' +import { TypeORMDriver } from './driver/TypeORM' +// import { PGVectorDriver } from './driver/PGVector' +import { getContentColumnName, getDatabase, getHost, getPort, getTableName } from './utils' + +const serverCredentialsExists = !!process.env.POSTGRES_VECTORSTORE_USER && !!process.env.POSTGRES_VECTORSTORE_PASSWORD class Postgres_VectorStores implements INode { label: string @@ -25,7 +29,7 @@ class Postgres_VectorStores implements INode { constructor() { this.label = 'Postgres' this.name = 'postgres' - this.version = 5.0 + this.version = 7.0 this.type = 'Postgres' this.icon = 'postgres.svg' this.category = 'Vector Stores' @@ -35,7 +39,8 @@ class Postgres_VectorStores implements INode { label: 'Connect Credential', name: 'credential', type: 'credential', - credentialNames: ['PostgresApi'] + credentialNames: ['PostgresApi'], + optional: serverCredentialsExists } this.inputs = [ { @@ -60,25 +65,83 @@ class Postgres_VectorStores implements INode { { label: 'Host', name: 'host', - type: 'string' + type: 'string', + placeholder: getHost(), + optional: !!getHost() }, { label: 'Database', name: 'database', - type: 'string' + type: 'string', + placeholder: getDatabase(), + optional: !!getDatabase() }, { label: 'Port', name: 'port', type: 'number', - placeholder: '6432', + placeholder: getPort(), optional: true }, { label: 'Table Name', name: 'tableName', type: 'string', - placeholder: 'documents', + placeholder: getTableName(), + additionalParams: true, + optional: true + }, + /*{ + label: 'Driver', + name: 'driver', + type: 'options', + default: 'typeorm', + description: 'Different option to connect to Postgres', + options: [ + { + label: 'TypeORM', + name: 'typeorm' + }, + { + label: 'PGVector', + name: 'pgvector' + } + ], + optional: true, + additionalParams: true + },*/ + { + label: 'Distance Strategy', + name: 'distanceStrategy', + description: 'Strategy for calculating distances between vectors', + type: 'options', + options: [ + { + label: 'Cosine', + name: 'cosine' + }, + { + label: 'Euclidean', + name: 'euclidean' + }, + { + label: 'Inner Product', + name: 'innerProduct' + } + ], + additionalParams: true, + default: 'cosine', + optional: true + }, + { + label: 'File Upload', + name: 'fileUpload', + description: 'Allow file upload on the chat', + hint: { + label: 'How to use', + value: howToUseFileUpload + }, + type: 'boolean', additionalParams: true, optional: true }, @@ -104,6 +167,15 @@ class Postgres_VectorStores implements INode { type: 'json', additionalParams: true, optional: true + }, + { + label: 'Content Column Name', + name: 'contentColumnName', + description: 'Column name to store the text content (PGVector Driver only, others use pageContent)', + type: 'string', + placeholder: getContentColumnName(), + additionalParams: true, + optional: true } ] this.outputs = [ @@ -115,7 +187,7 @@ class Postgres_VectorStores implements INode { { label: 'Postgres Vector Store', name: 'vectorStore', - baseClasses: [this.type, ...getBaseClasses(TypeORMVectorStore)] + baseClasses: [this.type, ...getBaseClasses(VectorStore)] } ] } @@ -123,56 +195,27 @@ class Postgres_VectorStores implements INode { //@ts-ignore vectorStoreMethods = { async upsert(nodeData: INodeData, options: ICommonObject): Promise> { - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const user = getCredentialParam('user', credentialData, nodeData) - const password = getCredentialParam('password', credentialData, nodeData) - const _tableName = nodeData.inputs?.tableName as string - const tableName = _tableName ? _tableName : 'documents' + const tableName = getTableName(nodeData) const docs = nodeData.inputs?.document as Document[] - const embeddings = nodeData.inputs?.embeddings as Embeddings - const additionalConfig = nodeData.inputs?.additionalConfig as string const recordManager = nodeData.inputs?.recordManager - - let additionalConfiguration = {} - if (additionalConfig) { - try { - additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) - } catch (exception) { - throw new Error('Invalid JSON in the Additional Configuration: ' + exception) - } - } - - const postgresConnectionOptions = { - ...additionalConfiguration, - type: 'postgres', - host: nodeData.inputs?.host as string, - port: nodeData.inputs?.port as number, - username: user, - password: password, - database: nodeData.inputs?.database as string - } - - const args = { - postgresConnectionOptions: postgresConnectionOptions as DataSourceOptions, - tableName: tableName - } + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean + const vectorStoreDriver: VectorStoreDriver = Postgres_VectorStores.getDriverFromConfig(nodeData, options) const flattenDocs = docs && docs.length ? flatten(docs) : [] const finalDocs = [] + for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { + if (isFileUploadEnabled && options.chatId) { + flattenDocs[i].metadata = { ...flattenDocs[i].metadata, [FLOWISE_CHATID]: options.chatId } + } finalDocs.push(new Document(flattenDocs[i])) } } try { if (recordManager) { - const vectorStore = await TypeORMVectorStore.fromDataSource(embeddings, args) - - // Avoid Illegal invocation error - vectorStore.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { - return await similaritySearchVectorWithScore(query, k, tableName, postgresConnectionOptions, filter) - } + const vectorStore = await vectorStoreDriver.instanciate() await recordManager.createSchema() @@ -189,12 +232,7 @@ class Postgres_VectorStores implements INode { return res } else { - const vectorStore = await TypeORMVectorStore.fromDocuments(finalDocs, embeddings, args) - - // Avoid Illegal invocation error - vectorStore.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { - return await similaritySearchVectorWithScore(query, k, tableName, postgresConnectionOptions, filter) - } + await vectorStoreDriver.fromDocuments(finalDocs) return { numAdded: finalDocs.length, addedDocs: finalDocs } } @@ -203,40 +241,11 @@ class Postgres_VectorStores implements INode { } }, async delete(nodeData: INodeData, ids: string[], options: ICommonObject): Promise { - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const user = getCredentialParam('user', credentialData, nodeData) - const password = getCredentialParam('password', credentialData, nodeData) - const _tableName = nodeData.inputs?.tableName as string - const tableName = _tableName ? _tableName : 'documents' - const embeddings = nodeData.inputs?.embeddings as Embeddings - const additionalConfig = nodeData.inputs?.additionalConfig as string + const vectorStoreDriver: VectorStoreDriver = Postgres_VectorStores.getDriverFromConfig(nodeData, options) + const tableName = getTableName(nodeData) const recordManager = nodeData.inputs?.recordManager - let additionalConfiguration = {} - if (additionalConfig) { - try { - additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) - } catch (exception) { - throw new Error('Invalid JSON in the Additional Configuration: ' + exception) - } - } - - const postgresConnectionOptions = { - ...additionalConfiguration, - type: 'postgres', - host: nodeData.inputs?.host as string, - port: nodeData.inputs?.port as number, - username: user, - password: password, - database: nodeData.inputs?.database as string - } - - const args = { - postgresConnectionOptions: postgresConnectionOptions as DataSourceOptions, - tableName: tableName - } - - const vectorStore = await TypeORMVectorStore.fromDataSource(embeddings, args) + const vectorStore = await vectorStoreDriver.instanciate() try { if (recordManager) { @@ -257,59 +266,25 @@ class Postgres_VectorStores implements INode { } async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const user = getCredentialParam('user', credentialData, nodeData) - const password = getCredentialParam('password', credentialData, nodeData) - const _tableName = nodeData.inputs?.tableName as string - const tableName = _tableName ? _tableName : 'documents' - const embeddings = nodeData.inputs?.embeddings as Embeddings - const additionalConfig = nodeData.inputs?.additionalConfig as string + const vectorStoreDriver: VectorStoreDriver = Postgres_VectorStores.getDriverFromConfig(nodeData, options) const output = nodeData.outputs?.output as string const topK = nodeData.inputs?.topK as string const k = topK ? parseFloat(topK) : 4 const _pgMetadataFilter = nodeData.inputs?.pgMetadataFilter + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean let pgMetadataFilter: any if (_pgMetadataFilter) { pgMetadataFilter = typeof _pgMetadataFilter === 'object' ? _pgMetadataFilter : JSON.parse(_pgMetadataFilter) } - - let additionalConfiguration = {} - if (additionalConfig) { - try { - additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) - } catch (exception) { - throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + if (isFileUploadEnabled && options.chatId) { + pgMetadataFilter = { + ...(pgMetadataFilter || {}), + [FLOWISE_CHATID]: options.chatId } } - const postgresConnectionOptions = { - ...additionalConfiguration, - type: 'postgres', - host: nodeData.inputs?.host as string, - port: nodeData.inputs?.port as number, - username: user, // Required by TypeORMVectorStore - user: user, // Required by Pool in similaritySearchVectorWithScore - password: password, - database: nodeData.inputs?.database as string - } - - const args = { - postgresConnectionOptions: postgresConnectionOptions as DataSourceOptions, - tableName: tableName - } - - const vectorStore = await TypeORMVectorStore.fromDataSource(embeddings, args) - - // Rewrite the method to use pg pool connection instead of the default connection - /* Otherwise a connection error is displayed when the chain tries to execute the function - [chain/start] [1:chain:ConversationalRetrievalQAChain] Entering Chain run with input: { "question": "what the document is about", "chat_history": [] } - [retriever/start] [1:chain:ConversationalRetrievalQAChain > 2:retriever:VectorStoreRetriever] Entering Retriever run with input: { "query": "what the document is about" } - [ERROR]: uncaughtException: Illegal invocation TypeError: Illegal invocation at Socket.ref (node:net:1524:18) at Connection.ref (.../node_modules/pg/lib/connection.js:183:17) at Client.ref (.../node_modules/pg/lib/client.js:591:21) at BoundPool._pulseQueue (/node_modules/pg-pool/index.js:148:28) at .../node_modules/pg-pool/index.js:184:37 at process.processTicksAndRejections (node:internal/process/task_queues:77:11) - */ - vectorStore.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { - return await similaritySearchVectorWithScore(query, k, tableName, postgresConnectionOptions, filter ?? pgMetadataFilter) - } + const vectorStore = await vectorStoreDriver.instanciate(pgMetadataFilter) if (output === 'retriever') { const retriever = vectorStore.asRetriever(k) @@ -323,43 +298,18 @@ class Postgres_VectorStores implements INode { } return vectorStore } -} - -const similaritySearchVectorWithScore = async ( - query: number[], - k: number, - tableName: string, - postgresConnectionOptions: ICommonObject, - filter?: any -) => { - const embeddingString = `[${query.join(',')}]` - let _filter = '{}' - if (filter && typeof filter === 'object') _filter = JSON.stringify(filter) - const queryString = ` - SELECT *, embedding <=> $1 as "_distance" - FROM ${tableName} - WHERE metadata @> $2 - ORDER BY "_distance" ASC - LIMIT $3;` - - const pool = new Pool(postgresConnectionOptions) - const conn = await pool.connect() - - const documents = await conn.query(queryString, [embeddingString, _filter, k]) - - conn.release() - - const results = [] as [TypeORMVectorStoreDocument, number][] - for (const doc of documents.rows) { - if (doc._distance != null && doc.pageContent != null) { - const document = new Document(doc) as TypeORMVectorStoreDocument - document.id = doc.id - results.push([document, doc._distance]) - } + static getDriverFromConfig(nodeData: INodeData, options: ICommonObject): VectorStoreDriver { + /*switch (nodeData.inputs?.driver) { + case 'typeorm': + return new TypeORMDriver(nodeData, options) + case 'pgvector': + return new PGVectorDriver(nodeData, options) + default: + return new TypeORMDriver(nodeData, options) + }*/ + return new TypeORMDriver(nodeData, options) } - - return results } module.exports = { nodeClass: Postgres_VectorStores } diff --git a/packages/components/nodes/vectorstores/Postgres/README.md b/packages/components/nodes/vectorstores/Postgres/README.md new file mode 100644 index 00000000000..2f85ada23bb --- /dev/null +++ b/packages/components/nodes/vectorstores/Postgres/README.md @@ -0,0 +1,19 @@ +# Postgres Vector Store + +Postgres Vector Store integration for Flowise + +## 🌱 Env Variables + +| Variable | Description | Type | Default | +| ---------------------------------------- | ----------------------------------------------------- | ------ | ----------- | +| POSTGRES_VECTORSTORE_HOST | Default `host` for Postgres Vector Store | String | | +| POSTGRES_VECTORSTORE_PORT | Default `port` for Postgres Vector Store | Number | 5432 | +| POSTGRES_VECTORSTORE_USER | Default `user` for Postgres Vector Store | String | | +| POSTGRES_VECTORSTORE_PASSWORD | Default `password` for Postgres Vector Store | String | | +| POSTGRES_VECTORSTORE_DATABASE | Default `database` for Postgres Vector Store | String | | +| POSTGRES_VECTORSTORE_TABLE_NAME | Default `tableName` for Postgres Vector Store | String | documents | +| POSTGRES_VECTORSTORE_CONTENT_COLUMN_NAME | Default `contentColumnName` for Postgres Vector Store | String | pageContent | + +## License + +Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). diff --git a/packages/components/nodes/vectorstores/Postgres/driver/Base.ts b/packages/components/nodes/vectorstores/Postgres/driver/Base.ts new file mode 100644 index 00000000000..fc1379f2682 --- /dev/null +++ b/packages/components/nodes/vectorstores/Postgres/driver/Base.ts @@ -0,0 +1,60 @@ +import { VectorStore } from '@langchain/core/vectorstores' +import { getCredentialData, getCredentialParam, ICommonObject, INodeData } from '../../../../src' +import { Document } from '@langchain/core/documents' +import { Embeddings } from '@langchain/core/embeddings' +import { getDatabase, getHost, getPort, getTableName } from '../utils' + +export abstract class VectorStoreDriver { + constructor(protected nodeData: INodeData, protected options: ICommonObject) {} + + abstract instanciate(metaDataFilters?: any): Promise + + abstract fromDocuments(documents: Document[]): Promise + + protected async adaptInstance(instance: VectorStore, _metaDataFilters?: any): Promise { + return instance + } + + getHost() { + return getHost(this.nodeData) as string + } + + getPort() { + return getPort(this.nodeData) as number + } + + getDatabase() { + return getDatabase(this.nodeData) as string + } + + getTableName() { + return this.sanitizeTableName(getTableName(this.nodeData)) + } + + getEmbeddings() { + return this.nodeData.inputs?.embeddings as Embeddings + } + + sanitizeTableName(tableName: string): string { + // Trim and normalize case, turn whitespace into underscores + tableName = tableName.trim().toLowerCase().replace(/\s+/g, '_') + + // Validate using a regex (alphanumeric and underscores only) + if (!/^[a-zA-Z0-9_]+$/.test(tableName)) { + throw new Error('Invalid table name') + } + + return tableName + } + + async getCredentials() { + const credentialData = await getCredentialData(this.nodeData.credential ?? '', this.options) + const user = getCredentialParam('user', credentialData, this.nodeData, process.env.POSTGRES_VECTORSTORE_USER) + const password = getCredentialParam('password', credentialData, this.nodeData, process.env.POSTGRES_VECTORSTORE_PASSWORD) + + return { + user, + password + } + } +} diff --git a/packages/components/nodes/vectorstores/Postgres/driver/PGVector.ts b/packages/components/nodes/vectorstores/Postgres/driver/PGVector.ts new file mode 100644 index 00000000000..608858a1923 --- /dev/null +++ b/packages/components/nodes/vectorstores/Postgres/driver/PGVector.ts @@ -0,0 +1,127 @@ +/* +* Temporary disabled due to increasing open connections without releasing them +* Use TypeORM instead + +import { VectorStoreDriver } from './Base' +import { FLOWISE_CHATID } from '../../../../src' +import { DistanceStrategy, PGVectorStore, PGVectorStoreArgs } from '@langchain/community/vectorstores/pgvector' +import { Document } from '@langchain/core/documents' +import { PoolConfig } from 'pg' +import { getContentColumnName } from '../utils' + +export class PGVectorDriver extends VectorStoreDriver { + static CONTENT_COLUMN_NAME_DEFAULT: string = 'pageContent' + + protected _postgresConnectionOptions: PoolConfig + + protected async getPostgresConnectionOptions() { + if (!this._postgresConnectionOptions) { + const { user, password } = await this.getCredentials() + const additionalConfig = this.nodeData.inputs?.additionalConfig as string + + let additionalConfiguration = {} + + if (additionalConfig) { + try { + additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) + } catch (exception) { + throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + } + } + + this._postgresConnectionOptions = { + ...additionalConfiguration, + host: this.getHost(), + port: this.getPort(), + user: user, + password: password, + database: this.getDatabase() + } + + // Prevent using default MySQL port, otherwise will throw uncaught error and crashing the app + if (this.getHost() === '3006') { + throw new Error('Invalid port number') + } + } + + return this._postgresConnectionOptions + } + + async getArgs(): Promise { + return { + postgresConnectionOptions: await this.getPostgresConnectionOptions(), + tableName: this.getTableName(), + columns: { + contentColumnName: getContentColumnName(this.nodeData) + }, + distanceStrategy: (this.nodeData.inputs?.distanceStrategy || 'cosine') as DistanceStrategy + } + } + + async instanciate(metadataFilters?: any) { + return this.adaptInstance(await PGVectorStore.initialize(this.getEmbeddings(), await this.getArgs()), metadataFilters) + } + + async fromDocuments(documents: Document[]) { + const instance = await this.instanciate() + + await instance.addDocuments(documents) + + return this.adaptInstance(instance) + } + + protected async adaptInstance(instance: PGVectorStore, metadataFilters?: any): Promise { + const { [FLOWISE_CHATID]: chatId, ...pgMetadataFilter } = metadataFilters || {} + + const baseSimilaritySearchVectorWithScoreFn = instance.similaritySearchVectorWithScore.bind(instance) + + instance.similaritySearchVectorWithScore = async (query, k, filter) => { + return await baseSimilaritySearchVectorWithScoreFn(query, k, filter ?? pgMetadataFilter) + } + + const basePoolQueryFn = instance.pool.query.bind(instance.pool) + + // @ts-ignore + instance.pool.query = async (queryString: string, parameters: any[]) => { + if (!instance.client) { + instance.client = await instance.pool.connect() + } + + const whereClauseRegex = /WHERE ([^\n]+)/ + let chatflowOr = '' + + // Match chatflow uploaded file and keep filtering on other files: + // https://github.com/FlowiseAI/Flowise/pull/3367#discussion_r1804229295 + if (chatId) { + parameters.push({ [FLOWISE_CHATID]: chatId }) + + chatflowOr = `OR metadata @> $${parameters.length}` + } + + if (queryString.match(whereClauseRegex)) { + queryString = queryString.replace(whereClauseRegex, `WHERE (($1) AND NOT (metadata ? '${FLOWISE_CHATID}')) ${chatflowOr}`) + } else { + const orderByClauseRegex = /ORDER BY (.*)/ + // Insert WHERE clause before ORDER BY + queryString = queryString.replace( + orderByClauseRegex, + `WHERE (metadata @> '{}' AND NOT (metadata ? '${FLOWISE_CHATID}')) ${chatflowOr} + ORDER BY $1 + ` + ) + } + + // Run base function + const queryResult = await basePoolQueryFn(queryString, parameters) + + // ensure connection is released + instance.client.release() + instance.client = undefined + + return queryResult + } + + return instance + } +} +*/ diff --git a/packages/components/nodes/vectorstores/Postgres/driver/TypeORM.ts b/packages/components/nodes/vectorstores/Postgres/driver/TypeORM.ts new file mode 100644 index 00000000000..65593499462 --- /dev/null +++ b/packages/components/nodes/vectorstores/Postgres/driver/TypeORM.ts @@ -0,0 +1,174 @@ +import { DataSourceOptions } from 'typeorm' +import { VectorStoreDriver } from './Base' +import { FLOWISE_CHATID, ICommonObject } from '../../../../src' +import { TypeORMVectorStore, TypeORMVectorStoreArgs, TypeORMVectorStoreDocument } from '@langchain/community/vectorstores/typeorm' +import { VectorStore } from '@langchain/core/vectorstores' +import { Document } from '@langchain/core/documents' +import { Pool } from 'pg' + +export class TypeORMDriver extends VectorStoreDriver { + protected _postgresConnectionOptions: DataSourceOptions + + protected async getPostgresConnectionOptions() { + if (!this._postgresConnectionOptions) { + const { user, password } = await this.getCredentials() + const additionalConfig = this.nodeData.inputs?.additionalConfig as string + + let additionalConfiguration = {} + + if (additionalConfig) { + try { + additionalConfiguration = typeof additionalConfig === 'object' ? additionalConfig : JSON.parse(additionalConfig) + } catch (exception) { + throw new Error('Invalid JSON in the Additional Configuration: ' + exception) + } + } + + this._postgresConnectionOptions = { + ...additionalConfiguration, + type: 'postgres', + host: this.getHost(), + port: this.getPort(), + username: user, // Required by TypeORMVectorStore + user: user, // Required by Pool in similaritySearchVectorWithScore + password: password, + database: this.getDatabase() + } as DataSourceOptions + + // Prevent using default MySQL port, otherwise will throw uncaught error and crashing the app + if (this.getHost() === '3006') { + throw new Error('Invalid port number') + } + } + return this._postgresConnectionOptions + } + + async getArgs(): Promise { + return { + postgresConnectionOptions: await this.getPostgresConnectionOptions(), + tableName: this.getTableName() + } + } + + async instanciate(metadataFilters?: any) { + return this.adaptInstance(await TypeORMVectorStore.fromDataSource(this.getEmbeddings(), await this.getArgs()), metadataFilters) + } + + async fromDocuments(documents: Document[]) { + return this.adaptInstance(await TypeORMVectorStore.fromDocuments(documents, this.getEmbeddings(), await this.getArgs())) + } + + sanitizeDocuments(documents: Document[]) { + // Remove NULL characters which triggers error on PG + for (var i in documents) { + documents[i].pageContent = documents[i].pageContent.replace(/\0/g, '') + } + + return documents + } + + protected async adaptInstance(instance: TypeORMVectorStore, metadataFilters?: any): Promise { + const tableName = this.getTableName() + + // Rewrite the method to use pg pool connection instead of the default connection + /* Otherwise a connection error is displayed when the chain tries to execute the function + [chain/start] [1:chain:ConversationalRetrievalQAChain] Entering Chain run with input: { "question": "what the document is about", "chat_history": [] } + [retriever/start] [1:chain:ConversationalRetrievalQAChain > 2:retriever:VectorStoreRetriever] Entering Retriever run with input: { "query": "what the document is about" } + [ERROR]: uncaughtException: Illegal invocation TypeError: Illegal invocation at Socket.ref (node:net:1524:18) at Connection.ref (.../node_modules/pg/lib/connection.js:183:17) at Client.ref (.../node_modules/pg/lib/client.js:591:21) at BoundPool._pulseQueue (/node_modules/pg-pool/index.js:148:28) at .../node_modules/pg-pool/index.js:184:37 at process.processTicksAndRejections (node:internal/process/task_queues:77:11) + */ + instance.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { + return await TypeORMDriver.similaritySearchVectorWithScore( + query, + k, + tableName, + await this.getPostgresConnectionOptions(), + filter ?? metadataFilters, + this.computedOperatorString + ) + } + + instance.delete = async (params: { ids: string[] }): Promise => { + const { ids } = params + + if (ids?.length) { + try { + instance.appDataSource.getRepository(instance.documentEntity).delete(ids) + } catch (e) { + console.error('Failed to delete') + } + } + } + + const baseAddVectorsFn = instance.addVectors.bind(instance) + + instance.addVectors = async (vectors, documents) => { + return baseAddVectorsFn(vectors, this.sanitizeDocuments(documents)) + } + + return instance + } + + get computedOperatorString() { + const { distanceStrategy = 'cosine' } = this.nodeData.inputs || {} + + switch (distanceStrategy) { + case 'cosine': + return '<=>' + case 'innerProduct': + return '<#>' + case 'euclidean': + return '<->' + default: + throw new Error(`Unknown distance strategy: ${distanceStrategy}`) + } + } + + static similaritySearchVectorWithScore = async ( + query: number[], + k: number, + tableName: string, + postgresConnectionOptions: ICommonObject, + filter?: any, + distanceOperator: string = '<=>' + ) => { + const embeddingString = `[${query.join(',')}]` + let chatflowOr = '' + const { [FLOWISE_CHATID]: chatId, ...restFilters } = filter || {} + + const _filter = JSON.stringify(restFilters || {}) + const parameters: any[] = [embeddingString, _filter, k] + + // Match chatflow uploaded file and keep filtering on other files: + // https://github.com/FlowiseAI/Flowise/pull/3367#discussion_r1804229295 + if (chatId) { + parameters.push({ [FLOWISE_CHATID]: chatId }) + chatflowOr = `OR metadata @> $${parameters.length}` + } + + const queryString = ` + SELECT *, embedding ${distanceOperator} $1 as "_distance" + FROM ${tableName} + WHERE ((metadata @> $2) AND NOT (metadata ? '${FLOWISE_CHATID}')) ${chatflowOr} + ORDER BY "_distance" ASC + LIMIT $3;` + + const pool = new Pool(postgresConnectionOptions) + + const conn = await pool.connect() + + const documents = await conn.query(queryString, parameters) + + conn.release() + + const results = [] as [TypeORMVectorStoreDocument, number][] + for (const doc of documents.rows) { + if (doc._distance != null && doc.pageContent != null) { + const document = new Document(doc) as TypeORMVectorStoreDocument + document.id = doc.id + results.push([document, doc._distance]) + } + } + + return results + } +} diff --git a/packages/components/nodes/vectorstores/Postgres/utils.ts b/packages/components/nodes/vectorstores/Postgres/utils.ts new file mode 100644 index 00000000000..e2b18b57075 --- /dev/null +++ b/packages/components/nodes/vectorstores/Postgres/utils.ts @@ -0,0 +1,21 @@ +import { defaultChain, INodeData } from '../../../src' + +export function getHost(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.host, process.env.POSTGRES_VECTORSTORE_HOST) +} + +export function getDatabase(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.database, process.env.POSTGRES_VECTORSTORE_DATABASE) +} + +export function getPort(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.port, process.env.POSTGRES_VECTORSTORE_PORT, '5432') +} + +export function getTableName(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.tableName, process.env.POSTGRES_VECTORSTORE_TABLE_NAME, 'documents') +} + +export function getContentColumnName(nodeData?: INodeData) { + return defaultChain(nodeData?.inputs?.contentColumnName, process.env.POSTGRES_VECTORSTORE_CONTENT_COLUMN_NAME, 'pageContent') +} diff --git a/packages/components/nodes/vectorstores/Qdrant/Qdrant.ts b/packages/components/nodes/vectorstores/Qdrant/Qdrant.ts index c12de2c7147..2bdbcf353e2 100644 --- a/packages/components/nodes/vectorstores/Qdrant/Qdrant.ts +++ b/packages/components/nodes/vectorstores/Qdrant/Qdrant.ts @@ -6,8 +6,9 @@ import { Document } from '@langchain/core/documents' import { QdrantVectorStore, QdrantLibArgs } from '@langchain/qdrant' import { Embeddings } from '@langchain/core/embeddings' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { FLOWISE_CHATID, getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { index } from '../../../src/indexing' +import { howToUseFileUpload } from '../VectorStoreUtils' type RetrieverConfig = Partial> type QdrantAddDocumentOptions = { @@ -32,7 +33,7 @@ class Qdrant_VectorStores implements INode { constructor() { this.label = 'Qdrant' this.name = 'qdrant' - this.version = 3.0 + this.version = 5.0 this.type = 'Qdrant' this.icon = 'qdrant.png' this.category = 'Vector Stores' @@ -78,6 +79,18 @@ class Qdrant_VectorStores implements INode { name: 'qdrantCollection', type: 'string' }, + { + label: 'File Upload', + name: 'fileUpload', + description: 'Allow file upload on the chat', + hint: { + label: 'How to use', + value: howToUseFileUpload + }, + type: 'boolean', + additionalParams: true, + optional: true + }, { label: 'Vector Dimension', name: 'qdrantVectorDimension', @@ -85,6 +98,24 @@ class Qdrant_VectorStores implements INode { default: 1536, additionalParams: true }, + { + label: 'Content Key', + name: 'contentPayloadKey', + description: 'The key for storing text. Default to `content`', + type: 'string', + default: 'content', + optional: true, + additionalParams: true + }, + { + label: 'Metadata Key', + name: 'metadataPayloadKey', + description: 'The key for storing metadata. Default to `metadata`', + type: 'string', + default: 'metadata', + optional: true, + additionalParams: true + }, { label: 'Upsert Batch Size', name: 'batchSize', @@ -168,6 +199,9 @@ class Qdrant_VectorStores implements INode { const qdrantVectorDimension = nodeData.inputs?.qdrantVectorDimension const recordManager = nodeData.inputs?.recordManager const _batchSize = nodeData.inputs?.batchSize + const contentPayloadKey = nodeData.inputs?.contentPayloadKey || 'content' + const metadataPayloadKey = nodeData.inputs?.metadataPayloadKey || 'metadata' + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const qdrantApiKey = getCredentialParam('qdrantApiKey', credentialData, nodeData) @@ -184,6 +218,9 @@ class Qdrant_VectorStores implements INode { const finalDocs = [] for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { + if (isFileUploadEnabled && options.chatId) { + flattenDocs[i].metadata = { ...flattenDocs[i].metadata, [FLOWISE_CHATID]: options.chatId } + } finalDocs.push(new Document(flattenDocs[i])) } } @@ -197,7 +234,9 @@ class Qdrant_VectorStores implements INode { size: qdrantVectorDimension ? parseInt(qdrantVectorDimension, 10) : 1536, distance: qdrantSimilarity ?? 'Cosine' } - } + }, + contentPayloadKey, + metadataPayloadKey } try { @@ -220,8 +259,8 @@ class Qdrant_VectorStores implements INode { id: documentOptions?.ids?.length ? documentOptions?.ids[idx] : uuid(), vector: embedding, payload: { - content: documents[idx].pageContent, - metadata: documents[idx].metadata, + [contentPayloadKey]: documents[idx].pageContent, + [metadataPayloadKey]: documents[idx].metadata, customPayload: documentOptions?.customPayload?.length ? documentOptions?.customPayload[idx] : undefined } })) @@ -367,6 +406,9 @@ class Qdrant_VectorStores implements INode { const output = nodeData.outputs?.output as string const topK = nodeData.inputs?.topK as string let queryFilter = nodeData.inputs?.qdrantFilter + const contentPayloadKey = nodeData.inputs?.contentPayloadKey || 'content' + const metadataPayloadKey = nodeData.inputs?.metadataPayloadKey || 'metadata' + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const k = topK ? parseFloat(topK) : 4 @@ -383,7 +425,9 @@ class Qdrant_VectorStores implements INode { const dbConfig: QdrantLibArgs = { client, - collectionName + collectionName, + contentPayloadKey, + metadataPayloadKey } const retrieverConfig: RetrieverConfig = { @@ -408,6 +452,25 @@ class Qdrant_VectorStores implements INode { if (queryFilter) { retrieverConfig.filter = typeof queryFilter === 'object' ? queryFilter : JSON.parse(queryFilter) } + if (isFileUploadEnabled && options.chatId) { + retrieverConfig.filter = retrieverConfig.filter || {} + + retrieverConfig.filter.should = Array.isArray(retrieverConfig.filter.should) ? retrieverConfig.filter.should : [] + + retrieverConfig.filter.should.push( + { + key: `metadata.${FLOWISE_CHATID}`, + match: { + value: options.chatId + } + }, + { + is_empty: { + key: `metadata.${FLOWISE_CHATID}` + } + } + ) + } const vectorStore = await QdrantVectorStore.fromExistingCollection(embeddings, dbConfig) diff --git a/packages/components/nodes/vectorstores/Redis/Redis.ts b/packages/components/nodes/vectorstores/Redis/Redis.ts index db8df1ea9b0..3c9fd773c64 100644 --- a/packages/components/nodes/vectorstores/Redis/Redis.ts +++ b/packages/components/nodes/vectorstores/Redis/Redis.ts @@ -1,32 +1,11 @@ -import { flatten, isEqual } from 'lodash' -import { createClient, SearchOptions, RedisClientOptions } from 'redis' +import { flatten } from 'lodash' +import { createClient, SearchOptions } from 'redis' import { Embeddings } from '@langchain/core/embeddings' import { RedisVectorStore, RedisVectorStoreConfig } from '@langchain/community/vectorstores/redis' import { Document } from '@langchain/core/documents' import { ICommonObject, INode, INodeData, INodeOutputsValue, INodeParams, IndexingResult } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' -import { escapeAllStrings, escapeSpecialChars, unEscapeSpecialChars } from './utils' - -let redisClientSingleton: ReturnType -let redisClientOption: RedisClientOptions - -const getRedisClient = async (option: RedisClientOptions) => { - if (!redisClientSingleton) { - // if client doesn't exists - redisClientSingleton = createClient(option) - await redisClientSingleton.connect() - redisClientOption = option - return redisClientSingleton - } else if (redisClientSingleton && !isEqual(option, redisClientOption)) { - // if client exists but option changed - redisClientSingleton.quit() - redisClientSingleton = createClient(option) - await redisClientSingleton.connect() - redisClientOption = option - return redisClientSingleton - } - return redisClientSingleton -} +import { escapeSpecialChars, unEscapeSpecialChars } from './utils' class Redis_VectorStores implements INode { label: string @@ -163,13 +142,13 @@ class Redis_VectorStores implements INode { for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { const document = new Document(flattenDocs[i]) - escapeAllStrings(document.metadata) finalDocs.push(document) } } try { - const redisClient = await getRedisClient({ url: redisUrl }) + const redisClient = createClient({ url: redisUrl }) + await redisClient.connect() const storeConfig: RedisVectorStoreConfig = { redisClient: redisClient, @@ -203,6 +182,8 @@ class Redis_VectorStores implements INode { ) } + await redisClient.quit() + return { numAdded: finalDocs.length, addedDocs: finalDocs } } catch (e) { throw new Error(e) @@ -231,7 +212,7 @@ class Redis_VectorStores implements INode { redisUrl = 'redis://' + username + ':' + password + '@' + host + ':' + portStr } - const redisClient = await getRedisClient({ url: redisUrl }) + const redisClient = createClient({ url: redisUrl }) const storeConfig: RedisVectorStoreConfig = { redisClient: redisClient, @@ -246,7 +227,19 @@ class Redis_VectorStores implements INode { // Avoid Illegal invocation error vectorStore.similaritySearchVectorWithScore = async (query: number[], k: number, filter?: any) => { - return await similaritySearchVectorWithScore(query, k, indexName, metadataKey, vectorKey, contentKey, redisClient, filter) + await redisClient.connect() + const results = await similaritySearchVectorWithScore( + query, + k, + indexName, + metadataKey, + vectorKey, + contentKey, + redisClient, + filter + ) + await redisClient.quit() + return results } if (output === 'retriever') { diff --git a/packages/components/nodes/vectorstores/Redis/utils.ts b/packages/components/nodes/vectorstores/Redis/utils.ts index acef03ef807..dff5840da55 100644 --- a/packages/components/nodes/vectorstores/Redis/utils.ts +++ b/packages/components/nodes/vectorstores/Redis/utils.ts @@ -1,3 +1,5 @@ +import { isNil } from 'lodash' + /* * Escapes all '-' characters. * Redis Search considers '-' as a negative operator, hence we need @@ -8,6 +10,10 @@ export const escapeSpecialChars = (str: string) => { } export const escapeAllStrings = (obj: object) => { + if (isNil(obj)) { + // return if obj is null or undefined to avoid "TypeError: Cannot convert undefined or null to object" + return + } Object.keys(obj).forEach((key: string) => { // @ts-ignore let item = obj[key] diff --git a/packages/components/nodes/vectorstores/Singlestore/singlestore.svg b/packages/components/nodes/vectorstores/Singlestore/singlestore.svg index bd8dc8177ff..acab6e1f387 100644 --- a/packages/components/nodes/vectorstores/Singlestore/singlestore.svg +++ b/packages/components/nodes/vectorstores/Singlestore/singlestore.svg @@ -1,20 +1,41 @@ - - - SingleStore - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/components/nodes/vectorstores/Upstash/Upstash.ts b/packages/components/nodes/vectorstores/Upstash/Upstash.ts index e41ab84903c..d126daa869c 100644 --- a/packages/components/nodes/vectorstores/Upstash/Upstash.ts +++ b/packages/components/nodes/vectorstores/Upstash/Upstash.ts @@ -1,12 +1,12 @@ import { flatten } from 'lodash' import { IndexingResult, INode, INodeOutputsValue, INodeParams, INodeData, ICommonObject } from '../../../src/Interface' -import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' +import { FLOWISE_CHATID, getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { Embeddings } from '@langchain/core/embeddings' import { Document } from '@langchain/core/documents' import { UpstashVectorStore } from '@langchain/community/vectorstores/upstash' import { Index as UpstashIndex } from '@upstash/vector' import { index } from '../../../src/indexing' -import { resolveVectorStoreOrRetriever } from '../VectorStoreUtils' +import { howToUseFileUpload, resolveVectorStoreOrRetriever } from '../VectorStoreUtils' type UpstashVectorStoreParams = { index: UpstashIndex @@ -29,7 +29,7 @@ class Upstash_VectorStores implements INode { constructor() { this.label = 'Upstash Vector' this.name = 'upstash' - this.version = 1.0 + this.version = 2.0 this.type = 'Upstash' this.icon = 'upstash.svg' this.category = 'Vector Stores' @@ -63,6 +63,18 @@ class Upstash_VectorStores implements INode { description: 'Keep track of the record to prevent duplication', optional: true }, + { + label: 'File Upload', + name: 'fileUpload', + description: 'Allow file upload on the chat', + hint: { + label: 'How to use', + value: howToUseFileUpload + }, + type: 'boolean', + additionalParams: true, + optional: true + }, { label: 'Upstash Metadata Filter', name: 'upstashMetadataFilter', @@ -100,6 +112,7 @@ class Upstash_VectorStores implements INode { const docs = nodeData.inputs?.document as Document[] const embeddings = nodeData.inputs?.embeddings as Embeddings const recordManager = nodeData.inputs?.recordManager + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const UPSTASH_VECTOR_REST_URL = getCredentialParam('UPSTASH_VECTOR_REST_URL', credentialData, nodeData) @@ -114,6 +127,9 @@ class Upstash_VectorStores implements INode { const finalDocs = [] for (let i = 0; i < flattenDocs.length; i += 1) { if (flattenDocs[i] && flattenDocs[i].pageContent) { + if (isFileUploadEnabled && options.chatId) { + flattenDocs[i].metadata = { ...flattenDocs[i].metadata, [FLOWISE_CHATID]: options.chatId } + } finalDocs.push(new Document(flattenDocs[i])) } } @@ -186,6 +202,7 @@ class Upstash_VectorStores implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const upstashMetadataFilter = nodeData.inputs?.upstashMetadataFilter const embeddings = nodeData.inputs?.embeddings as Embeddings + const isFileUploadEnabled = nodeData.inputs?.fileUpload as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const UPSTASH_VECTOR_REST_URL = getCredentialParam('UPSTASH_VECTOR_REST_URL', credentialData, nodeData) @@ -203,6 +220,10 @@ class Upstash_VectorStores implements INode { if (upstashMetadataFilter) { obj.filter = upstashMetadataFilter } + if (isFileUploadEnabled && options.chatId) { + if (upstashMetadataFilter) obj.filter += ` OR ${FLOWISE_CHATID} = "${options.chatId}" OR HAS NOT FIELD ${FLOWISE_CHATID}` + else obj.filter = `${FLOWISE_CHATID} = "${options.chatId}" OR HAS NOT FIELD ${FLOWISE_CHATID}` + } const vectorStore = await UpstashVectorStore.fromExistingIndex(embeddings, obj) diff --git a/packages/components/nodes/vectorstores/Vectara/Vectara.ts b/packages/components/nodes/vectorstores/Vectara/Vectara.ts index 462eb2bd0ed..d7260d109fb 100644 --- a/packages/components/nodes/vectorstores/Vectara/Vectara.ts +++ b/packages/components/nodes/vectorstores/Vectara/Vectara.ts @@ -194,6 +194,7 @@ class Vectara_VectorStores implements INode { const chatflowid = options.chatflowid for (const file of files) { + if (!file) continue const fileData = await getFileFromStorage(file, chatflowid) const blob = new Blob([fileData]) vectaraFiles.push({ blob: blob, fileName: getFileName(file) }) @@ -206,6 +207,7 @@ class Vectara_VectorStores implements INode { } for (const file of files) { + if (!file) continue const splitDataURI = file.split(',') splitDataURI.pop() const bf = Buffer.from(splitDataURI.pop() || '', 'base64') diff --git a/packages/components/nodes/vectorstores/VectorStoreUtils.ts b/packages/components/nodes/vectorstores/VectorStoreUtils.ts index 8b75337c1cc..c5bc941bfdd 100644 --- a/packages/components/nodes/vectorstores/VectorStoreUtils.ts +++ b/packages/components/nodes/vectorstores/VectorStoreUtils.ts @@ -83,3 +83,19 @@ export const addMMRInputParams = (inputs: any[]) => { inputs.push(...mmrInputParams) } + +export const howToUseFileUpload = ` +**File Upload** + +This allows file upload on the chat. Uploaded files will be upserted on the fly to the vector store. + +**Note:** +- You can only turn on file upload for one vector store at a time. +- At least one Document Loader node should be connected to the document input. +- Document Loader should be file types like PDF, DOCX, TXT, etc. + +**How it works** +- Uploaded files will have the metadata updated with the chatId. +- This will allow the file to be associated with the chatId. +- When querying, metadata will be filtered by chatId to retrieve files associated with the chatId. +` diff --git a/packages/components/package.json b/packages/components/package.json index 74138b985b8..67384504ee5 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,9 +1,12 @@ { "name": "flowise-components", - "version": "2.0.4", + "version": "2.2.7-patch.1", "description": "Flowiseai Components", "main": "dist/src/index", "types": "dist/src/index.d.ts", + "files": [ + "dist" + ], "scripts": { "build": "tsc && gulp", "dev:gulp": "gulp", @@ -20,14 +23,18 @@ }, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { + "@apidevtools/json-schema-ref-parser": "^11.7.0", + "@arizeai/openinference-instrumentation-langchain": "^2.0.0", "@aws-sdk/client-bedrock-runtime": "3.422.0", "@aws-sdk/client-dynamodb": "^3.360.0", "@aws-sdk/client-s3": "^3.427.0", "@contentful/rich-text-plain-text-renderer": "^16.0.7", - "@datastax/astra-db-ts": "^0.1.2", + "@aws-sdk/client-secrets-manager": "^3.699.0", + "@datastax/astra-db-ts": "1.5.0", "@dqbd/tiktoken": "^1.0.7", "@e2b/code-interpreter": "^0.0.5", "@elastic/elasticsearch": "^8.9.0", + "@flowiseai/nodevm": "^3.9.25", "@getzep/zep-cloud": "~1.0.7", "@getzep/zep-js": "^0.9.0", "@gomomento/sdk": "^1.51.1", @@ -35,30 +42,38 @@ "@google-ai/generativelanguage": "^2.5.0", "@google/generative-ai": "^0.15.0", "@huggingface/inference": "^2.6.1", - "@langchain/anthropic": "^0.2.1", - "@langchain/aws": "^0.0.9", "@contentful/rich-text-types": "^16.5.2", + "@langchain/anthropic": "0.3.14", + "@langchain/aws": "0.1.4", + "@langchain/baidu-qianfan": "^0.1.0", "@langchain/cohere": "^0.0.7", - "@langchain/community": "^0.2.17", - "@langchain/core": "0.2.18", + "@langchain/community": "^0.3.34", + "@langchain/core": "0.3.37", "@langchain/exa": "^0.0.5", - "@langchain/google-genai": "^0.0.22", - "@langchain/google-vertexai": "^0.0.19", - "@langchain/groq": "^0.0.8", + "@langchain/google-genai": "0.1.9", + "@langchain/google-vertexai": "^0.2.0", + "@langchain/groq": "0.1.2", "@langchain/langgraph": "^0.0.22", - "@langchain/mistralai": "^0.0.26", + "@langchain/mistralai": "^0.2.0", "@langchain/mongodb": "^0.0.1", - "@langchain/ollama": "^0.0.2", - "@langchain/openai": "^0.0.30", - "@langchain/pinecone": "^0.0.3", + "@langchain/ollama": "0.2.0", + "@langchain/openai": "0.4.4", + "@langchain/pinecone": "^0.1.3", "@langchain/qdrant": "^0.0.5", "@langchain/weaviate": "^0.0.1", + "@langchain/xai": "^0.0.1", "@mendable/firecrawl-js": "^0.0.28", "@mistralai/mistralai": "0.1.3", + "@modelcontextprotocol/sdk": "^1.6.1", + "@modelcontextprotocol/server-brave-search": "^0.6.2", + "@modelcontextprotocol/server-github": "^2025.1.23", + "@modelcontextprotocol/server-postgres": "^0.6.2", + "@modelcontextprotocol/server-slack": "^2025.1.17", "@notionhq/client": "^2.2.8", "@opensearch-project/opensearch": "^1.2.0", - "@pinecone-database/pinecone": "2.2.2", + "@pinecone-database/pinecone": "4.0.0", "@qdrant/js-client-rest": "^1.9.0", + "@stripe/agent-toolkit": "^0.1.20", "@supabase/supabase-js": "^2.29.0", "@types/js-yaml": "^4.0.5", "@types/jsdom": "^21.1.1", @@ -67,16 +82,19 @@ "@zilliz/milvus2-sdk-node": "^2.2.24", "apify-client": "^2.7.1", "assemblyai": "^4.2.2", - "axios": "1.6.2", + "axios": "1.7.9", "cheerio": "^1.0.0-rc.12", - "chromadb": "^1.5.11", + "chromadb": "^1.10.0", "cohere-ai": "^7.7.5", + "composio-core": "^0.4.7", + "couchbase": "4.4.1", "crypto-js": "^4.1.1", "css-what": "^6.1.0", "contentful": "^10.6.14", "contentful-management": "^11.7.3", "d3-dsv": "2", "dotenv": "^16.0.0", + "epub2": "^3.0.2", "exa-js": "^1.0.12", "express": "^4.17.3", "faiss-node": "^0.5.1", @@ -88,7 +106,8 @@ "ioredis": "^5.3.2", "jsdom": "^22.1.0", "jsonpointer": "^5.0.1", - "langchain": "^0.2.11", + "jsonrepair": "^3.11.1", + "langchain": "^0.3.5", "langfuse": "3.3.4", "langfuse-langchain": "^3.3.4", "langsmith": "0.1.6", @@ -96,16 +115,20 @@ "linkifyjs": "^4.1.1", "llamaindex": "^0.3.13", "lodash": "^4.17.21", - "lunary": "^0.6.16", + "lunary": "^0.7.12", "mammoth": "^1.5.1", + "meilisearch": "^0.41.0", "moment": "^2.29.3", "mongodb": "6.3.0", - "mysql2": "^3.9.2", + "mysql2": "^3.11.3", + "neo4j-driver": "^5.26.0", "node-fetch": "^2.6.11", "node-html-markdown": "^1.3.0", "notion-to-md": "^3.1.1", "object-hash": "^3.0.0", - "openai": "^4.51.0", + "ollama": "^0.5.11", + "openai": "^4.82.0", + "papaparse": "^5.4.1", "pdf-parse": "^1.1.1", "pdfjs-dist": "^3.7.107", "pg": "^8.11.2", @@ -114,15 +137,14 @@ "pyodide": ">=0.21.0-alpha.2", "redis": "^4.6.7", "replicate": "^0.31.1", - "socket.io": "^4.6.1", + "sanitize-filename": "^1.6.3", "srt-parser-2": "^1.2.3", "typeorm": "^0.3.6", - "vm2": "^3.9.19", "weaviate-ts-client": "^1.1.0", "winston": "^3.9.0", - "ws": "^8.9.0", - "zod": "^3.22.4", "youtube-transcript": "^1.1.0", + "ws": "^8.18.0", + "zod": "3.22.4", "zod-to-json-schema": "^3.21.4" }, "devDependencies": { @@ -132,6 +154,7 @@ "@types/lodash": "^4.14.202", "@types/node-fetch": "2.6.2", "@types/object-hash": "^3.0.2", + "@types/papaparse": "^5.3.15", "@types/pg": "^8.10.2", "@types/ws": "^8.5.3", "babel-register": "^6.26.0", diff --git a/packages/components/src/Interface.ts b/packages/components/src/Interface.ts index e3e52266b45..05ab74416c7 100644 --- a/packages/components/src/Interface.ts +++ b/packages/components/src/Interface.ts @@ -95,6 +95,9 @@ export interface INodeParams { tabIdentifier?: string tabs?: Array disabled?: boolean + refresh?: boolean + freeSolo?: boolean + loadPreviousNodes?: boolean } export interface INodeExecutionData { @@ -166,6 +169,7 @@ export interface IUsedTool { toolInput: object toolOutput: string | object sourceDocuments?: ICommonObject[] + error?: string } export interface IMultiAgentNode { @@ -184,7 +188,8 @@ export interface IMultiAgentNode { checkpointMemory?: any } -type SeqAgentType = 'agent' | 'condition' | 'end' | 'start' | 'tool' | 'state' | 'llm' +type SeqAgentType = 'agent' | 'condition' | 'end' | 'start' | 'tool' | 'state' | 'llm' | 'utilities' +export type ConversationHistorySelection = 'user_question' | 'last_message' | 'all_messages' | 'empty' export interface ISeqAgentNode { id: string @@ -398,3 +403,47 @@ export interface IVisionChatModal { revertToOriginalModel(): void setMultiModalOption(multiModalOption: IMultiModalOption): void } +export interface IStateWithMessages extends ICommonObject { + messages: BaseMessage[] + [key: string]: any +} + +export interface IServerSideEventStreamer { + streamStartEvent(chatId: string, data: any): void + streamTokenEvent(chatId: string, data: string): void + streamCustomEvent(chatId: string, eventType: string, data: any): void + streamSourceDocumentsEvent(chatId: string, data: any): void + streamUsedToolsEvent(chatId: string, data: any): void + streamFileAnnotationsEvent(chatId: string, data: any): void + streamToolEvent(chatId: string, data: any): void + streamAgentReasoningEvent(chatId: string, data: any): void + streamNextAgentEvent(chatId: string, data: any): void + streamActionEvent(chatId: string, data: any): void + streamArtifactsEvent(chatId: string, data: any): void + streamAbortEvent(chatId: string): void + streamEndEvent(chatId: string): void +} + +export enum FollowUpPromptProvider { + ANTHROPIC = 'chatAnthropic', + AZURE_OPENAI = 'azureChatOpenAI', + GOOGLE_GENAI = 'chatGoogleGenerativeAI', + MISTRALAI = 'chatMistralAI', + OPENAI = 'chatOpenAI', + GROQ = 'groqChat', + OLLAMA = 'ollama' +} + +export type FollowUpPromptProviderConfig = { + [key in FollowUpPromptProvider]: { + credentialId: string + modelName: string + prompt: string + temperature: string + } +} + +export type FollowUpPromptConfig = { + status: boolean + selectedProvider: FollowUpPromptProvider +} & FollowUpPromptProviderConfig diff --git a/packages/components/src/agents.ts b/packages/components/src/agents.ts index f464a6742eb..0bda4021ceb 100644 --- a/packages/components/src/agents.ts +++ b/packages/components/src/agents.ts @@ -7,7 +7,7 @@ import { OutputParserException, BaseOutputParser, BaseLLMOutputParser } from '@l import { BaseLanguageModel } from '@langchain/core/language_models/base' import { CallbackManager, CallbackManagerForChainRun, Callbacks } from '@langchain/core/callbacks/manager' import { ToolInputParsingException, Tool, StructuredToolInterface } from '@langchain/core/tools' -import { Runnable, RunnableSequence, RunnablePassthrough } from '@langchain/core/runnables' +import { Runnable, RunnableSequence, RunnablePassthrough, type RunnableConfig } from '@langchain/core/runnables' import { Serializable } from '@langchain/core/load/serializable' import { renderTemplate } from '@langchain/core/prompts' import { ChatGeneration } from '@langchain/core/outputs' @@ -24,8 +24,11 @@ import { } from 'langchain/agents' import { formatLogToString } from 'langchain/agents/format_scratchpad/log' import { IUsedTool } from './Interface' +import { getErrorMessage } from './error' export const SOURCE_DOCUMENTS_PREFIX = '\n\n----FLOWISE_SOURCE_DOCUMENTS----\n\n' +export const ARTIFACTS_PREFIX = '\n\n----FLOWISE_ARTIFACTS----\n\n' + export type AgentFinish = { returnValues: Record log: string @@ -34,6 +37,7 @@ type AgentExecutorOutput = ChainValues interface AgentExecutorIteratorInput { agentExecutor: AgentExecutor inputs: Record + config?: RunnableConfig callbacks?: Callbacks tags?: string[] metadata?: Record @@ -49,6 +53,8 @@ export class AgentExecutorIterator extends Serializable implements AgentExecutor inputs: Record + config?: RunnableConfig + callbacks: Callbacks tags: string[] | undefined @@ -93,6 +99,7 @@ export class AgentExecutorIterator extends Serializable implements AgentExecutor this.metadata = fields.metadata this.runName = fields.runName this.runManager = fields.runManager + this.config = fields.config } /** @@ -274,6 +281,8 @@ export class AgentExecutor extends BaseChain { */ handleParsingErrors: boolean | string | ((e: OutputParserException | ToolInputParsingException) => string) = false + handleToolRuntimeErrors?: (e: Error) => string + get inputKeys() { return this.agent.inputKeys } @@ -338,19 +347,21 @@ export class AgentExecutor extends BaseChain { return this.maxIterations === undefined || iterations < this.maxIterations } - async _call(inputs: ChainValues, runManager?: CallbackManagerForChainRun): Promise { + async _call(inputs: ChainValues, runManager?: CallbackManagerForChainRun, config?: RunnableConfig): Promise { const toolsByName = Object.fromEntries(this.tools.map((t) => [t.name?.toLowerCase(), t])) const steps: AgentStep[] = [] let iterations = 0 let sourceDocuments: Array = [] const usedTools: IUsedTool[] = [] + let artifacts: any[] = [] const getOutput = async (finishStep: AgentFinish): Promise => { const { returnValues } = finishStep const additional = await this.agent.prepareForOutput(returnValues, steps) if (sourceDocuments.length) additional.sourceDocuments = flatten(sourceDocuments) if (usedTools.length) additional.usedTools = usedTools + if (artifacts.length) additional.artifacts = flatten(artifacts) if (this.returnIntermediateSteps) { return { ...returnValues, intermediateSteps: steps, ...additional } } @@ -361,7 +372,7 @@ export class AgentExecutor extends BaseChain { while (this.shouldContinue(iterations)) { let output try { - output = await this.agent.plan(steps, inputs, runManager?.getChild()) + output = await this.agent.plan(steps, inputs, runManager?.getChild(), config) } catch (e) { if (e instanceof OutputParserException) { let observation @@ -426,13 +437,17 @@ export class AgentExecutor extends BaseChain { state: inputs } ) + let toolOutput = observation + if (typeof toolOutput === 'string' && toolOutput.includes(SOURCE_DOCUMENTS_PREFIX)) { + toolOutput = toolOutput.split(SOURCE_DOCUMENTS_PREFIX)[0] + } + if (typeof toolOutput === 'string' && toolOutput.includes(ARTIFACTS_PREFIX)) { + toolOutput = toolOutput.split(ARTIFACTS_PREFIX)[0] + } usedTools.push({ tool: tool.name, toolInput: action.toolInput as any, - toolOutput: - typeof observation === 'string' && observation.includes(SOURCE_DOCUMENTS_PREFIX) - ? observation.split(SOURCE_DOCUMENTS_PREFIX)[0] - : observation + toolOutput }) } else { observation = `${action.tool} is not a valid tool, try another one.` @@ -449,7 +464,21 @@ export class AgentExecutor extends BaseChain { throw e } observation = await new ExceptionTool().call(observation, runManager?.getChild()) + usedTools.push({ + tool: tool.name, + toolInput: action.toolInput as any, + toolOutput: '', + error: getErrorMessage(e) + }) return { action, observation: observation ?? '' } + } else { + usedTools.push({ + tool: tool.name, + toolInput: action.toolInput as any, + toolOutput: '', + error: getErrorMessage(e) + }) + return { action, observation: getErrorMessage(e) } } } if (typeof observation === 'string' && observation.includes(SOURCE_DOCUMENTS_PREFIX)) { @@ -463,6 +492,16 @@ export class AgentExecutor extends BaseChain { console.error('Error parsing source documents from tool') } } + if (typeof observation === 'string' && observation.includes(ARTIFACTS_PREFIX)) { + const observationArray = observation.split(ARTIFACTS_PREFIX) + observation = observationArray[0] + try { + const artifact = JSON.parse(observationArray[1]) + artifacts.push(artifact) + } catch (e) { + console.error('Error parsing source documents from tool') + } + } return { action, observation: observation ?? '' } }) ) @@ -491,11 +530,12 @@ export class AgentExecutor extends BaseChain { nameToolMap: Record, inputs: ChainValues, intermediateSteps: AgentStep[], - runManager?: CallbackManagerForChainRun + runManager?: CallbackManagerForChainRun, + config?: RunnableConfig ): Promise { let output try { - output = await this.agent.plan(intermediateSteps, inputs, runManager?.getChild()) + output = await this.agent.plan(intermediateSteps, inputs, runManager?.getChild(), config) } catch (e) { if (e instanceof OutputParserException) { let observation @@ -566,6 +606,10 @@ export class AgentExecutor extends BaseChain { const observationArray = observation.split(SOURCE_DOCUMENTS_PREFIX) observation = observationArray[0] } + if (typeof observation === 'string' && observation.includes(ARTIFACTS_PREFIX)) { + const observationArray = observation.split(ARTIFACTS_PREFIX) + observation = observationArray[0] + } } catch (e) { if (e instanceof ToolInputParsingException) { if (this.handleParsingErrors === true) { @@ -634,10 +678,11 @@ export class AgentExecutor extends BaseChain { throw new Error(`Got unsupported early_stopping_method: ${earlyStoppingMethod}`) } - async *_streamIterator(inputs: Record): AsyncGenerator { + async *_streamIterator(inputs: Record, options?: Partial): AsyncGenerator { const agentExecutorIterator = new AgentExecutorIterator({ inputs, agentExecutor: this, + config: options, metadata: this.metadata, tags: this.tags, callbacks: this.callbacks diff --git a/packages/components/src/error.ts b/packages/components/src/error.ts new file mode 100644 index 00000000000..12ba0a67099 --- /dev/null +++ b/packages/components/src/error.ts @@ -0,0 +1,25 @@ +type ErrorWithMessage = { + message: string +} + +const isErrorWithMessage = (error: unknown): error is ErrorWithMessage => { + return ( + typeof error === 'object' && error !== null && 'message' in error && typeof (error as Record).message === 'string' + ) +} + +const toErrorWithMessage = (maybeError: unknown): ErrorWithMessage => { + if (isErrorWithMessage(maybeError)) return maybeError + + try { + return new Error(JSON.stringify(maybeError)) + } catch { + // fallback in case there's an error stringifying the maybeError + // like with circular references for example. + return new Error(String(maybeError)) + } +} + +export const getErrorMessage = (error: unknown) => { + return toErrorWithMessage(error).message +} diff --git a/packages/components/src/followUpPrompts.ts b/packages/components/src/followUpPrompts.ts new file mode 100644 index 00000000000..b888a87d9d4 --- /dev/null +++ b/packages/components/src/followUpPrompts.ts @@ -0,0 +1,160 @@ +import { FollowUpPromptConfig, FollowUpPromptProvider, ICommonObject } from './Interface' +import { getCredentialData } from './utils' +import { ChatAnthropic } from '@langchain/anthropic' +import { ChatGoogleGenerativeAI } from '@langchain/google-genai' +import { ChatMistralAI } from '@langchain/mistralai' +import { ChatOpenAI, AzureChatOpenAI } from '@langchain/openai' +import { z } from 'zod' +import { PromptTemplate } from '@langchain/core/prompts' +import { StructuredOutputParser } from '@langchain/core/output_parsers' +import { ChatGroq } from '@langchain/groq' +import ollama from 'ollama' + +const FollowUpPromptType = z + .object({ + questions: z.array(z.string()) + }) + .describe('Generate Follow Up Prompts') + +export const generateFollowUpPrompts = async ( + followUpPromptsConfig: FollowUpPromptConfig, + apiMessageContent: string, + options: ICommonObject +) => { + if (followUpPromptsConfig) { + if (!followUpPromptsConfig.status) return undefined + const providerConfig = followUpPromptsConfig[followUpPromptsConfig.selectedProvider] + if (!providerConfig) return undefined + const credentialId = providerConfig.credentialId as string + const credentialData = await getCredentialData(credentialId ?? '', options) + const followUpPromptsPrompt = providerConfig.prompt.replace('{history}', apiMessageContent) + + switch (followUpPromptsConfig.selectedProvider) { + case FollowUpPromptProvider.ANTHROPIC: { + const llm = new ChatAnthropic({ + apiKey: credentialData.anthropicApiKey, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + const structuredLLM = llm.withStructuredOutput(FollowUpPromptType) + const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) + return structuredResponse + } + case FollowUpPromptProvider.AZURE_OPENAI: { + const azureOpenAIApiKey = credentialData['azureOpenAIApiKey'] + const azureOpenAIApiInstanceName = credentialData['azureOpenAIApiInstanceName'] + const azureOpenAIApiDeploymentName = credentialData['azureOpenAIApiDeploymentName'] + const azureOpenAIApiVersion = credentialData['azureOpenAIApiVersion'] + + const llm = new AzureChatOpenAI({ + azureOpenAIApiKey, + azureOpenAIApiInstanceName, + azureOpenAIApiDeploymentName, + azureOpenAIApiVersion, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + // use structured output parser because withStructuredOutput is not working + const parser = StructuredOutputParser.fromZodSchema(FollowUpPromptType) + const formatInstructions = parser.getFormatInstructions() + const prompt = PromptTemplate.fromTemplate(` + ${providerConfig.prompt} + + {format_instructions} + `) + const chain = prompt.pipe(llm).pipe(parser) + const structuredResponse = await chain.invoke({ + history: apiMessageContent, + format_instructions: formatInstructions + }) + return structuredResponse + } + case FollowUpPromptProvider.GOOGLE_GENAI: { + const llm = new ChatGoogleGenerativeAI({ + apiKey: credentialData.googleGenerativeAPIKey, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + // use structured output parser because withStructuredOutput is not working + const parser = StructuredOutputParser.fromZodSchema(FollowUpPromptType) + const formatInstructions = parser.getFormatInstructions() + const prompt = PromptTemplate.fromTemplate(` + ${providerConfig.prompt} + + {format_instructions} + `) + const chain = prompt.pipe(llm).pipe(parser) + const structuredResponse = await chain.invoke({ + history: apiMessageContent, + format_instructions: formatInstructions + }) + return structuredResponse + } + case FollowUpPromptProvider.MISTRALAI: { + const model = new ChatMistralAI({ + apiKey: credentialData.mistralAIAPIKey, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + // @ts-ignore + const structuredLLM = model.withStructuredOutput(FollowUpPromptType) + const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) + return structuredResponse + } + case FollowUpPromptProvider.OPENAI: { + const model = new ChatOpenAI({ + apiKey: credentialData.openAIApiKey, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + const structuredLLM = model.withStructuredOutput(FollowUpPromptType) + const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) + return structuredResponse + } + case FollowUpPromptProvider.GROQ: { + const llm = new ChatGroq({ + apiKey: credentialData.groqApiKey, + model: providerConfig.modelName, + temperature: parseFloat(`${providerConfig.temperature}`) + }) + const structuredLLM = llm.withStructuredOutput(FollowUpPromptType) + const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) + return structuredResponse + } + case FollowUpPromptProvider.OLLAMA: { + const response = await ollama.chat({ + model: providerConfig.modelName, + messages: [ + { + role: 'user', + content: followUpPromptsPrompt + } + ], + format: { + type: 'object', + properties: { + questions: { + type: 'array', + items: { + type: 'string' + }, + minItems: 3, + maxItems: 3, + description: 'Three follow-up questions based on the conversation history' + } + }, + required: ['questions'], + additionalProperties: false + }, + options: { + temperature: parseFloat(`${providerConfig.temperature}`) + } + }) + const result = FollowUpPromptType.parse(JSON.parse(response.message.content)) + return result + } + } + } else { + return undefined + } +} diff --git a/packages/components/src/handler.ts b/packages/components/src/handler.ts index 6fd59321d36..1ae92d70426 100644 --- a/packages/components/src/handler.ts +++ b/packages/components/src/handler.ts @@ -1,13 +1,23 @@ import { Logger } from 'winston' import { v4 as uuidv4 } from 'uuid' -import { Server } from 'socket.io' import { Client } from 'langsmith' import CallbackHandler from 'langfuse-langchain' import lunary from 'lunary' import { RunTree, RunTreeConfig, Client as LangsmithClient } from 'langsmith' import { Langfuse, LangfuseTraceClient, LangfuseSpanClient, LangfuseGenerationClient } from 'langfuse' - -import { BaseCallbackHandler } from '@langchain/core/callbacks/base' +import { LangChainInstrumentation } from '@arizeai/openinference-instrumentation-langchain' +import { Metadata } from '@grpc/grpc-js' +import opentelemetry, { Span, SpanStatusCode } from '@opentelemetry/api' +import { OTLPTraceExporter as GrpcOTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { OTLPTraceExporter as ProtoOTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { Resource } from '@opentelemetry/resources' +import { SimpleSpanProcessor, Tracer } from '@opentelemetry/sdk-trace-base' +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions' + +import { BaseCallbackHandler, NewTokenIndices, HandleLLMNewTokenCallbackFields } from '@langchain/core/callbacks/base' +import * as CallbackManagerModule from '@langchain/core/callbacks/manager' import { LangChainTracer, LangChainTracerFields } from '@langchain/core/tracers/tracer_langchain' import { BaseTracer, Run } from '@langchain/core/tracers/base' import { ChainValues } from '@langchain/core/utils/types' @@ -15,13 +25,101 @@ import { AgentAction } from '@langchain/core/agents' import { LunaryHandler } from '@langchain/community/callbacks/handlers/lunary' import { getCredentialData, getCredentialParam, getEnvironmentVariable } from './utils' -import { ICommonObject, INodeData } from './Interface' +import { ICommonObject, IDatabaseEntity, INodeData, IServerSideEventStreamer } from './Interface' import { LangWatch, LangWatchSpan, LangWatchTrace, autoconvertTypedValues } from 'langwatch' +import { DataSource } from 'typeorm' +import { ChatGenerationChunk } from '@langchain/core/outputs' +import { AIMessageChunk } from '@langchain/core/messages' interface AgentRun extends Run { actions: AgentAction[] } +interface ArizeTracerOptions { + apiKey: string + spaceId: string + baseUrl: string + projectName: string + sdkIntegration?: string + sessionId?: string + enableCallback?: boolean +} + +function getArizeTracer(options: ArizeTracerOptions): Tracer | undefined { + const SEMRESATTRS_PROJECT_NAME = 'openinference.project.name' + try { + const metadata = new Metadata() + metadata.set('api_key', options.apiKey) + metadata.set('space_id', options.spaceId) + const traceExporter = new GrpcOTLPTraceExporter({ + url: `${options.baseUrl}/v1`, + metadata + }) + const tracerProvider = new NodeTracerProvider({ + resource: new Resource({ + [ATTR_SERVICE_NAME]: options.projectName, + [ATTR_SERVICE_VERSION]: '1.0.0', + [SEMRESATTRS_PROJECT_NAME]: options.projectName, + model_id: options.projectName + }) + }) + tracerProvider.addSpanProcessor(new SimpleSpanProcessor(traceExporter)) + if (options.enableCallback) { + registerInstrumentations({ + instrumentations: [] + }) + const lcInstrumentation = new LangChainInstrumentation() + lcInstrumentation.manuallyInstrument(CallbackManagerModule) + tracerProvider.register() + } + return tracerProvider.getTracer(`arize-tracer-${uuidv4().toString()}`) + } catch (err) { + if (process.env.DEBUG === 'true') console.error(`Error setting up Arize tracer: ${err.message}`) + return undefined + } +} + +interface PhoenixTracerOptions { + apiKey: string + baseUrl: string + projectName: string + sdkIntegration?: string + sessionId?: string + enableCallback?: boolean +} + +function getPhoenixTracer(options: PhoenixTracerOptions): Tracer | undefined { + const SEMRESATTRS_PROJECT_NAME = 'openinference.project.name' + try { + const traceExporter = new ProtoOTLPTraceExporter({ + url: `${options.baseUrl}/v1/traces`, + headers: { + api_key: options.apiKey + } + }) + const tracerProvider = new NodeTracerProvider({ + resource: new Resource({ + [ATTR_SERVICE_NAME]: options.projectName, + [ATTR_SERVICE_VERSION]: '1.0.0', + [SEMRESATTRS_PROJECT_NAME]: options.projectName + }) + }) + tracerProvider.addSpanProcessor(new SimpleSpanProcessor(traceExporter)) + if (options.enableCallback) { + registerInstrumentations({ + instrumentations: [] + }) + const lcInstrumentation = new LangChainInstrumentation() + lcInstrumentation.manuallyInstrument(CallbackManagerModule) + tracerProvider.register() + } + return tracerProvider.getTracer(`phoenix-tracer-${uuidv4().toString()}`) + } catch (err) { + if (process.env.DEBUG === 'true') console.error(`Error setting up Phoenix tracer: ${err.message}`) + return undefined + } +} + function tryGetJsonSpaces() { try { return parseInt(getEnvironmentVariable('LOG_JSON_SPACES') ?? '2') @@ -91,6 +189,7 @@ export class ConsoleCallbackHandler extends BaseTracer { onChainStart(run: Run) { const crumbs = this.getBreadcrumbs(run) + this.logger.verbose(`[chain/start] [${crumbs}] Entering Chain run with input: ${tryJsonStringify(run.inputs, '[inputs]')}`) } @@ -163,16 +262,16 @@ export class ConsoleCallbackHandler extends BaseTracer { export class CustomChainHandler extends BaseCallbackHandler { name = 'custom_chain_handler' isLLMStarted = false - socketIO: Server - socketIOClientId = '' skipK = 0 // Skip streaming for first K numbers of handleLLMStart returnSourceDocuments = false cachedResponse = true + chatId: string = '' + sseStreamer: IServerSideEventStreamer | undefined - constructor(socketIO: Server, socketIOClientId: string, skipK?: number, returnSourceDocuments?: boolean) { + constructor(sseStreamer: IServerSideEventStreamer | undefined, chatId: string, skipK?: number, returnSourceDocuments?: boolean) { super() - this.socketIO = socketIO - this.socketIOClientId = socketIOClientId + this.sseStreamer = sseStreamer + this.chatId = chatId this.skipK = skipK ?? this.skipK this.returnSourceDocuments = returnSourceDocuments ?? this.returnSourceDocuments } @@ -182,18 +281,40 @@ export class CustomChainHandler extends BaseCallbackHandler { if (this.skipK > 0) this.skipK -= 1 } - handleLLMNewToken(token: string) { + handleLLMNewToken( + token: string, + idx?: NewTokenIndices, + runId?: string, + parentRunId?: string, + tags?: string[], + fields?: HandleLLMNewTokenCallbackFields + ): void | Promise { if (this.skipK === 0) { if (!this.isLLMStarted) { this.isLLMStarted = true - this.socketIO.to(this.socketIOClientId).emit('start', token) + if (this.sseStreamer) { + this.sseStreamer.streamStartEvent(this.chatId, token) + } + } + if (this.sseStreamer) { + if (token) { + const chunk = fields?.chunk as ChatGenerationChunk + const message = chunk?.message as AIMessageChunk + const toolCalls = message?.tool_call_chunks || [] + + // Only stream when token is not empty and not a tool call + if (toolCalls.length === 0) { + this.sseStreamer.streamTokenEvent(this.chatId, token) + } + } } - this.socketIO.to(this.socketIOClientId).emit('token', token) } } handleLLMEnd() { - this.socketIO.to(this.socketIOClientId).emit('end') + if (this.sseStreamer) { + this.sseStreamer.streamEndEvent(this.chatId) + } } handleChainEnd(outputs: ChainValues, _: string, parentRunId?: string): void | Promise { @@ -208,22 +329,107 @@ export class CustomChainHandler extends BaseCallbackHandler { const result = cachedValue.split(/(\s+)/) result.forEach((token: string, index: number) => { if (index === 0) { - this.socketIO.to(this.socketIOClientId).emit('start', token) + if (this.sseStreamer) { + this.sseStreamer.streamStartEvent(this.chatId, token) + } + } + if (this.sseStreamer) { + this.sseStreamer.streamTokenEvent(this.chatId, token) } - this.socketIO.to(this.socketIOClientId).emit('token', token) }) - if (this.returnSourceDocuments) { - this.socketIO.to(this.socketIOClientId).emit('sourceDocuments', outputs?.sourceDocuments) + if (this.returnSourceDocuments && this.sseStreamer) { + this.sseStreamer.streamSourceDocumentsEvent(this.chatId, outputs?.sourceDocuments) + } + if (this.sseStreamer) { + this.sseStreamer.streamEndEvent(this.chatId) } - this.socketIO.to(this.socketIOClientId).emit('end') } else { - if (this.returnSourceDocuments) { - this.socketIO.to(this.socketIOClientId).emit('sourceDocuments', outputs?.sourceDocuments) + if (this.returnSourceDocuments && this.sseStreamer) { + this.sseStreamer.streamSourceDocumentsEvent(this.chatId, outputs?.sourceDocuments) } } } } +class ExtendedLunaryHandler extends LunaryHandler { + chatId: string + appDataSource: DataSource + databaseEntities: IDatabaseEntity + currentRunId: string | null + thread: any + apiMessageId: string + + constructor({ flowiseOptions, ...options }: any) { + super(options) + this.appDataSource = flowiseOptions.appDataSource + this.databaseEntities = flowiseOptions.databaseEntities + this.chatId = flowiseOptions.chatId + this.apiMessageId = flowiseOptions.apiMessageId + } + + async initThread() { + const entity = await this.appDataSource.getRepository(this.databaseEntities['Lead']).findOne({ + where: { + chatId: this.chatId + } + }) + + const userId = entity?.email ?? entity?.id + + this.thread = lunary.openThread({ + id: this.chatId, + userId, + userProps: userId + ? { + name: entity?.name ?? undefined, + email: entity?.email ?? undefined, + phone: entity?.phone ?? undefined + } + : undefined + }) + } + + async handleChainStart(chain: any, inputs: any, runId: string, parentRunId?: string, tags?: string[], metadata?: any): Promise { + // First chain (no parent run id) is the user message + if (this.chatId && !parentRunId) { + if (!this.thread) { + await this.initThread() + } + + const messageText = inputs.input || inputs.question + + const messageId = this.thread.trackMessage({ + content: messageText, + role: 'user' + }) + + // Track top level chain id for knowing when we got the final reply + this.currentRunId = runId + + // Use the messageId as the parent of the chain for reconciliation + super.handleChainStart(chain, inputs, runId, messageId, tags, metadata) + } else { + super.handleChainStart(chain, inputs, runId, parentRunId, tags, metadata) + } + } + + async handleChainEnd(outputs: ChainValues, runId: string): Promise { + if (this.chatId && runId === this.currentRunId) { + const answer = outputs.output + + this.thread.trackMessage({ + id: this.apiMessageId, + content: answer, + role: 'assistant' + }) + + this.currentRunId = null + } + + super.handleChainEnd(outputs, runId) + } +} + export const additionalCallbacks = async (nodeData: INodeData, options: ICommonObject) => { try { if (!options.analytic && !process.env.LANGFUSE_SECRET_KEY) return [] @@ -321,19 +527,22 @@ export const additionalCallbacks = async (nodeData: INodeData, options: ICommonO }) callbacks.push(handler) } else if (provider === 'lunary') { - const lunaryAppId = getCredentialParam('lunaryAppId', credentialData, nodeData) + const lunaryPublicKey = getCredentialParam('lunaryAppId', credentialData, nodeData) const lunaryEndpoint = getCredentialParam('lunaryEndpoint', credentialData, nodeData) let lunaryFields = { - appId: lunaryAppId, - apiUrl: lunaryEndpoint ?? 'https://app.lunary.ai' + publicKey: lunaryPublicKey, + apiUrl: lunaryEndpoint ?? 'https://api.lunary.ai', + runtime: 'flowise', + flowiseOptions: options } if (nodeData?.inputs?.analytics?.lunary) { lunaryFields = { ...lunaryFields, ...nodeData?.inputs?.analytics?.lunary } } - const handler = new LunaryHandler(lunaryFields) + const handler = new ExtendedLunaryHandler(lunaryFields) + callbacks.push(handler) } else if (provider === 'langWatch') { const langWatchApiKey = getCredentialParam('langWatchApiKey', credentialData, nodeData) @@ -346,6 +555,48 @@ export const additionalCallbacks = async (nodeData: INodeData, options: ICommonO const trace = langwatch.getTrace() callbacks.push(trace.getLangChainCallback()) + } else if (provider === 'arize') { + const arizeApiKey = getCredentialParam('arizeApiKey', credentialData, nodeData) + const arizeSpaceId = getCredentialParam('arizeSpaceId', credentialData, nodeData) + const arizeEndpoint = getCredentialParam('arizeEndpoint', credentialData, nodeData) + const arizeProject = analytic[provider].projectName as string + + let arizeOptions: ArizeTracerOptions = { + apiKey: arizeApiKey, + spaceId: arizeSpaceId, + baseUrl: arizeEndpoint ?? 'https://otlp.arize.com', + projectName: arizeProject ?? 'default', + sdkIntegration: 'Flowise', + enableCallback: true + } + + if (options.chatId) arizeOptions.sessionId = options.chatId + if (nodeData?.inputs?.analytics?.arize) { + arizeOptions = { ...arizeOptions, ...nodeData?.inputs?.analytics?.arize } + } + + const tracer: Tracer | undefined = getArizeTracer(arizeOptions) + callbacks.push(tracer) + } else if (provider === 'phoenix') { + const phoenixApiKey = getCredentialParam('phoenixApiKey', credentialData, nodeData) + const phoenixEndpoint = getCredentialParam('phoenixEndpoint', credentialData, nodeData) + const phoenixProject = analytic[provider].projectName as string + + let phoenixOptions: PhoenixTracerOptions = { + apiKey: phoenixApiKey, + baseUrl: phoenixEndpoint ?? 'https://app.phoenix.arize.com', + projectName: phoenixProject ?? 'default', + sdkIntegration: 'Flowise', + enableCallback: true + } + + if (options.chatId) phoenixOptions.sessionId = options.chatId + if (nodeData?.inputs?.analytics?.phoenix) { + phoenixOptions = { ...phoenixOptions, ...nodeData?.inputs?.analytics?.phoenix } + } + + const tracer: Tracer | undefined = getPhoenixTracer(phoenixOptions) + callbacks.push(tracer) } } } @@ -404,12 +655,13 @@ export class AnalyticHandler { }) this.handlers['langFuse'] = { client: langfuse } } else if (provider === 'lunary') { - const lunaryAppId = getCredentialParam('lunaryAppId', credentialData, this.nodeData) + const lunaryPublicKey = getCredentialParam('lunaryAppId', credentialData, this.nodeData) const lunaryEndpoint = getCredentialParam('lunaryEndpoint', credentialData, this.nodeData) lunary.init({ - appId: lunaryAppId, - apiUrl: lunaryEndpoint + publicKey: lunaryPublicKey, + apiUrl: lunaryEndpoint, + runtime: 'flowise' }) this.handlers['lunary'] = { client: lunary } @@ -423,6 +675,42 @@ export class AnalyticHandler { }) this.handlers['langWatch'] = { client: langwatch } + } else if (provider === 'arize') { + const arizeApiKey = getCredentialParam('arizeApiKey', credentialData, this.nodeData) + const arizeSpaceId = getCredentialParam('arizeSpaceId', credentialData, this.nodeData) + const arizeEndpoint = getCredentialParam('arizeEndpoint', credentialData, this.nodeData) + const arizeProject = analytic[provider].projectName as string + + let arizeOptions: ArizeTracerOptions = { + apiKey: arizeApiKey, + spaceId: arizeSpaceId, + baseUrl: arizeEndpoint ?? 'https://otlp.arize.com', + projectName: arizeProject ?? 'default', + sdkIntegration: 'Flowise', + enableCallback: false + } + + const arize: Tracer | undefined = getArizeTracer(arizeOptions) + const rootSpan: Span | undefined = undefined + + this.handlers['arize'] = { client: arize, arizeProject, rootSpan } + } else if (provider === 'phoenix') { + const phoenixApiKey = getCredentialParam('phoenixApiKey', credentialData, this.nodeData) + const phoenixEndpoint = getCredentialParam('phoenixEndpoint', credentialData, this.nodeData) + const phoenixProject = analytic[provider].projectName as string + + let phoenixOptions: PhoenixTracerOptions = { + apiKey: phoenixApiKey, + baseUrl: phoenixEndpoint ?? 'https://app.phoenix.arize.com', + projectName: phoenixProject ?? 'default', + sdkIntegration: 'Flowise', + enableCallback: false + } + + const phoenix: Tracer | undefined = getPhoenixTracer(phoenixOptions) + const rootSpan: Span | undefined = undefined + + this.handlers['phoenix'] = { client: phoenix, phoenixProject, rootSpan } } } } @@ -436,7 +724,9 @@ export class AnalyticHandler { langSmith: {}, langFuse: {}, lunary: {}, - langWatch: {} + langWatch: {}, + arize: {}, + phoenix: {} } if (Object.prototype.hasOwnProperty.call(this.handlers, 'langSmith')) { @@ -515,7 +805,6 @@ export class AnalyticHandler { await monitor.trackEvent('chain', 'start', { runId, name, - userId: this.options.chatId, input, ...this.nodeData?.inputs?.analytics?.lunary }) @@ -551,6 +840,74 @@ export class AnalyticHandler { } } + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const tracer: Tracer | undefined = this.handlers['arize'].client + let rootSpan: Span | undefined = this.handlers['arize'].rootSpan + + if (!parentIds || !Object.keys(parentIds).length) { + rootSpan = tracer ? tracer.startSpan('Flowise') : undefined + if (rootSpan) { + rootSpan.setAttribute('session.id', this.options.chatId) + rootSpan.setAttribute('openinference.span.kind', 'CHAIN') + rootSpan.setAttribute('input.value', input) + rootSpan.setAttribute('input.mime_type', 'text/plain') + rootSpan.setAttribute('output.value', '[Object]') + rootSpan.setAttribute('output.mime_type', 'text/plain') + rootSpan.setStatus({ code: SpanStatusCode.OK }) + rootSpan.end() + } + this.handlers['arize'].rootSpan = rootSpan + } + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const chainSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (chainSpan) { + chainSpan.setAttribute('openinference.span.kind', 'CHAIN') + chainSpan.setAttribute('input.value', JSON.stringify(input)) + chainSpan.setAttribute('input.mime_type', 'application/json') + } + const chainSpanId: any = chainSpan?.spanContext().spanId + + this.handlers['arize'].chainSpan = { [chainSpanId]: chainSpan } + returnIds['arize'].chainSpan = chainSpanId + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const tracer: Tracer | undefined = this.handlers['phoenix'].client + let rootSpan: Span | undefined = this.handlers['phoenix'].rootSpan + + if (!parentIds || !Object.keys(parentIds).length) { + rootSpan = tracer ? tracer.startSpan('Flowise') : undefined + if (rootSpan) { + rootSpan.setAttribute('session.id', this.options.chatId) + rootSpan.setAttribute('openinference.span.kind', 'CHAIN') + rootSpan.setAttribute('input.value', input) + rootSpan.setAttribute('input.mime_type', 'text/plain') + rootSpan.setAttribute('output.value', '[Object]') + rootSpan.setAttribute('output.mime_type', 'text/plain') + rootSpan.setStatus({ code: SpanStatusCode.OK }) + rootSpan.end() + } + this.handlers['phoenix'].rootSpan = rootSpan + } + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const chainSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (chainSpan) { + chainSpan.setAttribute('openinference.span.kind', 'CHAIN') + chainSpan.setAttribute('input.value', JSON.stringify(input)) + chainSpan.setAttribute('input.mime_type', 'application/json') + } + const chainSpanId: any = chainSpan?.spanContext().spanId + + this.handlers['phoenix'].chainSpan = { [chainSpanId]: chainSpan } + returnIds['phoenix'].chainSpan = chainSpanId + } + return returnIds } @@ -608,6 +965,26 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const chainSpan: Span | undefined = this.handlers['arize'].chainSpan[returnIds['arize'].chainSpan] + if (chainSpan) { + chainSpan.setAttribute('output.value', JSON.stringify(output)) + chainSpan.setAttribute('output.mime_type', 'application/json') + chainSpan.setStatus({ code: SpanStatusCode.OK }) + chainSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const chainSpan: Span | undefined = this.handlers['phoenix'].chainSpan[returnIds['phoenix'].chainSpan] + if (chainSpan) { + chainSpan.setAttribute('output.value', JSON.stringify(output)) + chainSpan.setAttribute('output.mime_type', 'application/json') + chainSpan.setStatus({ code: SpanStatusCode.OK }) + chainSpan.end() + } + } } async onChainError(returnIds: ICommonObject, error: string | object, shutdown = false) { @@ -666,13 +1043,36 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const chainSpan: Span | undefined = this.handlers['arize'].chainSpan[returnIds['arize'].chainSpan] + if (chainSpan) { + chainSpan.setAttribute('error.value', JSON.stringify(error)) + chainSpan.setAttribute('error.mime_type', 'application/json') + chainSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + chainSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const chainSpan: Span | undefined = this.handlers['phoenix'].chainSpan[returnIds['phoenix'].chainSpan] + if (chainSpan) { + chainSpan.setAttribute('error.value', JSON.stringify(error)) + chainSpan.setAttribute('error.mime_type', 'application/json') + chainSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + chainSpan.end() + } + } } async onLLMStart(name: string, input: string, parentIds: ICommonObject) { const returnIds: ICommonObject = { langSmith: {}, langFuse: {}, - lunary: {} + lunary: {}, + langWatch: {}, + arize: {}, + phoenix: {} } if (Object.prototype.hasOwnProperty.call(this.handlers, 'langSmith')) { @@ -713,7 +1113,6 @@ export class AnalyticHandler { runId, parentRunId: chainEventId, name, - userId: this.options.chatId, input }) this.handlers['lunary'].llmEvent = { [runId]: runId } @@ -733,6 +1132,44 @@ export class AnalyticHandler { } } + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const tracer: Tracer | undefined = this.handlers['arize'].client + const rootSpan: Span | undefined = this.handlers['arize'].rootSpan + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const llmSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (llmSpan) { + llmSpan.setAttribute('openinference.span.kind', 'LLM') + llmSpan.setAttribute('input.value', JSON.stringify(input)) + llmSpan.setAttribute('input.mime_type', 'application/json') + } + const llmSpanId: any = llmSpan?.spanContext().spanId + + this.handlers['arize'].llmSpan = { [llmSpanId]: llmSpan } + returnIds['arize'].llmSpan = llmSpanId + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const tracer: Tracer | undefined = this.handlers['phoenix'].client + const rootSpan: Span | undefined = this.handlers['phoenix'].rootSpan + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const llmSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (llmSpan) { + llmSpan.setAttribute('openinference.span.kind', 'LLM') + llmSpan.setAttribute('input.value', JSON.stringify(input)) + llmSpan.setAttribute('input.mime_type', 'application/json') + } + const llmSpanId: any = llmSpan?.spanContext().spanId + + this.handlers['phoenix'].llmSpan = { [llmSpanId]: llmSpan } + returnIds['phoenix'].llmSpan = llmSpanId + } + return returnIds } @@ -778,6 +1215,26 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const llmSpan: Span | undefined = this.handlers['arize'].llmSpan[returnIds['arize'].llmSpan] + if (llmSpan) { + llmSpan.setAttribute('output.value', JSON.stringify(output)) + llmSpan.setAttribute('output.mime_type', 'application/json') + llmSpan.setStatus({ code: SpanStatusCode.OK }) + llmSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const llmSpan: Span | undefined = this.handlers['phoenix'].llmSpan[returnIds['phoenix'].llmSpan] + if (llmSpan) { + llmSpan.setAttribute('output.value', JSON.stringify(output)) + llmSpan.setAttribute('output.mime_type', 'application/json') + llmSpan.setStatus({ code: SpanStatusCode.OK }) + llmSpan.end() + } + } } async onLLMError(returnIds: ICommonObject, error: string | object) { @@ -822,13 +1279,36 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const llmSpan: Span | undefined = this.handlers['arize'].llmSpan[returnIds['arize'].llmSpan] + if (llmSpan) { + llmSpan.setAttribute('error.value', JSON.stringify(error)) + llmSpan.setAttribute('error.mime_type', 'application/json') + llmSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + llmSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const llmSpan: Span | undefined = this.handlers['phoenix'].llmSpan[returnIds['phoenix'].llmSpan] + if (llmSpan) { + llmSpan.setAttribute('error.value', JSON.stringify(error)) + llmSpan.setAttribute('error.mime_type', 'application/json') + llmSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + llmSpan.end() + } + } } async onToolStart(name: string, input: string | object, parentIds: ICommonObject) { const returnIds: ICommonObject = { langSmith: {}, langFuse: {}, - lunary: {} + lunary: {}, + langWatch: {}, + arize: {}, + phoenix: {} } if (Object.prototype.hasOwnProperty.call(this.handlers, 'langSmith')) { @@ -869,7 +1349,6 @@ export class AnalyticHandler { runId, parentRunId: chainEventId, name, - userId: this.options.chatId, input }) this.handlers['lunary'].toolEvent = { [runId]: runId } @@ -890,6 +1369,44 @@ export class AnalyticHandler { } } + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const tracer: Tracer | undefined = this.handlers['arize'].client + const rootSpan: Span | undefined = this.handlers['arize'].rootSpan + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const toolSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (toolSpan) { + toolSpan.setAttribute('openinference.span.kind', 'TOOL') + toolSpan.setAttribute('input.value', JSON.stringify(input)) + toolSpan.setAttribute('input.mime_type', 'application/json') + } + const toolSpanId: any = toolSpan?.spanContext().spanId + + this.handlers['arize'].toolSpan = { [toolSpanId]: toolSpan } + returnIds['arize'].toolSpan = toolSpanId + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const tracer: Tracer | undefined = this.handlers['phoenix'].client + const rootSpan: Span | undefined = this.handlers['phoenix'].rootSpan + + const rootSpanContext = rootSpan + ? opentelemetry.trace.setSpan(opentelemetry.context.active(), rootSpan as Span) + : opentelemetry.context.active() + const toolSpan = tracer?.startSpan(name, undefined, rootSpanContext) + if (toolSpan) { + toolSpan.setAttribute('openinference.span.kind', 'TOOL') + toolSpan.setAttribute('input.value', JSON.stringify(input)) + toolSpan.setAttribute('input.mime_type', 'application/json') + } + const toolSpanId: any = toolSpan?.spanContext().spanId + + this.handlers['phoenix'].toolSpan = { [toolSpanId]: toolSpan } + returnIds['phoenix'].toolSpan = toolSpanId + } + return returnIds } @@ -935,6 +1452,26 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const toolSpan: Span | undefined = this.handlers['arize'].toolSpan[returnIds['arize'].toolSpan] + if (toolSpan) { + toolSpan.setAttribute('output.value', JSON.stringify(output)) + toolSpan.setAttribute('output.mime_type', 'application/json') + toolSpan.setStatus({ code: SpanStatusCode.OK }) + toolSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const toolSpan: Span | undefined = this.handlers['phoenix'].toolSpan[returnIds['phoenix'].toolSpan] + if (toolSpan) { + toolSpan.setAttribute('output.value', JSON.stringify(output)) + toolSpan.setAttribute('output.mime_type', 'application/json') + toolSpan.setStatus({ code: SpanStatusCode.OK }) + toolSpan.end() + } + } } async onToolError(returnIds: ICommonObject, error: string | object) { @@ -979,5 +1516,25 @@ export class AnalyticHandler { }) } } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'arize')) { + const toolSpan: Span | undefined = this.handlers['arize'].toolSpan[returnIds['arize'].toolSpan] + if (toolSpan) { + toolSpan.setAttribute('error.value', JSON.stringify(error)) + toolSpan.setAttribute('error.mime_type', 'application/json') + toolSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + toolSpan.end() + } + } + + if (Object.prototype.hasOwnProperty.call(this.handlers, 'phoenix')) { + const toolSpan: Span | undefined = this.handlers['phoenix'].toolSpan[returnIds['phoenix'].toolSpan] + if (toolSpan) { + toolSpan.setAttribute('error.value', JSON.stringify(error)) + toolSpan.setAttribute('error.mime_type', 'application/json') + toolSpan.setStatus({ code: SpanStatusCode.ERROR, message: error.toString() }) + toolSpan.end() + } + } } } diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index d47075018ea..ec713bec314 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -9,3 +9,4 @@ export * from './utils' export * from './speechToText' export * from './storageUtils' export * from './handler' +export * from './followUpPrompts' diff --git a/packages/components/src/speechToText.ts b/packages/components/src/speechToText.ts index 821f0221630..fbb659d54e3 100644 --- a/packages/components/src/speechToText.ts +++ b/packages/components/src/speechToText.ts @@ -3,11 +3,15 @@ import { getCredentialData } from './utils' import { type ClientOptions, OpenAIClient, toFile } from '@langchain/openai' import { AssemblyAI } from 'assemblyai' import { getFileFromStorage } from './storageUtils' +import axios from 'axios' +import Groq from 'groq-sdk' const SpeechToTextType = { OPENAI_WHISPER: 'openAIWhisper', ASSEMBLYAI_TRANSCRIBE: 'assemblyAiTranscribe', - LOCALAI_STT: 'localAISTT' + LOCALAI_STT: 'localAISTT', + AZURE_COGNITIVE: 'azureCognitive', + GROQ_WHISPER: 'groqWhisper' } export const convertSpeechToText = async (upload: IFileUpload, speechToTextConfig: ICommonObject, options: ICommonObject) => { @@ -70,6 +74,57 @@ export const convertSpeechToText = async (upload: IFileUpload, speechToTextConfi } break } + case SpeechToTextType.AZURE_COGNITIVE: { + try { + const baseUrl = `https://${credentialData.serviceRegion}.cognitiveservices.azure.com/speechtotext/transcriptions:transcribe` + const apiVersion = credentialData.apiVersion || '2024-05-15-preview' + + const formData = new FormData() + const audioBlob = new Blob([audio_file], { type: upload.type }) + formData.append('audio', audioBlob, upload.name) + + const channelsStr = speechToTextConfig.channels || '0,1' + const channels = channelsStr.split(',').map(Number) + + const definition = { + locales: [speechToTextConfig.language || 'en-US'], + profanityFilterMode: speechToTextConfig.profanityFilterMode || 'Masked', + channels + } + formData.append('definition', JSON.stringify(definition)) + + const response = await axios.post(`${baseUrl}?api-version=${apiVersion}`, formData, { + headers: { + 'Ocp-Apim-Subscription-Key': credentialData.azureSubscriptionKey, + Accept: 'application/json' + } + }) + + if (response.data && response.data.combinedPhrases.length > 0) { + return response.data.combinedPhrases[0]?.text || '' + } + return '' + } catch (error) { + throw error.response?.data || error + } + } + case SpeechToTextType.GROQ_WHISPER: { + const groqClient = new Groq({ + apiKey: credentialData.groqApiKey + }) + const file = await toFile(audio_file, upload.name) + const groqTranscription = await groqClient.audio.transcriptions.create({ + file, + model: speechToTextConfig?.model || 'whisper-large-v3', + language: speechToTextConfig?.language, + temperature: speechToTextConfig?.temperature ? parseFloat(speechToTextConfig.temperature) : undefined, + response_format: 'verbose_json' + }) + if (groqTranscription?.text) { + return groqTranscription.text + } + break + } } } else { throw new Error('Speech to text is not selected, but found a recorded audio file. Please fix the chain.') diff --git a/packages/components/src/storageUtils.ts b/packages/components/src/storageUtils.ts index 8363ebf10f1..3639553e151 100644 --- a/packages/components/src/storageUtils.ts +++ b/packages/components/src/storageUtils.ts @@ -10,6 +10,7 @@ import { } from '@aws-sdk/client-s3' import { Readable } from 'node:stream' import { getUserHome } from './utils' +import sanitize from 'sanitize-filename' export const addBase64FilesToStorage = async (fileBase64: string, chatflowid: string, fileNames: string[]) => { const storageType = getStorageType() @@ -21,7 +22,9 @@ export const addBase64FilesToStorage = async (fileBase64: string, chatflowid: st const bf = Buffer.from(splitDataURI.pop() || '', 'base64') const mime = splitDataURI[0].split(':')[1].split(';')[0] - const Key = chatflowid + '/' + filename + const sanitizedFilename = _sanitizeFilename(filename) + + const Key = chatflowid + '/' + sanitizedFilename const putObjCmd = new PutObjectCommand({ Bucket, Key, @@ -31,7 +34,7 @@ export const addBase64FilesToStorage = async (fileBase64: string, chatflowid: st }) await s3Client.send(putObjCmd) - fileNames.push(filename) + fileNames.push(sanitizedFilename) return 'FILE-STORAGE::' + JSON.stringify(fileNames) } else { const dir = path.join(getStoragePath(), chatflowid) @@ -42,20 +45,23 @@ export const addBase64FilesToStorage = async (fileBase64: string, chatflowid: st const splitDataURI = fileBase64.split(',') const filename = splitDataURI.pop()?.split(':')[1] ?? '' const bf = Buffer.from(splitDataURI.pop() || '', 'base64') + const sanitizedFilename = _sanitizeFilename(filename) - const filePath = path.join(dir, filename) + const filePath = path.join(dir, sanitizedFilename) fs.writeFileSync(filePath, bf) - fileNames.push(filename) + fileNames.push(sanitizedFilename) return 'FILE-STORAGE::' + JSON.stringify(fileNames) } } export const addArrayFilesToStorage = async (mime: string, bf: Buffer, fileName: string, fileNames: string[], ...paths: string[]) => { const storageType = getStorageType() + + const sanitizedFilename = _sanitizeFilename(fileName) if (storageType === 's3') { const { s3Client, Bucket } = getS3Config() - let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + fileName + let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + sanitizedFilename if (Key.startsWith('/')) { Key = Key.substring(1) } @@ -68,27 +74,28 @@ export const addArrayFilesToStorage = async (mime: string, bf: Buffer, fileName: Body: bf }) await s3Client.send(putObjCmd) - fileNames.push(fileName) + fileNames.push(sanitizedFilename) return 'FILE-STORAGE::' + JSON.stringify(fileNames) } else { const dir = path.join(getStoragePath(), ...paths) if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }) } - - const filePath = path.join(dir, fileName) + const filePath = path.join(dir, sanitizedFilename) fs.writeFileSync(filePath, bf) - fileNames.push(fileName) + fileNames.push(sanitizedFilename) return 'FILE-STORAGE::' + JSON.stringify(fileNames) } } export const addSingleFileToStorage = async (mime: string, bf: Buffer, fileName: string, ...paths: string[]) => { const storageType = getStorageType() + const sanitizedFilename = _sanitizeFilename(fileName) + if (storageType === 's3') { const { s3Client, Bucket } = getS3Config() - let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + fileName + let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + sanitizedFilename if (Key.startsWith('/')) { Key = Key.substring(1) } @@ -101,25 +108,57 @@ export const addSingleFileToStorage = async (mime: string, bf: Buffer, fileName: Body: bf }) await s3Client.send(putObjCmd) - return 'FILE-STORAGE::' + fileName + return 'FILE-STORAGE::' + sanitizedFilename } else { const dir = path.join(getStoragePath(), ...paths) if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }) } - - const filePath = path.join(dir, fileName) + const filePath = path.join(dir, sanitizedFilename) fs.writeFileSync(filePath, bf) - return 'FILE-STORAGE::' + fileName + return 'FILE-STORAGE::' + sanitizedFilename + } +} + +export const getFileFromUpload = async (filePath: string): Promise => { + const storageType = getStorageType() + if (storageType === 's3') { + const { s3Client, Bucket } = getS3Config() + + let Key = filePath + // remove the first '/' if it exists + if (Key.startsWith('/')) { + Key = Key.substring(1) + } + const getParams = { + Bucket, + Key + } + + const response = await s3Client.send(new GetObjectCommand(getParams)) + const body = response.Body + if (body instanceof Readable) { + const streamToString = await body.transformToString('base64') + if (streamToString) { + return Buffer.from(streamToString, 'base64') + } + } + // @ts-ignore + const buffer = Buffer.concat(response.Body.toArray()) + return buffer + } else { + return fs.readFileSync(filePath) } } export const getFileFromStorage = async (file: string, ...paths: string[]): Promise => { const storageType = getStorageType() + const sanitizedFilename = _sanitizeFilename(file) + if (storageType === 's3') { const { s3Client, Bucket } = getS3Config() - let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + file + let Key = paths.reduce((acc, cur) => acc + '/' + cur, '') + '/' + sanitizedFilename if (Key.startsWith('/')) { Key = Key.substring(1) } @@ -141,7 +180,7 @@ export const getFileFromStorage = async (file: string, ...paths: string[]): Prom const buffer = Buffer.concat(response.Body.toArray()) return buffer } else { - const fileInStorage = path.join(getStoragePath(), ...paths, file) + const fileInStorage = path.join(getStoragePath(), ...paths, sanitizedFilename) return fs.readFileSync(fileInStorage) } } @@ -175,6 +214,20 @@ export const removeFilesFromStorage = async (...paths: string[]) => { } } +export const removeSpecificFileFromUpload = async (filePath: string) => { + const storageType = getStorageType() + if (storageType === 's3') { + let Key = filePath + // remove the first '/' if it exists + if (Key.startsWith('/')) { + Key = Key.substring(1) + } + await _deleteS3Folder(Key) + } else { + fs.unlinkSync(filePath) + } +} + export const removeSpecificFileFromStorage = async (...paths: string[]) => { const storageType = getStorageType() if (storageType === 's3') { @@ -185,6 +238,11 @@ export const removeSpecificFileFromStorage = async (...paths: string[]) => { } await _deleteS3Folder(Key) } else { + const fileName = paths.pop() + if (fileName) { + const sanitizedFilename = _sanitizeFilename(fileName) + paths.push(sanitizedFilename) + } const file = path.join(getStoragePath(), ...paths) fs.unlinkSync(file) } @@ -282,10 +340,11 @@ export const streamStorageFile = async ( fileName: string ): Promise => { const storageType = getStorageType() + const sanitizedFilename = sanitize(fileName) if (storageType === 's3') { const { s3Client, Bucket } = getS3Config() - const Key = chatflowId + '/' + chatId + '/' + fileName + const Key = chatflowId + '/' + chatId + '/' + sanitizedFilename const getParams = { Bucket, Key @@ -297,7 +356,7 @@ export const streamStorageFile = async ( return Buffer.from(blob) } } else { - const filePath = path.join(getStoragePath(), chatflowId, chatId, fileName) + const filePath = path.join(getStoragePath(), chatflowId, chatId, sanitizedFilename) //raise error if file path is not absolute if (!path.isAbsolute(filePath)) throw new Error(`Invalid file path`) //raise error if file path contains '..' @@ -319,6 +378,7 @@ export const getS3Config = () => { const region = process.env.S3_STORAGE_REGION const Bucket = process.env.S3_STORAGE_BUCKET_NAME const customURL = process.env.S3_ENDPOINT_URL + const forcePathStyle = process.env.S3_FORCE_PATH_STYLE === 'true' ? true : false if (!region || !Bucket) { throw new Error('S3 storage configuration is missing') @@ -335,7 +395,17 @@ export const getS3Config = () => { const s3Client = new S3Client({ credentials, region, - endpoint: customURL + endpoint: customURL, + forcePathStyle: forcePathStyle }) return { s3Client, Bucket } } + +const _sanitizeFilename = (filename: string): string => { + if (filename) { + let sanitizedFilename = sanitize(filename) + // remove all leading . + return sanitizedFilename.replace(/^\.+/, '') + } + return '' +} diff --git a/packages/components/src/utils.ts b/packages/components/src/utils.ts index 6a85a4ba10b..40e1dff57f9 100644 --- a/packages/components/src/utils.ts +++ b/packages/components/src/utils.ts @@ -5,14 +5,40 @@ import * as path from 'path' import { JSDOM } from 'jsdom' import { z } from 'zod' import { DataSource } from 'typeorm' -import { ICommonObject, IDatabaseEntity, IMessage, INodeData, IVariable } from './Interface' +import { ICommonObject, IDatabaseEntity, IDocument, IMessage, INodeData, IVariable, MessageContentImageUrl } from './Interface' import { AES, enc } from 'crypto-js' +import { omit } from 'lodash' import { AIMessage, HumanMessage, BaseMessage } from '@langchain/core/messages' +import { Document } from '@langchain/core/documents' +import { getFileFromStorage } from './storageUtils' +import { GetSecretValueCommand, SecretsManagerClient, SecretsManagerClientConfig } from '@aws-sdk/client-secrets-manager' +import { customGet } from '../nodes/sequentialagents/commonUtils' +import { TextSplitter } from 'langchain/text_splitter' +import { DocumentLoader } from 'langchain/document_loaders/base' export const numberOrExpressionRegex = '^(\\d+\\.?\\d*|{{.*}})$' //return true if string consists only numbers OR expression {{}} export const notEmptyRegex = '(.|\\s)*\\S(.|\\s)*' //return true if string is not empty or blank +export const FLOWISE_CHATID = 'flowise_chatId' + +let secretsManagerClient: SecretsManagerClient | null = null +const USE_AWS_SECRETS_MANAGER = process.env.SECRETKEY_STORAGE_TYPE === 'aws' +if (USE_AWS_SECRETS_MANAGER) { + const region = process.env.SECRETKEY_AWS_REGION || 'us-east-1' // Default region if not provided + const accessKeyId = process.env.SECRETKEY_AWS_ACCESS_KEY + const secretAccessKey = process.env.SECRETKEY_AWS_SECRET_KEY + + let credentials: SecretsManagerClientConfig['credentials'] | undefined + if (accessKeyId && secretAccessKey) { + credentials = { + accessKeyId, + secretAccessKey + } + } + secretsManagerClient = new SecretsManagerClient({ credentials, region }) +} + /* - * List of dependencies allowed to be import in vm2 + * List of dependencies allowed to be import in @flowiseai/nodevm */ export const availableDependencies = [ '@aws-sdk/client-bedrock-runtime', @@ -26,6 +52,22 @@ export const availableDependencies = [ '@google-ai/generativelanguage', '@google/generative-ai', '@huggingface/inference', + '@langchain/anthropic', + '@langchain/aws', + '@langchain/cohere', + '@langchain/community', + '@langchain/core', + '@langchain/google-genai', + '@langchain/google-vertexai', + '@langchain/groq', + '@langchain/langgraph', + '@langchain/mistralai', + '@langchain/mongodb', + '@langchain/ollama', + '@langchain/openai', + '@langchain/pinecone', + '@langchain/qdrant', + '@langchain/weaviate', '@notionhq/client', '@opensearch-project/opensearch', '@pinecone-database/pinecone', @@ -229,7 +271,7 @@ export const getInputVariables = (paramValue: string): string[] => { const variableStartIdx = variableStack[variableStack.length - 1].startIdx const variableEndIdx = startIdx const variableFullPath = returnVal.substring(variableStartIdx, variableEndIdx) - inputVariables.push(variableFullPath) + if (!variableFullPath.includes(':')) inputVariables.push(variableFullPath) variableStack.pop() } startIdx += 1 @@ -237,6 +279,31 @@ export const getInputVariables = (paramValue: string): string[] => { return inputVariables } +/** + * Transform curly braces into double curly braces if the content includes a colon. + * @param input - The original string that may contain { ... } segments. + * @returns The transformed string, where { ... } containing a colon has been replaced with {{ ... }}. + */ +export const transformBracesWithColon = (input: string): string => { + // This regex will match anything of the form `{ ... }` (no nested braces). + // `[^{}]*` means: match any characters that are not `{` or `}` zero or more times. + const regex = /\{([^{}]*?)\}/g + + return input.replace(regex, (match, groupContent) => { + // groupContent is the text inside the braces `{ ... }`. + + if (groupContent.includes(':')) { + // If there's a colon in the content, we turn { ... } into {{ ... }} + // The match is the full string like: "{ answer: hello }" + // groupContent is the inner part like: " answer: hello " + return `{{${groupContent}}}` + } else { + // Otherwise, leave it as is + return match + } + }) +} + /** * Crawl all available urls given a domain url and limit * @param {string} url @@ -311,7 +378,8 @@ function getURLsFromHTML(htmlBody: string, baseURL: string): string[] { */ function normalizeURL(urlString: string): string { const urlObj = new URL(urlString) - const hostPath = urlObj.hostname + urlObj.pathname + urlObj.search + const port = urlObj.port ? `:${urlObj.port}` : '' + const hostPath = urlObj.hostname + port + urlObj.pathname + urlObj.search if (hostPath.length > 0 && hostPath.slice(-1) == '/') { // handling trailing slash return hostPath.slice(0, -1) @@ -484,10 +552,33 @@ const getEncryptionKey = async (): Promise => { * @returns {Promise} */ const decryptCredentialData = async (encryptedData: string): Promise => { - const encryptKey = await getEncryptionKey() - const decryptedData = AES.decrypt(encryptedData, encryptKey) + let decryptedDataStr: string + + if (USE_AWS_SECRETS_MANAGER && secretsManagerClient) { + try { + const command = new GetSecretValueCommand({ SecretId: encryptedData }) + const response = await secretsManagerClient.send(command) + + if (response.SecretString) { + const secretObj = JSON.parse(response.SecretString) + decryptedDataStr = JSON.stringify(secretObj) + } else { + throw new Error('Failed to retrieve secret value.') + } + } catch (error) { + console.error(error) + throw new Error('Credentials could not be decrypted.') + } + } else { + // Fallback to existing code + const encryptKey = await getEncryptionKey() + const decryptedData = AES.decrypt(encryptedData, encryptKey) + decryptedDataStr = decryptedData.toString(enc.Utf8) + } + + if (!decryptedDataStr) return {} try { - return JSON.parse(decryptedData.toString(enc.Utf8)) + return JSON.parse(decryptedDataStr) } catch (e) { console.error(e) throw new Error('Credentials could not be decrypted.') @@ -528,8 +619,19 @@ export const getCredentialData = async (selectedCredentialId: string, options: I } } -export const getCredentialParam = (paramName: string, credentialData: ICommonObject, nodeData: INodeData): any => { - return (nodeData.inputs as ICommonObject)[paramName] ?? credentialData[paramName] ?? undefined +/** + * Get first non falsy value + * + * @param {...any} values + * + * @returns {any|undefined} + */ +export const defaultChain = (...values: any[]): any | undefined => { + return values.filter(Boolean)[0] +} + +export const getCredentialParam = (paramName: string, credentialData: ICommonObject, nodeData: INodeData, defaultValue?: any): any => { + return (nodeData.inputs as ICommonObject)[paramName] ?? credentialData[paramName] ?? defaultValue ?? undefined } // reference https://www.freeformatter.com/json-escape.html @@ -588,14 +690,77 @@ export const getUserHome = (): string => { * @param {IChatMessage[]} chatmessages * @returns {BaseMessage[]} */ -export const mapChatMessageToBaseMessage = (chatmessages: any[] = []): BaseMessage[] => { +export const mapChatMessageToBaseMessage = async (chatmessages: any[] = []): Promise => { const chatHistory = [] for (const message of chatmessages) { if (message.role === 'apiMessage' || message.type === 'apiMessage') { chatHistory.push(new AIMessage(message.content || '')) } else if (message.role === 'userMessage' || message.role === 'userMessage') { - chatHistory.push(new HumanMessage(message.content || '')) + // check for image/files uploads + if (message.fileUploads) { + // example: [{"type":"stored-file","name":"0_DiXc4ZklSTo3M8J4.jpg","mime":"image/jpeg"}] + try { + let messageWithFileUploads = '' + const uploads = JSON.parse(message.fileUploads) + const imageContents: MessageContentImageUrl[] = [] + for (const upload of uploads) { + if (upload.type === 'stored-file' && upload.mime.startsWith('image')) { + const fileData = await getFileFromStorage(upload.name, message.chatflowid, message.chatId) + // as the image is stored in the server, read the file and convert it to base64 + const bf = 'data:' + upload.mime + ';base64,' + fileData.toString('base64') + + imageContents.push({ + type: 'image_url', + image_url: { + url: bf + } + }) + } else if (upload.type === 'url' && upload.mime.startsWith('image')) { + imageContents.push({ + type: 'image_url', + image_url: { + url: upload.data + } + }) + } else if (upload.type === 'stored-file:full') { + const fileLoaderNodeModule = await import('../nodes/documentloaders/File/File') + // @ts-ignore + const fileLoaderNodeInstance = new fileLoaderNodeModule.nodeClass() + const options = { + retrieveAttachmentChatId: true, + chatflowid: message.chatflowid, + chatId: message.chatId + } + const nodeData = { + inputs: { + txtFile: `FILE-STORAGE::${JSON.stringify([upload.name])}` + } + } + const documents: IDocument[] = await fileLoaderNodeInstance.init(nodeData, '', options) + const pageContents = documents.map((doc) => doc.pageContent).join('\n') + messageWithFileUploads += `${pageContents}\n\n` + } + } + const messageContent = messageWithFileUploads ? `${messageWithFileUploads}\n\n${message.content}` : message.content + chatHistory.push( + new HumanMessage({ + content: [ + { + type: 'text', + text: messageContent + }, + ...imageContents + ] + }) + ) + } catch (e) { + // failed to parse fileUploads, continue with text only + chatHistory.push(new HumanMessage(message.content || '')) + } + } else { + chatHistory.push(new HumanMessage(message.content || '')) + } } } return chatHistory @@ -643,14 +808,29 @@ export const convertSchemaToZod = (schema: string | object): ICommonObject => { const zodObj: ICommonObject = {} for (const sch of parsedSchema) { if (sch.type === 'string') { - if (sch.required) z.string({ required_error: `${sch.property} required` }).describe(sch.description) - zodObj[sch.property] = z.string().describe(sch.description) + if (sch.required) { + zodObj[sch.property] = z.string({ required_error: `${sch.property} required` }).describe(sch.description) + } else { + zodObj[sch.property] = z.string().describe(sch.description).optional() + } } else if (sch.type === 'number') { - if (sch.required) z.number({ required_error: `${sch.property} required` }).describe(sch.description) - zodObj[sch.property] = z.number().describe(sch.description) + if (sch.required) { + zodObj[sch.property] = z.number({ required_error: `${sch.property} required` }).describe(sch.description) + } else { + zodObj[sch.property] = z.number().describe(sch.description).optional() + } } else if (sch.type === 'boolean') { - if (sch.required) z.boolean({ required_error: `${sch.property} required` }).describe(sch.description) - zodObj[sch.property] = z.boolean().describe(sch.description) + if (sch.required) { + zodObj[sch.property] = z.boolean({ required_error: `${sch.property} required` }).describe(sch.description) + } else { + zodObj[sch.property] = z.boolean().describe(sch.description).optional() + } + } else if (sch.type === 'date') { + if (sch.required) { + zodObj[sch.property] = z.date({ required_error: `${sch.property} required` }).describe(sch.description) + } else { + zodObj[sch.property] = z.date().describe(sch.description).optional() + } } } return zodObj @@ -804,3 +984,202 @@ export const getVersion: () => Promise<{ version: string }> = async () => { throw new Error('None of the package.json paths could be parsed') } + +/** + * Map Ext to InputField + * @param {string} ext + * @returns {string} + */ +export const mapExtToInputField = (ext: string) => { + switch (ext) { + case '.txt': + return 'txtFile' + case '.pdf': + return 'pdfFile' + case '.json': + return 'jsonFile' + case '.csv': + case '.xls': + case '.xlsx': + return 'csvFile' + case '.jsonl': + return 'jsonlinesFile' + case '.docx': + case '.doc': + return 'docxFile' + case '.yaml': + return 'yamlFile' + default: + return 'txtFile' + } +} + +/** + * Map MimeType to InputField + * @param {string} mimeType + * @returns {string} + */ +export const mapMimeTypeToInputField = (mimeType: string) => { + switch (mimeType) { + case 'text/plain': + return 'txtFile' + case 'application/pdf': + return 'pdfFile' + case 'application/json': + return 'jsonFile' + case 'text/csv': + return 'csvFile' + case 'application/json-lines': + case 'application/jsonl': + case 'text/jsonl': + return 'jsonlinesFile' + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + return 'docxFile' + case 'application/vnd.yaml': + case 'application/x-yaml': + case 'text/vnd.yaml': + case 'text/x-yaml': + case 'text/yaml': + return 'yamlFile' + default: + return 'txtFile' + } +} + +/** + * Map MimeType to Extension + * @param {string} mimeType + * @returns {string} + */ +export const mapMimeTypeToExt = (mimeType: string) => { + switch (mimeType) { + case 'text/plain': + return 'txt' + case 'application/pdf': + return 'pdf' + case 'application/json': + return 'json' + case 'text/csv': + return 'csv' + case 'application/json-lines': + case 'application/jsonl': + case 'text/jsonl': + return 'jsonl' + case 'application/msword': + return 'doc' + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + return 'docx' + case 'application/vnd.ms-excel': + return 'xls' + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + return 'xlsx' + default: + return '' + } +} + +// remove invalid markdown image pattern: ![]() +export const removeInvalidImageMarkdown = (output: string): string => { + return typeof output === 'string' ? output.replace(/!\[.*?\]\((?!https?:\/\/).*?\)/g, '') : output +} + +/** + * Extract output from array + * @param {any} output + * @returns {string} + */ +export const extractOutputFromArray = (output: any): string => { + if (Array.isArray(output)) { + return output.map((o) => o.text).join('\n') + } else if (typeof output === 'object') { + if (output.text) return output.text + else return JSON.stringify(output) + } + return output +} + +/** + * Loop through the object and replace the key with the value + * @param {any} obj + * @param {any} sourceObj + * @returns {any} + */ +export const resolveFlowObjValue = (obj: any, sourceObj: any): any => { + if (typeof obj === 'object' && obj !== null) { + const resolved: any = Array.isArray(obj) ? [] : {} + for (const key in obj) { + const value = obj[key] + resolved[key] = resolveFlowObjValue(value, sourceObj) + } + return resolved + } else if (typeof obj === 'string' && obj.startsWith('$flow')) { + return customGet(sourceObj, obj) + } else { + return obj + } +} + +export const handleDocumentLoaderOutput = (docs: Document[], output: string) => { + if (output === 'document') { + return docs + } else { + let finaltext = '' + for (const doc of docs) { + finaltext += `${doc.pageContent}\n` + } + return handleEscapeCharacters(finaltext, false) + } +} + +export const parseDocumentLoaderMetadata = (metadata: object | string): object => { + if (!metadata) return {} + + if (typeof metadata !== 'object') { + return JSON.parse(metadata) + } + + return metadata +} + +export const handleDocumentLoaderMetadata = ( + docs: Document[], + _omitMetadataKeys: string, + metadata: object | string = {}, + sourceIdKey?: string +) => { + let omitMetadataKeys: string[] = [] + if (_omitMetadataKeys) { + omitMetadataKeys = _omitMetadataKeys.split(',').map((key) => key.trim()) + } + + metadata = parseDocumentLoaderMetadata(metadata) + + return docs.map((doc) => ({ + ...doc, + metadata: + _omitMetadataKeys === '*' + ? metadata + : omit( + { + ...metadata, + ...doc.metadata, + ...(sourceIdKey ? { [sourceIdKey]: doc.metadata[sourceIdKey] || sourceIdKey } : undefined) + }, + omitMetadataKeys + ) + })) +} + +export const handleDocumentLoaderDocuments = async (loader: DocumentLoader, textSplitter?: TextSplitter) => { + let docs: Document[] = [] + + if (textSplitter) { + let splittedDocs = await loader.load() + splittedDocs = await textSplitter.splitDocuments(splittedDocs) + docs = splittedDocs + } else { + docs = await loader.load() + } + + return docs +} diff --git a/packages/docs/docs/developers/environment-variables.md b/packages/docs/docs/developers/environment-variables.md index 6d11862276f..11f11c23268 100644 --- a/packages/docs/docs/developers/environment-variables.md +++ b/packages/docs/docs/developers/environment-variables.md @@ -23,6 +23,7 @@ There are three different .env files you can set environment variables for Answe | LOG_PATH | Path to store log files | Root, Server | | DISABLE_FLOWISE_TELEMETRY | Disable Flowise telemetry when set to true | Root | | IFRAME_ORIGINS | Allowed origins for iframes | Root | +| CHATFLOW_DOMAIN_OVERRIDE | Overrides the chatflowDomain with a specified URL | Root, Web | | VITE_AUTH_DOMAIN | Auth0 domain for authentication | Root, UI | | VITE_AUTH_CLIENT_ID | Auth0 client ID for authentication | Root, UI | | VITE_AUTH_AUDIENCE | Auth0 audience for authentication | Root, UI | diff --git a/packages/docs/package.json b/packages/docs/package.json index de46a23b31f..e902a2c12a9 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -16,7 +16,7 @@ "@docusaurus/preset-classic": "3.5.2", "@mdx-js/react": "^3.0.0", "aai-embed": "workspace:*", - "aai-embed-react": "workspace:^", + "aai-embed-react": "workspace:*", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", @@ -38,7 +38,7 @@ "build": "docusaurus build", "clear": "docusaurus clear", "deploy": "docusaurus deploy", - "dev": "docusaurus start --port 4242", + "docs": "docusaurus start --port 4242", "docusaurus": "docusaurus", "serve": "docusaurus serve", "start": "docusaurus start --port 4242", diff --git a/packages/embed b/packages/embed index 4cc542373d4..0bcd74d0100 160000 --- a/packages/embed +++ b/packages/embed @@ -1 +1 @@ -Subproject commit 4cc542373d4d1c16ef8a67a663e38c257eb92203 +Subproject commit 0bcd74d0100724c011585da89ee7478b2888d97f diff --git a/packages/server/.env.example b/packages/server/.env.example index c6e034c96ed..dabae5a0268 100644 --- a/packages/server/.env.example +++ b/packages/server/.env.example @@ -1,7 +1,14 @@ PORT=3000 +# APIKEY_STORAGE_TYPE=json (json | db) # APIKEY_PATH=/your_api_key_path/.flowise + +# SECRETKEY_STORAGE_TYPE=local #(local | aws) # SECRETKEY_PATH=/your_api_key_path/.flowise +# FLOWISE_SECRETKEY_OVERWRITE=myencryptionkey +# SECRETKEY_AWS_ACCESS_KEY= +# SECRETKEY_AWS_SECRET_KEY= +# SECRETKEY_AWS_REGION=us-west-2 # NUMBER_OF_PROXIES= 1 # CORS_ORIGINS=* @@ -19,11 +26,8 @@ PORT=3000 # FLOWISE_USERNAME=user # FLOWISE_PASSWORD=1234 -# FLOWISE_SECRETKEY_OVERWRITE=myencryptionkey # FLOWISE_FILE_SIZE_LIMIT=50mb -# DISABLE_CHATFLOW_REUSE=true - # DEBUG=true # LOG_PATH=/your_log_path/.flowise/logs # LOG_LEVEL=info (error | warn | info | verbose | debug) @@ -48,6 +52,43 @@ PORT=3000 # S3_STORAGE_SECRET_ACCESS_KEY= # S3_STORAGE_REGION=us-west-2 # S3_ENDPOINT_URL= +# S3_FORCE_PATH_STYLE=false -# APIKEY_STORAGE_TYPE=json (json | db) # SHOW_COMMUNITY_NODES=true +# DISABLED_NODES=bufferMemory,chatOpenAI (comma separated list of node names to disable) + +###################### +# METRICS COLLECTION +####################### +# ENABLE_METRICS=false +# METRICS_PROVIDER=prometheus # prometheus | open_telemetry +# METRICS_INCLUDE_NODE_METRICS=true # default is true +# METRICS_SERVICE_NAME=FlowiseAI + +# ONLY NEEDED if METRICS_PROVIDER=open_telemetry +# METRICS_OPEN_TELEMETRY_METRIC_ENDPOINT=http://localhost:4318/v1/metrics +# METRICS_OPEN_TELEMETRY_PROTOCOL=http # http | grpc | proto (default is http) +# METRICS_OPEN_TELEMETRY_DEBUG=true # default is false + +# Uncomment the following lines to enable global agent proxy +# see https://www.npmjs.com/package/global-agent for more details +# GLOBAL_AGENT_HTTP_PROXY=CorporateHttpProxyUrl +# GLOBAL_AGENT_HTTPS_PROXY=CorporateHttpsProxyUrl +# GLOBAL_AGENT_NO_PROXY=ExceptionHostsToBypassProxyIfNeeded + +###################### +# QUEUE CONFIGURATION +####################### +# MODE=queue #(queue | main) +# QUEUE_NAME=flowise-queue +# QUEUE_REDIS_EVENT_STREAM_MAX_LEN=100000 +# WORKER_CONCURRENCY=100000 +# REDIS_URL= +# REDIS_HOST=localhost +# REDIS_PORT=6379 +# REDIS_USERNAME= +# REDIS_PASSWORD= +# REDIS_TLS= +# REDIS_CERT= +# REDIS_KEY= +# REDIS_CA= diff --git a/packages/server/README-ZH.md b/packages/server/README-ZH.md index 120522c4b64..a8e381b8038 100644 --- a/packages/server/README-ZH.md +++ b/packages/server/README-ZH.md @@ -47,25 +47,44 @@ npx flowise start --PORT=3000 --DEBUG=true ## 🌐 自托管 -### [Railway](https://docs.flowiseai.com/deployment/railway) +在您现有的基础设施中部署自托管的 Flowise,我们支持各种[部署](https://docs.flowiseai.com/configuration/deployment) -[![在Railway上部署](https://railway.app/button.svg)](https://railway.app/template/YK7J0v) +- [AWS](https://docs.flowiseai.com/deployment/aws) +- [Azure](https://docs.flowiseai.com/deployment/azure) +- [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean) +- [GCP](https://docs.flowiseai.com/deployment/gcp) +-

+ 其他 -### [Render](https://docs.flowiseai.com/deployment/render) + - [Railway](https://docs.flowiseai.com/deployment/railway) -[![部署到Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render) + [![在 Railway 上部署](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9) -### [AWS](https://docs.flowiseai.com/deployment/aws) + - [Render](https://docs.flowiseai.com/deployment/render) -### [Azure](https://docs.flowiseai.com/deployment/azure) + [![部署到 Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render) -### [DigitalOcean](https://docs.flowiseai.com/deployment/digital-ocean) + - [HuggingFace Spaces](https://docs.flowiseai.com/deployment/hugging-face) -### [GCP](https://docs.flowiseai.com/deployment/gcp) + HuggingFace Spaces -## 💻 云托管 + - [Elestio](https://elest.io/open-source/flowiseai) -即将推出 + [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/flowiseai) + + - [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + [![部署到 Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + - [RepoCloud](https://repocloud.io/details/?app_id=29) + + [![部署到 RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29) + +
+ +## ☁️ 云托管 + +[开始使用云托管](https://flowiseai.com/) ## 🙋 支持 diff --git a/packages/server/README.md b/packages/server/README.md index 0b93b6ac2cf..5f02c13d1f5 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -60,25 +60,42 @@ pnpm run e2e ## 🌐 Self Host -### [Railway](https://docs.flowiseai.com/deployment/railway) +- [AWS](https://docs.flowiseai.com/deployment/aws) +- [Azure](https://docs.flowiseai.com/deployment/azure) +- [Digital Ocean](https://docs.flowiseai.com/deployment/digital-ocean) +- [GCP](https://docs.flowiseai.com/deployment/gcp) +-
+ Others -[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/YK7J0v) + - [Railway](https://docs.flowiseai.com/deployment/railway) -### [Render](https://docs.flowiseai.com/deployment/render) + [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/pn4G8S?referralCode=WVNPD9) -[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render) + - [Render](https://docs.flowiseai.com/deployment/render) -### [AWS](https://docs.flowiseai.com/deployment/aws) + [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://docs.flowiseai.com/deployment/render) -### [Azure](https://docs.flowiseai.com/deployment/azure) + - [HuggingFace Spaces](https://docs.flowiseai.com/deployment/hugging-face) -### [DigitalOcean](https://docs.flowiseai.com/deployment/digital-ocean) + HuggingFace Spaces -### [GCP](https://docs.flowiseai.com/deployment/gcp) + - [Elestio](https://elest.io/open-source/flowiseai) -## 💻 Cloud Hosted + [![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://elest.io/open-source/flowiseai) -Coming Soon + - [Sealos](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + [![](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dflowise) + + - [RepoCloud](https://repocloud.io/details/?app_id=29) + + [![Deploy on RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploy.png)](https://repocloud.io/details/?app_id=29) + +
+ +## ☁️ Flowise Cloud + +[Get Started with Flowise Cloud](https://flowiseai.com/) ## 🙋 Support diff --git a/packages/server/marketplaces/chatflows/CSV Agent.json b/packages/server/marketplaces/chatflows/CSV Agent.json index 3c04a2a3f1f..120c98e13e1 100644 --- a/packages/server/marketplaces/chatflows/CSV Agent.json +++ b/packages/server/marketplaces/chatflows/CSV Agent.json @@ -243,7 +243,7 @@ "type": "AgentExecutor", "baseClasses": ["AgentExecutor", "BaseChain", "Runnable"], "category": "Agents", - "description": "Agent used to to answer queries on CSV data", + "description": "Agent used to answer queries on CSV data", "inputParams": [ { "label": "Csv File", @@ -301,7 +301,7 @@ "id": "csvAgent_0-output-csvAgent-AgentExecutor|BaseChain|Runnable", "name": "csvAgent", "label": "AgentExecutor", - "description": "Agent used to to answer queries on CSV data", + "description": "Agent used to answer queries on CSV data", "type": "AgentExecutor | BaseChain | Runnable" } ], diff --git a/packages/server/marketplaces/chatflows/SQL DB Chain.json b/packages/server/marketplaces/chatflows/SQL DB Chain.json index b393aefe32a..a2b62b675e8 100644 --- a/packages/server/marketplaces/chatflows/SQL DB Chain.json +++ b/packages/server/marketplaces/chatflows/SQL DB Chain.json @@ -223,7 +223,7 @@ "label": "Connection string or file path (sqlite only)", "name": "url", "type": "string", - "placeholder": "1270.0.0.1:5432/chinook", + "placeholder": "127.0.0.1:5432/chinook", "id": "sqlDatabaseChain_0-input-url-string" }, { diff --git a/packages/server/marketplaces/chatflows/SQL Prompt.json b/packages/server/marketplaces/chatflows/SQL Prompt.json index 086a348f4dc..4e2524b4de1 100644 --- a/packages/server/marketplaces/chatflows/SQL Prompt.json +++ b/packages/server/marketplaces/chatflows/SQL Prompt.json @@ -5,7 +5,7 @@ "nodes": [ { "width": 300, - "height": 513, + "height": 511, "id": "promptTemplate_0", "position": { "x": 384.4880563109088, @@ -65,7 +65,7 @@ }, { "width": 300, - "height": 508, + "height": 507, "id": "llmChain_0", "position": { "x": 770.4559230968546, @@ -164,7 +164,7 @@ }, { "width": 300, - "height": 670, + "height": 669, "id": "chatOpenAI_0", "position": { "x": 376.92707114970364, @@ -343,7 +343,7 @@ }, { "width": 300, - "height": 670, + "height": 669, "id": "chatOpenAI_1", "position": { "x": 2653.726672579251, @@ -522,7 +522,7 @@ }, { "width": 300, - "height": 508, + "height": 507, "id": "llmChain_1", "position": { "x": 3089.9937691022837, @@ -621,7 +621,7 @@ }, { "width": 300, - "height": 670, + "height": 674, "id": "customFunction_2", "position": { "x": -19.95227863012829, @@ -709,7 +709,7 @@ }, { "width": 300, - "height": 670, + "height": 674, "id": "customFunction_1", "position": { "x": 1887.4670208331604, @@ -797,7 +797,7 @@ }, { "width": 300, - "height": 513, + "height": 511, "id": "promptTemplate_1", "position": { "x": 2655.2632506040304, @@ -857,7 +857,7 @@ }, { "width": 300, - "height": 305, + "height": 304, "id": "getVariable_1", "position": { "x": 2272.8555266616872, @@ -919,7 +919,7 @@ }, { "width": 300, - "height": 356, + "height": 355, "id": "setVariable_1", "position": { "x": 1516.338224315744, @@ -991,7 +991,7 @@ }, { "width": 300, - "height": 757, + "height": 765, "id": "ifElseFunction_0", "position": { "x": 1147.8020838770517, @@ -1050,7 +1050,7 @@ "inputs": { "functionInputVariables": "{\"sqlQuery\":\"{{llmChain_0.data.instance}}\"}", "functionName": "IF SQL Query contains SELECT and WHERE", - "ifFunction": "const sqlQuery = $sqlQuery.trim();\n\nif (sqlQuery.includes(\"SELECT\") && sqlQuery.includes(\"WHERE\")) {\n return sqlQuery;\n}", + "ifFunction": "const sqlQuery = $sqlQuery.trim();\n\nconst regex = /SELECT\\s.*?(?:\\n|$)/gi;\n\n// Extracting the SQL part\nconst matches = sqlQuery.match(regex);\nconst cleanSql = matches ? matches[0].trim() : \"\";\n\nif (cleanSql.includes(\"SELECT\") && cleanSql.includes(\"WHERE\")) {\n return cleanSql;\n}", "elseFunction": "return $sqlQuery;" }, "outputAnchors": [ @@ -1092,7 +1092,7 @@ }, { "width": 300, - "height": 513, + "height": 511, "id": "promptTemplate_2", "position": { "x": 1193.7489579044463, @@ -1152,7 +1152,7 @@ }, { "width": 300, - "height": 670, + "height": 669, "id": "chatOpenAI_2", "position": { "x": 1545.1023725538003, @@ -1331,7 +1331,7 @@ }, { "width": 300, - "height": 508, + "height": 507, "id": "llmChain_2", "position": { "x": 1914.509823868027, diff --git a/packages/server/marketplaces/tools/Perplexity AI Search.json b/packages/server/marketplaces/tools/Perplexity AI Search.json index db10f19a9c5..d806650cd60 100644 --- a/packages/server/marketplaces/tools/Perplexity AI Search.json +++ b/packages/server/marketplaces/tools/Perplexity AI Search.json @@ -4,5 +4,5 @@ "color": "linear-gradient(rgb(155,190,84), rgb(176,69,245))", "iconSrc": "https://raw.githubusercontent.com/AsharibAli/project-images/main/perplexity-ai-icon.svg", "schema": "[{\"id\":1,\"property\":\"query\",\"description\":\"Query for research\",\"type\":\"string\",\"required\":true}]", - "func": "const fetch = require('node-fetch');\nconst apiKey = ''; // Put your Perplexity API key here.\n\nconst query = $query;\n\nconst options = {\n\tmethod: 'POST',\n\theaders: {\n\t\t'Content-Type': 'application/json',\n\t\t'Authorization': `Bearer ${apiKey}`\n\t},\n\tbody: JSON.stringify({\n\t\tmodel: 'llama-3.1-sonar-small-128k-online', // Model\n\t\tmessages: [\n\t\t\t{\n\t\t\t\trole: 'system',\n\t\t\t\tcontent: 'You are a market research assistant.'\n\t\t\t},\n\t\t\t{\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: query\n\t\t\t}\n\t\t]\n\t})\n};\n\ntry {\n\tconsole.log(`Sending request with query: ${query}`);\n\tconst response = await fetch('https://api.perplexity.ai/chat/completions', options);\n\tconst data = await response.json();\n\n\tif (!response.ok) {\n\t\tthrow new Error(`API error: ${response.status} ${response.statusText} - ${JSON.stringify(data)}`);\n\t}\n\n\tconsole.log('API response:', data);\n\treturn JSON.stringify(data);\n} catch (error) {\n\tconsole.error('Error occurred while fetching data from Perplexity AI:', error);\n\treturn `Error occurred while fetching data from Perplexity AI: ${error.message}`;\n}" + "func": "const fetch = require('node-fetch');\nconst apiKey = ''; // Put your Perplexity API key here.\n\nconst query = $query;\n\nconst options = {\n\tmethod: 'POST',\n\theaders: {\n\t\t'Content-Type': 'application/json',\n\t\t'Authorization': `Bearer ${apiKey}`\n\t},\n\tbody: JSON.stringify({\n\t\tmodel: 'sonar', // Model\n\t\tmessages: [\n\t\t\t{\n\t\t\t\trole: 'system',\n\t\t\t\tcontent: 'You are a market research assistant.'\n\t\t\t},\n\t\t\t{\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: query\n\t\t\t}\n\t\t]\n\t})\n};\n\ntry {\n\tconsole.log(`Sending request with query: ${query}`);\n\tconst response = await fetch('https://api.perplexity.ai/chat/completions', options);\n\tconst data = await response.json();\n\n\tif (!response.ok) {\n\t\tthrow new Error(`API error: ${response.status} ${response.statusText} - ${JSON.stringify(data)}`);\n\t}\n\n\tconsole.log('API response:', data);\n\treturn JSON.stringify(data);\n} catch (error) {\n\tconsole.error('Error occurred while fetching data from Perplexity AI:', error);\n\treturn `Error occurred while fetching data from Perplexity AI: ${error.message}`;\n}" } diff --git a/packages/server/marketplaces/tools/Print or Export Text Document.json b/packages/server/marketplaces/tools/Print or Export Text Document.json new file mode 100644 index 00000000000..c670bcd6fa3 --- /dev/null +++ b/packages/server/marketplaces/tools/Print or Export Text Document.json @@ -0,0 +1,8 @@ +{ + "name": "print_or_export_text_document", + "description": "Print or export text content to various formats. Supported `inType` values include md, html, and fountain, while supported `outType` values include pdf, epub, zip, and docx. The default `inType` is md, and the default `outType` is pdf. Provide a concise file name for the document in the `name` field. Once the print or export process is initiated, a JSON response will be returned.", + "color": "linear-gradient(rgb(166,129,168), rgb(132,109,140))", + "iconSrc": "https://raw.githubusercontent.com/JotterPad/.github/refs/heads/main/jotterpad.svg", + "schema": "[{\"id\":0,\"property\":\"inType\",\"description\":\"Input type of the document: md, html, fountain\",\"type\":\"string\",\"required\":false},{\"id\":1,\"property\":\"outType\",\"description\":\"Output type of the document: pdf, epub, zip, docx\",\"type\":\"string\",\"required\":false},{\"id\":2,\"property\":\"input\",\"description\":\"Input content of the document.\",\"type\":\"string\",\"required\":false},{\"id\":3,\"property\":\"metadata\",\"description\":\"Metadata of document in JSON string.\",\"type\":\"string\",\"required\":false},{\"id\":4,\"property\":\"name\",\"description\":\"Short title or name of the document.\",\"type\":\"string\",\"required\":false}]", + "func": "const fetch = require('node-fetch');\nconst url = 'https://jotterpad.app/publicApi/v1';\nconst token = 'API_KEY';\nconst frontmatter = `---\nbaseDocumentClass: article\ndocumentClassArg: 12pt,a4paper\ngeometry: left=15mm,right=15mm,bindingoffset=0mm,top=8mm,bottom=15mm\nnoIndent: True\n---\n\n`; // Refer to https://docs.jotterpad.app, https://jotterpad.app/app/templates or https://blog.jotterpad.app/flowise-jotterpads-print-engine/ on how to use.\n\nconst input = frontmatter + ((typeof $input !== \"undefined\") ? $input : '');\n\nconst initOptions = {\n\tmethod: 'POST',\n\theaders: {\n\t\t'Authorization': `Apikey ${token}`,\n\t\t'Content-Type': 'application/json'\n\t},\n\tbody: JSON.stringify({\n\t\tinput,\n\t\tmetadata: (typeof $metadata !== \"undefined\") ? $metadata : '',\n\t\tname: (typeof $name !== \"undefined\") ? $name : 'Untitled Document'\n\t})\n};\n\nconst sleep = (ms) => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, ms);\n\t});\n}\n\ntry {\n\tconst inType = (typeof $inType !== \"undefined\") ? $inType : 'md';\n\tconst outType = (typeof $outType !== \"undefined\") ? $outType : 'pdf';\n\tconst initResponse = await fetch(`${url}/exports/upload/${inType}/${outType}`, initOptions);\n\tconst initJson = await initResponse.json();\n\n\tif (initJson.status === 'ok' && initJson.id) { \n\t\tconst exportId = initJson.id;\n\t\tconst getOptions = {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Authorization': `Apikey ${token}`,\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\texportId\n\t\t\t})\n\t\t};\n\n\t\tfor (let k = 0 ; k < 14 ; k++) {\n\t\t\tawait sleep(k < 6 ? 20000 : 60000);\n\t\t\tconst getResponse = await fetch(`${url}/exports/get`, getOptions);\n\t\t\tconst getJson = await getResponse.json();\n\t\t\tif (getJson.status === 'ok' && getJson.exportedFile) {\n if (getJson.exportedFile.downloadUrl) {\n \t\t\t\treturn JSON.stringify({\"url\": getJson.exportedFile.downloadUrl, \"input\": input});\n }\n\t\t\t} else {\n\t\t\t\tconsole.error(getJson);\n \treturn JSON.stringify({\"error\": `Reason: Couldn't locate document`});\n\t\t\t}\n\t\t}\n \n\t} else if (initJson.status === 'auth_required') {\n\t\tconsole.error(initJson);\n\t\treturn JSON.stringify({\"error\": 'Reason: Invalid API Token'});\n\t} else if (initJson.status) {\n\t\tconsole.error(initJson);\n\t\treturn JSON.stringify({\"error\": `Reason: ${initJson.status}`});\n\t} else {\n\t\tconsole.error(initJson);\n \treturn JSON.stringify({\"error\": `Reason: Unknown`});\n\t}\n} catch (error) {\n\tconsole.error(error);\n\treturn JSON.stringify({\"error\": `Reason: Unknown`});\n}" +} diff --git a/packages/server/package.json b/packages/server/package.json index 8a048422a35..e2938e97d7b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "flowise", - "version": "2.0.4", + "version": "2.2.7", "description": "Flowiseai Server", "main": "dist/index", "types": "dist/index.d.ts", @@ -26,6 +26,8 @@ "nuke": "rimraf dist node_modules .turbo", "start:windows": "cd bin && run start", "start:default": "cd bin && ./run start", + "start-worker:windows": "cd bin && run worker", + "start-worker:default": "cd bin && ./run worker", "dev": "tsc-watch --noClear -p ./tsconfig.json --onSuccess \"pnpm start\"", "oclif-dev": "run-script-os", "oclif-dev:windows": "cd bin && dev start", @@ -61,12 +63,29 @@ "dependencies": { "utils": "workspace:*", "@contentful/rich-text-from-markdown": "^15.16.15", - "@oclif/core": "^3.26.4", + "@aws-sdk/client-secrets-manager": "^3.699.0", + "@oclif/core": "4.0.7", + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/auto-instrumentations-node": "^0.52.0", + "@opentelemetry/core": "1.27.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.54.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.54.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.54.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.54.0", + "@opentelemetry/exporter-trace-otlp-http": "0.54.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.54.0", + "@opentelemetry/resources": "1.27.0", + "@opentelemetry/sdk-metrics": "1.27.0", + "@opentelemetry/sdk-node": "^0.54.0", + "@opentelemetry/sdk-trace-base": "1.27.0", + "@opentelemetry/semantic-conventions": "1.27.0", "@types/lodash": "^4.14.202", "@types/pdf-parse": "^1.1.4", "@types/uuid": "^9.0.7", "async-mutex": "^0.4.0", - "axios": "1.6.2", + "axios": "1.7.9", + "bull-board": "^2.1.3", + "bullmq": "^5.13.2", "content-disposition": "0.5.4", "contentful-management": "^11.7.3", "cors": "^2.8.5", @@ -78,10 +97,11 @@ "express-oauth2-jwt-bearer": "^1.6.0", "express-rate-limit": "^6.9.0", "express-session": "^1.18.1", - "flowise-components": "workspace:^", - "flowise-ui": "workspace:^", + "flowise-components": "workspace:*", + "flowise-ui": "workspace:*", "google-auth-library": "^9.4.0", "googleapis": "^144.0.0", + "global-agent": "^3.0.0", "http-errors": "^2.0.0", "http-status-codes": "^2.3.0", "langchainhub": "^0.0.11", @@ -90,13 +110,18 @@ "moment": "^2.29.3", "moment-timezone": "^0.5.34", "multer": "^1.4.5-lts.1", - "mysql2": "^3.9.2", - "openai": "^4.51.0", "passport": "^0.7.0", "passport-google-oauth20": "^2.0.0", + "multer-s3": "^3.0.1", + "mysql2": "^3.11.3", + "nim-container-manager": "^1.0.4", + "openai": "^4.82.0", "pg": "^8.11.1", "posthog-node": "^3.5.0", + "prom-client": "^15.1.3", + "rate-limit-redis": "^4.2.0", "reflect-metadata": "^0.1.13", + "s3-streamlogger": "^1.11.0", "sanitize-html": "^2.11.0", "stripe": "^17.6.0", "socket.io": "^4.6.1", @@ -116,6 +141,7 @@ "@types/multer": "^1.4.7", "@types/passport": "^1.0.17", "@types/passport-google-oauth20": "^2.0.16", + "@types/multer-s3": "^3.0.3", "@types/sanitize-html": "^2.9.5", "concurrently": "^7.1.0", "cypress": "^13.13.0", diff --git a/packages/server/src/AbortControllerPool.ts b/packages/server/src/AbortControllerPool.ts new file mode 100644 index 00000000000..9d8af011912 --- /dev/null +++ b/packages/server/src/AbortControllerPool.ts @@ -0,0 +1,45 @@ +/** + * This pool is to keep track of abort controllers mapped to chatflowid_chatid + */ +export class AbortControllerPool { + abortControllers: Record = {} + + /** + * Add to the pool + * @param {string} id + * @param {AbortController} abortController + */ + add(id: string, abortController: AbortController) { + this.abortControllers[id] = abortController + } + + /** + * Remove from the pool + * @param {string} id + */ + remove(id: string) { + if (Object.prototype.hasOwnProperty.call(this.abortControllers, id)) { + delete this.abortControllers[id] + } + } + + /** + * Get the abort controller + * @param {string} id + */ + get(id: string) { + return this.abortControllers[id] + } + + /** + * Abort + * @param {string} id + */ + abort(id: string) { + const abortController = this.abortControllers[id] + if (abortController) { + abortController.abort() + this.remove(id) + } + } +} diff --git a/packages/server/src/CachePool.ts b/packages/server/src/CachePool.ts index b59789d2701..b8662a8e9fa 100644 --- a/packages/server/src/CachePool.ts +++ b/packages/server/src/CachePool.ts @@ -1,19 +1,51 @@ -import { IActiveCache } from './Interface' +import { IActiveCache, MODE } from './Interface' +import Redis from 'ioredis' /** * This pool is to keep track of in-memory cache used for LLM and Embeddings */ export class CachePool { + private redisClient: Redis | null = null activeLLMCache: IActiveCache = {} activeEmbeddingCache: IActiveCache = {} + constructor() { + if (process.env.MODE === MODE.QUEUE) { + if (process.env.REDIS_URL) { + this.redisClient = new Redis(process.env.REDIS_URL) + } else { + this.redisClient = new Redis({ + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + tls: + process.env.REDIS_TLS === 'true' + ? { + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + : undefined + }) + } + } + } + /** * Add to the llm cache pool * @param {string} chatflowid * @param {Map} value */ - addLLMCache(chatflowid: string, value: Map) { - this.activeLLMCache[chatflowid] = value + async addLLMCache(chatflowid: string, value: Map) { + if (process.env.MODE === MODE.QUEUE) { + if (this.redisClient) { + const serializedValue = JSON.stringify(Array.from(value.entries())) + await this.redisClient.set(`llmCache:${chatflowid}`, serializedValue) + } + } else { + this.activeLLMCache[chatflowid] = value + } } /** @@ -21,24 +53,60 @@ export class CachePool { * @param {string} chatflowid * @param {Map} value */ - addEmbeddingCache(chatflowid: string, value: Map) { - this.activeEmbeddingCache[chatflowid] = value + async addEmbeddingCache(chatflowid: string, value: Map) { + if (process.env.MODE === MODE.QUEUE) { + if (this.redisClient) { + const serializedValue = JSON.stringify(Array.from(value.entries())) + await this.redisClient.set(`embeddingCache:${chatflowid}`, serializedValue) + } + } else { + this.activeEmbeddingCache[chatflowid] = value + } } /** * Get item from llm cache pool * @param {string} chatflowid */ - getLLMCache(chatflowid: string): Map | undefined { - return this.activeLLMCache[chatflowid] + async getLLMCache(chatflowid: string): Promise | undefined> { + if (process.env.MODE === MODE.QUEUE) { + if (this.redisClient) { + const serializedValue = await this.redisClient.get(`llmCache:${chatflowid}`) + if (serializedValue) { + return new Map(JSON.parse(serializedValue)) + } + } + } else { + return this.activeLLMCache[chatflowid] + } + return undefined } /** * Get item from embedding cache pool * @param {string} chatflowid */ - getEmbeddingCache(chatflowid: string): Map | undefined { - return this.activeEmbeddingCache[chatflowid] + async getEmbeddingCache(chatflowid: string): Promise | undefined> { + if (process.env.MODE === MODE.QUEUE) { + if (this.redisClient) { + const serializedValue = await this.redisClient.get(`embeddingCache:${chatflowid}`) + if (serializedValue) { + return new Map(JSON.parse(serializedValue)) + } + } + } else { + return this.activeEmbeddingCache[chatflowid] + } + return undefined + } + + /** + * Close Redis connection if applicable + */ + async close() { + if (this.redisClient) { + await this.redisClient.quit() + } } } diff --git a/packages/server/src/ChatflowPool.ts b/packages/server/src/ChatflowPool.ts deleted file mode 100644 index 325fac560ff..00000000000 --- a/packages/server/src/ChatflowPool.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ICommonObject } from 'flowise-components' -import { IActiveChatflows, INodeData, IReactFlowNode } from './Interface' -import logger from './utils/logger' - -/** - * This pool is to keep track of active chatflow pools - * so we can prevent building langchain flow all over again - */ -export class ChatflowPool { - activeChatflows: IActiveChatflows = {} - - /** - * Add to the pool - * @param {string} chatflowid - * @param {INodeData} endingNodeData - * @param {IReactFlowNode[]} startingNodes - * @param {ICommonObject} overrideConfig - */ - add(chatflowid: string, endingNodeData: INodeData | undefined, startingNodes: IReactFlowNode[], overrideConfig?: ICommonObject) { - this.activeChatflows[chatflowid] = { - startingNodes, - endingNodeData, - inSync: true - } - if (overrideConfig) this.activeChatflows[chatflowid].overrideConfig = overrideConfig - logger.info(`[server]: Chatflow ${chatflowid} added into ChatflowPool`) - } - - /** - * Update to the pool - * @param {string} chatflowid - * @param {boolean} inSync - */ - updateInSync(chatflowid: string, inSync: boolean) { - if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) { - this.activeChatflows[chatflowid].inSync = inSync - logger.info(`[server]: Chatflow ${chatflowid} updated inSync=${inSync} in ChatflowPool`) - } - } - - /** - * Remove from the pool - * @param {string} chatflowid - */ - async remove(chatflowid: string) { - if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) { - delete this.activeChatflows[chatflowid] - logger.info(`[server]: Chatflow ${chatflowid} removed from ChatflowPool`) - } - } -} diff --git a/packages/server/src/Interface.DocumentStore.ts b/packages/server/src/Interface.DocumentStore.ts index e319fa74876..34750fe4dae 100644 --- a/packages/server/src/Interface.DocumentStore.ts +++ b/packages/server/src/Interface.DocumentStore.ts @@ -1,4 +1,9 @@ +import { ICommonObject } from 'flowise-components' import { DocumentStore } from './database/entities/DocumentStore' +import { DataSource } from 'typeorm' +import { IComponentNodes } from './Interface' +import { Telemetry } from './utils/telemetry' +import { CachePool } from './CachePool' export enum DocumentStoreStatus { EMPTY_SYNC = 'EMPTY', @@ -36,23 +41,25 @@ export interface IDocumentStoreFileChunk { export interface IDocumentStoreFileChunkPagedResponse { chunks: IDocumentStoreFileChunk[] count: number + characters: number file?: IDocumentStoreLoader currentPage: number storeName: string description: string + docId: string } export interface IDocumentStoreLoader { - id: string - loaderId: string - loaderName: string - loaderConfig: any // JSON string - splitterId: string - splitterName: string - splitterConfig: any // JSON string - totalChunks: number - totalChars: number - status: DocumentStoreStatus + id?: string + loaderId?: string + loaderName?: string + loaderConfig?: any // JSON string + splitterId?: string + splitterName?: string + splitterConfig?: any // JSON string + totalChunks?: number + totalChars?: number + status?: DocumentStoreStatus storeId?: string files?: IDocumentStoreLoaderFile[] source?: string @@ -60,9 +67,47 @@ export interface IDocumentStoreLoader { } export interface IDocumentStoreLoaderForPreview extends IDocumentStoreLoader { - rehydrated: boolean - preview: boolean - previewChunkCount: number + rehydrated?: boolean + preview?: boolean + previewChunkCount?: number + userId: string + organizationId: string +} + +export interface IDocumentStoreUpsertData { + docId: string + metadata?: string | object + replaceExisting?: boolean + createNewDocStore?: boolean + docStore?: IDocumentStore + loader?: { + name: string + config: ICommonObject + } + splitter?: { + name: string + config: ICommonObject + } + vectorStore?: { + name: string + config: ICommonObject + } + embedding?: { + name: string + config: ICommonObject + } + recordManager?: { + name: string + config: ICommonObject + } + userId: string + organizationId: string +} + +export interface IDocumentStoreRefreshData { + items: IDocumentStoreUpsertData[] + userId: string + organizationId: string } export interface IDocumentStoreLoaderFile { @@ -72,11 +117,119 @@ export interface IDocumentStoreLoaderFile { size: number status: DocumentStoreStatus uploaded: Date + userId: string + organizationId: string } export interface IDocumentStoreWhereUsed { id: string name: string + userId: string + organizationId: string +} + +export interface IUpsertQueueAppServer { + appDataSource: DataSource + componentNodes: IComponentNodes + telemetry: Telemetry + cachePool?: CachePool + userId: string + organizationId: string +} + +export interface IExecuteDocStoreUpsert extends IUpsertQueueAppServer { + storeId: string + totalItems: IDocumentStoreUpsertData[] + files: Express.Multer.File[] + isRefreshAPI: boolean + userId: string + organizationId: string +} + +export interface IExecutePreviewLoader extends Omit { + data: IDocumentStoreLoaderForPreview + isPreviewOnly: boolean + telemetry?: Telemetry +} + +export interface IExecuteProcessLoader extends IUpsertQueueAppServer { + data: IDocumentStoreLoaderForPreview + docLoaderId: string + isProcessWithoutUpsert: boolean +} + +export interface IExecuteVectorStoreInsert extends IUpsertQueueAppServer { + data: ICommonObject + isStrictSave: boolean + isVectorStoreInsert: boolean + userId: string + organizationId: string +} + +const getFileName = (fileBase64: string) => { + let fileNames = [] + if (fileBase64.startsWith('FILE-STORAGE::')) { + const names = fileBase64.substring(14) + if (names.includes('[') && names.includes(']')) { + const files = JSON.parse(names) + return files.join(', ') + } else { + return fileBase64.substring(14) + } + } + if (fileBase64.startsWith('[') && fileBase64.endsWith(']')) { + const files = JSON.parse(fileBase64) + for (const file of files) { + const splitDataURI = file.split(',') + const filename = splitDataURI[splitDataURI.length - 1].split(':')[1] + fileNames.push(filename) + } + return fileNames.join(', ') + } else { + const splitDataURI = fileBase64.split(',') + const filename = splitDataURI[splitDataURI.length - 1].split(':')[1] + return filename + } +} + +export const addLoaderSource = (loader: IDocumentStoreLoader, isGetFileNameOnly = false) => { + let source = 'None' + + const handleUnstructuredFileLoader = (config: any, isGetFileNameOnly: boolean): string => { + if (config.fileObject) { + return isGetFileNameOnly ? getFileName(config.fileObject) : config.fileObject.replace('FILE-STORAGE::', '') + } + return config.filePath || 'None' + } + + switch (loader.loaderId) { + case 'pdfFile': + case 'jsonFile': + case 'csvFile': + case 'file': + case 'jsonlinesFile': + case 'txtFile': + source = isGetFileNameOnly + ? getFileName(loader.loaderConfig?.[loader.loaderId]) + : loader.loaderConfig?.[loader.loaderId]?.replace('FILE-STORAGE::', '') || 'None' + break + case 'apiLoader': + source = loader.loaderConfig?.url + ' (' + loader.loaderConfig?.method + ')' + break + case 'cheerioWebScraper': + case 'playwrightWebScraper': + case 'puppeteerWebScraper': + source = loader.loaderConfig?.url || 'None' + break + case 'unstructuredFileLoader': + source = handleUnstructuredFileLoader(loader.loaderConfig || {}, isGetFileNameOnly) + break + default: + source = 'None' + break + } + + return source } export class DocumentStoreDTO { @@ -130,40 +283,9 @@ export class DocumentStoreDTO { if (entity.loaders) { documentStoreDTO.loaders = JSON.parse(entity.loaders) documentStoreDTO.loaders.map((loader) => { - documentStoreDTO.totalChars += loader.totalChars - documentStoreDTO.totalChunks += loader.totalChunks - switch (loader.loaderId) { - case 'pdfFile': - loader.source = loader.loaderConfig.pdfFile.replace('FILE-STORAGE::', '') - break - case 'apiLoader': - loader.source = loader.loaderConfig.url + ' (' + loader.loaderConfig.method + ')' - break - case 'cheerioWebScraper': - loader.source = loader.loaderConfig.url - break - case 'playwrightWebScraper': - loader.source = loader.loaderConfig.url - break - case 'puppeteerWebScraper': - loader.source = loader.loaderConfig.url - break - case 'jsonFile': - loader.source = loader.loaderConfig.jsonFile.replace('FILE-STORAGE::', '') - break - case 'docxFile': - loader.source = loader.loaderConfig.docxFile.replace('FILE-STORAGE::', '') - break - case 'textFile': - loader.source = loader.loaderConfig.txtFile.replace('FILE-STORAGE::', '') - break - case 'unstructuredFileLoader': - loader.source = loader.loaderConfig.filePath - break - default: - loader.source = 'None' - break - } + documentStoreDTO.totalChars += loader.totalChars || 0 + documentStoreDTO.totalChunks += loader.totalChunks || 0 + loader.source = addLoaderSource(loader) if (loader.status !== 'SYNC') { documentStoreDTO.status = DocumentStoreStatus.STALE } diff --git a/packages/server/src/Interface.Metrics.ts b/packages/server/src/Interface.Metrics.ts new file mode 100644 index 00000000000..e437631cc16 --- /dev/null +++ b/packages/server/src/Interface.Metrics.ts @@ -0,0 +1,25 @@ +export interface IMetricsProvider { + getName(): string + initializeCounters(): void + setupMetricsEndpoint(): void + incrementCounter(counter: FLOWISE_METRIC_COUNTERS, payload: any): void +} + +export enum FLOWISE_COUNTER_STATUS { + SUCCESS = 'success', + FAILURE = 'failure' +} + +export enum FLOWISE_METRIC_COUNTERS { + CHATFLOW_CREATED = 'chatflow_created', + AGENTFLOW_CREATED = 'agentflow_created', + ASSISTANT_CREATED = 'assistant_created', + TOOL_CREATED = 'tool_created', + VECTORSTORE_UPSERT = 'vector_upserted', + + CHATFLOW_PREDICTION_INTERNAL = 'chatflow_prediction_internal', + CHATFLOW_PREDICTION_EXTERNAL = 'chatflow_prediction_external', + + AGENTFLOW_PREDICTION_INTERNAL = 'agentflow_prediction_internal', + AGENTFLOW_PREDICTION_EXTERNAL = 'agentflow_prediction_external' +} diff --git a/packages/server/src/Interface.ts b/packages/server/src/Interface.ts index 3b4074b933e..b64bc50c210 100644 --- a/packages/server/src/Interface.ts +++ b/packages/server/src/Interface.ts @@ -1,12 +1,29 @@ -import { IAction } from 'flowise-components' -import { ICommonObject, IFileUpload, INode, INodeData as INodeDataFromComponent, INodeParams } from 'flowise-components' +import { + IAction, + ICommonObject, + IFileUpload, + INode, + INodeData as INodeDataFromComponent, + INodeParams, + IServerSideEventStreamer +} from 'flowise-components' +import { DataSource } from 'typeorm' +import { CachePool } from './CachePool' +import { Telemetry } from './utils/telemetry' import { ChatflowVisibility } from './database/entities/ChatFlow' export type MessageType = 'apiMessage' | 'userMessage' -export type ChatflowType = 'CHATFLOW' | 'MULTIAGENT' +export type ChatflowType = 'CHATFLOW' | 'MULTIAGENT' | 'ASSISTANT' -export enum chatType { +export type AssistantType = 'CUSTOM' | 'OPENAI' | 'AZURE' + +export enum MODE { + QUEUE = 'queue', + MAIN = 'main' +} + +export enum ChatType { INTERNAL = 'INTERNAL', EXTERNAL = 'EXTERNAL' } @@ -45,13 +62,15 @@ export interface IChatFlow { isPublic?: boolean apikeyid?: string analytic?: string + speechToText?: string chatbotConfig?: string + followUpPrompts?: string apiConfig?: string category?: string visibility?: string[] type?: ChatflowType - userId?: string - organizationId?: string + userId: string + organizationId: string displayMode?: string embeddedUrl?: string } @@ -66,6 +85,7 @@ export interface IChatMessage { fileAnnotations?: string agentReasoning?: string fileUploads?: string + artifacts?: string chatType: string chatId: string userId: string @@ -74,6 +94,7 @@ export interface IChatMessage { createdDate: Date leadEmail?: string action?: string | null + followUpPrompts?: string } export interface IChatMessageFeedback { @@ -240,7 +261,6 @@ export interface IMessage { export interface IncomingInput { question: string overrideConfig?: ICommonObject - socketIOClientId?: string chatId?: string stopNodeId?: string uploads?: IFileUpload[] @@ -248,6 +268,7 @@ export interface IncomingInput { history?: IMessage[] action?: IAction chatType?: string + streaming?: boolean } export interface IActiveChatflows { @@ -256,6 +277,7 @@ export interface IActiveChatflows { endingNodeData?: INodeData inSync: boolean overrideConfig?: ICommonObject + chatId?: string } } @@ -313,6 +335,63 @@ export interface IPaidPlan { usedExecutions: number createdDate: Date } +export interface ICustomTemplate { + id: string + name: string + flowData: string + updatedDate: Date + createdDate: Date + description?: string + type?: string + badge?: string + framework?: string + usecases?: string +} + +export interface IFlowConfig { + chatflowid: string + chatId: string + sessionId: string + chatHistory: IMessage[] + apiMessageId: string + overrideConfig?: ICommonObject +} + +export interface IPredictionQueueAppServer { + appDataSource: DataSource + componentNodes: IComponentNodes + sseStreamer: IServerSideEventStreamer + telemetry: Telemetry + cachePool: CachePool +} + +export interface IExecuteFlowParams extends IPredictionQueueAppServer { + incomingInput: IncomingInput + chatflow: IChatFlow + chatId: string + baseURL: string + isInternal: boolean + signal?: AbortController + files?: Express.Multer.File[] + isUpsert?: boolean + user: IUser +} + +export interface INodeOverrides { + [key: string]: { + label: string + name: string + type: string + enabled: boolean + }[] +} + +export interface IVariableOverride { + id: string + name: string + type: 'static' | 'runtime' + enabled: boolean +} // DocumentStore related export * from './Interface.DocumentStore' diff --git a/packages/server/src/NodesPool.ts b/packages/server/src/NodesPool.ts index 16604c34598..0ec14b86ffa 100644 --- a/packages/server/src/NodesPool.ts +++ b/packages/server/src/NodesPool.ts @@ -24,6 +24,7 @@ export class NodesPool { * Initialize nodes */ private async initializeNodes() { + const disabled_nodes = process.env.DISABLED_NODES ? process.env.DISABLED_NODES.split(',') : [] const packagePath = getNodeModulesPackagePath('flowise-components') const nodesPath = path.join(packagePath, 'dist', 'nodes') const nodeFiles = await this.getFiles(nodesPath) @@ -65,7 +66,9 @@ export class NodesPool { let conditionTwo = true if (!isCommunityNodesAllowed && isAuthorPresent) conditionTwo = false - if (conditionOne && conditionTwo) { + const isDisabled = disabled_nodes.includes(newNodeInstance.name) + + if (conditionOne && conditionTwo && !isDisabled) { this.componentNodes[newNodeInstance.name] = newNodeInstance } } diff --git a/packages/server/src/commands/base.ts b/packages/server/src/commands/base.ts new file mode 100644 index 00000000000..5bed81e5628 --- /dev/null +++ b/packages/server/src/commands/base.ts @@ -0,0 +1,201 @@ +import { Command, Flags } from '@oclif/core' +import path from 'path' +import dotenv from 'dotenv' +import logger from '../utils/logger' + +dotenv.config({ path: path.join(__dirname, '..', '..', '.env'), override: true }) + +enum EXIT_CODE { + SUCCESS = 0, + FAILED = 1 +} + +export abstract class BaseCommand extends Command { + static flags = { + FLOWISE_USERNAME: Flags.string(), + FLOWISE_PASSWORD: Flags.string(), + FLOWISE_FILE_SIZE_LIMIT: Flags.string(), + PORT: Flags.string(), + CORS_ORIGINS: Flags.string(), + IFRAME_ORIGINS: Flags.string(), + DEBUG: Flags.string(), + BLOB_STORAGE_PATH: Flags.string(), + APIKEY_STORAGE_TYPE: Flags.string(), + APIKEY_PATH: Flags.string(), + LOG_PATH: Flags.string(), + LOG_LEVEL: Flags.string(), + TOOL_FUNCTION_BUILTIN_DEP: Flags.string(), + TOOL_FUNCTION_EXTERNAL_DEP: Flags.string(), + NUMBER_OF_PROXIES: Flags.string(), + DATABASE_TYPE: Flags.string(), + DATABASE_PATH: Flags.string(), + DATABASE_PORT: Flags.string(), + DATABASE_HOST: Flags.string(), + DATABASE_NAME: Flags.string(), + DATABASE_USER: Flags.string(), + DATABASE_PASSWORD: Flags.string(), + DATABASE_SSL: Flags.string(), + DATABASE_SSL_KEY_BASE64: Flags.string(), + LANGCHAIN_TRACING_V2: Flags.string(), + LANGCHAIN_ENDPOINT: Flags.string(), + LANGCHAIN_API_KEY: Flags.string(), + LANGCHAIN_PROJECT: Flags.string(), + DISABLE_FLOWISE_TELEMETRY: Flags.string(), + MODEL_LIST_CONFIG_JSON: Flags.string(), + STORAGE_TYPE: Flags.string(), + S3_STORAGE_BUCKET_NAME: Flags.string(), + S3_STORAGE_ACCESS_KEY_ID: Flags.string(), + S3_STORAGE_SECRET_ACCESS_KEY: Flags.string(), + S3_STORAGE_REGION: Flags.string(), + S3_ENDPOINT_URL: Flags.string(), + S3_FORCE_PATH_STYLE: Flags.string(), + SHOW_COMMUNITY_NODES: Flags.string(), + SECRETKEY_STORAGE_TYPE: Flags.string(), + SECRETKEY_PATH: Flags.string(), + FLOWISE_SECRETKEY_OVERWRITE: Flags.string(), + SECRETKEY_AWS_ACCESS_KEY: Flags.string(), + SECRETKEY_AWS_SECRET_KEY: Flags.string(), + SECRETKEY_AWS_REGION: Flags.string(), + DISABLED_NODES: Flags.string(), + MODE: Flags.string(), + WORKER_CONCURRENCY: Flags.string(), + QUEUE_NAME: Flags.string(), + QUEUE_REDIS_EVENT_STREAM_MAX_LEN: Flags.string(), + REDIS_URL: Flags.string(), + REDIS_HOST: Flags.string(), + REDIS_PORT: Flags.string(), + REDIS_USERNAME: Flags.string(), + REDIS_PASSWORD: Flags.string(), + REDIS_TLS: Flags.string(), + REDIS_CERT: Flags.string(), + REDIS_KEY: Flags.string(), + REDIS_CA: Flags.string() + } + + protected async stopProcess() { + // Overridden method by child class + } + + protected onTerminate() { + return async () => { + try { + // Shut down the app after timeout if it ever stuck removing pools + setTimeout(async () => { + logger.info('Flowise was forced to shut down after 30 secs') + await this.failExit() + }, 30000) + + await this.stopProcess() + } catch (error) { + logger.error('There was an error shutting down Flowise...', error) + } + } + } + + protected async gracefullyExit() { + process.exit(EXIT_CODE.SUCCESS) + } + + protected async failExit() { + process.exit(EXIT_CODE.FAILED) + } + + async init(): Promise { + await super.init() + + process.on('SIGTERM', this.onTerminate()) + process.on('SIGINT', this.onTerminate()) + + // Prevent throw new Error from crashing the app + // TODO: Get rid of this and send proper error message to ui + process.on('uncaughtException', (err) => { + logger.error('uncaughtException: ', err) + }) + + process.on('unhandledRejection', (err) => { + logger.error('unhandledRejection: ', err) + }) + + const { flags } = await this.parse(BaseCommand) + if (flags.PORT) process.env.PORT = flags.PORT + if (flags.CORS_ORIGINS) process.env.CORS_ORIGINS = flags.CORS_ORIGINS + if (flags.IFRAME_ORIGINS) process.env.IFRAME_ORIGINS = flags.IFRAME_ORIGINS + if (flags.DEBUG) process.env.DEBUG = flags.DEBUG + if (flags.NUMBER_OF_PROXIES) process.env.NUMBER_OF_PROXIES = flags.NUMBER_OF_PROXIES + if (flags.SHOW_COMMUNITY_NODES) process.env.SHOW_COMMUNITY_NODES = flags.SHOW_COMMUNITY_NODES + if (flags.DISABLED_NODES) process.env.DISABLED_NODES = flags.DISABLED_NODES + + // Authorization + if (flags.FLOWISE_USERNAME) process.env.FLOWISE_USERNAME = flags.FLOWISE_USERNAME + if (flags.FLOWISE_PASSWORD) process.env.FLOWISE_PASSWORD = flags.FLOWISE_PASSWORD + if (flags.APIKEY_STORAGE_TYPE) process.env.APIKEY_STORAGE_TYPE = flags.APIKEY_STORAGE_TYPE + if (flags.APIKEY_PATH) process.env.APIKEY_PATH = flags.APIKEY_PATH + + // API Configuration + if (flags.FLOWISE_FILE_SIZE_LIMIT) process.env.FLOWISE_FILE_SIZE_LIMIT = flags.FLOWISE_FILE_SIZE_LIMIT + + // Credentials + if (flags.SECRETKEY_STORAGE_TYPE) process.env.SECRETKEY_STORAGE_TYPE = flags.SECRETKEY_STORAGE_TYPE + if (flags.SECRETKEY_PATH) process.env.SECRETKEY_PATH = flags.SECRETKEY_PATH + if (flags.FLOWISE_SECRETKEY_OVERWRITE) process.env.FLOWISE_SECRETKEY_OVERWRITE = flags.FLOWISE_SECRETKEY_OVERWRITE + if (flags.SECRETKEY_AWS_ACCESS_KEY) process.env.SECRETKEY_AWS_ACCESS_KEY = flags.SECRETKEY_AWS_ACCESS_KEY + if (flags.SECRETKEY_AWS_SECRET_KEY) process.env.SECRETKEY_AWS_SECRET_KEY = flags.SECRETKEY_AWS_SECRET_KEY + if (flags.SECRETKEY_AWS_REGION) process.env.SECRETKEY_AWS_REGION = flags.SECRETKEY_AWS_REGION + + // Logs + if (flags.LOG_PATH) process.env.LOG_PATH = flags.LOG_PATH + if (flags.LOG_LEVEL) process.env.LOG_LEVEL = flags.LOG_LEVEL + + // Tool functions + if (flags.TOOL_FUNCTION_BUILTIN_DEP) process.env.TOOL_FUNCTION_BUILTIN_DEP = flags.TOOL_FUNCTION_BUILTIN_DEP + if (flags.TOOL_FUNCTION_EXTERNAL_DEP) process.env.TOOL_FUNCTION_EXTERNAL_DEP = flags.TOOL_FUNCTION_EXTERNAL_DEP + + // Database config + if (flags.DATABASE_TYPE) process.env.DATABASE_TYPE = flags.DATABASE_TYPE + if (flags.DATABASE_PATH) process.env.DATABASE_PATH = flags.DATABASE_PATH + if (flags.DATABASE_PORT) process.env.DATABASE_PORT = flags.DATABASE_PORT + if (flags.DATABASE_HOST) process.env.DATABASE_HOST = flags.DATABASE_HOST + if (flags.DATABASE_NAME) process.env.DATABASE_NAME = flags.DATABASE_NAME + if (flags.DATABASE_USER) process.env.DATABASE_USER = flags.DATABASE_USER + if (flags.DATABASE_PASSWORD) process.env.DATABASE_PASSWORD = flags.DATABASE_PASSWORD + if (flags.DATABASE_SSL) process.env.DATABASE_SSL = flags.DATABASE_SSL + if (flags.DATABASE_SSL_KEY_BASE64) process.env.DATABASE_SSL_KEY_BASE64 = flags.DATABASE_SSL_KEY_BASE64 + + // Langsmith tracing + if (flags.LANGCHAIN_TRACING_V2) process.env.LANGCHAIN_TRACING_V2 = flags.LANGCHAIN_TRACING_V2 + if (flags.LANGCHAIN_ENDPOINT) process.env.LANGCHAIN_ENDPOINT = flags.LANGCHAIN_ENDPOINT + if (flags.LANGCHAIN_API_KEY) process.env.LANGCHAIN_API_KEY = flags.LANGCHAIN_API_KEY + if (flags.LANGCHAIN_PROJECT) process.env.LANGCHAIN_PROJECT = flags.LANGCHAIN_PROJECT + + // Telemetry + if (flags.DISABLE_FLOWISE_TELEMETRY) process.env.DISABLE_FLOWISE_TELEMETRY = flags.DISABLE_FLOWISE_TELEMETRY + + // Model list config + if (flags.MODEL_LIST_CONFIG_JSON) process.env.MODEL_LIST_CONFIG_JSON = flags.MODEL_LIST_CONFIG_JSON + + // Storage + if (flags.STORAGE_TYPE) process.env.STORAGE_TYPE = flags.STORAGE_TYPE + if (flags.BLOB_STORAGE_PATH) process.env.BLOB_STORAGE_PATH = flags.BLOB_STORAGE_PATH + if (flags.S3_STORAGE_BUCKET_NAME) process.env.S3_STORAGE_BUCKET_NAME = flags.S3_STORAGE_BUCKET_NAME + if (flags.S3_STORAGE_ACCESS_KEY_ID) process.env.S3_STORAGE_ACCESS_KEY_ID = flags.S3_STORAGE_ACCESS_KEY_ID + if (flags.S3_STORAGE_SECRET_ACCESS_KEY) process.env.S3_STORAGE_SECRET_ACCESS_KEY = flags.S3_STORAGE_SECRET_ACCESS_KEY + if (flags.S3_STORAGE_REGION) process.env.S3_STORAGE_REGION = flags.S3_STORAGE_REGION + if (flags.S3_ENDPOINT_URL) process.env.S3_ENDPOINT_URL = flags.S3_ENDPOINT_URL + if (flags.S3_FORCE_PATH_STYLE) process.env.S3_FORCE_PATH_STYLE = flags.S3_FORCE_PATH_STYLE + + // Queue + if (flags.MODE) process.env.MODE = flags.MODE + if (flags.REDIS_URL) process.env.REDIS_URL = flags.REDIS_URL + if (flags.REDIS_HOST) process.env.REDIS_HOST = flags.REDIS_HOST + if (flags.REDIS_PORT) process.env.REDIS_PORT = flags.REDIS_PORT + if (flags.REDIS_USERNAME) process.env.REDIS_USERNAME = flags.REDIS_USERNAME + if (flags.REDIS_PASSWORD) process.env.REDIS_PASSWORD = flags.REDIS_PASSWORD + if (flags.REDIS_TLS) process.env.REDIS_TLS = flags.REDIS_TLS + if (flags.REDIS_CERT) process.env.REDIS_CERT = flags.REDIS_CERT + if (flags.REDIS_KEY) process.env.REDIS_KEY = flags.REDIS_KEY + if (flags.REDIS_CA) process.env.REDIS_CA = flags.REDIS_CA + if (flags.WORKER_CONCURRENCY) process.env.WORKER_CONCURRENCY = flags.WORKER_CONCURRENCY + if (flags.QUEUE_NAME) process.env.QUEUE_NAME = flags.QUEUE_NAME + if (flags.QUEUE_REDIS_EVENT_STREAM_MAX_LEN) process.env.QUEUE_REDIS_EVENT_STREAM_MAX_LEN = flags.QUEUE_REDIS_EVENT_STREAM + } +} diff --git a/packages/server/src/commands/start.ts b/packages/server/src/commands/start.ts index 27a3b1a4c7d..3dcf19c6e05 100644 --- a/packages/server/src/commands/start.ts +++ b/packages/server/src/commands/start.ts @@ -1,19 +1,21 @@ -import { Command, Flags } from '@oclif/core' -import path from 'path' import * as Server from '../index' import * as DataSource from '../DataSource' -import dotenv from 'dotenv' import logger from '../utils/logger' - -dotenv.config({ path: path.join(__dirname, '..', '..', '.env'), override: true }) +import { BaseCommand } from './base' +import { Flags } from '@oclif/core' enum EXIT_CODE { SUCCESS = 0, FAILED = 1 } let processExitCode = EXIT_CODE.SUCCESS +export default class Start extends BaseCommand { + async run(): Promise { + logger.info('Starting Flowise...') + await DataSource.init() + await Server.start() + } -export default class Start extends Command { static args: any = [] static flags = { FLOWISE_USERNAME: Flags.string(), @@ -26,14 +28,11 @@ export default class Start extends Command { BLOB_STORAGE_PATH: Flags.string(), APIKEY_STORAGE_TYPE: Flags.string(), APIKEY_PATH: Flags.string(), - SECRETKEY_PATH: Flags.string(), - FLOWISE_SECRETKEY_OVERWRITE: Flags.string(), LOG_PATH: Flags.string(), LOG_LEVEL: Flags.string(), TOOL_FUNCTION_BUILTIN_DEP: Flags.string(), TOOL_FUNCTION_EXTERNAL_DEP: Flags.string(), NUMBER_OF_PROXIES: Flags.string(), - DISABLE_CHATFLOW_REUSE: Flags.string(), DATABASE_TYPE: Flags.string(), DATABASE_PATH: Flags.string(), DATABASE_PORT: Flags.string(), @@ -55,126 +54,140 @@ export default class Start extends Command { S3_STORAGE_SECRET_ACCESS_KEY: Flags.string(), S3_STORAGE_REGION: Flags.string(), S3_ENDPOINT_URL: Flags.string(), - SHOW_COMMUNITY_NODES: Flags.string() + S3_FORCE_PATH_STYLE: Flags.string(), + SHOW_COMMUNITY_NODES: Flags.string(), + SECRETKEY_STORAGE_TYPE: Flags.string(), + SECRETKEY_PATH: Flags.string(), + FLOWISE_SECRETKEY_OVERWRITE: Flags.string(), + SECRETKEY_AWS_ACCESS_KEY: Flags.string(), + SECRETKEY_AWS_SECRET_KEY: Flags.string(), + SECRETKEY_AWS_REGION: Flags.string(), + DISABLED_NODES: Flags.string(), + MODE: Flags.string(), + WORKER_CONCURRENCY: Flags.string(), + QUEUE_NAME: Flags.string(), + QUEUE_REDIS_EVENT_STREAM_MAX_LEN: Flags.string(), + REDIS_URL: Flags.string(), + REDIS_HOST: Flags.string(), + REDIS_PORT: Flags.string(), + REDIS_USERNAME: Flags.string(), + REDIS_PASSWORD: Flags.string(), + REDIS_TLS: Flags.string(), + REDIS_CERT: Flags.string(), + REDIS_KEY: Flags.string(), + REDIS_CA: Flags.string() } async stopProcess() { - logger.info('Shutting down Flowise...') try { - // Shut down the app after timeout if it ever stuck removing pools - setTimeout(() => { - logger.info('Flowise was forced to shut down after 30 secs') - process.exit(processExitCode) - }, 30000) - - // Removing pools + logger.info(`Shutting down Flowise...`) const serverApp = Server.getInstance() if (serverApp) await serverApp.stopApp() } catch (error) { logger.error('There was an error shutting down Flowise...', error) + await this.failExit() } - process.exit(processExitCode) } - async run(): Promise { - process.on('SIGTERM', this.stopProcess) - process.on('SIGINT', this.stopProcess) - - // Prevent throw new Error from crashing the app - // TODO: Get rid of this and send proper error message to ui - process.on('uncaughtException', (err) => { - logger.error('uncaughtException: ', err) - }) - - process.on('unhandledRejection', (err) => { - logger.error('unhandledRejection: ', err) - }) - - const { flags } = await this.parse(Start) - - if (flags.PORT) process.env.PORT = flags.PORT - if (flags.CORS_ORIGINS) process.env.CORS_ORIGINS = flags.CORS_ORIGINS - if (flags.IFRAME_ORIGINS) process.env.IFRAME_ORIGINS = flags.IFRAME_ORIGINS - if (flags.DEBUG) process.env.DEBUG = flags.DEBUG - if (flags.NUMBER_OF_PROXIES) process.env.NUMBER_OF_PROXIES = flags.NUMBER_OF_PROXIES - if (flags.DISABLE_CHATFLOW_REUSE) process.env.DISABLE_CHATFLOW_REUSE = flags.DISABLE_CHATFLOW_REUSE - if (flags.SHOW_COMMUNITY_NODES) process.env.SHOW_COMMUNITY_NODES = flags.SHOW_COMMUNITY_NODES - - // Authorization - if (flags.FLOWISE_USERNAME) process.env.FLOWISE_USERNAME = flags.FLOWISE_USERNAME - if (flags.FLOWISE_PASSWORD) process.env.FLOWISE_PASSWORD = flags.FLOWISE_PASSWORD - if (flags.APIKEY_STORAGE_TYPE) process.env.APIKEY_STORAGE_TYPE = flags.APIKEY_STORAGE_TYPE - if (flags.APIKEY_PATH) process.env.APIKEY_PATH = flags.APIKEY_PATH - - // API Configuration - if (flags.FLOWISE_FILE_SIZE_LIMIT) process.env.FLOWISE_FILE_SIZE_LIMIT = flags.FLOWISE_FILE_SIZE_LIMIT - - // Credentials - if (flags.SECRETKEY_PATH) process.env.SECRETKEY_PATH = flags.SECRETKEY_PATH - if (flags.FLOWISE_SECRETKEY_OVERWRITE) process.env.FLOWISE_SECRETKEY_OVERWRITE = flags.FLOWISE_SECRETKEY_OVERWRITE - - // Logs - if (flags.LOG_PATH) process.env.LOG_PATH = flags.LOG_PATH - if (flags.LOG_LEVEL) process.env.LOG_LEVEL = flags.LOG_LEVEL - - // Tool functions - if (flags.TOOL_FUNCTION_BUILTIN_DEP) process.env.TOOL_FUNCTION_BUILTIN_DEP = flags.TOOL_FUNCTION_BUILTIN_DEP - if (flags.TOOL_FUNCTION_EXTERNAL_DEP) process.env.TOOL_FUNCTION_EXTERNAL_DEP = flags.TOOL_FUNCTION_EXTERNAL_DEP - - // Database config - if (flags.DATABASE_TYPE) process.env.DATABASE_TYPE = flags.DATABASE_TYPE - if (flags.DATABASE_PATH) process.env.DATABASE_PATH = flags.DATABASE_PATH - if (flags.DATABASE_PORT) process.env.DATABASE_PORT = flags.DATABASE_PORT - if (flags.DATABASE_HOST) process.env.DATABASE_HOST = flags.DATABASE_HOST - if (flags.DATABASE_NAME) process.env.DATABASE_NAME = flags.DATABASE_NAME - if (flags.DATABASE_USER) process.env.DATABASE_USER = flags.DATABASE_USER - if (flags.DATABASE_PASSWORD) process.env.DATABASE_PASSWORD = flags.DATABASE_PASSWORD - if (flags.DATABASE_SSL) process.env.DATABASE_SSL = flags.DATABASE_SSL - if (flags.DATABASE_SSL_KEY_BASE64) process.env.DATABASE_SSL_KEY_BASE64 = flags.DATABASE_SSL_KEY_BASE64 - - // Copilot database secret - if (process.env.DATABASE_SECRET) { - const { engine, host, port, dbname, username, password } = JSON.parse(process.env.DATABASE_SECRET) - process.env.DATABASE_HOST = host - process.env.DATABASE_PORT = port - process.env.DATABASE_NAME = dbname - process.env.DATABASE_USER = username - process.env.DATABASE_PASSWORD = password - process.env.DATABASE_TYPE = engine - } - - // Langsmith tracing - if (flags.LANGCHAIN_TRACING_V2) process.env.LANGCHAIN_TRACING_V2 = flags.LANGCHAIN_TRACING_V2 - if (flags.LANGCHAIN_ENDPOINT) process.env.LANGCHAIN_ENDPOINT = flags.LANGCHAIN_ENDPOINT - if (flags.LANGCHAIN_API_KEY) process.env.LANGCHAIN_API_KEY = flags.LANGCHAIN_API_KEY - if (flags.LANGCHAIN_PROJECT) process.env.LANGCHAIN_PROJECT = flags.LANGCHAIN_PROJECT - - // Telemetry - if (flags.DISABLE_FLOWISE_TELEMETRY) process.env.DISABLE_FLOWISE_TELEMETRY = flags.DISABLE_FLOWISE_TELEMETRY - - // Model list config - if (flags.MODEL_LIST_CONFIG_JSON) process.env.MODEL_LIST_CONFIG_JSON = flags.MODEL_LIST_CONFIG_JSON - - // Storage - if (flags.STORAGE_TYPE) process.env.STORAGE_TYPE = flags.STORAGE_TYPE - if (flags.BLOB_STORAGE_PATH) process.env.BLOB_STORAGE_PATH = flags.BLOB_STORAGE_PATH - if (flags.S3_STORAGE_BUCKET_NAME) process.env.S3_STORAGE_BUCKET_NAME = flags.S3_STORAGE_BUCKET_NAME - if (flags.S3_STORAGE_ACCESS_KEY_ID) process.env.S3_STORAGE_ACCESS_KEY_ID = flags.S3_STORAGE_ACCESS_KEY_ID - if (flags.S3_STORAGE_SECRET_ACCESS_KEY) process.env.S3_STORAGE_SECRET_ACCESS_KEY = flags.S3_STORAGE_SECRET_ACCESS_KEY - if (flags.S3_STORAGE_REGION) process.env.S3_STORAGE_REGION = flags.S3_STORAGE_REGION - if (flags.S3_ENDPOINT_URL) process.env.S3_ENDPOINT_URL = flags.S3_ENDPOINT_URL - - await (async () => { - try { - logger.info('Starting Flowise...') - await DataSource.init() - await Server.start() - } catch (error) { - logger.error('There was an error starting Flowise...', error) - processExitCode = EXIT_CODE.FAILED - // @ts-ignore - process.emit('SIGINT') - } - })() - } + // async run(): Promise { + // process.on('SIGTERM', this.stopProcess) + // process.on('SIGINT', this.stopProcess) + + // // Prevent throw new Error from crashing the app + // // TODO: Get rid of this and send proper error message to ui + // process.on('uncaughtException', (err) => { + // logger.error('uncaughtException: ', err) + // }) + + // process.on('unhandledRejection', (err) => { + // logger.error('unhandledRejection: ', err) + // }) + + // const { flags } = await this.parse(Start) + + // if (flags.PORT) process.env.PORT = flags.PORT + // if (flags.CORS_ORIGINS) process.env.CORS_ORIGINS = flags.CORS_ORIGINS + // if (flags.IFRAME_ORIGINS) process.env.IFRAME_ORIGINS = flags.IFRAME_ORIGINS + // if (flags.DEBUG) process.env.DEBUG = flags.DEBUG + // if (flags.NUMBER_OF_PROXIES) process.env.NUMBER_OF_PROXIES = flags.NUMBER_OF_PROXIES + // if (flags.DISABLE_CHATFLOW_REUSE) process.env.DISABLE_CHATFLOW_REUSE = flags.DISABLE_CHATFLOW_REUSE + // if (flags.SHOW_COMMUNITY_NODES) process.env.SHOW_COMMUNITY_NODES = flags.SHOW_COMMUNITY_NODES + + // // Authorization + // if (flags.FLOWISE_USERNAME) process.env.FLOWISE_USERNAME = flags.FLOWISE_USERNAME + // if (flags.FLOWISE_PASSWORD) process.env.FLOWISE_PASSWORD = flags.FLOWISE_PASSWORD + // if (flags.APIKEY_STORAGE_TYPE) process.env.APIKEY_STORAGE_TYPE = flags.APIKEY_STORAGE_TYPE + // if (flags.APIKEY_PATH) process.env.APIKEY_PATH = flags.APIKEY_PATH + + // // API Configuration + // if (flags.FLOWISE_FILE_SIZE_LIMIT) process.env.FLOWISE_FILE_SIZE_LIMIT = flags.FLOWISE_FILE_SIZE_LIMIT + + // // Credentials + // if (flags.SECRETKEY_PATH) process.env.SECRETKEY_PATH = flags.SECRETKEY_PATH + // if (flags.FLOWISE_SECRETKEY_OVERWRITE) process.env.FLOWISE_SECRETKEY_OVERWRITE = flags.FLOWISE_SECRETKEY_OVERWRITE + + // // Logs + // if (flags.LOG_PATH) process.env.LOG_PATH = flags.LOG_PATH + // if (flags.LOG_LEVEL) process.env.LOG_LEVEL = flags.LOG_LEVEL + + // // Tool functions + // if (flags.TOOL_FUNCTION_BUILTIN_DEP) process.env.TOOL_FUNCTION_BUILTIN_DEP = flags.TOOL_FUNCTION_BUILTIN_DEP + // if (flags.TOOL_FUNCTION_EXTERNAL_DEP) process.env.TOOL_FUNCTION_EXTERNAL_DEP = flags.TOOL_FUNCTION_EXTERNAL_DEP + + // // Database config + // if (flags.DATABASE_TYPE) process.env.DATABASE_TYPE = flags.DATABASE_TYPE + // if (flags.DATABASE_PATH) process.env.DATABASE_PATH = flags.DATABASE_PATH + // if (flags.DATABASE_PORT) process.env.DATABASE_PORT = flags.DATABASE_PORT + // if (flags.DATABASE_HOST) process.env.DATABASE_HOST = flags.DATABASE_HOST + // if (flags.DATABASE_NAME) process.env.DATABASE_NAME = flags.DATABASE_NAME + // if (flags.DATABASE_USER) process.env.DATABASE_USER = flags.DATABASE_USER + // if (flags.DATABASE_PASSWORD) process.env.DATABASE_PASSWORD = flags.DATABASE_PASSWORD + // if (flags.DATABASE_SSL) process.env.DATABASE_SSL = flags.DATABASE_SSL + // if (flags.DATABASE_SSL_KEY_BASE64) process.env.DATABASE_SSL_KEY_BASE64 = flags.DATABASE_SSL_KEY_BASE64 + + // // Copilot database secret + // if (process.env.DATABASE_SECRET) { + // const { engine, host, port, dbname, username, password } = JSON.parse(process.env.DATABASE_SECRET) + // process.env.DATABASE_HOST = host + // process.env.DATABASE_PORT = port + // process.env.DATABASE_NAME = dbname + // process.env.DATABASE_USER = username + // process.env.DATABASE_PASSWORD = password + // process.env.DATABASE_TYPE = engine + // } + + // // Langsmith tracing + // if (flags.LANGCHAIN_TRACING_V2) process.env.LANGCHAIN_TRACING_V2 = flags.LANGCHAIN_TRACING_V2 + // if (flags.LANGCHAIN_ENDPOINT) process.env.LANGCHAIN_ENDPOINT = flags.LANGCHAIN_ENDPOINT + // if (flags.LANGCHAIN_API_KEY) process.env.LANGCHAIN_API_KEY = flags.LANGCHAIN_API_KEY + // if (flags.LANGCHAIN_PROJECT) process.env.LANGCHAIN_PROJECT = flags.LANGCHAIN_PROJECT + + // // Telemetry + // if (flags.DISABLE_FLOWISE_TELEMETRY) process.env.DISABLE_FLOWISE_TELEMETRY = flags.DISABLE_FLOWISE_TELEMETRY + + // // Model list config + // if (flags.MODEL_LIST_CONFIG_JSON) process.env.MODEL_LIST_CONFIG_JSON = flags.MODEL_LIST_CONFIG_JSON + + // // Storage + // if (flags.STORAGE_TYPE) process.env.STORAGE_TYPE = flags.STORAGE_TYPE + // if (flags.BLOB_STORAGE_PATH) process.env.BLOB_STORAGE_PATH = flags.BLOB_STORAGE_PATH + // if (flags.S3_STORAGE_BUCKET_NAME) process.env.S3_STORAGE_BUCKET_NAME = flags.S3_STORAGE_BUCKET_NAME + // if (flags.S3_STORAGE_ACCESS_KEY_ID) process.env.S3_STORAGE_ACCESS_KEY_ID = flags.S3_STORAGE_ACCESS_KEY_ID + // if (flags.S3_STORAGE_SECRET_ACCESS_KEY) process.env.S3_STORAGE_SECRET_ACCESS_KEY = flags.S3_STORAGE_SECRET_ACCESS_KEY + // if (flags.S3_STORAGE_REGION) process.env.S3_STORAGE_REGION = flags.S3_STORAGE_REGION + // if (flags.S3_ENDPOINT_URL) process.env.S3_ENDPOINT_URL = flags.S3_ENDPOINT_URL + + // await (async () => { + // try { + // logger.info('Starting Flowise...') + // await DataSource.init() + // await Server.start() + // } catch (error) { + // logger.error('There was an error starting Flowise...', error) + // processExitCode = EXIT_CODE.FAILED + // // @ts-ignore + // process.emit('SIGINT') + // } + // })() + // } } diff --git a/packages/server/src/commands/worker.ts b/packages/server/src/commands/worker.ts new file mode 100644 index 00000000000..ce0a304396f --- /dev/null +++ b/packages/server/src/commands/worker.ts @@ -0,0 +1,103 @@ +import logger from '../utils/logger' +import { QueueManager } from '../queue/QueueManager' +import { BaseCommand } from './base' +import { getDataSource } from '../DataSource' +import { Telemetry } from '../utils/telemetry' +import { NodesPool } from '../NodesPool' +import { CachePool } from '../CachePool' +import { QueueEvents, QueueEventsListener } from 'bullmq' +import { AbortControllerPool } from '../AbortControllerPool' + +interface CustomListener extends QueueEventsListener { + abort: (args: { id: string }, id: string) => void +} + +export default class Worker extends BaseCommand { + predictionWorkerId: string + upsertionWorkerId: string + + async run(): Promise { + logger.info('Starting Flowise Worker...') + + const { appDataSource, telemetry, componentNodes, cachePool, abortControllerPool } = await this.prepareData() + + const queueManager = QueueManager.getInstance() + queueManager.setupAllQueues({ + componentNodes, + telemetry, + cachePool, + appDataSource, + abortControllerPool + }) + + /** Prediction */ + const predictionQueue = queueManager.getQueue('prediction') + const predictionWorker = predictionQueue.createWorker() + this.predictionWorkerId = predictionWorker.id + logger.info(`Prediction Worker ${this.predictionWorkerId} created`) + + const predictionQueueName = predictionQueue.getQueueName() + const queueEvents = new QueueEvents(predictionQueueName, { connection: queueManager.getConnection() }) + + queueEvents.on('abort', async ({ id }: { id: string }) => { + abortControllerPool.abort(id) + }) + + /** Upsertion */ + const upsertionQueue = queueManager.getQueue('upsert') + const upsertionWorker = upsertionQueue.createWorker() + this.upsertionWorkerId = upsertionWorker.id + logger.info(`Upsertion Worker ${this.upsertionWorkerId} created`) + + // Keep the process running + process.stdin.resume() + } + + async prepareData() { + // Init database + const appDataSource = getDataSource() + await appDataSource.initialize() + await appDataSource.runMigrations({ transaction: 'each' }) + + // Initialize abortcontroller pool + const abortControllerPool = new AbortControllerPool() + + // Init telemetry + const telemetry = new Telemetry() + + // Initialize nodes pool + const nodesPool = new NodesPool() + await nodesPool.initialize() + + // Initialize cache pool + const cachePool = new CachePool() + + return { appDataSource, telemetry, componentNodes: nodesPool.componentNodes, cachePool, abortControllerPool } + } + + async catch(error: Error) { + if (error.stack) logger.error(error.stack) + await new Promise((resolve) => { + setTimeout(resolve, 1000) + }) + await this.failExit() + } + + async stopProcess() { + try { + const queueManager = QueueManager.getInstance() + const predictionWorker = queueManager.getQueue('prediction').getWorker() + logger.info(`Shutting down Flowise Prediction Worker ${this.predictionWorkerId}...`) + await predictionWorker.close() + + const upsertWorker = queueManager.getQueue('upsert').getWorker() + logger.info(`Shutting down Flowise Upsertion Worker ${this.upsertionWorkerId}...`) + await upsertWorker.close() + } catch (error) { + logger.error('There was an error shutting down Flowise Worker...', error) + await this.failExit() + } + + await this.gracefullyExit() + } +} diff --git a/packages/server/src/controllers/assistants/index.ts b/packages/server/src/controllers/assistants/index.ts index c252dc56616..2180a4c7f12 100644 --- a/packages/server/src/controllers/assistants/index.ts +++ b/packages/server/src/controllers/assistants/index.ts @@ -2,6 +2,7 @@ import { Request, Response, NextFunction } from 'express' import assistantsService from '../../services/assistants' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { StatusCodes } from 'http-status-codes' +import { AssistantType } from '../../Interface' const createAssistant = async (req: Request, res: Response, next: NextFunction) => { try { @@ -35,7 +36,8 @@ const deleteAssistant = async (req: Request, res: Response, next: NextFunction) const getAllAssistants = async (req: Request, res: Response, next: NextFunction) => { try { - const apiResponse = await assistantsService.getAllAssistants() + const type = req.query.type as AssistantType + const apiResponse = await assistantsService.getAllAssistants(type) return res.json(apiResponse) } catch (error) { next(error) @@ -78,10 +80,56 @@ const updateAssistant = async (req: Request, res: Response, next: NextFunction) } } +const getChatModels = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await assistantsService.getChatModels() + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const getDocumentStores = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await assistantsService.getDocumentStores() + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const getTools = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await assistantsService.getTools() + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const generateAssistantInstruction = async (req: Request, res: Response, next: NextFunction) => { + try { + if (!req.body) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: assistantsController.generateAssistantInstruction - body not provided!` + ) + } + const apiResponse = await assistantsService.generateAssistantInstruction(req.body.task, req.body.selectedChatModel) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + export default { createAssistant, deleteAssistant, getAllAssistants, getAssistantById, - updateAssistant + updateAssistant, + getChatModels, + getDocumentStores, + getTools, + generateAssistantInstruction } diff --git a/packages/server/src/controllers/attachments/index.ts b/packages/server/src/controllers/attachments/index.ts new file mode 100644 index 00000000000..9f87f5eaf48 --- /dev/null +++ b/packages/server/src/controllers/attachments/index.ts @@ -0,0 +1,15 @@ +import { Request, Response, NextFunction } from 'express' +import attachmentsService from '../../services/attachments' + +const createAttachment = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await attachmentsService.createAttachment(req) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +export default { + createAttachment +} diff --git a/packages/server/src/controllers/chat-messages/index.ts b/packages/server/src/controllers/chat-messages/index.ts index 4d6ecca4419..16e4a608ca5 100644 --- a/packages/server/src/controllers/chat-messages/index.ts +++ b/packages/server/src/controllers/chat-messages/index.ts @@ -1,13 +1,36 @@ import { Request, Response, NextFunction } from 'express' -import { ChatMessageRatingType, chatType, IReactFlowObject } from '../../Interface' +import { ChatMessageRatingType, ChatType, IReactFlowObject } from '../../Interface' import chatflowsService from '../../services/chatflows' import chatMessagesService from '../../services/chat-messages' -import { clearSessionMemory } from '../../utils' +import { aMonthAgo, clearSessionMemory } from '../../utils' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' -import { FindOptionsWhere } from 'typeorm' +import { Between, DeleteResult, FindOptionsWhere, In } from 'typeorm' import { ChatMessage } from '../../database/entities/ChatMessage' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { StatusCodes } from 'http-status-codes' +import { utilGetChatMessage } from '../../utils/getChatMessage' + +const getFeedbackTypeFilters = (_feedbackTypeFilters: ChatMessageRatingType[]): ChatMessageRatingType[] | undefined => { + try { + let feedbackTypeFilters + const feedbackTypeFilterArray = JSON.parse(JSON.stringify(_feedbackTypeFilters)) + if ( + feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_UP) && + feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_DOWN) + ) { + feedbackTypeFilters = [ChatMessageRatingType.THUMBS_UP, ChatMessageRatingType.THUMBS_DOWN] + } else if (feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_UP)) { + feedbackTypeFilters = [ChatMessageRatingType.THUMBS_UP] + } else if (feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_DOWN)) { + feedbackTypeFilters = [ChatMessageRatingType.THUMBS_DOWN] + } else { + feedbackTypeFilters = undefined + } + return feedbackTypeFilters + } catch (e) { + return _feedbackTypeFilters + } +} const createChatMessage = async (req: Request, res: Response, next: NextFunction) => { try { @@ -18,7 +41,7 @@ const createChatMessage = async (req: Request, res: Response, next: NextFunction ) } const apiResponse = await chatMessagesService.createChatMessage(req.body, req.user?.id) - return res.json(apiResponse) + return res.json(parseAPIResponse(apiResponse)) } catch (error) { next(error) } @@ -26,19 +49,17 @@ const createChatMessage = async (req: Request, res: Response, next: NextFunction const getAllChatMessages = async (req: Request, res: Response, next: NextFunction) => { try { - let chatTypeFilter = req.query?.chatType as chatType | undefined - if (chatTypeFilter) { + const _chatTypes = req.query?.chatType as string | undefined + let chatTypes: ChatType[] | undefined + if (_chatTypes) { try { - const chatTypeFilterArray = JSON.parse(chatTypeFilter) - if (chatTypeFilterArray.includes(chatType.EXTERNAL) && chatTypeFilterArray.includes(chatType.INTERNAL)) { - chatTypeFilter = undefined - } else if (chatTypeFilterArray.includes(chatType.EXTERNAL)) { - chatTypeFilter = chatType.EXTERNAL - } else if (chatTypeFilterArray.includes(chatType.INTERNAL)) { - chatTypeFilter = chatType.INTERNAL + if (Array.isArray(_chatTypes)) { + chatTypes = _chatTypes + } else { + chatTypes = JSON.parse(_chatTypes) } } catch (e) { - return res.status(500).send(e) + chatTypes = [_chatTypes as ChatType] } } const sortOrder = req.query?.order as string | undefined @@ -54,23 +75,7 @@ const getAllChatMessages = async (req: Request, res: Response, next: NextFunctio let feedbackTypeFilters = req.query?.feedbackType as ChatMessageRatingType[] | undefined if (feedbackTypeFilters) { - try { - const feedbackTypeFilterArray = JSON.parse(JSON.stringify(feedbackTypeFilters)) - if ( - feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_UP) && - feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_DOWN) - ) { - feedbackTypeFilters = [ChatMessageRatingType.THUMBS_UP, ChatMessageRatingType.THUMBS_DOWN] - } else if (feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_UP)) { - feedbackTypeFilters = [ChatMessageRatingType.THUMBS_UP] - } else if (feedbackTypeFilterArray.includes(ChatMessageRatingType.THUMBS_DOWN)) { - feedbackTypeFilters = [ChatMessageRatingType.THUMBS_DOWN] - } else { - feedbackTypeFilters = undefined - } - } catch (e) { - return res.status(500).send(e) - } + feedbackTypeFilters = getFeedbackTypeFilters(feedbackTypeFilters) } if (!chatflowId && !chatId) { throw new InternalFlowiseError( @@ -81,7 +86,7 @@ const getAllChatMessages = async (req: Request, res: Response, next: NextFunctio const apiResponse = await chatMessagesService.getAllChatMessages( req.user!, chatflowId, - chatTypeFilter, + chatTypes, sortOrder, chatId, memoryType, @@ -90,10 +95,10 @@ const getAllChatMessages = async (req: Request, res: Response, next: NextFunctio endDate, messageId, feedback, - feedbackTypeFilters, - req.user?.id + feedbackTypeFilters ) - return res.json(apiResponse) + + return res.json(parseAPIResponse(apiResponse)) } catch (error) { next(error) } @@ -110,10 +115,14 @@ const getAllInternalChatMessages = async (req: Request, res: Response, next: Nex const startDate = req.query?.startDate as string | undefined const endDate = req.query?.endDate as string | undefined const feedback = req.query?.feedback as boolean | undefined + let feedbackTypeFilters = req.query?.feedbackType as ChatMessageRatingType[] | undefined + if (feedbackTypeFilters) { + feedbackTypeFilters = getFeedbackTypeFilters(feedbackTypeFilters) + } const apiResponse = await chatMessagesService.getAllInternalChatMessages( req.user!, req.params.id, - chatType.INTERNAL, + [ChatType.INTERNAL], sortOrder, chatId, memoryType, @@ -122,16 +131,14 @@ const getAllInternalChatMessages = async (req: Request, res: Response, next: Nex endDate, messageId, feedback, - undefined, - userId + feedbackTypeFilters ) - return res.json(apiResponse) + return res.json(parseAPIResponse(apiResponse)) } catch (error) { next(error) } } -//Delete all chatmessages from chatId const removeAllChatMessages = async (req: Request, res: Response, next: NextFunction) => { try { const appServer = getRunningExpressApp() @@ -146,35 +153,118 @@ const removeAllChatMessages = async (req: Request, res: Response, next: NextFunc if (!chatflow) { return res.status(404).send(`Chatflow ${req.params.id} not found`) } + const flowData = chatflow.flowData + const parsedFlowData: IReactFlowObject = JSON.parse(flowData) + const nodes = parsedFlowData.nodes const chatId = req.query?.chatId as string const memoryType = req.query?.memoryType as string | undefined const sessionId = req.query?.sessionId as string | undefined - const chatType = req.query?.chatType as string | undefined + const _chatTypes = req.query?.chatType as string | undefined + let chatTypes: ChatType[] | undefined + if (_chatTypes) { + try { + if (Array.isArray(_chatTypes)) { + chatTypes = _chatTypes + } else { + chatTypes = JSON.parse(_chatTypes) + } + } catch (e) { + chatTypes = [_chatTypes as ChatType] + } + } + const startDate = req.query?.startDate as string | undefined + const endDate = req.query?.endDate as string | undefined const isClearFromViewMessageDialog = req.query?.isClearFromViewMessageDialog as string | undefined - const flowData = chatflow.flowData - const parsedFlowData: IReactFlowObject = JSON.parse(flowData) - const nodes = parsedFlowData.nodes - try { - await clearSessionMemory( - nodes, - appServer.nodesPool.componentNodes, - chatId, - appServer.AppDataSource, - sessionId, - memoryType, - isClearFromViewMessageDialog - ) - } catch (e) { - return res.status(500).send('Error clearing chat messages') + let feedbackTypeFilters = req.query?.feedbackType as ChatMessageRatingType[] | undefined + if (feedbackTypeFilters) { + feedbackTypeFilters = getFeedbackTypeFilters(feedbackTypeFilters) } - const deleteOptions: FindOptionsWhere = { chatflowid } - if (chatId) deleteOptions.chatId = chatId - if (memoryType) deleteOptions.memoryType = memoryType - if (sessionId) deleteOptions.sessionId = sessionId - if (chatType) deleteOptions.chatType = chatType - const apiResponse = await chatMessagesService.removeAllChatMessages(chatId, chatflowid, deleteOptions, req.user?.id) - return res.json(apiResponse) + if (!chatId) { + const isFeedback = feedbackTypeFilters?.length ? true : false + const hardDelete = req.query?.hardDelete as boolean | undefined + const messages = await utilGetChatMessage({ + user: req.user!, + chatflowid, + chatTypes, + sessionId, + startDate, + endDate, + feedback: isFeedback, + feedbackTypes: feedbackTypeFilters + }) + const messageIds = messages.map((message) => message.id) + + if (messages.length === 0) { + const result: DeleteResult = { raw: [], affected: 0 } + return res.json(result) + } + + // Categorize by chatId_memoryType_sessionId + const chatIdMap = new Map() + messages.forEach((message) => { + const chatId = message.chatId + const memoryType = message.memoryType + const sessionId = message.sessionId + const composite_key = `${chatId}_${memoryType}_${sessionId}` + if (!chatIdMap.has(composite_key)) { + chatIdMap.set(composite_key, []) + } + chatIdMap.get(composite_key)?.push(message) + }) + + // If hardDelete is ON, we clearSessionMemory from third party integrations + if (hardDelete) { + for (const [composite_key] of chatIdMap) { + const [chatId, memoryType, sessionId] = composite_key.split('_') + try { + await clearSessionMemory( + nodes, + appServer.nodesPool.componentNodes, + chatId, + appServer.AppDataSource, + sessionId, + memoryType, + isClearFromViewMessageDialog + ) + } catch (e) { + console.error('Error clearing chat messages') + } + } + } + + const apiResponse = await chatMessagesService.removeChatMessagesByMessageIds(chatflowid, chatIdMap, messageIds) + return res.json(apiResponse) + } else { + try { + await clearSessionMemory( + nodes, + appServer.nodesPool.componentNodes, + chatId, + appServer.AppDataSource, + sessionId, + memoryType, + isClearFromViewMessageDialog + ) + } catch (e) { + return res.status(500).send('Error clearing chat messages') + } + + const deleteOptions: FindOptionsWhere = { chatflowid } + if (chatId) deleteOptions.chatId = chatId + if (memoryType) deleteOptions.memoryType = memoryType + if (sessionId) deleteOptions.sessionId = sessionId + if (chatTypes && chatTypes.length > 0) { + deleteOptions.chatType = In(chatTypes) + } + if (startDate && endDate) { + const fromDate = new Date(startDate) + const toDate = new Date(endDate) + deleteOptions.createdDate = Between(fromDate ?? aMonthAgo(), toDate ?? new Date()) + } + const apiResponse = await chatMessagesService.removeAllChatMessages(chatId, chatflowid, deleteOptions) + return res.json(apiResponse) + } } catch (error) { next(error) } @@ -195,6 +285,42 @@ const abortChatMessage = async (req: Request, res: Response, next: NextFunction) } } +const parseAPIResponse = (apiResponse: ChatMessage | ChatMessage[]): ChatMessage | ChatMessage[] => { + const parseResponse = (response: ChatMessage): ChatMessage => { + const parsedResponse = { ...response } + + if (parsedResponse.sourceDocuments) { + parsedResponse.sourceDocuments = JSON.parse(parsedResponse.sourceDocuments) + } + if (parsedResponse.usedTools) { + parsedResponse.usedTools = JSON.parse(parsedResponse.usedTools) + } + if (parsedResponse.fileAnnotations) { + parsedResponse.fileAnnotations = JSON.parse(parsedResponse.fileAnnotations) + } + if (parsedResponse.agentReasoning) { + parsedResponse.agentReasoning = JSON.parse(parsedResponse.agentReasoning) + } + if (parsedResponse.fileUploads) { + parsedResponse.fileUploads = JSON.parse(parsedResponse.fileUploads) + } + if (parsedResponse.action) { + parsedResponse.action = JSON.parse(parsedResponse.action) + } + if (parsedResponse.artifacts) { + parsedResponse.artifacts = JSON.parse(parsedResponse.artifacts) + } + + return parsedResponse + } + + if (Array.isArray(apiResponse)) { + return apiResponse.map(parseResponse) + } else { + return parseResponse(apiResponse) + } +} + export default { createChatMessage, getAllChatMessages, diff --git a/packages/server/src/controllers/chatflows/index.ts b/packages/server/src/controllers/chatflows/index.ts index 158f96d7b51..2693a418c2a 100644 --- a/packages/server/src/controllers/chatflows/index.ts +++ b/packages/server/src/controllers/chatflows/index.ts @@ -2,7 +2,7 @@ import { NextFunction, Request, Response } from 'express' import { StatusCodes } from 'http-status-codes' import apiKeyService from '../../services/apikey' import { ChatFlow } from '../../database/entities/ChatFlow' -import { createRateLimiter } from '../../utils/rateLimit' +import { RateLimiterManager } from '../../utils/rateLimit' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { ChatflowType } from '../../Interface' import chatflowsService from '../../services/chatflows' @@ -186,7 +186,8 @@ const updateChatflow = async (req: Request, res: Response, next: NextFunction) = } updateChatFlow.id = chatflow.id - createRateLimiter(updateChatFlow) + const rateLimiterManager = RateLimiterManager.getInstance() + await rateLimiterManager.updateRateLimiter(updateChatFlow) const apiResponse = await chatflowsService.updateChatflow(chatflow, updateChatFlow) diff --git a/packages/server/src/controllers/documentstore/index.ts b/packages/server/src/controllers/documentstore/index.ts index 710a557b469..e1ca8140b77 100644 --- a/packages/server/src/controllers/documentstore/index.ts +++ b/packages/server/src/controllers/documentstore/index.ts @@ -4,6 +4,8 @@ import documentStoreService from '../../services/documentstore' import { DocumentStore } from '../../database/entities/DocumentStore' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { DocumentStoreDTO } from '../../Interface' +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import { FLOWISE_COUNTER_STATUS, FLOWISE_METRIC_COUNTERS } from '../../Interface.Metrics' const createDocumentStore = async (req: Request, res: Response, next: NextFunction) => { try { @@ -88,12 +90,15 @@ const getDocumentStoreFileChunks = async (req: Request, res: Response, next: Nex `Error: documentStoreController.getDocumentStoreFileChunks - fileId not provided!` ) } + const appDataSource = getRunningExpressApp().AppDataSource const page = req.params.pageNo ? parseInt(req.params.pageNo) : 1 const apiResponse = await documentStoreService.getDocumentStoreFileChunks( + appDataSource, req.params.storeId, req.params.fileId, page, - req.user?.id! + req.user?.id!, + req.user?.organizationId! ) return res.json(apiResponse) } catch (error) { @@ -108,13 +113,15 @@ const syncAndRefreshChunks = async (req: Request, res: Response, next: NextFunct throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, 'Store ID and File ID are required') } - const apiResponse = await documentStoreService.syncAndRefreshChunks(storeId, fileId, req.user?.id!, req.user?.organizationId!) + if (!req.user) { + throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, 'User is required') + } + const apiResponse = await documentStoreService.syncAndRefreshChunks(storeId, fileId, req.user.id!, req.user.organizationId!) return res.json(apiResponse) } catch (error) { next(error) } } - const deleteDocumentStoreFileChunk = async (req: Request, res: Response, next: NextFunction) => { try { if (typeof req.params.storeId === 'undefined' || req.params.storeId === '') { @@ -190,16 +197,44 @@ const editDocumentStoreFileChunk = async (req: Request, res: Response, next: Nex } } -const processFileChunks = async (req: Request, res: Response, next: NextFunction) => { +const saveProcessingLoader = async (req: Request, res: Response, next: NextFunction) => { try { + const appServer = getRunningExpressApp() if (typeof req.body === 'undefined') { throw new InternalFlowiseError( StatusCodes.PRECONDITION_FAILED, - `Error: documentStoreController.processFileChunks - body not provided!` + `Error: documentStoreController.saveProcessingLoader - body not provided!` ) } const body = req.body - const apiResponse = await documentStoreService.processAndSaveChunks(body, req.user?.id!, req.user?.organizationId!) + const apiResponse = await documentStoreService.saveProcessingLoader(appServer.AppDataSource, { + ...body, + userId: req.user?.id!, + organizationId: req.user?.organizationId! + }) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const processLoader = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params.loaderId === 'undefined' || req.params.loaderId === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.processLoader - loaderId not provided!` + ) + } + if (typeof req.body === 'undefined') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.processLoader - body not provided!` + ) + } + const docLoaderId = req.params.loaderId + const body = req.body + const apiResponse = await documentStoreService.processLoaderMiddleware(body, docLoaderId) return res.json(apiResponse) } catch (error) { next(error) @@ -262,7 +297,7 @@ const previewFileChunks = async (req: Request, res: Response, next: NextFunction } const body = req.body body.preview = true - const apiResponse = await documentStoreService.previewChunks(body) + const apiResponse = await documentStoreService.previewChunksMiddleware(body) return res.json(apiResponse) } catch (error) { next(error) @@ -284,9 +319,15 @@ const insertIntoVectorStore = async (req: Request, res: Response, next: NextFunc throw new Error('Error: documentStoreController.insertIntoVectorStore - body not provided!') } const body = req.body - const apiResponse = await documentStoreService.insertIntoVectorStore(body) + const apiResponse = await documentStoreService.insertIntoVectorStoreMiddleware(body) + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) return res.json(DocumentStoreDTO.fromEntity(apiResponse)) } catch (error) { + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.FAILURE + }) next(error) } } @@ -325,7 +366,9 @@ const saveVectorStoreConfig = async (req: Request, res: Response, next: NextFunc throw new Error('Error: documentStoreController.saveVectorStoreConfig - body not provided!') } const body = req.body - const apiResponse = await documentStoreService.saveVectorStoreConfig(body) + const appDataSource = getRunningExpressApp().AppDataSource + const componentNodes = getRunningExpressApp().nodesPool.componentNodes + const apiResponse = await documentStoreService.saveVectorStoreConfig(appDataSource, componentNodes, body) return res.json(apiResponse) } catch (error) { next(error) @@ -372,6 +415,93 @@ const getRecordManagerProviders = async (req: Request, res: Response, next: Next } } +const upsertDocStoreMiddleware = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params.id === 'undefined' || req.params.id === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.upsertDocStoreMiddleware - storeId not provided!` + ) + } + if (typeof req.body === 'undefined') { + throw new Error('Error: documentStoreController.upsertDocStoreMiddleware - body not provided!') + } + const body = req.body + const files = (req.files as Express.Multer.File[]) || [] + const apiResponse = await documentStoreService.upsertDocStoreMiddleware(req.params.id, body, files) + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) + return res.json(apiResponse) + } catch (error) { + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.FAILURE + }) + next(error) + } +} + +const refreshDocStoreMiddleware = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params.id === 'undefined' || req.params.id === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.refreshDocStoreMiddleware - storeId not provided!` + ) + } + const body = req.body + const apiResponse = await documentStoreService.refreshDocStoreMiddleware(req.params.id, body) + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) + return res.json(apiResponse) + } catch (error) { + getRunningExpressApp().metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.FAILURE + }) + next(error) + } +} + +const generateDocStoreToolDesc = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params.id === 'undefined' || req.params.id === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.generateDocStoreToolDesc - storeId not provided!` + ) + } + if (typeof req.body === 'undefined') { + throw new Error('Error: documentStoreController.generateDocStoreToolDesc - body not provided!') + } + const apiResponse = await documentStoreService.generateDocStoreToolDesc(req.params.id, req.body.selectedChatModel) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const getDocStoreConfigs = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params.id === 'undefined' || req.params.id === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.getDocStoreConfigs - storeId not provided!` + ) + } + if (typeof req.params.loaderId === 'undefined' || req.params.loaderId === '') { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: documentStoreController.getDocStoreConfigs - doc loader Id not provided!` + ) + } + const apiResponse = await documentStoreService.findDocStoreAvailableConfigs(req.params.id, req.params.loaderId) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + export default { deleteDocumentStore, createDocumentStore, @@ -381,7 +511,7 @@ export default { getDocumentStoreFileChunks, syncAndRefreshChunks, updateDocumentStore, - processFileChunks, + processLoader, previewFileChunks, getDocumentLoaders, deleteDocumentStoreFileChunk, @@ -393,5 +523,10 @@ export default { saveVectorStoreConfig, queryVectorStore, deleteVectorStoreFromStore, - updateVectorStoreConfigOnly + updateVectorStoreConfigOnly, + upsertDocStoreMiddleware, + refreshDocStoreMiddleware, + saveProcessingLoader, + generateDocStoreToolDesc, + getDocStoreConfigs } diff --git a/packages/server/src/controllers/export-import/index.ts b/packages/server/src/controllers/export-import/index.ts new file mode 100644 index 00000000000..673325e8074 --- /dev/null +++ b/packages/server/src/controllers/export-import/index.ts @@ -0,0 +1,26 @@ +import { NextFunction, Request, Response } from 'express' +import exportImportService from '../../services/export-import' + +const exportData = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await exportImportService.exportData(exportImportService.convertExportInput(req.body), req.user!) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const importData = async (req: Request, res: Response, next: NextFunction) => { + try { + const importData = req.body + await exportImportService.importData(importData) + return res.json({ message: 'success' }) + } catch (error) { + next(error) + } +} + +export default { + exportData, + importData +} diff --git a/packages/server/src/controllers/internal-predictions/index.ts b/packages/server/src/controllers/internal-predictions/index.ts index 1fea952d7a3..aba20d4eb58 100644 --- a/packages/server/src/controllers/internal-predictions/index.ts +++ b/packages/server/src/controllers/internal-predictions/index.ts @@ -1,16 +1,72 @@ import { Request, Response, NextFunction } from 'express' import { utilBuildChatflow } from '../../utils/buildChatflow' - +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import { getErrorMessage } from '../../errors/utils' +import { MODE } from '../../Interface' +import chatflowsService from '../../services/chatflows' // Send input message and get prediction result (Internal) const createInternalPrediction = async (req: Request, res: Response, next: NextFunction) => { try { - const apiResponse = await utilBuildChatflow(req, req.io, true) - return res.json(apiResponse) + if (req.body.streaming || req.body.streaming === 'true') { + createAndStreamInternalPrediction(req, res, next) + return + } else { + const apiResponse = await utilBuildChatflow(req, true) + const { chatId, question: prompt } = req.body + if (chatId) { + await chatflowsService.upsertChat({ + id: chatId, + user: req.user, + prompt, + chatflowId: req.params.id, + chatflowChatId: apiResponse.chatId + }) + } + if (apiResponse) return res.json(apiResponse) + } } catch (error) { next(error) } } +// Send input message and stream prediction result using SSE (Internal) +const createAndStreamInternalPrediction = async (req: Request, res: Response, next: NextFunction) => { + const chatId = req.body.chatId + const sseStreamer = getRunningExpressApp().sseStreamer + + try { + sseStreamer.addClient(chatId, res) + res.setHeader('Content-Type', 'text/event-stream') + res.setHeader('Cache-Control', 'no-cache') + res.setHeader('Connection', 'keep-alive') + res.setHeader('X-Accel-Buffering', 'no') //nginx config: https://serverfault.com/a/801629 + res.flushHeaders() + + if (process.env.MODE === MODE.QUEUE) { + getRunningExpressApp().redisSubscriber.subscribe(chatId) + } + + const apiResponse = await utilBuildChatflow(req, true) + const { question: prompt } = req.body + if (chatId) { + await chatflowsService.upsertChat({ + id: chatId, + user: req.user, + prompt, + chatflowId: req.params.id, + chatflowChatId: apiResponse.chatId + }) + } + sseStreamer.streamMetadataEvent(apiResponse.chatId, apiResponse) + } catch (error) { + if (chatId) { + sseStreamer.streamErrorEvent(chatId, getErrorMessage(error)) + } + next(error) + } finally { + sseStreamer.removeClient(chatId) + } +} export default { createInternalPrediction } diff --git a/packages/server/src/controllers/marketplaces/index.ts b/packages/server/src/controllers/marketplaces/index.ts index 87d7d2744fc..bea38588706 100644 --- a/packages/server/src/controllers/marketplaces/index.ts +++ b/packages/server/src/controllers/marketplaces/index.ts @@ -45,7 +45,49 @@ const getMarketplaceTemplate = async (req: Request, res: Response, next: NextFun } } +const deleteCustomTemplate = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params === 'undefined' || !req.params.id) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: marketplacesService.deleteCustomTemplate - id not provided!` + ) + } + const apiResponse = await marketplacesService.deleteCustomTemplate(req.params.id) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const getAllCustomTemplates = async (req: Request, res: Response, next: NextFunction) => { + try { + const apiResponse = await marketplacesService.getAllCustomTemplates() + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const saveCustomTemplate = async (req: Request, res: Response, next: NextFunction) => { + try { + if ((!req.body && !(req.body.chatflowId || req.body.tool)) || !req.body.name) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: marketplacesService.saveCustomTemplate - body not provided!` + ) + } + const apiResponse = await marketplacesService.saveCustomTemplate(req.body) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + export default { - getAllTemplates, - getMarketplaceTemplate + getAllTemplates, + getAllCustomTemplates, + saveCustomTemplate, + deleteCustomTemplate, + getMarketplaceTemplate, } diff --git a/packages/server/src/controllers/nvidia-nim/index.ts b/packages/server/src/controllers/nvidia-nim/index.ts new file mode 100644 index 00000000000..ce99c14abc8 --- /dev/null +++ b/packages/server/src/controllers/nvidia-nim/index.ts @@ -0,0 +1,106 @@ +import axios from 'axios' +import { Request, Response, NextFunction } from 'express' + +const { NimContainerManager } = require('nim-container-manager') + +const getToken = async (req: Request, res: Response, next: NextFunction) => { + try { + const headers = { + 'Content-Type': 'application/json', + Accept: 'application/json' + } + const data = { + client_id: 'Flowise', + pdi: '0x1234567890abcdeg', + access_policy_name: 'nim-dev' + } + const response = await axios.post('https://nts.ngc.nvidia.com/v1/token', data, { headers }) + const responseJson = response.data + return res.json(responseJson) + } catch (error) { + next(error) + } +} + +const preload = async (req: Request, res: Response, next: NextFunction) => { + try { + await NimContainerManager.preload() + return res.send('Preloaded NIM') + } catch (error) { + next(error) + } +} + +const downloadInstaller = async (req: Request, res: Response, next: NextFunction) => { + try { + await NimContainerManager.downloadInstaller() + return res.send('NIM Installer completed successfully!') + } catch (error) { + next(error) + } +} + +const pullImage = async (req: Request, res: Response, next: NextFunction) => { + try { + const imageTag = req.body.imageTag + const apiKey = req.body.apiKey + await NimContainerManager.pullImage(imageTag, apiKey) + return res.send(`Pulling image ${imageTag}`) + } catch (error) { + next(error) + } +} + +const startContainer = async (req: Request, res: Response, next: NextFunction) => { + try { + const imageTag = req.body.imageTag + const apiKey = req.body.apiKey + await NimContainerManager.startContainer(imageTag, apiKey) + return res.send(`Starting container ${imageTag}`) + } catch (error) { + next(error) + } +} + +const getImage = async (req: Request, res: Response, next: NextFunction) => { + try { + const imageTag = req.body.imageTag + const images = await NimContainerManager.userImageLibrary() + const image = images.find((img: any) => img.tag === imageTag) + if (!image) { + return res.status(404).send(`Image ${imageTag} not found`) + } + return res.json(image) + } catch (error) { + next(error) + } +} + +const getContainer = async (req: Request, res: Response, next: NextFunction) => { + try { + const imageTag = req.body.imageTag + const images = await NimContainerManager.userImageLibrary() + const image = images.find((img: any) => img.tag === imageTag) + if (!image) { + return res.status(404).send(`Image ${imageTag} not found`) + } + if (!image.container) { + return res.status(404).send(`Container of ${imageTag} not found`) + } + const container = image.container + container.image = image.name + return res.json(container) + } catch (error) { + next(error) + } +} + +export default { + preload, + getToken, + downloadInstaller, + pullImage, + startContainer, + getImage, + getContainer +} diff --git a/packages/server/src/controllers/openai-assistants-vector-store/index.ts b/packages/server/src/controllers/openai-assistants-vector-store/index.ts index 55a6d154228..f2216992260 100644 --- a/packages/server/src/controllers/openai-assistants-vector-store/index.ts +++ b/packages/server/src/controllers/openai-assistants-vector-store/index.ts @@ -140,8 +140,10 @@ const uploadFilesToAssistantVectorStore = async (req: Request, res: Response, ne if (Array.isArray(files)) { for (const file of files) { + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') uploadFiles.push({ - filePath: file.path, + filePath: file.path ?? file.key, fileName: file.originalname }) } diff --git a/packages/server/src/controllers/openai-assistants/index.ts b/packages/server/src/controllers/openai-assistants/index.ts index 448d6787bc1..1b516af8c03 100644 --- a/packages/server/src/controllers/openai-assistants/index.ts +++ b/packages/server/src/controllers/openai-assistants/index.ts @@ -81,8 +81,10 @@ const uploadAssistantFiles = async (req: Request, res: Response, next: NextFunct if (Array.isArray(files)) { for (const file of files) { + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') uploadFiles.push({ - filePath: file.path, + filePath: file.path ?? file.key, fileName: file.originalname }) } diff --git a/packages/server/src/controllers/openai-realtime/index.ts b/packages/server/src/controllers/openai-realtime/index.ts new file mode 100644 index 00000000000..d571fa4ee17 --- /dev/null +++ b/packages/server/src/controllers/openai-realtime/index.ts @@ -0,0 +1,70 @@ +import { Request, Response, NextFunction } from 'express' +import openaiRealTimeService from '../../services/openai-realtime' +import { InternalFlowiseError } from '../../errors/internalFlowiseError' +import { StatusCodes } from 'http-status-codes' + +const getAgentTools = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params === 'undefined' || !req.params.id) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.getAgentTools - id not provided!` + ) + } + const apiResponse = await openaiRealTimeService.getAgentTools(req.user!, req.params.id) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +const executeAgentTool = async (req: Request, res: Response, next: NextFunction) => { + try { + if (typeof req.params === 'undefined' || !req.params.id) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.executeAgentTool - id not provided!` + ) + } + if (!req.body) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.executeAgentTool - body not provided!` + ) + } + if (!req.body.chatId) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.executeAgentTool - body chatId not provided!` + ) + } + if (!req.body.toolName) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.executeAgentTool - body toolName not provided!` + ) + } + if (!req.body.inputArgs) { + throw new InternalFlowiseError( + StatusCodes.PRECONDITION_FAILED, + `Error: openaiRealTimeController.executeAgentTool - body inputArgs not provided!` + ) + } + const apiResponse = await openaiRealTimeService.executeAgentTool( + req.user!, + req.params.id, + req.body.chatId, + req.body.toolName, + req.body.inputArgs, + req.body.apiMessageId + ) + return res.json(apiResponse) + } catch (error) { + next(error) + } +} + +export default { + getAgentTools, + executeAgentTool +} diff --git a/packages/server/src/controllers/predictions/index.ts b/packages/server/src/controllers/predictions/index.ts index f85a11870dd..f95c2c1b7a2 100644 --- a/packages/server/src/controllers/predictions/index.ts +++ b/packages/server/src/controllers/predictions/index.ts @@ -1,10 +1,14 @@ import { Request, Response, NextFunction } from 'express' -import { getRateLimiter } from '../../utils/rateLimit' +import { RateLimiterManager } from '../../utils/rateLimit' import chatflowsService from '../../services/chatflows' import logger from '../../utils/logger' import predictionsServices from '../../services/predictions' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { StatusCodes } from 'http-status-codes' +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import { v4 as uuidv4 } from 'uuid' +import { getErrorMessage } from '../../errors/utils' +import { MODE } from '../../Interface' // Send input message and get prediction result (External) const createPrediction = async (req: Request, res: Response, next: NextFunction) => { @@ -26,13 +30,15 @@ const createPrediction = async (req: Request, res: Response, next: NextFunction) throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${req.params.id} not found`) } let isDomainAllowed = true - logger.info(`[server]: Request originated from ${req.headers.origin}`) + let unauthorizedOriginError = 'This site is not allowed to access this chatbot' + logger.info(`[server]: Request originated from ${req.headers.origin || 'UNKNOWN ORIGIN'}`) if (chatflow.chatbotConfig) { const parsedConfig = JSON.parse(chatflow.chatbotConfig) // check whether the first one is not empty. if it is empty that means the user set a value and then removed it. const isValidAllowedOrigins = parsedConfig.allowedOrigins?.length && parsedConfig.allowedOrigins[0] !== '' - if (isValidAllowedOrigins) { - const originHeader = req.headers.origin as string + unauthorizedOriginError = parsedConfig.allowedOriginsError || 'This site is not allowed to access this chatbot' + if (isValidAllowedOrigins && req.headers.origin) { + const originHeader = req.headers.origin const origin = new URL(originHeader).host isDomainAllowed = parsedConfig.allowedOrigins.filter((domain: string) => { @@ -46,11 +52,48 @@ const createPrediction = async (req: Request, res: Response, next: NextFunction) } } if (isDomainAllowed) { - //@ts-ignore - const apiResponse = await predictionsServices.buildChatflow(req, req?.io) - return res.json(apiResponse) + const streamable = await chatflowsService.checkIfChatflowIsValidForStreaming(req.params.id) + const isStreamingRequested = req.body.streaming === 'true' || req.body.streaming === true + if (streamable?.isStreaming && isStreamingRequested) { + const sseStreamer = getRunningExpressApp().sseStreamer + + let chatId = req.body.chatId + if (!req.body.chatId) { + chatId = req.body.chatId ?? req.body.overrideConfig?.sessionId ?? uuidv4() + req.body.chatId = chatId + } + try { + sseStreamer.addExternalClient(chatId, res) + res.setHeader('Content-Type', 'text/event-stream') + res.setHeader('Cache-Control', 'no-cache') + res.setHeader('Connection', 'keep-alive') + res.setHeader('X-Accel-Buffering', 'no') //nginx config: https://serverfault.com/a/801629 + res.flushHeaders() + + if (process.env.MODE === MODE.QUEUE) { + getRunningExpressApp().redisSubscriber.subscribe(chatId) + } + + const apiResponse = await predictionsServices.buildChatflow(req) + sseStreamer.streamMetadataEvent(apiResponse.chatId, apiResponse) + } catch (error) { + if (chatId) { + sseStreamer.streamErrorEvent(chatId, getErrorMessage(error)) + } + next(error) + } finally { + sseStreamer.removeClient(chatId) + } + } else { + const apiResponse = await predictionsServices.buildChatflow(req) + return res.json(apiResponse) + } } else { - throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `This site is not allowed to access this chatbot`) + const isStreamingRequested = req.body.streaming === 'true' || req.body.streaming === true + if (isStreamingRequested) { + return res.status(StatusCodes.FORBIDDEN).send(unauthorizedOriginError) + } + throw new InternalFlowiseError(StatusCodes.FORBIDDEN, unauthorizedOriginError) } } catch (error) { next(error) @@ -59,7 +102,7 @@ const createPrediction = async (req: Request, res: Response, next: NextFunction) const getRateLimiterMiddleware = async (req: Request, res: Response, next: NextFunction) => { try { - return getRateLimiter(req, res, next) + return RateLimiterManager.getInstance().getRateLimiter()(req, res, next) } catch (error) { next(error) } diff --git a/packages/server/src/controllers/stats/index.ts b/packages/server/src/controllers/stats/index.ts index 23b30b5553a..10bf4347c9b 100644 --- a/packages/server/src/controllers/stats/index.ts +++ b/packages/server/src/controllers/stats/index.ts @@ -1,9 +1,8 @@ import { StatusCodes } from 'http-status-codes' import { Request, Response, NextFunction } from 'express' import statsService from '../../services/stats' -import { ChatMessageRatingType, chatType } from '../../Interface' +import { ChatMessageRatingType, ChatType } from '../../Interface' import { InternalFlowiseError } from '../../errors/internalFlowiseError' -import { getErrorMessage } from '../../errors/utils' const getChatflowStats = async (req: Request, res: Response, next: NextFunction) => { try { @@ -11,27 +10,22 @@ const getChatflowStats = async (req: Request, res: Response, next: NextFunction) throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: statsController.getChatflowStats - id not provided!`) } const chatflowid = req.params.id - let chatTypeFilter = req.query?.chatType as chatType | undefined - const startDate = req.query?.startDate as string | undefined - const endDate = req.query?.endDate as string | undefined - let feedbackTypeFilters = req.query?.feedbackType as ChatMessageRatingType[] | undefined - if (chatTypeFilter) { + const _chatTypes = req.query?.chatType as string | undefined + let chatTypes: ChatType[] | undefined + if (_chatTypes) { try { - const chatTypeFilterArray = JSON.parse(chatTypeFilter) - if (chatTypeFilterArray.includes(chatType.EXTERNAL) && chatTypeFilterArray.includes(chatType.INTERNAL)) { - chatTypeFilter = undefined - } else if (chatTypeFilterArray.includes(chatType.EXTERNAL)) { - chatTypeFilter = chatType.EXTERNAL - } else if (chatTypeFilterArray.includes(chatType.INTERNAL)) { - chatTypeFilter = chatType.INTERNAL + if (Array.isArray(_chatTypes)) { + chatTypes = _chatTypes + } else { + chatTypes = JSON.parse(_chatTypes) } } catch (e) { - throw new InternalFlowiseError( - StatusCodes.INTERNAL_SERVER_ERROR, - `Error: statsController.getChatflowStats - ${getErrorMessage(e)}` - ) + chatTypes = [_chatTypes as ChatType] } } + const startDate = req.query?.startDate as string | undefined + const endDate = req.query?.endDate as string | undefined + let feedbackTypeFilters = req.query?.feedbackType as ChatMessageRatingType[] | undefined if (feedbackTypeFilters) { try { const feedbackTypeFilterArray = JSON.parse(JSON.stringify(feedbackTypeFilters)) @@ -51,16 +45,7 @@ const getChatflowStats = async (req: Request, res: Response, next: NextFunction) return res.status(500).send(e) } } - const apiResponse = await statsService.getChatflowStats( - req.user!, - chatflowid, - chatTypeFilter, - startDate, - endDate, - '', - true, - feedbackTypeFilters - ) + const apiResponse = await statsService.getChatflowStats(req.user!, chatflowid, chatTypes, startDate, endDate, '', true, feedbackTypeFilters) return res.json(apiResponse) } catch (error) { next(error) diff --git a/packages/server/src/controllers/vectors/index.ts b/packages/server/src/controllers/vectors/index.ts index 5d10bb68b1a..cd2e22eaf0d 100644 --- a/packages/server/src/controllers/vectors/index.ts +++ b/packages/server/src/controllers/vectors/index.ts @@ -1,10 +1,10 @@ import { Request, Response, NextFunction } from 'express' import vectorsService from '../../services/vectors' -import { getRateLimiter } from '../../utils/rateLimit' +import { RateLimiterManager } from '../../utils/rateLimit' const getRateLimiterMiddleware = async (req: Request, res: Response, next: NextFunction) => { try { - return getRateLimiter(req, res, next) + return RateLimiterManager.getInstance().getRateLimiter()(req, res, next) } catch (error) { next(error) } diff --git a/packages/server/src/database/entities/Assistant.ts b/packages/server/src/database/entities/Assistant.ts index ca18b199d33..925b484502b 100644 --- a/packages/server/src/database/entities/Assistant.ts +++ b/packages/server/src/database/entities/Assistant.ts @@ -1,6 +1,6 @@ /* eslint-disable */ -import { Entity, Column, Index, CreateDateColumn, UpdateDateColumn, PrimaryGeneratedColumn } from 'typeorm' -import { IAssistant } from '../../Interface' +import { Entity, Column, CreateDateColumn, UpdateDateColumn, PrimaryGeneratedColumn, Index } from 'typeorm' +import { AssistantType, IAssistant } from '../../Interface' @Entity() export class Assistant implements IAssistant { @@ -16,6 +16,9 @@ export class Assistant implements IAssistant { @Column({ nullable: true }) iconSrc?: string + @Column({ nullable: true, type: 'text' }) + type?: AssistantType + @Column({ type: 'timestamp' }) @CreateDateColumn() createdDate: Date diff --git a/packages/server/src/database/entities/Chat.ts b/packages/server/src/database/entities/Chat.ts index 6b4cb207226..ea8b84b1bc7 100644 --- a/packages/server/src/database/entities/Chat.ts +++ b/packages/server/src/database/entities/Chat.ts @@ -14,6 +14,9 @@ export class Chat { @Column({ nullable: true }) chatflowChatId: string + @Column({ nullable: true }) + chatflowId: string + @ManyToOne(() => ChatFlow, { nullable: true }) chatflow: ChatFlow diff --git a/packages/server/src/database/entities/ChatFlow.ts b/packages/server/src/database/entities/ChatFlow.ts index f33ee569bc2..8272b59951f 100644 --- a/packages/server/src/database/entities/ChatFlow.ts +++ b/packages/server/src/database/entities/ChatFlow.ts @@ -55,6 +55,9 @@ export class ChatFlow implements IChatFlow { @Column({ nullable: true, type: 'text' }) speechToText?: string + @Column({ nullable: true, type: 'text' }) + followUpPrompts?: string + @Column({ nullable: true, type: 'text' }) category?: string @@ -67,11 +70,11 @@ export class ChatFlow implements IChatFlow { @Index() @Column({ type: 'uuid', nullable: true }) - userId?: string + userId: string @Index() @Column({ type: 'uuid', nullable: true }) - organizationId?: string + organizationId: string @Column({ type: 'timestamp' }) @CreateDateColumn() diff --git a/packages/server/src/database/entities/ChatMessage.ts b/packages/server/src/database/entities/ChatMessage.ts index 9a82c462e6a..08e95120def 100644 --- a/packages/server/src/database/entities/ChatMessage.ts +++ b/packages/server/src/database/entities/ChatMessage.ts @@ -32,6 +32,9 @@ export class ChatMessage implements IChatMessage { @Column({ nullable: true, type: 'text' }) fileUploads?: string + @Column({ nullable: true, type: 'text' }) + artifacts?: string + @Column({ nullable: true, type: 'text' }) action?: string | null @@ -64,4 +67,6 @@ export class ChatMessage implements IChatMessage { @DeleteDateColumn() deletedDate: Date + @Column({ nullable: true, type: 'text' }) + followUpPrompts?: string } diff --git a/packages/server/src/database/entities/CustomTemplate.ts b/packages/server/src/database/entities/CustomTemplate.ts new file mode 100644 index 00000000000..27b88d78e9b --- /dev/null +++ b/packages/server/src/database/entities/CustomTemplate.ts @@ -0,0 +1,37 @@ +import { ICustomTemplate } from '../../Interface' +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm' + +@Entity('custom_template') +export class CustomTemplate implements ICustomTemplate { + @PrimaryGeneratedColumn('uuid') + id: string + + @Column() + name: string + + @Column({ type: 'text' }) + flowData: string + + @Column({ nullable: true, type: 'text' }) + description?: string + + @Column({ nullable: true, type: 'text' }) + badge?: string + + @Column({ nullable: true, type: 'text' }) + framework?: string + + @Column({ nullable: true, type: 'text' }) + usecases?: string + + @Column({ nullable: true, type: 'text' }) + type?: string + + @Column({ type: 'timestamp' }) + @CreateDateColumn() + createdDate: Date + + @Column({ type: 'timestamp' }) + @UpdateDateColumn() + updatedDate: Date +} diff --git a/packages/server/src/database/entities/index.ts b/packages/server/src/database/entities/index.ts index ac3120b00a0..be755755c2d 100644 --- a/packages/server/src/database/entities/index.ts +++ b/packages/server/src/database/entities/index.ts @@ -15,6 +15,8 @@ import { Organization } from './Organization' import { PaidPlan } from './PaidPlan' import { TrialPlan } from './TrialPlan' import { Chat } from './Chat' +import { CustomTemplate } from './CustomTemplate' + export const entities = { ChatFlow, ChatMessage, @@ -32,5 +34,6 @@ export const entities = { Organization, PaidPlan, TrialPlan, - Chat + Chat, + CustomTemplate } diff --git a/packages/server/src/database/migrations/mariadb/1715861032479-AddVectorStoreConfigToDocStore.ts b/packages/server/src/database/migrations/mariadb/1715861032479-AddVectorStoreConfigToDocStore.ts new file mode 100644 index 00000000000..c5d5422751d --- /dev/null +++ b/packages/server/src/database/migrations/mariadb/1715861032479-AddVectorStoreConfigToDocStore.ts @@ -0,0 +1,18 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddVectorStoreConfigToDocStore1715861032479 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('document_store', 'vectorStoreConfig') + if (!columnExists) { + await queryRunner.query(`ALTER TABLE \`document_store\` ADD COLUMN \`vectorStoreConfig\` TEXT;`) + await queryRunner.query(`ALTER TABLE \`document_store\` ADD COLUMN \`embeddingConfig\` TEXT;`) + await queryRunner.query(`ALTER TABLE \`document_store\` ADD COLUMN \`recordManagerConfig\` TEXT;`) + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`document_store\` DROP COLUMN \`vectorStoreConfig\`;`) + await queryRunner.query(`ALTER TABLE \`document_store\` DROP COLUMN \`embeddingConfig\`;`) + await queryRunner.query(`ALTER TABLE \`document_store\` DROP COLUMN \`recordManagerConfig\`;`) + } +} diff --git a/packages/server/src/database/migrations/mariadb/1725629836652-AddCustomTemplate.ts b/packages/server/src/database/migrations/mariadb/1725629836652-AddCustomTemplate.ts new file mode 100644 index 00000000000..8a7a34d65d5 --- /dev/null +++ b/packages/server/src/database/migrations/mariadb/1725629836652-AddCustomTemplate.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddCustomTemplate1725629836652 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE IF NOT EXISTS \`custom_template\` ( + \`id\` varchar(36) NOT NULL, + \`name\` varchar(255) NOT NULL, + \`flowData\` text NOT NULL, + \`description\` varchar(255) DEFAULT NULL, + \`badge\` varchar(255) DEFAULT NULL, + \`framework\` varchar(255) DEFAULT NULL, + \`usecases\` varchar(255) DEFAULT NULL, + \`type\` varchar(30) DEFAULT NULL, + \`createdDate\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + \`updatedDate\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE custom_template`) + } +} diff --git a/packages/server/src/database/migrations/mariadb/1726156258465-AddArtifactsToChatMessage.ts b/packages/server/src/database/migrations/mariadb/1726156258465-AddArtifactsToChatMessage.ts new file mode 100644 index 00000000000..df44ef2ab4a --- /dev/null +++ b/packages/server/src/database/migrations/mariadb/1726156258465-AddArtifactsToChatMessage.ts @@ -0,0 +1,12 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('chat_message', 'artifacts') + if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`artifacts\` LONGTEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`artifacts\`;`) + } +} diff --git a/packages/server/src/database/migrations/mariadb/1726666318346-AddFollowUpPrompts.ts b/packages/server/src/database/migrations/mariadb/1726666318346-AddFollowUpPrompts.ts new file mode 100644 index 00000000000..8f32270e9d6 --- /dev/null +++ b/packages/server/src/database/migrations/mariadb/1726666318346-AddFollowUpPrompts.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddFollowUpPrompts1726666318346 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExistsInChatflow = await queryRunner.hasColumn('chat_flow', 'followUpPrompts') + if (!columnExistsInChatflow) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`followUpPrompts\` TEXT;`) + const columnExistsInChatMessage = await queryRunner.hasColumn('chat_message', 'followUpPrompts') + if (!columnExistsInChatMessage) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`followUpPrompts\` TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`followUpPrompts\`;`) + await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`followUpPrompts\`;`) + } +} diff --git a/packages/server/src/database/migrations/mariadb/1733011290987-AddTypeToAssistant.ts b/packages/server/src/database/migrations/mariadb/1733011290987-AddTypeToAssistant.ts new file mode 100644 index 00000000000..8726486c54a --- /dev/null +++ b/packages/server/src/database/migrations/mariadb/1733011290987-AddTypeToAssistant.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddTypeToAssistant1733011290987 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('assistant', 'type') + if (!columnExists) { + await queryRunner.query(`ALTER TABLE \`assistant\` ADD COLUMN \`type\` TEXT;`) + await queryRunner.query(`UPDATE \`assistant\` SET \`type\` = 'OPENAI';`) + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`assistant\` DROP COLUMN \`type\`;`) + } +} diff --git a/packages/server/src/database/migrations/mariadb/index.ts b/packages/server/src/database/migrations/mariadb/index.ts index 4d6866751c5..00e1237e446 100644 --- a/packages/server/src/database/migrations/mariadb/index.ts +++ b/packages/server/src/database/migrations/mariadb/index.ts @@ -17,12 +17,17 @@ import { AddFeedback1707213626553 } from './1707213626553-AddFeedback' import { AddUpsertHistoryEntity1709814301358 } from './1709814301358-AddUpsertHistoryEntity' import { AddLead1710832127079 } from './1710832127079-AddLead' import { AddLeadToChatMessage1711538023578 } from './1711538023578-AddLeadToChatMessage' +import { AddVectorStoreConfigToDocStore1715861032479 } from './1715861032479-AddVectorStoreConfigToDocStore' import { AddDocumentStore1711637331047 } from './1711637331047-AddDocumentStore' import { AddAgentReasoningToChatMessage1714679514451 } from './1714679514451-AddAgentReasoningToChatMessage' import { AddTypeToChatFlow1716300000000 } from './1716300000000-AddTypeToChatFlow' import { AddApiKey1720230151480 } from './1720230151480-AddApiKey' import { AddActionToChatMessage1721078251523 } from './1721078251523-AddActionToChatMessage' import { LongTextColumn1722301395521 } from './1722301395521-LongTextColumn' +import { AddCustomTemplate1725629836652 } from './1725629836652-AddCustomTemplate' +import { AddArtifactsToChatMessage1726156258465 } from './1726156258465-AddArtifactsToChatMessage' +import { AddFollowUpPrompts1726666318346 } from './1726666318346-AddFollowUpPrompts' +import { AddTypeToAssistant1733011290987 } from './1733011290987-AddTypeToAssistant' export const mariadbMigrations = [ Init1693840429259, @@ -47,7 +52,12 @@ export const mariadbMigrations = [ AddLeadToChatMessage1711538023578, AddAgentReasoningToChatMessage1714679514451, AddTypeToChatFlow1716300000000, + AddVectorStoreConfigToDocStore1715861032479, AddApiKey1720230151480, AddActionToChatMessage1721078251523, - LongTextColumn1722301395521 + LongTextColumn1722301395521, + AddCustomTemplate1725629836652, + AddArtifactsToChatMessage1726156258465, + AddFollowUpPrompts1726666318346, + AddTypeToAssistant1733011290987 ] diff --git a/packages/server/src/database/migrations/mysql/1725629836652-AddCustomTemplate.ts b/packages/server/src/database/migrations/mysql/1725629836652-AddCustomTemplate.ts new file mode 100644 index 00000000000..b88ab530679 --- /dev/null +++ b/packages/server/src/database/migrations/mysql/1725629836652-AddCustomTemplate.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddCustomTemplate1725629836652 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE IF NOT EXISTS \`custom_template\` ( + \`id\` varchar(36) NOT NULL, + \`name\` varchar(255) NOT NULL, + \`flowData\` text NOT NULL, + \`description\` varchar(255) DEFAULT NULL, + \`badge\` varchar(255) DEFAULT NULL, + \`framework\` varchar(255) DEFAULT NULL, + \`usecases\` varchar(255) DEFAULT NULL, + \`type\` varchar(30) DEFAULT NULL, + \`createdDate\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + \`updatedDate\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE custom_template`) + } +} diff --git a/packages/server/src/database/migrations/mysql/1726156258465-AddArtifactsToChatMessage.ts b/packages/server/src/database/migrations/mysql/1726156258465-AddArtifactsToChatMessage.ts new file mode 100644 index 00000000000..df44ef2ab4a --- /dev/null +++ b/packages/server/src/database/migrations/mysql/1726156258465-AddArtifactsToChatMessage.ts @@ -0,0 +1,12 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('chat_message', 'artifacts') + if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`artifacts\` LONGTEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`artifacts\`;`) + } +} diff --git a/packages/server/src/database/migrations/mysql/1726666302024-AddFollowUpPrompts.ts b/packages/server/src/database/migrations/mysql/1726666302024-AddFollowUpPrompts.ts new file mode 100644 index 00000000000..5285068cc1d --- /dev/null +++ b/packages/server/src/database/migrations/mysql/1726666302024-AddFollowUpPrompts.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddFollowUpPrompts1726666302024 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExistsInChatflow = await queryRunner.hasColumn('chat_flow', 'followUpPrompts') + if (!columnExistsInChatflow) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`followUpPrompts\` TEXT;`) + const columnExistsInChatMessage = await queryRunner.hasColumn('chat_message', 'followUpPrompts') + if (!columnExistsInChatMessage) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`followUpPrompts\` TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`followUpPrompts\`;`) + await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`followUpPrompts\`;`) + } +} diff --git a/packages/server/src/database/migrations/mysql/1733011290987-AddTypeToAssistant.ts b/packages/server/src/database/migrations/mysql/1733011290987-AddTypeToAssistant.ts new file mode 100644 index 00000000000..8726486c54a --- /dev/null +++ b/packages/server/src/database/migrations/mysql/1733011290987-AddTypeToAssistant.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddTypeToAssistant1733011290987 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('assistant', 'type') + if (!columnExists) { + await queryRunner.query(`ALTER TABLE \`assistant\` ADD COLUMN \`type\` TEXT;`) + await queryRunner.query(`UPDATE \`assistant\` SET \`type\` = 'OPENAI';`) + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`assistant\` DROP COLUMN \`type\`;`) + } +} diff --git a/packages/server/src/database/migrations/mysql/index.ts b/packages/server/src/database/migrations/mysql/index.ts index 034d3100eab..f55a295e755 100644 --- a/packages/server/src/database/migrations/mysql/index.ts +++ b/packages/server/src/database/migrations/mysql/index.ts @@ -28,6 +28,10 @@ import { AddAnswersConfig1714692854264 } from './1714692854264-AddAnswersConfig' import { AddUser1716422641414 } from './1716422641414-AddUser' import { AddDescriptionToChatFlow1722099922876 } from './1722101786123-AddDescriptionToChatflow' import { AddPlans1722954685054 } from './1722954685053-AddPlans' +import { AddCustomTemplate1725629836652 } from './1725629836652-AddCustomTemplate' +import { AddArtifactsToChatMessage1726156258465 } from './1726156258465-AddArtifactsToChatMessage' +import { AddFollowUpPrompts1726666302024 } from './1726666302024-AddFollowUpPrompts' +import { AddTypeToAssistant1733011290987 } from './1733011290987-AddTypeToAssistant' export const mysqlMigrations = [ Init1693840429259, @@ -59,5 +63,9 @@ export const mysqlMigrations = [ AddActionToChatMessage1721078251523, LongTextColumn1722301395521, AddDescriptionToChatFlow1722099922876, - AddPlans1722954685054 + AddPlans1722954685054, + AddCustomTemplate1725629836652, + AddArtifactsToChatMessage1726156258465, + AddFollowUpPrompts1726666302024, + AddTypeToAssistant1733011290987 ] diff --git a/packages/server/src/database/migrations/postgres/1725629836652-AddCustomTemplate.ts b/packages/server/src/database/migrations/postgres/1725629836652-AddCustomTemplate.ts new file mode 100644 index 00000000000..04a61c0ff5f --- /dev/null +++ b/packages/server/src/database/migrations/postgres/1725629836652-AddCustomTemplate.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddCustomTemplate1725629836652 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE IF NOT EXISTS custom_template ( + id uuid NOT NULL DEFAULT uuid_generate_v4(), + "name" varchar NOT NULL, + "flowData" text NOT NULL, + "description" varchar NULL, + "badge" varchar NULL, + "framework" varchar NULL, + "usecases" varchar NULL, + "type" varchar NULL, + "createdDate" timestamp NOT NULL DEFAULT now(), + "updatedDate" timestamp NOT NULL DEFAULT now(), + CONSTRAINT "PK_3c7cea7d087ac4b91764574cdbf" PRIMARY KEY (id) + );` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE custom_template`) + } +} diff --git a/packages/server/src/database/migrations/postgres/1726156258465-AddArtifactsToChatMessage.ts b/packages/server/src/database/migrations/postgres/1726156258465-AddArtifactsToChatMessage.ts new file mode 100644 index 00000000000..d9a828702d5 --- /dev/null +++ b/packages/server/src/database/migrations/postgres/1726156258465-AddArtifactsToChatMessage.ts @@ -0,0 +1,11 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "artifacts" TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "artifacts";`) + } +} diff --git a/packages/server/src/database/migrations/postgres/1726666309552-AddFollowUpPrompts.ts b/packages/server/src/database/migrations/postgres/1726666309552-AddFollowUpPrompts.ts new file mode 100644 index 00000000000..ef460363b7c --- /dev/null +++ b/packages/server/src/database/migrations/postgres/1726666309552-AddFollowUpPrompts.ts @@ -0,0 +1,13 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddFollowUpPrompts1726666309552 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "followUpPrompts" TEXT;`) + await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "followUpPrompts" TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "followUpPrompts";`) + await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "followUpPrompts";`) + } +} diff --git a/packages/server/src/database/migrations/postgres/1733011290987-AddTypeToAssistant.ts b/packages/server/src/database/migrations/postgres/1733011290987-AddTypeToAssistant.ts new file mode 100644 index 00000000000..30a007b13b4 --- /dev/null +++ b/packages/server/src/database/migrations/postgres/1733011290987-AddTypeToAssistant.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddTypeToAssistant1733011290987 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('assistant', 'type') + if (!columnExists) { + await queryRunner.query(`ALTER TABLE "assistant" ADD COLUMN "type" TEXT;`) + await queryRunner.query(`UPDATE "assistant" SET "type" = 'OPENAI';`) + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "assistant" DROP COLUMN "type";`) + } +} diff --git a/packages/server/src/database/migrations/postgres/index.ts b/packages/server/src/database/migrations/postgres/index.ts index 5ac7efd84be..33c0c52123a 100644 --- a/packages/server/src/database/migrations/postgres/index.ts +++ b/packages/server/src/database/migrations/postgres/index.ts @@ -40,6 +40,10 @@ import { AddPlans1722954481004 } from './1722954481003-AddPlans' import { ApiKeysUserAndOrg1727817692110 } from './1727817692110-ApiKeysUserAndOrg' import { ToolVisibility1730491825527 } from './1730491825527-ToolVisibility' import { AddChat1732145631409 } from './1732145631409-AddChat' +import { AddCustomTemplate1725629836652 } from './1725629836652-AddCustomTemplate' +import { AddArtifactsToChatMessage1726156258465 } from './1726156258465-AddArtifactsToChatMessage' +import { AddFollowUpPrompts1726666309552 } from './1726666309552-AddFollowUpPrompts' +import { AddTypeToAssistant1733011290987 } from './1733011290987-AddTypeToAssistant' export const postgresMigrations = [ Init1693891895163, @@ -83,5 +87,9 @@ export const postgresMigrations = [ AddPlans1722954481004, ApiKeysUserAndOrg1727817692110, ToolVisibility1730491825527, - AddChat1732145631409 + AddChat1732145631409, + AddCustomTemplate1725629836652, + AddArtifactsToChatMessage1726156258465, + AddFollowUpPrompts1726666309552, + AddTypeToAssistant1733011290987 ] diff --git a/packages/server/src/database/migrations/sqlite/1725629836652-AddCustomTemplate.ts b/packages/server/src/database/migrations/sqlite/1725629836652-AddCustomTemplate.ts new file mode 100644 index 00000000000..80e633b6d28 --- /dev/null +++ b/packages/server/src/database/migrations/sqlite/1725629836652-AddCustomTemplate.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddCustomTemplate1725629836652 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE IF NOT EXISTS "custom_template" ( + "id" varchar PRIMARY KEY NOT NULL, + "name" varchar NOT NULL, + "flowData" text NOT NULL, + "description" varchar, + "badge" varchar, + "framework" varchar, + "usecases" varchar, + "type" varchar, + "updatedDate" datetime NOT NULL DEFAULT (datetime('now')), + "createdDate" datetime NOT NULL DEFAULT (datetime('now')));` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS "custom_template";`) + } +} diff --git a/packages/server/src/database/migrations/sqlite/1726156258465-AddArtifactsToChatMessage.ts b/packages/server/src/database/migrations/sqlite/1726156258465-AddArtifactsToChatMessage.ts new file mode 100644 index 00000000000..1056cb1ce51 --- /dev/null +++ b/packages/server/src/database/migrations/sqlite/1726156258465-AddArtifactsToChatMessage.ts @@ -0,0 +1,11 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "artifacts" TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "artifacts";`) + } +} diff --git a/packages/server/src/database/migrations/sqlite/1726666294213-AddFollowUpPrompts.ts b/packages/server/src/database/migrations/sqlite/1726666294213-AddFollowUpPrompts.ts new file mode 100644 index 00000000000..6f0d61cc9ed --- /dev/null +++ b/packages/server/src/database/migrations/sqlite/1726666294213-AddFollowUpPrompts.ts @@ -0,0 +1,13 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddFollowUpPrompts1726666294213 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN "followUpPrompts" TEXT;`) + await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "followUpPrompts" TEXT;`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "followUpPrompts";`) + await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "followUpPrompts";`) + } +} diff --git a/packages/server/src/database/migrations/sqlite/1733011290987-AddTypeToAssistant.ts b/packages/server/src/database/migrations/sqlite/1733011290987-AddTypeToAssistant.ts new file mode 100644 index 00000000000..30a007b13b4 --- /dev/null +++ b/packages/server/src/database/migrations/sqlite/1733011290987-AddTypeToAssistant.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from 'typeorm' + +export class AddTypeToAssistant1733011290987 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const columnExists = await queryRunner.hasColumn('assistant', 'type') + if (!columnExists) { + await queryRunner.query(`ALTER TABLE "assistant" ADD COLUMN "type" TEXT;`) + await queryRunner.query(`UPDATE "assistant" SET "type" = 'OPENAI';`) + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "assistant" DROP COLUMN "type";`) + } +} diff --git a/packages/server/src/database/migrations/sqlite/index.ts b/packages/server/src/database/migrations/sqlite/index.ts index 328f0143a49..c5f8a7a425e 100644 --- a/packages/server/src/database/migrations/sqlite/index.ts +++ b/packages/server/src/database/migrations/sqlite/index.ts @@ -34,6 +34,10 @@ import { UpdateVisibilityType1719248473069 } from './1719248473069-UpdateVisibil import { CredentialsVisibility1721247848452 } from './1721247848452-CredentialsVisibility' import { AddDescriptionToChatFlow1722099922876 } from './1722101786123-AddDescriptionToChatflow' import { AddPlans1722954819677 } from './1722954819676-AddPlans' +import { AddArtifactsToChatMessage1726156258465 } from './1726156258465-AddArtifactsToChatMessage' +import { AddCustomTemplate1725629836652 } from './1725629836652-AddCustomTemplate' +import { AddFollowUpPrompts1726666294213 } from './1726666294213-AddFollowUpPrompts' +import { AddTypeToAssistant1733011290987 } from './1733011290987-AddTypeToAssistant' export const sqliteMigrations = [ Init1693835579790, @@ -71,5 +75,9 @@ export const sqliteMigrations = [ UpdateVisibilityType1719248473069, CredentialsVisibility1721247848452, AddDescriptionToChatFlow1722099922876, - AddPlans1722954819677 + AddPlans1722954819677, + AddArtifactsToChatMessage1726156258465, + AddCustomTemplate1725629836652, + AddFollowUpPrompts1726666294213, + AddTypeToAssistant1733011290987 ] diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 3a8596fe8d0..78ad15265f5 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -2,36 +2,67 @@ import express from 'express' import cors from 'cors' import http from 'http' import basicAuth from 'express-basic-auth' -import { Server } from 'socket.io' import { DataSource } from 'typeorm' -import { IChatFlow } from './Interface' -import { getEncryptionKey } from './utils' +import { MODE } from './Interface' +import { getNodeModulesPackagePath, getEncryptionKey } from './utils' import logger, { expressRequestLogger } from './utils/logger' import { getDataSource } from './DataSource' import { NodesPool } from './NodesPool' import { ChatFlow } from './database/entities/ChatFlow' -import { ChatflowPool } from './ChatflowPool' import { CachePool } from './CachePool' -import { initializeRateLimiter } from './utils/rateLimit' +import { AbortControllerPool } from './AbortControllerPool' +import { RateLimiterManager } from './utils/rateLimit' import { getAPIKeys } from './utils/apiKey' import { sanitizeMiddleware, getCorsOptions, getAllowedIframeOrigins } from './utils/XSS' import { Telemetry } from './utils/telemetry' import flowiseApiV1Router from './routes' import errorHandlerMiddleware from './middlewares/errors' +import { SSEStreamer } from './utils/SSEStreamer' +import { validateAPIKey } from './utils/validateKey' +import { IMetricsProvider } from './Interface.Metrics' +import { Prometheus } from './metrics/Prometheus' +import { OpenTelemetry } from './metrics/OpenTelemetry' +import { QueueManager } from './queue/QueueManager' +import { RedisEventSubscriber } from './queue/RedisEventSubscriber' +import { WHITELIST_URLS } from './utils/constants' +import 'global-agent/bootstrap' import authenticationHandlerMiddleware from './middlewares/authentication' import passport from 'passport' import passportConfig from './config/passport' import session from 'express-session' +declare global { + namespace Express { + namespace Multer { + interface File { + bucket: string + key: string + acl: string + contentType: string + contentDisposition: null + storageClass: string + serverSideEncryption: null + metadata: any + location: string + etag: string + } + } + } +} passportConfig(passport) export class App { app: express.Application nodesPool: NodesPool - chatflowPool: ChatflowPool + abortControllerPool: AbortControllerPool cachePool: CachePool telemetry: Telemetry + rateLimiterManager: RateLimiterManager AppDataSource: DataSource = getDataSource() + sseStreamer: SSEStreamer + metricsProvider: IMetricsProvider + queueManager: QueueManager + redisSubscriber: RedisEventSubscriber constructor() { this.app = express() @@ -50,8 +81,8 @@ export class App { this.nodesPool = new NodesPool() await this.nodesPool.initialize() - // Initialize chatflow pool - this.chatflowPool = new ChatflowPool() + // Initialize abort controllers pool + this.abortControllerPool = new AbortControllerPool() // Initialize API keys await getAPIKeys() @@ -60,21 +91,39 @@ export class App { await getEncryptionKey() // Initialize Rate Limit - const AllChatFlow: IChatFlow[] = await getAllChatFlow({}) - await initializeRateLimiter(AllChatFlow) + this.rateLimiterManager = RateLimiterManager.getInstance() + await this.rateLimiterManager.initializeRateLimiters(await getDataSource().getRepository(ChatFlow).find()) // Initialize cache pool this.cachePool = new CachePool() // Initialize telemetry this.telemetry = new Telemetry() + + // Initialize SSE Streamer + this.sseStreamer = new SSEStreamer() + + // Init Queues + if (process.env.MODE === MODE.QUEUE) { + this.queueManager = QueueManager.getInstance() + this.queueManager.setupAllQueues({ + componentNodes: this.nodesPool.componentNodes, + telemetry: this.telemetry, + cachePool: this.cachePool, + appDataSource: this.AppDataSource, + abortControllerPool: this.abortControllerPool + }) + this.redisSubscriber = new RedisEventSubscriber(this.sseStreamer) + await this.redisSubscriber.connect() + } + logger.info('📦 [server]: Data Source has been initialized!') } catch (error) { logger.error('❌ [server]: Error during Data Source initialization:', error) } } - async config(socketIO?: Server) { + async config() { // Limit is needed to allow sending/receiving base64 encoded string const flowise_file_size_limit = process.env.FLOWISE_FILE_SIZE_LIMIT || '50mb' this.app.use(express.json({ limit: flowise_file_size_limit })) @@ -120,32 +169,12 @@ export class App { // Add the sanitizeMiddleware to guard against XSS this.app.use(sanitizeMiddleware) - // Make io accessible to our router on req.io - this.app.use((req, res, next) => { - req.io = socketIO - next() - }) - const whitelistURLs = [ - '/api/v1/google-auth', - process.env.GOOGLE_CALLBACK_URL ?? '/api/v1/google-auth/callback', - '/api/v1/verify/apikey/', - '/api/v1/chatflows/apikey/', - '/api/v1/public-chatflows', - '/api/v1/public-chatbotConfig', - '/api/v1/prediction/', - '/api/v1/vector/upsert/', - '/api/v1/node-icon/', - '/api/v1/components-credentials-icon/', - '/api/v1/chatflows-streaming', - '/api/v1/chatflows-uploads', - '/api/v1/openai-assistants-file/download', - '/api/v1/feedback', - '/api/v1/leads', - '/api/v1/get-upload-file', - '/api/v1/ip', - '/api/v1/ping', - '/api/v1/marketplaces/templates' - ] + const whitelistURLs = WHITELIST_URLS + const URL_CASE_INSENSITIVE_REGEX: RegExp = /\/api\/v1\//i + const URL_CASE_SENSITIVE_REGEX: RegExp = /\/api\/v1\// + + this.app.use(authenticationHandlerMiddleware({ whitelistURLs, AppDataSource: this.AppDataSource })) + if (process.env.FLOWISE_USERNAME && process.env.FLOWISE_PASSWORD) { const username = process.env.FLOWISE_USERNAME const password = process.env.FLOWISE_PASSWORD @@ -157,9 +186,84 @@ export class App { whitelistURLs.some((url) => new RegExp(url, 'i').test(req.url)) ? next() : basicAuthMiddleware(req, res, next) } else next() }) + this.app.use(async (req, res, next) => { + if (req.user) return next() + // Step 1: Check if the req path contains /api/v1 regardless of case + if (URL_CASE_INSENSITIVE_REGEX.test(req.path)) { + // Step 2: Check if the req path is case sensitive + if (URL_CASE_SENSITIVE_REGEX.test(req.path)) { + // Step 3: Check if the req path is in the whitelist + const isWhitelisted = whitelistURLs.some((url) => req.path.startsWith(url)) + if (isWhitelisted) { + next() + } else if (req.headers['x-request-from'] === 'internal') { + basicAuthMiddleware(req, res, next) + } else { + const isKeyValidated = await validateAPIKey(req) + if (!isKeyValidated) { + return res.status(401).json({ error: 'Unauthorized Access' }) + } + next() + } + } else { + return res.status(401).json({ error: 'Unauthorized Access' }) + } + } else { + // If the req path does not contain /api/v1, then allow the request to pass through, example: /assets, /canvas + next() + } + }) + } else { + this.app.use(async (req, res, next) => { + if (req.user) return next() + // Step 1: Check if the req path contains /api/v1 regardless of case + if (URL_CASE_INSENSITIVE_REGEX.test(req.path)) { + // Step 2: Check if the req path is case sensitive + if (URL_CASE_SENSITIVE_REGEX.test(req.path)) { + // Step 3: Check if the req path is in the whitelist + const isWhitelisted = whitelistURLs.some((url) => req.path.startsWith(url)) + if (isWhitelisted) { + next() + } else if (req.headers['x-request-from'] === 'internal') { + next() + } else { + const isKeyValidated = await validateAPIKey(req) + if (!isKeyValidated) { + return res.status(401).json({ error: 'Unauthorized Access' }) + } + next() + } + } else { + return res.status(401).json({ error: 'Unauthorized Access' }) + } + } else { + // If the req path does not contain /api/v1, then allow the request to pass through, example: /assets, /canvas + next() + } + }) } - this.app.use(authenticationHandlerMiddleware({ whitelistURLs, AppDataSource: this.AppDataSource })) + if (process.env.ENABLE_METRICS === 'true') { + switch (process.env.METRICS_PROVIDER) { + // default to prometheus + case 'prometheus': + case undefined: + this.metricsProvider = new Prometheus(this.app) + break + case 'open_telemetry': + this.metricsProvider = new OpenTelemetry(this.app) + break + // add more cases for other metrics providers here + } + if (this.metricsProvider) { + await this.metricsProvider.initializeCounters() + logger.info(`📊 [server]: Metrics Provider [${this.metricsProvider.getName()}] has been initialized!`) + } else { + logger.error( + "❌ [server]: Metrics collection is enabled, but failed to initialize provider (valid values are 'prometheus' or 'open_telemetry'." + ) + } + } this.app.use('/api/v1', flowiseApiV1Router) @@ -173,6 +277,10 @@ export class App { }) }) + if (process.env.MODE === MODE.QUEUE) { + this.app.use('/admin/queues', this.queueManager.getBullBoardRouter()) + } + // ---------------------------------------- // Redirect to staging.theanswer.ai // ---------------------------------------- @@ -193,6 +301,9 @@ export class App { try { const removePromises: any[] = [] removePromises.push(this.telemetry.flush()) + if (this.queueManager) { + removePromises.push(this.redisSubscriber.disconnect()) + } await Promise.all(removePromises) } catch (e) { logger.error(`❌[server]: Flowise Server shut down error: ${e}`) @@ -202,13 +313,6 @@ export class App { let serverApp: App | undefined -export const getAllChatFlow = async ({ userId }: { userId?: string }): Promise => - getDataSource() - .getRepository(ChatFlow) - .createQueryBuilder('chatFlow') - .where(userId ? 'chatFlow.userId = :userId OR chatFlow.userId IS NULL' : 'chatFlow.userId IS NULL', { userId }) - .getMany() - export async function start(): Promise { serverApp = new App() @@ -216,12 +320,8 @@ export async function start(): Promise { const port = parseInt(process.env.PORT || '', 10) || 3000 const server = http.createServer(serverApp.app) - const io = new Server(server, { - cors: getCorsOptions() - }) - await serverApp.initDatabase() - await serverApp.config(io) + await serverApp.config() server.listen(port, host, () => { logger.info(`⚡️ [server]: Flowise Server is listening at ${host ? 'http://' + host : ''}:${port}`) diff --git a/packages/server/src/metrics/OpenTelemetry.ts b/packages/server/src/metrics/OpenTelemetry.ts new file mode 100644 index 00000000000..7686225db83 --- /dev/null +++ b/packages/server/src/metrics/OpenTelemetry.ts @@ -0,0 +1,157 @@ +import { FLOWISE_METRIC_COUNTERS, IMetricsProvider } from '../Interface.Metrics' +import { Resource } from '@opentelemetry/resources' +import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions' +import { MeterProvider, PeriodicExportingMetricReader, Histogram } from '@opentelemetry/sdk-metrics' +import { diag, DiagLogLevel, DiagConsoleLogger, Attributes, Counter } from '@opentelemetry/api' +import { getVersion } from 'flowise-components' +import express from 'express' + +export class OpenTelemetry implements IMetricsProvider { + private app: express.Application + private resource: Resource + private otlpMetricExporter: any + // private otlpTraceExporter: any + // private tracerProvider: NodeTracerProvider + private metricReader: PeriodicExportingMetricReader + private meterProvider: MeterProvider + + // Map to hold all counters and histograms + private counters = new Map() + private httpRequestCounter: Counter + private httpRequestDuration: any + + constructor(app: express.Application) { + this.app = app + + if (!process.env.METRICS_OPEN_TELEMETRY_METRIC_ENDPOINT) { + throw new Error('METRICS_OPEN_TELEMETRY_METRIC_ENDPOINT is not defined') + } + + if (process.env.METRICS_OPEN_TELEMETRY_DEBUG === 'true') { + diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG) + } + } + + public getName(): string { + return 'OpenTelemetry' + } + + async initializeCounters(): Promise { + // Define the resource with the service name for trace grouping + const flowiseVersion = await getVersion() + + this.resource = new Resource({ + [ATTR_SERVICE_NAME]: process.env.METRICS_SERVICE_NAME || 'FlowiseAI', + [ATTR_SERVICE_VERSION]: flowiseVersion.version // Version as a label + }) + + const metricProtocol = process.env.METRICS_OPEN_TELEMETRY_PROTOCOL || 'http' // Default to 'http' + // Conditionally import the correct OTLP exporters based on protocol + let OTLPMetricExporter + if (metricProtocol === 'http') { + OTLPMetricExporter = require('@opentelemetry/exporter-metrics-otlp-http').OTLPMetricExporter + } else if (metricProtocol === 'grpc') { + OTLPMetricExporter = require('@opentelemetry/exporter-metrics-otlp-grpc').OTLPMetricExporter + } else if (metricProtocol === 'proto') { + OTLPMetricExporter = require('@opentelemetry/exporter-metrics-otlp-proto').OTLPMetricExporter + } else { + console.error('Invalid METRICS_OPEN_TELEMETRY_PROTOCOL specified. Please set it to "http", "grpc", or "proto".') + process.exit(1) // Exit if invalid protocol type is specified + } + + this.otlpMetricExporter = new OTLPMetricExporter({ + url: process.env.METRICS_OPEN_TELEMETRY_METRIC_ENDPOINT // OTLP endpoint for metrics + }) + + this.metricReader = new PeriodicExportingMetricReader({ + exporter: this.otlpMetricExporter, + exportIntervalMillis: 5000 // Export metrics every 5 seconds + }) + this.meterProvider = new MeterProvider({ resource: this.resource, readers: [this.metricReader] }) + + const meter = this.meterProvider.getMeter('flowise-metrics') + // look at the FLOWISE_COUNTER enum in Interface.Metrics.ts and get all values + // for each counter in the enum, create a new promClient.Counter and add it to the registry + const enumEntries = Object.entries(FLOWISE_METRIC_COUNTERS) + enumEntries.forEach(([name, value]) => { + // derive proper counter name from the enum value (chatflow_created = Chatflow Created) + const properCounterName: string = name.replace(/_/g, ' ').replace(/\b\w/g, (l) => l.toUpperCase()) + this.counters.set( + value, + meter.createCounter(value, { + description: properCounterName + }) + ) + }) + + // in addition to the enum counters, add a few more custom counters + + const versionGuage = meter.createGauge('flowise_version', { + description: 'Flowise version' + }) + // remove the last dot from the version string, e.g. 2.1.3 -> 2.13 (guage needs a number - float) + const formattedVersion = flowiseVersion.version.replace(/\.(\d+)$/, '$1') + versionGuage.record(parseFloat(formattedVersion)) + + // Counter for HTTP requests with method, path, and status as labels + this.httpRequestCounter = meter.createCounter('http_requests_total', { + description: 'Counts the number of HTTP requests received' + }) + + // Histogram to measure HTTP request duration in milliseconds + this.httpRequestDuration = meter.createHistogram('http_request_duration_ms', { + description: 'Records the duration of HTTP requests in ms' + }) + } + + // Function to record HTTP request duration + private recordHttpRequestDuration(durationMs: number, method: string, path: string, status: number) { + this.httpRequestDuration.record(durationMs, { + method, + path, + status: status.toString() + }) + } + + // Function to record HTTP requests with specific labels + private recordHttpRequest(method: string, path: string, status: number) { + this.httpRequestCounter.add(1, { + method, + path, + status: status.toString() + }) + } + + async setupMetricsEndpoint(): Promise { + // Graceful shutdown for telemetry data flushing + process.on('SIGTERM', async () => { + await this.metricReader.shutdown() + await this.meterProvider.shutdown() + }) + + // Runs before each requests + this.app.use((req, res, next) => { + res.locals.startEpoch = Date.now() + next() + }) + + // Runs after each requests + this.app.use((req, res, next) => { + res.on('finish', async () => { + if (res.locals.startEpoch) { + const responseTimeInMs = Date.now() - res.locals.startEpoch + this.recordHttpRequest(req.method, req.path, res.statusCode) + this.recordHttpRequestDuration(responseTimeInMs, req.method, req.path, res.statusCode) + } + }) + next() + }) + } + + async incrementCounter(counter: string, payload: any): Promise { + // Increment OpenTelemetry counter with the payload + if (this.counters.has(counter)) { + ;(this.counters.get(counter) as Counter).add(1, payload) + } + } +} diff --git a/packages/server/src/metrics/Prometheus.ts b/packages/server/src/metrics/Prometheus.ts new file mode 100644 index 00000000000..15eaafeac86 --- /dev/null +++ b/packages/server/src/metrics/Prometheus.ts @@ -0,0 +1,122 @@ +import { FLOWISE_METRIC_COUNTERS, IMetricsProvider } from '../Interface.Metrics' +import express from 'express' +import promClient, { Counter, Histogram, Registry } from 'prom-client' +import { getVersion } from 'flowise-components' + +export class Prometheus implements IMetricsProvider { + private app: express.Application + private readonly register: Registry + private counters: Map | promClient.Gauge | promClient.Histogram> + private requestCounter: Counter + private httpRequestDurationMicroseconds: Histogram + + constructor(app: express.Application) { + this.app = app + this.register = new promClient.Registry() + } + + public getName(): string { + return 'Prometheus' + } + + async initializeCounters(): Promise { + const serviceName: string = process.env.METRICS_SERVICE_NAME || 'FlowiseAI' + this.register.setDefaultLabels({ + app: serviceName + }) + + // look at the FLOWISE_COUNTER enum in Interface.Metrics.ts and get all values + // for each counter in the enum, create a new promClient.Counter and add it to the registry + this.counters = new Map>() + const enumEntries = Object.entries(FLOWISE_METRIC_COUNTERS) + enumEntries.forEach(([name, value]) => { + // derive proper counter name from the enum value (chatflow_created = Chatflow Created) + const properCounterName: string = name.replace(/_/g, ' ').replace(/\b\w/g, (l) => l.toUpperCase()) + this.counters.set( + value, + new promClient.Counter({ + name: value, + help: `Total number of ${properCounterName}`, + labelNames: ['status'] + }) + ) + }) + + // in addition to the enum counters, add a few more custom counters + // version, http_request_duration_ms, http_requests_total + const versionGaugeCounter = new promClient.Gauge({ + name: 'flowise_version_info', + help: 'Flowise version info.', + labelNames: ['version'] + }) + + const { version } = await getVersion() + versionGaugeCounter.set({ version: 'v' + version }, 1) + this.counters.set('flowise_version', versionGaugeCounter) + + this.httpRequestDurationMicroseconds = new promClient.Histogram({ + name: 'http_request_duration_ms', + help: 'Duration of HTTP requests in ms', + labelNames: ['method', 'route', 'code'], + buckets: [1, 5, 15, 50, 100, 200, 300, 400, 500] // buckets for response time from 0.1ms to 500ms + }) + this.counters.set('http_request_duration_ms', this.httpRequestDurationMicroseconds) + + this.requestCounter = new Counter({ + name: 'http_requests_total', + help: 'Total number of HTTP requests', + labelNames: ['method', 'path', 'status'] + }) + this.counters.set('http_requests_total', this.requestCounter) + + this.registerMetrics() + await this.setupMetricsEndpoint() + } + + async setupMetricsEndpoint() { + // Add Prometheus middleware to the app + this.app.use('/api/v1/metrics', async (req, res) => { + res.set('Content-Type', this.register.contentType) + const currentMetrics = await this.register.metrics() + res.send(currentMetrics).end() + }) + + // Runs before each requests + this.app.use((req, res, next) => { + res.locals.startEpoch = Date.now() + next() + }) + + // Runs after each requests + this.app.use((req, res, next) => { + res.on('finish', async () => { + if (res.locals.startEpoch) { + this.requestCounter.inc() + const responseTimeInMs = Date.now() - res.locals.startEpoch + this.httpRequestDurationMicroseconds + .labels(req.method, req.baseUrl, res.statusCode.toString()) + .observe(responseTimeInMs) + } + }) + next() + }) + } + + public incrementCounter(counter: FLOWISE_METRIC_COUNTERS, payload: any) { + // increment the counter with the payload + if (this.counters.has(counter)) { + ;(this.counters.get(counter) as Counter).labels(payload).inc() + } + } + + private registerMetrics() { + if (process.env.METRICS_INCLUDE_NODE_METRICS !== 'false') { + // enable default metrics like CPU usage, memory usage, etc. + promClient.collectDefaultMetrics({ register: this.register }) + } + // Add our custom metrics to the registry + for (const counter of this.counters.values()) { + this.register.registerMetric(counter) + } + } +} diff --git a/packages/server/src/middlewares/authentication/index.ts b/packages/server/src/middlewares/authentication/index.ts index 0570af98264..5516f5b0a14 100644 --- a/packages/server/src/middlewares/authentication/index.ts +++ b/packages/server/src/middlewares/authentication/index.ts @@ -33,6 +33,7 @@ export const authenticationHandlerMiddleware = // First, run the JWT middleware jwtMiddleware(req, res, async (jwtError?: any) => { if (jwtError) { + console.log('JWT Error', jwtError) return next(jwtError) // Handle JWT error } // Proceed with user synchronization if user is authenticated diff --git a/packages/server/src/middlewares/errors/index.ts b/packages/server/src/middlewares/errors/index.ts index ea0ab513ae8..2f649843991 100644 --- a/packages/server/src/middlewares/errors/index.ts +++ b/packages/server/src/middlewares/errors/index.ts @@ -12,8 +12,10 @@ async function errorHandlerMiddleware(err: InternalFlowiseError, req: Request, r // Provide error stack trace only in development stack: process.env.NODE_ENV === 'development' ? err.stack : {} } - res.setHeader('Content-Type', 'application/json') - res.status(displayedError.statusCode).json(displayedError) + if (!req.body || !req.body.streaming || req.body.streaming === 'false') { + res.setHeader('Content-Type', 'application/json') + res.status(displayedError.statusCode).json(displayedError) + } } export default errorHandlerMiddleware diff --git a/packages/server/src/queue/BaseQueue.ts b/packages/server/src/queue/BaseQueue.ts new file mode 100644 index 00000000000..0c3003ea633 --- /dev/null +++ b/packages/server/src/queue/BaseQueue.ts @@ -0,0 +1,81 @@ +import { Queue, Worker, Job, QueueEvents, RedisOptions } from 'bullmq' +import { v4 as uuidv4 } from 'uuid' +import logger from '../utils/logger' + +const QUEUE_REDIS_EVENT_STREAM_MAX_LEN = process.env.QUEUE_REDIS_EVENT_STREAM_MAX_LEN + ? parseInt(process.env.QUEUE_REDIS_EVENT_STREAM_MAX_LEN) + : 10000 +const WORKER_CONCURRENCY = process.env.WORKER_CONCURRENCY ? parseInt(process.env.WORKER_CONCURRENCY) : 100000 + +export abstract class BaseQueue { + protected queue: Queue + protected queueEvents: QueueEvents + protected connection: RedisOptions + private worker: Worker + + constructor(queueName: string, connection: RedisOptions) { + this.connection = connection + this.queue = new Queue(queueName, { + connection: this.connection, + streams: { events: { maxLen: QUEUE_REDIS_EVENT_STREAM_MAX_LEN } } + }) + this.queueEvents = new QueueEvents(queueName, { connection: this.connection }) + } + + abstract processJob(data: any): Promise + + abstract getQueueName(): string + + abstract getQueue(): Queue + + public getWorker(): Worker { + return this.worker + } + + public async addJob(jobData: any): Promise { + const jobId = jobData.id || uuidv4() + return await this.queue.add(jobId, jobData, { removeOnFail: true }) + } + + public createWorker(concurrency: number = WORKER_CONCURRENCY): Worker { + this.worker = new Worker( + this.queue.name, + async (job: Job) => { + const start = new Date().getTime() + logger.info(`Processing job ${job.id} in ${this.queue.name} at ${new Date().toISOString()}`) + const result = await this.processJob(job.data) + const end = new Date().getTime() + logger.info(`Completed job ${job.id} in ${this.queue.name} at ${new Date().toISOString()} (${end - start}ms)`) + return result + }, + { + connection: this.connection, + concurrency + } + ) + return this.worker + } + + public async getJobs(): Promise { + return await this.queue.getJobs() + } + + public async getJobCounts(): Promise<{ [index: string]: number }> { + return await this.queue.getJobCounts() + } + + public async getJobByName(jobName: string): Promise { + const jobs = await this.queue.getJobs() + const job = jobs.find((job) => job.name === jobName) + if (!job) throw new Error(`Job name ${jobName} not found`) + return job + } + + public getQueueEvents(): QueueEvents { + return this.queueEvents + } + + public async clearQueue(): Promise { + await this.queue.obliterate({ force: true }) + } +} diff --git a/packages/server/src/queue/PredictionQueue.ts b/packages/server/src/queue/PredictionQueue.ts new file mode 100644 index 00000000000..3a4f74145a2 --- /dev/null +++ b/packages/server/src/queue/PredictionQueue.ts @@ -0,0 +1,64 @@ +import { DataSource } from 'typeorm' +import { executeFlow } from '../utils/buildChatflow' +import { IComponentNodes, IExecuteFlowParams } from '../Interface' +import { Telemetry } from '../utils/telemetry' +import { CachePool } from '../CachePool' +import { RedisEventPublisher } from './RedisEventPublisher' +import { AbortControllerPool } from '../AbortControllerPool' +import { BaseQueue } from './BaseQueue' +import { RedisOptions } from 'bullmq' + +interface PredictionQueueOptions { + appDataSource: DataSource + telemetry: Telemetry + cachePool: CachePool + componentNodes: IComponentNodes + abortControllerPool: AbortControllerPool +} + +export class PredictionQueue extends BaseQueue { + private componentNodes: IComponentNodes + private telemetry: Telemetry + private cachePool: CachePool + private appDataSource: DataSource + private abortControllerPool: AbortControllerPool + private redisPublisher: RedisEventPublisher + private queueName: string + + constructor(name: string, connection: RedisOptions, options: PredictionQueueOptions) { + super(name, connection) + this.queueName = name + this.componentNodes = options.componentNodes || {} + this.telemetry = options.telemetry + this.cachePool = options.cachePool + this.appDataSource = options.appDataSource + this.abortControllerPool = options.abortControllerPool + this.redisPublisher = new RedisEventPublisher() + this.redisPublisher.connect() + } + + public getQueueName() { + return this.queueName + } + + public getQueue() { + return this.queue + } + + async processJob(data: IExecuteFlowParams) { + if (this.appDataSource) data.appDataSource = this.appDataSource + if (this.telemetry) data.telemetry = this.telemetry + if (this.cachePool) data.cachePool = this.cachePool + if (this.componentNodes) data.componentNodes = this.componentNodes + if (this.redisPublisher) data.sseStreamer = this.redisPublisher + + if (this.abortControllerPool) { + const abortControllerId = `${data.chatflow.id}_${data.chatId}` + const signal = new AbortController() + this.abortControllerPool.add(abortControllerId, signal) + data.signal = signal + } + + return await executeFlow(data) + } +} diff --git a/packages/server/src/queue/QueueManager.ts b/packages/server/src/queue/QueueManager.ts new file mode 100644 index 00000000000..166a4125d4f --- /dev/null +++ b/packages/server/src/queue/QueueManager.ts @@ -0,0 +1,127 @@ +import { BaseQueue } from './BaseQueue' +import { PredictionQueue } from './PredictionQueue' +import { UpsertQueue } from './UpsertQueue' +import { IComponentNodes } from '../Interface' +import { Telemetry } from '../utils/telemetry' +import { CachePool } from '../CachePool' +import { DataSource } from 'typeorm' +import { AbortControllerPool } from '../AbortControllerPool' +import { QueueEventsProducer, RedisOptions } from 'bullmq' +import { createBullBoard } from 'bull-board' +import { BullMQAdapter } from 'bull-board/bullMQAdapter' +import { Express } from 'express' + +const QUEUE_NAME = process.env.QUEUE_NAME || 'flowise-queue' + +type QUEUE_TYPE = 'prediction' | 'upsert' + +export class QueueManager { + private static instance: QueueManager + private queues: Map = new Map() + private connection: RedisOptions + private bullBoardRouter?: Express + private predictionQueueEventsProducer?: QueueEventsProducer + + private constructor() { + let tlsOpts = undefined + if (process.env.REDIS_URL && process.env.REDIS_URL.startsWith('rediss://')) { + tlsOpts = { + rejectUnauthorized: false + } + } else if (process.env.REDIS_TLS === 'true') { + tlsOpts = { + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + } + this.connection = { + url: process.env.REDIS_URL || undefined, + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + tls: tlsOpts + } + } + + public static getInstance(): QueueManager { + if (!QueueManager.instance) { + QueueManager.instance = new QueueManager() + } + return QueueManager.instance + } + + public registerQueue(name: string, queue: BaseQueue) { + this.queues.set(name, queue) + } + + public getConnection() { + return this.connection + } + + public getQueue(name: QUEUE_TYPE): BaseQueue { + const queue = this.queues.get(name) + if (!queue) throw new Error(`Queue ${name} not found`) + return queue + } + + public getPredictionQueueEventsProducer(): QueueEventsProducer { + if (!this.predictionQueueEventsProducer) throw new Error('Prediction queue events producer not found') + return this.predictionQueueEventsProducer + } + + public getBullBoardRouter(): Express { + if (!this.bullBoardRouter) throw new Error('BullBoard router not found') + return this.bullBoardRouter + } + + public async getAllJobCounts(): Promise<{ [queueName: string]: { [status: string]: number } }> { + const counts: { [queueName: string]: { [status: string]: number } } = {} + + for (const [name, queue] of this.queues) { + counts[name] = await queue.getJobCounts() + } + + return counts + } + + public setupAllQueues({ + componentNodes, + telemetry, + cachePool, + appDataSource, + abortControllerPool + }: { + componentNodes: IComponentNodes + telemetry: Telemetry + cachePool: CachePool + appDataSource: DataSource + abortControllerPool: AbortControllerPool + }) { + const predictionQueueName = `${QUEUE_NAME}-prediction` + const predictionQueue = new PredictionQueue(predictionQueueName, this.connection, { + componentNodes, + telemetry, + cachePool, + appDataSource, + abortControllerPool + }) + this.registerQueue('prediction', predictionQueue) + this.predictionQueueEventsProducer = new QueueEventsProducer(predictionQueue.getQueueName(), { + connection: this.connection + }) + + const upsertionQueueName = `${QUEUE_NAME}-upsertion` + const upsertionQueue = new UpsertQueue(upsertionQueueName, this.connection, { + componentNodes, + telemetry, + cachePool, + appDataSource + }) + this.registerQueue('upsert', upsertionQueue) + + const bullboard = createBullBoard([new BullMQAdapter(predictionQueue.getQueue()), new BullMQAdapter(upsertionQueue.getQueue())]) + this.bullBoardRouter = bullboard.router + } +} diff --git a/packages/server/src/queue/RedisEventPublisher.ts b/packages/server/src/queue/RedisEventPublisher.ts new file mode 100644 index 00000000000..946aae93a41 --- /dev/null +++ b/packages/server/src/queue/RedisEventPublisher.ts @@ -0,0 +1,262 @@ +import { IServerSideEventStreamer } from 'flowise-components' +import { createClient } from 'redis' + +export class RedisEventPublisher implements IServerSideEventStreamer { + private redisPublisher: ReturnType + + constructor() { + if (process.env.REDIS_URL) { + this.redisPublisher = createClient({ + url: process.env.REDIS_URL + }) + } else { + this.redisPublisher = createClient({ + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + socket: { + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + tls: process.env.REDIS_TLS === 'true', + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + }) + } + } + + async connect() { + await this.redisPublisher.connect() + } + + streamCustomEvent(chatId: string, eventType: string, data: any) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType, + data + }) + ) + } catch (error) { + console.error('Error streaming custom event:', error) + } + } + + streamStartEvent(chatId: string, data: string) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'start', + data + }) + ) + } catch (error) { + console.error('Error streaming start event:', error) + } + } + + streamTokenEvent(chatId: string, data: string) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'token', + data + }) + ) + } catch (error) { + console.error('Error streaming token event:', error) + } + } + + streamSourceDocumentsEvent(chatId: string, data: any) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'sourceDocuments', + data + }) + ) + } catch (error) { + console.error('Error streaming sourceDocuments event:', error) + } + } + + streamArtifactsEvent(chatId: string, data: any) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'artifacts', + data + }) + ) + } catch (error) { + console.error('Error streaming artifacts event:', error) + } + } + + streamUsedToolsEvent(chatId: string, data: any) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'usedTools', + data + }) + ) + } catch (error) { + console.error('Error streaming usedTools event:', error) + } + } + + streamFileAnnotationsEvent(chatId: string, data: any) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'fileAnnotations', + data + }) + ) + } catch (error) { + console.error('Error streaming fileAnnotations event:', error) + } + } + + streamToolEvent(chatId: string, data: any): void { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'tool', + data + }) + ) + } catch (error) { + console.error('Error streaming tool event:', error) + } + } + + streamAgentReasoningEvent(chatId: string, data: any): void { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'agentReasoning', + data + }) + ) + } catch (error) { + console.error('Error streaming agentReasoning event:', error) + } + } + + streamNextAgentEvent(chatId: string, data: any): void { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'nextAgent', + data + }) + ) + } catch (error) { + console.error('Error streaming nextAgent event:', error) + } + } + + streamActionEvent(chatId: string, data: any): void { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'action', + data + }) + ) + } catch (error) { + console.error('Error streaming action event:', error) + } + } + + streamAbortEvent(chatId: string): void { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'abort', + data: '[DONE]' + }) + ) + } catch (error) { + console.error('Error streaming abort event:', error) + } + } + + streamEndEvent(_: string) { + // placeholder for future use + } + + streamErrorEvent(chatId: string, msg: string) { + try { + this.redisPublisher.publish( + chatId, + JSON.stringify({ + chatId, + eventType: 'error', + data: msg + }) + ) + } catch (error) { + console.error('Error streaming error event:', error) + } + } + + streamMetadataEvent(chatId: string, apiResponse: any) { + try { + const metadataJson: any = {} + if (apiResponse.chatId) { + metadataJson['chatId'] = apiResponse.chatId + } + if (apiResponse.chatMessageId) { + metadataJson['chatMessageId'] = apiResponse.chatMessageId + } + if (apiResponse.question) { + metadataJson['question'] = apiResponse.question + } + if (apiResponse.sessionId) { + metadataJson['sessionId'] = apiResponse.sessionId + } + if (apiResponse.memoryType) { + metadataJson['memoryType'] = apiResponse.memoryType + } + if (Object.keys(metadataJson).length > 0) { + this.streamCustomEvent(chatId, 'metadata', metadataJson) + } + } catch (error) { + console.error('Error streaming metadata event:', error) + } + } + + async disconnect() { + if (this.redisPublisher) { + await this.redisPublisher.quit() + } + } +} diff --git a/packages/server/src/queue/RedisEventSubscriber.ts b/packages/server/src/queue/RedisEventSubscriber.ts new file mode 100644 index 00000000000..81b18e3cc84 --- /dev/null +++ b/packages/server/src/queue/RedisEventSubscriber.ts @@ -0,0 +1,108 @@ +import { createClient } from 'redis' +import { SSEStreamer } from '../utils/SSEStreamer' + +export class RedisEventSubscriber { + private redisSubscriber: ReturnType + private sseStreamer: SSEStreamer + private subscribedChannels: Set = new Set() + + constructor(sseStreamer: SSEStreamer) { + if (process.env.REDIS_URL) { + this.redisSubscriber = createClient({ + url: process.env.REDIS_URL + }) + } else { + this.redisSubscriber = createClient({ + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + socket: { + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + tls: process.env.REDIS_TLS === 'true', + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + }) + } + this.sseStreamer = sseStreamer + } + + async connect() { + await this.redisSubscriber.connect() + } + + subscribe(channel: string) { + // Subscribe to the Redis channel for job events + if (!this.redisSubscriber) { + throw new Error('Redis subscriber not connected.') + } + + // Check if already subscribed + if (this.subscribedChannels.has(channel)) { + return // Prevent duplicate subscription + } + + this.redisSubscriber.subscribe(channel, (message) => { + this.handleEvent(message) + }) + + // Mark the channel as subscribed + this.subscribedChannels.add(channel) + } + + private handleEvent(message: string) { + // Parse the message from Redis + const event = JSON.parse(message) + const { eventType, chatId, data } = event + + // Stream the event to the client + switch (eventType) { + case 'start': + this.sseStreamer.streamStartEvent(chatId, data) + break + case 'token': + this.sseStreamer.streamTokenEvent(chatId, data) + break + case 'sourceDocuments': + this.sseStreamer.streamSourceDocumentsEvent(chatId, data) + break + case 'artifacts': + this.sseStreamer.streamArtifactsEvent(chatId, data) + break + case 'usedTools': + this.sseStreamer.streamUsedToolsEvent(chatId, data) + break + case 'fileAnnotations': + this.sseStreamer.streamFileAnnotationsEvent(chatId, data) + break + case 'tool': + this.sseStreamer.streamToolEvent(chatId, data) + break + case 'agentReasoning': + this.sseStreamer.streamAgentReasoningEvent(chatId, data) + break + case 'nextAgent': + this.sseStreamer.streamNextAgentEvent(chatId, data) + break + case 'action': + this.sseStreamer.streamActionEvent(chatId, data) + break + case 'abort': + this.sseStreamer.streamAbortEvent(chatId) + break + case 'error': + this.sseStreamer.streamErrorEvent(chatId, data) + break + case 'metadata': + this.sseStreamer.streamMetadataEvent(chatId, data) + break + } + } + + async disconnect() { + if (this.redisSubscriber) { + await this.redisSubscriber.quit() + } + } +} diff --git a/packages/server/src/queue/UpsertQueue.ts b/packages/server/src/queue/UpsertQueue.ts new file mode 100644 index 00000000000..451c413e750 --- /dev/null +++ b/packages/server/src/queue/UpsertQueue.ts @@ -0,0 +1,85 @@ +import { DataSource } from 'typeorm' +import { + IComponentNodes, + IExecuteDocStoreUpsert, + IExecuteFlowParams, + IExecutePreviewLoader, + IExecuteProcessLoader, + IExecuteVectorStoreInsert +} from '../Interface' +import { Telemetry } from '../utils/telemetry' +import { CachePool } from '../CachePool' +import { BaseQueue } from './BaseQueue' +import { executeUpsert } from '../utils/upsertVector' +import { executeDocStoreUpsert, insertIntoVectorStore, previewChunks, processLoader } from '../services/documentstore' +import { RedisOptions } from 'bullmq' +import logger from '../utils/logger' + +interface UpsertQueueOptions { + appDataSource: DataSource + telemetry: Telemetry + cachePool: CachePool + componentNodes: IComponentNodes +} + +export class UpsertQueue extends BaseQueue { + private componentNodes: IComponentNodes + private telemetry: Telemetry + private cachePool: CachePool + private appDataSource: DataSource + private queueName: string + + constructor(name: string, connection: RedisOptions, options: UpsertQueueOptions) { + super(name, connection) + this.queueName = name + this.componentNodes = options.componentNodes || {} + this.telemetry = options.telemetry + this.cachePool = options.cachePool + this.appDataSource = options.appDataSource + } + + public getQueueName() { + return this.queueName + } + + public getQueue() { + return this.queue + } + + async processJob( + data: IExecuteFlowParams | IExecuteDocStoreUpsert | IExecuteProcessLoader | IExecuteVectorStoreInsert | IExecutePreviewLoader + ) { + if (this.appDataSource) data.appDataSource = this.appDataSource + if (this.telemetry) data.telemetry = this.telemetry + if (this.cachePool) data.cachePool = this.cachePool + if (this.componentNodes) data.componentNodes = this.componentNodes + + // document-store/loader/preview + if (Object.prototype.hasOwnProperty.call(data, 'isPreviewOnly')) { + logger.info('Previewing loader...') + return await previewChunks(data as IExecutePreviewLoader) + } + + // document-store/loader/process/:loaderId + if (Object.prototype.hasOwnProperty.call(data, 'isProcessWithoutUpsert')) { + logger.info('Processing loader...') + return await processLoader(data as IExecuteProcessLoader) + } + + // document-store/vectorstore/insert/:loaderId + if (Object.prototype.hasOwnProperty.call(data, 'isVectorStoreInsert')) { + logger.info('Inserting vector store...') + return await insertIntoVectorStore(data as IExecuteVectorStoreInsert) + } + + // document-store/upsert/:storeId + if (Object.prototype.hasOwnProperty.call(data, 'storeId')) { + logger.info('Upserting to vector store via document loader...') + return await executeDocStoreUpsert(data as IExecuteDocStoreUpsert) + } + + // upsert-vector/:chatflowid + logger.info('Upserting to vector store via chatflow...') + return await executeUpsert(data as IExecuteFlowParams) + } +} diff --git a/packages/server/src/routes/apikey/index.ts b/packages/server/src/routes/apikey/index.ts index dbc043dd59e..9ff44137f2e 100644 --- a/packages/server/src/routes/apikey/index.ts +++ b/packages/server/src/routes/apikey/index.ts @@ -1,5 +1,6 @@ import express from 'express' import apikeyController from '../../controllers/apikey' +import enforceAbility from '../../middlewares/authentication/enforceAbility' const router = express.Router() // CREATE @@ -7,7 +8,7 @@ router.post('/', apikeyController.createApiKey) router.post('/import', apikeyController.importKeys) // READ -router.get('/', apikeyController.getAllApiKeys) +router.get('/', enforceAbility('ApiKey'), apikeyController.getAllApiKeys) // UPDATE router.put(['/', '/:id'], apikeyController.updateApiKey) diff --git a/packages/server/src/routes/assistants/index.ts b/packages/server/src/routes/assistants/index.ts index 7b01cdd0111..f7754bcac8f 100644 --- a/packages/server/src/routes/assistants/index.ts +++ b/packages/server/src/routes/assistants/index.ts @@ -16,4 +16,11 @@ router.put(['/', '/:id'], assistantsController.updateAssistant) // DELETE router.delete(['/', '/:id'], assistantsController.deleteAssistant) +router.get('/components/chatmodels', assistantsController.getChatModels) +router.get('/components/docstores', assistantsController.getDocumentStores) +router.get('/components/tools', assistantsController.getTools) + +// Generate Assistant Instruction +router.post('/generate/instruction', assistantsController.generateAssistantInstruction) + export default router diff --git a/packages/server/src/routes/attachments/index.ts b/packages/server/src/routes/attachments/index.ts new file mode 100644 index 00000000000..3a67ba67c5f --- /dev/null +++ b/packages/server/src/routes/attachments/index.ts @@ -0,0 +1,10 @@ +import express from 'express' +import attachmentsController from '../../controllers/attachments' +import { getMulterStorage } from '../../utils' + +const router = express.Router() + +// CREATE +router.post('/:chatflowId/:chatId', getMulterStorage().array('files'), attachmentsController.createAttachment) + +export default router diff --git a/packages/server/src/routes/documentstore/index.ts b/packages/server/src/routes/documentstore/index.ts index 3249f5c4832..51bc6e73898 100644 --- a/packages/server/src/routes/documentstore/index.ts +++ b/packages/server/src/routes/documentstore/index.ts @@ -1,18 +1,26 @@ import express from 'express' import documentStoreController from '../../controllers/documentstore' +import { getMulterStorage } from '../../utils' + const router = express.Router() +router.post(['/upsert/', '/upsert/:id'], getMulterStorage().array('files'), documentStoreController.upsertDocStoreMiddleware) + +router.post(['/refresh/', '/refresh/:id'], documentStoreController.refreshDocStoreMiddleware) + /** Document Store Routes */ // Create document store router.post('/store', documentStoreController.createDocumentStore) // List all stores -router.get('/stores', documentStoreController.getAllDocumentStores) +router.get('/store', documentStoreController.getAllDocumentStores) // Get specific store router.get('/store/:id', documentStoreController.getDocumentStoreById) // Update documentStore router.put('/store/:id', documentStoreController.updateDocumentStore) // Delete documentStore router.delete('/store/:id', documentStoreController.deleteDocumentStore) +// Get document store configs +router.get('/store-configs/:id/:loaderId', documentStoreController.getDocStoreConfigs) /** Component Nodes = Document Store - Loaders */ // Get all loaders @@ -22,8 +30,10 @@ router.get('/components/loaders', documentStoreController.getDocumentLoaders) router.delete('/loader/:id/:loaderId', documentStoreController.deleteLoaderFromDocumentStore) // chunking preview router.post('/loader/preview', documentStoreController.previewFileChunks) +// saving process +router.post('/loader/save', documentStoreController.saveProcessingLoader) // chunking process -router.post('/loader/process', documentStoreController.processFileChunks) +router.post('/loader/process/:loaderId', documentStoreController.processLoader) /** Document Store - Loaders - Chunks */ // delete specific file chunk from the store @@ -53,4 +63,7 @@ router.get('/components/recordmanager', documentStoreController.getRecordManager // update the selected vector store from the playground router.post('/vectorstore/update', documentStoreController.updateVectorStoreConfigOnly) +// generate docstore tool description +router.post('/generate-tool-desc/:id', documentStoreController.generateDocStoreToolDesc) + export default router diff --git a/packages/server/src/routes/export-import/index.ts b/packages/server/src/routes/export-import/index.ts new file mode 100644 index 00000000000..40c3930d2fd --- /dev/null +++ b/packages/server/src/routes/export-import/index.ts @@ -0,0 +1,9 @@ +import express from 'express' +import exportImportController from '../../controllers/export-import' +const router = express.Router() + +router.post('/export', exportImportController.exportData) + +router.post('/import', exportImportController.importData) + +export default router diff --git a/packages/server/src/routes/index.ts b/packages/server/src/routes/index.ts index 6197e82743c..78bc3f0b8d8 100644 --- a/packages/server/src/routes/index.ts +++ b/packages/server/src/routes/index.ts @@ -1,6 +1,7 @@ import express from 'express' import apikeyRouter from './apikey' import assistantsRouter from './assistants' +import attachmentsRouter from './attachments' import chatMessageRouter from './chat-messages' import chatflowsRouter from './chatflows' import chatflowsStreamingRouter from './chatflows-streaming' @@ -9,6 +10,7 @@ import componentsCredentialsRouter from './components-credentials' import componentsCredentialsIconRouter from './components-credentials-icon' import credentialsRouter from './credentials' import documentStoreRouter from './documentstore' +import exportImportRouter from './export-import' import feedbackRouter from './feedback' import fetchLinksRouter from './fetch-links' import flowConfigRouter from './flow-config' @@ -27,6 +29,7 @@ import nodesRouter from './nodes' import openaiAssistantsRouter from './openai-assistants' import openaiAssistantsFileRouter from './openai-assistants-files' import openaiAssistantsVectorStoreRouter from './openai-assistants-vector-store' +import openaiRealtimeRouter from './openai-realtime' import pingRouter from './ping' import predictionRouter from './predictions' import promptListsRouter from './prompts-lists' @@ -42,6 +45,7 @@ import versionRouter from './versions' import planRouter from './plan' import chatsRouter from './chats' import googleAuthRouter from './google-auth' +import nvidiaNimRouter from './nvidia-nim' const router = express.Router() @@ -49,6 +53,7 @@ router.use('/', googleAuthRouter) router.use('/ping', pingRouter) router.use('/apikey', apikeyRouter) router.use('/assistants', assistantsRouter) +router.use('/attachments', attachmentsRouter) router.use('/chatflows', chatflowsRouter) router.use('/chatflows-streaming', chatflowsStreamingRouter) router.use('/chatmessage', chatMessageRouter) @@ -57,6 +62,7 @@ router.use('/components-credentials-icon', componentsCredentialsIconRouter) router.use('/chatflows-uploads', chatflowsUploadsRouter) router.use('/credentials', credentialsRouter) router.use('/document-store', documentStoreRouter) +router.use('/export-import', exportImportRouter) router.use('/feedback', feedbackRouter) router.use('/fetch-links', fetchLinksRouter) router.use('/flow-config', flowConfigRouter) @@ -76,6 +82,7 @@ router.use('/openai-assistants', openaiAssistantsRouter) router.use('/openai-assistants-file', openaiAssistantsFileRouter) router.use('/openai-assistants-vector-store', openaiAssistantsVectorStoreRouter) router.use('/plan', planRouter) +router.use('/openai-realtime', openaiRealtimeRouter) router.use('/prediction', predictionRouter) router.use('/prompts-list', promptListsRouter) router.use('/public-chatbotConfig', publicChatbotRouter) @@ -88,5 +95,6 @@ router.use('/verify', verifyRouter) router.use('/version', versionRouter) router.use('/upsert-history', upsertHistoryRouter) router.use('/chats', chatsRouter) +router.use('/nvidia-nim', nvidiaNimRouter) export default router diff --git a/packages/server/src/routes/marketplaces/index.ts b/packages/server/src/routes/marketplaces/index.ts index 19172988405..d0773e3aaa0 100644 --- a/packages/server/src/routes/marketplaces/index.ts +++ b/packages/server/src/routes/marketplaces/index.ts @@ -6,4 +6,12 @@ const router = express.Router() router.get('/templates', marketplacesController.getAllTemplates) router.get('/templates/:id', marketplacesController.getMarketplaceTemplate) +router.post('/custom', marketplacesController.saveCustomTemplate) + +// READ +router.get('/custom', marketplacesController.getAllCustomTemplates) + +// DELETE +router.delete(['/', '/custom/:id'], marketplacesController.deleteCustomTemplate) + export default router diff --git a/packages/server/src/routes/nvidia-nim/index.ts b/packages/server/src/routes/nvidia-nim/index.ts new file mode 100644 index 00000000000..9f695db4c63 --- /dev/null +++ b/packages/server/src/routes/nvidia-nim/index.ts @@ -0,0 +1,14 @@ +import express from 'express' +import nimController from '../../controllers/nvidia-nim' +const router = express.Router() + +// READ +router.get('/preload', nimController.preload) +router.get('/get-token', nimController.getToken) +router.get('/download-installer', nimController.downloadInstaller) +router.post('/pull-image', nimController.pullImage) +router.post('/start-container', nimController.startContainer) +router.post('/get-image', nimController.getImage) +router.post('/get-container', nimController.getContainer) + +export default router diff --git a/packages/server/src/routes/openai-assistants-files/index.ts b/packages/server/src/routes/openai-assistants-files/index.ts index 771e5fd6d26..302f8c2f82e 100644 --- a/packages/server/src/routes/openai-assistants-files/index.ts +++ b/packages/server/src/routes/openai-assistants-files/index.ts @@ -1,12 +1,10 @@ import express from 'express' -import multer from 'multer' -import path from 'path' import openaiAssistantsController from '../../controllers/openai-assistants' +import { getMulterStorage } from '../../utils' const router = express.Router() -const upload = multer({ dest: `${path.join(__dirname, '..', '..', '..', 'uploads')}/` }) router.post('/download/', openaiAssistantsController.getFileFromAssistant) -router.post('/upload/', upload.array('files'), openaiAssistantsController.uploadAssistantFiles) +router.post('/upload/', getMulterStorage().array('files'), openaiAssistantsController.uploadAssistantFiles) export default router diff --git a/packages/server/src/routes/openai-assistants-vector-store/index.ts b/packages/server/src/routes/openai-assistants-vector-store/index.ts index 1560e37ecf7..0706c9eb4e6 100644 --- a/packages/server/src/routes/openai-assistants-vector-store/index.ts +++ b/packages/server/src/routes/openai-assistants-vector-store/index.ts @@ -1,10 +1,8 @@ import express from 'express' -import multer from 'multer' -import path from 'path' import openaiAssistantsVectorStoreController from '../../controllers/openai-assistants-vector-store' +import { getMulterStorage } from '../../utils' const router = express.Router() -const upload = multer({ dest: `${path.join(__dirname, '..', '..', '..', 'uploads')}/` }) // CREATE router.post('/', openaiAssistantsVectorStoreController.createAssistantVectorStore) @@ -22,7 +20,7 @@ router.put(['/', '/:id'], openaiAssistantsVectorStoreController.updateAssistantV router.delete(['/', '/:id'], openaiAssistantsVectorStoreController.deleteAssistantVectorStore) // POST -router.post('/:id', upload.array('files'), openaiAssistantsVectorStoreController.uploadFilesToAssistantVectorStore) +router.post('/:id', getMulterStorage().array('files'), openaiAssistantsVectorStoreController.uploadFilesToAssistantVectorStore) // DELETE router.patch(['/', '/:id'], openaiAssistantsVectorStoreController.deleteFilesFromAssistantVectorStore) diff --git a/packages/server/src/routes/openai-realtime/index.ts b/packages/server/src/routes/openai-realtime/index.ts new file mode 100644 index 00000000000..68ed0427da4 --- /dev/null +++ b/packages/server/src/routes/openai-realtime/index.ts @@ -0,0 +1,12 @@ +import express from 'express' +import openaiRealTimeController from '../../controllers/openai-realtime' + +const router = express.Router() + +// GET +router.get(['/', '/:id'], openaiRealTimeController.getAgentTools) + +// EXECUTE +router.post(['/', '/:id'], openaiRealTimeController.executeAgentTool) + +export default router diff --git a/packages/server/src/routes/predictions/index.ts b/packages/server/src/routes/predictions/index.ts index ded2d34248d..40f37eef17c 100644 --- a/packages/server/src/routes/predictions/index.ts +++ b/packages/server/src/routes/predictions/index.ts @@ -1,13 +1,15 @@ import express from 'express' -import multer from 'multer' -import path from 'path' import predictionsController from '../../controllers/predictions' +import { getMulterStorage } from '../../utils' const router = express.Router() -const upload = multer({ dest: `${path.join(__dirname, '..', '..', '..', 'uploads')}/` }) - // CREATE -router.post(['/', '/:id'], upload.array('files'), predictionsController.getRateLimiterMiddleware, predictionsController.createPrediction) +router.post( + ['/', '/:id'], + getMulterStorage().array('files'), + predictionsController.getRateLimiterMiddleware, + predictionsController.createPrediction +) export default router diff --git a/packages/server/src/routes/vectors/index.ts b/packages/server/src/routes/vectors/index.ts index b0da82b64ba..f03e0dc7f7e 100644 --- a/packages/server/src/routes/vectors/index.ts +++ b/packages/server/src/routes/vectors/index.ts @@ -1,19 +1,16 @@ import express from 'express' -import multer from 'multer' -import path from 'path' import vectorsController from '../../controllers/vectors' +import { getMulterStorage } from '../../utils' const router = express.Router() -const upload = multer({ dest: `${path.join(__dirname, '..', '..', '..', 'uploads')}/` }) - // CREATE router.post( ['/upsert/', '/upsert/:id'], - upload.array('files'), + getMulterStorage().array('files'), vectorsController.getRateLimiterMiddleware, vectorsController.upsertVectorMiddleware ) -router.post(['/internal-upsert/', '/internal-upsert/:id'], vectorsController.createInternalUpsert) +router.post(['/internal-upsert/', '/internal-upsert/:id'], getMulterStorage().array('files'), vectorsController.createInternalUpsert) export default router diff --git a/packages/server/src/services/apikey/index.ts b/packages/server/src/services/apikey/index.ts index d4ce3a0e8ba..00c4a1a0f60 100644 --- a/packages/server/src/services/apikey/index.ts +++ b/packages/server/src/services/apikey/index.ts @@ -29,6 +29,9 @@ const _apikeysStoredInDb = (): boolean => { } const getAllApiKeys = async (user: IUser) => { + if (!user) { + throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) + } try { if (_apikeysStoredInJson()) { const keys = await getAPIKeys_json() @@ -59,14 +62,14 @@ const getAllApiKeys = async (user: IUser) => { } } -const getApiKey = async (keyName: string) => { +const getApiKey = async (apiKey: string) => { try { if (_apikeysStoredInJson()) { - return getApiKey_json(keyName) + return getApiKey_json(apiKey) } else if (_apikeysStoredInDb()) { const appServer = getRunningExpressApp() const currentKey = await appServer.AppDataSource.getRepository(ApiKey).findOneBy({ - keyName: keyName + apiKey: apiKey }) if (!currentKey) { return undefined diff --git a/packages/server/src/services/assistants/index.ts b/packages/server/src/services/assistants/index.ts index 48a926d4502..0681376bc53 100644 --- a/packages/server/src/services/assistants/index.ts +++ b/packages/server/src/services/assistants/index.ts @@ -4,17 +4,44 @@ import { uniqWith, isEqual, cloneDeep } from 'lodash' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' import { Assistant } from '../../database/entities/Assistant' import { Credential } from '../../database/entities/Credential' -import { decryptCredentialData, getAppVersion } from '../../utils' +import { databaseEntities, decryptCredentialData, getAppVersion } from '../../utils' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' - -const createAssistant = async (requestBody: any): Promise => { +import { DeleteResult, QueryRunner } from 'typeorm' +import { FLOWISE_METRIC_COUNTERS, FLOWISE_COUNTER_STATUS } from '../../Interface.Metrics' +import { AssistantType } from '../../Interface' +import nodesService from '../nodes' +import { DocumentStore } from '../../database/entities/DocumentStore' +import { ICommonObject } from 'flowise-components' +import logger from '../../utils/logger' +import { ASSISTANT_PROMPT_GENERATOR } from '../../utils/prompt' +import { INPUT_PARAMS_TYPE } from '../../utils/constants' + +const createAssistant = async (requestBody: any): Promise => { try { const appServer = getRunningExpressApp() if (!requestBody.details) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Invalid request body`) } const assistantDetails = JSON.parse(requestBody.details) + + if (requestBody.type === 'CUSTOM') { + const newAssistant = new Assistant() + Object.assign(newAssistant, requestBody) + + const assistant = appServer.AppDataSource.getRepository(Assistant).create(newAssistant) + const dbResponse = await appServer.AppDataSource.getRepository(Assistant).save(assistant) + + await appServer.telemetry.sendTelemetry('assistant_created', { + version: await getAppVersion(), + assistantId: dbResponse.id + }) + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.ASSISTANT_CREATED, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) + return dbResponse + } + try { const credential = await appServer.AppDataSource.getRepository(Credential).findOneBy({ id: requestBody.credential @@ -110,6 +137,7 @@ const createAssistant = async (requestBody: any): Promise => { version: await getAppVersion(), assistantId: dbResponse.id }) + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.ASSISTANT_CREATED, { status: FLOWISE_COUNTER_STATUS.SUCCESS }) return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -119,7 +147,7 @@ const createAssistant = async (requestBody: any): Promise => { } } -const deleteAssistant = async (assistantId: string, isDeleteBoth: any): Promise => { +const deleteAssistant = async (assistantId: string, isDeleteBoth: any): Promise => { try { const appServer = getRunningExpressApp() const assistant = await appServer.AppDataSource.getRepository(Assistant).findOneBy({ @@ -128,6 +156,10 @@ const deleteAssistant = async (assistantId: string, isDeleteBoth: any): Promise< if (!assistant) { throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Assistant ${assistantId} not found`) } + if (assistant.type === 'CUSTOM') { + const dbResponse = await appServer.AppDataSource.getRepository(Assistant).delete({ id: assistantId }) + return dbResponse + } try { const assistantDetails = JSON.parse(assistant.details) const credential = await appServer.AppDataSource.getRepository(Credential).findOneBy({ @@ -150,11 +182,7 @@ const deleteAssistant = async (assistantId: string, isDeleteBoth: any): Promise< if (isDeleteBoth) await openai.beta.assistants.del(assistantDetails.id) return dbResponse } catch (error: any) { - if (error.status === 404 && error.type === 'invalid_request_error') { - return 'OK' - } else { - throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error deleting assistant - ${getErrorMessage(error)}`) - } + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error deleting assistant - ${getErrorMessage(error)}`) } } catch (error) { throw new InternalFlowiseError( @@ -164,9 +192,15 @@ const deleteAssistant = async (assistantId: string, isDeleteBoth: any): Promise< } } -const getAllAssistants = async (): Promise => { +const getAllAssistants = async (type?: AssistantType): Promise => { try { const appServer = getRunningExpressApp() + if (type) { + const dbResponse = await appServer.AppDataSource.getRepository(Assistant).findBy({ + type + }) + return dbResponse + } const dbResponse = await appServer.AppDataSource.getRepository(Assistant).find() return dbResponse } catch (error) { @@ -177,7 +211,7 @@ const getAllAssistants = async (): Promise => { } } -const getAssistantById = async (assistantId: string): Promise => { +const getAssistantById = async (assistantId: string): Promise => { try { const appServer = getRunningExpressApp() const dbResponse = await appServer.AppDataSource.getRepository(Assistant).findOneBy({ @@ -195,7 +229,7 @@ const getAssistantById = async (assistantId: string): Promise => { } } -const updateAssistant = async (assistantId: string, requestBody: any): Promise => { +const updateAssistant = async (assistantId: string, requestBody: any): Promise => { try { const appServer = getRunningExpressApp() const assistant = await appServer.AppDataSource.getRepository(Assistant).findOneBy({ @@ -205,6 +239,17 @@ const updateAssistant = async (assistantId: string, requestBody: any): Promise[], queryRunner?: QueryRunner): Promise => { + try { + const appServer = getRunningExpressApp() + const repository = queryRunner ? queryRunner.manager.getRepository(Assistant) : appServer.AppDataSource.getRepository(Assistant) + + // step 1 - check whether array is zero + if (newAssistants.length == 0) return + + // step 2 - check whether ids are duplicate in database + let ids = '(' + let count: number = 0 + const lastCount = newAssistants.length - 1 + newAssistants.forEach((newAssistant) => { + ids += `'${newAssistant.id}'` + if (lastCount != count) ids += ',' + if (lastCount == count) ids += ')' + count += 1 + }) + + const selectResponse = await repository + .createQueryBuilder('assistant') + .select('assistant.id') + .where(`assistant.id IN ${ids}`) + .getMany() + const foundIds = selectResponse.map((response) => { + return response.id + }) + + // step 3 - remove ids that are only duplicate + const prepVariables: Partial[] = newAssistants.map((newAssistant) => { + let id: string = '' + if (newAssistant.id) id = newAssistant.id + if (foundIds.includes(id)) { + newAssistant.id = undefined + } + return newAssistant + }) + + // step 4 - transactional insert array of entities + const insertResponse = await repository.insert(prepVariables) + + return insertResponse + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: assistantsService.importAssistants - ${getErrorMessage(error)}` + ) + } +} + +const getChatModels = async (): Promise => { + try { + const dbResponse = await nodesService.getAllNodesForCategory('Chat Models') + return dbResponse.filter((node) => !node.tags?.includes('LlamaIndex')) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: assistantsService.getChatModels - ${getErrorMessage(error)}` + ) + } +} + +const getDocumentStores = async (): Promise => { + try { + const appServer = getRunningExpressApp() + const stores = await appServer.AppDataSource.getRepository(DocumentStore).find() + const returnData = [] + for (const store of stores) { + if (store.status === 'UPSERTED') { + const obj = { + name: store.id, + label: store.name, + description: store.description + } + returnData.push(obj) + } + } + return returnData + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: assistantsService.getDocumentStores - ${getErrorMessage(error)}` + ) + } +} + +const getTools = async (): Promise => { + try { + const tools = await nodesService.getAllNodesForCategory('Tools') + + // filter out those tools that input params type are not in the list + const filteredTools = tools.filter((tool) => { + const inputs = tool.inputs || [] + return inputs.every((input) => INPUT_PARAMS_TYPE.includes(input.type)) + }) + return filteredTools + } catch (error) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error: assistantsService.getTools - ${getErrorMessage(error)}`) + } +} + +const generateAssistantInstruction = async (task: string, selectedChatModel: ICommonObject): Promise => { + try { + const appServer = getRunningExpressApp() + + if (selectedChatModel && Object.keys(selectedChatModel).length > 0) { + const nodeInstanceFilePath = appServer.nodesPool.componentNodes[selectedChatModel.name].filePath as string + const nodeModule = await import(nodeInstanceFilePath) + const newNodeInstance = new nodeModule.nodeClass() + const nodeData = { + credential: selectedChatModel.credential || selectedChatModel.inputs['FLOWISE_CREDENTIAL_ID'] || undefined, + inputs: selectedChatModel.inputs, + id: `${selectedChatModel.name}_0` + } + const options: ICommonObject = { + appDataSource: appServer.AppDataSource, + databaseEntities, + logger + } + const llmNodeInstance = await newNodeInstance.init(nodeData, '', options) + const response = await llmNodeInstance.invoke([ + { + role: 'user', + content: ASSISTANT_PROMPT_GENERATOR.replace('{{task}}', task) + } + ]) + const content = response?.content || response.kwargs?.content + + return { content } + } + + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: assistantsService.generateAssistantInstruction - Error generating tool description` + ) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: assistantsService.generateAssistantInstruction - ${getErrorMessage(error)}` + ) + } +} + export default { createAssistant, deleteAssistant, getAllAssistants, getAssistantById, - updateAssistant + updateAssistant, + importAssistants, + getChatModels, + getDocumentStores, + getTools, + generateAssistantInstruction } diff --git a/packages/server/src/services/attachments/index.ts b/packages/server/src/services/attachments/index.ts new file mode 100644 index 00000000000..ea9814da534 --- /dev/null +++ b/packages/server/src/services/attachments/index.ts @@ -0,0 +1,20 @@ +import { Request } from 'express' +import { StatusCodes } from 'http-status-codes' +import { createFileAttachment } from '../../utils/createAttachment' +import { InternalFlowiseError } from '../../errors/internalFlowiseError' +import { getErrorMessage } from '../../errors/utils' + +const createAttachment = async (req: Request) => { + try { + return await createFileAttachment(req) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: attachmentService.createAttachment - ${getErrorMessage(error)}` + ) + } +} + +export default { + createAttachment +} diff --git a/packages/server/src/services/chat-messages/index.ts b/packages/server/src/services/chat-messages/index.ts index 7ba29620595..a1fa2ab8fae 100644 --- a/packages/server/src/services/chat-messages/index.ts +++ b/packages/server/src/services/chat-messages/index.ts @@ -1,6 +1,6 @@ import { DeleteResult, FindOptionsWhere } from 'typeorm' import { StatusCodes } from 'http-status-codes' -import { ChatMessageRatingType, chatType, IChatMessage, IUser } from '../../Interface' +import { ChatMessageRatingType, ChatType, IChatMessage, IUser, MODE } from '../../Interface' import { utilGetChatMessage } from '../../utils/getChatMessage' import { utilAddChatMessage } from '../../utils/addChatMesage' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' @@ -14,7 +14,8 @@ import { getErrorMessage } from '../../errors/utils' // Add chatmessages for chatflowid const createChatMessage = async (chatMessage: Partial, userId?: string) => { try { - const dbResponse = await utilAddChatMessage(chatMessage, userId) + const appServer = getRunningExpressApp() + const dbResponse = await utilAddChatMessage(chatMessage, appServer.AppDataSource, userId) return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -28,7 +29,7 @@ const createChatMessage = async (chatMessage: Partial, userId?: st const getAllChatMessages = async ( user: IUser, chatflowId: string, - chatTypeFilter: chatType | undefined, + chatTypes: ChatType[] | undefined, sortOrder: string = 'ASC', chatId?: string, memoryType?: string, @@ -37,14 +38,13 @@ const getAllChatMessages = async ( endDate?: string, messageId?: string, feedback?: boolean, - feedbackTypes?: ChatMessageRatingType[], - userId?: string + feedbackTypes?: ChatMessageRatingType[] ): Promise => { try { - const dbResponse = await utilGetChatMessage( + const dbResponse = await utilGetChatMessage({ user, - chatflowId, - chatTypeFilter, + chatflowid: chatflowId, + chatTypes, sortOrder, chatId, memoryType, @@ -53,9 +53,8 @@ const getAllChatMessages = async ( endDate, messageId, feedback, - feedbackTypes, - userId - ) + feedbackTypes + }) return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -69,7 +68,7 @@ const getAllChatMessages = async ( const getAllInternalChatMessages = async ( user: IUser, chatflowId: string, - chatTypeFilter: chatType | undefined, + chatTypes: ChatType[] | undefined, sortOrder: string = 'ASC', chatId?: string, memoryType?: string, @@ -78,14 +77,13 @@ const getAllInternalChatMessages = async ( endDate?: string, messageId?: string, feedback?: boolean, - feedbackTypes?: ChatMessageRatingType[], - userId?: string + feedbackTypes?: ChatMessageRatingType[] ): Promise => { try { - const dbResponse = await utilGetChatMessage( + const dbResponse = await utilGetChatMessage({ user, - chatflowId, - chatTypeFilter, + chatflowid: chatflowId, + chatTypes, sortOrder, chatId, memoryType, @@ -94,9 +92,8 @@ const getAllInternalChatMessages = async ( endDate, messageId, feedback, - feedbackTypes, - userId - ) + feedbackTypes + }) return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -137,19 +134,47 @@ const removeAllChatMessages = async ( } } -const abortChatMessage = async (chatId: string, chatflowid: string) => { +const removeChatMessagesByMessageIds = async ( + chatflowid: string, + chatIdMap: Map, + messageIds: string[] +): Promise => { try { const appServer = getRunningExpressApp() - const endingNodeData = appServer.chatflowPool.activeChatflows[`${chatflowid}_${chatId}`]?.endingNodeData as any + for (const [composite_key] of chatIdMap) { + const [chatId] = composite_key.split('_') - if (endingNodeData && endingNodeData.signal) { - try { - endingNodeData.signal.abort() - await appServer.chatflowPool.remove(`${chatflowid}_${chatId}`) - } catch (e) { - logger.error(`[server]: Error aborting chat message for ${chatflowid}, chatId ${chatId}: ${e}`) - } + // Remove all related feedback records + const feedbackDeleteOptions: FindOptionsWhere = { chatId } + await appServer.AppDataSource.getRepository(ChatMessageFeedback).delete(feedbackDeleteOptions) + + // Delete all uploads corresponding to this chatflow/chatId + await removeFilesFromStorage(chatflowid, chatId) + } + + const dbResponse = await appServer.AppDataSource.getRepository(ChatMessage).delete(messageIds) + return dbResponse + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: chatMessagesService.removeAllChatMessages - ${getErrorMessage(error)}` + ) + } +} + +const abortChatMessage = async (chatId: string, chatflowid: string) => { + try { + const appServer = getRunningExpressApp() + const id = `${chatflowid}_${chatId}` + + if (process.env.MODE === MODE.QUEUE) { + await appServer.queueManager.getPredictionQueueEventsProducer().publishEvent({ + eventName: 'abort', + id + }) + } else { + appServer.abortControllerPool.abort(id) } } catch (error) { throw new InternalFlowiseError( @@ -164,5 +189,6 @@ export default { getAllChatMessages, getAllInternalChatMessages, removeAllChatMessages, + removeChatMessagesByMessageIds, abortChatMessage } diff --git a/packages/server/src/services/chatflows/index.ts b/packages/server/src/services/chatflows/index.ts index defc98089fb..3bce8826a91 100644 --- a/packages/server/src/services/chatflows/index.ts +++ b/packages/server/src/services/chatflows/index.ts @@ -1,6 +1,6 @@ -import { removeFolderFromStorage } from 'flowise-components' +import { ICommonObject, removeFolderFromStorage } from 'flowise-components' import { StatusCodes } from 'http-status-codes' -import { ChatflowType, IChatFlow, IReactFlowObject, IUser } from '../../Interface' +import { ChatflowType, IReactFlowObject, IUser } from '../../Interface' import { ChatFlow, ChatflowVisibility } from '../../database/entities/ChatFlow' import { ChatMessage } from '../../database/entities/ChatMessage' import { ChatMessageFeedback } from '../../database/entities/ChatMessageFeedback' @@ -16,6 +16,8 @@ import logger from '../../utils/logger' import checkOwnership from '../../utils/checkOwnership' import { Organization } from '../../database/entities/Organization' import { Chat } from '../../database/entities/Chat' +import { FLOWISE_METRIC_COUNTERS, FLOWISE_COUNTER_STATUS } from '../../Interface.Metrics' +import { QueryRunner } from 'typeorm' // Check if chatflow valid for streaming const checkIfChatflowIsValidForStreaming = async (chatflowId: string): Promise => { @@ -30,6 +32,15 @@ const checkIfChatflowIsValidForStreaming = async (chatflowId: string): Promise => { +const getAllChatflows = async (type?: ChatflowType, filter?: ChatflowsFilter, user?: IUser): Promise => { try { const appServer = getRunningExpressApp() const { id: userId, organizationId, permissions } = user ?? {} @@ -177,9 +188,12 @@ const getAllChatflows = async (type?: ChatflowType, filter?: ChatflowsFilter, us throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) } if (type === 'MULTIAGENT') { - return dbResponse.filter((chatflow) => chatflow.type === type) + return dbResponse.filter((chatflow) => chatflow.type === 'MULTIAGENT') + } else if (type === 'CHATFLOW') { + // fetch all chatflows that are not agentflow + return dbResponse.filter((chatflow) => chatflow.type === 'CHATFLOW' || !chatflow.type) } - return dbResponse.filter((chatflow) => chatflow.type === 'CHATFLOW' || !chatflow.type) + return dbResponse } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -319,6 +333,11 @@ const saveChatflow = async (newChatFlow: ChatFlow): Promise => { chatflowId: dbResponse.id, flowGraph: getTelemetryFlowObj(JSON.parse(dbResponse.flowData)?.nodes, JSON.parse(dbResponse.flowData)?.edges) }) + appServer.metricsProvider?.incrementCounter( + dbResponse?.type === 'MULTIAGENT' ? FLOWISE_METRIC_COUNTERS.AGENTFLOW_CREATED : FLOWISE_METRIC_COUNTERS.CHATFLOW_CREATED, + { status: FLOWISE_COUNTER_STATUS.SUCCESS } + ) + return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -328,12 +347,13 @@ const saveChatflow = async (newChatFlow: ChatFlow): Promise => { } } -const importChatflows = async (newChatflows: Partial[]): Promise => { +const importChatflows = async (newChatflows: Partial[], queryRunner?: QueryRunner): Promise => { try { const appServer = getRunningExpressApp() + const repository = queryRunner ? queryRunner.manager.getRepository(ChatFlow) : appServer.AppDataSource.getRepository(ChatFlow) // step 1 - check whether file chatflows array is zero - if (newChatflows.length == 0) throw new Error('No chatflows in this file.') + if (newChatflows.length == 0) return // step 2 - check whether ids are duplicate in database let ids = '(' @@ -346,11 +366,7 @@ const importChatflows = async (newChatflows: Partial[]): Promise count += 1 }) - const selectResponse = await appServer.AppDataSource.getRepository(ChatFlow) - .createQueryBuilder('cf') - .select('cf.id') - .where(`cf.id IN ${ids}`) - .getMany() + const selectResponse = await repository.createQueryBuilder('cf').select('cf.id').where(`cf.id IN ${ids}`).getMany() const foundIds = selectResponse.map((response) => { return response.id }) @@ -363,15 +379,14 @@ const importChatflows = async (newChatflows: Partial[]): Promise if (newChatflow.flowData) flowData = newChatflow.flowData if (foundIds.includes(id)) { newChatflow.id = undefined - newChatflow.name += ' with new id' + newChatflow.name += ' (1)' } - newChatflow.type = 'CHATFLOW' newChatflow.flowData = JSON.stringify(JSON.parse(flowData)) return newChatflow }) // step 4 - transactional insert array of entities - const insertResponse = await appServer.AppDataSource.getRepository(ChatFlow).insert(prepChatflows) + const insertResponse = await repository.insert(prepChatflows) return insertResponse } catch (error) { @@ -414,10 +429,6 @@ const updateChatflow = async (chatflow: ChatFlow, updateChatFlow: ChatFlow): Pro const dbResponse = await appServer.AppDataSource.getRepository(ChatFlow).save(newDbChatflow) - if (appServer.chatflowPool) { - appServer.chatflowPool.updateInSync(chatflow.id, false) - } - return dbResponse } catch (error) { throw new InternalFlowiseError( @@ -520,6 +531,7 @@ const upsertChat = async ({ const chatRepository = appServer.AppDataSource.getRepository(Chat) const chatProperties = { + id: chatflowChatId, title: prompt, chatflowChatId, filters, @@ -528,20 +540,21 @@ const upsertChat = async ({ chatflow: { id: chatflowId } } - let chat: Chat - if (!id) { + let chat: Chat | undefined + if (chatflowChatId) { + const existingChat = await chatRepository.findOneBy({ chatflowChatId }) + if (existingChat) chat = chatRepository.merge(existingChat, chatProperties) + } + if (!chat) { // Create new chat chat = chatRepository.create(chatProperties) + } + if (chat) { + const updatedChat = await chatRepository.save(chat) + return updatedChat } else { - // Update existing chat - const existingChat = await chatRepository.findOneBy({ id }) - if (!existingChat) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chat ${id} not found`) - } - chat = chatRepository.merge(existingChat, chatProperties) + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chat ${id} not found`) } - - return await chatRepository.save(chat) } catch (error) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error: chatflowsService.upsertChat - ${getErrorMessage(error)}`) } diff --git a/packages/server/src/services/chats/index.ts b/packages/server/src/services/chats/index.ts index 77f93b9ab51..9a826c947ae 100644 --- a/packages/server/src/services/chats/index.ts +++ b/packages/server/src/services/chats/index.ts @@ -35,6 +35,7 @@ const getChatById = async (chatId: string, user: IUser) => { organization: { id: user.organizationId } }, relations: { + chatflow: true // users: true, // messages: true }, diff --git a/packages/server/src/services/documentstore/index.ts b/packages/server/src/services/documentstore/index.ts index 56752bf0ded..6564c87bc49 100644 --- a/packages/server/src/services/documentstore/index.ts +++ b/packages/server/src/services/documentstore/index.ts @@ -1,22 +1,39 @@ import { getRunningExpressApp } from '../../utils/getRunningExpressApp' import { DocumentStore } from '../../database/entities/DocumentStore' +import * as path from 'path' import { + addArrayFilesToStorage, addSingleFileToStorage, getFileFromStorage, + getFileFromUpload, ICommonObject, IDocument, + mapExtToInputField, + mapMimeTypeToInputField, removeFilesFromStorage, - removeSpecificFileFromStorage + removeSpecificFileFromStorage, + removeSpecificFileFromUpload } from 'flowise-components' import { - chatType, + addLoaderSource, + ChatType, DocumentStoreStatus, + IComponentNodes, IDocumentStoreFileChunkPagedResponse, IDocumentStoreLoader, IDocumentStoreLoaderFile, IDocumentStoreLoaderForPreview, + IDocumentStoreRefreshData, + IDocumentStoreUpsertData, IDocumentStoreWhereUsed, - INodeData + IExecuteDocStoreUpsert, + IExecuteProcessLoader, + IExecuteVectorStoreInsert, + INodeData, + MODE, + IOverrideConfig, + IExecutePreviewLoader, + DocumentStoreDTO } from '../../Interface' import { DocumentStoreFileChunk } from '../../database/entities/DocumentStoreFileChunk' import { v4 as uuidv4 } from 'uuid' @@ -28,10 +45,12 @@ import { StatusCodes } from 'http-status-codes' import { getErrorMessage } from '../../errors/utils' import { ChatFlow } from '../../database/entities/ChatFlow' import { Document } from '@langchain/core/documents' -import { App } from '../../index' import { UpsertHistory } from '../../database/entities/UpsertHistory' import { cloneDeep, omit } from 'lodash' -import telemetryService from '../telemetry' +import { DOCUMENTSTORE_TOOL_DESCRIPTION_PROMPT_GENERATOR } from '../../utils/prompt' +import { DataSource } from 'typeorm' +import { Telemetry } from '../../utils/telemetry' +import { INPUT_PARAMS_TYPE, OMIT_QUEUE_JOB_DATA } from '../../utils/constants' const DOCUMENT_STORE_BASE_FOLDER = 'docustore' @@ -64,6 +83,19 @@ const getAllDocumentStores = async (userId: string, organizationId: string) => { } } +const getAllDocumentFileChunks = async (userId: string, organizationId: string) => { + try { + const appServer = getRunningExpressApp() + const entities = await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).find({ where: { userId, organizationId } }) + return entities + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.getAllDocumentFileChunks - ${getErrorMessage(error)}` + ) + } +} + const deleteLoaderFromDocumentStore = async (storeId: string, loaderId: string, userId: string, organizationId: string) => { try { const appServer = getRunningExpressApp() @@ -79,12 +111,16 @@ const deleteLoaderFromDocumentStore = async (storeId: string, loaderId: string, ) } const existingLoaders = JSON.parse(entity.loaders) - const found = existingLoaders.find((uFile: IDocumentStoreLoader) => uFile.id === loaderId) + const found = existingLoaders.find((loader: IDocumentStoreLoader) => loader.id === loaderId) if (found) { if (found.files?.length) { for (const file of found.files) { if (file.name) { - await removeSpecificFileFromStorage(DOCUMENT_STORE_BASE_FOLDER, storeId, file.name) + try { + await removeSpecificFileFromStorage(DOCUMENT_STORE_BASE_FOLDER, storeId, file.name) + } catch (error) { + console.error(error) + } } } } @@ -146,7 +182,9 @@ const getUsedChatflowNames = async (entity: DocumentStore, userId: string, organ if (associatedChatflow) { updatedWhereUsed.push({ id: whereUsed[i], - name: associatedChatflow.name + name: associatedChatflow.name, + userId, + organizationId }) } } @@ -163,15 +201,15 @@ const getUsedChatflowNames = async (entity: DocumentStore, userId: string, organ // Get chunks for a specific loader or store const getDocumentStoreFileChunks = async ( + appDataSource: DataSource, storeId: string, - fileId: string, + docId: string, pageNo: number = 1, userId?: string, organizationId?: string ) => { try { - const appServer = getRunningExpressApp() - const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ + const entity = await appDataSource.getRepository(DocumentStore).findOneBy({ id: storeId, userId, organizationId @@ -185,35 +223,40 @@ const getDocumentStoreFileChunks = async ( const loaders = JSON.parse(entity.loaders) let found: IDocumentStoreLoader | undefined - if (fileId !== 'all') { - found = loaders.find((loader: IDocumentStoreLoader) => loader.id === fileId) + if (docId !== 'all') { + found = loaders.find((loader: IDocumentStoreLoader) => loader.id === docId) if (!found) { throw new InternalFlowiseError( StatusCodes.NOT_FOUND, - `Error: documentStoreServices.getDocumentStoreById - Document file ${fileId} not found` + `Error: documentStoreServices.getDocumentStoreById - Document loader ${docId} not found` ) } } - let totalChars = 0 - loaders.forEach((loader: IDocumentStoreLoader) => { - totalChars += loader.totalChars - }) if (found) { - found.totalChars = totalChars - found.id = fileId + found.id = docId found.status = entity.status } + + let characters = 0 + if (docId === 'all') { + loaders.forEach((loader: IDocumentStoreLoader) => { + characters += loader.totalChars || 0 + }) + } else { + characters = found?.totalChars || 0 + } + const PAGE_SIZE = 50 const skip = (pageNo - 1) * PAGE_SIZE const take = PAGE_SIZE - let whereCondition: any = { docId: fileId, userId, organizationId } - if (fileId === 'all') { + let whereCondition: any = { docId: docId, userId, organizationId } + if (docId === 'all') { whereCondition = { storeId: storeId, userId, organizationId } } - const count = await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).count({ + const count = await appDataSource.getRepository(DocumentStoreFileChunk).count({ where: whereCondition }) - const chunksWithCount = await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).find({ + const chunksWithCount = await appDataSource.getRepository(DocumentStoreFileChunk).find({ skip, take, where: whereCondition, @@ -223,7 +266,7 @@ const getDocumentStoreFileChunks = async ( }) if (!chunksWithCount) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `File ${fileId} not found`) + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chunks with docId: ${docId} not found`) } const response: IDocumentStoreFileChunkPagedResponse = { @@ -232,7 +275,9 @@ const getDocumentStoreFileChunks = async ( file: found, currentPage: pageNo, storeName: entity.name, - description: entity.description + description: entity.description, + docId: docId, + characters } return response } catch (error) { @@ -247,6 +292,7 @@ const getDocumentStoreFileChunks = async ( const syncAndRefreshChunks = async (storeId: string, fileId: string, userId?: string, organizationId?: string) => { try { const appServer = getRunningExpressApp() + const componentNodes = appServer.nodesPool.componentNodes const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ id: storeId, userId, @@ -291,7 +337,7 @@ const syncAndRefreshChunks = async (storeId: string, fileId: string, userId?: st }) // Get fresh documents from Google Drive - const docs = await _splitIntoChunks(data) + const docs = await _splitIntoChunks(appServer.AppDataSource, componentNodes, data) // Save new chunks let totalChars = 0 @@ -325,7 +371,7 @@ const syncAndRefreshChunks = async (storeId: string, fileId: string, userId?: st await appServer.AppDataSource.getRepository(DocumentStore).save(entity) - return getDocumentStoreFileChunks(storeId, fileId, 1, userId, organizationId) + return getDocumentStoreFileChunks(appServer.AppDataSource, storeId, fileId, 1, userId, organizationId) } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -405,7 +451,7 @@ const deleteDocumentStoreFileChunk = async (storeId: string, docId: string, chun found.totalChars -= tbdChunk.pageContent.length entity.loaders = JSON.stringify(loaders) await appServer.AppDataSource.getRepository(DocumentStore).save(entity) - return getDocumentStoreFileChunks(storeId, docId, 1, userId, organizationId) + return getDocumentStoreFileChunks(appServer.AppDataSource, storeId, docId, 1, userId, organizationId) } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -417,6 +463,8 @@ const deleteDocumentStoreFileChunk = async (storeId: string, docId: string, chun const deleteVectorStoreFromStore = async (storeId: string) => { try { const appServer = getRunningExpressApp() + const componentNodes = appServer.nodesPool.componentNodes + const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ id: storeId }) @@ -449,7 +497,7 @@ const deleteVectorStoreFromStore = async (storeId: string) => { // Get Record Manager Instance const recordManagerConfig = JSON.parse(entity.recordManagerConfig) const recordManagerObj = await _createRecordManagerObject( - appServer, + componentNodes, { recordManagerName: recordManagerConfig.name, recordManagerConfig: recordManagerConfig.config }, options ) @@ -457,7 +505,7 @@ const deleteVectorStoreFromStore = async (storeId: string) => { // Get Embeddings Instance const embeddingConfig = JSON.parse(entity.embeddingConfig) const embeddingObj = await _createEmbeddingsObject( - appServer, + componentNodes, { embeddingName: embeddingConfig.name, embeddingConfig: embeddingConfig.config }, options ) @@ -465,7 +513,7 @@ const deleteVectorStoreFromStore = async (storeId: string) => { // Get Vector Store Node Data const vectorStoreConfig = JSON.parse(entity.vectorStoreConfig) const vStoreNodeData = _createVectorStoreNodeData( - appServer, + componentNodes, { vectorStoreName: vectorStoreConfig.name, vectorStoreConfig: vectorStoreConfig.config }, embeddingObj, recordManagerObj @@ -473,7 +521,7 @@ const deleteVectorStoreFromStore = async (storeId: string) => { // Get Vector Store Instance const vectorStoreObj = await _createVectorStoreObject( - appServer, + componentNodes, { vectorStoreName: vectorStoreConfig.name, vectorStoreConfig: vectorStoreConfig.config }, vStoreNodeData ) @@ -531,7 +579,7 @@ const editDocumentStoreFileChunk = async ( await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).save(editChunk) entity.loaders = JSON.stringify(loaders) await appServer.AppDataSource.getRepository(DocumentStore).save(entity) - return getDocumentStoreFileChunks(storeId, docId, 1, userId, organizationId) + return getDocumentStoreFileChunks(appServer.AppDataSource, storeId, docId, 1, userId, organizationId) } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -540,7 +588,6 @@ const editDocumentStoreFileChunk = async ( } } -// Update documentStore const updateDocumentStore = async (documentStore: DocumentStore, updatedDocumentStore: DocumentStore) => { try { const appServer = getRunningExpressApp() @@ -575,12 +622,11 @@ const _saveFileToStorage = async (fileBase64: string, entity: DocumentStore) => } } -const _splitIntoChunks = async (data: IDocumentStoreLoaderForPreview) => { +const _splitIntoChunks = async (appDataSource: DataSource, componentNodes: IComponentNodes, data: IDocumentStoreLoaderForPreview) => { try { - const appServer = getRunningExpressApp() let splitterInstance = null - if (data.splitterConfig && Object.keys(data.splitterConfig).length > 0) { - const nodeInstanceFilePath = appServer.nodesPool.componentNodes[data.splitterId].filePath as string + if (data.splitterId && data.splitterConfig && Object.keys(data.splitterConfig).length > 0) { + const nodeInstanceFilePath = componentNodes[data.splitterId].filePath as string const nodeModule = await import(nodeInstanceFilePath) const newNodeInstance = new nodeModule.nodeClass() let nodeData = { @@ -589,14 +635,12 @@ const _splitIntoChunks = async (data: IDocumentStoreLoaderForPreview) => { } splitterInstance = await newNodeInstance.init(nodeData) } - const nodeInstanceFilePath = appServer.nodesPool.componentNodes[data.loaderId].filePath as string + if (!data.loaderId) return [] + const nodeInstanceFilePath = componentNodes[data.loaderId].filePath as string const nodeModule = await import(nodeInstanceFilePath) const nodeData = { - credential: data.credential || undefined, - inputs: { - ...data.loaderConfig, - textSplitter: splitterInstance - }, + credential: data.credential || data.loaderConfig['FLOWISE_CREDENTIAL_ID'] || undefined, + inputs: { ...data.loaderConfig, textSplitter: splitterInstance }, outputs: { output: 'document' } } if (data.loaderId === 'googleDrive') { @@ -605,7 +649,7 @@ const _splitIntoChunks = async (data: IDocumentStoreLoaderForPreview) => { } const options: ICommonObject = { chatflowid: uuidv4(), - appDataSource: appServer.AppDataSource, + appDataSource, databaseEntities, logger } @@ -620,7 +664,7 @@ const _splitIntoChunks = async (data: IDocumentStoreLoaderForPreview) => { } } -const _normalizeFilePaths = async (data: IDocumentStoreLoaderForPreview, entity: DocumentStore | null) => { +const _normalizeFilePaths = async (appDataSource: DataSource, data: IDocumentStoreLoaderForPreview, entity: DocumentStore | null) => { const keys = Object.getOwnPropertyNames(data.loaderConfig) let rehydrated = false for (let i = 0; i < keys.length; i++) { @@ -634,8 +678,7 @@ const _normalizeFilePaths = async (data: IDocumentStoreLoaderForPreview, entity: let documentStoreEntity: DocumentStore | null = entity if (input.startsWith('FILE-STORAGE::')) { if (!documentStoreEntity) { - const appServer = getRunningExpressApp() - documentStoreEntity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ + documentStoreEntity = await appDataSource.getRepository(DocumentStore).findOneBy({ id: data.storeId }) if (!documentStoreEntity) { @@ -669,7 +712,45 @@ const _normalizeFilePaths = async (data: IDocumentStoreLoaderForPreview, entity: data.rehydrated = rehydrated } -const previewChunks = async (data: IDocumentStoreLoaderForPreview) => { +const previewChunksMiddleware = async (data: IDocumentStoreLoaderForPreview) => { + try { + const appServer = getRunningExpressApp() + const appDataSource = appServer.AppDataSource + const componentNodes = appServer.nodesPool.componentNodes + + const executeData: IExecutePreviewLoader = { + appDataSource, + componentNodes, + data, + isPreviewOnly: true, + userId: data.userId, + organizationId: data.organizationId + } + + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) + + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + + if (!result) { + throw new Error('Job execution failed') + } + return result + } + + return await previewChunks(executeData) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.previewChunksMiddleware - ${getErrorMessage(error)}` + ) + } +} + +export const previewChunks = async ({ appDataSource, componentNodes, data }: IExecutePreviewLoader) => { try { if (data.preview) { if ( @@ -681,16 +762,16 @@ const previewChunks = async (data: IDocumentStoreLoaderForPreview) => { } } if (!data.rehydrated) { - await _normalizeFilePaths(data, null) + await _normalizeFilePaths(appDataSource, data, null) } - let docs = await _splitIntoChunks(data) + let docs = await _splitIntoChunks(appDataSource, componentNodes, data) const totalChunks = docs.length // if -1, return all chunks if (data.previewChunkCount === -1) data.previewChunkCount = totalChunks // return all docs if the user ask for more than we have - if (totalChunks <= data.previewChunkCount) data.previewChunkCount = totalChunks + if (totalChunks <= (data.previewChunkCount || 0)) data.previewChunkCount = totalChunks // return only the first n chunks - if (totalChunks > data.previewChunkCount) docs = docs.slice(0, data.previewChunkCount) + if (totalChunks > (data.previewChunkCount || 0)) docs = docs.slice(0, data.previewChunkCount) return { chunks: docs, totalChunks: totalChunks, previewChunkCount: data.previewChunkCount } } catch (error) { @@ -701,33 +782,56 @@ const previewChunks = async (data: IDocumentStoreLoaderForPreview) => { } } -const processAndSaveChunks = async (data: IDocumentStoreLoaderForPreview, userId: string, organizationId: string) => { +const saveProcessingLoader = async (appDataSource: DataSource, data: IDocumentStoreLoaderForPreview): Promise => { try { - const appServer = getRunningExpressApp() - const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ + const entity = await appDataSource.getRepository(DocumentStore).findOneBy({ id: data.storeId, - userId, - organizationId + userId: data.userId, + organizationId: data.organizationId }) if (!entity) { throw new InternalFlowiseError( StatusCodes.NOT_FOUND, - `Error: documentStoreServices.processAndSaveChunks - Document store ${data.storeId} not found` + `Error: documentStoreServices.saveProcessingLoader - Document store ${data.storeId} not found` ) } - - const newLoaderId = data.id ?? uuidv4() const existingLoaders = JSON.parse(entity.loaders) - const found = existingLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newLoaderId) + const newDocLoaderId = data.id ?? uuidv4() + const found = existingLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newDocLoaderId) if (found) { - // clean up the current status and mark the loader as pending_sync - found.totalChunks = 0 - found.totalChars = 0 - found.status = DocumentStoreStatus.SYNCING + const foundIndex = existingLoaders.findIndex((ldr: IDocumentStoreLoader) => ldr.id === newDocLoaderId) + + if (!data.loaderId) data.loaderId = found.loaderId + if (!data.loaderName) data.loaderName = found.loaderName + if (!data.loaderConfig) data.loaderConfig = found.loaderConfig + if (!data.splitterId) data.splitterId = found.splitterId + if (!data.splitterName) data.splitterName = found.splitterName + if (!data.splitterConfig) data.splitterConfig = found.splitterConfig + if (found.credential) { + data.credential = found.credential + } + + let loader: IDocumentStoreLoader = { + ...found, + loaderId: data.loaderId, + loaderName: data.loaderName, + loaderConfig: data.loaderConfig, + splitterId: data.splitterId, + splitterName: data.splitterName, + splitterConfig: data.splitterConfig, + totalChunks: 0, + totalChars: 0, + status: DocumentStoreStatus.SYNCING + } + if (data.credential) { + loader.credential = data.credential + } + + existingLoaders[foundIndex] = loader entity.loaders = JSON.stringify(existingLoaders) } else { let loader: IDocumentStoreLoader = { - id: newLoaderId, + id: newDocLoaderId, loaderId: data.loaderId, loaderName: data.loaderName, loaderConfig: data.loaderConfig, @@ -744,127 +848,201 @@ const processAndSaveChunks = async (data: IDocumentStoreLoaderForPreview, userId existingLoaders.push(loader) entity.loaders = JSON.stringify(existingLoaders) } - await appServer.AppDataSource.getRepository(DocumentStore).save(entity) - // this method will run async, will have to be moved to a worker thread - _saveChunksToStorage(data, entity, newLoaderId, userId, organizationId).then(() => {}) - return getDocumentStoreFileChunks(data.storeId as string, newLoaderId, 1, userId, organizationId) + await appDataSource.getRepository(DocumentStore).save(entity) + const newLoaders = JSON.parse(entity.loaders) + const newLoader = newLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newDocLoaderId) + if (!newLoader) { + throw new Error(`Loader ${newDocLoaderId} not found`) + } + newLoader.source = addLoaderSource(newLoader, true) + return newLoader + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.saveProcessingLoader - ${getErrorMessage(error)}` + ) + } +} + +export const processLoader = async ({ appDataSource, componentNodes, data, docLoaderId }: IExecuteProcessLoader) => { + const entity = await appDataSource.getRepository(DocumentStore).findOneBy({ + id: data.storeId + }) + if (!entity) { + throw new InternalFlowiseError( + StatusCodes.NOT_FOUND, + `Error: documentStoreServices.processLoader - Document store ${data.storeId} not found` + ) + } + await _saveChunksToStorage(appDataSource, componentNodes, data, entity, docLoaderId) + return getDocumentStoreFileChunks(appDataSource, data.storeId as string, docLoaderId) +} + +const processLoaderMiddleware = async (data: IDocumentStoreLoaderForPreview, docLoaderId: string) => { + try { + const appServer = getRunningExpressApp() + const appDataSource = appServer.AppDataSource + const componentNodes = appServer.nodesPool.componentNodes + const telemetry = appServer.telemetry + + const executeData: IExecuteProcessLoader = { + appDataSource, + componentNodes, + data, + docLoaderId, + isProcessWithoutUpsert: true, + telemetry, + userId: data.userId, + organizationId: data.organizationId + } + + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) + + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + + if (!result) { + throw new Error('Job execution failed') + } + return result + } + + return await processLoader(executeData) } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, - `Error: documentStoreServices.processAndSaveChunks - ${getErrorMessage(error)}` + `Error: documentStoreServices.processLoader - ${getErrorMessage(error)}` ) } } const _saveChunksToStorage = async ( + appDataSource: DataSource, + componentNodes: IComponentNodes, data: IDocumentStoreLoaderForPreview, entity: DocumentStore, - newLoaderId: string, - userId?: string, - organizationId?: string + newLoaderId: string ) => { const re = new RegExp('^data.*;base64', 'i') try { - const appServer = getRunningExpressApp() //step 1: restore the full paths, if any - await _normalizeFilePaths(data, entity) + await _normalizeFilePaths(appDataSource, data, entity) + //step 2: split the file into chunks - previewChunks(data).then(async (response) => { - //step 3: remove all files associated with the loader - const existingLoaders = JSON.parse(entity.loaders) - const loader = existingLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newLoaderId) - if (data.id) { - const index = existingLoaders.indexOf(loader) - if (index > -1) { - existingLoaders.splice(index, 1) - if (!data.rehydrated) { - if (loader.files) { - loader.files.map(async (file: IDocumentStoreLoaderFile) => { + const response = await previewChunks({ + appDataSource, + componentNodes, + data, + isPreviewOnly: false, + userId: data.userId, + organizationId: data.organizationId + }) + + //step 3: remove all files associated with the loader + const existingLoaders = JSON.parse(entity.loaders) + const loader = existingLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newLoaderId) + if (data.id) { + const index = existingLoaders.indexOf(loader) + if (index > -1) { + existingLoaders.splice(index, 1) + if (!data.rehydrated) { + if (loader.files) { + loader.files.map(async (file: IDocumentStoreLoaderFile) => { + try { await removeSpecificFileFromStorage(DOCUMENT_STORE_BASE_FOLDER, entity.id, file.name) - }) - } - } - } - } - //step 4: save new file to storage - let filesWithMetadata = [] - const keys = Object.getOwnPropertyNames(data.loaderConfig) - for (let i = 0; i < keys.length; i++) { - const input = data.loaderConfig[keys[i]] - if (!input) { - continue - } - if (typeof input !== 'string') { - continue - } - if (input.startsWith('[') && input.endsWith(']')) { - const files = JSON.parse(input) - const fileNames: string[] = [] - for (let j = 0; j < files.length; j++) { - const file = files[j] - if (re.test(file)) { - const fileMetadata = await _saveFileToStorage(file, entity) - fileNames.push(fileMetadata.name) - filesWithMetadata.push(fileMetadata) - } + } catch (error) { + console.error(error) + } + }) } - data.loaderConfig[keys[i]] = 'FILE-STORAGE::' + JSON.stringify(fileNames) - } else if (re.test(input)) { - const fileNames: string[] = [] - const fileMetadata = await _saveFileToStorage(input, entity) - fileNames.push(fileMetadata.name) - filesWithMetadata.push(fileMetadata) - data.loaderConfig[keys[i]] = 'FILE-STORAGE::' + JSON.stringify(fileNames) - break } } - //step 5: update with the new files and loaderConfig - if (filesWithMetadata.length > 0) { - loader.loaderConfig = data.loaderConfig - loader.files = filesWithMetadata + } + + //step 4: save new file to storage + let filesWithMetadata = [] + const keys = Object.getOwnPropertyNames(data.loaderConfig) + for (let i = 0; i < keys.length; i++) { + const input = data.loaderConfig[keys[i]] + if (!input) { + continue } - //step 6: update the loaders with the new loaderConfig - if (data.id) { - existingLoaders.push(loader) + if (typeof input !== 'string') { + continue } - //step 7: remove all previous chunks - await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).delete({ docId: newLoaderId, userId, organizationId }) - if (response.chunks) { - //step 8: now save the new chunks - const totalChars = response.chunks.reduce((acc, chunk) => { - if (chunk.pageContent) { - return acc + chunk.pageContent.length - } - return acc - }, 0) - response.chunks.map(async (chunk: IDocument, index: number) => { - const docChunk: DocumentStoreFileChunk = { - userId, - organizationId, - docId: newLoaderId, - storeId: data.storeId || '', - id: uuidv4(), - chunkNo: index + 1, - pageContent: chunk.pageContent, - metadata: JSON.stringify(chunk.metadata) + if (input.startsWith('[') && input.endsWith(']')) { + const files = JSON.parse(input) + const fileNames: string[] = [] + for (let j = 0; j < files.length; j++) { + const file = files[j] + if (re.test(file)) { + const fileMetadata = await _saveFileToStorage(file, entity) + fileNames.push(fileMetadata.name) + filesWithMetadata.push(fileMetadata) } - const dChunk = appServer.AppDataSource.getRepository(DocumentStoreFileChunk).create(docChunk) - await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).save(dChunk) - }) - // update the loader with the new metrics - loader.totalChunks = response.totalChunks - loader.totalChars = totalChars + } + if (fileNames.length) data.loaderConfig[keys[i]] = 'FILE-STORAGE::' + JSON.stringify(fileNames) + } else if (re.test(input)) { + const fileNames: string[] = [] + const fileMetadata = await _saveFileToStorage(input, entity) + fileNames.push(fileMetadata.name) + filesWithMetadata.push(fileMetadata) + data.loaderConfig[keys[i]] = 'FILE-STORAGE::' + JSON.stringify(fileNames) + break } - loader.status = 'SYNC' - // have a flag and iterate over the loaders and update the entity status to SYNC - const allSynced = existingLoaders.every((ldr: IDocumentStoreLoader) => ldr.status === 'SYNC') - entity.status = allSynced ? DocumentStoreStatus.SYNC : DocumentStoreStatus.STALE - entity.loaders = JSON.stringify(existingLoaders) - //step 9: update the entity in the database - await appServer.AppDataSource.getRepository(DocumentStore).save(entity) - return - }) + } + + //step 5: update with the new files and loaderConfig + if (filesWithMetadata.length > 0) { + loader.loaderConfig = data.loaderConfig + loader.files = filesWithMetadata + } + + //step 6: update the loaders with the new loaderConfig + if (data.id) { + existingLoaders.push(loader) + } + + //step 7: remove all previous chunks + await appDataSource.getRepository(DocumentStoreFileChunk).delete({ docId: newLoaderId }) + if (response.chunks) { + //step 8: now save the new chunks + const totalChars = response.chunks.reduce((acc, chunk) => { + if (chunk.pageContent) { + return acc + chunk.pageContent.length + } + return acc + }, 0) + response.chunks.map(async (chunk: IDocument, index: number) => { + const docChunk: DocumentStoreFileChunk = { + docId: newLoaderId, + storeId: data.storeId || '', + id: uuidv4(), + chunkNo: index + 1, + pageContent: chunk.pageContent, + metadata: JSON.stringify(chunk.metadata) + } + const dChunk = appDataSource.getRepository(DocumentStoreFileChunk).create(docChunk) + await appDataSource.getRepository(DocumentStoreFileChunk).save(dChunk) + }) + // update the loader with the new metrics + loader.totalChunks = response.totalChunks + loader.totalChars = totalChars + } + loader.status = 'SYNC' + // have a flag and iterate over the loaders and update the entity status to SYNC + const allSynced = existingLoaders.every((ldr: IDocumentStoreLoader) => ldr.status === 'SYNC') + entity.status = allSynced ? DocumentStoreStatus.SYNC : DocumentStoreStatus.STALE + entity.loaders = JSON.stringify(existingLoaders) + + //step 9: update the entity in the database + await appDataSource.getRepository(DocumentStore).save(entity) + + return } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -961,10 +1139,9 @@ const updateVectorStoreConfigOnly = async (data: ICommonObject) => { ) } } -const saveVectorStoreConfig = async (data: ICommonObject) => { +const saveVectorStoreConfig = async (appDataSource: DataSource, data: ICommonObject, isStrictSave = true) => { try { - const appServer = getRunningExpressApp() - const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ + const entity = await appDataSource.getRepository(DocumentStore).findOneBy({ id: data.storeId }) if (!entity) { @@ -976,6 +1153,10 @@ const saveVectorStoreConfig = async (data: ICommonObject) => { config: data.embeddingConfig, name: data.embeddingName }) + } else if (entity.embeddingConfig && !data.embeddingName && !data.embeddingConfig) { + data.embeddingConfig = JSON.parse(entity.embeddingConfig)?.config + data.embeddingName = JSON.parse(entity.embeddingConfig)?.name + if (isStrictSave) entity.embeddingConfig = null } else if (!data.embeddingName && !data.embeddingConfig) { entity.embeddingConfig = null } @@ -985,6 +1166,10 @@ const saveVectorStoreConfig = async (data: ICommonObject) => { config: data.vectorStoreConfig, name: data.vectorStoreName }) + } else if (entity.vectorStoreConfig && !data.vectorStoreName && !data.vectorStoreConfig) { + data.vectorStoreConfig = JSON.parse(entity.vectorStoreConfig)?.config + data.vectorStoreName = JSON.parse(entity.vectorStoreConfig)?.name + if (isStrictSave) entity.vectorStoreConfig = null } else if (!data.vectorStoreName && !data.vectorStoreConfig) { entity.vectorStoreConfig = null } @@ -994,6 +1179,10 @@ const saveVectorStoreConfig = async (data: ICommonObject) => { config: data.recordManagerConfig, name: data.recordManagerName }) + } else if (entity.recordManagerConfig && !data.recordManagerName && !data.recordManagerConfig) { + data.recordManagerConfig = JSON.parse(entity.recordManagerConfig)?.config + data.recordManagerName = JSON.parse(entity.recordManagerConfig)?.name + if (isStrictSave) entity.recordManagerConfig = null } else if (!data.recordManagerName && !data.recordManagerConfig) { entity.recordManagerConfig = null } @@ -1003,7 +1192,7 @@ const saveVectorStoreConfig = async (data: ICommonObject) => { // this also means that the store is not yet sync'ed to vector store entity.status = DocumentStoreStatus.SYNC } - await appServer.AppDataSource.getRepository(DocumentStore).save(entity) + await appDataSource.getRepository(DocumentStore).save(entity) return entity } catch (error) { throw new InternalFlowiseError( @@ -1013,15 +1202,19 @@ const saveVectorStoreConfig = async (data: ICommonObject) => { } } -const insertIntoVectorStore = async (data: ICommonObject) => { +export const insertIntoVectorStore = async ({ + appDataSource, + componentNodes, + telemetry, + data, + isStrictSave +}: IExecuteVectorStoreInsert) => { try { - const appServer = getRunningExpressApp() - const entity = await saveVectorStoreConfig(data) + const entity = await saveVectorStoreConfig(appDataSource, data, isStrictSave) entity.status = DocumentStoreStatus.UPSERTING - await appServer.AppDataSource.getRepository(DocumentStore).save(entity) + await appDataSource.getRepository(DocumentStore).save(entity) - // TODO: to be moved into a worker thread... - const indexResult = await _insertIntoVectorStoreWorkerThread(data) + const indexResult = await _insertIntoVectorStoreWorkerThread(appDataSource, componentNodes, telemetry, data, isStrictSave) return indexResult } catch (error) { throw new InternalFlowiseError( @@ -1031,16 +1224,62 @@ const insertIntoVectorStore = async (data: ICommonObject) => { } } -const _insertIntoVectorStoreWorkerThread = async (data: ICommonObject) => { +const insertIntoVectorStoreMiddleware = async (data: ICommonObject, isStrictSave = true) => { try { const appServer = getRunningExpressApp() - const entity = await saveVectorStoreConfig(data) + const appDataSource = appServer.AppDataSource + const componentNodes = appServer.nodesPool.componentNodes + const telemetry = appServer.telemetry + + const executeData: IExecuteVectorStoreInsert = { + appDataSource, + componentNodes, + telemetry, + data, + isStrictSave, + isVectorStoreInsert: true, + userId: data.userId, + organizationId: data.organizationId + } + + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) + + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + + if (!result) { + throw new Error('Job execution failed') + } + return result + } else { + return await insertIntoVectorStore(executeData) + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.insertIntoVectorStoreMiddleware - ${getErrorMessage(error)}` + ) + } +} + +const _insertIntoVectorStoreWorkerThread = async ( + appDataSource: DataSource, + componentNodes: IComponentNodes, + telemetry: Telemetry, + data: ICommonObject, + isStrictSave = true +) => { + try { + const entity = await saveVectorStoreConfig(appDataSource, data, isStrictSave) let upsertHistory: Record = {} const chatflowid = data.storeId // fake chatflowid because this is not tied to any chatflow const options: ICommonObject = { chatflowid, - appDataSource: appServer.AppDataSource, + appDataSource, databaseEntities, logger } @@ -1049,19 +1288,24 @@ const _insertIntoVectorStoreWorkerThread = async (data: ICommonObject) => { // Get Record Manager Instance if (data.recordManagerName && data.recordManagerConfig) { - recordManagerObj = await _createRecordManagerObject(appServer, data, options, upsertHistory) + recordManagerObj = await _createRecordManagerObject(componentNodes, data, options, upsertHistory) } // Get Embeddings Instance - const embeddingObj = await _createEmbeddingsObject(appServer, data, options, upsertHistory) + const embeddingObj = await _createEmbeddingsObject(componentNodes, data, options, upsertHistory) // Get Vector Store Node Data - const vStoreNodeData = _createVectorStoreNodeData(appServer, data, embeddingObj, recordManagerObj) + const vStoreNodeData = _createVectorStoreNodeData(componentNodes, data, embeddingObj, recordManagerObj) + // Prepare docs for upserting - const chunks = await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).find({ - where: { - storeId: data.storeId - } + const filterOptions: ICommonObject = { + storeId: data.storeId + } + if (data.docId) { + filterOptions['docId'] = data.docId + } + const chunks = await appDataSource.getRepository(DocumentStoreFileChunk).find({ + where: filterOptions }) const docs: Document[] = chunks.map((chunk: DocumentStoreFileChunk) => { return new Document({ @@ -1072,7 +1316,7 @@ const _insertIntoVectorStoreWorkerThread = async (data: ICommonObject) => { vStoreNodeData.inputs.document = docs // Get Vector Store Instance - const vectorStoreObj = await _createVectorStoreObject(appServer, data, vStoreNodeData, upsertHistory) + const vectorStoreObj = await _createVectorStoreObject(componentNodes, data, vStoreNodeData, upsertHistory) const indexResult = await vectorStoreObj.vectorStoreMethods.upsert(vStoreNodeData, options) // Save to DB @@ -1083,22 +1327,19 @@ const _insertIntoVectorStoreWorkerThread = async (data: ICommonObject) => { result.chatflowid = chatflowid const newUpsertHistory = new UpsertHistory() Object.assign(newUpsertHistory, result) - const upsertHistoryItem = appServer.AppDataSource.getRepository(UpsertHistory).create(newUpsertHistory) - await appServer.AppDataSource.getRepository(UpsertHistory).save(upsertHistoryItem) + const upsertHistoryItem = appDataSource.getRepository(UpsertHistory).create(newUpsertHistory) + await appDataSource.getRepository(UpsertHistory).save(upsertHistoryItem) } - await telemetryService.createEvent({ - name: `vector_upserted`, - data: { - version: await getAppVersion(), - chatlowId: chatflowid, - type: chatType.INTERNAL, - flowGraph: omit(indexResult['result'], ['totalKeys', 'addedDocs']) - } + await telemetry.sendTelemetry('vector_upserted', { + version: await getAppVersion(), + chatlowId: chatflowid, + type: ChatType.INTERNAL, + flowGraph: omit(indexResult['result'], ['totalKeys', 'addedDocs']) }) entity.status = DocumentStoreStatus.UPSERTED - await appServer.AppDataSource.getRepository(DocumentStore).save(entity) + await appDataSource.getRepository(DocumentStore).save(entity) return indexResult ?? { result: 'Successfully Upserted' } } catch (error) { @@ -1126,7 +1367,9 @@ const getEmbeddingProviders = async () => { const getVectorStoreProviders = async () => { try { const dbResponse = await nodesService.getAllNodesForCategory('Vector Stores') - return dbResponse.filter((node) => !node.tags?.includes('LlamaIndex') && node.name !== 'documentStoreVS') + return dbResponse.filter( + (node) => !node.tags?.includes('LlamaIndex') && node.name !== 'documentStoreVS' && node.name !== 'memoryVectorStore' + ) } catch (error) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, @@ -1150,6 +1393,8 @@ const getRecordManagerProviders = async () => { const queryVectorStore = async (data: ICommonObject) => { try { const appServer = getRunningExpressApp() + const componentNodes = appServer.nodesPool.componentNodes + const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ id: data.storeId }) @@ -1174,7 +1419,7 @@ const queryVectorStore = async (data: ICommonObject) => { const embeddingConfig = JSON.parse(entity.embeddingConfig) data.embeddingName = embeddingConfig.name data.embeddingConfig = embeddingConfig.config - let embeddingObj = await _createEmbeddingsObject(appServer, data, options) + let embeddingObj = await _createEmbeddingsObject(componentNodes, data, options) const vsConfig = JSON.parse(entity.vectorStoreConfig) data.vectorStoreName = vsConfig.name @@ -1183,10 +1428,10 @@ const queryVectorStore = async (data: ICommonObject) => { data.vectorStoreConfig = { ...vsConfig.config, ...data.inputs } } - const vStoreNodeData = _createVectorStoreNodeData(appServer, data, embeddingObj, undefined) + const vStoreNodeData = _createVectorStoreNodeData(componentNodes, data, embeddingObj, undefined) // Get Vector Store Instance - const vectorStoreObj = await _createVectorStoreObject(appServer, data, vStoreNodeData) + const vectorStoreObj = await _createVectorStoreObject(componentNodes, data, vStoreNodeData) const retriever = await vectorStoreObj.init(vStoreNodeData, '', options) if (!retriever) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Failed to create retriever`) @@ -1235,13 +1480,13 @@ const queryVectorStore = async (data: ICommonObject) => { } const _createEmbeddingsObject = async ( - appServer: App, + componentNodes: IComponentNodes, data: ICommonObject, options: ICommonObject, upsertHistory?: Record ): Promise => { // prepare embedding node data - const embeddingComponent = appServer.nodesPool.componentNodes[data.embeddingName] + const embeddingComponent = componentNodes[data.embeddingName] const embeddingNodeData: any = { inputs: { ...data.embeddingConfig }, outputs: { output: 'document' }, @@ -1270,13 +1515,13 @@ const _createEmbeddingsObject = async ( } const _createRecordManagerObject = async ( - appServer: App, + componentNodes: IComponentNodes, data: ICommonObject, options: ICommonObject, upsertHistory?: Record ) => { // prepare record manager node data - const recordManagerComponent = appServer.nodesPool.componentNodes[data.recordManagerName] + const recordManagerComponent = componentNodes[data.recordManagerName] const rmNodeData: any = { inputs: { ...data.recordManagerConfig }, id: `${recordManagerComponent.name}_0`, @@ -1303,8 +1548,8 @@ const _createRecordManagerObject = async ( return recordManagerObj } -const _createVectorStoreNodeData = (appServer: App, data: ICommonObject, embeddingObj: any, recordManagerObj?: any) => { - const vectorStoreComponent = appServer.nodesPool.componentNodes[data.vectorStoreName] +const _createVectorStoreNodeData = (componentNodes: IComponentNodes, data: ICommonObject, embeddingObj: any, recordManagerObj?: any) => { + const vectorStoreComponent = componentNodes[data.vectorStoreName] const vStoreNodeData: any = { id: `${vectorStoreComponent.name}_0`, inputs: { ...data.vectorStoreConfig }, @@ -1333,40 +1578,633 @@ const _createVectorStoreNodeData = (appServer: App, data: ICommonObject, embeddi } const _createVectorStoreObject = async ( - appServer: App, + componentNodes: IComponentNodes, data: ICommonObject, vStoreNodeData: INodeData, upsertHistory?: Record ) => { - const vStoreNodeInstanceFilePath = appServer.nodesPool.componentNodes[data.vectorStoreName].filePath as string + const vStoreNodeInstanceFilePath = componentNodes[data.vectorStoreName].filePath as string const vStoreNodeModule = await import(vStoreNodeInstanceFilePath) const vStoreNodeInstance = new vStoreNodeModule.nodeClass() if (upsertHistory) upsertHistory['flowData'] = saveUpsertFlowData(vStoreNodeData, upsertHistory) return vStoreNodeInstance } +const upsertDocStore = async ( + appDataSource: DataSource, + componentNodes: IComponentNodes, + telemetry: Telemetry, + storeId: string, + data: IDocumentStoreUpsertData, + files: Express.Multer.File[] = [], + isRefreshExisting = false +) => { + const docId = data.docId + let metadata = {} + if (data.metadata) { + try { + metadata = typeof data.metadata === 'string' ? JSON.parse(data.metadata) : data.metadata + } catch (error) { + throw new InternalFlowiseError(StatusCodes.BAD_REQUEST, `Error: Invalid metadata`) + } + } + const replaceExisting = data.replaceExisting ?? false + const createNewDocStore = data.createNewDocStore ?? false + const newLoader = typeof data.loader === 'string' ? JSON.parse(data.loader) : data.loader + const newSplitter = typeof data.splitter === 'string' ? JSON.parse(data.splitter) : data.splitter + const newVectorStore = typeof data.vectorStore === 'string' ? JSON.parse(data.vectorStore) : data.vectorStore + const newEmbedding = typeof data.embedding === 'string' ? JSON.parse(data.embedding) : data.embedding + const newRecordManager = typeof data.recordManager === 'string' ? JSON.parse(data.recordManager) : data.recordManager + + const getComponentLabelFromName = (nodeName: string) => { + const component = Object.values(componentNodes).find((node) => node.name === nodeName) + return component?.label || '' + } + + let loaderName = '' + let loaderId = '' + let loaderConfig: ICommonObject = {} + + let splitterName = '' + let splitterId = '' + let splitterConfig: ICommonObject = {} + + let vectorStoreName = '' + let vectorStoreConfig: ICommonObject = {} + + let embeddingName = '' + let embeddingConfig: ICommonObject = {} + + let recordManagerName = '' + let recordManagerConfig: ICommonObject = {} + + // Step 1: Get existing loader + if (docId) { + const entity = await appDataSource.getRepository(DocumentStore).findOneBy({ id: storeId }) + if (!entity) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Document store ${storeId} not found`) + } + const loaders = JSON.parse(entity.loaders) + const loader = loaders.find((ldr: IDocumentStoreLoader) => ldr.id === docId) + if (!loader) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Document loader ${docId} not found`) + } + + // Loader + loaderName = loader.loaderName + loaderId = loader.loaderId + loaderConfig = { + ...loaderConfig, + ...loader?.loaderConfig + } + + // Splitter + splitterName = loader.splitterName + splitterId = loader.splitterId + splitterConfig = { + ...splitterConfig, + ...loader?.splitterConfig + } + + // Vector Store + vectorStoreName = JSON.parse(entity.vectorStoreConfig || '{}')?.name + vectorStoreConfig = JSON.parse(entity.vectorStoreConfig || '{}')?.config + + // Embedding + embeddingName = JSON.parse(entity.embeddingConfig || '{}')?.name + embeddingConfig = JSON.parse(entity.embeddingConfig || '{}')?.config + + // Record Manager + recordManagerName = JSON.parse(entity.recordManagerConfig || '{}')?.name + recordManagerConfig = JSON.parse(entity.recordManagerConfig || '{}')?.config + } + + if (createNewDocStore) { + const docStoreBody = typeof data.docStore === 'string' ? JSON.parse(data.docStore) : data.docStore + const newDocumentStore = docStoreBody ?? { name: `Document Store ${Date.now().toString()}` } + const docStore = DocumentStoreDTO.toEntity(newDocumentStore) + const documentStore = appDataSource.getRepository(DocumentStore).create(docStore) + const dbResponse = await appDataSource.getRepository(DocumentStore).save(documentStore) + storeId = dbResponse.id + } + + // Step 2: Replace with new values + loaderName = newLoader?.name ? getComponentLabelFromName(newLoader?.name) : loaderName + loaderId = newLoader?.name || loaderId + loaderConfig = { + ...loaderConfig, + ...newLoader?.config + } + + splitterName = newSplitter?.name ? getComponentLabelFromName(newSplitter?.name) : splitterName + splitterId = newSplitter?.name || splitterId + splitterConfig = { + ...splitterConfig, + ...newSplitter?.config + } + + vectorStoreName = newVectorStore?.name || vectorStoreName + vectorStoreConfig = { + ...vectorStoreConfig, + ...newVectorStore?.config + } + + embeddingName = newEmbedding?.name || embeddingName + embeddingConfig = { + ...embeddingConfig, + ...newEmbedding?.config + } + + recordManagerName = newRecordManager?.name || recordManagerName + recordManagerConfig = { + ...recordManagerConfig, + ...newRecordManager?.config + } + + // Step 3: Replace with files + if (files.length) { + const filesLoaderConfig: ICommonObject = {} + for (const file of files) { + const fileNames: string[] = [] + const fileBuffer = await getFileFromUpload(file.path ?? file.key) + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') + + try { + await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, DOCUMENT_STORE_BASE_FOLDER, storeId) + } catch (error) { + continue + } + + const mimePrefix = 'data:' + file.mimetype + ';base64' + const storagePath = mimePrefix + ',' + fileBuffer.toString('base64') + `,filename:${file.originalname}` + + const fileInputFieldFromMimeType = mapMimeTypeToInputField(file.mimetype) + + const fileExtension = path.extname(file.originalname) + + const fileInputFieldFromExt = mapExtToInputField(fileExtension) + + let fileInputField = 'txtFile' + + if (fileInputFieldFromExt !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } else if (fileInputFieldFromMimeType !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } + + if (loaderId === 'unstructuredFileLoader') { + fileInputField = 'fileObject' + } + + if (filesLoaderConfig[fileInputField]) { + const existingFileInputFieldArray = JSON.parse(filesLoaderConfig[fileInputField]) + const newFileInputFieldArray = [storagePath] + const updatedFieldArray = existingFileInputFieldArray.concat(newFileInputFieldArray) + filesLoaderConfig[fileInputField] = JSON.stringify(updatedFieldArray) + } else { + filesLoaderConfig[fileInputField] = JSON.stringify([storagePath]) + } + + await removeSpecificFileFromUpload(file.path ?? file.key) + } + + loaderConfig = { + ...loaderConfig, + ...filesLoaderConfig + } + } + + if (Object.keys(metadata).length > 0) { + loaderConfig = { + ...loaderConfig, + metadata + } + } + + // Step 4: Verification for must have components + if (!loaderName || !loaderId || !loaderConfig) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Loader not configured`) + } + + if (!vectorStoreName || !vectorStoreConfig) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Vector store not configured`) + } + + if (!embeddingName || !embeddingConfig) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Embedding not configured`) + } + + // Step 5: Process & Upsert + const processData: IDocumentStoreLoaderForPreview = { + storeId, + loaderId, + loaderName, + loaderConfig, + splitterId, + splitterName, + splitterConfig, + userId: data.userId, + organizationId: data.organizationId + } + + if (isRefreshExisting || replaceExisting) { + processData.id = docId + } + + try { + const newLoader = await saveProcessingLoader(appDataSource, processData) + const result = await processLoader({ + appDataSource, + componentNodes, + data: processData, + docLoaderId: newLoader.id || '', + isProcessWithoutUpsert: false, + telemetry, + userId: data.userId, + organizationId: data.organizationId + }) + const newDocId = result.docId + + const insertData = { + storeId, + docId: newDocId, + vectorStoreName, + vectorStoreConfig, + embeddingName, + embeddingConfig, + recordManagerName, + recordManagerConfig + } + + const res = await insertIntoVectorStore({ + appDataSource, + componentNodes, + telemetry, + data: insertData, + isStrictSave: false, + isVectorStoreInsert: true, + userId: data.userId, + organizationId: data.organizationId + }) + res.docId = newDocId + if (createNewDocStore) res.storeId = storeId + + return res + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.upsertDocStore - ${getErrorMessage(error)}` + ) + } +} + +export const executeDocStoreUpsert = async ({ + appDataSource, + componentNodes, + telemetry, + storeId, + totalItems, + files, + isRefreshAPI, + userId, + organizationId +}: IExecuteDocStoreUpsert) => { + const results = [] + for (const item of totalItems) { + const res = await upsertDocStore(appDataSource, componentNodes, telemetry, storeId, item, files, isRefreshAPI) + results.push(res) + } + return isRefreshAPI ? results : results[0] +} + +const upsertDocStoreMiddleware = async (storeId: string, data: IDocumentStoreUpsertData, files: Express.Multer.File[] = []) => { + const appServer = getRunningExpressApp() + const componentNodes = appServer.nodesPool.componentNodes + const appDataSource = appServer.AppDataSource + const telemetry = appServer.telemetry + + try { + const executeData: IExecuteDocStoreUpsert = { + appDataSource, + componentNodes, + telemetry, + storeId, + totalItems: [data], + files, + isRefreshAPI: false, + userId: data.userId, + organizationId: data.organizationId + } + + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) + + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + + if (!result) { + throw new Error('Job execution failed') + } + return result + } else { + return await executeDocStoreUpsert(executeData) + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.upsertDocStoreMiddleware - ${getErrorMessage(error)}` + ) + } +} + +const refreshDocStoreMiddleware = async (storeId: string, data: IDocumentStoreRefreshData) => { + const appServer = getRunningExpressApp() + const componentNodes = appServer.nodesPool.componentNodes + const appDataSource = appServer.AppDataSource + const telemetry = appServer.telemetry + + try { + let totalItems: IDocumentStoreUpsertData[] = [] + + if (!data || !data.items || data.items.length === 0) { + const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ id: storeId }) + if (!entity) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Document store ${storeId} not found`) + } + + const loaders = JSON.parse(entity.loaders) + totalItems = loaders.map((ldr: IDocumentStoreLoader) => { + return { + docId: ldr.id + } + }) + } else { + totalItems = data.items + } + + const executeData: IExecuteDocStoreUpsert = { + appDataSource, + componentNodes, + telemetry, + storeId, + totalItems, + files: [], + isRefreshAPI: true, + userId: data.userId, + organizationId: data.organizationId + } + + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) + + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + + if (!result) { + throw new Error('Job execution failed') + } + return result + } else { + return await executeDocStoreUpsert(executeData) + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.refreshDocStoreMiddleware - ${getErrorMessage(error)}` + ) + } +} + +const generateDocStoreToolDesc = async (docStoreId: string, selectedChatModel: ICommonObject): Promise => { + try { + const appServer = getRunningExpressApp() + + // get matching DocumentStoreFileChunk storeId with docStoreId, and only the first 4 chunks sorted by chunkNo + const chunks = await appServer.AppDataSource.getRepository(DocumentStoreFileChunk).findBy({ + storeId: docStoreId + }) + + if (!chunks?.length) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `DocumentStore ${docStoreId} chunks not found`) + } + + // sort the chunks by chunkNo + chunks.sort((a, b) => a.chunkNo - b.chunkNo) + + // get the first 4 chunks + const chunksPageContent = chunks + .slice(0, 4) + .map((chunk) => { + return chunk.pageContent + }) + .join('\n') + + if (selectedChatModel && Object.keys(selectedChatModel).length > 0) { + const nodeInstanceFilePath = appServer.nodesPool.componentNodes[selectedChatModel.name].filePath as string + const nodeModule = await import(nodeInstanceFilePath) + const newNodeInstance = new nodeModule.nodeClass() + const nodeData = { + credential: selectedChatModel.credential || selectedChatModel.inputs['FLOWISE_CREDENTIAL_ID'] || undefined, + inputs: selectedChatModel.inputs, + id: `${selectedChatModel.name}_0` + } + const options: ICommonObject = { + appDataSource: appServer.AppDataSource, + databaseEntities, + logger + } + const llmNodeInstance = await newNodeInstance.init(nodeData, '', options) + const response = await llmNodeInstance.invoke( + DOCUMENTSTORE_TOOL_DESCRIPTION_PROMPT_GENERATOR.replace('{context}', chunksPageContent) + ) + return response + } + + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.generateDocStoreToolDesc - Error generating tool description` + ) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: documentStoreServices.generateDocStoreToolDesc - ${getErrorMessage(error)}` + ) + } +} + +export const findDocStoreAvailableConfigs = async (storeId: string, docId: string) => { + // find the document store + const appServer = getRunningExpressApp() + const entity = await appServer.AppDataSource.getRepository(DocumentStore).findOneBy({ id: storeId }) + + if (!entity) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Document store ${storeId} not found`) + } + + const loaders = JSON.parse(entity.loaders) + const loader = loaders.find((ldr: IDocumentStoreLoader) => ldr.id === docId) + if (!loader) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Document loader ${docId} not found`) + } + + const nodes = [] + const componentCredentials = appServer.nodesPool.componentCredentials + + const loaderName = loader.loaderId + const loaderLabel = appServer.nodesPool.componentNodes[loaderName].label + + const loaderInputs = + appServer.nodesPool.componentNodes[loaderName].inputs?.filter((input) => INPUT_PARAMS_TYPE.includes(input.type)) ?? [] + nodes.push({ + label: loaderLabel, + nodeId: `${loaderName}_0`, + inputParams: loaderInputs + }) + + const splitterName = loader.splitterId + if (splitterName) { + const splitterLabel = appServer.nodesPool.componentNodes[splitterName].label + const splitterInputs = + appServer.nodesPool.componentNodes[splitterName].inputs?.filter((input) => INPUT_PARAMS_TYPE.includes(input.type)) ?? [] + nodes.push({ + label: splitterLabel, + nodeId: `${splitterName}_0`, + inputParams: splitterInputs + }) + } + + if (entity.vectorStoreConfig) { + const vectorStoreName = JSON.parse(entity.vectorStoreConfig || '{}').name + const vectorStoreLabel = appServer.nodesPool.componentNodes[vectorStoreName].label + const vectorStoreInputs = + appServer.nodesPool.componentNodes[vectorStoreName].inputs?.filter((input) => INPUT_PARAMS_TYPE.includes(input.type)) ?? [] + nodes.push({ + label: vectorStoreLabel, + nodeId: `${vectorStoreName}_0`, + inputParams: vectorStoreInputs + }) + } + + if (entity.embeddingConfig) { + const embeddingName = JSON.parse(entity.embeddingConfig || '{}').name + const embeddingLabel = appServer.nodesPool.componentNodes[embeddingName].label + const embeddingInputs = + appServer.nodesPool.componentNodes[embeddingName].inputs?.filter((input) => INPUT_PARAMS_TYPE.includes(input.type)) ?? [] + nodes.push({ + label: embeddingLabel, + nodeId: `${embeddingName}_0`, + inputParams: embeddingInputs + }) + } + + if (entity.recordManagerConfig) { + const recordManagerName = JSON.parse(entity.recordManagerConfig || '{}').name + const recordManagerLabel = appServer.nodesPool.componentNodes[recordManagerName].label + const recordManagerInputs = + appServer.nodesPool.componentNodes[recordManagerName].inputs?.filter((input) => INPUT_PARAMS_TYPE.includes(input.type)) ?? [] + nodes.push({ + label: recordManagerLabel, + nodeId: `${recordManagerName}_0`, + inputParams: recordManagerInputs + }) + } + + const configs: IOverrideConfig[] = [] + for (const node of nodes) { + const inputParams = node.inputParams + for (const inputParam of inputParams) { + let obj: IOverrideConfig + if (inputParam.type === 'file') { + obj = { + node: node.label, + nodeId: node.nodeId, + label: inputParam.label, + name: 'files', + type: inputParam.fileType ?? inputParam.type + } + } else if (inputParam.type === 'options') { + obj = { + node: node.label, + nodeId: node.nodeId, + label: inputParam.label, + name: inputParam.name, + type: inputParam.options + ? inputParam.options + ?.map((option) => { + return option.name + }) + .join(', ') + : 'string' + } + } else if (inputParam.type === 'credential') { + // get component credential inputs + for (const name of inputParam.credentialNames ?? []) { + if (Object.prototype.hasOwnProperty.call(componentCredentials, name)) { + const inputs = componentCredentials[name]?.inputs ?? [] + for (const input of inputs) { + obj = { + node: node.label, + nodeId: node.nodeId, + label: input.label, + name: input.name, + type: input.type === 'password' ? 'string' : input.type + } + configs.push(obj) + } + } + } + continue + } else { + obj = { + node: node.label, + nodeId: node.nodeId, + label: inputParam.label, + name: inputParam.name, + type: inputParam.type === 'password' ? 'string' : inputParam.type + } + } + if (!configs.some((config) => JSON.stringify(config) === JSON.stringify(obj))) { + configs.push(obj) + } + } + } + + return configs +} + export default { updateDocumentStoreUsage, deleteDocumentStore, createDocumentStore, deleteLoaderFromDocumentStore, getAllDocumentStores, + getAllDocumentFileChunks, getDocumentStoreById, getUsedChatflowNames, getDocumentStoreFileChunks, syncAndRefreshChunks, updateDocumentStore, - previewChunks, - processAndSaveChunks, + previewChunksMiddleware, + saveProcessingLoader, + processLoaderMiddleware, deleteDocumentStoreFileChunk, editDocumentStoreFileChunk, getDocumentLoaders, - insertIntoVectorStore, + insertIntoVectorStoreMiddleware, getEmbeddingProviders, getVectorStoreProviders, getRecordManagerProviders, saveVectorStoreConfig, queryVectorStore, deleteVectorStoreFromStore, - updateVectorStoreConfigOnly + updateVectorStoreConfigOnly, + upsertDocStoreMiddleware, + refreshDocStoreMiddleware, + generateDocStoreToolDesc, + findDocStoreAvailableConfigs } diff --git a/packages/server/src/services/export-import/index.ts b/packages/server/src/services/export-import/index.ts new file mode 100644 index 00000000000..88c91c13b6c --- /dev/null +++ b/packages/server/src/services/export-import/index.ts @@ -0,0 +1,120 @@ +import { StatusCodes } from 'http-status-codes' +import { ChatFlow } from '../../database/entities/ChatFlow' +import { Tool } from '../../database/entities/Tool' +import { Variable } from '../../database/entities/Variable' +import { Assistant } from '../../database/entities/Assistant' +import { InternalFlowiseError } from '../../errors/internalFlowiseError' +import { getErrorMessage } from '../../errors/utils' +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import chatflowService from '../chatflows' +import toolsService from '../tools' +import variableService from '../variables' +import assistantService from '../assistants' +import { IUser } from '../../Interface' + +type ExportInput = { + tool: boolean + chatflow: boolean + agentflow: boolean + variable: boolean + assistant: boolean +} + +type ExportData = { + Tool: Tool[] + ChatFlow: ChatFlow[] + AgentFlow: ChatFlow[] + Variable: Variable[] + Assistant: Assistant[] +} + +const convertExportInput = (body: any): ExportInput => { + try { + if (!body || typeof body !== 'object') throw new Error('Invalid ExportInput object in request body') + if (body.tool && typeof body.tool !== 'boolean') throw new Error('Invalid tool property in ExportInput object') + if (body.chatflow && typeof body.chatflow !== 'boolean') throw new Error('Invalid chatflow property in ExportInput object') + if (body.agentflow && typeof body.agentflow !== 'boolean') throw new Error('Invalid agentflow property in ExportInput object') + if (body.variable && typeof body.variable !== 'boolean') throw new Error('Invalid variable property in ExportInput object') + if (body.assistant && typeof body.assistant !== 'boolean') throw new Error('Invalid assistant property in ExportInput object') + return body as ExportInput + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: exportImportService.convertExportInput - ${getErrorMessage(error)}` + ) + } +} + +const FileDefaultName = 'ExportData.json' +const exportData = async (exportInput: ExportInput, user: IUser): Promise<{ FileDefaultName: string } & ExportData> => { + try { + // step 1 - get all Tool + let allTool: Tool[] = [] + if (exportInput.tool === true) allTool = await toolsService.getAllTools(user) + + // step 2 - get all ChatFlow + let allChatflow: ChatFlow[] = [] + if (exportInput.chatflow === true) allChatflow = await chatflowService.getAllChatflows('CHATFLOW') + + // step 3 - get all MultiAgent + let allMultiAgent: ChatFlow[] = [] + if (exportInput.agentflow === true) allMultiAgent = await chatflowService.getAllChatflows('MULTIAGENT') + + let allVars: Variable[] = [] + if (exportInput.variable === true) allVars = await variableService.getAllVariables(user) + + let allAssistants: Assistant[] = [] + if (exportInput.assistant === true) allAssistants = await assistantService.getAllAssistants() + + return { + FileDefaultName, + Tool: allTool, + ChatFlow: allChatflow, + AgentFlow: allMultiAgent, + Variable: allVars, + Assistant: allAssistants + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: exportImportService.exportData - ${getErrorMessage(error)}` + ) + } +} + +const importData = async (importData: ExportData) => { + try { + const appServer = getRunningExpressApp() + const queryRunner = appServer.AppDataSource.createQueryRunner() + + try { + await queryRunner.startTransaction() + + if (importData.Tool.length > 0) await toolsService.importTools(importData.Tool, queryRunner) + if (importData.ChatFlow.length > 0) await chatflowService.importChatflows(importData.ChatFlow, queryRunner) + if (importData.AgentFlow.length > 0) await chatflowService.importChatflows(importData.AgentFlow, queryRunner) + if (importData.Variable.length > 0) await variableService.importVariables(importData.Variable, queryRunner) + if (importData.Assistant.length > 0) await assistantService.importAssistants(importData.Assistant, queryRunner) + + await queryRunner.commitTransaction() + } catch (error) { + await queryRunner.rollbackTransaction() + throw error + } finally { + if (!queryRunner.isReleased) { + await queryRunner.release() + } + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: exportImportService.importAll - ${getErrorMessage(error)}` + ) + } +} + +export default { + convertExportInput, + exportData, + importData +} diff --git a/packages/server/src/services/feedback/index.ts b/packages/server/src/services/feedback/index.ts index df6bc49ce83..0358cacb554 100644 --- a/packages/server/src/services/feedback/index.ts +++ b/packages/server/src/services/feedback/index.ts @@ -25,7 +25,7 @@ const getAllChatMessageFeedback = async ( } } -// Add chatmessage feedback for chatflowid +// Add chatmessage feedback const createChatMessageFeedbackForChatflow = async (requestBody: Partial): Promise => { try { const dbResponse = await utilAddChatMessageFeedback(requestBody) @@ -38,10 +38,10 @@ const createChatMessageFeedbackForChatflow = async (requestBody: Partial): Promise => { +// Add chatmessage feedback +const updateChatMessageFeedbackForChatflow = async (feedbackId: string, requestBody: Partial): Promise => { try { - const dbResponse = await utilUpdateChatMessageFeedback(chatflowId, requestBody) + const dbResponse = await utilUpdateChatMessageFeedback(feedbackId, requestBody) return dbResponse } catch (error) { throw new InternalFlowiseError( diff --git a/packages/server/src/services/marketplaces/index.ts b/packages/server/src/services/marketplaces/index.ts index 4c807a423ef..2f60a48d28b 100644 --- a/packages/server/src/services/marketplaces/index.ts +++ b/packages/server/src/services/marketplaces/index.ts @@ -5,16 +5,14 @@ import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' import { IReactFlowEdge, IReactFlowNode, IUser } from '../../Interface' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' -import { ChatFlow, ChatflowVisibility } from '../../database/entities/ChatFlow' -import checkOwnership from '../../utils/checkOwnership' - -// Remove the import from 'class-validator' +import { DeleteResult } from 'typeorm' +import { CustomTemplate } from '../../database/entities/CustomTemplate' +import { ChatFlow } from '../../database/entities/ChatFlow' +import { ChatflowVisibility } from '../../database/entities/ChatFlow' +import { validate as isUUID } from 'uuid' -// Add a pure JavaScript implementation of isUUID -function isUUID(str: string): boolean { - const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i - return uuidRegex.test(str) -} +import chatflowsService from '../chatflows' +import checkOwnership from '../../utils/checkOwnership' type ITemplate = { badge: string @@ -285,7 +283,149 @@ const getMarketplaceTemplate = async (templateIdOrName: string, user?: IUser): P } } +const deleteCustomTemplate = async (templateId: string): Promise => { + try { + const appServer = getRunningExpressApp() + return await appServer.AppDataSource.getRepository(CustomTemplate).delete({ id: templateId }) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: marketplacesService.deleteCustomTemplate - ${getErrorMessage(error)}` + ) + } +} + +const getAllCustomTemplates = async (): Promise => { + try { + const appServer = getRunningExpressApp() + const templates: any[] = await appServer.AppDataSource.getRepository(CustomTemplate).find() + templates.map((template) => { + template.usecases = template.usecases ? JSON.parse(template.usecases) : '' + if (template.type === 'Tool') { + template.flowData = JSON.parse(template.flowData) + template.iconSrc = template.flowData.iconSrc + template.schema = template.flowData.schema + template.func = template.flowData.func + template.categories = [] + template.flowData = undefined + } else { + template.categories = getCategories(JSON.parse(template.flowData)) + } + if (!template.badge) { + template.badge = '' + } + if (!template.framework) { + template.framework = '' + } + }) + return templates + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: marketplacesService.getAllCustomTemplates - ${getErrorMessage(error)}` + ) + } +} + +const saveCustomTemplate = async (body: any): Promise => { + try { + const appServer = getRunningExpressApp() + let flowDataStr = '' + let derivedFramework = '' + const customTemplate = new CustomTemplate() + Object.assign(customTemplate, body) + + if (body.chatflowId) { + const chatflow = await chatflowsService.getChatflowById(body.chatflowId) + const flowData = JSON.parse(chatflow.flowData) + const { framework, exportJson } = _generateExportFlowData(flowData) + flowDataStr = JSON.stringify(exportJson) + customTemplate.framework = framework + } else if (body.tool) { + const flowData = { + iconSrc: body.tool.iconSrc, + schema: body.tool.schema, + func: body.tool.func + } + customTemplate.framework = '' + customTemplate.type = 'Tool' + flowDataStr = JSON.stringify(flowData) + } + customTemplate.framework = derivedFramework + if (customTemplate.usecases) { + customTemplate.usecases = JSON.stringify(customTemplate.usecases) + } + const entity = appServer.AppDataSource.getRepository(CustomTemplate).create(customTemplate) + entity.flowData = flowDataStr + const flowTemplate = await appServer.AppDataSource.getRepository(CustomTemplate).save(entity) + return flowTemplate + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: marketplacesService.saveCustomTemplate - ${getErrorMessage(error)}` + ) + } +} + +const _generateExportFlowData = (flowData: any) => { + const nodes = flowData.nodes + const edges = flowData.edges + + let framework = 'Langchain' + for (let i = 0; i < nodes.length; i += 1) { + nodes[i].selected = false + const node = nodes[i] + + const newNodeData = { + id: node.data.id, + label: node.data.label, + version: node.data.version, + name: node.data.name, + type: node.data.type, + baseClasses: node.data.baseClasses, + tags: node.data.tags, + category: node.data.category, + description: node.data.description, + inputParams: node.data.inputParams, + inputAnchors: node.data.inputAnchors, + inputs: {}, + outputAnchors: node.data.outputAnchors, + outputs: node.data.outputs, + selected: false + } + + if (node.data.tags && node.data.tags.length) { + if (node.data.tags.includes('LlamaIndex')) { + framework = 'LlamaIndex' + } + } + + // Remove password, file & folder + if (node.data.inputs && Object.keys(node.data.inputs).length) { + const nodeDataInputs: any = {} + for (const input in node.data.inputs) { + const inputParam = node.data.inputParams.find((inp: any) => inp.name === input) + if (inputParam && inputParam.type === 'password') continue + if (inputParam && inputParam.type === 'file') continue + if (inputParam && inputParam.type === 'folder') continue + nodeDataInputs[input] = node.data.inputs[input] + } + newNodeData.inputs = nodeDataInputs + } + + nodes[i].data = newNodeData + } + const exportJson = { + nodes, + edges + } + return { exportJson, framework } +} + export default { getAllTemplates, + getAllCustomTemplates, + saveCustomTemplate, + deleteCustomTemplate, getMarketplaceTemplate } diff --git a/packages/server/src/services/nodes/index.ts b/packages/server/src/services/nodes/index.ts index 2340aa9b094..2b682f45dad 100644 --- a/packages/server/src/services/nodes/index.ts +++ b/packages/server/src/services/nodes/index.ts @@ -130,6 +130,13 @@ const executeCustomFunction = async (requestBody: any) => { const functionInputVariables = Object.fromEntries( [...(body?.javascriptFunction ?? '').matchAll(/\$([a-zA-Z0-9_]+)/g)].map((g) => [g[1], undefined]) ) + if (functionInputVariables && Object.keys(functionInputVariables).length) { + for (const key in functionInputVariables) { + if (key.includes('vars')) { + delete functionInputVariables[key] + } + } + } const nodeData = { inputs: { functionInputVariables, ...body } } if (Object.prototype.hasOwnProperty.call(appServer.nodesPool.componentNodes, 'customFunction')) { try { diff --git a/packages/server/src/services/openai-assistants-vector-store/index.ts b/packages/server/src/services/openai-assistants-vector-store/index.ts index 46f9c183f8e..671e18d9098 100644 --- a/packages/server/src/services/openai-assistants-vector-store/index.ts +++ b/packages/server/src/services/openai-assistants-vector-store/index.ts @@ -1,11 +1,11 @@ import OpenAI from 'openai' import { StatusCodes } from 'http-status-codes' -import fs from 'fs' import { Credential } from '../../database/entities/Credential' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' import { decryptCredentialData } from '../../utils' +import { getFileFromUpload, removeSpecificFileFromUpload } from 'flowise-components' const getAssistantVectorStore = async (credentialId: string, vectorStoreId: string) => { try { @@ -178,13 +178,14 @@ const uploadFilesToAssistantVectorStore = async ( const openai = new OpenAI({ apiKey: openAIApiKey }) const uploadedFiles = [] for (const file of files) { - const toFile = await OpenAI.toFile(fs.readFileSync(file.filePath), file.fileName) + const fileBuffer = await getFileFromUpload(file.filePath) + const toFile = await OpenAI.toFile(fileBuffer, file.fileName) const createdFile = await openai.files.create({ file: toFile, purpose: 'assistants' }) uploadedFiles.push(createdFile) - fs.unlinkSync(file.filePath) + await removeSpecificFileFromUpload(file.filePath) } const file_ids = [...uploadedFiles.map((file) => file.id)] diff --git a/packages/server/src/services/openai-assistants/index.ts b/packages/server/src/services/openai-assistants/index.ts index c908a546755..e842b04565b 100644 --- a/packages/server/src/services/openai-assistants/index.ts +++ b/packages/server/src/services/openai-assistants/index.ts @@ -1,11 +1,11 @@ import OpenAI from 'openai' -import fs from 'fs' import { StatusCodes } from 'http-status-codes' import { decryptCredentialData } from '../../utils' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' import { Credential } from '../../database/entities/Credential' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' +import { getFileFromUpload, removeSpecificFileFromUpload } from 'flowise-components' // ---------------------------------------- // Assistants @@ -101,13 +101,14 @@ const uploadFilesToAssistant = async (credentialId: string, files: { filePath: s const uploadedFiles = [] for (const file of files) { - const toFile = await OpenAI.toFile(fs.readFileSync(file.filePath), file.fileName) + const fileBuffer = await getFileFromUpload(file.filePath) + const toFile = await OpenAI.toFile(fileBuffer, file.fileName) const createdFile = await openai.files.create({ file: toFile, purpose: 'assistants' }) uploadedFiles.push(createdFile) - fs.unlinkSync(file.filePath) + await removeSpecificFileFromUpload(file.filePath) } return uploadedFiles diff --git a/packages/server/src/services/openai-realtime/index.ts b/packages/server/src/services/openai-realtime/index.ts new file mode 100644 index 00000000000..c6b01bf6aef --- /dev/null +++ b/packages/server/src/services/openai-realtime/index.ts @@ -0,0 +1,204 @@ +import { StatusCodes } from 'http-status-codes' +import { InternalFlowiseError } from '../../errors/internalFlowiseError' +import { getErrorMessage } from '../../errors/utils' +import { + buildFlow, + constructGraphs, + databaseEntities, + getAPIOverrideConfig, + getEndingNodes, + getStartingNodes, + resolveVariables +} from '../../utils' +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import { ChatFlow } from '../../database/entities/ChatFlow' +import { IDepthQueue, IReactFlowNode, IUser } from '../../Interface' +import { ICommonObject, INodeData } from 'flowise-components' +import { convertToOpenAIFunction } from '@langchain/core/utils/function_calling' +import { v4 as uuidv4 } from 'uuid' +import { Variable } from '../../database/entities/Variable' + +const SOURCE_DOCUMENTS_PREFIX = '\n\n----FLOWISE_SOURCE_DOCUMENTS----\n\n' +const ARTIFACTS_PREFIX = '\n\n----FLOWISE_ARTIFACTS----\n\n' + +const buildAndInitTool = async (user: IUser, chatflowid: string, _chatId?: string, _apiMessageId?: string) => { + const appServer = getRunningExpressApp() + const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ + id: chatflowid + }) + if (!chatflow) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) + } + + const chatId = _chatId || uuidv4() + const apiMessageId = _apiMessageId || uuidv4() + const flowData = JSON.parse(chatflow.flowData) + const nodes = flowData.nodes + const edges = flowData.edges + + const toolAgentNode = nodes.find( + (node: IReactFlowNode) => node.data.inputAnchors.find((acr) => acr.type === 'Tool') && node.data.category === 'Agents' + ) + if (!toolAgentNode) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Agent with tools not found in chatflow ${chatflowid}`) + } + + const { graph, nodeDependencies } = constructGraphs(nodes, edges) + const directedGraph = graph + const endingNodes = getEndingNodes(nodeDependencies, directedGraph, nodes) + + /*** Get Starting Nodes with Reversed Graph ***/ + const constructedObj = constructGraphs(nodes, edges, { isReversed: true }) + const nonDirectedGraph = constructedObj.graph + let startingNodeIds: string[] = [] + let depthQueue: IDepthQueue = {} + const endingNodeIds = endingNodes.map((n) => n.id) + for (const endingNodeId of endingNodeIds) { + const resx = getStartingNodes(nonDirectedGraph, endingNodeId) + startingNodeIds.push(...resx.startingNodeIds) + depthQueue = Object.assign(depthQueue, resx.depthQueue) + } + startingNodeIds = [...new Set(startingNodeIds)] + + const availableVariables = await appServer.AppDataSource.getRepository(Variable).find({ where: { userId: user.id } }) + const { nodeOverrides, variableOverrides, apiOverrideStatus } = getAPIOverrideConfig(chatflow) + + const reactFlowNodes = await buildFlow({ + user, + startingNodeIds, + reactFlowNodes: nodes, + reactFlowEdges: edges, + graph, + depthQueue, + componentNodes: appServer.nodesPool.componentNodes, + question: '', + chatHistory: [], + chatId: chatId, + sessionId: chatId, + chatflowid, + apiMessageId, + appDataSource: appServer.AppDataSource, + apiOverrideStatus, + nodeOverrides, + availableVariables, + variableOverrides + }) + + const nodeToExecute = + endingNodeIds.length === 1 + ? reactFlowNodes.find((node: IReactFlowNode) => endingNodeIds[0] === node.id) + : reactFlowNodes[reactFlowNodes.length - 1] + + if (!nodeToExecute) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Node not found`) + } + + const flowDataObj: ICommonObject = { chatflowid, chatId } + + const reactFlowNodeData: INodeData = await resolveVariables( + user, + nodeToExecute.data, + reactFlowNodes, + '', + [], + flowDataObj, + '', + availableVariables, + variableOverrides + ) + let nodeToExecuteData = reactFlowNodeData + + const nodeInstanceFilePath = appServer.nodesPool.componentNodes[nodeToExecuteData.name].filePath as string + const nodeModule = await import(nodeInstanceFilePath) + const nodeInstance = new nodeModule.nodeClass() + + const agent = await nodeInstance.init(nodeToExecuteData, '', { + chatflowid, + chatId, + appDataSource: appServer.AppDataSource, + databaseEntities, + analytic: chatflow.analytic + }) + + return agent +} + +const getAgentTools = async (user: IUser, chatflowid: string): Promise => { + try { + const agent = await buildAndInitTool(user, chatflowid) + const tools = agent.tools + return tools.map(convertToOpenAIFunction) + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: openaiRealTimeService.getAgentTools - ${getErrorMessage(error)}` + ) + } +} + +const executeAgentTool = async ( + user: IUser, + chatflowid: string, + chatId: string, + toolName: string, + inputArgs: string, + apiMessageId?: string +): Promise => { + try { + const agent = await buildAndInitTool(user, chatflowid, chatId, apiMessageId) + const tools = agent.tools + const tool = tools.find((tool: any) => tool.name === toolName) + + if (!tool) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Tool ${toolName} not found`) + } + + const inputArgsObj = typeof inputArgs === 'string' ? JSON.parse(inputArgs) : inputArgs + + let toolOutput = await tool.call(inputArgsObj, undefined, undefined, { chatId }) + + if (typeof toolOutput === 'object') { + toolOutput = JSON.stringify(toolOutput) + } + + let sourceDocuments = [] + if (typeof toolOutput === 'string' && toolOutput.includes(SOURCE_DOCUMENTS_PREFIX)) { + const _splitted = toolOutput.split(SOURCE_DOCUMENTS_PREFIX) + toolOutput = _splitted[0] + const _sourceDocuments = JSON.parse(_splitted[1].trim()) + if (Array.isArray(_sourceDocuments)) { + sourceDocuments = _sourceDocuments + } else { + sourceDocuments.push(_sourceDocuments) + } + } + + let artifacts = [] + if (typeof toolOutput === 'string' && toolOutput.includes(ARTIFACTS_PREFIX)) { + const _splitted = toolOutput.split(ARTIFACTS_PREFIX) + toolOutput = _splitted[0] + const _artifacts = JSON.parse(_splitted[1].trim()) + if (Array.isArray(_artifacts)) { + artifacts = _artifacts + } else { + artifacts.push(_artifacts) + } + } + + return { + output: toolOutput, + sourceDocuments, + artifacts + } + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: openaiRealTimeService.executeAgentTool - ${getErrorMessage(error)}` + ) + } +} + +export default { + getAgentTools, + executeAgentTool +} diff --git a/packages/server/src/services/predictions/index.ts b/packages/server/src/services/predictions/index.ts index dbb261be837..b4149a17361 100644 --- a/packages/server/src/services/predictions/index.ts +++ b/packages/server/src/services/predictions/index.ts @@ -1,12 +1,11 @@ import { Request } from 'express' -import { Server } from 'socket.io' import { StatusCodes } from 'http-status-codes' import { utilBuildChatflow } from '../../utils/buildChatflow' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' import chatflowsService from '../chatflows' -const buildChatflow = async (fullRequest: Request, ioServer: Server) => { +const buildChatflow = async (fullRequest: Request) => { try { const { chatId, question: prompt, overrideConfig } = fullRequest.body const chatflowId = fullRequest.params.id @@ -33,7 +32,7 @@ const buildChatflow = async (fullRequest: Request, ioServer: Server) => { } // First build and get response from chatflow - const response = await utilBuildChatflow(fullRequest, ioServer) + const response = await utilBuildChatflow(fullRequest) // After successful response, upsert the chat if (response.chatId) { diff --git a/packages/server/src/services/stats/index.ts b/packages/server/src/services/stats/index.ts index 70b74de0a40..48dd0ed300e 100644 --- a/packages/server/src/services/stats/index.ts +++ b/packages/server/src/services/stats/index.ts @@ -1,5 +1,5 @@ import { StatusCodes } from 'http-status-codes' -import { ChatMessageRatingType, chatType, IUser } from '../../Interface' +import { ChatMessageRatingType, ChatType, IUser } from '../../Interface' import { ChatMessage } from '../../database/entities/ChatMessage' import { utilGetChatMessage } from '../../utils/getChatMessage' import { ChatMessageFeedback } from '../../database/entities/ChatMessageFeedback' @@ -10,7 +10,7 @@ import { getErrorMessage } from '../../errors/utils' const getChatflowStats = async ( user: IUser, chatflowid: string, - chatTypeFilter: chatType | undefined, + chatTypes: ChatType[] | undefined, startDate?: string, endDate?: string, messageId?: string, @@ -18,20 +18,16 @@ const getChatflowStats = async ( feedbackTypes?: ChatMessageRatingType[] ): Promise => { try { - const chatmessages = (await utilGetChatMessage( + const chatmessages = (await utilGetChatMessage({ user, chatflowid, - chatTypeFilter, - undefined, - undefined, - undefined, - undefined, + chatTypes, startDate, endDate, messageId, feedback, feedbackTypes - )) as Array + })) as Array const totalMessages = chatmessages.length const totalFeedback = chatmessages.filter((message) => message?.feedback).length const positiveFeedback = chatmessages.filter((message) => message?.feedback?.rating === 'THUMBS_UP').length diff --git a/packages/server/src/services/telemetry/index.ts b/packages/server/src/services/telemetry/index.ts deleted file mode 100644 index 4c77efd535c..00000000000 --- a/packages/server/src/services/telemetry/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { getRunningExpressApp } from '../../utils/getRunningExpressApp' - -const createEvent = async (eventInfo: any) => { - const appServer = getRunningExpressApp() - await appServer.telemetry.sendTelemetry(eventInfo.name, eventInfo.data) -} - -export default { - createEvent -} diff --git a/packages/server/src/services/tools/index.ts b/packages/server/src/services/tools/index.ts index 7a20e008b39..f13d701be91 100644 --- a/packages/server/src/services/tools/index.ts +++ b/packages/server/src/services/tools/index.ts @@ -1,11 +1,12 @@ import { StatusCodes } from 'http-status-codes' -import { getRunningExpressApp } from '../../utils/getRunningExpressApp' -import { Tool, ToolVisibility } from '../../database/entities/Tool' -import { getAppVersion } from '../../utils' +import { Tool,ToolVisibility } from '../../database/entities/Tool' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' +import { getAppVersion } from '../../utils' +import { getRunningExpressApp } from '../../utils/getRunningExpressApp' +import { FLOWISE_METRIC_COUNTERS, FLOWISE_COUNTER_STATUS } from '../../Interface.Metrics' import { IUser } from '../../Interface' -import { IsNull, Like } from 'typeorm' +import { QueryRunner, IsNull, Like } from 'typeorm' const createTool = async (requestBody: any, user: IUser): Promise => { try { @@ -21,6 +22,7 @@ const createTool = async (requestBody: any, user: IUser): Promise => { toolId: dbResponse.id, toolName: dbResponse.name }) + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.TOOL_CREATED, { status: FLOWISE_COUNTER_STATUS.SUCCESS }) return dbResponse } catch (error) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error: toolsService.createTool - ${getErrorMessage(error)}`) @@ -40,7 +42,7 @@ const deleteTool = async (toolId: string, user: IUser): Promise => { } } -const getAllTools = async (user: IUser): Promise => { +const getAllTools = async (user: IUser): Promise => { try { const appServer = getRunningExpressApp() const toolRepo = appServer.AppDataSource.getRepository(Tool) @@ -105,10 +107,55 @@ const updateTool = async (toolId: string, toolBody: any, user: IUser): Promise[], queryRunner?: QueryRunner) => { + try { + const appServer = getRunningExpressApp() + const repository = queryRunner ? queryRunner.manager.getRepository(Tool) : appServer.AppDataSource.getRepository(Tool) + + // step 1 - check whether file tools array is zero + if (newTools.length == 0) return + + // step 2 - check whether ids are duplicate in database + let ids = '(' + let count: number = 0 + const lastCount = newTools.length - 1 + newTools.forEach((newTools) => { + ids += `'${newTools.id}'` + if (lastCount != count) ids += ',' + if (lastCount == count) ids += ')' + count += 1 + }) + + const selectResponse = await repository.createQueryBuilder('t').select('t.id').where(`t.id IN ${ids}`).getMany() + const foundIds = selectResponse.map((response) => { + return response.id + }) + + // step 3 - remove ids that are only duplicate + const prepTools: Partial[] = newTools.map((newTool) => { + let id: string = '' + if (newTool.id) id = newTool.id + if (foundIds.includes(id)) { + newTool.id = undefined + newTool.name += ' (1)' + } + return newTool + }) + + // step 4 - transactional insert array of entities + const insertResponse = await repository.insert(prepTools) + + return insertResponse + } catch (error) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error: toolsService.importTools - ${getErrorMessage(error)}`) + } +} + export default { createTool, deleteTool, getAllTools, getToolById, - updateTool + updateTool, + importTools } diff --git a/packages/server/src/services/upsert-history/index.ts b/packages/server/src/services/upsert-history/index.ts index 72e484b1cb1..f606a7a6571 100644 --- a/packages/server/src/services/upsert-history/index.ts +++ b/packages/server/src/services/upsert-history/index.ts @@ -1,4 +1,4 @@ -import { MoreThanOrEqual, LessThanOrEqual } from 'typeorm' +import { MoreThanOrEqual, LessThanOrEqual, Between } from 'typeorm' import { StatusCodes } from 'http-status-codes' import { getRunningExpressApp } from '../../utils/getRunningExpressApp' import { UpsertHistory } from '../../database/entities/UpsertHistory' @@ -14,26 +14,20 @@ const getAllUpsertHistory = async ( try { const appServer = getRunningExpressApp() - const setDateToStartOrEndOfDay = (dateTimeStr: string, setHours: 'start' | 'end') => { - const date = new Date(dateTimeStr) - if (isNaN(date.getTime())) { - return undefined + let createdDateQuery + if (startDate || endDate) { + if (startDate && endDate) { + createdDateQuery = Between(new Date(startDate), new Date(endDate)) + } else if (startDate) { + createdDateQuery = MoreThanOrEqual(new Date(startDate)) + } else if (endDate) { + createdDateQuery = LessThanOrEqual(new Date(endDate)) } - setHours === 'start' ? date.setHours(0, 0, 0, 0) : date.setHours(23, 59, 59, 999) - return date } - - let fromDate - if (startDate) fromDate = setDateToStartOrEndOfDay(startDate, 'start') - - let toDate - if (endDate) toDate = setDateToStartOrEndOfDay(endDate, 'end') - let upsertHistory = await appServer.AppDataSource.getRepository(UpsertHistory).find({ where: { chatflowid, - ...(fromDate && { date: MoreThanOrEqual(fromDate) }), - ...(toDate && { date: LessThanOrEqual(toDate) }) + date: createdDateQuery }, order: { date: sortOrder === 'DESC' ? 'DESC' : 'ASC' diff --git a/packages/server/src/services/variables/index.ts b/packages/server/src/services/variables/index.ts index f30e08dc3be..a31f6b61359 100644 --- a/packages/server/src/services/variables/index.ts +++ b/packages/server/src/services/variables/index.ts @@ -4,7 +4,7 @@ import { Variable, VariableVisibility } from '../../database/entities/Variable' import { InternalFlowiseError } from '../../errors/internalFlowiseError' import { getErrorMessage } from '../../errors/utils' import { IUser } from '../../Interface' -import { Any, FindOptionsWhere, IsNull, Like } from 'typeorm' +import { QueryRunner, FindOptionsWhere, IsNull, Like } from 'typeorm' const createVariable = async (newVariable: Variable, user: IUser) => { try { @@ -105,10 +105,58 @@ const updateVariable = async (variable: Variable, updatedVariable: Variable) => } } +const importVariables = async (newVariables: Partial[], queryRunner?: QueryRunner): Promise => { + try { + const appServer = getRunningExpressApp() + const repository = queryRunner ? queryRunner.manager.getRepository(Variable) : appServer.AppDataSource.getRepository(Variable) + + // step 1 - check whether array is zero + if (newVariables.length == 0) return + + // step 2 - check whether ids are duplicate in database + let ids = '(' + let count: number = 0 + const lastCount = newVariables.length - 1 + newVariables.forEach((newVariable) => { + ids += `'${newVariable.id}'` + if (lastCount != count) ids += ',' + if (lastCount == count) ids += ')' + count += 1 + }) + + const selectResponse = await repository.createQueryBuilder('v').select('v.id').where(`v.id IN ${ids}`).getMany() + const foundIds = selectResponse.map((response) => { + return response.id + }) + + // step 3 - remove ids that are only duplicate + const prepVariables: Partial[] = newVariables.map((newVariable) => { + let id: string = '' + if (newVariable.id) id = newVariable.id + if (foundIds.includes(id)) { + newVariable.id = undefined + newVariable.name += ' (1)' + } + return newVariable + }) + + // step 4 - transactional insert array of entities + const insertResponse = await repository.insert(prepVariables) + + return insertResponse + } catch (error) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + `Error: variableService.importVariables - ${getErrorMessage(error)}` + ) + } +} + export default { createVariable, deleteVariable, getAllVariables, getVariableById, - updateVariable + updateVariable, + importVariables } diff --git a/packages/server/src/utils/SSEStreamer.ts b/packages/server/src/utils/SSEStreamer.ts new file mode 100644 index 00000000000..a5327bad1f0 --- /dev/null +++ b/packages/server/src/utils/SSEStreamer.ts @@ -0,0 +1,208 @@ +import { Response } from 'express' +import { IServerSideEventStreamer } from 'flowise-components' + +// define a new type that has a client type (INTERNAL or EXTERNAL) and Response type +type Client = { + // future use + clientType: 'INTERNAL' | 'EXTERNAL' + response: Response + // optional property with default value + started?: boolean +} + +export class SSEStreamer implements IServerSideEventStreamer { + clients: { [id: string]: Client } = {} + + addExternalClient(chatId: string, res: Response) { + this.clients[chatId] = { clientType: 'EXTERNAL', response: res, started: false } + } + + addClient(chatId: string, res: Response) { + this.clients[chatId] = { clientType: 'INTERNAL', response: res, started: false } + } + + removeClient(chatId: string) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'end', + data: '[DONE]' + } + client.response.write('message\ndata:' + JSON.stringify(clientResponse) + '\n\n') + client.response.end() + delete this.clients[chatId] + } + } + + streamCustomEvent(chatId: string, eventType: string, data: any) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: eventType, + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + + streamStartEvent(chatId: string, data: string) { + const client = this.clients[chatId] + // prevent multiple start events being streamed to the client + if (client && !client.started) { + const clientResponse = { + event: 'start', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + client.started = true + } + } + + streamTokenEvent(chatId: string, data: string) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'token', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + + streamSourceDocumentsEvent(chatId: string, data: any) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'sourceDocuments', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamArtifactsEvent(chatId: string, data: any) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'artifacts', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamUsedToolsEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'usedTools', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamFileAnnotationsEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'fileAnnotations', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamToolEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'tool', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamAgentReasoningEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'agentReasoning', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamNextAgentEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'nextAgent', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + streamActionEvent(chatId: string, data: any): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'action', + data: data + } + client.response.write('message:\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + + streamAbortEvent(chatId: string): void { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'abort', + data: '[DONE]' + } + client.response.write('message\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + + streamEndEvent(_: string) { + // placeholder for future use + } + + streamErrorEvent(chatId: string, msg: string) { + const client = this.clients[chatId] + if (client) { + const clientResponse = { + event: 'error', + data: msg + } + client.response.write('message\ndata:' + JSON.stringify(clientResponse) + '\n\n') + } + } + + streamMetadataEvent(chatId: string, apiResponse: any) { + const metadataJson: any = {} + if (apiResponse.chatId) { + metadataJson['chatId'] = apiResponse.chatId + } + if (apiResponse.chatMessageId) { + metadataJson['chatMessageId'] = apiResponse.chatMessageId + } + if (apiResponse.question) { + metadataJson['question'] = apiResponse.question + } + if (apiResponse.sessionId) { + metadataJson['sessionId'] = apiResponse.sessionId + } + if (apiResponse.memoryType) { + metadataJson['memoryType'] = apiResponse.memoryType + } + if (apiResponse.followUpPrompts) { + metadataJson['followUpPrompts'] = + typeof apiResponse.followUpPrompts === 'string' ? JSON.parse(apiResponse.followUpPrompts) : apiResponse.followUpPrompts + } + if (apiResponse.flowVariables) { + metadataJson['flowVariables'] = + typeof apiResponse.flowVariables === 'string' ? JSON.parse(apiResponse.flowVariables) : apiResponse.flowVariables + } + if (Object.keys(metadataJson).length > 0) { + this.streamCustomEvent(chatId, 'metadata', metadataJson) + } + } +} diff --git a/packages/server/src/utils/addChatMesage.ts b/packages/server/src/utils/addChatMesage.ts index 775168ec755..395a904ca67 100644 --- a/packages/server/src/utils/addChatMesage.ts +++ b/packages/server/src/utils/addChatMesage.ts @@ -1,3 +1,4 @@ +import { DataSource } from 'typeorm' import { ChatMessage } from '../database/entities/ChatMessage' import { IChatMessage } from '../Interface' import { getRunningExpressApp } from '../utils/getRunningExpressApp' @@ -6,8 +7,8 @@ import { getRunningExpressApp } from '../utils/getRunningExpressApp' * Method that add chat messages. * @param {Partial} chatMessage */ -export const utilAddChatMessage = async (chatMessage: Partial, userId?: string): Promise => { - const appServer = getRunningExpressApp() +export const utilAddChatMessage = async (chatMessage: Partial, appDataSource?: DataSource, userId?: string): Promise => { + const dataSource = appDataSource ?? getRunningExpressApp().AppDataSource const newChatMessage = new ChatMessage() Object.assign(newChatMessage, chatMessage) if (!newChatMessage.createdDate) { @@ -16,7 +17,7 @@ export const utilAddChatMessage = async (chatMessage: Partial, use if (userId) { newChatMessage.userId = userId } - const chatmessage = await appServer.AppDataSource.getRepository(ChatMessage).create(newChatMessage) - const dbResponse = await appServer.AppDataSource.getRepository(ChatMessage).save(chatmessage) + const chatmessage = await dataSource.getRepository(ChatMessage).create(newChatMessage) + const dbResponse = await dataSource.getRepository(ChatMessage).save(chatmessage) return dbResponse } diff --git a/packages/server/src/utils/buildAgentGraph.ts b/packages/server/src/utils/buildAgentGraph.ts index 1b4ddbcf928..979e4edcfdd 100644 --- a/packages/server/src/utils/buildAgentGraph.ts +++ b/packages/server/src/utils/buildAgentGraph.ts @@ -9,9 +9,9 @@ import { ISeqAgentsState, ISeqAgentNode, IUsedTool, - IDocument + IDocument, + IServerSideEventStreamer } from 'flowise-components' -import { Server } from 'socket.io' import { omit, cloneDeep, flatten, uniq } from 'lodash' import { StateGraph, END, START } from '@langchain/langgraph' import { Document } from '@langchain/core/documents' @@ -19,132 +19,79 @@ import { StatusCodes } from 'http-status-codes' import { v4 as uuidv4 } from 'uuid' import { StructuredTool } from '@langchain/core/tools' import { BaseMessage, HumanMessage, AIMessage, AIMessageChunk, ToolMessage } from '@langchain/core/messages' -import { - IChatFlow, - IComponentNodes, - IDepthQueue, - IReactFlowNode, - IReactFlowObject, - IReactFlowEdge, - IMessage, - IncomingInput, - IUser -} from '../Interface' -import { - buildFlow, - getStartingNodes, - getEndingNodes, - constructGraphs, - databaseEntities, - getSessionChatHistory, - getMemorySessionId, - clearSessionMemory -} from '../utils' -import { getRunningExpressApp } from './getRunningExpressApp' +import { IChatFlow, IComponentNodes, IDepthQueue, IReactFlowNode, IReactFlowEdge, IMessage, IncomingInput, IFlowConfig, IUser } from '../Interface' +import { databaseEntities, clearSessionMemory, getAPIOverrideConfig } from '../utils' import { replaceInputsWithConfig, resolveVariables } from '.' import { InternalFlowiseError } from '../errors/internalFlowiseError' import { getErrorMessage } from '../errors/utils' import logger from './logger' +import { Variable } from '../database/entities/Variable' +import { DataSource } from 'typeorm' +import { CachePool } from '../CachePool' /** * Build Agent Graph - * @param {IChatFlow} chatflow - * @param {string} chatId - * @param {string} sessionId - * @param {ICommonObject} incomingInput - * @param {boolean} isInternal - * @param {string} baseURL - * @param {Server} socketIO */ -export const buildAgentGraph = async ( - user: IUser, - chatflow: IChatFlow, - chatId: string, - sessionId: string, - incomingInput: IncomingInput, - isInternal: boolean, - baseURL?: string, - socketIO?: Server -): Promise => { +export const buildAgentGraph = async ({ + agentflow, + flowConfig, + incomingInput, + nodes, + edges, + initializedNodes, + endingNodeIds, + startingNodeIds, + depthQueue, + chatHistory, + uploadedFilesContent, + appDataSource, + componentNodes, + sseStreamer, + shouldStreamResponse, + cachePool, + baseURL, + signal, + user +}: { + agentflow: IChatFlow + flowConfig: IFlowConfig + incomingInput: IncomingInput + nodes: IReactFlowNode[] + edges: IReactFlowEdge[] + initializedNodes: IReactFlowNode[] + endingNodeIds: string[] + startingNodeIds: string[] + depthQueue: IDepthQueue + chatHistory: IMessage[] + uploadedFilesContent: string + appDataSource: DataSource + componentNodes: IComponentNodes + sseStreamer: IServerSideEventStreamer + shouldStreamResponse: boolean + cachePool: CachePool + baseURL: string + signal?: AbortController, + user: IUser +}): Promise => { try { - const appServer = getRunningExpressApp() - const chatflowid = chatflow.id - - /*** Get chatflows and prepare data ***/ - const flowData = chatflow.flowData - const parsedFlowData: IReactFlowObject = JSON.parse(flowData) - const nodes = parsedFlowData.nodes - const edges = parsedFlowData.edges - - /*** Get Ending Node with Directed Graph ***/ - const { graph, nodeDependencies } = constructGraphs(nodes, edges) - const directedGraph = graph - - const endingNodes = getEndingNodes(nodeDependencies, directedGraph, nodes) - - /*** Get Starting Nodes with Reversed Graph ***/ - const constructedObj = constructGraphs(nodes, edges, { isReversed: true }) - const nonDirectedGraph = constructedObj.graph - let startingNodeIds: string[] = [] - let depthQueue: IDepthQueue = {} - const endingNodeIds = endingNodes.map((n) => n.id) - for (const endingNodeId of endingNodeIds) { - const resx = getStartingNodes(nonDirectedGraph, endingNodeId) - startingNodeIds.push(...resx.startingNodeIds) - depthQueue = Object.assign(depthQueue, resx.depthQueue) - } - startingNodeIds = [...new Set(startingNodeIds)] - - /*** Get Memory Node for Chat History ***/ - let chatHistory: IMessage[] = [] - const memoryNode = nodes.find((node) => node.data.name === 'agentMemory') - if (memoryNode) { - chatHistory = await getSessionChatHistory( - chatflowid, - getMemorySessionId(memoryNode, incomingInput, chatId, isInternal), - memoryNode, - appServer.nodesPool.componentNodes, - appServer.AppDataSource, - databaseEntities, - logger, - incomingInput.history - ) - } - - // Initialize nodes like ChatModels, Tools, etc. - const reactFlowNodes: IReactFlowNode[] = await buildFlow({ - user, - startingNodeIds, - reactFlowNodes: nodes, - reactFlowEdges: edges, - graph, - depthQueue, - componentNodes: appServer.nodesPool.componentNodes, - question: incomingInput.question, - chatHistory, - chatId, - sessionId, - chatflowid, - appDataSource: appServer.AppDataSource, - overrideConfig: incomingInput?.overrideConfig, - cachePool: appServer.cachePool, - isUpsert: false, - uploads: incomingInput.uploads, - baseURL - }) + const chatflowid = flowConfig.chatflowid + const chatId = flowConfig.chatId + const sessionId = flowConfig.sessionId + const analytic = agentflow.analytic + const uploads = incomingInput.uploads const options = { chatId, sessionId, chatflowid, logger, - analytic: chatflow.analytic, - appDataSource: appServer.AppDataSource, - databaseEntities: databaseEntities, - cachePool: appServer.cachePool, - uploads: incomingInput.uploads, + analytic, + appDataSource, + databaseEntities, + cachePool, + uploads, baseURL, - signal: new AbortController() + signal: signal ?? new AbortController() } let streamResults @@ -157,10 +104,11 @@ export const buildAgentGraph = async ( let finalAction: IAction = {} let totalSourceDocuments: IDocument[] = [] let totalUsedTools: IUsedTool[] = [] + let totalArtifacts: ICommonObject[] = [] - const workerNodes = reactFlowNodes.filter((node) => node.data.name === 'worker') - const supervisorNodes = reactFlowNodes.filter((node) => node.data.name === 'supervisor') - const seqAgentNodes = reactFlowNodes.filter((node) => node.data.category === 'Sequential Agents') + const workerNodes = initializedNodes.filter((node) => node.data.name === 'worker') + const supervisorNodes = initializedNodes.filter((node) => node.data.name === 'supervisor') + const seqAgentNodes = initializedNodes.filter((node) => node.data.category === 'Sequential Agents') const mapNameToLabel: Record = {} @@ -175,39 +123,43 @@ export const buildAgentGraph = async ( try { if (!seqAgentNodes.length) { - streamResults = await compileMultiAgentsGraph( + streamResults = await compileMultiAgentsGraph({ user, - chatflow, + agentflow, + appDataSource, mapNameToLabel, - reactFlowNodes, - endingNodeIds, - appServer.nodesPool.componentNodes, + reactFlowNodes: initializedNodes, + workerNodeIds: endingNodeIds, + componentNodes, options, startingNodeIds, - incomingInput.question, - incomingInput.history, + question: incomingInput.question, + prependHistoryMessages: incomingInput.history, chatHistory, - incomingInput?.overrideConfig, - sessionId || chatId, - seqAgentNodes.some((node) => node.data.inputs?.summarization) - ) + overrideConfig: incomingInput?.overrideConfig, + threadId: sessionId || chatId, + summarization: seqAgentNodes.some((node) => node.data.inputs?.summarization), + uploadedFilesContent + }) } else { isSequential = true - streamResults = await compileSeqAgentsGraph( + streamResults = await compileSeqAgentsGraph({ user, depthQueue, - chatflow, - reactFlowNodes, - edges, - appServer.nodesPool.componentNodes, + agentflow, + appDataSource, + reactFlowNodes: initializedNodes, + reactFlowEdges: edges, + componentNodes, options, - incomingInput.question, - incomingInput.history, + question: incomingInput.question, + prependHistoryMessages: incomingInput.history, chatHistory, - incomingInput?.overrideConfig, - sessionId || chatId, - incomingInput.action - ) + overrideConfig: incomingInput?.overrideConfig, + threadId: sessionId || chatId, + action: incomingInput.action, + uploadedFilesContent + }) } if (streamResults) { @@ -226,6 +178,9 @@ export const buildAgentGraph = async ( const sourceDocuments = output[agentName]?.messages ? output[agentName].messages.map((msg: BaseMessage) => msg.additional_kwargs?.sourceDocuments) : [] + const artifacts = output[agentName]?.messages + ? output[agentName].messages.map((msg: BaseMessage) => msg.additional_kwargs?.artifacts) + : [] const messages = output[agentName]?.messages ? output[agentName].messages.map((msg: BaseMessage) => (typeof msg === 'string' ? msg : msg.content)) : [] @@ -245,6 +200,11 @@ export const buildAgentGraph = async ( if (cleanedDocs.length) totalSourceDocuments.push(...cleanedDocs) } + if (artifacts && artifacts.length) { + const cleanedArtifacts = artifacts.filter((artifact: ICommonObject) => artifact) + if (cleanedArtifacts.length) totalArtifacts.push(...cleanedArtifacts) + } + /* * Check if the next node is a condition node, if yes, then add the agent reasoning of the condition node */ @@ -254,7 +214,7 @@ export const buildAgentGraph = async ( ) inputEdges.forEach((edge) => { - const parentNode = reactFlowNodes.find((nd) => nd.id === edge.source) + const parentNode = initializedNodes.find((nd) => nd.id === edge.source) if (parentNode) { if (parentNode.data.name.includes('seqCondition')) { const newMessages = messages.slice(0, -1) @@ -278,6 +238,7 @@ export const buildAgentGraph = async ( instructions: output[agentName]?.instructions, usedTools: flatten(usedTools) as IUsedTool[], sourceDocuments: flatten(sourceDocuments) as Document[], + artifacts: flatten(artifacts) as ICommonObject[], state, nodeName: isSequential ? mapNameToLabel[agentName].nodeName : undefined, nodeId @@ -292,28 +253,31 @@ export const buildAgentGraph = async ( ? output[agentName].messages[output[agentName].messages.length - 1].content : lastWorkerResult - if (socketIO && incomingInput.socketIOClientId) { + if (shouldStreamResponse) { if (!isStreamingStarted) { isStreamingStarted = true - socketIO.to(incomingInput.socketIOClientId).emit('start', agentReasoning) + if (sseStreamer) { + sseStreamer.streamStartEvent(chatId, agentReasoning) + } } - socketIO.to(incomingInput.socketIOClientId).emit('agentReasoning', agentReasoning) + if (sseStreamer) { + sseStreamer.streamAgentReasoningEvent(chatId, agentReasoning) + } // Send loading next agent indicator if (reasoning.next && reasoning.next !== 'FINISH' && reasoning.next !== 'END') { - socketIO - .to(incomingInput.socketIOClientId) - .emit('nextAgent', mapNameToLabel[reasoning.next].label || reasoning.next) + if (sseStreamer) { + sseStreamer.streamNextAgentEvent(chatId, mapNameToLabel[reasoning.next]?.label || reasoning.next) + } } } } } else { finalResult = output.__end__.messages.length ? output.__end__.messages.pop()?.content : '' if (Array.isArray(finalResult)) finalResult = output.__end__.instructions - - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('token', finalResult) + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamTokenEvent(chatId, finalResult) } } } @@ -326,9 +290,8 @@ export const buildAgentGraph = async ( if (!isSequential && !finalResult) { if (lastWorkerResult) finalResult = lastWorkerResult else if (finalSummarization) finalResult = finalSummarization - - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('token', finalResult) + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamTokenEvent(chatId, finalResult) } } @@ -339,11 +302,10 @@ export const buildAgentGraph = async ( if (isSequential && !finalResult && agentReasoning.length) { const lastMessages = agentReasoning[agentReasoning.length - 1].messages const lastAgentReasoningMessage = lastMessages[lastMessages.length - 1] - // If last message is an AI Message with tool calls, that means the last node was interrupted if (lastMessageRaw.tool_calls && lastMessageRaw.tool_calls.length > 0) { // The last node that got interrupted - const node = reactFlowNodes.find((node) => node.id === lastMessageRaw.additional_kwargs.nodeId) + const node = initializedNodes.find((node) => node.id === lastMessageRaw.additional_kwargs.nodeId) // Find the next tool node that is connected to the interrupted node, to get the approve/reject button text const tooNodeId = edges.find( @@ -351,11 +313,15 @@ export const buildAgentGraph = async ( edge.target.includes('seqToolNode') && edge.source === (lastMessageRaw.additional_kwargs && lastMessageRaw.additional_kwargs.nodeId) )?.target - const connectedToolNode = reactFlowNodes.find((node) => node.id === tooNodeId) + const connectedToolNode = initializedNodes.find((node) => node.id === tooNodeId) // Map raw tool calls to used tools, to be shown on interrupted message const mappedToolCalls = lastMessageRaw.tool_calls.map((toolCall) => { - return { tool: toolCall.name, toolInput: toolCall.args, toolOutput: '' } + return { + tool: toolCall.name, + toolInput: toolCall.args, + toolOutput: '' + } }) // Emit the interrupt message to the client @@ -376,49 +342,56 @@ export const buildAgentGraph = async ( } finalAction = { id: uuidv4(), - mapping: { approve: approveButtonText, reject: rejectButtonText, toolCalls: lastMessageRaw.tool_calls }, + mapping: { + approve: approveButtonText, + reject: rejectButtonText, + toolCalls: lastMessageRaw.tool_calls + }, elements: [ { type: 'approve-button', label: approveButtonText }, { type: 'reject-button', label: rejectButtonText } ] } - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('token', finalResult) - socketIO.to(incomingInput.socketIOClientId).emit('action', finalAction) + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamTokenEvent(chatId, finalResult) + sseStreamer.streamActionEvent(chatId, finalAction) } } totalUsedTools.push(...mappedToolCalls) } else if (lastAgentReasoningMessage) { finalResult = lastAgentReasoningMessage - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('token', finalResult) + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamTokenEvent(chatId, finalResult) } } } totalSourceDocuments = uniq(flatten(totalSourceDocuments)) totalUsedTools = uniq(flatten(totalUsedTools)) + totalArtifacts = uniq(flatten(totalArtifacts)) - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('usedTools', totalUsedTools) - socketIO.to(incomingInput.socketIOClientId).emit('sourceDocuments', totalSourceDocuments) - socketIO.to(incomingInput.socketIOClientId).emit('end') + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamUsedToolsEvent(chatId, totalUsedTools) + sseStreamer.streamSourceDocumentsEvent(chatId, totalSourceDocuments) + sseStreamer.streamArtifactsEvent(chatId, totalArtifacts) + sseStreamer.streamEndEvent(chatId) } return { finalResult, finalAction, sourceDocuments: totalSourceDocuments, + artifacts: totalArtifacts, usedTools: totalUsedTools, agentReasoning } } } catch (e) { // clear agent memory because checkpoints were saved during runtime - await clearSessionMemory(nodes, appServer.nodesPool.componentNodes, chatId, appServer.AppDataSource, sessionId) + await clearSessionMemory(nodes, componentNodes, chatId, appDataSource, sessionId) if (getErrorMessage(e).includes('Aborted')) { - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('abort') + if (shouldStreamResponse && sseStreamer) { + sseStreamer.streamAbortEvent(chatId) } return { finalResult, agentReasoning } } @@ -431,37 +404,45 @@ export const buildAgentGraph = async ( } } -/** - * Compile Multi Agents Graph - * @param {IChatFlow} chatflow - * @param {Record} mapNameToLabel - * @param {IReactFlowNode[]} reactflowNodes - * @param {string[]} workerNodeIds - * @param {IComponentNodes} componentNodes - * @param {ICommonObject} options - * @param {string[]} startingNodeIds - * @param {string} question - * @param {ICommonObject} overrideConfig - * @param {string} threadId - * @param {boolean} summarization - */ -const compileMultiAgentsGraph = async ( - user: IUser, - chatflow: IChatFlow, - mapNameToLabel: Record, - reactflowNodes: IReactFlowNode[] = [], - workerNodeIds: string[], - componentNodes: IComponentNodes, - options: ICommonObject, - startingNodeIds: string[], - question: string, - prependHistoryMessages: IMessage[] = [], - chatHistory: IMessage[] = [], - overrideConfig?: ICommonObject, - threadId?: string, +type MultiAgentsGraphParams = { + user: IUser + agentflow: IChatFlow + appDataSource: DataSource + mapNameToLabel: Record + reactFlowNodes: IReactFlowNode[] + workerNodeIds: string[] + componentNodes: IComponentNodes + options: ICommonObject + startingNodeIds: string[] + question: string + prependHistoryMessages?: IMessage[] + chatHistory?: IMessage[] + overrideConfig?: ICommonObject + threadId?: string summarization?: boolean -) => { - const appServer = getRunningExpressApp() + uploadedFilesContent?: string +} + +const compileMultiAgentsGraph = async (params: MultiAgentsGraphParams) => { + const { + agentflow, + appDataSource, + mapNameToLabel, + reactFlowNodes, + workerNodeIds, + componentNodes, + options, + prependHistoryMessages = [], + chatHistory = [], + overrideConfig = {}, + threadId, + summarization = false, + uploadedFilesContent, + user + } = params + + let question = params.question + const channels: ITeamState = { messages: { value: (x: BaseMessage[], y: BaseMessage[]) => x.concat(y), @@ -479,7 +460,11 @@ const compileMultiAgentsGraph = async ( channels }) - const workerNodes = reactflowNodes.filter((node) => workerNodeIds.includes(node.data.id)) + const workerNodes = reactFlowNodes.filter((node) => workerNodeIds.includes(node.data.id)) + + /*** Get API Config ***/ + const availableVariables = await appDataSource.getRepository(Variable).find({ where: { userId: user.id } }) + const { nodeOverrides, variableOverrides, apiOverrideStatus } = getAPIOverrideConfig(agentflow) let supervisorWorkers: { [key: string]: IMultiAgentNode[] } = {} @@ -490,15 +475,18 @@ const compileMultiAgentsGraph = async ( const newNodeInstance = new nodeModule.nodeClass() let flowNodeData = cloneDeep(workerNode.data) - if (overrideConfig) flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig) + if (overrideConfig && apiOverrideStatus) + flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig, nodeOverrides, variableOverrides) flowNodeData = await resolveVariables( user, - appServer.AppDataSource, flowNodeData, - reactflowNodes, + reactFlowNodes, question, chatHistory, - overrideConfig + overrideConfig, + uploadedFilesContent, + availableVariables, + variableOverrides ) try { @@ -520,7 +508,7 @@ const compileMultiAgentsGraph = async ( // Init supervisor nodes for (const supervisor in supervisorWorkers) { const supervisorInputLabel = mapNameToLabel[supervisor].label - const supervisorNode = reactflowNodes.find((node) => supervisorInputLabel === node.data.inputs?.supervisorName) + const supervisorNode = reactFlowNodes.find((node) => supervisorInputLabel === node.data.inputs?.supervisorName) if (!supervisorNode) continue const nodeInstanceFilePath = componentNodes[supervisorNode.data.name].filePath as string @@ -529,15 +517,18 @@ const compileMultiAgentsGraph = async ( let flowNodeData = cloneDeep(supervisorNode.data) - if (overrideConfig) flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig) + if (overrideConfig && apiOverrideStatus) + flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig, nodeOverrides, variableOverrides) flowNodeData = await resolveVariables( user, - appServer.AppDataSource, flowNodeData, - reactflowNodes, + reactFlowNodes, question, chatHistory, - overrideConfig + overrideConfig, + uploadedFilesContent, + availableVariables, + variableOverrides ) if (flowNodeData.inputs) flowNodeData.inputs.workerNodes = supervisorWorkers[supervisor] @@ -576,15 +567,7 @@ const compileMultiAgentsGraph = async ( //@ts-ignore workflowGraph.addEdge(START, supervisorResult.name) - - // Add agentflow to pool ;(workflowGraph as any).signal = options.signal - appServer.chatflowPool.add( - `${chatflow.id}_${options.chatId}`, - workflowGraph as any, - reactflowNodes.filter((node) => startingNodeIds.includes(node.id)), - overrideConfig - ) // Get memory let memory = supervisorResult?.checkpointMemory @@ -600,19 +583,32 @@ const compileMultiAgentsGraph = async ( if (prependHistoryMessages.length === chatHistory.length) { for (const message of prependHistoryMessages) { if (message.role === 'apiMessage' || message.type === 'apiMessage') { - prependMessages.push(new AIMessage({ content: message.message || message.content || '' })) + prependMessages.push( + new AIMessage({ + content: message.message || message.content || '' + }) + ) } else if (message.role === 'userMessage' || message.type === 'userMessage') { - prependMessages.push(new HumanMessage({ content: message.message || message.content || '' })) + prependMessages.push( + new HumanMessage({ + content: message.message || message.content || '' + }) + ) } } } // Return stream result as we should only have 1 supervisor + const finalQuestion = uploadedFilesContent ? `${uploadedFilesContent}\n\n${question}` : question return await graph.stream( { - messages: [...prependMessages, new HumanMessage({ content: question })] + messages: [...prependMessages, new HumanMessage({ content: finalQuestion })] }, - { recursionLimit: supervisorResult?.recursionLimit ?? 100, callbacks: [loggerHandler, ...callbacks], configurable: config } + { + recursionLimit: supervisorResult?.recursionLimit ?? 100, + callbacks: [loggerHandler, ...callbacks], + configurable: config + } ) } catch (e) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error initialize supervisor nodes - ${getErrorMessage(e)}`) @@ -620,36 +616,43 @@ const compileMultiAgentsGraph = async ( } } -/** - * Compile Seq Agents Graph - * @param {IDepthQueue} depthQueue - * @param {IChatFlow} chatflow - * @param {IReactFlowNode[]} reactflowNodes - * @param {IReactFlowEdge[]} reactflowEdges - * @param {IComponentNodes} componentNodes - * @param {ICommonObject} options - * @param {string} question - * @param {IMessage[]} chatHistory - * @param {ICommonObject} overrideConfig - * @param {string} threadId - * @param {IAction} action - */ -const compileSeqAgentsGraph = async ( - user: IUser, - depthQueue: IDepthQueue, - chatflow: IChatFlow, - reactflowNodes: IReactFlowNode[] = [], - reactflowEdges: IReactFlowEdge[] = [], - componentNodes: IComponentNodes, - options: ICommonObject, - question: string, - prependHistoryMessages: IMessage[] = [], - chatHistory: IMessage[] = [], - overrideConfig?: ICommonObject, - threadId?: string, +type SeqAgentsGraphParams = { + user:IUser + depthQueue: IDepthQueue + agentflow: IChatFlow + appDataSource: DataSource + reactFlowNodes: IReactFlowNode[] + reactFlowEdges: IReactFlowEdge[] + componentNodes: IComponentNodes + options: ICommonObject + question: string + prependHistoryMessages?: IMessage[] + chatHistory?: IMessage[] + overrideConfig?: ICommonObject + threadId?: string action?: IAction -) => { - const appServer = getRunningExpressApp() + uploadedFilesContent?: string +} + +const compileSeqAgentsGraph = async (params: SeqAgentsGraphParams) => { + const { + depthQueue, + agentflow, + appDataSource, + reactFlowNodes, + reactFlowEdges, + componentNodes, + options, + prependHistoryMessages = [], + chatHistory = [], + overrideConfig = {}, + threadId, + action, + uploadedFilesContent, + user + } = params + + let question = params.question let channels: ISeqAgentsState = { messages: { @@ -659,7 +662,7 @@ const compileSeqAgentsGraph = async ( } // Get state - const seqStateNode = reactflowNodes.find((node: IReactFlowNode) => node.data.name === 'seqState') + const seqStateNode = reactFlowNodes.find((node: IReactFlowNode) => node.data.name === 'seqState') if (seqStateNode) { channels = { ...seqStateNode.data.instance.node, @@ -673,13 +676,13 @@ const compileSeqAgentsGraph = async ( }) /*** Validate Graph ***/ - const startAgentNodes: IReactFlowNode[] = reactflowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqStart') + const startAgentNodes: IReactFlowNode[] = reactFlowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqStart') if (!startAgentNodes.length) throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, 'Start node not found') if (startAgentNodes.length > 1) throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, 'Graph should have only one start node') - const endAgentNodes: IReactFlowNode[] = reactflowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqEnd') - const loopNodes: IReactFlowNode[] = reactflowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqLoop') + const endAgentNodes: IReactFlowNode[] = reactFlowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqEnd') + const loopNodes: IReactFlowNode[] = reactFlowNodes.filter((node: IReactFlowNode) => node.data.name === 'seqLoop') if (!endAgentNodes.length && !loopNodes.length) { throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, 'Graph should have at least one End/Loop node') } @@ -692,21 +695,28 @@ const compileSeqAgentsGraph = async ( let bindModel: Record = {} let interruptToolNodeNames = [] + /*** Get API Config ***/ + const availableVariables = await appDataSource.getRepository(Variable).find({ where: { userId: user.id } }) + const { nodeOverrides, variableOverrides, apiOverrideStatus } = getAPIOverrideConfig(agentflow) + const initiateNode = async (node: IReactFlowNode) => { const nodeInstanceFilePath = componentNodes[node.data.name].filePath as string const nodeModule = await import(nodeInstanceFilePath) const newNodeInstance = new nodeModule.nodeClass() flowNodeData = cloneDeep(node.data) - if (overrideConfig) flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig) + if (overrideConfig && apiOverrideStatus) + flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig, nodeOverrides, variableOverrides) flowNodeData = await resolveVariables( user, - appServer.AppDataSource, flowNodeData, - reactflowNodes, + reactFlowNodes, question, chatHistory, - overrideConfig + overrideConfig, + uploadedFilesContent, + availableVariables, + variableOverrides ) const seqAgentNode: ISeqAgentNode = await newNodeInstance.init(flowNodeData, question, options) @@ -723,16 +733,16 @@ const compileSeqAgentsGraph = async ( * 2.) With the interruptedRouteMapping object, avoid adding conditional edges to the Interrupted Agent for the nodes that are already interrupted by tools. It will be separately added from the function - agentInterruptToolFunc */ const processInterruptedRouteMapping = (conditionNodeId: string) => { - const conditionEdges = reactflowEdges.filter((edge) => edge.source === conditionNodeId) ?? [] + const conditionEdges = reactFlowEdges.filter((edge) => edge.source === conditionNodeId) ?? [] for (const conditionEdge of conditionEdges) { const nextNodeId = conditionEdge.target const conditionNodeOutputAnchorId = conditionEdge.sourceHandle - const nextNode = reactflowNodes.find((node) => node.id === nextNodeId) + const nextNode = reactFlowNodes.find((node) => node.id === nextNodeId) if (!nextNode) continue - const conditionNode = reactflowNodes.find((node) => node.id === conditionNodeId) + const conditionNode = reactFlowNodes.find((node) => node.id === conditionNodeId) if (!conditionNode) continue const outputAnchors = conditionNode?.data.outputAnchors @@ -763,13 +773,13 @@ const compileSeqAgentsGraph = async ( * } */ const prepareConditionalEdges = (nodeId: string, nodeInstance: ISeqAgentNode) => { - const conditionEdges = reactflowEdges.filter((edge) => edge.target === nodeId && edge.source.includes('seqCondition')) ?? [] + const conditionEdges = reactFlowEdges.filter((edge) => edge.target === nodeId && edge.source.includes('seqCondition')) ?? [] for (const conditionEdge of conditionEdges) { const conditionNodeId = conditionEdge.source const conditionNodeOutputAnchorId = conditionEdge.sourceHandle - const conditionNode = reactflowNodes.find((node) => node.id === conditionNodeId) + const conditionNode = reactFlowNodes.find((node) => node.id === conditionNodeId) const outputAnchors = conditionNode?.data.outputAnchors if (!outputAnchors || !outputAnchors.length || !outputAnchors[0].options) continue @@ -782,7 +792,10 @@ const compileSeqAgentsGraph = async ( if (Object.prototype.hasOwnProperty.call(conditionalEdges, conditionNodeId)) { conditionalEdges[conditionNodeId] = { ...conditionalEdges[conditionNodeId], - nodes: { ...conditionalEdges[conditionNodeId].nodes, [conditionOutputAnchorLabel]: nodeInstance.name } + nodes: { + ...conditionalEdges[conditionNodeId].nodes, + [conditionOutputAnchorLabel]: nodeInstance.name + } } } else { conditionalEdges[conditionNodeId] = { @@ -803,7 +816,10 @@ const compileSeqAgentsGraph = async ( if (Object.prototype.hasOwnProperty.call(conditionalToolNodes, predecessorAgent.id)) { const toolNodes = conditionalToolNodes[predecessorAgent.id].toolNodes toolNodes.push(toolNodeInstance) - conditionalToolNodes[predecessorAgent.id] = { source: predecessorAgent, toolNodes } + conditionalToolNodes[predecessorAgent.id] = { + source: predecessorAgent, + toolNodes + } } else { conditionalToolNodes[predecessorAgent.id] = { source: predecessorAgent, @@ -820,11 +836,11 @@ const compileSeqAgentsGraph = async ( /*** Start processing every Agent nodes ***/ for (const agentNodeId of getSortedDepthNodes(depthQueue)) { - const agentNode = reactflowNodes.find((node) => node.id === agentNodeId) + const agentNode = reactFlowNodes.find((node) => node.id === agentNodeId) if (!agentNode) continue - const eligibleSeqNodes = ['seqAgent', 'seqEnd', 'seqLoop', 'seqToolNode', 'seqLLMNode'] - const nodesToAdd = ['seqAgent', 'seqToolNode', 'seqLLMNode'] + const eligibleSeqNodes = ['seqAgent', 'seqEnd', 'seqLoop', 'seqToolNode', 'seqLLMNode', 'seqCustomFunction', 'seqExecuteFlow'] + const nodesToAdd = ['seqAgent', 'seqToolNode', 'seqLLMNode', 'seqCustomFunction', 'seqExecuteFlow'] if (eligibleSeqNodes.includes(agentNode.data.name)) { try { @@ -842,8 +858,8 @@ const compileSeqAgentsGraph = async ( if (agentInstance.type === 'agent' && agentNode.data.inputs?.interrupt) { interruptToolNodeNames.push(agentInstance.agentInterruptToolNode.name) - const nextNodeId = reactflowEdges.find((edge) => edge.source === agentNode.id)?.target - const nextNode = reactflowNodes.find((node) => node.id === nextNodeId) + const nextNodeId = reactFlowEdges.find((edge) => edge.source === agentNode.id)?.target + const nextNode = reactFlowNodes.find((node) => node.id === nextNodeId) let nextNodeSeqAgentName = '' if (nextNodeId && nextNode) { @@ -933,11 +949,11 @@ const compileSeqAgentsGraph = async ( /*** Add conditional edges to graph for condition nodes ***/ for (const conditionNodeId in conditionalEdges) { - const startConditionEdges = reactflowEdges.filter((edge) => edge.target === conditionNodeId) + const startConditionEdges = reactFlowEdges.filter((edge) => edge.target === conditionNodeId) if (!startConditionEdges.length) continue for (const startConditionEdge of startConditionEdges) { - const startConditionNode = reactflowNodes.find((node) => node.id === startConditionEdge.source) + const startConditionNode = reactFlowNodes.find((node) => node.id === startConditionEdge.source) if (!startConditionNode) continue seqGraph.addConditionalEdges( startConditionNode.data.instance.name, @@ -979,21 +995,17 @@ const compileSeqAgentsGraph = async ( ) } - /*** Add agentflow to pool ***/ ;(seqGraph as any).signal = options.signal - appServer.chatflowPool.add( - `${chatflow.id}_${options.chatId}`, - seqGraph as any, - reactflowNodes.filter((node) => startAgentNodes.map((nd) => nd.id).includes(node.id)), - overrideConfig - ) /*** Get memory ***/ - const startNode = reactflowNodes.find((node: IReactFlowNode) => node.data.name === 'seqStart') + const startNode = reactFlowNodes.find((node: IReactFlowNode) => node.data.name === 'seqStart') let memory = startNode?.data.instance?.checkpointMemory try { - const graph = seqGraph.compile({ checkpointer: memory, interruptBefore: interruptToolNodeNames as any }) + const graph = seqGraph.compile({ + checkpointer: memory, + interruptBefore: interruptToolNodeNames as any + }) const loggerHandler = new ConsoleCallbackHandler(logger) const callbacks = await additionalCallbacks(flowNodeData as any, options) @@ -1004,15 +1016,24 @@ const compileSeqAgentsGraph = async ( if (prependHistoryMessages.length === chatHistory.length) { for (const message of prependHistoryMessages) { if (message.role === 'apiMessage' || message.type === 'apiMessage') { - prependMessages.push(new AIMessage({ content: message.message || message.content || '' })) + prependMessages.push( + new AIMessage({ + content: message.message || message.content || '' + }) + ) } else if (message.role === 'userMessage' || message.type === 'userMessage') { - prependMessages.push(new HumanMessage({ content: message.message || message.content || '' })) + prependMessages.push( + new HumanMessage({ + content: message.message || message.content || '' + }) + ) } } } + const finalQuestion = uploadedFilesContent ? `${uploadedFilesContent}\n\n${question}` : question let humanMsg: { messages: HumanMessage[] | ToolMessage[] } | null = { - messages: [...prependMessages, new HumanMessage({ content: question })] + messages: [...prependMessages, new HumanMessage({ content: finalQuestion })] } if (action && action.mapping && question === action.mapping.approve) { @@ -1029,7 +1050,10 @@ const compileSeqAgentsGraph = async ( }) } } - return await graph.stream(humanMsg, { callbacks: [loggerHandler, ...callbacks], configurable: config }) + return await graph.stream(humanMsg, { + callbacks: [loggerHandler, ...callbacks], + configurable: config + }) } catch (e) { logger.error('Error compile graph', e) throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, `Error compile graph - ${getErrorMessage(e)}`) diff --git a/packages/server/src/utils/buildChatflow.ts b/packages/server/src/utils/buildChatflow.ts index bf156fc72b1..df360f833c7 100644 --- a/packages/server/src/utils/buildChatflow.ts +++ b/packages/server/src/utils/buildChatflow.ts @@ -1,5 +1,21 @@ import { Request } from 'express' -import { IFileUpload, convertSpeechToText, ICommonObject, addSingleFileToStorage, addArrayFilesToStorage } from 'flowise-components' +import * as path from 'path' +import { DataSource } from 'typeorm' +import { v4 as uuidv4 } from 'uuid' +import { omit } from 'lodash' +import { + IFileUpload, + convertSpeechToText, + ICommonObject, + addSingleFileToStorage, + generateFollowUpPrompts, + IAction, + addArrayFilesToStorage, + mapMimeTypeToInputField, + mapExtToInputField, + getFileFromUpload, + removeSpecificFileFromUpload +} from 'flowise-components' import { StatusCodes } from 'http-status-codes' import { IncomingInput, @@ -8,18 +24,24 @@ import { IReactFlowObject, IReactFlowNode, IDepthQueue, - chatType, + ChatType, IChatMessage, - IChatFlow, - IReactFlowEdge, - IUser + IUser, + IExecuteFlowParams, + IFlowConfig, + IComponentNodes, + IVariable, + INodeOverrides, + IVariableOverride, + MODE } from '../Interface' import { InternalFlowiseError } from '../errors/internalFlowiseError' +import { databaseEntities } from '.' import { ChatFlow } from '../database/entities/ChatFlow' -import { Server } from 'socket.io' +import { ChatMessage } from '../database/entities/ChatMessage' +import { Variable } from '../database/entities/Variable' import { getRunningExpressApp } from '../utils/getRunningExpressApp' import { - mapMimeTypeToInputField, isFlowValidForStream, buildFlow, getTelemetryFlowObj, @@ -29,597 +51,884 @@ import { findMemoryNode, replaceInputsWithConfig, getStartingNodes, - isStartNodeDependOnInput, getMemorySessionId, - isSameOverrideConfig, getEndingNodes, - constructGraphs + constructGraphs, + getAPIOverrideConfig } from '../utils' -import { utilValidateKey } from './validateKey' -import { databaseEntities } from '.' -import { v4 as uuidv4 } from 'uuid' -import { omit } from 'lodash' -import * as fs from 'fs' +import { validateChatflowAPIKey } from './validateKey' import logger from './logger' import { utilAddChatMessage } from './addChatMesage' import { buildAgentGraph } from './buildAgentGraph' import { getErrorMessage } from '../errors/utils' -import { ChatMessage } from '../database/entities/ChatMessage' -import { IAction } from 'flowise-components' -import checkOwnership from './checkOwnership' +import { FLOWISE_METRIC_COUNTERS, FLOWISE_COUNTER_STATUS, IMetricsProvider } from '../Interface.Metrics' +import { OMIT_QUEUE_JOB_DATA } from './constants' import PlansService from '../services/plans' -import { Chat } from '../database/entities/Chat' -import { validateNodeConnections } from './validateNodeConnections' -/** - * Build Chatflow - * @param {Request} req - * @param {Server} socketIO - * @param {boolean} isInternal +/* + * Initialize the ending node to be executed */ -export const utilBuildChatflow = async (req: Request, socketIO?: Server, isInternal: boolean = false): Promise => { - try { - const appServer = getRunningExpressApp() - const chatflowid = req.params.id - - const httpProtocol = req.get('x-forwarded-proto') || req.protocol - const baseURL = `${httpProtocol}://${req.get('host')}` +const initEndingNode = async ({ + user, + endingNodeIds, + componentNodes, + reactFlowNodes, + incomingInput, + flowConfig, + uploadedFilesContent, + availableVariables, + apiOverrideStatus, + nodeOverrides, + variableOverrides +}: { + user: IUser + endingNodeIds: string[] + componentNodes: IComponentNodes + reactFlowNodes: IReactFlowNode[] + incomingInput: IncomingInput + flowConfig: IFlowConfig + uploadedFilesContent: string + availableVariables: IVariable[] + apiOverrideStatus: boolean + nodeOverrides: INodeOverrides + variableOverrides: IVariableOverride[] +}): Promise<{ endingNodeData: INodeData; endingNodeInstance: any }> => { + const question = incomingInput.question + const chatHistory = flowConfig.chatHistory + const sessionId = flowConfig.sessionId + + const nodeToExecute = + endingNodeIds.length === 1 + ? reactFlowNodes.find((node: IReactFlowNode) => endingNodeIds[0] === node.id) + : reactFlowNodes[reactFlowNodes.length - 1] + + if (!nodeToExecute) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Node not found`) + } - let incomingInput: IncomingInput = req.body - let nodeToExecuteData: INodeData - const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ - id: chatflowid - }) - if (!chatflow) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) - } + if (incomingInput.overrideConfig && apiOverrideStatus) { + nodeToExecute.data = replaceInputsWithConfig(nodeToExecute.data, incomingInput.overrideConfig, nodeOverrides, variableOverrides) + } - const chatId = incomingInput.chatId ?? incomingInput.overrideConfig?.sessionId ?? uuidv4() - const userMessageDateTime = new Date() + const reactFlowNodeData: INodeData = await resolveVariables( + user, + nodeToExecute.data, + reactFlowNodes, + question, + chatHistory, + flowConfig, + uploadedFilesContent, + availableVariables, + variableOverrides + ) + + logger.debug(`[server]: Running ${reactFlowNodeData.label} (${reactFlowNodeData.id})`) + + const nodeInstanceFilePath = componentNodes[reactFlowNodeData.name].filePath as string + const nodeModule = await import(nodeInstanceFilePath) + const nodeInstance = new nodeModule.nodeClass({ sessionId }) + + return { endingNodeData: reactFlowNodeData, endingNodeInstance: nodeInstance } +} - const chatRepository = appServer.AppDataSource.getRepository(Chat) +/* + * Get chat history from memory node + * This is used to fill in the {{chat_history}} variable if it is used in the Format Prompt Value + */ +const getChatHistory = async ({ + endingNodes, + nodes, + chatflowid, + appDataSource, + componentNodes, + incomingInput, + chatId, + isInternal, + isAgentFlow +}: { + endingNodes: IReactFlowNode[] + nodes: IReactFlowNode[] + chatflowid: string + appDataSource: DataSource + componentNodes: IComponentNodes + incomingInput: IncomingInput + chatId: string + isInternal: boolean + isAgentFlow: boolean +}): Promise => { + const prependMessages = incomingInput.history ?? [] + let chatHistory: IMessage[] = [] + + if (isAgentFlow) { + const startNode = nodes.find((node) => node.data.name === 'seqStart') + if (!startNode?.data?.inputs?.memory) return [] + + const memoryNodeId = startNode.data.inputs.memory.split('.')[0].replace('{{', '') + const memoryNode = nodes.find((node) => node.data.id === memoryNodeId) + + if (memoryNode) { + chatHistory = await getSessionChatHistory( + chatflowid, + getMemorySessionId(memoryNode, incomingInput, chatId, isInternal), + memoryNode, + componentNodes, + appDataSource, + databaseEntities, + logger, + prependMessages + ) + } + return chatHistory + } - let chat = await chatRepository.findOne({ where: { id: chatId } }) + /* In case there are multiple ending nodes, get the memory from the last available ending node + * By right, in each flow, there should only be one memory node + */ + for (const endingNode of endingNodes) { + const endingNodeData = endingNode.data + if (!endingNodeData.inputs?.memory) continue - if (!chat) { - const chatData = { - id: chatId, - title: incomingInput.question, - chatflowChatId: chatId, - chatflow: { id: chatflowid }, - owner: { id: req.user?.id }, - ownerId: req.user?.id, - organizationId: req.user?.organizationId - } + const memoryNodeId = endingNodeData.inputs?.memory.split('.')[0].replace('{{', '') + const memoryNode = nodes.find((node) => node.data.id === memoryNodeId) - chat = await chatRepository.save(chatData) + if (!memoryNode) continue - if (socketIO && incomingInput.socketIOClientId) { - socketIO.to(incomingInput.socketIOClientId).emit('newChat', { - chat: { - id: chat.id, - title: chat.title, - chatflowChatId: chat.chatflowChatId, - createdDate: chat.createdDate - } - }) - } - } + chatHistory = await getSessionChatHistory( + chatflowid, + getMemorySessionId(memoryNode, incomingInput, chatId, isInternal), + memoryNode, + componentNodes, + appDataSource, + databaseEntities, + logger, + prependMessages + ) + } - if (!isInternal && !chatflow?.isPublic) { - const isOwner = await checkOwnership(chatflow, req.user) - const isKeyValidated = await utilValidateKey(req, chatflow) - if (!isOwner && !isKeyValidated) { - throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) - } - } + return chatHistory +} - if (!chatflow.userId || !chatflow.organizationId) { - throw new InternalFlowiseError( - StatusCodes.INTERNAL_SERVER_ERROR, - `Chatflow ${chatflowid} does not have a user or organization associated with it` - ) +/** + * Show output of setVariable nodes + * @param reactFlowNodes + * @returns {Record} + */ +const getSetVariableNodesOutput = (reactFlowNodes: IReactFlowNode[]) => { + const flowVariables = {} as Record + for (const node of reactFlowNodes) { + if (node.data.name === 'setVariable' && (node.data.inputs?.showOutput === true || node.data.inputs?.showOutput === 'true')) { + const outputResult = node.data.instance + const variableKey = node.data.inputs?.variableName + flowVariables[variableKey] = outputResult } + } + return flowVariables +} - const canContinue = await PlansService.hasAvailableExecutions(chatflow.userId, chatflow.organizationId) - - if (!canContinue) { - throw new InternalFlowiseError( - StatusCodes.PAYMENT_REQUIRED, - 'Insufficient executions. Please purchase more to continue using this service.' - ) - } +/* + * Function to traverse the flow graph and execute the nodes + */ +export const executeFlow = async ({ + componentNodes, + incomingInput, + chatflow, + chatId, + appDataSource, + telemetry, + cachePool, + sseStreamer, + baseURL, + isInternal, + files, + signal, + user +}: IExecuteFlowParams) => { + // Ensure incomingInput has all required properties with default values + incomingInput = { + history: [], + streaming: false, + ...incomingInput + } - let fileUploads: IFileUpload[] = [] - if (incomingInput.uploads) { - fileUploads = incomingInput.uploads - for (let i = 0; i < fileUploads.length; i += 1) { - const upload = fileUploads[i] - - if ((upload.type === 'file' || upload.type === 'audio') && upload.data) { - const filename = upload.name - const splitDataURI = upload.data.split(',') - const bf = Buffer.from(splitDataURI.pop() || '', 'base64') - const mime = splitDataURI[0].split(':')[1].split(';')[0] - await addSingleFileToStorage(mime, bf, filename, chatflowid, chatId) - upload.type = 'stored-file' - // Omit upload.data since we don't store the content in database - fileUploads[i] = omit(upload, ['data']) - } + const question = incomingInput.question || '' // Ensure question is never undefined + let overrideConfig = incomingInput.overrideConfig ?? {} + const uploads = incomingInput.uploads + const prependMessages = incomingInput.history ?? [] + const streaming = incomingInput.streaming ?? false + const userMessageDateTime = new Date() + const chatflowid = chatflow.id + + /* Process file uploads from the chat + * - Images + * - Files + * - Audio + */ + let fileUploads: IFileUpload[] = [] + let uploadedFilesContent = '' + if (incomingInput.uploads) { + fileUploads = incomingInput.uploads + for (let i = 0; i < fileUploads.length; i += 1) { + const upload = fileUploads[i] + + // if upload in an image, a rag file, or audio + if ((upload.type === 'file' || upload.type === 'file:rag' || upload.type === 'audio') && upload.data) { + const filename = upload.name + const splitDataURI = upload.data.split(',') + const bf = Buffer.from(splitDataURI.pop() || '', 'base64') + const mime = splitDataURI[0].split(':')[1].split(';')[0] + await addSingleFileToStorage(mime, bf, filename, chatflowid, chatId) + upload.type = 'stored-file' + // Omit upload.data since we don't store the content in database + fileUploads[i] = omit(upload, ['data']) + } - if (upload.type === 'url' && upload.data) { - const filename = upload.name - const urlData = upload.data - fileUploads[i] = { data: urlData, name: filename, type: 'url', mime: upload.mime ?? 'image/png' } - } + if (upload.type === 'url' && upload.data) { + const filename = upload.name + const urlData = upload.data + fileUploads[i] = { data: urlData, name: filename, type: 'url', mime: upload.mime ?? 'image/png' } + } - // Run Speech to Text conversion - if (upload.mime === 'audio/webm' || upload.mime === 'audio/mp4' || upload.mime === 'audio/ogg') { - logger.debug(`Attempting a speech to text conversion...`) - let speechToTextConfig: ICommonObject = {} - if (chatflow.speechToText) { - const speechToTextProviders = JSON.parse(chatflow.speechToText) - for (const provider in speechToTextProviders) { - const providerObj = speechToTextProviders[provider] - if (providerObj.status) { - speechToTextConfig = providerObj - speechToTextConfig['name'] = provider - break - } + // Run Speech to Text conversion + if (upload.mime === 'audio/webm' || upload.mime === 'audio/mp4' || upload.mime === 'audio/ogg') { + logger.debug(`Attempting a speech to text conversion...`) + let speechToTextConfig: ICommonObject = {} + if (chatflow.speechToText) { + const speechToTextProviders = JSON.parse(chatflow.speechToText) + for (const provider in speechToTextProviders) { + const providerObj = speechToTextProviders[provider] + if (providerObj.status) { + speechToTextConfig = providerObj + speechToTextConfig['name'] = provider + break } } - if (speechToTextConfig) { - const options: ICommonObject = { - chatId, - chatflowid, - appDataSource: appServer.AppDataSource, - databaseEntities: databaseEntities - } - const speechToTextResult = await convertSpeechToText(upload, speechToTextConfig, options) - logger.debug(`Speech to text result: ${speechToTextResult}`) - if (speechToTextResult) { - incomingInput.question = speechToTextResult - } + } + if (speechToTextConfig) { + const options: ICommonObject = { + chatId, + chatflowid, + appDataSource, + databaseEntities: databaseEntities + } + const speechToTextResult = await convertSpeechToText(upload, speechToTextConfig, options) + logger.debug(`Speech to text result: ${speechToTextResult}`) + if (speechToTextResult) { + incomingInput.question = speechToTextResult } } } - } - - let isStreamValid = false - - const files = (req.files as Express.Multer.File[]) || [] - if (files.length) { - const overrideConfig: ICommonObject = { ...req.body } - const fileNames: string[] = [] - for (const file of files) { - const fileBuffer = fs.readFileSync(file.path) - - const storagePath = await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, chatflowid) - - const fileInputField = mapMimeTypeToInputField(file.mimetype) - - overrideConfig[fileInputField] = storagePath - - fs.unlinkSync(file.path) - } - incomingInput = { - question: req.body.question ?? 'hello', - overrideConfig, - socketIOClientId: req.body.socketIOClientId + if (upload.type === 'file:full' && upload.data) { + upload.type = 'stored-file:full' + // Omit upload.data since we don't store the content in database + uploadedFilesContent += `${upload.data}\n\n` + fileUploads[i] = omit(upload, ['data']) } } + } - /*** Get chatflows and prepare data ***/ - const flowData = chatflow.flowData - const parsedFlowData: IReactFlowObject = JSON.parse(flowData) - const nodes = parsedFlowData.nodes - const edges = parsedFlowData.edges - - /*** Get session ID ***/ - const memoryNode = findMemoryNode(nodes, edges) - const memoryType = memoryNode?.data.label - let sessionId = getMemorySessionId(memoryNode, incomingInput, chatId, isInternal) - - /*** Get Ending Node with Directed Graph ***/ - const { graph, nodeDependencies } = constructGraphs(nodes, edges) - const directedGraph = graph - const endingNodes = getEndingNodes(nodeDependencies, directedGraph, nodes) - - /*** If the graph is an agent graph, build the agent response ***/ - if (endingNodes.filter((node) => node.data.category === 'Multi Agents' || node.data.category === 'Sequential Agents').length) { - return await utilBuildAgentResponse( - req.user!, - chatflow, - isInternal, - chatId, - memoryType ?? '', - sessionId, - userMessageDateTime, - fileUploads, - incomingInput, - nodes, - edges, - socketIO, - baseURL - ) - } + // Process form data body with files + if (files?.length) { + overrideConfig = { ...incomingInput } + for (const file of files) { + const fileNames: string[] = [] + const fileBuffer = await getFileFromUpload(file.path ?? file.key) + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') + const storagePath = await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, chatflowid) - // Get prepend messages - const prependMessages = incomingInput.history - - /* Reuse the flow without having to rebuild (to avoid duplicated upsert, recomputation, reinitialization of memory) when all these conditions met: - * - Reuse of flows is not disabled - * - Node Data already exists in pool - * - Still in sync (i.e the flow has not been modified since) - * - Existing overrideConfig and new overrideConfig are the same - * - Flow doesn't start with/contain nodes that depend on incomingInput.question - ***/ - const isFlowReusable = () => { - return ( - process.env.DISABLE_CHATFLOW_REUSE !== 'true' && - Object.prototype.hasOwnProperty.call(appServer.chatflowPool.activeChatflows, chatflowid) && - appServer.chatflowPool.activeChatflows[chatflowid].inSync && - appServer.chatflowPool.activeChatflows[chatflowid].endingNodeData && - isSameOverrideConfig( - isInternal, - appServer.chatflowPool.activeChatflows[chatflowid].overrideConfig, - incomingInput.overrideConfig - ) && - !isStartNodeDependOnInput(appServer.chatflowPool.activeChatflows[chatflowid].startingNodes, nodes) - ) - } + const fileInputFieldFromMimeType = mapMimeTypeToInputField(file.mimetype) - if (isFlowReusable()) { - nodeToExecuteData = appServer.chatflowPool.activeChatflows[chatflowid].endingNodeData as INodeData - isStreamValid = isFlowValidForStream(nodes, nodeToExecuteData) - logger.debug( - `[server]: Reuse existing chatflow ${chatflowid} with ending node ${nodeToExecuteData.label} (${nodeToExecuteData.id})` - ) - } else { - const isCustomFunctionEndingNode = endingNodes.some((node) => node.data?.outputs?.output === 'EndingNode') + const fileExtension = path.extname(file.originalname) - for (const endingNode of endingNodes) { - const endingNodeData = endingNode.data + const fileInputFieldFromExt = mapExtToInputField(fileExtension) - const isEndingNode = endingNodeData?.outputs?.output === 'EndingNode' + let fileInputField = 'txtFile' - // Once custom function ending node exists, no need to do follow-up checks. - if (isEndingNode) continue + if (fileInputFieldFromExt !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } else if (fileInputFieldFromMimeType !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } - if ( - endingNodeData.outputs && - Object.keys(endingNodeData.outputs).length && - !Object.values(endingNodeData.outputs ?? {}).includes(endingNodeData.name) - ) { - throw new InternalFlowiseError( - StatusCodes.INTERNAL_SERVER_ERROR, - `Output of ${endingNodeData.label} (${endingNodeData.id}) must be ${endingNodeData.label}, can't be an Output Prediction` - ) - } + if (overrideConfig[fileInputField]) { + const existingFileInputField = overrideConfig[fileInputField].replace('FILE-STORAGE::', '') + const existingFileInputFieldArray = JSON.parse(existingFileInputField) - isStreamValid = isFlowValidForStream(nodes, endingNodeData) - } + const newFileInputField = storagePath.replace('FILE-STORAGE::', '') + const newFileInputFieldArray = JSON.parse(newFileInputField) - // Once custom function ending node exists, flow is always unavailable to stream - isStreamValid = isCustomFunctionEndingNode ? false : isStreamValid + const updatedFieldArray = existingFileInputFieldArray.concat(newFileInputFieldArray) - let chatHistory: IMessage[] = [] + overrideConfig[fileInputField] = `FILE-STORAGE::${JSON.stringify(updatedFieldArray)}` + } else { + overrideConfig[fileInputField] = storagePath + } - // When {{chat_history}} is used in Format Prompt Value, fetch the chat conversations from memory node - for (const endingNode of endingNodes) { - const endingNodeData = endingNode.data + await removeSpecificFileFromUpload(file.path ?? file.key) + } + if (overrideConfig.vars && typeof overrideConfig.vars === 'string') { + overrideConfig.vars = JSON.parse(overrideConfig.vars) + } + incomingInput = { + ...incomingInput, + overrideConfig, + chatId + } + } - if (!endingNodeData.inputs?.memory) continue + /*** Get chatflows and prepare data ***/ + const flowData = chatflow.flowData + const parsedFlowData: IReactFlowObject = JSON.parse(flowData) + const nodes = parsedFlowData.nodes + const edges = parsedFlowData.edges + + const apiMessageId = uuidv4() + + /*** Get session ID ***/ + const memoryNode = findMemoryNode(nodes, edges) + const memoryType = memoryNode?.data.label || '' + let sessionId = getMemorySessionId(memoryNode, incomingInput, chatId, isInternal) + + /*** Get Ending Node with Directed Graph ***/ + const { graph, nodeDependencies } = constructGraphs(nodes, edges) + const directedGraph = graph + const endingNodes = getEndingNodes(nodeDependencies, directedGraph, nodes) + + /*** Get Starting Nodes with Reversed Graph ***/ + const constructedObj = constructGraphs(nodes, edges, { isReversed: true }) + const nonDirectedGraph = constructedObj.graph + let startingNodeIds: string[] = [] + let depthQueue: IDepthQueue = {} + const endingNodeIds = endingNodes.map((n) => n.id) + for (const endingNodeId of endingNodeIds) { + const resx = getStartingNodes(nonDirectedGraph, endingNodeId) + startingNodeIds.push(...resx.startingNodeIds) + depthQueue = Object.assign(depthQueue, resx.depthQueue) + } + startingNodeIds = [...new Set(startingNodeIds)] + + const isAgentFlow = + endingNodes.filter((node) => node.data.category === 'Multi Agents' || node.data.category === 'Sequential Agents').length > 0 + + /*** Get Chat History ***/ + const chatHistory = await getChatHistory({ + endingNodes, + nodes, + chatflowid, + appDataSource, + componentNodes, + incomingInput, + chatId, + isInternal, + isAgentFlow + }) + + /*** Get API Config ***/ + const availableVariables = await appDataSource.getRepository(Variable).find({ where: { userId: user.id } }) + const { nodeOverrides, variableOverrides, apiOverrideStatus } = getAPIOverrideConfig(chatflow) + + const flowConfig: IFlowConfig = { + chatflowid, + chatId, + sessionId, + chatHistory, + apiMessageId, + ...incomingInput.overrideConfig + } - const memoryNodeId = endingNodeData.inputs?.memory.split('.')[0].replace('{{', '') - const memoryNode = nodes.find((node) => node.data.id === memoryNodeId) + logger.debug(`[server]: Start building flow ${chatflowid}`) + + /*** BFS to traverse from Starting Nodes to Ending Node ***/ + const reactFlowNodes = await buildFlow({ + user, + startingNodeIds, + reactFlowNodes: nodes, + reactFlowEdges: edges, + apiMessageId, + graph, + depthQueue, + componentNodes, + question, + uploadedFilesContent, + chatHistory, + chatId, + sessionId, + chatflowid, + appDataSource, + overrideConfig, + apiOverrideStatus, + nodeOverrides, + availableVariables, + variableOverrides, + cachePool, + isUpsert: false, + uploads, + baseURL + }) + + const setVariableNodesOutput = getSetVariableNodesOutput(reactFlowNodes) + + if (isAgentFlow) { + const agentflow = chatflow + const streamResults = await buildAgentGraph({ + user, + agentflow, + flowConfig, + incomingInput, + nodes, + edges, + initializedNodes: reactFlowNodes, + endingNodeIds, + startingNodeIds, + depthQueue, + chatHistory, + uploadedFilesContent, + appDataSource, + componentNodes, + sseStreamer, + shouldStreamResponse: true, // agentflow is always streamed + cachePool, + baseURL, + signal + }) - if (!memoryNode) continue + if (streamResults) { + const { finalResult, finalAction, sourceDocuments, artifacts, usedTools, agentReasoning } = streamResults + const userMessage: Omit = { + role: 'userMessage', + content: incomingInput.question, + chatflowid: agentflow.id, + chatType: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, + chatId, + memoryType, + sessionId, + createdDate: userMessageDateTime, + fileUploads: incomingInput.uploads ? JSON.stringify(fileUploads) : undefined, + leadEmail: incomingInput.leadEmail, + userId: user.id + } + await utilAddChatMessage(userMessage, appDataSource) - chatHistory = await getSessionChatHistory( - chatflowid, - getMemorySessionId(memoryNode, incomingInput, chatId, isInternal), - memoryNode, - appServer.nodesPool.componentNodes, - appServer.AppDataSource, - databaseEntities, - logger, - prependMessages - ) + const apiMessage: Omit = { + id: apiMessageId, + role: 'apiMessage', + content: finalResult, + chatflowid: agentflow.id, + chatType: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, + chatId, + memoryType, + sessionId, + userId: user.id } - /*** Get Starting Nodes with Reversed Graph ***/ - const constructedObj = constructGraphs(nodes, edges, { isReversed: true }) - const nonDirectedGraph = constructedObj.graph - let startingNodeIds: string[] = [] - let depthQueue: IDepthQueue = {} - const endingNodeIds = endingNodes.map((n) => n.id) - for (const endingNodeId of endingNodeIds) { - const resx = getStartingNodes(nonDirectedGraph, endingNodeId) - startingNodeIds.push(...resx.startingNodeIds) - depthQueue = Object.assign(depthQueue, resx.depthQueue) + if (sourceDocuments?.length) apiMessage.sourceDocuments = JSON.stringify(sourceDocuments) + if (artifacts?.length) apiMessage.artifacts = JSON.stringify(artifacts) + if (usedTools?.length) apiMessage.usedTools = JSON.stringify(usedTools) + if (agentReasoning?.length) apiMessage.agentReasoning = JSON.stringify(agentReasoning) + if (finalAction && Object.keys(finalAction).length) apiMessage.action = JSON.stringify(finalAction) + + if (agentflow.followUpPrompts) { + const followUpPromptsConfig = JSON.parse(agentflow.followUpPrompts) + const generatedFollowUpPrompts = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { + chatId, + chatflowid: agentflow.id, + appDataSource, + databaseEntities + }) + if (generatedFollowUpPrompts?.questions) { + apiMessage.followUpPrompts = JSON.stringify(generatedFollowUpPrompts.questions) + } } - startingNodeIds = [...new Set(startingNodeIds)] - - const startingNodes = nodes.filter((nd) => startingNodeIds.includes(nd.id)) - - logger.debug(`[server]: Start building chatflow ${chatflowid}`) - /*** BFS to traverse from Starting Nodes to Ending Node ***/ - const reactFlowNodes = await buildFlow({ - user: req.user!, - startingNodeIds, - reactFlowNodes: nodes, - reactFlowEdges: edges, - graph, - depthQueue, - componentNodes: appServer.nodesPool.componentNodes, - question: incomingInput.question, - chatHistory, + const chatMessage = await utilAddChatMessage(apiMessage, appDataSource) + + await telemetry.sendTelemetry('agentflow_prediction_sent', { + version: await getAppVersion(), + agentflowId: agentflow.id, chatId, - sessionId: sessionId ?? '', - chatflowid, - appDataSource: appServer.AppDataSource, - overrideConfig: incomingInput?.overrideConfig, - cachePool: appServer.cachePool, - isUpsert: false, - uploads: incomingInput.uploads, - baseURL, - socketIO, - socketIOClientId: incomingInput.socketIOClientId + type: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, + flowGraph: getTelemetryFlowObj(nodes, edges) }) - const nodeToExecute = - endingNodeIds.length === 1 - ? reactFlowNodes.find((node: IReactFlowNode) => endingNodeIds[0] === node.id) - : reactFlowNodes[reactFlowNodes.length - 1] - if (!nodeToExecute) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Node not found`) - } + // Find the previous chat message with the same action id and remove the action + if (incomingInput.action && Object.keys(incomingInput.action).length) { + let query = await appDataSource + .getRepository(ChatMessage) + .createQueryBuilder('chat_message') + .where('chat_message.chatId = :chatId', { chatId }) + .orWhere('chat_message.sessionId = :sessionId', { sessionId }) + .orderBy('chat_message.createdDate', 'DESC') + .getMany() - if (incomingInput.overrideConfig) { - nodeToExecute.data = replaceInputsWithConfig(nodeToExecute.data, incomingInput.overrideConfig) + for (const result of query) { + if (result.action) { + try { + const action: IAction = JSON.parse(result.action) + if (action.id === incomingInput.action.id) { + const newChatMessage = new ChatMessage() + Object.assign(newChatMessage, result) + newChatMessage.action = null + const cm = await appDataSource.getRepository(ChatMessage).create(newChatMessage) + await appDataSource.getRepository(ChatMessage).save(cm) + break + } + } catch (e) { + // error converting action to JSON + } + } + } } - const reactFlowNodeData: INodeData = await resolveVariables( - req.user!, - appServer.AppDataSource, - nodeToExecute.data, - reactFlowNodes, - incomingInput.question, - chatHistory, - incomingInput.overrideConfig - ) - nodeToExecuteData = reactFlowNodeData + // Prepare response + let result: ICommonObject = {} + result.text = finalResult + result.question = incomingInput.question + result.chatId = chatId + result.chatMessageId = chatMessage?.id + if (sessionId) result.sessionId = sessionId + if (memoryType) result.memoryType = memoryType + if (agentReasoning?.length) result.agentReasoning = agentReasoning + if (finalAction && Object.keys(finalAction).length) result.action = finalAction + if (Object.keys(setVariableNodesOutput).length) result.flowVariables = setVariableNodesOutput + result.followUpPrompts = JSON.stringify(apiMessage.followUpPrompts) + + PlansService.incrementUsedExecutionCount(agentflow.userId, agentflow.organizationId) - appServer.chatflowPool.add(chatflowid, nodeToExecuteData, startingNodes, incomingInput?.overrideConfig) + return result + } + return undefined + } else { + let chatflowConfig: ICommonObject = {} + if (chatflow.chatbotConfig) { + chatflowConfig = JSON.parse(chatflow.chatbotConfig) } - logger.debug(`[server]: Running ${nodeToExecuteData.label} (${nodeToExecuteData.id})`) + let isStreamValid = false - const nodeInstanceFilePath = appServer.nodesPool.componentNodes[nodeToExecuteData.name].filePath as string - const nodeModule = await import(nodeInstanceFilePath) - const nodeInstance = new nodeModule.nodeClass({ sessionId }) + /* Check for post-processing settings, if available isStreamValid is always false */ + if (chatflowConfig?.postProcessing?.enabled === true) { + isStreamValid = false + } else { + isStreamValid = await checkIfStreamValid(endingNodes, nodes, streaming) + } - const missingInputs = validateNodeConnections(nodeToExecuteData) - if (missingInputs) { - throw new InternalFlowiseError( - StatusCodes.BAD_REQUEST, - `Oops! It looks like some required inputs are missing: ${missingInputs}.\n Please double-check your node connections and ensure all necessary inputs are linked before proceeding.` - ) + /*** Find the last node to execute ***/ + const { endingNodeData, endingNodeInstance } = await initEndingNode({ + user, + endingNodeIds, + componentNodes, + reactFlowNodes, + incomingInput, + flowConfig, + uploadedFilesContent, + availableVariables, + apiOverrideStatus, + nodeOverrides, + variableOverrides + }) + + /*** If user uploaded files from chat, prepend the content of the files ***/ + const finalQuestion = uploadedFilesContent ? `${uploadedFilesContent}\n\n${incomingInput.question}` : incomingInput.question + + /*** Prepare run params ***/ + const runParams = { + chatId, + chatflowid, + apiMessageId, + logger, + appDataSource, + databaseEntities, + analytic: chatflow.analytic, + uploads, + prependMessages, + ...(isStreamValid && { sseStreamer, shouldStreamResponse: isStreamValid }) } - let result = isStreamValid - ? await nodeInstance.run(nodeToExecuteData, incomingInput.question, { - chatId, - chatflowid, - logger, - appDataSource: appServer.AppDataSource, - databaseEntities, - analytic: chatflow.analytic, - uploads: incomingInput.uploads, - socketIO, - socketIOClientId: incomingInput.socketIOClientId, - prependMessages, - user: req.user, - sessionId - }) - : await nodeInstance.run(nodeToExecuteData, incomingInput.question, { - chatId, - chatflowid, - logger, - appDataSource: appServer.AppDataSource, - databaseEntities, - analytic: chatflow.analytic, - uploads: incomingInput.uploads, - prependMessages, - user: req.user, - sessionId - }) + /*** Run the ending node ***/ + let result = await endingNodeInstance.run(endingNodeData, finalQuestion, runParams) + result = typeof result === 'string' ? { text: result } : result - // Retrieve threadId from assistant if exists + /*** Retrieve threadId from OpenAI Assistant if exists ***/ if (typeof result === 'object' && result.assistant) { sessionId = result.assistant.threadId } const userMessage: Omit = { role: 'userMessage', - content: incomingInput.question, + content: question, chatflowid, - chatType: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, + chatType: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, chatId, memoryType, sessionId, createdDate: userMessageDateTime, - userId: req.user?.id!, fileUploads: incomingInput.uploads ? JSON.stringify(fileUploads) : undefined, - leadEmail: incomingInput.leadEmail + leadEmail: incomingInput.leadEmail, + userId: user.id } - await utilAddChatMessage(userMessage) + await utilAddChatMessage(userMessage, appDataSource) let resultText = '' - if (result.text) resultText = result.text - else if (result.json) resultText = '```json\n' + JSON.stringify(result.json, null, 2) + if (result.text) { + resultText = result.text + /* Check for post-processing settings */ + if (chatflowConfig?.postProcessing?.enabled === true) { + try { + const postProcessingFunction = JSON.parse(chatflowConfig?.postProcessing?.customFunction) + const nodeInstanceFilePath = componentNodes['customFunction'].filePath as string + const nodeModule = await import(nodeInstanceFilePath) + const nodeData = { + inputs: { javascriptFunction: postProcessingFunction }, + outputs: { output: 'output' } + } + const options: ICommonObject = { + chatflowid: chatflow.id, + sessionId, + chatId, + input: question, + rawOutput: resultText, + appDataSource, + databaseEntities, + logger + } + const customFuncNodeInstance = new nodeModule.nodeClass() + let moderatedResponse = await customFuncNodeInstance.init(nodeData, question, options) + result.text = moderatedResponse + resultText = result.text + } catch (e) { + logger.log('[server]: Post Processing Error:', e) + } + } + } else if (result.json) resultText = '```json\n' + JSON.stringify(result.json, null, 2) else resultText = JSON.stringify(result, null, 2) const apiMessage: Omit = { role: 'apiMessage', content: resultText, chatflowid, - chatType: incomingInput.chatType ?? (isInternal ? chatType.INTERNAL : chatType.EXTERNAL), + chatType: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, chatId, memoryType, - userId: req.user?.id!, - sessionId + sessionId, + userId: user?.id } if (result?.sourceDocuments) apiMessage.sourceDocuments = JSON.stringify(result.sourceDocuments) if (result?.usedTools) apiMessage.usedTools = JSON.stringify(result.usedTools) if (result?.fileAnnotations) apiMessage.fileAnnotations = JSON.stringify(result.fileAnnotations) - const chatMessage = await utilAddChatMessage(apiMessage) + if (result?.artifacts) apiMessage.artifacts = JSON.stringify(result.artifacts) + if (chatflow.followUpPrompts) { + const followUpPromptsConfig = JSON.parse(chatflow.followUpPrompts) + const followUpPrompts = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { + chatId, + chatflowid, + appDataSource, + databaseEntities + }) + if (followUpPrompts?.questions) { + apiMessage.followUpPrompts = JSON.stringify(followUpPrompts.questions) + } + } + + const chatMessage = await utilAddChatMessage(apiMessage, appDataSource) - logger.debug(`[server]: Finished running ${nodeToExecuteData.label} (${nodeToExecuteData.id})`) - await appServer.telemetry.sendTelemetry('prediction_sent', { + logger.debug(`[server]: Finished running ${endingNodeData.label} (${endingNodeData.id})`) + + await telemetry.sendTelemetry('prediction_sent', { version: await getAppVersion(), chatflowId: chatflowid, chatId, - type: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, + type: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, flowGraph: getTelemetryFlowObj(nodes, edges) }) - // Prepare response - // return the question in the response - // this is used when input text is empty but question is in audio format - result.question = incomingInput.question + /*** Prepare response ***/ + result.question = incomingInput.question // return the question in the response, this is used when input text is empty but question is in audio format result.chatId = chatId result.chatMessageId = chatMessage?.id + result.followUpPrompts = JSON.stringify(apiMessage.followUpPrompts) + result.isStreamValid = isStreamValid + if (sessionId) result.sessionId = sessionId if (memoryType) result.memoryType = memoryType - - PlansService.incrementUsedExecutionCount(chatflow.userId, chatflow.organizationId) + if (Object.keys(setVariableNodesOutput).length) result.flowVariables = setVariableNodesOutput return result - } catch (e) { - logger.error('[server]: Error:', e) - if (e instanceof InternalFlowiseError && e.statusCode === StatusCodes.UNAUTHORIZED) { - throw e - } else { - throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, getErrorMessage(e)) - } } } -const utilBuildAgentResponse = async ( - user: IUser, - agentflow: IChatFlow, - isInternal: boolean, - chatId: string, - memoryType: string, - sessionId: string, - userMessageDateTime: Date, - fileUploads: IFileUpload[], - incomingInput: IncomingInput, +/** + * Function to check if the flow is valid for streaming + * @param {IReactFlowNode[]} endingNodes + * @param {IReactFlowNode[]} nodes + * @param {boolean | string} streaming + * @returns {boolean} + */ +const checkIfStreamValid = async ( + endingNodes: IReactFlowNode[], nodes: IReactFlowNode[], - edges: IReactFlowEdge[], - socketIO?: Server, - baseURL?: string -) => { - try { - if (!agentflow.userId || !agentflow.organizationId) { + streaming: boolean | string | undefined +): Promise => { + // If streaming is undefined, set to false by default + if (streaming === undefined) { + streaming = false + } + + // Once custom function ending node exists, flow is always unavailable to stream + const isCustomFunctionEndingNode = endingNodes.some((node) => node.data?.outputs?.output === 'EndingNode') + if (isCustomFunctionEndingNode) return false + + let isStreamValid = false + for (const endingNode of endingNodes) { + const endingNodeData = endingNode.data || {} // Ensure endingNodeData is never undefined + + const isEndingNode = endingNodeData?.outputs?.output === 'EndingNode' + + // Once custom function ending node exists, no need to do follow-up checks. + if (isEndingNode) continue + + if ( + endingNodeData.outputs && + Object.keys(endingNodeData.outputs).length && + !Object.values(endingNodeData.outputs ?? {}).includes(endingNodeData.name) + ) { throw new InternalFlowiseError( StatusCodes.INTERNAL_SERVER_ERROR, - `User ID and Organization ID are required on the agentflow: ${agentflow.id}` + `Output of ${endingNodeData.label} (${endingNodeData.id}) must be ${endingNodeData.label}, can't be an Output Prediction` ) } - const appServer = getRunningExpressApp() - const streamResults = await buildAgentGraph(user, agentflow, chatId, sessionId, incomingInput, isInternal, baseURL, socketIO) - if (streamResults) { - const { finalResult, finalAction, sourceDocuments, usedTools, agentReasoning } = streamResults - const userMessage: Omit = { - role: 'userMessage', - content: incomingInput.question, - chatflowid: agentflow.id, - chatType: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, - chatId, - memoryType, - sessionId, - createdDate: userMessageDateTime, - fileUploads: incomingInput.uploads ? JSON.stringify(fileUploads) : undefined, - leadEmail: incomingInput.leadEmail, - userId: user.id - } - await utilAddChatMessage(userMessage) - const apiMessage: Omit = { - role: 'apiMessage', - content: finalResult, - chatflowid: agentflow.id, - chatType: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, - chatId, - memoryType, - sessionId, - userId: user.id + isStreamValid = isFlowValidForStream(nodes, endingNodeData) + } + + isStreamValid = (streaming === 'true' || streaming === true) && isStreamValid + + return isStreamValid +} + +/** + * Build/Data Preperation for execute function + * @param {Request} req + * @param {boolean} isInternal + */ +export const utilBuildChatflow = async (req: Request, isInternal: boolean = false): Promise => { + const appServer = getRunningExpressApp() + const chatflowid = req.params.id + + // Check if chatflow exists + const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ + id: chatflowid + }) + if (!chatflow) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) + } + + const isAgentFlow = chatflow.type === 'MULTIAGENT' + const httpProtocol = req.get('x-forwarded-proto') || req.protocol + const baseURL = `${httpProtocol}://${req.get('host')}` + const incomingInput: IncomingInput = req.body || {} // Ensure incomingInput is never undefined + const chatId = incomingInput.chatId ?? incomingInput.overrideConfig?.sessionId ?? uuidv4() + const files = (req.files as Express.Multer.File[]) || [] + const abortControllerId = `${chatflow.id}_${chatId}` + + try { + // Validate API Key if its external API request + if (!isInternal) { + const isKeyValidated = await validateChatflowAPIKey(req, chatflow) + if (!isKeyValidated) { + throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) } - if (sourceDocuments.length) apiMessage.sourceDocuments = JSON.stringify(sourceDocuments) - if (usedTools.length) apiMessage.usedTools = JSON.stringify(usedTools) - if (agentReasoning.length) apiMessage.agentReasoning = JSON.stringify(agentReasoning) - if (Object.keys(finalAction).length) apiMessage.action = JSON.stringify(finalAction) - const chatMessage = await utilAddChatMessage(apiMessage) + } - await appServer.telemetry.sendTelemetry('agentflow_prediction_sent', { - version: await getAppVersion(), - agentflowId: agentflow.id, - chatId, - type: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, - flowGraph: getTelemetryFlowObj(nodes, edges) - }) + const executeData: IExecuteFlowParams = { + incomingInput, + chatflow, + chatId, + baseURL, + isInternal, + files, + appDataSource: appServer.AppDataSource, + sseStreamer: appServer.sseStreamer, + telemetry: appServer.telemetry, + cachePool: appServer.cachePool, + componentNodes: appServer.nodesPool.componentNodes, + user: req.user! + } - // Find the previous chat message with the same action id and remove the action - if (incomingInput.action && Object.keys(incomingInput.action).length) { - let query = await appServer.AppDataSource.getRepository(ChatMessage) - .createQueryBuilder('chat_message') - .where('chat_message.chatId = :chatId', { chatId }) - .orWhere('chat_message.sessionId = :sessionId', { sessionId }) - .orderBy('chat_message.createdDate', 'DESC') - .getMany() + if (process.env.MODE === MODE.QUEUE) { + const predictionQueue = appServer.queueManager.getQueue('prediction') + const job = await predictionQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) - for (const result of query) { - if (result.action) { - try { - const action: IAction = JSON.parse(result.action) - if (action.id === incomingInput.action.id) { - const newChatMessage = new ChatMessage() - Object.assign(newChatMessage, result) - newChatMessage.action = null - const cm = await appServer.AppDataSource.getRepository(ChatMessage).create(newChatMessage) - await appServer.AppDataSource.getRepository(ChatMessage).save(cm) - break - } - } catch (e) { - // error converting action to JSON - } - } - } + const queueEvents = predictionQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) + appServer.abortControllerPool.remove(abortControllerId) + if (!result) { + throw new Error('Job execution failed') } - // Prepare response - let result: ICommonObject = {} - result.text = finalResult - result.question = incomingInput.question - result.chatId = chatId - result.chatMessageId = chatMessage?.id - if (sessionId) result.sessionId = sessionId - if (memoryType) result.memoryType = memoryType - if (agentReasoning.length) result.agentReasoning = agentReasoning - if (Object.keys(finalAction).length) result.action = finalAction + incrementSuccessMetricCounter(appServer.metricsProvider, isInternal, isAgentFlow) + return result + } else { + // Add abort controller to the pool + const signal = new AbortController() + appServer.abortControllerPool.add(abortControllerId, signal) + executeData.signal = signal - PlansService.incrementUsedExecutionCount(agentflow.userId, agentflow.organizationId) + const result = await executeFlow(executeData) + appServer.abortControllerPool.remove(abortControllerId) + incrementSuccessMetricCounter(appServer.metricsProvider, isInternal, isAgentFlow) return result } - return undefined } catch (e) { logger.error('[server]: Error:', e) - throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, getErrorMessage(e)) + appServer.abortControllerPool.remove(`${chatflow.id}_${chatId}`) + incrementFailedMetricCounter(appServer.metricsProvider, isInternal, isAgentFlow) + if (e instanceof InternalFlowiseError && e.statusCode === StatusCodes.UNAUTHORIZED) { + throw e + } else { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, getErrorMessage(e)) + } + } +} + +/** + * Increment success metric counter + * @param {IMetricsProvider} metricsProvider + * @param {boolean} isInternal + * @param {boolean} isAgentFlow + */ +const incrementSuccessMetricCounter = (metricsProvider: IMetricsProvider, isInternal: boolean, isAgentFlow: boolean) => { + if (isAgentFlow) { + metricsProvider?.incrementCounter( + isInternal ? FLOWISE_METRIC_COUNTERS.AGENTFLOW_PREDICTION_INTERNAL : FLOWISE_METRIC_COUNTERS.AGENTFLOW_PREDICTION_EXTERNAL, + { status: FLOWISE_COUNTER_STATUS.SUCCESS } + ) + } else { + metricsProvider?.incrementCounter( + isInternal ? FLOWISE_METRIC_COUNTERS.CHATFLOW_PREDICTION_INTERNAL : FLOWISE_METRIC_COUNTERS.CHATFLOW_PREDICTION_EXTERNAL, + { status: FLOWISE_COUNTER_STATUS.SUCCESS } + ) + } +} + +/** + * Increment failed metric counter + * @param {IMetricsProvider} metricsProvider + * @param {boolean} isInternal + * @param {boolean} isAgentFlow + */ +const incrementFailedMetricCounter = (metricsProvider: IMetricsProvider, isInternal: boolean, isAgentFlow: boolean) => { + if (isAgentFlow) { + metricsProvider?.incrementCounter( + isInternal ? FLOWISE_METRIC_COUNTERS.AGENTFLOW_PREDICTION_INTERNAL : FLOWISE_METRIC_COUNTERS.AGENTFLOW_PREDICTION_EXTERNAL, + { status: FLOWISE_COUNTER_STATUS.FAILURE } + ) + } else { + metricsProvider?.incrementCounter( + isInternal ? FLOWISE_METRIC_COUNTERS.CHATFLOW_PREDICTION_INTERNAL : FLOWISE_METRIC_COUNTERS.CHATFLOW_PREDICTION_EXTERNAL, + { status: FLOWISE_COUNTER_STATUS.FAILURE } + ) } } diff --git a/packages/server/src/utils/constants.ts b/packages/server/src/utils/constants.ts new file mode 100644 index 00000000000..ec58bfed043 --- /dev/null +++ b/packages/server/src/utils/constants.ts @@ -0,0 +1,61 @@ +export const WHITELIST_URLS = [ + '/api/v1/verify/apikey/', + '/api/v1/chatflows/apikey/', + '/api/v1/public-chatflows', + '/api/v1/public-chatbotConfig', + '/api/v1/prediction/', + '/api/v1/vector/upsert/', + '/api/v1/node-icon/', + '/api/v1/components-credentials-icon/', + '/api/v1/chatflows-streaming', + '/api/v1/chatflows-uploads', + '/api/v1/openai-assistants-file/download', + '/api/v1/feedback', + '/api/v1/leads', + '/api/v1/get-upload-file', + '/api/v1/ip', + '/api/v1/ping', + '/api/v1/version', + '/api/v1/attachments', + '/api/v1/metrics', + '/api/v1/nvidia-nim', + '/api/v1/google-auth', + process.env.GOOGLE_CALLBACK_URL ?? '/api/v1/google-auth/callback', + '/api/v1/verify/apikey/', + '/api/v1/chatflows/apikey/', + '/api/v1/public-chatflows', + '/api/v1/public-chatbotConfig', + '/api/v1/prediction/', + '/api/v1/vector/upsert/', + '/api/v1/node-icon/', + '/api/v1/components-credentials-icon/', + '/api/v1/chatflows-streaming', + '/api/v1/chatflows-uploads', + '/api/v1/openai-assistants-file/download', + '/api/v1/feedback', + '/api/v1/leads', + '/api/v1/get-upload-file', + '/api/v1/ip', + '/api/v1/ping', + '/api/v1/marketplaces/templates' +] + +export const OMIT_QUEUE_JOB_DATA = ['componentNodes', 'appDataSource', 'sseStreamer', 'telemetry', 'cachePool'] + +export const INPUT_PARAMS_TYPE = [ + 'asyncOptions', + 'asyncMultiOptions', + 'options', + 'multiOptions', + 'datagrid', + 'string', + 'number', + 'boolean', + 'password', + 'json', + 'code', + 'date', + 'file', + 'folder', + 'tabs' +] diff --git a/packages/server/src/utils/createAttachment.ts b/packages/server/src/utils/createAttachment.ts new file mode 100644 index 00000000000..3a2e691a80d --- /dev/null +++ b/packages/server/src/utils/createAttachment.ts @@ -0,0 +1,104 @@ +import { Request } from 'express' +import * as path from 'path' +import { + addArrayFilesToStorage, + getFileFromUpload, + IDocument, + mapExtToInputField, + mapMimeTypeToInputField, + removeSpecificFileFromUpload +} from 'flowise-components' +import { getRunningExpressApp } from './getRunningExpressApp' +import { getErrorMessage } from '../errors/utils' + +/** + * Create attachment + * @param {Request} req + */ +export const createFileAttachment = async (req: Request) => { + const appServer = getRunningExpressApp() + + const chatflowid = req.params.chatflowId + if (!chatflowid) { + throw new Error( + 'Params chatflowId is required! Please provide chatflowId and chatId in the URL: /api/v1/attachments/:chatflowId/:chatId' + ) + } + + const chatId = req.params.chatId + if (!chatId) { + throw new Error( + 'Params chatId is required! Please provide chatflowId and chatId in the URL: /api/v1/attachments/:chatflowId/:chatId' + ) + } + + // Find FileLoader node + const fileLoaderComponent = appServer.nodesPool.componentNodes['fileLoader'] + const fileLoaderNodeInstanceFilePath = fileLoaderComponent.filePath as string + const fileLoaderNodeModule = await import(fileLoaderNodeInstanceFilePath) + const fileLoaderNodeInstance = new fileLoaderNodeModule.nodeClass() + const options = { + retrieveAttachmentChatId: true, + chatflowid, + chatId + } + const files = (req.files as Express.Multer.File[]) || [] + const fileAttachments = [] + if (files.length) { + const isBase64 = req.body.base64 + for (const file of files) { + const fileBuffer = await getFileFromUpload(file.path ?? file.key) + const fileNames: string[] = [] + + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') + + const storagePath = await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, chatflowid, chatId) + + const fileInputFieldFromMimeType = mapMimeTypeToInputField(file.mimetype) + + const fileExtension = path.extname(file.originalname) + + const fileInputFieldFromExt = mapExtToInputField(fileExtension) + + let fileInputField = 'txtFile' + + if (fileInputFieldFromExt !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } else if (fileInputFieldFromMimeType !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } + + await removeSpecificFileFromUpload(file.path ?? file.key) + + try { + const nodeData = { + inputs: { + [fileInputField]: storagePath + }, + outputs: { output: 'document' } + } + + let content = '' + + if (isBase64) { + content = fileBuffer.toString('base64') + } else { + const documents: IDocument[] = await fileLoaderNodeInstance.init(nodeData, '', options) + content = documents.map((doc) => doc.pageContent).join('\n') + } + + fileAttachments.push({ + name: file.originalname, + mimeType: file.mimetype, + size: file.size, + content + }) + } catch (error) { + throw new Error(`Failed operation: createFileAttachment - ${getErrorMessage(error)}`) + } + } + } + + return fileAttachments +} diff --git a/packages/server/src/utils/getChatMessage.ts b/packages/server/src/utils/getChatMessage.ts index e853be5077e..6abd360f466 100644 --- a/packages/server/src/utils/getChatMessage.ts +++ b/packages/server/src/utils/getChatMessage.ts @@ -1,13 +1,14 @@ -import { MoreThanOrEqual, LessThanOrEqual } from 'typeorm' -import { ChatMessageRatingType, chatType, IUser } from '../Interface' +import { MoreThanOrEqual, LessThanOrEqual, Between, In } from 'typeorm' +import { ChatMessageRatingType, ChatType, IUser } from '../Interface' import { ChatMessage } from '../database/entities/ChatMessage' import { ChatMessageFeedback } from '../database/entities/ChatMessageFeedback' import { getRunningExpressApp } from '../utils/getRunningExpressApp' +import { aMonthAgo } from '.' /** * Method that get chat messages. * @param {string} chatflowid - * @param {chatType} chatType + * @param {ChatType[]} chatTypes * @param {string} sortOrder * @param {string} chatId * @param {string} memoryType @@ -17,42 +18,36 @@ import { getRunningExpressApp } from '../utils/getRunningExpressApp' * @param {boolean} feedback * @param {ChatMessageRatingType[]} feedbackTypes */ -export const utilGetChatMessage = async ( +interface GetChatMessageParams { user: IUser, - chatflowid: string, - chatType: chatType | undefined, - sortOrder: string = 'ASC', - chatId?: string, - memoryType?: string, - sessionId?: string, - startDate?: string, - endDate?: string, - messageId?: string, - feedback?: boolean, - feedbackTypes?: ChatMessageRatingType[], - userId?: string -): Promise => { - const appServer = getRunningExpressApp() - const setDateToStartOrEndOfDay = (dateTimeStr: string, setHours: 'start' | 'end') => { - const date = new Date(dateTimeStr) - if (isNaN(date.getTime())) { - return undefined - } - setHours === 'start' ? date.setHours(0, 0, 0, 0) : date.setHours(23, 59, 59, 999) - return date - } - - const aMonthAgo = () => { - const date = new Date() - date.setMonth(new Date().getMonth() - 1) - return date - } - - let fromDate - if (startDate) fromDate = setDateToStartOrEndOfDay(startDate, 'start') + chatflowid: string + chatTypes?: ChatType[] + sortOrder?: string + chatId?: string + memoryType?: string + sessionId?: string + startDate?: string + endDate?: string + messageId?: string + feedback?: boolean + feedbackTypes?: ChatMessageRatingType[] +} - let toDate - if (endDate) toDate = setDateToStartOrEndOfDay(endDate, 'end') +export const utilGetChatMessage = async ({ + user, + chatflowid, + chatTypes, + sortOrder = 'ASC', + chatId, + memoryType, + sessionId, + startDate, + endDate, + messageId, + feedback, + feedbackTypes +}: GetChatMessageParams): Promise => { + const appServer = getRunningExpressApp() if (feedback) { const query = await appServer.AppDataSource.getRepository(ChatMessage).createQueryBuilder('chat_message') @@ -63,8 +58,8 @@ export const utilGetChatMessage = async ( .where('chat_message.chatflowid = :chatflowid', { chatflowid }) // based on which parameters are available add `andWhere` clauses to the query - if (chatType) { - query.andWhere('chat_message.chatType = :chatType', { chatType }) + if (chatTypes && chatTypes.length > 0) { + query.andWhere('chat_message.chatType IN (:...chatTypes)', { chatTypes }) } if (chatId) { query.andWhere('chat_message.chatId = :chatId', { chatId }) @@ -75,15 +70,18 @@ export const utilGetChatMessage = async ( if (sessionId) { query.andWhere('chat_message.sessionId = :sessionId', { sessionId }) } - if (userId && !user.roles?.includes('Admin')) { - query.andWhere('chat_message.userId = :userId', { userId }) + if (user.id && !user.roles?.includes('Admin')) { + query.andWhere('chat_message.userId = :userId', { userId: user.id }) } // set date range - query.andWhere('chat_message.createdDate BETWEEN :fromDate AND :toDate', { - fromDate: fromDate ?? aMonthAgo(), - toDate: toDate ?? new Date() - }) + if (startDate) { + query.andWhere('chat_message.createdDate >= :startDateTime', { startDateTime: startDate ? new Date(startDate) : aMonthAgo() }) + } + if (endDate) { + query.andWhere('chat_message.createdDate <= :endDateTime', { endDateTime: endDate ? new Date(endDate) : new Date() }) + } + // sort query.orderBy('chat_message.createdDate', sortOrder === 'DESC' ? 'DESC' : 'ASC') @@ -107,17 +105,27 @@ export const utilGetChatMessage = async ( return messages } + let createdDateQuery + if (startDate || endDate) { + if (startDate && endDate) { + createdDateQuery = Between(new Date(startDate), new Date(endDate)) + } else if (startDate) { + createdDateQuery = MoreThanOrEqual(new Date(startDate)) + } else if (endDate) { + createdDateQuery = LessThanOrEqual(new Date(endDate)) + } + } + return await appServer.AppDataSource.getRepository(ChatMessage).find({ where: { chatflowid, - chatType, + chatType: chatTypes?.length ? In(chatTypes) : undefined, chatId, memoryType: memoryType ?? undefined, sessionId: sessionId ?? undefined, - userId: user.roles?.includes('Admin') ? undefined : userId, - ...(fromDate && { createdDate: MoreThanOrEqual(fromDate) }), - ...(toDate && { createdDate: LessThanOrEqual(toDate) }), - id: messageId ?? undefined + createdDate: createdDateQuery, + id: messageId ?? undefined, + userId: user.roles?.includes('Admin') ? undefined : user.id, }, order: { createdDate: sortOrder === 'DESC' ? 'DESC' : 'ASC' diff --git a/packages/server/src/utils/getRunningExpressApp.ts b/packages/server/src/utils/getRunningExpressApp.ts index e02f988f110..6f876f3f843 100644 --- a/packages/server/src/utils/getRunningExpressApp.ts +++ b/packages/server/src/utils/getRunningExpressApp.ts @@ -2,7 +2,11 @@ import * as Server from '../index' export const getRunningExpressApp = function () { const runningExpressInstance = Server.getInstance() - if (typeof runningExpressInstance === 'undefined' || typeof runningExpressInstance.nodesPool === 'undefined') { + if ( + typeof runningExpressInstance === 'undefined' || + typeof runningExpressInstance.nodesPool === 'undefined' || + typeof runningExpressInstance.telemetry === 'undefined' + ) { throw new Error(`Error: getRunningExpressApp failed!`) } return runningExpressInstance diff --git a/packages/server/src/utils/getUploadsConfig.ts b/packages/server/src/utils/getUploadsConfig.ts index 13670c99ee6..96df07a15d0 100644 --- a/packages/server/src/utils/getUploadsConfig.ts +++ b/packages/server/src/utils/getUploadsConfig.ts @@ -2,14 +2,22 @@ import { StatusCodes } from 'http-status-codes' import { INodeParams } from 'flowise-components' import { ChatFlow } from '../database/entities/ChatFlow' import { getRunningExpressApp } from '../utils/getRunningExpressApp' -import { IUploadFileSizeAndTypes, IReactFlowNode } from '../Interface' +import { IUploadFileSizeAndTypes, IReactFlowNode, IReactFlowEdge } from '../Interface' import { InternalFlowiseError } from '../errors/internalFlowiseError' +type IUploadConfig = { + isSpeechToTextEnabled: boolean + isImageUploadAllowed: boolean + isRAGFileUploadAllowed: boolean + imgUploadSizeAndTypes: IUploadFileSizeAndTypes[] + fileUploadSizeAndTypes: IUploadFileSizeAndTypes[] +} + /** * Method that checks if uploads are enabled in the chatflow * @param {string} chatflowid */ -export const utilGetUploadsConfig = async (chatflowid: string): Promise => { +export const utilGetUploadsConfig = async (chatflowid: string): Promise => { const appServer = getRunningExpressApp() const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ id: chatflowid @@ -18,21 +26,17 @@ export const utilGetUploadsConfig = async (chatflowid: string): Promise => throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) } - const uploadAllowedNodes = [ - 'llmChain', - 'conversationChain', - 'reactAgentChat', - 'conversationalAgent', - 'toolAgent', - 'supervisor', - 'seqStart' - ] - const uploadProcessingNodes = ['chatOpenAI', 'chatAnthropic', 'awsChatBedrock', 'azureChatOpenAI', 'chatGoogleGenerativeAI'] - const flowObj = JSON.parse(chatflow.flowData) - const imgUploadSizeAndTypes: IUploadFileSizeAndTypes[] = [] + const nodes: IReactFlowNode[] = flowObj.nodes + const edges: IReactFlowEdge[] = flowObj.edges let isSpeechToTextEnabled = false + let isImageUploadAllowed = false + let isRAGFileUploadAllowed = false + + /* + * Check for STT + */ if (chatflow.speechToText) { const speechToTextProviders = JSON.parse(chatflow.speechToText) for (const provider in speechToTextProviders) { @@ -46,39 +50,72 @@ export const utilGetUploadsConfig = async (chatflowid: string): Promise => } } - let isImageUploadAllowed = false - const nodes: IReactFlowNode[] = flowObj.nodes + /* + * Condition for isRAGFileUploadAllowed + * 1.) vector store with fileUpload = true && connected to a document loader with fileType + */ + const fileUploadSizeAndTypes: IUploadFileSizeAndTypes[] = [] + for (const node of nodes) { + if (node.data.category === 'Vector Stores' && node.data.inputs?.fileUpload) { + // Get the connected document loader node fileTypes + const sourceDocumentEdges = edges.filter( + (edge) => edge.target === node.id && edge.targetHandle === `${node.id}-input-document-Document` + ) + for (const edge of sourceDocumentEdges) { + const sourceNode = nodes.find((node) => node.id === edge.source) + if (!sourceNode) continue + const fileType = sourceNode.data.inputParams.find((param) => param.type === 'file' && param.fileType)?.fileType + if (fileType) { + fileUploadSizeAndTypes.push({ + fileTypes: fileType.split(', '), + maxUploadSize: 500 + }) + isRAGFileUploadAllowed = true + } + } + break + } + } /* * Condition for isImageUploadAllowed - * 1.) one of the uploadAllowedNodes exists - * 2.) one of the uploadProcessingNodes exists + allowImageUploads is ON + * 1.) one of the imgUploadAllowedNodes exists + * 2.) one of the imgUploadLLMNodes exists + allowImageUploads is ON */ - if (!nodes.some((node) => uploadAllowedNodes.includes(node.data.name))) { - return { - isSpeechToTextEnabled, - isImageUploadAllowed: false, - imgUploadSizeAndTypes - } + const imgUploadSizeAndTypes: IUploadFileSizeAndTypes[] = [] + const imgUploadAllowedNodes = [ + 'llmChain', + 'conversationChain', + 'reactAgentChat', + 'conversationalAgent', + 'toolAgent', + 'supervisor', + 'seqStart' + ] + + if (nodes.some((node) => imgUploadAllowedNodes.includes(node.data.name))) { + nodes.forEach((node: IReactFlowNode) => { + const data = node.data + if (data.category === 'Chat Models' && data.inputs?.['allowImageUploads'] === true) { + // TODO: for now the maxUploadSize is hardcoded to 5MB, we need to add it to the node properties + node.data.inputParams.map((param: INodeParams) => { + if (param.name === 'allowImageUploads' && node.data.inputs?.['allowImageUploads']) { + imgUploadSizeAndTypes.push({ + fileTypes: 'image/gif;image/jpeg;image/png;image/webp;'.split(';'), + maxUploadSize: 5 + }) + isImageUploadAllowed = true + } + }) + } + }) } - nodes.forEach((node: IReactFlowNode) => { - if (uploadProcessingNodes.indexOf(node.data.name) > -1) { - // TODO: for now the maxUploadSize is hardcoded to 5MB, we need to add it to the node properties - node.data.inputParams.map((param: INodeParams) => { - if (param.name === 'allowImageUploads' && node.data.inputs?.['allowImageUploads']) { - imgUploadSizeAndTypes.push({ - fileTypes: 'image/gif;image/jpeg;image/png;image/webp;'.split(';'), - maxUploadSize: 5 - }) - isImageUploadAllowed = true - } - }) - } - }) return { isSpeechToTextEnabled, isImageUploadAllowed, - imgUploadSizeAndTypes + isRAGFileUploadAllowed, + imgUploadSizeAndTypes, + fileUploadSizeAndTypes } } diff --git a/packages/server/src/utils/index.ts b/packages/server/src/utils/index.ts index 25c4e29abf9..bf8131c2e8d 100644 --- a/packages/server/src/utils/index.ts +++ b/packages/server/src/utils/index.ts @@ -1,8 +1,12 @@ +/** + * Strictly no getRepository, appServer here, must be passed as parameter + */ + import path from 'path' import fs from 'fs' import logger from './logger' -import { Server } from 'socket.io' import { + IChatFlow, IComponentCredentials, IComponentNodes, ICredentialDataDecrypted, @@ -12,12 +16,15 @@ import { INodeData, INodeDependencies, INodeDirectedGraph, + INodeOverrides, INodeQueue, IOverrideConfig, IReactFlowEdge, IReactFlowNode, IUser, + IVariable, IVariableDict, + IVariableOverride, IncomingInput } from '../Interface' import { cloneDeep, get, isEqual } from 'lodash' @@ -30,33 +37,62 @@ import { IDatabaseEntity, IMessage, FlowiseMemory, - IFileUpload + IFileUpload, + getS3Config } from 'flowise-components' import { randomBytes } from 'crypto' import { AES, enc } from 'crypto-js' - +import multer from 'multer' +import multerS3 from 'multer-s3' import { ChatFlow } from '../database/entities/ChatFlow' import { ChatMessage } from '../database/entities/ChatMessage' import { Credential } from '../database/entities/Credential' import { Tool } from '../database/entities/Tool' import { Assistant } from '../database/entities/Assistant' -import { DataSource, Like } from 'typeorm' +import { Lead } from '../database/entities/Lead' +import { DataSource } from 'typeorm' import { CachePool } from '../CachePool' import { Variable } from '../database/entities/Variable' import { DocumentStore } from '../database/entities/DocumentStore' import { DocumentStoreFileChunk } from '../database/entities/DocumentStoreFileChunk' import { InternalFlowiseError } from '../errors/internalFlowiseError' import { StatusCodes } from 'http-status-codes' +import { + CreateSecretCommand, + GetSecretValueCommand, + PutSecretValueCommand, + SecretsManagerClient, + SecretsManagerClientConfig +} from '@aws-sdk/client-secrets-manager' const QUESTION_VAR_PREFIX = 'question' +const FILE_ATTACHMENT_PREFIX = 'file_attachment' const CHAT_HISTORY_VAR_PREFIX = 'chat_history' const REDACTED_CREDENTIAL_VALUE = '_FLOWISE_BLANK_07167752-1a71-43b1-bf8f-4f32252165db' +let secretsManagerClient: SecretsManagerClient | null = null +const USE_AWS_SECRETS_MANAGER = process.env.SECRETKEY_STORAGE_TYPE === 'aws' +if (USE_AWS_SECRETS_MANAGER) { + const region = process.env.SECRETKEY_AWS_REGION || 'us-east-1' // Default region if not provided + const accessKeyId = process.env.SECRETKEY_AWS_ACCESS_KEY + const secretAccessKey = process.env.SECRETKEY_AWS_SECRET_KEY + + let credentials: SecretsManagerClientConfig['credentials'] | undefined + if (accessKeyId && secretAccessKey) { + credentials = { + accessKeyId, + secretAccessKey + } + } + secretsManagerClient = new SecretsManagerClient({ credentials, region }) +} + export const databaseEntities: IDatabaseEntity = { ChatFlow: ChatFlow, ChatMessage: ChatMessage, Tool: Tool, Credential: Credential, + Lead: Lead, Assistant: Assistant, Variable: Variable, DocumentStore: DocumentStore, @@ -431,15 +467,19 @@ type BuildFlowParams = { chatId: string sessionId: string chatflowid: string + apiMessageId: string appDataSource: DataSource overrideConfig?: ICommonObject + apiOverrideStatus?: boolean + nodeOverrides?: INodeOverrides + availableVariables?: IVariable[] + variableOverrides?: IVariableOverride[] cachePool?: CachePool isUpsert?: boolean stopNodeId?: string uploads?: IFileUpload[] baseURL?: string - socketIO?: Server - socketIOClientId?: string + uploadedFilesContent?: string } /** @@ -455,19 +495,23 @@ export const buildFlow = async ({ depthQueue, componentNodes, question, + uploadedFilesContent, chatHistory, + apiMessageId, chatId, sessionId, chatflowid, appDataSource, overrideConfig, + apiOverrideStatus = false, + nodeOverrides = {}, + availableVariables = [], + variableOverrides = [], cachePool, isUpsert, stopNodeId, uploads, - baseURL, - socketIO, - socketIOClientId + baseURL }: BuildFlowParams) => { const flowNodes = cloneDeep(reactFlowNodes) @@ -489,6 +533,14 @@ export const buildFlow = async ({ const initializedNodes: Set = new Set() const reversedGraph = constructGraphs(reactFlowNodes, reactFlowEdges, { isReversed: true }).graph + + const flowData: ICommonObject = { + chatflowid, + chatId, + sessionId, + chatHistory, + ...overrideConfig + } while (nodeQueue.length) { const { nodeId, depth } = nodeQueue.shift() as INodeQueue @@ -502,18 +554,24 @@ export const buildFlow = async ({ const newNodeInstance = new nodeModule.nodeClass() let flowNodeData = cloneDeep(reactFlowNode.data) - if (overrideConfig) flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig) + + // Only override the config if its status is true + if (overrideConfig && apiOverrideStatus) { + flowNodeData = replaceInputsWithConfig(flowNodeData, overrideConfig, nodeOverrides, variableOverrides) + } if (isUpsert) upsertHistory['flowData'] = saveUpsertFlowData(flowNodeData, upsertHistory) const reactFlowNodeData: INodeData = await resolveVariables( user, - appDataSource, flowNodeData, flowNodes, question, chatHistory, - overrideConfig + flowData, + uploadedFilesContent, + availableVariables, + variableOverrides ) if (isUpsert && stopNodeId && nodeId === stopNodeId) { @@ -523,15 +581,14 @@ export const buildFlow = async ({ sessionId, chatflowid, chatHistory, + apiMessageId, logger, appDataSource, databaseEntities, cachePool, dynamicVariables, uploads, - baseURL, - socketIO, - socketIOClientId + baseURL }) if (indexResult) upsertHistory['result'] = indexResult logger.debug(`[server]: Finished upserting ${reactFlowNode.data.label} (${reactFlowNode.data.id})`) @@ -544,7 +601,8 @@ export const buildFlow = async ({ initializedNodes.add(nodeId) } else { logger.debug(`[server]: Initializing ${reactFlowNode.data.label} (${reactFlowNode.data.id})`) - let outputResult = await newNodeInstance.init(reactFlowNodeData, question, { + const finalQuestion = uploadedFilesContent ? `${uploadedFilesContent}\n\n${question}` : question + let outputResult = await newNodeInstance.init(reactFlowNodeData, finalQuestion, { chatId, sessionId, chatflowid, @@ -557,8 +615,6 @@ export const buildFlow = async ({ dynamicVariables, uploads, baseURL, - socketIO, - socketIOClientId, componentNodes: componentNodes as ICommonObject }) @@ -577,9 +633,15 @@ export const buildFlow = async ({ if (reactFlowNode.data.name === 'ifElseFunction' && typeof outputResult === 'object') { let sourceHandle = '' if (outputResult.type === true) { - sourceHandle = `${nodeId}-output-returnFalse-string|number|boolean|json|array` + // sourceHandle = `${nodeId}-output-returnFalse-string|number|boolean|json|array` + sourceHandle = ( + reactFlowNode.data.outputAnchors.flatMap((n) => n.options).find((n) => n?.name === 'returnFalse') as any + )?.id } else if (outputResult.type === false) { - sourceHandle = `${nodeId}-output-returnTrue-string|number|boolean|json|array` + // sourceHandle = `${nodeId}-output-returnTrue-string|number|boolean|json|array` + sourceHandle = ( + reactFlowNode.data.outputAnchors.flatMap((n) => n.options).find((n) => n?.name === 'returnTrue') as any + )?.id } const ifElseEdge = reactFlowEdges.find((edg) => edg.source === nodeId && edg.sourceHandle === sourceHandle) @@ -702,28 +764,29 @@ export const clearSessionMemory = async ( } } -const getGlobalVariable = async (user: IUser, appDataSource: DataSource, overrideConfig?: ICommonObject) => { - const conditions: any = [ - { userId: user?.id, organizationId: user?.organizationId }, - { organizationId: user?.organizationId, visibility: Like('%Organization%') }, - { userId: null } - ] - const variables = await appDataSource.getRepository(Variable).find({ - where: conditions - }) - +const getGlobalVariable = async ( + overrideConfig?: ICommonObject, + availableVariables: IVariable[] = [], + variableOverrides: ICommonObject[] = [] +) => { // override variables defined in overrideConfig // nodeData.inputs.vars is an Object, check each property and override the variable - if (overrideConfig?.vars) { + if (overrideConfig?.vars && variableOverrides) { for (const propertyName of Object.getOwnPropertyNames(overrideConfig.vars)) { - const foundVar = variables.find((v) => v.name === propertyName) + // Check if this variable is enabled for override + const override = variableOverrides.find((v) => v.name === propertyName) + if (!override?.enabled) { + continue // Skip this variable if it's not enabled for override + } + + const foundVar = availableVariables.find((v) => v.name === propertyName) if (foundVar) { // even if the variable was defined as runtime, we override it with static value foundVar.type = 'static' foundVar.value = overrideConfig.vars[propertyName] } else { // add it the variables, if not found locally in the db - variables.push({ + availableVariables.push({ name: propertyName, type: 'static', value: overrideConfig.vars[propertyName], @@ -736,8 +799,8 @@ const getGlobalVariable = async (user: IUser, appDataSource: DataSource, overrid } let vars = {} - if (variables.length) { - for (const item of variables) { + if (availableVariables.length) { + for (const item of availableVariables) { let value = item.value // read from .env file @@ -765,24 +828,26 @@ const getGlobalVariable = async (user: IUser, appDataSource: DataSource, overrid * @returns {string} */ export const getVariableValue = async ( - user: IUser, - appDataSource: DataSource, paramValue: string | object, reactFlowNodes: IReactFlowNode[], question: string, chatHistory: IMessage[], isAcceptVariable = false, - overrideConfig?: ICommonObject + flowConfig?: ICommonObject, + uploadedFilesContent?: string, + availableVariables: IVariable[] = [], + variableOverrides: ICommonObject[] = [] ) => { const isObject = typeof paramValue === 'object' - let returnVal = (isObject ? JSON.stringify(paramValue) : paramValue) ?? '' + const initialValue = (isObject ? JSON.stringify(paramValue) : paramValue) ?? '' + let returnVal = initialValue const variableStack = [] const variableDict = {} as IVariableDict let startIdx = 0 - const endIdx = returnVal.length - 1 + const endIdx = initialValue.length - 1 while (startIdx < endIdx) { - const substr = returnVal.substring(startIdx, startIdx + 2) + const substr = initialValue.substring(startIdx, startIdx + 2) // Store the opening double curly bracket if (substr === '{{') { @@ -793,7 +858,7 @@ export const getVariableValue = async ( if (substr === '}}' && variableStack.length > 0 && variableStack[variableStack.length - 1].substr === '{{') { const variableStartIdx = variableStack[variableStack.length - 1].startIdx const variableEndIdx = startIdx - const variableFullPath = returnVal.substring(variableStartIdx, variableEndIdx) + const variableFullPath = initialValue.substring(variableStartIdx, variableEndIdx) /** * Apply string transformation to convert special chars: @@ -804,14 +869,26 @@ export const getVariableValue = async ( variableDict[`{{${variableFullPath}}}`] = handleEscapeCharacters(question, false) } + if (isAcceptVariable && variableFullPath === FILE_ATTACHMENT_PREFIX) { + variableDict[`{{${variableFullPath}}}`] = handleEscapeCharacters(uploadedFilesContent, false) + } + if (isAcceptVariable && variableFullPath === CHAT_HISTORY_VAR_PREFIX) { variableDict[`{{${variableFullPath}}}`] = handleEscapeCharacters(convertChatHistoryToText(chatHistory), false) } if (variableFullPath.startsWith('$vars.')) { - const vars = await getGlobalVariable(user, appDataSource, overrideConfig) + const vars = await getGlobalVariable(flowConfig, availableVariables, variableOverrides) const variableValue = get(vars, variableFullPath.replace('$vars.', '')) - if (variableValue) { + if (variableValue != null) { + variableDict[`{{${variableFullPath}}}`] = variableValue + returnVal = returnVal.split(`{{${variableFullPath}}}`).join(variableValue) + } + } + + if (variableFullPath.startsWith('$flow.') && flowConfig) { + const variableValue = get(flowConfig, variableFullPath.replace('$flow.', '')) + if (variableValue != null) { variableDict[`{{${variableFullPath}}}`] = variableValue returnVal = returnVal.split(`{{${variableFullPath}}}`).join(variableValue) } @@ -905,12 +982,14 @@ export const getVariableValue = async ( */ export const resolveVariables = async ( user: IUser, - appDataSource: DataSource, reactFlowNodeData: INodeData, reactFlowNodes: IReactFlowNode[], question: string, chatHistory: IMessage[], - overrideConfig?: ICommonObject + flowConfig?: ICommonObject, + uploadedFilesContent?: string, + availableVariables: IVariable[] = [], + variableOverrides: ICommonObject[] = [] ): Promise => { let flowNodeData = cloneDeep(reactFlowNodeData) const types = 'inputs' @@ -922,14 +1001,15 @@ export const resolveVariables = async ( const resolvedInstances = [] for (const param of paramValue) { const resolvedInstance = await getVariableValue( - user, - appDataSource, param, reactFlowNodes, question, chatHistory, undefined, - overrideConfig + flowConfig, + uploadedFilesContent, + availableVariables, + variableOverrides ) resolvedInstances.push(resolvedInstance) } @@ -937,14 +1017,15 @@ export const resolveVariables = async ( } else { const isAcceptVariable = reactFlowNodeData.inputParams.find((param) => param.name === key)?.acceptVariable ?? false const resolvedInstance = await getVariableValue( - user, - appDataSource, paramValue, reactFlowNodes, question, chatHistory, isAcceptVariable, - overrideConfig + flowConfig, + uploadedFilesContent, + availableVariables, + variableOverrides ) paramsObj[key] = resolvedInstance } @@ -961,18 +1042,63 @@ export const resolveVariables = async ( * Loop through each inputs and replace their value with override config values * @param {INodeData} flowNodeData * @param {ICommonObject} overrideConfig + * @param {INodeOverrides} nodeOverrides + * @param {IVariableOverride[]} variableOverrides * @returns {INodeData} */ -export const replaceInputsWithConfig = (flowNodeData: INodeData, overrideConfig: ICommonObject) => { +export const replaceInputsWithConfig = ( + flowNodeData: INodeData, + overrideConfig: ICommonObject, + nodeOverrides: INodeOverrides, + variableOverrides: IVariableOverride[] +) => { const types = 'inputs' + const isParameterEnabled = (nodeType: string, paramName: string): boolean => { + if (!nodeOverrides[nodeType]) return false + const parameter = nodeOverrides[nodeType].find((param: any) => param.name === paramName) + return parameter?.enabled ?? false + } + const getParamValues = (inputsObj: ICommonObject) => { for (const config in overrideConfig) { - // If overrideConfig[key] is object - if (overrideConfig[config] && typeof overrideConfig[config] === 'object') { + /** + * Several conditions: + * 1. If config is 'analytics', always allow it + * 2. If config is 'vars', check its object and filter out the variables that are not enabled for override + * 3. If typeof config's value is an object, check if the node id is in the overrideConfig object and if the parameter (systemMessagePrompt) is enabled + * Example: + * "systemMessagePrompt": { + * "chatPromptTemplate_0": "You are an assistant" + * } + * 4. If typeof config's value is a string, check if the parameter is enabled + * Example: + * "systemMessagePrompt": "You are an assistant" + */ + + if (config === 'analytics') { + // pass + } else if (config === 'vars') { + if (typeof overrideConfig[config] === 'object') { + const filteredVars: ICommonObject = {} + + const vars = overrideConfig[config] + for (const variable in vars) { + const override = variableOverrides.find((v) => v.name === variable) + if (!override?.enabled) { + continue // Skip this variable if it's not enabled for override + } + filteredVars[variable] = vars[variable] + } + overrideConfig[config] = filteredVars + } + } else if (overrideConfig[config] && typeof overrideConfig[config] === 'object') { const nodeIds = Object.keys(overrideConfig[config]) if (nodeIds.includes(flowNodeData.id)) { - inputsObj[config] = overrideConfig[config][flowNodeData.id] + // Check if this parameter is enabled + if (isParameterEnabled(flowNodeData.label, config)) { + inputsObj[config] = overrideConfig[config][flowNodeData.id] + } continue } else if (nodeIds.some((nodeId) => nodeId.includes(flowNodeData.name))) { /* @@ -982,6 +1108,14 @@ export const replaceInputsWithConfig = (flowNodeData: INodeData, overrideConfig: */ continue } + } else { + // Skip if it is an override "files" input, such as pdfFile, txtFile, etc + if (typeof overrideConfig[config] === 'string' && overrideConfig[config].includes('FILE-STORAGE::')) { + // pass + } else if (!isParameterEnabled(flowNodeData.label, config)) { + // Only proceed if the parameter is enabled + continue + } } let paramValue = inputsObj[config] @@ -1089,35 +1223,16 @@ export const isSameOverrideConfig = ( } /** - * Map MimeType to InputField - * @param {string} mimeType - * @returns {Promise} + * @param {string} existingChatId + * @param {string} newChatId + * @returns {boolean} */ -export const mapMimeTypeToInputField = (mimeType: string) => { - switch (mimeType) { - case 'text/plain': - return 'txtFile' - case 'application/pdf': - return 'pdfFile' - case 'application/json': - return 'jsonFile' - case 'text/csv': - return 'csvFile' - case 'application/json-lines': - case 'application/jsonl': - case 'text/jsonl': - return 'jsonlinesFile' - case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': - return 'docxFile' - case 'application/vnd.yaml': - case 'application/x-yaml': - case 'text/vnd.yaml': - case 'text/x-yaml': - case 'text/yaml': - return 'yamlFile' - default: - return 'txtFile' +export const isSameChatId = (existingChatId?: string, newChatId?: string): boolean => { + if (isEqual(existingChatId, newChatId)) { + return true } + if (!existingChatId && !newChatId) return true + return false } /** @@ -1197,11 +1312,13 @@ export const findAvailableConfigs = (reactFlowNodes: IReactFlowNode[], component * @returns {boolean} */ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNodeData: INodeData) => { + /** Deprecated, add streaming input param to the component instead **/ const streamAvailableLLMs = { 'Chat Models': [ 'azureChatOpenAI', 'chatOpenAI', 'chatOpenAI_LlamaIndex', + 'chatOpenAICustom', 'chatAnthropic', 'chatAnthropic_LlamaIndex', 'chatOllama', @@ -1209,6 +1326,7 @@ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNod 'awsChatBedrock', 'chatMistralAI', 'chatMistral_LlamaIndex', + 'chatAlibabaTongyi', 'groqChat', 'chatGroq_LlamaIndex', 'chatCohere', @@ -1225,9 +1343,18 @@ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNod for (const flowNode of reactFlowNodes) { const data = flowNode.data if (data.category === 'Chat Models' || data.category === 'LLMs') { - isChatOrLLMsExist = true - const validLLMs = streamAvailableLLMs[data.category] - if (!validLLMs.includes(data.name)) return false + if (data.inputs?.streaming === false || data.inputs?.streaming === 'false') { + return false + } + if (data.inputs?.streaming === true || data.inputs?.streaming === 'true') { + isChatOrLLMsExist = true // passed, proceed to next check + } + /** Deprecated, add streaming input param to the component instead **/ + if (!Object.prototype.hasOwnProperty.call(data.inputs, 'streaming') && !data.inputs?.streaming) { + isChatOrLLMsExist = true + const validLLMs = streamAvailableLLMs[data.category] + if (!validLLMs.includes(data.name)) return false + } } } @@ -1238,28 +1365,9 @@ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNod isValidChainOrAgent = !blacklistChains.includes(endingNodeData.name) } else if (endingNodeData.category === 'Agents') { // Agent that are available to stream - const whitelistAgents = [ - 'openAIFunctionAgent', - 'mistralAIToolAgent', - 'csvAgent', - 'airtableAgent', - 'conversationalRetrievalAgent', - 'openAIToolAgent', - 'toolAgent', - 'openAIToolAgentLlamaIndex' - ] + const whitelistAgents = ['csvAgent', 'airtableAgent', 'toolAgent', 'conversationalRetrievalToolAgent', 'openAIToolAgentLlamaIndex'] isValidChainOrAgent = whitelistAgents.includes(endingNodeData.name) - // Anthropic streaming has some bug where the log is being sent, temporarily disabled - const model = endingNodeData.inputs?.model - if (endingNodeData.name.includes('toolAgent')) { - if (typeof model === 'string' && model.includes('chatAnthropic')) { - return false - } else if (typeof model === 'object' && 'id' in model && model['id'].includes('chatAnthropic')) { - return false - } - } - // If agent is openAIAssistant, streaming is enabled if (endingNodeData.name === 'openAIAssistant') return true } else if (endingNodeData.category === 'Engine') { @@ -1280,14 +1388,6 @@ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNod return isChatOrLLMsExist && isValidChainOrAgent && !isOutputParserExist } -/** - * Generate an encryption key - * @returns {string} - */ -export const generateEncryptKey = (): string => { - return randomBytes(24).toString('base64') -} - /** * Returns the encryption key * @returns {Promise} @@ -1314,7 +1414,39 @@ export const getEncryptionKey = async (): Promise => { * @returns {Promise} */ export const encryptCredentialData = async (plainDataObj: ICredentialDataDecrypted): Promise => { + if (USE_AWS_SECRETS_MANAGER && secretsManagerClient) { + const secretName = `FlowiseCredential_${randomBytes(12).toString('hex')}` + + logger.info(`[server]: Upserting AWS Secret: ${secretName}`) + + const secretString = JSON.stringify({ ...plainDataObj }) + + try { + // Try to update the secret if it exists + const putCommand = new PutSecretValueCommand({ + SecretId: secretName, + SecretString: secretString + }) + await secretsManagerClient.send(putCommand) + } catch (error: any) { + if (error.name === 'ResourceNotFoundException') { + // Secret doesn't exist, so create it + const createCommand = new CreateSecretCommand({ + Name: secretName, + SecretString: secretString + }) + await secretsManagerClient.send(createCommand) + } else { + // Rethrow any other errors + throw error + } + } + return secretName + } + const encryptKey = await getEncryptionKey() + + // Fallback to existing code return AES.encrypt(JSON.stringify(plainDataObj), encryptKey).toString() } @@ -1330,22 +1462,52 @@ export const decryptCredentialData = async ( componentCredentialName?: string, componentCredentials?: IComponentCredentials ): Promise => { - const encryptKey = await getEncryptionKey() - const decryptedData = AES.decrypt(encryptedData, encryptKey) - const decryptedDataStr = decryptedData.toString(enc.Utf8) + let decryptedDataStr: string + + if (USE_AWS_SECRETS_MANAGER && secretsManagerClient) { + try { + logger.info(`[server]: Reading AWS Secret: ${encryptedData}`) + const command = new GetSecretValueCommand({ SecretId: encryptedData }) + const response = await secretsManagerClient.send(command) + + if (response.SecretString) { + const secretObj = JSON.parse(response.SecretString) + decryptedDataStr = JSON.stringify(secretObj) + } else { + throw new Error('Failed to retrieve secret value.') + } + } catch (error) { + console.error(error) + throw new Error('Failed to decrypt credential data.') + } + } else { + // Fallback to existing code + const encryptKey = await getEncryptionKey() + const decryptedData = AES.decrypt(encryptedData, encryptKey) + decryptedDataStr = decryptedData.toString(enc.Utf8) + } + if (!decryptedDataStr) return {} try { if (componentCredentialName && componentCredentials) { - const plainDataObj = JSON.parse(decryptedData.toString(enc.Utf8)) + const plainDataObj = JSON.parse(decryptedDataStr) return redactCredentialWithPasswordType(componentCredentialName, plainDataObj, componentCredentials) } - return JSON.parse(decryptedData.toString(enc.Utf8)) + return JSON.parse(decryptedDataStr) } catch (e) { console.error(e) return {} } } +/** + * Generate an encryption key + * @returns {string} + */ +export const generateEncryptKey = (): string => { + return randomBytes(24).toString('base64') +} + /** * Transform ICredentialBody from req to Credential entity * @param {ICredentialReqBody} body @@ -1587,3 +1749,66 @@ export const convertToValidFilename = (word: string) => { .replace(' ', '') .toLowerCase() } + +export const aMonthAgo = () => { + const date = new Date() + date.setMonth(new Date().getMonth() - 1) + return date +} + +export const getAPIOverrideConfig = (chatflow: IChatFlow) => { + try { + const apiConfig = chatflow.apiConfig ? JSON.parse(chatflow.apiConfig) : {} + const nodeOverrides: INodeOverrides = + apiConfig.overrideConfig && apiConfig.overrideConfig.nodes ? apiConfig.overrideConfig.nodes : {} + const variableOverrides: IVariableOverride[] = + apiConfig.overrideConfig && apiConfig.overrideConfig.variables ? apiConfig.overrideConfig.variables : [] + const apiOverrideStatus: boolean = + apiConfig.overrideConfig && apiConfig.overrideConfig.status ? apiConfig.overrideConfig.status : false + + return { nodeOverrides, variableOverrides, apiOverrideStatus } + } catch (error) { + return { nodeOverrides: {}, variableOverrides: [], apiOverrideStatus: false } + } +} + +export const getUploadPath = (): string => { + return process.env.BLOB_STORAGE_PATH + ? path.join(process.env.BLOB_STORAGE_PATH, 'uploads') + : path.join(getUserHome(), '.flowise', 'uploads') +} + +const getOrgId = () => { + const settingsContent = fs.readFileSync(getUserSettingsFilePath(), 'utf8') + try { + const settings = JSON.parse(settingsContent) + return settings.instanceId + } catch (error) { + return '' + } +} + +export const getMulterStorage = () => { + const storageType = process.env.STORAGE_TYPE ? process.env.STORAGE_TYPE : 'local' + + if (storageType === 's3') { + const s3Client = getS3Config().s3Client + const Bucket = getS3Config().Bucket + + const upload = multer({ + storage: multerS3({ + s3: s3Client, + bucket: Bucket, + metadata: function (req, file, cb) { + cb(null, { fieldName: file.fieldname, originalName: file.originalname, orgId: getOrgId() }) + }, + key: function (req, file, cb) { + cb(null, `${getOrgId()}/${Date.now().toString()}`) + } + }) + }) + return upload + } else { + return multer({ dest: getUploadPath() }) + } +} diff --git a/packages/server/src/utils/logger.ts b/packages/server/src/utils/logger.ts index c9d8cc72806..207f7ce34e9 100644 --- a/packages/server/src/utils/logger.ts +++ b/packages/server/src/utils/logger.ts @@ -1,11 +1,58 @@ import * as path from 'path' import * as fs from 'fs' +import { hostname } from 'node:os' import config from './config' // should be replaced by node-config or similar import { createLogger, transports, format } from 'winston' import { NextFunction, Request, Response } from 'express' +import { S3ClientConfig } from '@aws-sdk/client-s3' + +const { S3StreamLogger } = require('s3-streamlogger') const { combine, timestamp, printf, errors } = format +let s3ServerStream: any +let s3ErrorStream: any +let s3ServerReqStream: any +if (process.env.STORAGE_TYPE === 's3') { + const accessKeyId = process.env.S3_STORAGE_ACCESS_KEY_ID + const secretAccessKey = process.env.S3_STORAGE_SECRET_ACCESS_KEY + const region = process.env.S3_STORAGE_REGION + const s3Bucket = process.env.S3_STORAGE_BUCKET_NAME + const customURL = process.env.S3_ENDPOINT_URL + const forcePathStyle = process.env.S3_FORCE_PATH_STYLE === 'true' + + const s3Config: S3ClientConfig = { + region: region, + endpoint: customURL, + forcePathStyle: forcePathStyle, + credentials: { + accessKeyId: accessKeyId as string, + secretAccessKey: secretAccessKey as string + } + } + + s3ServerStream = new S3StreamLogger({ + bucket: s3Bucket, + folder: 'logs/server', + name_format: `server-%Y-%m-%d-%H-%M-%S-%L-${hostname()}.log`, + config: s3Config + }) + + s3ErrorStream = new S3StreamLogger({ + bucket: s3Bucket, + folder: 'logs/error', + name_format: `server-error-%Y-%m-%d-%H-%M-%S-%L-${hostname()}.log`, + config: s3Config + }) + + s3ServerReqStream = new S3StreamLogger({ + bucket: s3Bucket, + folder: 'logs/requests', + name_format: `server-requests-%Y-%m-%d-%H-%M-%S-%L-${hostname()}.log.jsonl`, + config: s3Config + }) +} + // expect the log dir be relative to the projects root const logDir = config.logging.dir @@ -29,33 +76,60 @@ const logger = createLogger({ }, transports: [ new transports.Console(), - new transports.File({ - filename: path.join(logDir, config.logging.server.filename ?? 'server.log'), - level: config.logging.server.level ?? 'info' - }), - new transports.File({ - filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log'), - level: 'error' // Log only errors to this file - }) + ...(!process.env.STORAGE_TYPE || process.env.STORAGE_TYPE === 'local' + ? [ + new transports.File({ + filename: path.join(logDir, config.logging.server.filename ?? 'server.log'), + level: config.logging.server.level ?? 'info' + }), + new transports.File({ + filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log'), + level: 'error' // Log only errors to this file + }) + ] + : []), + ...(process.env.STORAGE_TYPE === 's3' + ? [ + new transports.Stream({ + stream: s3ServerStream + }) + ] + : []) ], exceptionHandlers: [ - new transports.File({ - filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log') - }) + ...(!process.env.STORAGE_TYPE || process.env.STORAGE_TYPE === 'local' + ? [ + new transports.File({ + filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log') + }) + ] + : []), + ...(process.env.STORAGE_TYPE === 's3' + ? [ + new transports.Stream({ + stream: s3ErrorStream + }) + ] + : []) ], rejectionHandlers: [ - new transports.File({ - filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log') - }) + ...(!process.env.STORAGE_TYPE || process.env.STORAGE_TYPE === 'local' + ? [ + new transports.File({ + filename: path.join(logDir, config.logging.server.errorFilename ?? 'server-error.log') + }) + ] + : []), + ...(process.env.STORAGE_TYPE === 's3' + ? [ + new transports.Stream({ + stream: s3ErrorStream + }) + ] + : []) ] }) -/** - * This function is used by express as a middleware. - * @example - * this.app = express() - * this.app.use(expressRequestLogger) - */ export function expressRequestLogger(req: Request, res: Response, next: NextFunction): void { const unwantedLogURLs = ['/api/v1/node-icon/', '/api/v1/components-credentials-icon/'] if (/\/api\/v1\//i.test(req.url) && !unwantedLogURLs.some((url) => new RegExp(url, 'i').test(req.url))) { @@ -73,10 +147,21 @@ export function expressRequestLogger(req: Request, res: Response, next: NextFunc } }, transports: [ - new transports.File({ - filename: path.join(logDir, config.logging.express.filename ?? 'server-requests.log.jsonl'), - level: config.logging.express.level ?? 'debug' - }) + ...(!process.env.STORAGE_TYPE || process.env.STORAGE_TYPE === 'local' + ? [ + new transports.File({ + filename: path.join(logDir, config.logging.express.filename ?? 'server-requests.log.jsonl'), + level: config.logging.express.level ?? 'debug' + }) + ] + : []), + ...(process.env.STORAGE_TYPE === 's3' + ? [ + new transports.Stream({ + stream: s3ServerReqStream + }) + ] + : []) ] }) diff --git a/packages/server/src/utils/prompt.ts b/packages/server/src/utils/prompt.ts new file mode 100644 index 00000000000..a2862042f86 --- /dev/null +++ b/packages/server/src/utils/prompt.ts @@ -0,0 +1,57 @@ +export const ASSISTANT_PROMPT_GENERATOR = `Given a task description, produce a detailed system prompt to guide a language model in completing the task effectively. + + +{{task}} + + +# Guidelines + +- Understand the Task: Grasp the main objective, goals, requirements, constraints, and expected output. +- Minimal Changes: If an existing prompt is provided, improve it only if it's simple. For complex prompts, enhance clarity and add missing elements without altering the original structure. +- Reasoning Before Conclusions**: Encourage reasoning steps before any conclusions are reached. ATTENTION! If the user provides examples where the reasoning happens afterward, REVERSE the order! NEVER START EXAMPLES WITH CONCLUSIONS! + - Reasoning Order: Call out reasoning portions of the prompt and conclusion parts (specific fields by name). For each, determine the ORDER in which this is done, and whether it needs to be reversed. + - Conclusion, classifications, or results should ALWAYS appear last. +- Examples: Include high-quality examples if helpful, using placeholders [in brackets] for complex elements. + - What kinds of examples may need to be included, how many, and whether they are complex enough to benefit from placeholders. +- Clarity and Conciseness: Use clear, specific language. Avoid unnecessary instructions or bland statements. +- Formatting: Use markdown features for readability. DO NOT USE \`\`\` CODE BLOCKS UNLESS SPECIFICALLY REQUESTED. +- Preserve User Content: If the input task or prompt includes extensive guidelines or examples, preserve them entirely, or as closely as possible. If they are vague, consider breaking down into sub-steps. Keep any details, guidelines, examples, variables, or placeholders provided by the user. +- Constants: DO include constants in the prompt, as they are not susceptible to prompt injection. Such as guides, rubrics, and examples. +- Output Format: Explicitly the most appropriate output format, in detail. This should include length and syntax (e.g. short sentence, paragraph, JSON, etc.) + - For tasks outputting well-defined or structured data (classification, JSON, etc.) bias toward outputting a JSON. + - JSON should never be wrapped in code blocks (\`\`\`) unless explicitly requested. + +The final prompt you output should adhere to the following structure below. Do not include any additional commentary, only output the completed system prompt. SPECIFICALLY, do not include any additional messages at the start or end of the prompt. (e.g. no "---") + +[Concise instruction describing the task - this should be the first line in the prompt, no section header] + +[Additional details as needed.] + +[Optional sections with headings or bullet points for detailed steps.] + +# Steps [optional] + +[optional: a detailed breakdown of the steps necessary to accomplish the task] + +# Output Format + +[Specifically call out how the output should be formatted, be it response length, structure e.g. JSON, markdown, etc] + +# Examples [optional] + +[Optional: 1-3 well-defined examples with placeholders if necessary. Clearly mark where examples start and end, and what the input and output are. User placeholders as necessary.] +[If the examples are shorter than what a realistic example is expected to be, make a reference with () explaining how real examples should be longer / shorter / different. AND USE PLACEHOLDERS! ] + +# Notes [optional] + +[optional: edge cases, details, and an area to call or repeat out specific important considerations]` + +export const DOCUMENTSTORE_TOOL_DESCRIPTION_PROMPT_GENERATOR = `Here's the document context for which I would like you to create a short sentence of, under what condition this information is useful. Sentence must not more than 1024 characters. + + +{context} + + +Based on context, please create a short sentence that another AI could use as tool description. The short sentence should: +- Use the same language as context. +Please generate the short sentence and output only the short sentence.` diff --git a/packages/server/src/utils/rateLimit.ts b/packages/server/src/utils/rateLimit.ts index 0c08f1d24e7..4e8e9db4bda 100644 --- a/packages/server/src/utils/rateLimit.ts +++ b/packages/server/src/utils/rateLimit.ts @@ -1,48 +1,174 @@ import { NextFunction, Request, Response } from 'express' import { rateLimit, RateLimitRequestHandler } from 'express-rate-limit' -import { IChatFlow } from '../Interface' +import { IChatFlow, MODE } from '../Interface' import { Mutex } from 'async-mutex' +import { RedisStore } from 'rate-limit-redis' +import Redis from 'ioredis' +import { QueueEvents, QueueEventsListener, QueueEventsProducer } from 'bullmq' -let rateLimiters: Record = {} -const rateLimiterMutex = new Mutex() - -async function addRateLimiter(id: string, duration: number, limit: number, message: string) { - const release = await rateLimiterMutex.acquire() - try { - rateLimiters[id] = rateLimit({ - windowMs: duration * 1000, - max: limit, - handler: (_, res) => { - res.status(429).send(message) +interface CustomListener extends QueueEventsListener { + updateRateLimiter: (args: { limitDuration: number; limitMax: number; limitMsg: string; id: string }) => void +} + +const QUEUE_NAME = 'ratelimit' +const QUEUE_EVENT_NAME = 'updateRateLimiter' + +export class RateLimiterManager { + private rateLimiters: Record = {} + private rateLimiterMutex: Mutex = new Mutex() + private redisClient: Redis + private static instance: RateLimiterManager + private queueEventsProducer: QueueEventsProducer + private queueEvents: QueueEvents + + constructor() { + if (process.env.MODE === MODE.QUEUE) { + if (process.env.REDIS_URL) { + this.redisClient = new Redis(process.env.REDIS_URL) + } else { + this.redisClient = new Redis({ + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + tls: + process.env.REDIS_TLS === 'true' + ? { + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + : undefined + }) } - }) - } finally { - release() + this.queueEventsProducer = new QueueEventsProducer(QUEUE_NAME, { connection: this.getConnection() }) + this.queueEvents = new QueueEvents(QUEUE_NAME, { connection: this.getConnection() }) + } } -} -export function getRateLimiter(req: Request, res: Response, next: NextFunction) { - const id = req.params.id - if (!rateLimiters[id]) return next() - const idRateLimiter = rateLimiters[id] - return idRateLimiter(req, res, next) -} + getConnection() { + let tlsOpts = undefined + if (process.env.REDIS_URL && process.env.REDIS_URL.startsWith('rediss://')) { + tlsOpts = { + rejectUnauthorized: false + } + } else if (process.env.REDIS_TLS === 'true') { + tlsOpts = { + cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, + key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, + ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined + } + } + return { + url: process.env.REDIS_URL || undefined, + host: process.env.REDIS_HOST || 'localhost', + port: parseInt(process.env.REDIS_PORT || '6379'), + username: process.env.REDIS_USERNAME || undefined, + password: process.env.REDIS_PASSWORD || undefined, + tls: tlsOpts + } + } + + public static getInstance(): RateLimiterManager { + if (!RateLimiterManager.instance) { + RateLimiterManager.instance = new RateLimiterManager() + } + return RateLimiterManager.instance + } + + public async addRateLimiter(id: string, duration: number, limit: number, message: string): Promise { + const release = await this.rateLimiterMutex.acquire() + try { + if (process.env.MODE === MODE.QUEUE) { + this.rateLimiters[id] = rateLimit({ + windowMs: duration * 1000, + max: limit, + standardHeaders: true, + legacyHeaders: false, + message, + store: new RedisStore({ + prefix: `rl:${id}`, + // @ts-expect-error - Known issue: the `call` function is not present in @types/ioredis + sendCommand: (...args: string[]) => this.redisClient.call(...args) + }) + }) + } else { + this.rateLimiters[id] = rateLimit({ + windowMs: duration * 1000, + max: limit, + message + }) + } + } finally { + release() + } + } + + public removeRateLimiter(id: string): void { + if (this.rateLimiters[id]) { + delete this.rateLimiters[id] + } + } -export async function createRateLimiter(chatFlow: IChatFlow) { - if (!chatFlow.apiConfig) return - const apiConfig = JSON.parse(chatFlow.apiConfig) + public getRateLimiter(): (req: Request, res: Response, next: NextFunction) => void { + return (req: Request, res: Response, next: NextFunction) => { + const id = req.params.id + if (!this.rateLimiters[id]) return next() + const idRateLimiter = this.rateLimiters[id] + return idRateLimiter(req, res, next) + } + } - const rateLimit: { limitDuration: number; limitMax: number; limitMsg: string } = apiConfig.rateLimit - if (!rateLimit) return + public async updateRateLimiter(chatFlow: IChatFlow, isInitialized?: boolean): Promise { + if (!chatFlow.apiConfig) return + const apiConfig = JSON.parse(chatFlow.apiConfig) - const { limitDuration, limitMax, limitMsg } = rateLimit - if (limitMax && limitDuration && limitMsg) await addRateLimiter(chatFlow.id, limitDuration, limitMax, limitMsg) -} + const rateLimit: { limitDuration: number; limitMax: number; limitMsg: string; status?: boolean } = apiConfig.rateLimit + if (!rateLimit) return -export async function initializeRateLimiter(chatFlowPool: IChatFlow[]) { - await Promise.all( - chatFlowPool.map(async (chatFlow) => { - await createRateLimiter(chatFlow) - }) - ) + const { limitDuration, limitMax, limitMsg, status } = rateLimit + + if (!isInitialized && process.env.MODE === MODE.QUEUE && this.queueEventsProducer) { + await this.queueEventsProducer.publishEvent({ + eventName: QUEUE_EVENT_NAME, + limitDuration, + limitMax, + limitMsg, + id: chatFlow.id + }) + } else { + if (status === false) { + this.removeRateLimiter(chatFlow.id) + } else if (limitMax && limitDuration && limitMsg) { + await this.addRateLimiter(chatFlow.id, limitDuration, limitMax, limitMsg) + } + } + } + + public async initializeRateLimiters(chatflows: IChatFlow[]): Promise { + await Promise.all( + chatflows.map(async (chatFlow) => { + await this.updateRateLimiter(chatFlow, true) + }) + ) + + if (process.env.MODE === MODE.QUEUE && this.queueEvents) { + this.queueEvents.on( + QUEUE_EVENT_NAME, + async ({ + limitDuration, + limitMax, + limitMsg, + id + }: { + limitDuration: number + limitMax: number + limitMsg: string + id: string + }) => { + await this.addRateLimiter(id, limitDuration, limitMax, limitMsg) + } + ) + } + } } diff --git a/packages/server/src/utils/updateChatMessageFeedback.ts b/packages/server/src/utils/updateChatMessageFeedback.ts index ef327fa78f3..69cdffd8b4a 100644 --- a/packages/server/src/utils/updateChatMessageFeedback.ts +++ b/packages/server/src/utils/updateChatMessageFeedback.ts @@ -1,6 +1,8 @@ import { IChatMessageFeedback } from '../Interface' import { getRunningExpressApp } from '../utils/getRunningExpressApp' import { ChatMessageFeedback } from '../database/entities/ChatMessageFeedback' +import { ChatFlow } from '../database/entities/ChatFlow' +import lunary from 'lunary' /** * Method that updates chat message feedback. @@ -11,6 +13,21 @@ export const utilUpdateChatMessageFeedback = async (id: string, chatMessageFeedb const appServer = getRunningExpressApp() const newChatMessageFeedback = new ChatMessageFeedback() Object.assign(newChatMessageFeedback, chatMessageFeedback) + await appServer.AppDataSource.getRepository(ChatMessageFeedback).update({ id }, chatMessageFeedback) + + // Fetch the updated entity + const updatedFeedback = await appServer.AppDataSource.getRepository(ChatMessageFeedback).findOne({ where: { id } }) + + const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOne({ where: { id: updatedFeedback?.chatflowid } }) + const analytic = JSON.parse(chatflow?.analytic ?? '{}') + + if (analytic?.lunary?.status === true && updatedFeedback?.rating) { + lunary.trackFeedback(updatedFeedback.messageId, { + comment: updatedFeedback?.content, + thumb: updatedFeedback?.rating === 'THUMBS_UP' ? 'up' : 'down' + }) + } + return { status: 'OK' } } diff --git a/packages/server/src/utils/upsertVector.ts b/packages/server/src/utils/upsertVector.ts index c94f8c2d76b..3287e452658 100644 --- a/packages/server/src/utils/upsertVector.ts +++ b/packages/server/src/utils/upsertVector.ts @@ -1,172 +1,280 @@ import { Request } from 'express' -import * as fs from 'fs' +import * as path from 'path' import { cloneDeep, omit } from 'lodash' -import { ICommonObject, IMessage, addArrayFilesToStorage } from 'flowise-components' -import telemetryService from '../services/telemetry' +import { + IMessage, + addArrayFilesToStorage, + mapMimeTypeToInputField, + mapExtToInputField, + getFileFromUpload, + removeSpecificFileFromUpload +} from 'flowise-components' import logger from '../utils/logger' import { buildFlow, constructGraphs, getAllConnectedNodes, - mapMimeTypeToInputField, findMemoryNode, getMemorySessionId, getAppVersion, getTelemetryFlowObj, - getStartingNodes + getStartingNodes, + getAPIOverrideConfig } from '../utils' -import { utilValidateKey } from './validateKey' -import { IncomingInput, INodeDirectedGraph, IReactFlowObject, chatType } from '../Interface' +import { validateChatflowAPIKey } from './validateKey' +import { IncomingInput, INodeDirectedGraph, IReactFlowObject, ChatType, IExecuteFlowParams, MODE } from '../Interface' import { ChatFlow } from '../database/entities/ChatFlow' import { getRunningExpressApp } from '../utils/getRunningExpressApp' import { UpsertHistory } from '../database/entities/UpsertHistory' import { InternalFlowiseError } from '../errors/internalFlowiseError' import { StatusCodes } from 'http-status-codes' import { getErrorMessage } from '../errors/utils' +import { v4 as uuidv4 } from 'uuid' +import { FLOWISE_COUNTER_STATUS, FLOWISE_METRIC_COUNTERS } from '../Interface.Metrics' +import { Variable } from '../database/entities/Variable' +import { OMIT_QUEUE_JOB_DATA } from './constants' -/** - * Upsert documents - * @param {Request} req - * @param {boolean} isInternal - */ -export const upsertVector = async (req: Request, isInternal: boolean = false) => { - try { - const appServer = getRunningExpressApp() - const chatflowid = req.params.id - let incomingInput: IncomingInput = req.body +export const executeUpsert = async ({ + user, + componentNodes, + incomingInput, + chatflow, + chatId, + appDataSource, + telemetry, + cachePool, + isInternal, + files +}: IExecuteFlowParams) => { + const question = incomingInput.question + let overrideConfig = incomingInput.overrideConfig ?? {} + let stopNodeId = incomingInput?.stopNodeId ?? '' + const chatHistory: IMessage[] = [] + const isUpsert = true + const chatflowid = chatflow.id + const apiMessageId = uuidv4() - const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ - id: chatflowid - }) - if (!chatflow) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) - } + if (files?.length) { + overrideConfig = { ...incomingInput } + for (const file of files) { + const fileNames: string[] = [] + const fileBuffer = await getFileFromUpload(file.path ?? file.key) + // Address file name with special characters: https://github.com/expressjs/multer/issues/1104 + file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8') + const storagePath = await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, chatflowid) - if (!isInternal) { - const isKeyValidated = await utilValidateKey(req, chatflow) - if (!isKeyValidated) { - throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) - } - } + const fileInputFieldFromMimeType = mapMimeTypeToInputField(file.mimetype) - const files = (req.files as Express.Multer.File[]) || [] + const fileExtension = path.extname(file.originalname) - if (files.length) { - const overrideConfig: ICommonObject = { ...req.body } - const fileNames: string[] = [] - for (const file of files) { - const fileBuffer = fs.readFileSync(file.path) + const fileInputFieldFromExt = mapExtToInputField(fileExtension) - const storagePath = await addArrayFilesToStorage(file.mimetype, fileBuffer, file.originalname, fileNames, chatflowid) + let fileInputField = 'txtFile' - const fileInputField = mapMimeTypeToInputField(file.mimetype) + if (fileInputFieldFromExt !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } else if (fileInputFieldFromMimeType !== 'txtFile') { + fileInputField = fileInputFieldFromExt + } - overrideConfig[fileInputField] = storagePath + if (overrideConfig[fileInputField]) { + const existingFileInputField = overrideConfig[fileInputField].replace('FILE-STORAGE::', '') + const existingFileInputFieldArray = JSON.parse(existingFileInputField) - fs.unlinkSync(file.path) - } - incomingInput = { - question: req.body.question ?? 'hello', - overrideConfig, - stopNodeId: req.body.stopNodeId + const newFileInputField = storagePath.replace('FILE-STORAGE::', '') + const newFileInputFieldArray = JSON.parse(newFileInputField) + + const updatedFieldArray = existingFileInputFieldArray.concat(newFileInputFieldArray) + + overrideConfig[fileInputField] = `FILE-STORAGE::${JSON.stringify(updatedFieldArray)}` + } else { + overrideConfig[fileInputField] = storagePath } + + await removeSpecificFileFromUpload(file.path ?? file.key) + } + if (overrideConfig.vars && typeof overrideConfig.vars === 'string') { + overrideConfig.vars = JSON.parse(overrideConfig.vars) } + incomingInput = { + ...incomingInput, + question: '', + overrideConfig, + stopNodeId, + chatId + } + } - /*** Get chatflows and prepare data ***/ - const flowData = chatflow.flowData - const parsedFlowData: IReactFlowObject = JSON.parse(flowData) - const nodes = parsedFlowData.nodes - const edges = parsedFlowData.edges + /*** Get chatflows and prepare data ***/ + const flowData = chatflow.flowData + const parsedFlowData: IReactFlowObject = JSON.parse(flowData) + const nodes = parsedFlowData.nodes + const edges = parsedFlowData.edges - let stopNodeId = incomingInput?.stopNodeId ?? '' - let chatHistory: IMessage[] = [] - let chatId = incomingInput.chatId ?? '' - let isUpsert = true + /*** Get session ID ***/ + const memoryNode = findMemoryNode(nodes, edges) + let sessionId = getMemorySessionId(memoryNode, incomingInput, chatId, isInternal) - // Get session ID - const memoryNode = findMemoryNode(nodes, edges) - let sessionId = getMemorySessionId(memoryNode, incomingInput, chatId, isInternal) + /*** Find the 1 final vector store will be upserted ***/ + const vsNodes = nodes.filter((node) => node.data.category === 'Vector Stores') + const vsNodesWithFileUpload = vsNodes.filter((node) => node.data.inputs?.fileUpload) + if (vsNodesWithFileUpload.length > 1) { + throw new InternalFlowiseError(StatusCodes.INTERNAL_SERVER_ERROR, 'Multiple vector store nodes with fileUpload enabled') + } else if (vsNodesWithFileUpload.length === 1 && !stopNodeId) { + stopNodeId = vsNodesWithFileUpload[0].data.id + } - const vsNodes = nodes.filter( - (node) => - node.data.category === 'Vector Stores' && !node.data.label.includes('Upsert') && !node.data.label.includes('Load Existing') + /*** Check if multiple vector store nodes exist, and if stopNodeId is specified ***/ + if (vsNodes.length > 1 && !stopNodeId) { + throw new InternalFlowiseError( + StatusCodes.INTERNAL_SERVER_ERROR, + 'There are multiple vector nodes, please provide stopNodeId in body request' ) + } else if (vsNodes.length === 1 && !stopNodeId) { + stopNodeId = vsNodes[0].data.id + } else if (!vsNodes.length && !stopNodeId) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, 'No vector node found') + } - // Check if multiple vector store nodes exist, and if stopNodeId is specified - if (vsNodes.length > 1 && !stopNodeId) { - throw new InternalFlowiseError( - StatusCodes.INTERNAL_SERVER_ERROR, - 'There are multiple vector nodes, please provide stopNodeId in body request' - ) - } else if (vsNodes.length === 1 && !stopNodeId) { - stopNodeId = vsNodes[0].data.id - } else if (!vsNodes.length && !stopNodeId) { - throw new InternalFlowiseError(StatusCodes.NOT_FOUND, 'No vector node found') + /*** Get Starting Nodes with Reversed Graph ***/ + const { graph } = constructGraphs(nodes, edges, { isReversed: true }) + const nodeIds = getAllConnectedNodes(graph, stopNodeId) + const filteredGraph: INodeDirectedGraph = {} + for (const key of nodeIds) { + if (Object.prototype.hasOwnProperty.call(graph, key)) { + filteredGraph[key] = graph[key] } + } + const { startingNodeIds, depthQueue } = getStartingNodes(filteredGraph, stopNodeId) - const { graph } = constructGraphs(nodes, edges, { isReversed: true }) + /*** Get API Config ***/ + const availableVariables = await appDataSource.getRepository(Variable).find({ where: { userId: user.id } }) + const { nodeOverrides, variableOverrides, apiOverrideStatus } = getAPIOverrideConfig(chatflow) - const nodeIds = getAllConnectedNodes(graph, stopNodeId) + const upsertedResult = await buildFlow({ + user, + startingNodeIds, + reactFlowNodes: nodes, + reactFlowEdges: edges, + apiMessageId, + graph: filteredGraph, + depthQueue, + componentNodes, + question, + chatHistory, + chatId, + sessionId, + chatflowid, + appDataSource, + overrideConfig, + apiOverrideStatus, + nodeOverrides, + availableVariables, + variableOverrides, + cachePool, + isUpsert, + stopNodeId + }) - const filteredGraph: INodeDirectedGraph = {} - for (const key of nodeIds) { - if (Object.prototype.hasOwnProperty.call(graph, key)) { - filteredGraph[key] = graph[key] - } + // Save to DB + if (upsertedResult['flowData'] && upsertedResult['result']) { + const result = cloneDeep(upsertedResult) + result['flowData'] = JSON.stringify(result['flowData']) + result['result'] = JSON.stringify(omit(result['result'], ['totalKeys', 'addedDocs'])) + result.chatflowid = chatflowid + const newUpsertHistory = new UpsertHistory() + Object.assign(newUpsertHistory, result) + const upsertHistory = appDataSource.getRepository(UpsertHistory).create(newUpsertHistory) + await appDataSource.getRepository(UpsertHistory).save(upsertHistory) + } + + await telemetry.sendTelemetry('vector_upserted', { + version: await getAppVersion(), + chatlowId: chatflowid, + type: isInternal ? ChatType.INTERNAL : ChatType.EXTERNAL, + flowGraph: getTelemetryFlowObj(nodes, edges), + stopNodeId + }) + + return upsertedResult['result'] ?? { result: 'Successfully Upserted' } +} + +/** + * Upsert documents + * @param {Request} req + * @param {boolean} isInternal + */ +export const upsertVector = async (req: Request, isInternal: boolean = false) => { + const appServer = getRunningExpressApp() + try { + const chatflowid = req.params.id + + // Check if chatflow exists + const chatflow = await appServer.AppDataSource.getRepository(ChatFlow).findOneBy({ + id: chatflowid + }) + if (!chatflow) { + throw new InternalFlowiseError(StatusCodes.NOT_FOUND, `Chatflow ${chatflowid} not found`) } - const { startingNodeIds, depthQueue } = getStartingNodes(filteredGraph, stopNodeId) + const httpProtocol = req.get('x-forwarded-proto') || req.protocol + const baseURL = `${httpProtocol}://${req.get('host')}` + const incomingInput: IncomingInput = req.body + const chatId = incomingInput.chatId ?? incomingInput.overrideConfig?.sessionId ?? uuidv4() + const files = (req.files as Express.Multer.File[]) || [] + + if (!isInternal) { + const isKeyValidated = await validateChatflowAPIKey(req, chatflow) + if (!isKeyValidated) { + throw new InternalFlowiseError(StatusCodes.UNAUTHORIZED, `Unauthorized`) + } + } - const upsertedResult = await buildFlow({ + const executeData: IExecuteFlowParams = { user: req.user!, - startingNodeIds, - reactFlowNodes: nodes, - reactFlowEdges: edges, - graph: filteredGraph, - depthQueue, componentNodes: appServer.nodesPool.componentNodes, - question: incomingInput.question, - chatHistory, + incomingInput, + chatflow, chatId, - sessionId: sessionId ?? '', - chatflowid, appDataSource: appServer.AppDataSource, - overrideConfig: incomingInput?.overrideConfig, + telemetry: appServer.telemetry, cachePool: appServer.cachePool, - isUpsert, - stopNodeId - }) + sseStreamer: appServer.sseStreamer, + baseURL, + isInternal, + files, + isUpsert: true + } - const startingNodes = nodes.filter((nd) => startingNodeIds.includes(nd.data.id)) + if (process.env.MODE === MODE.QUEUE) { + const upsertQueue = appServer.queueManager.getQueue('upsert') - await appServer.chatflowPool.add(chatflowid, undefined, startingNodes, incomingInput?.overrideConfig) + const job = await upsertQueue.addJob(omit(executeData, OMIT_QUEUE_JOB_DATA)) + logger.debug(`[server]: Job added to queue: ${job.id}`) - // Save to DB - if (upsertedResult['flowData'] && upsertedResult['result']) { - const result = cloneDeep(upsertedResult) - result['flowData'] = JSON.stringify(result['flowData']) - result['result'] = JSON.stringify(omit(result['result'], ['totalKeys', 'addedDocs'])) - result.chatflowid = chatflowid - const newUpsertHistory = new UpsertHistory() - Object.assign(newUpsertHistory, result) - const upsertHistory = appServer.AppDataSource.getRepository(UpsertHistory).create(newUpsertHistory) - await appServer.AppDataSource.getRepository(UpsertHistory).save(upsertHistory) - } + const queueEvents = upsertQueue.getQueueEvents() + const result = await job.waitUntilFinished(queueEvents) - await telemetryService.createEvent({ - name: `vector_upserted`, - data: { - version: await getAppVersion(), - chatlowId: chatflowid, - type: isInternal ? chatType.INTERNAL : chatType.EXTERNAL, - flowGraph: getTelemetryFlowObj(nodes, edges), - stopNodeId + if (!result) { + throw new Error('Job execution failed') } - }) - return upsertedResult['result'] ?? { result: 'Successfully Upserted' } + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) + return result + } else { + const result = await executeUpsert(executeData) + + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { + status: FLOWISE_COUNTER_STATUS.SUCCESS + }) + return result + } } catch (e) { logger.error('[server]: Error:', e) + appServer.metricsProvider?.incrementCounter(FLOWISE_METRIC_COUNTERS.VECTORSTORE_UPSERT, { status: FLOWISE_COUNTER_STATUS.FAILURE }) + if (e instanceof InternalFlowiseError && e.statusCode === StatusCodes.UNAUTHORIZED) { throw e } else { diff --git a/packages/server/src/utils/validateKey.ts b/packages/server/src/utils/validateKey.ts index 4fc5cbdcd04..ead7df7d92f 100644 --- a/packages/server/src/utils/validateKey.ts +++ b/packages/server/src/utils/validateKey.ts @@ -2,14 +2,14 @@ import { Request } from 'express' import { ChatFlow } from '../database/entities/ChatFlow' import { compareKeys } from './apiKey' import apikeyService from '../services/apikey' + /** - * Validate API Key + * Validate Chatflow API Key * @param {Request} req - * @param {Response} res * @param {ChatFlow} chatflow */ -export const utilValidateKey = async (req: Request, chatflow: ChatFlow) => { - const chatFlowApiKeyId = chatflow.apikeyid +export const validateChatflowAPIKey = async (req: Request, chatflow: ChatFlow) => { + const chatFlowApiKeyId = chatflow?.apikeyid if (!chatFlowApiKeyId) return true const authorizationHeader = (req.headers['Authorization'] as string) ?? (req.headers['authorization'] as string) ?? '' @@ -24,3 +24,22 @@ export const utilValidateKey = async (req: Request, chatflow: ChatFlow) => { } return false } + +/** + * Validate API Key + * @param {Request} req + */ +export const validateAPIKey = async (req: Request) => { + const authorizationHeader = (req.headers['Authorization'] as string) ?? (req.headers['authorization'] as string) ?? '' + if (!authorizationHeader) return false + + const suppliedKey = authorizationHeader.split(`Bearer `).pop() + if (suppliedKey) { + const keys = await apikeyService.getAllApiKeys(req.user!) + const apiSecret = keys.find((key: any) => key.apiKey === suppliedKey)?.apiSecret + if (!apiSecret) return false + if (!compareKeys(apiSecret, suppliedKey)) return false + return true + } + return false +} diff --git a/packages/server/test/utils/validateKey.test.ts b/packages/server/test/utils/validateKey.test.ts index 7d1e3cdfeae..cf3552c1e93 100644 --- a/packages/server/test/utils/validateKey.test.ts +++ b/packages/server/test/utils/validateKey.test.ts @@ -1,11 +1,11 @@ import { Request } from 'express' import { ChatFlow } from '../../src/database/entities/ChatFlow' -import { utilValidateKey } from '../../src/utils/validateKey' +import { validateChatflowAPIKey } from '../../src/utils/validateKey' import { compareKeys, getAPIKeys } from '../../src/utils/apiKey' jest.mock('../../src/utils/apiKey') -describe('utilValidateKey', () => { +describe('validateChatflowAPIKey', () => { let req: Partial let chatflow: ChatFlow @@ -19,13 +19,13 @@ describe('utilValidateKey', () => { }) it('should return true if chatflow.apikeyid is not set', async () => { - const result = await utilValidateKey(req as Request, chatflow) + const result = await validateChatflowAPIKey(req as Request, chatflow) expect(result).toBe(true) }) it('should return false if chatflow.apikeyid is set but authorization header is missing', async () => { chatflow.apikeyid = 'some-api-key-id' - const result = await utilValidateKey(req as Request, chatflow) + const result = await validateChatflowAPIKey(req as Request, chatflow) expect(result).toBe(false) }) @@ -35,7 +35,7 @@ describe('utilValidateKey', () => { ;(getAPIKeys as jest.Mock).mockResolvedValue([{ id: 'some-api-key-id', apiSecret: 'expected-secret-key' }]) ;(compareKeys as jest.Mock).mockImplementation((expected, supplied) => expected === supplied) - const result = await utilValidateKey(req as Request, chatflow) + const result = await validateChatflowAPIKey(req as Request, chatflow) expect(result).toBe(false) }) }) diff --git a/packages/ui/.env.example b/packages/ui/.env.example index db18b4cda21..e336a6e539d 100644 --- a/packages/ui/.env.example +++ b/packages/ui/.env.example @@ -1 +1,4 @@ VITE_PORT=8080 + +# VITE_API_BASE_URL=http://localhost:3000 +# VITE_UI_BASE_URL=http://localhost:3000 \ No newline at end of file diff --git a/packages/ui/package.json b/packages/ui/package.json index 360f92b41b7..aab239ff513 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "flowise-ui", - "version": "2.0.4", + "version": "2.2.7", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://flowiseai.com", "author": { @@ -14,7 +14,9 @@ "@emotion/cache": "^11.4.0", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", - "@auth0/auth0-react": "^2.2.4", + "@auth0/nextjs-auth0": "3.5.0", + "@auth0/auth0-react": "2.3.0", + "@microsoft/fetch-event-source": "^2.0.1", "@mui/base": "5.0.0-beta.40", "@mui/icons-material": "5.0.3", "@mui/lab": "5.0.0-alpha.156", @@ -24,7 +26,7 @@ "@uiw/codemirror-theme-sublime": "^4.21.21", "@uiw/codemirror-theme-vscode": "^4.21.21", "@uiw/react-codemirror": "^4.21.21", - "axios": "1.6.2", + "axios": "1.7.9", "clsx": "^1.1.1", "dotenv": "^16.0.0", "flagsmith": "^4.0.3", @@ -66,6 +68,7 @@ }, "scripts": { "not:dev": "vite", + "start": "vite", "not:build": "vite build", "clean": "rimraf build", "nuke": "rimraf build node_modules .turbo" diff --git a/packages/ui/src/AppProvider.jsx b/packages/ui/src/AppProvider.jsx index c9114ae7169..584f97e1fc9 100644 --- a/packages/ui/src/AppProvider.jsx +++ b/packages/ui/src/AppProvider.jsx @@ -21,13 +21,7 @@ import { ReactFlowContext } from '@/store/context/ReactFlowContext' export const Auth0Context = React.createContext({ isAuth0Ready: false }) // New component to wrap Auth0 setup -import { useAuth0Setup } from './hooks/useAuth0Setup' - -export const Auth0Setup = ({ children, apiHost, accessToken }) => { - const { isAuth0Ready, user } = useAuth0Setup(apiHost, accessToken) - - return {children} -} +import { Auth0Setup } from './hooks/useAuth0Setup' const AppProvider = ({ children, apiHost, accessToken }) => { return ( diff --git a/packages/ui/src/api/assistants.js b/packages/ui/src/api/assistants.js index cff722dbb86..bdfeecd515a 100644 --- a/packages/ui/src/api/assistants.js +++ b/packages/ui/src/api/assistants.js @@ -8,7 +8,7 @@ const getAllAvailableAssistants = (credentialId) => client.get(`/openai-assistan // Assistant const createNewAssistant = (body) => client.post(`/assistants`, body) -const getAllAssistants = () => client.get('/assistants') +const getAllAssistants = (type) => client.get('/assistants?type=' + type) const getSpecificAssistant = (id) => client.get(`/assistants/${id}`) @@ -44,6 +44,12 @@ const uploadFilesToAssistant = (credentialId, formData) => headers: { 'Content-Type': 'multipart/form-data' } }) +const getChatModels = () => client.get('/assistants/components/chatmodels') +const getDocStores = () => client.get('/assistants/components/docstores') +const getTools = () => client.get('/assistants/components/tools') + +const generateAssistantInstruction = (body) => client.post(`/assistants/generate/instruction`, body) + export default { getAllAssistants, getSpecificAssistant, @@ -59,5 +65,9 @@ export default { uploadFilesToAssistant, uploadFilesToAssistantVectorStore, deleteFilesFromAssistantVectorStore, - deleteAssistantVectorStore + deleteAssistantVectorStore, + getChatModels, + getDocStores, + getTools, + generateAssistantInstruction } diff --git a/packages/ui/src/api/attachments.js b/packages/ui/src/api/attachments.js new file mode 100644 index 00000000000..7e9ef372f9d --- /dev/null +++ b/packages/ui/src/api/attachments.js @@ -0,0 +1,10 @@ +import client from './client' + +const createAttachment = (chatflowid, chatid, formData) => + client.post(`/attachments/${chatflowid}/${chatid}`, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) + +export default { + createAttachment +} diff --git a/packages/ui/src/api/chatflows.js b/packages/ui/src/api/chatflows.js index fb76d5d3912..6bdd6128599 100644 --- a/packages/ui/src/api/chatflows.js +++ b/packages/ui/src/api/chatflows.js @@ -1,6 +1,6 @@ import client from './client' -const getAllChatflows = () => client.get('/chatflows') +const getAllChatflows = () => client.get('/chatflows?type=CHATFLOW') const getAllAgentflows = () => client.get('/chatflows?type=MULTIAGENT') diff --git a/packages/ui/src/api/client.js b/packages/ui/src/api/client.js index 105339a3fdb..5659c4a15c9 100644 --- a/packages/ui/src/api/client.js +++ b/packages/ui/src/api/client.js @@ -5,7 +5,8 @@ const apiClient = axios.create({ baseURL: `${Constants.baseURL}/api/v1`, withCredentials: true, headers: { - 'Content-type': 'application/json' + 'Content-type': 'application/json', + 'x-request-from': 'internal' } }) diff --git a/packages/ui/src/api/documentstore.js b/packages/ui/src/api/documentstore.js index e96f9766eb0..16cf05e252a 100644 --- a/packages/ui/src/api/documentstore.js +++ b/packages/ui/src/api/documentstore.js @@ -1,11 +1,12 @@ import client from './client' -const getAllDocumentStores = () => client.get('/document-store/stores') +const getAllDocumentStores = () => client.get('/document-store/store') const getDocumentLoaders = () => client.get('/document-store/components/loaders') const getSpecificDocumentStore = (id) => client.get(`/document-store/store/${id}`) const createDocumentStore = (body) => client.post(`/document-store/store`, body) const updateDocumentStore = (id, body) => client.put(`/document-store/store/${id}`, body) const deleteDocumentStore = (id) => client.delete(`/document-store/store/${id}`) +const getDocumentStoreConfig = (storeId, loaderId) => client.get(`/document-store/store-configs/${storeId}/${loaderId}`) const deleteLoaderFromStore = (id, fileId) => client.delete(`/document-store/loader/${id}/${fileId}`) const deleteChunkFromStore = (storeId, loaderId, chunkId) => client.delete(`/document-store/chunks/${storeId}/${loaderId}/${chunkId}`) @@ -15,7 +16,9 @@ const editChunkFromStore = (storeId, loaderId, chunkId, body) => const getFileChunks = (storeId, fileId, pageNo) => client.get(`/document-store/chunks/${storeId}/${fileId}/${pageNo}`) const syncAndRefreshChunks = (storeId, fileId) => client.post(`/document-store/chunks/sync/${storeId}/${fileId}`) const previewChunks = (body) => client.post('/document-store/loader/preview', body) -const processChunks = (body) => client.post(`/document-store/loader/process`, body) +const processLoader = (body, loaderId) => client.post(`/document-store/loader/process/${loaderId}`, body) +const saveProcessingLoader = (body) => client.post(`/document-store/loader/save`, body) +const refreshLoader = (storeId) => client.post(`/document-store/refresh/${storeId}`) const insertIntoVectorStore = (body) => client.post(`/document-store/vectorstore/insert`, body) const saveVectorStoreConfig = (body) => client.post(`/document-store/vectorstore/save`, body) @@ -26,6 +29,8 @@ const getVectorStoreProviders = () => client.get('/document-store/components/vec const getEmbeddingProviders = () => client.get('/document-store/components/embeddings') const getRecordManagerProviders = () => client.get('/document-store/components/recordmanager') +const generateDocStoreToolDesc = (storeId, body) => client.post('/document-store/generate-tool-desc/' + storeId, body) + export default { getAllDocumentStores, getSpecificDocumentStore, @@ -34,7 +39,7 @@ export default { getFileChunks, updateDocumentStore, previewChunks, - processChunks, + processLoader, getDocumentLoaders, deleteChunkFromStore, editChunkFromStore, @@ -47,5 +52,9 @@ export default { queryVectorStore, deleteVectorStoreDataFromStore, updateVectorStoreConfig, - syncAndRefreshChunks + syncAndRefreshChunks, + saveProcessingLoader, + refreshLoader, + generateDocStoreToolDesc, + getDocumentStoreConfig } diff --git a/packages/ui/src/api/exportimport.js b/packages/ui/src/api/exportimport.js new file mode 100644 index 00000000000..7cab1a13997 --- /dev/null +++ b/packages/ui/src/api/exportimport.js @@ -0,0 +1,9 @@ +import client from './client' + +const exportData = (body) => client.post('/export-import/export', body) +const importData = (body) => client.post('/export-import/import', body) + +export default { + exportData, + importData +} diff --git a/packages/ui/src/api/marketplaces.js b/packages/ui/src/api/marketplaces.js index 9dd340477b6..c47f39e8b3e 100644 --- a/packages/ui/src/api/marketplaces.js +++ b/packages/ui/src/api/marketplaces.js @@ -4,8 +4,15 @@ const getAllToolsMarketplaces = () => client.get('/marketplaces/tools') const getAllTemplatesFromMarketplaces = () => client.get('/marketplaces/templates') const getSpecificMarketplaceTemplate = (id) => client.get(`/marketplaces/templates/${id}`) +const getAllCustomTemplates = () => client.get('/marketplaces/custom') +const saveAsCustomTemplate = (body) => client.post('/marketplaces/custom', body) +const deleteCustomTemplate = (id) => client.delete(`/marketplaces/custom/${id}`) + export default { getAllToolsMarketplaces, getAllTemplatesFromMarketplaces, - getSpecificMarketplaceTemplate + getSpecificMarketplaceTemplate, + getAllCustomTemplates, + saveAsCustomTemplate, + deleteCustomTemplate } diff --git a/packages/ui/src/api/prediction.js b/packages/ui/src/api/prediction.js index d3512843c2a..207d222f1a6 100644 --- a/packages/ui/src/api/prediction.js +++ b/packages/ui/src/api/prediction.js @@ -1,7 +1,9 @@ import client from './client' const sendMessageAndGetPrediction = (id, input) => client.post(`/internal-prediction/${id}`, input) +const sendMessageAndStreamPrediction = (id, input) => client.post(`/internal-prediction/stream/${id}`, input) export default { - sendMessageAndGetPrediction + sendMessageAndGetPrediction, + sendMessageAndStreamPrediction } diff --git a/packages/ui/src/api/vectorstore.js b/packages/ui/src/api/vectorstore.js index 64f2ce65bb0..54d1f4c076c 100644 --- a/packages/ui/src/api/vectorstore.js +++ b/packages/ui/src/api/vectorstore.js @@ -1,11 +1,16 @@ import client from './client' const upsertVectorStore = (id, input) => client.post(`/vector/internal-upsert/${id}`, input) +const upsertVectorStoreWithFormData = (id, formData) => + client.post(`/vector/internal-upsert/${id}`, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) const getUpsertHistory = (id, params = {}) => client.get(`/upsert-history/${id}`, { params: { order: 'DESC', ...params } }) const deleteUpsertHistory = (ids) => client.patch(`/upsert-history`, { ids }) export default { getUpsertHistory, upsertVectorStore, + upsertVectorStoreWithFormData, deleteUpsertHistory } diff --git a/packages/ui/src/assets/images/Exporting.gif b/packages/ui/src/assets/images/Exporting.gif new file mode 100644 index 00000000000..be8de05e96e Binary files /dev/null and b/packages/ui/src/assets/images/Exporting.gif differ diff --git a/packages/ui/src/assets/images/anthropic.svg b/packages/ui/src/assets/images/anthropic.svg new file mode 100644 index 00000000000..84bc18ca51a --- /dev/null +++ b/packages/ui/src/assets/images/anthropic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/ui/src/assets/images/arize.png b/packages/ui/src/assets/images/arize.png new file mode 100644 index 00000000000..23c851ce911 Binary files /dev/null and b/packages/ui/src/assets/images/arize.png differ diff --git a/packages/ui/src/assets/images/azure_openai.svg b/packages/ui/src/assets/images/azure_openai.svg new file mode 100644 index 00000000000..7b15081119e --- /dev/null +++ b/packages/ui/src/assets/images/azure_openai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/ui/src/assets/images/fileAttachment.png b/packages/ui/src/assets/images/fileAttachment.png new file mode 100644 index 00000000000..8fb385c8c1b Binary files /dev/null and b/packages/ui/src/assets/images/fileAttachment.png differ diff --git a/packages/ui/src/assets/images/groq.gif b/packages/ui/src/assets/images/groq.gif new file mode 100644 index 00000000000..ea2b8821cf8 Binary files /dev/null and b/packages/ui/src/assets/images/groq.gif differ diff --git a/packages/ui/src/assets/images/groq.png b/packages/ui/src/assets/images/groq.png new file mode 100644 index 00000000000..ea2b8821cf8 Binary files /dev/null and b/packages/ui/src/assets/images/groq.png differ diff --git a/packages/ui/src/assets/images/lunary.svg b/packages/ui/src/assets/images/lunary.svg index 1528de5a93a..efcce28ad59 100644 --- a/packages/ui/src/assets/images/lunary.svg +++ b/packages/ui/src/assets/images/lunary.svg @@ -1,7 +1,26 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/ui/src/assets/images/mistralai.svg b/packages/ui/src/assets/images/mistralai.svg new file mode 100644 index 00000000000..aa84b39c50a --- /dev/null +++ b/packages/ui/src/assets/images/mistralai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/ui/src/assets/images/ollama.svg b/packages/ui/src/assets/images/ollama.svg new file mode 100644 index 00000000000..6e9fb283c01 --- /dev/null +++ b/packages/ui/src/assets/images/ollama.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/ui/src/assets/images/phoenix.png b/packages/ui/src/assets/images/phoenix.png new file mode 100644 index 00000000000..b25150526b7 Binary files /dev/null and b/packages/ui/src/assets/images/phoenix.png differ diff --git a/packages/ui/src/hooks/useApi.jsx b/packages/ui/src/hooks/useApi.jsx index be8b3b9abee..30179a43509 100644 --- a/packages/ui/src/hooks/useApi.jsx +++ b/packages/ui/src/hooks/useApi.jsx @@ -12,7 +12,7 @@ export default (apiFunc) => { setData(result.data) } catch (err) { if (err.response && err.response.status === 401) { - window.location.href = '/api/auth/login' + window.location.href = '/api/auth/login?redirect_uri=' + window.location.href } else { setError(err || 'Unexpected Error!') } diff --git a/packages/ui/src/hooks/useAuth0Setup.js b/packages/ui/src/hooks/useAuth0Setup.js index 8d94dc1e870..c24e383985d 100644 --- a/packages/ui/src/hooks/useAuth0Setup.js +++ b/packages/ui/src/hooks/useAuth0Setup.js @@ -2,13 +2,23 @@ import { useState, useEffect } from 'react' import { useUser } from '@auth0/nextjs-auth0/client' import { setBaseURL } from '../store/constant' +import { Auth0Context } from '@auth0/auth0-react' + +export const Auth0Setup = ({ children, apiHost, accessToken }) => { + const { isAuth0Ready, user } = useAuth0Setup(apiHost, accessToken) + + return {children} +} + export const useAuth0Setup = (apiHost, accessToken) => { const { user, isLoading, isAuthenticated, error } = useUser() const [isAuth0Ready, setIsAuth0Ready] = useState(false) useEffect(() => { const setBaseUrlEffect = () => { - if (user && user.chatflowDomain) { + if (process.env.CHATFLOW_DOMAIN_OVERRIDE) { + setBaseURL(process.env.CHATFLOW_DOMAIN_OVERRIDE) + } else if (user && user.chatflowDomain) { setBaseURL(user.chatflowDomain) } else if (apiHost) { setBaseURL(apiHost) diff --git a/packages/ui/src/hooks/useSearchShortcut.jsx b/packages/ui/src/hooks/useSearchShortcut.jsx new file mode 100644 index 00000000000..bbcc3149551 --- /dev/null +++ b/packages/ui/src/hooks/useSearchShortcut.jsx @@ -0,0 +1,35 @@ +import { useEffect } from 'react' +import { getOS } from '@/utils/genericHelper' + +const isMac = getOS() === 'macos' + +const useSearchShortcut = (inputRef) => { + useEffect(() => { + const component = inputRef.current + + if (!component) return // Check if inputRef.current is defined + + const handleKeyDown = (event) => { + if ((isMac && event.metaKey && event.key === 'f') || (!isMac && event.ctrlKey && event.key === 'f')) { + event.preventDefault() + component.focus() + } + } + + const handleInputEscape = (event) => { + if (event.key === 'Escape') component.blur() + } + + component.addEventListener('keydown', handleInputEscape) + document.addEventListener('keydown', handleKeyDown) + + return () => { + if (component) { + component.removeEventListener('keydown', handleInputEscape) + } + document.removeEventListener('keydown', handleKeyDown) + } + }, [inputRef]) // Add inputRef to the dependency array to ensure the effect is re-applied if inputRef changes +} + +export default useSearchShortcut diff --git a/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx b/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx index 0edeaeb62de..e68933a97a1 100644 --- a/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx +++ b/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx @@ -1,10 +1,12 @@ import dynamic from 'next/dynamic' import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction, MENU_OPEN, REMOVE_DIRTY } from '@/store/actions' -import { sanitizeChatflows } from '@/utils/genericHelper' +import { exportData, stringify } from '@/utils/exportImport' import useNotifier from '@/utils/useNotifier' import PropTypes from 'prop-types' import { useEffect, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' +import { createPortal } from 'react-dom' + // material-ui import { Avatar, @@ -19,7 +21,14 @@ import { ListItemText, Paper, Popper, - Typography + Typography, + Dialog, + DialogTitle, + DialogContent, + Stack, + FormControlLabel, + Checkbox, + DialogActions } from '@mui/material' import { useTheme } from '@mui/material/styles' @@ -35,13 +44,114 @@ import Transitions from '@/ui-component/extended/Transitions' // assets import { IconFileExport, IconFileUpload, IconInfoCircle, IconLogout, IconSettings, IconX } from '@tabler/icons-react' import './index.css' +import ExportingGIF from '@/assets/images/Exporting.gif' //API -import chatFlowsApi from '@/api/chatflows' +import exportImportApi from '@/api/exportimport' // Hooks import useApi from '@/hooks/useApi' -import { useLocation, useNavigate } from '@/utils/navigation' +import { getErrorMessage } from '@/utils/errorHandler' +import { useNavigate } from '@/utils/navigation' + +const dataToExport = ['Chatflows', 'Agentflows', 'Tools', 'Variables', 'Assistants'] + +const ExportDialog = ({ show, onCancel, onExport }) => { + const portalElement = document.getElementById('portal') + + const [selectedData, setSelectedData] = useState(['Chatflows', 'Agentflows', 'Tools', 'Variables', 'Assistants']) + const [isExporting, setIsExporting] = useState(false) + + useEffect(() => { + if (show) setIsExporting(false) + + return () => { + setIsExporting(false) + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [show]) + + const component = show ? ( + + + {!isExporting ? 'Select Data to Export' : 'Exporting..'} + + + {!isExporting && ( + + {dataToExport.map((data, index) => ( + { + setSelectedData( + event.target.checked + ? [...selectedData, data] + : selectedData.filter((item) => item !== data) + ) + }} + /> + } + label={data} + /> + ))} + + )} + {isExporting && ( + +
+ ExportingGIF + Exporting data might takes a while +
+
+ )} +
+ {!isExporting && ( + + + + + )} +
+ ) : null + + return createPortal(component, portalElement) +} + +ExportDialog.propTypes = { + show: PropTypes.bool, + onCancel: PropTypes.func, + onExport: PropTypes.func +} // ==============================|| PROFILE MENU ||============================== // @@ -53,12 +163,16 @@ const ProfileSection = ({ username, handleLogout }) => { const [open, setOpen] = useState(false) const [aboutDialogOpen, setAboutDialogOpen] = useState(false) + const [exportDialogOpen, setExportDialogOpen] = useState(false) const anchorRef = useRef(null) const inputRef = useRef() const navigate = useNavigate() - const location = useLocation() + + const importAllApi = useApi(exportImportApi.importData) + const exportAllApi = useApi(exportImportApi.exportData) + const prevOpen = useRef(open) // ==============================|| Snackbar ||============================== // @@ -93,7 +207,7 @@ const ProfileSection = ({ username, handleLogout }) => { } }) } - const importChatflowsApi = useApi(chatFlowsApi.importChatflows) + const fileChange = (e) => { if (!e.target.files) return @@ -104,16 +218,16 @@ const ProfileSection = ({ username, handleLogout }) => { if (!evt?.target?.result) { return } - const chatflows = JSON.parse(evt.target.result) - importChatflowsApi.request(chatflows) + const body = JSON.parse(evt.target.result) + importAllApi.request(body) } reader.readAsText(file) } - const importChatflowsSuccess = () => { + const importAllSuccess = () => { dispatch({ type: REMOVE_DIRTY }) enqueueSnackbar({ - message: `Import chatflows successful`, + message: `Import All successful`, options: { key: new Date().getTime() + Math.random(), variant: 'success', @@ -125,60 +239,75 @@ const ProfileSection = ({ username, handleLogout }) => { } }) } + + const importAll = () => { + inputRef.current.click() + } + + const onExport = (data) => { + const body = {} + if (data.includes('Chatflows')) body.chatflow = true + if (data.includes('Agentflows')) body.agentflow = true + if (data.includes('Tools')) body.tool = true + if (data.includes('Variables')) body.variable = true + if (data.includes('Assistants')) body.assistant = true + + exportAllApi.request(body) + } + useEffect(() => { - if (importChatflowsApi.error) errorFailed(`Failed to import chatflows: ${importChatflowsApi.error.response.data.message}`) - if (importChatflowsApi.data) { - importChatflowsSuccess() - // if current location is /chatflows, refresh the page - if (location.pathname === '/chatflows') navigate(0) - else { - // if not redirect to /chatflows - dispatch({ type: MENU_OPEN, id: 'chatflows' }) - navigate('/chatflows') + if (importAllApi.data) { + importAllSuccess() + navigate(0) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [importAllApi.data]) + + useEffect(() => { + if (importAllApi.error) { + let errMsg = 'Invalid Imported File' + let error = importAllApi.error + if (error?.response?.data) { + errMsg = typeof error.response.data === 'object' ? error.response.data.message : error.response.data } + errorFailed(`Failed to import: ${errMsg}`) } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [importChatflowsApi.error, importChatflowsApi.data]) - const importAllChatflows = () => { - inputRef.current.click() - } - const getAllChatflowsApi = useApi(chatFlowsApi.getAllChatflows) + }, [importAllApi.error]) - const exportChatflowsSuccess = () => { - dispatch({ type: REMOVE_DIRTY }) - enqueueSnackbar({ - message: `Export chatflows successful`, - options: { - key: new Date().getTime() + Math.random(), - variant: 'success', - action: (key) => ( - - ) + useEffect(() => { + if (exportAllApi.data) { + setExportDialogOpen(false) + try { + const dataStr = stringify(exportData(exportAllApi.data)) + //const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const blob = new Blob([dataStr], { type: 'application/json' }) + const dataUri = URL.createObjectURL(blob) + + const linkElement = document.createElement('a') + linkElement.setAttribute('href', dataUri) + linkElement.setAttribute('download', exportAllApi.data.FileDefaultName) + linkElement.click() + } catch (error) { + errorFailed(`Failed to export all: ${getErrorMessage(error)}`) } - }) - } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [exportAllApi.data]) useEffect(() => { - if (getAllChatflowsApi.error) errorFailed(`Failed to export Chatflows: ${getAllChatflowsApi.error.response.data.message}`) - if (getAllChatflowsApi.data) { - const sanitizedChatflows = sanitizeChatflows(getAllChatflowsApi.data) - const dataStr = JSON.stringify({ Chatflows: sanitizedChatflows }, null, 2) - const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) - - const exportFileDefaultName = 'AllChatflows.json' - - const linkElement = document.createElement('a') - linkElement.setAttribute('href', dataUri) - linkElement.setAttribute('download', exportFileDefaultName) - linkElement.click() - exportChatflowsSuccess() + if (exportAllApi.error) { + setExportDialogOpen(false) + let errMsg = 'Internal Server Error' + let error = exportAllApi.error + if (error?.response?.data) { + errMsg = typeof error.response.data === 'object' ? error.response.data.message : error.response.data + } + errorFailed(`Failed to export: ${errMsg}`) } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [getAllChatflowsApi.error, getAllChatflowsApi.data]) + }, [exportAllApi.error]) - const prevOpen = useRef(open) useEffect(() => { if (prevOpen.current === true && open === false) { anchorRef.current.focus() @@ -261,26 +390,26 @@ const ProfileSection = ({ username, handleLogout }) => { { - getAllChatflowsApi.request() + setExportDialogOpen(true) }} > - Export Chatflows} /> + Export} /> { - importAllChatflows() + importAll() }} > - Import Chatflows} /> + Import} /> - + { @@ -314,6 +443,7 @@ const ProfileSection = ({ username, handleLogout }) => { )} setAboutDialogOpen(false)} /> + setExportDialogOpen(false)} onExport={(data) => onExport(data)} /> ) } diff --git a/packages/ui/src/layout/MainLayout/Sidebar/index.jsx b/packages/ui/src/layout/MainLayout/Sidebar/index.jsx index 3d7028b1a1b..15b483df8d5 100644 --- a/packages/ui/src/layout/MainLayout/Sidebar/index.jsx +++ b/packages/ui/src/layout/MainLayout/Sidebar/index.jsx @@ -51,7 +51,7 @@ const Sidebar = ({ drawerOpen, drawerToggle, window, isInIframe }) => { ) - const container = window !== undefined ? () => window.document.body : undefined + const container = typeof window !== 'undefined' ? () => window.document.body : undefined return ( { } : null), borderRight: drawerOpen ? '1px solid' : 'none', - borderColor: drawerOpen ? theme.palette.primary[200] + 75 : 'transparent' + borderColor: drawerOpen ? theme.palette.primary[200] + 75 : 'transparent', + zIndex: 1000 } }} ModalProps={{ keepMounted: true }} diff --git a/packages/ui/src/layout/MainLayout/ViewHeader.jsx b/packages/ui/src/layout/MainLayout/ViewHeader.jsx index 29eddbb4ae3..947d50b4701 100644 --- a/packages/ui/src/layout/MainLayout/ViewHeader.jsx +++ b/packages/ui/src/layout/MainLayout/ViewHeader.jsx @@ -1,4 +1,7 @@ +'use client' + import PropTypes from 'prop-types' +import { useRef } from 'react' // material-ui import { IconButton, Box, OutlinedInput, Toolbar, Typography } from '@mui/material' @@ -8,6 +11,14 @@ import { StyledFab } from '@/ui-component/button/StyledFab' // icons import { IconSearch, IconArrowLeft, IconEdit } from '@tabler/icons-react' +import useSearchShortcut from '@/hooks/useSearchShortcut' +import { getOS } from '@/utils/genericHelper' + +const os = getOS() +const isMac = os === 'macos' +const isDesktop = isMac || os === 'windows' || os === 'linux' +const keyboardShortcut = isMac ? '[ ⌘ + F ]' : '[ Ctrl + F ]' + const ViewHeader = ({ children, filters = null, @@ -22,6 +33,8 @@ const ViewHeader = ({ onEdit }) => { const theme = useTheme() + const searchInputRef = useRef() + useSearchShortcut(searchInputRef) return ( @@ -85,9 +98,10 @@ const ViewHeader = ({ {search && ( import('@/views/tools'))) // assistants routing const Assistants = Loadable(lazy(() => import('@/views/assistants'))) +const OpenAIAssistantLayout = Loadable(lazy(() => import('@/views/assistants/openai/OpenAIAssistantLayout'))) +const CustomAssistantLayout = Loadable(lazy(() => import('@/views/assistants/custom/CustomAssistantLayout'))) +const CustomAssistantConfigurePreview = Loadable(lazy(() => import('@/views/assistants/custom/CustomAssistantConfigurePreview'))) // credentials routing const Credentials = Loadable(lazy(() => import('@/views/credentials'))) @@ -71,6 +74,18 @@ const MainRoutes = { path: '/assistants', element: }, + { + path: '/assistants/custom', + element: + }, + { + path: '/assistants/custom/:id', + element: + }, + { + path: '/assistants/openai', + element: + }, { path: '/credentials', element: @@ -84,23 +99,27 @@ const MainRoutes = { element: }, { - path: '/document-stores/:id', + path: '/document-stores/:storeId', element: }, { - path: '/document-stores/chunks/:id/:id', + path: '/document-stores/chunks/:storeId/:fileId', element: }, { - path: '/document-stores/:id/:name', + path: '/document-stores/:storeId/:name', element: }, { - path: '/document-stores/vector/:id', + path: '/document-stores/vector/:storeId', + element: + }, + { + path: '/document-stores/vector/:storeId/:docId', element: }, { - path: '/document-stores/query/:id', + path: '/document-stores/query/:storeId', element: }, { diff --git a/packages/ui/src/store/constant.js b/packages/ui/src/store/constant.js index ea41e2ca4c0..39e270bdaee 100644 --- a/packages/ui/src/store/constant.js +++ b/packages/ui/src/store/constant.js @@ -16,7 +16,14 @@ if (typeof sessionStorage !== 'undefined') { baseURL = sessionStorage.getItem('baseURL') || baseURL } export const setBaseURL = (url) => { - baseURL = url?.replace('8080', '4000') + // Check for CHATFLOW_DOMAIN_OVERRIDE + if (typeof process !== 'undefined' && process.env && process.env.CHATFLOW_DOMAIN_OVERRIDE) { + baseURL = process.env.CHATFLOW_DOMAIN_OVERRIDE + } else if (typeof window !== 'undefined' && window.CHATFLOW_DOMAIN_OVERRIDE) { + baseURL = window.CHATFLOW_DOMAIN_OVERRIDE + } else { + baseURL = url?.replace('8080', '4000') + } sessionStorage.setItem('baseURL', baseURL) } export const uiBaseURL = typeof window !== 'undefined' ? `${window?.location?.origin}/sidekick-studio` : undefined diff --git a/packages/ui/src/ui-component/button/FlowListMenu.jsx b/packages/ui/src/ui-component/button/FlowListMenu.jsx index 8dd6ef6c4ec..142cebdfcba 100644 --- a/packages/ui/src/ui-component/button/FlowListMenu.jsx +++ b/packages/ui/src/ui-component/button/FlowListMenu.jsx @@ -7,7 +7,14 @@ import Menu from '@mui/material/Menu' import MenuItem from '@mui/material/MenuItem' import FileCopyIcon from '@mui/icons-material/FileCopy' import FileDownloadIcon from '@mui/icons-material/Downloading' +import FileDeleteIcon from '@mui/icons-material/Delete' +import FileCategoryIcon from '@mui/icons-material/Category' +import PictureInPictureAltIcon from '@mui/icons-material/PictureInPictureAlt' +import ThumbsUpDownOutlinedIcon from '@mui/icons-material/ThumbsUpDownOutlined' +import VpnLockOutlinedIcon from '@mui/icons-material/VpnLockOutlined' +import MicNoneOutlinedIcon from '@mui/icons-material/MicNoneOutlined' import SettingsIcon from '@mui/icons-material/Settings' +import ExportTemplateOutlinedIcon from '@mui/icons-material/BookmarksOutlined' import Button from '@mui/material/Button' import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown' import { IconX } from '@tabler/icons-react' @@ -16,6 +23,12 @@ import { uiBaseURL } from '@/store/constant' import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction } from '@/store/actions' import ChatflowConfigurationDialog from '../dialog/ChatflowConfigurationDialog' import { generateExportFlowData } from '@/utils/genericHelper' +import useNotifier from '@/utils/useNotifier' +import ChatFeedbackDialog from '../dialog/ChatFeedbackDialog' +import AllowedDomainsDialog from '../dialog/AllowedDomainsDialog' +import SpeechToTextDialog from '../dialog/SpeechToTextDialog' +import ExportAsTemplateDialog from '@/ui-component/dialog/ExportAsTemplateDialog' +import { Divider } from '@mui/material' const StyledMenu = styled((props) => (
{ @@ -76,11 +92,134 @@ export default function FlowListMenu({ chatflow, isAgentCanvas }) { const handleChatflowConfiguration = () => { setAnchorEl(null) - setChatflowConfigurationDialogProps({ - title: `${title} Configuration`, - chatflow: chatflow, - onSave: (updatedChatflow) => { - onUpdateChatflow(updatedChatflow) + setFlowDialogOpen(true) + } + + const handleFlowStarterPrompts = () => { + setAnchorEl(null) + setConversationStartersDialogProps({ + title: 'Starter Prompts - ' + chatflow.name, + chatflow: chatflow + }) + setConversationStartersDialogOpen(true) + } + + const handleExportTemplate = () => { + setAnchorEl(null) + setExportTemplateDialogProps({ + chatflow: chatflow + }) + setExportTemplateDialogOpen(true) + } + + const handleFlowChatFeedback = () => { + setAnchorEl(null) + setChatFeedbackDialogProps({ + title: 'Chat Feedback - ' + chatflow.name, + chatflow: chatflow + }) + setChatFeedbackDialogOpen(true) + } + + const handleAllowedDomains = () => { + setAnchorEl(null) + setAllowedDomainsDialogProps({ + title: 'Allowed Domains - ' + chatflow.name, + chatflow: chatflow + }) + setAllowedDomainsDialogOpen(true) + } + + const handleSpeechToText = () => { + setAnchorEl(null) + setSpeechToTextDialogProps({ + title: 'Speech To Text - ' + chatflow.name, + chatflow: chatflow + }) + setSpeechToTextDialogOpen(true) + } + + const saveFlowRename = async (chatflowName) => { + const updateBody = { + name: chatflowName, + chatflow + } + try { + await updateChatflowApi.request(chatflow.id, updateBody) + await updateFlowsApi.request() + } catch (error) { + if (setError) setError(error) + enqueueSnackbar({ + message: typeof error.response.data === 'object' ? error.response.data.message : error.response.data, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + const handleFlowCategory = () => { + setAnchorEl(null) + if (chatflow.category) { + setCategoryDialogProps({ + category: chatflow.category.split(';') + }) + } + setCategoryDialogOpen(true) + } + + const saveFlowCategory = async (categories) => { + setCategoryDialogOpen(false) + // save categories as string + const categoryTags = categories.join(';') + const updateBody = { + category: categoryTags, + chatflow + } + try { + await updateChatflowApi.request(chatflow.id, updateBody) + await updateFlowsApi.request() + } catch (error) { + if (setError) setError(error) + enqueueSnackbar({ + message: typeof error.response.data === 'object' ? error.response.data.message : error.response.data, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + const handleDelete = async () => { + setAnchorEl(null) + const confirmPayload = { + title: `Delete`, + description: `Delete ${title} ${chatflow.name}?`, + confirmButtonName: 'Delete', + cancelButtonName: 'Cancel' + } + const isConfirmed = await confirm(confirmPayload) + + if (isConfirmed) { + try { + await chatflowsApi.deleteChatflow(chatflow.id) + await updateFlowsApi.request() + } catch (error) { + if (setError) setError(error) enqueueSnackbar({ message: 'Chatflow Configuration Saved', options: { @@ -94,7 +233,7 @@ export default function FlowListMenu({ chatflow, isAgentCanvas }) { } }) } - }) + } setChatflowConfigurationDialogOpen(true) } @@ -113,8 +252,11 @@ export default function FlowListMenu({ chatflow, isAgentCanvas }) { const handleExport = () => { setAnchorEl(null) try { - let dataStr = JSON.stringify(generateExportFlowData(chatflow), null, 2) - let dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const flowData = JSON.parse(chatflow.flowData) + let dataStr = JSON.stringify(generateExportFlowData(flowData), null, 2) + //let dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const blob = new Blob([dataStr], { type: 'application/json' }) + const dataUri = URL.createObjectURL(blob) let exportFileDefaultName = `${chatflow.name} ${title}.json` @@ -161,12 +303,49 @@ export default function FlowListMenu({ chatflow, isAgentCanvas }) { Export + + + Save As Template + + + + + Starter Prompts + + + + Chat Feedback + + + + Allowed Domains + + + + Speech To Text + + + + Update Category + + + + + Delete + setChatflowConfigurationDialogOpen(false)} /> + {exportTemplateDialogOpen && ( + setExportTemplateDialogOpen(false)} + /> + )} ) } diff --git a/packages/ui/src/ui-component/cards/DocumentStoreCard.jsx b/packages/ui/src/ui-component/cards/DocumentStoreCard.jsx index da2c2d4ad33..8021bbeade6 100644 --- a/packages/ui/src/ui-component/cards/DocumentStoreCard.jsx +++ b/packages/ui/src/ui-component/cards/DocumentStoreCard.jsx @@ -60,7 +60,8 @@ const DocumentStoreCard = ({ data, images, onClick }) => { WebkitBoxOrient: 'vertical', textOverflow: 'ellipsis', overflow: 'hidden', - flex: 1 + flex: 1, + mr: 1 }} > {data.name} diff --git a/packages/ui/src/ui-component/cards/FollowUpPromptsCard.jsx b/packages/ui/src/ui-component/cards/FollowUpPromptsCard.jsx new file mode 100644 index 00000000000..75aceb85b75 --- /dev/null +++ b/packages/ui/src/ui-component/cards/FollowUpPromptsCard.jsx @@ -0,0 +1,45 @@ +import Box from '@mui/material/Box' +import PropTypes from 'prop-types' +import { Chip } from '@mui/material' +import './StarterPromptsCard.css' +import { useSelector } from 'react-redux' + +const FollowUpPromptsCard = ({ isGrid, followUpPrompts, sx, onPromptClick }) => { + const customization = useSelector((state) => state.customization) + + return ( + + {followUpPrompts.map((fp, index) => ( + onPromptClick(fp, e)} + sx={{ + backgroundColor: 'transparent', + border: '1px solid', + boxShadow: '0px 2px 1px -1px rgba(0,0,0,0.2)', + color: '#2196f3', + transition: 'all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms', + '&:hover': { + backgroundColor: customization.isDarkMode ? 'rgba(0, 0, 0, 0.12)' : 'rgba(0, 0, 0, 0.05)', + border: '1px solid' + } + }} + /> + ))} + + ) +} + +FollowUpPromptsCard.propTypes = { + isGrid: PropTypes.bool, + followUpPrompts: PropTypes.array, + sx: PropTypes.object, + onPromptClick: PropTypes.func +} + +export default FollowUpPromptsCard diff --git a/packages/ui/src/ui-component/cards/MainCard.jsx b/packages/ui/src/ui-component/cards/MainCard.jsx index 61bbf752e23..5d3ec235fd2 100644 --- a/packages/ui/src/ui-component/cards/MainCard.jsx +++ b/packages/ui/src/ui-component/cards/MainCard.jsx @@ -30,10 +30,11 @@ const MainCard = forwardRef(function MainCard( }, ref ) { + const otherProps = { ...others, border: others.border === false ? undefined : others.border } return ( { username, password } + config.headers = { + 'Content-type': 'application/json', + 'x-request-from': 'internal' + } } const latestReleaseReq = axios.get('https://api.github.com/repos/FlowiseAI/Flowise/releases/latest') const currentVersionReq = axios.get(`${baseURL}/api/v1/version`, { ...config }) diff --git a/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx b/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx index ceea50005ee..04bdbe3baf1 100644 --- a/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx +++ b/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx @@ -4,36 +4,27 @@ import { createPortal } from 'react-dom' import { Box, Dialog, DialogContent, DialogTitle, Tabs, Tab } from '@mui/material' import { tabsClasses } from '@mui/material/Tabs' import SpeechToText from '@/ui-component/extended/SpeechToText' -import RateLimit from '@/ui-component/extended/RateLimit' -import AllowedDomains from '@/ui-component/extended/AllowedDomains' +import Security from '@/ui-component/extended/Security' import ChatFeedback from '@/ui-component/extended/ChatFeedback' import StarterPrompts from '@/ui-component/extended/StarterPrompts' import Leads from '@/ui-component/extended/Leads' -import VisibilitySettings from '@/ui-component/extended/VisibilitySettings' -import GeneralSettings from '@/ui-component/extended/GeneralSettings' -import ChatLinksSettings from '@/ui-component/extended/ChatLinksSettings' +import FollowUpPrompts from '@/ui-component/extended/FollowUpPrompts' +import FileUpload from '@/ui-component/extended/FileUpload' +import PostProcessing from '@/ui-component/extended/PostProcessing' const CHATFLOW_CONFIGURATION_TABS = [ { - label: 'General', - id: 'generalSettings' - }, - { - label: 'Visibility', - id: 'visibilitySettings' - }, - { - label: 'Chat links', - id: 'chatLinks' - }, - { - label: 'Rate Limiting', - id: 'rateLimiting' + label: 'Security', + id: 'security' }, { label: 'Starter Prompts', id: 'conversationStarters' }, + { + label: 'Follow-up Prompts', + id: 'followUpPrompts' + }, { label: 'Speech to Text', id: 'speechToText' @@ -43,16 +34,21 @@ const CHATFLOW_CONFIGURATION_TABS = [ id: 'chatFeedback' }, { - label: 'Allowed Domains', - id: 'allowedDomains' + label: 'Analyse Chatflow', + id: 'analyseChatflow' }, - // { - // label: 'Analyse Chatflow', - // id: 'analyseChatflow' - // }, { label: 'Leads', id: 'leads' + }, + { + label: 'File Upload', + id: 'fileUpload' + }, + { + label: 'Post Processing', + id: 'postProcessing', + hideInAgentFlow: true } ] @@ -85,21 +81,23 @@ function a11yProps(index) { } } -const ChatflowConfigurationDialog = ({ show, dialogProps, onCancel }) => { +const ChatflowConfigurationDialog = ({ show, isAgentCanvas, dialogProps, onCancel }) => { const portalElement = typeof document !== 'undefined' ? document.getElementById('portal') : null const [tabValue, setTabValue] = useState(0) + const filteredTabs = CHATFLOW_CONFIGURATION_TABS.filter((tab) => !isAgentCanvas || !tab.hideInAgentFlow) + const component = show ? ( - -
{dialogProps.title}
+ + {dialogProps.title} { variant='scrollable' scrollButtons='auto' > - {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( + {filteredTabs.map((item, index) => ( ))} - {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( + {filteredTabs.map((item, index) => ( - {item.id === 'rateLimiting' && } + {item.id === 'security' && } {item.id === 'conversationStarters' ? : null} + {item.id === 'followUpPrompts' ? : null} {item.id === 'speechToText' ? : null} {item.id === 'chatFeedback' ? : null} - {item.id === 'allowedDomains' ? : null} - {/* {item.id === 'analyseChatflow' ? : null} */} + {item.id === 'analyseChatflow' ? : null} {item.id === 'leads' ? : null} - {item.id === 'visibilitySettings' ? : null} - {item.id === 'chatLinks' ? : null} - {item.id === 'generalSettings' ? : null} + {item.id === 'fileUpload' ? : null} + {item.id === 'postProcessing' ? : null} ))} @@ -149,6 +152,7 @@ const ChatflowConfigurationDialog = ({ show, dialogProps, onCancel }) => { ChatflowConfigurationDialog.propTypes = { show: PropTypes.bool, + isAgentCanvas: PropTypes.bool, dialogProps: PropTypes.object, onCancel: PropTypes.func } diff --git a/packages/ui/src/ui-component/dialog/ExportAsTemplateDialog.jsx b/packages/ui/src/ui-component/dialog/ExportAsTemplateDialog.jsx new file mode 100644 index 00000000000..e7251c25762 --- /dev/null +++ b/packages/ui/src/ui-component/dialog/ExportAsTemplateDialog.jsx @@ -0,0 +1,282 @@ +import { createPortal } from 'react-dom' +import { useDispatch } from 'react-redux' +import { useEffect, useState } from 'react' +import PropTypes from 'prop-types' + +// material-ui +import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, OutlinedInput, Typography } from '@mui/material' + +// store +import { + closeSnackbar as closeSnackbarAction, + enqueueSnackbar as enqueueSnackbarAction, + HIDE_CANVAS_DIALOG, + SHOW_CANVAS_DIALOG +} from '@/store/actions' +import useNotifier from '@/utils/useNotifier' +import { StyledButton } from '@/ui-component/button/StyledButton' +import Chip from '@mui/material/Chip' +import { IconX } from '@tabler/icons-react' + +// API +import marketplacesApi from '@/api/marketplaces' +import useApi from '@/hooks/useApi' + +// Project imports + +const ExportAsTemplateDialog = ({ show, dialogProps, onCancel }) => { + const portalElement = document.getElementById('portal') + const dispatch = useDispatch() + const [name, setName] = useState('') + const [flowType, setFlowType] = useState('') + const [description, setDescription] = useState('') + const [badge, setBadge] = useState('') + const [usecases, setUsecases] = useState([]) + const [usecaseInput, setUsecaseInput] = useState('') + + const saveCustomTemplateApi = useApi(marketplacesApi.saveAsCustomTemplate) + + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + useNotifier() + + useEffect(() => { + if (dialogProps.chatflow) { + setName(dialogProps.chatflow.name) + setFlowType(dialogProps.chatflow.type === 'MULTIAGENT' ? 'Agentflow' : 'Chatflow') + } + + if (dialogProps.tool) { + setName(dialogProps.tool.name) + setDescription(dialogProps.tool.description) + setFlowType('Tool') + } + + return () => { + setName('') + setDescription('') + setBadge('') + setUsecases([]) + setFlowType('') + setUsecaseInput('') + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dialogProps]) + + useEffect(() => { + if (show) dispatch({ type: SHOW_CANVAS_DIALOG }) + else dispatch({ type: HIDE_CANVAS_DIALOG }) + return () => dispatch({ type: HIDE_CANVAS_DIALOG }) + }, [show, dispatch]) + + const handleUsecaseInputChange = (event) => { + setUsecaseInput(event.target.value) + } + + const handleUsecaseInputKeyDown = (event) => { + if (event.key === 'Enter' && usecaseInput.trim()) { + event.preventDefault() + if (!usecases.includes(usecaseInput)) { + setUsecases([...usecases, usecaseInput]) + setUsecaseInput('') + } + } + } + + const handleUsecaseDelete = (toDelete) => { + setUsecases(usecases.filter((category) => category !== toDelete)) + } + + const onConfirm = () => { + if (name.trim() === '') { + enqueueSnackbar({ + message: 'Template Name is mandatory!', + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + return + } + + const template = { + name, + description, + badge: badge ? badge.toUpperCase() : undefined, + usecases, + type: flowType + } + if (dialogProps.chatflow) { + template.chatflowId = dialogProps.chatflow.id + } + if (dialogProps.tool) { + template.tool = { + iconSrc: dialogProps.tool.iconSrc, + schema: dialogProps.tool.schema, + func: dialogProps.tool.func + } + } + saveCustomTemplateApi.request(template) + } + + useEffect(() => { + if (saveCustomTemplateApi.data) { + enqueueSnackbar({ + message: 'Saved as template successfully!', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + persist: true, + action: (key) => ( + + ) + } + }) + onCancel() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [saveCustomTemplateApi.data]) + + useEffect(() => { + if (saveCustomTemplateApi.error) { + enqueueSnackbar({ + message: 'Failed to save as template!', + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + onCancel() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [saveCustomTemplateApi.error]) + + const component = show ? ( + + + {dialogProps.title || 'Export As Template'} + + + +
+ + Name * + + { + setName(e.target.value) + }} + /> +
+
+ +
+ Description + { + setDescription(e.target.value) + }} + /> +
+
+ +
+ Badge + { + setBadge(e.target.value) + }} + /> +
+
+ +
+ Usecases + {usecases.length > 0 && ( +
+ {usecases.map((uc, index) => ( + handleUsecaseDelete(uc)} + style={{ marginRight: 5, marginBottom: 5 }} + /> + ))} +
+ )} + + + Type a usecase and press enter to add it to the list. You can add as many items as you want. + +
+
+
+ + + + {dialogProps.confirmButtonName || 'Save Template'} + + +
+ ) : null + + return createPortal(component, portalElement) +} + +ExportAsTemplateDialog.propTypes = { + show: PropTypes.bool, + dialogProps: PropTypes.object, + onCancel: PropTypes.func, + onConfirm: PropTypes.func +} + +export default ExportAsTemplateDialog diff --git a/packages/ui/src/ui-component/dialog/NvidiaNIMDialog.jsx b/packages/ui/src/ui-component/dialog/NvidiaNIMDialog.jsx new file mode 100644 index 00000000000..aca39c2bbb7 --- /dev/null +++ b/packages/ui/src/ui-component/dialog/NvidiaNIMDialog.jsx @@ -0,0 +1,328 @@ +import { useState, useEffect } from 'react' +import { createPortal } from 'react-dom' +import axios from 'axios' +import PropTypes from 'prop-types' +import { + Dialog, + DialogTitle, + DialogContent, + DialogActions, + Button, + CircularProgress, + Stepper, + Step, + StepLabel, + Select, + MenuItem, + FormControl, + InputLabel +} from '@mui/material' + +const NvidiaNIMDialog = ({ open, onClose, onComplete }) => { + const portalElement = document.getElementById('portal') + + const modelOptions = { + 'nv-mistralai/mistral-nemo-12b-instruct:latest': { + label: 'Mistral Nemo 12B Instruct', + licenseUrl: 'https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nv-mistralai/containers/mistral-nemo-12b-instruct' + }, + 'meta/llama-3.1-8b-instruct-rtx:latest': { + label: 'Llama 3.1 8B Instruct', + licenseUrl: 'https://catalog.ngc.nvidia.com/orgs/nim/teams/meta/containers/llama-3.1-8b-instruct' + } + } + + const [activeStep, setActiveStep] = useState(0) + const [loading, setLoading] = useState(false) + const [imageTag, setImageTag] = useState('') + const [pollInterval, setPollInterval] = useState(null) + + const steps = ['Download Installer', 'Pull Image', 'Start Container'] + + const handleDownloadInstaller = async () => { + try { + setLoading(true) + await axios.get('/api/v1/nvidia-nim/download-installer') + setLoading(false) + } catch (err) { + let errorData = err.message + if (typeof err === 'string') { + errorData = err + } else if (err.response?.data) { + errorData = err.response.data.message + } + alert('Failed to download installer: ' + errorData) + setLoading(false) + } + } + + const preload = async () => { + try { + setLoading(true) + await axios.get('/api/v1/nvidia-nim/preload') + setLoading(false) + setActiveStep(1) + } catch (err) { + let errorData = err.message + if (typeof err === 'string') { + errorData = err + } else if (err.response?.data) { + errorData = err.response.data.message + } + alert('Failed to preload: ' + errorData) + setLoading(false) + } + } + + const handlePullImage = async () => { + try { + setLoading(true) + try { + const imageResponse = await axios.post('/api/v1/nvidia-nim/get-image', { imageTag }) + if (imageResponse.data && imageResponse.data.tag === imageTag) { + setLoading(false) + setActiveStep(2) + return + } + } catch (err) { + // Continue if image not found + if (err.response?.status !== 404) { + throw err + } + } + + // Get token first + const tokenResponse = await axios.get('/api/v1/nvidia-nim/get-token') + const apiKey = tokenResponse.data.access_token + + // Pull image + await axios.post('/api/v1/nvidia-nim/pull-image', { + imageTag, + apiKey + }) + + // Start polling for image status + const interval = setInterval(async () => { + try { + const imageResponse = await axios.post('/api/v1/nvidia-nim/get-image', { imageTag }) + if (imageResponse.data) { + clearInterval(interval) + setLoading(false) + setActiveStep(2) + } + } catch (err) { + // Continue polling if image not found + if (err.response?.status !== 404) { + clearInterval(interval) + alert('Failed to check image status: ' + err.message) + setLoading(false) + } + } + }, 5000) + + setPollInterval(interval) + } catch (err) { + let errorData = err.message + if (typeof err === 'string') { + errorData = err + } else if (err.response?.data) { + errorData = err.response.data.message + } + alert('Failed to pull image: ' + errorData) + setLoading(false) + } + } + + const handleStartContainer = async () => { + try { + setLoading(true) + try { + const containerResponse = await axios.post('/api/v1/nvidia-nim/get-container', { imageTag }) + if (containerResponse.data && containerResponse.data && containerResponse.data.status === 'running') { + // wait additional 10 seconds for container to be ready + await new Promise((resolve) => setTimeout(resolve, 10000)) + setLoading(false) + onComplete(containerResponse.data) + onClose() + return + } + } catch (err) { + // Continue if container not found + if (err.response?.status !== 404) { + throw err + } + } + + const tokenResponse = await axios.get('/api/v1/nvidia-nim/get-token') + const apiKey = tokenResponse.data.access_token + + await axios.post('/api/v1/nvidia-nim/start-container', { + imageTag, + apiKey + }) + + // Start polling for container status + const interval = setInterval(async () => { + try { + const containerResponse = await axios.post('/api/v1/nvidia-nim/get-container', { imageTag }) + if (containerResponse.data) { + clearInterval(interval) + setLoading(false) + onComplete(containerResponse.data) + onClose() + } + } catch (err) { + // Continue polling if container not found + if (err.response?.status !== 404) { + clearInterval(interval) + alert('Failed to check container status: ' + err.message) + setLoading(false) + } + } + }, 5000) + + setPollInterval(interval) + } catch (err) { + let errorData = err.message + if (typeof err === 'string') { + errorData = err + } else if (err.response?.data) { + errorData = err.response.data.message + } + alert('Failed to start container: ' + errorData) + setLoading(false) + } + } + + const handleNext = () => { + if (activeStep === 1 && !imageTag) { + alert('Please enter an image tag') + return + } + + switch (activeStep) { + case 0: + preload() + break + case 1: + handlePullImage() + break + case 2: + handleStartContainer() + break + default: + setActiveStep((prev) => prev + 1) + } + } + + // Cleanup polling on unmount + useEffect(() => { + return () => { + if (pollInterval) { + clearInterval(pollInterval) + } + } + }, [pollInterval]) + + // clear state on close + useEffect(() => { + if (!open) { + setActiveStep(0) + setLoading(false) + setImageTag('') + } + }, [open]) + + const component = open ? ( + + NIM Setup + + + {steps.map((label) => ( + + {label} + + ))} + + + {activeStep === 0 && ( +
+

+ Would you like to download the NIM installer? Click Next if it has been installed +

+ {loading && } +
+ )} + + {activeStep === 1 && ( +
+ + Model + + + {imageTag && ( + + )} + {loading && ( +
+
+ +

Pulling image...

+
+ )} +
+ )} + + {activeStep === 2 && ( +
+ {loading ? ( + <> +
+ +

Starting container...

+ + ) : ( +

Image is ready! Click Next to start the container.

+ )} +
+ )} + + + + {activeStep === 0 && ( + + )} + + +
+ ) : null + + return createPortal(component, portalElement) +} + +NvidiaNIMDialog.propTypes = { + open: PropTypes.bool, + onClose: PropTypes.func, + onComplete: PropTypes.func +} + +export default NvidiaNIMDialog diff --git a/packages/ui/src/ui-component/dialog/PromptGeneratorDialog.jsx b/packages/ui/src/ui-component/dialog/PromptGeneratorDialog.jsx new file mode 100644 index 00000000000..1b0e3e48397 --- /dev/null +++ b/packages/ui/src/ui-component/dialog/PromptGeneratorDialog.jsx @@ -0,0 +1,205 @@ +import { createPortal } from 'react-dom' +import { useState, useEffect } from 'react' +import { useDispatch } from 'react-redux' +import PropTypes from 'prop-types' +import { OutlinedInput, DialogActions, Button, Dialog, DialogContent, DialogTitle } from '@mui/material' +import { StyledButton } from '@/ui-component/button/StyledButton' +import assistantsApi from '@/api/assistants' +import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction } from '@/store/actions' +import { IconX, IconWand, IconArrowLeft, IconNotebook, IconLanguage, IconMail, IconCode, IconReport, IconWorld } from '@tabler/icons-react' +import useNotifier from '@/utils/useNotifier' +import { LoadingButton } from '@mui/lab' + +const defaultInstructions = [ + { + text: 'Summarize a document', + img: + }, + { + text: 'Translate the language', + img: + }, + { + text: 'Write me an email', + img: + }, + { + text: 'Convert the code to another language', + img: + }, + { + text: 'Research and generate a report', + img: + }, + { + text: 'Plan a trip', + img: + } +] + +const AssistantPromptGenerator = ({ show, dialogProps, onCancel, onConfirm }) => { + const portalElement = document.getElementById('portal') + const [customAssistantInstruction, setCustomAssistantInstruction] = useState('') + const [generatedInstruction, setGeneratedInstruction] = useState('') + const [loading, setLoading] = useState(false) + + // ==============================|| Snackbar ||============================== // + const dispatch = useDispatch() + useNotifier() + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + const onGenerate = async () => { + try { + setLoading(true) + const selectedChatModelObj = { + name: dialogProps.data.selectedChatModel.name, + inputs: dialogProps.data.selectedChatModel.inputs + } + const resp = await assistantsApi.generateAssistantInstruction({ + selectedChatModel: selectedChatModelObj, + task: customAssistantInstruction + }) + + if (resp.data) { + setLoading(false) + if (resp.data.content) { + setGeneratedInstruction(resp.data.content) + } + } + } catch (error) { + setLoading(false) + enqueueSnackbar({ + message: typeof error.response.data === 'object' ? error.response.data.message : error.response.data, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + // clear the state when dialog is closed + useEffect(() => { + if (!show) { + setCustomAssistantInstruction('') + setGeneratedInstruction('') + } + }, [show]) + + const component = show ? ( + <> + + + {dialogProps.title} + + + {dialogProps.description} +
+ {defaultInstructions.map((instruction, index) => { + return ( + + ) + })} +
+ {!generatedInstruction && ( + setCustomAssistantInstruction(event.target.value)} + /> + )} + {generatedInstruction && ( + setGeneratedInstruction(event.target.value)} + /> + )} +
+ + {!generatedInstruction && ( + { + onGenerate() + }} + startIcon={} + > + Generate + + )} + {generatedInstruction && ( + + )} + {generatedInstruction && ( + onConfirm(generatedInstruction)}> + Apply + + )} + +
+ + ) : null + + return createPortal(component, portalElement) +} + +AssistantPromptGenerator.propTypes = { + show: PropTypes.bool, + dialogProps: PropTypes.object, + onConfirm: PropTypes.func, + onCancel: PropTypes.func +} + +export default AssistantPromptGenerator diff --git a/packages/ui/src/ui-component/dialog/SaveChatflowDialog.jsx b/packages/ui/src/ui-component/dialog/SaveChatflowDialog.jsx index 61b2316d88a..2ac3f232840 100644 --- a/packages/ui/src/ui-component/dialog/SaveChatflowDialog.jsx +++ b/packages/ui/src/ui-component/dialog/SaveChatflowDialog.jsx @@ -34,12 +34,15 @@ const SaveChatflowDialog = ({ show, dialogProps, onCancel, onConfirm, defaultVal onClose={onCancel} aria-labelledby='alert-dialog-title' aria-describedby='alert-dialog-description' + disableRestoreFocus // needed due to StrictMode > {dialogProps.title} setChatflowName(e.target.value)} + onKeyDown={(e) => { + if (isReadyToSave && e.key === 'Enter') onConfirm(e.target.value) + }} /> diff --git a/packages/ui/src/ui-component/dialog/SourceDocDialog.jsx b/packages/ui/src/ui-component/dialog/SourceDocDialog.jsx index ff53cdff9e1..dd99a17852c 100644 --- a/packages/ui/src/ui-component/dialog/SourceDocDialog.jsx +++ b/packages/ui/src/ui-component/dialog/SourceDocDialog.jsx @@ -2,7 +2,7 @@ import { createPortal } from 'react-dom' import { useState, useEffect } from 'react' import { useSelector } from 'react-redux' import PropTypes from 'prop-types' -import { Dialog, DialogContent, DialogTitle } from '@mui/material' +import { Box, Dialog, DialogContent, DialogTitle, Typography } from '@mui/material' import ReactJson from 'flowise-react-json-view' const SourceDocDialog = ({ show, dialogProps, onCancel }) => { @@ -32,6 +32,25 @@ const SourceDocDialog = ({ show, dialogProps, onCancel }) => { {dialogProps.title ?? 'Source Documents'}
+ {data.error && ( + + + Error: + + + {data.error} + + + )} { leads } const dataStr = JSON.stringify(exportData, null, 2) - const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + //const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const blob = new Blob([dataStr], { type: 'application/json' }) + const dataUri = URL.createObjectURL(blob) const exportFileDefaultName = `${dialogProps.chatflow.id}-leads.json` diff --git a/packages/ui/src/ui-component/dialog/ViewMessagesDialog.jsx b/packages/ui/src/ui-component/dialog/ViewMessagesDialog.jsx index da07e98b562..5a046ccb479 100644 --- a/packages/ui/src/ui-component/dialog/ViewMessagesDialog.jsx +++ b/packages/ui/src/ui-component/dialog/ViewMessagesDialog.jsx @@ -8,6 +8,7 @@ import rehypeRaw from 'rehype-raw' import remarkGfm from 'remark-gfm' import remarkMath from 'remark-math' import axios from 'axios' +import { cloneDeep } from 'lodash' // material-ui import { @@ -24,7 +25,10 @@ import { Chip, Card, CardMedia, - CardContent + CardContent, + FormControlLabel, + Checkbox, + DialogActions } from '@mui/material' import { useTheme } from '@mui/material/styles' import DatePicker from 'react-datepicker' @@ -34,7 +38,7 @@ import userPNG from '@/assets/images/account.png' import msgEmptySVG from '@/assets/images/message_empty.svg' import multiagent_supervisorPNG from '@/assets/images/multiagent_supervisor.png' import multiagent_workerPNG from '@/assets/images/multiagent_worker.png' -import { IconTool, IconDeviceSdCard, IconFileExport, IconEraser, IconX, IconDownload } from '@tabler/icons-react' +import { IconTool, IconDeviceSdCard, IconFileExport, IconEraser, IconX, IconDownload, IconPaperclip } from '@tabler/icons-react' // Project import import { MemoizedReactMarkdown } from '@/ui-component/markdown/MemoizedReactMarkdown' @@ -84,6 +88,52 @@ const messageImageStyle = { objectFit: 'cover' } +const ConfirmDeleteMessageDialog = ({ show, dialogProps, onCancel, onConfirm }) => { + const portalElement = document.getElementById('portal') + const [hardDelete, setHardDelete] = useState(false) + + const onSubmit = () => { + onConfirm(hardDelete) + } + + const component = show ? ( + + + {dialogProps.title} + + + {dialogProps.description} + setHardDelete(event.target.checked)} />} + label='Remove messages from 3rd party Memory Node' + /> + + + + + {dialogProps.confirmButtonName} + + + + ) : null + + return createPortal(component, portalElement) +} + +ConfirmDeleteMessageDialog.propTypes = { + show: PropTypes.bool, + dialogProps: PropTypes.object, + onCancel: PropTypes.func, + onConfirm: PropTypes.func +} + const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { const portalElement = typeof document !== 'undefined' ? document.getElementById('portal') : null const dispatch = useDispatch() @@ -103,9 +153,11 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { const [selectedChatId, setSelectedChatId] = useState('') const [sourceDialogOpen, setSourceDialogOpen] = useState(false) const [sourceDialogProps, setSourceDialogProps] = useState({}) + const [hardDeleteDialogOpen, setHardDeleteDialogOpen] = useState(false) + const [hardDeleteDialogProps, setHardDeleteDialogProps] = useState({}) const [chatTypeFilter, setChatTypeFilter] = useState([]) const [feedbackTypeFilter, setFeedbackTypeFilter] = useState([]) - const [startDate, setStartDate] = useState(new Date().setMonth(new Date().getMonth() - 1)) + const [startDate, setStartDate] = useState(new Date(new Date().setMonth(new Date().getMonth() - 1))) const [endDate, setEndDate] = useState(new Date()) const [leadEmail, setLeadEmail] = useState('') @@ -116,30 +168,38 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { let storagePath = '' const onStartDateSelected = (date) => { - setStartDate(date) + const updatedDate = new Date(date) + updatedDate.setHours(0, 0, 0, 0) + setStartDate(updatedDate) getChatmessageApi.request(dialogProps.chatflow.id, { - startDate: date, + startDate: updatedDate, endDate: endDate, - chatType: chatTypeFilter.length ? chatTypeFilter : undefined + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) getStatsApi.request(dialogProps.chatflow.id, { - startDate: date, + startDate: updatedDate, endDate: endDate, - chatType: chatTypeFilter.length ? chatTypeFilter : undefined + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) } const onEndDateSelected = (date) => { - setEndDate(date) + const updatedDate = new Date(date) + updatedDate.setHours(23, 59, 59, 999) + setEndDate(updatedDate) getChatmessageApi.request(dialogProps.chatflow.id, { - endDate: date, + endDate: updatedDate, startDate: startDate, - chatType: chatTypeFilter.length ? chatTypeFilter : undefined + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) getStatsApi.request(dialogProps.chatflow.id, { - endDate: date, + endDate: updatedDate, startDate: startDate, - chatType: chatTypeFilter.length ? chatTypeFilter : undefined + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) } @@ -148,12 +208,14 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { getChatmessageApi.request(dialogProps.chatflow.id, { chatType: chatTypes.length ? chatTypes : undefined, startDate: startDate, - endDate: endDate + endDate: endDate, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) getStatsApi.request(dialogProps.chatflow.id, { chatType: chatTypes.length ? chatTypes : undefined, startDate: startDate, - endDate: endDate + endDate: endDate, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined }) } @@ -175,6 +237,85 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { }) } + const onDeleteMessages = () => { + setHardDeleteDialogProps({ + title: 'Delete Messages', + description: 'Are you sure you want to delete messages? This action cannot be undone.', + confirmButtonName: 'Delete', + cancelButtonName: 'Cancel' + }) + setHardDeleteDialogOpen(true) + } + + const deleteMessages = async (hardDelete) => { + setHardDeleteDialogOpen(false) + const chatflowid = dialogProps.chatflow.id + try { + const obj = { chatflowid, isClearFromViewMessageDialog: true } + + let _chatTypeFilter = chatTypeFilter + if (typeof chatTypeFilter === 'string' && chatTypeFilter.startsWith('[') && chatTypeFilter.endsWith(']')) { + _chatTypeFilter = JSON.parse(chatTypeFilter) + } + if (_chatTypeFilter.length === 1) { + obj.chatType = _chatTypeFilter[0] + } + + let _feedbackTypeFilter = feedbackTypeFilter + if (typeof feedbackTypeFilter === 'string' && feedbackTypeFilter.startsWith('[') && feedbackTypeFilter.endsWith(']')) { + _feedbackTypeFilter = JSON.parse(feedbackTypeFilter) + } + if (_feedbackTypeFilter.length === 1) { + obj.feedbackType = _feedbackTypeFilter[0] + } + + if (startDate) obj.startDate = startDate + if (endDate) obj.endDate = endDate + if (hardDelete) obj.hardDelete = true + + await chatmessageApi.deleteChatmessage(chatflowid, obj) + enqueueSnackbar({ + message: 'Succesfully deleted messages', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + getChatmessageApi.request(chatflowid, { + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + startDate: startDate, + endDate: endDate, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined + }) + getStatsApi.request(chatflowid, { + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + startDate: startDate, + endDate: endDate, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined + }) + } catch (error) { + console.error(error) + enqueueSnackbar({ + message: typeof error.response.data === 'object' ? error.response.data.message : error.response.data, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + const exportMessages = async () => { if (!storagePath && getStoragePathFromServer.data) { storagePath = getStoragePathFromServer.data.storagePath @@ -188,8 +329,7 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { const chatmsg = allChatlogs[i] const chatPK = getChatPK(chatmsg) let filePaths = [] - if (chatmsg.fileUploads) { - chatmsg.fileUploads = JSON.parse(chatmsg.fileUploads) + if (chatmsg.fileUploads && Array.isArray(chatmsg.fileUploads)) { chatmsg.fileUploads.forEach((file) => { if (file.type === 'stored-file') { filePaths.push( @@ -204,12 +344,21 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { time: chatmsg.createdDate } if (filePaths.length) msg.filePaths = filePaths - if (chatmsg.sourceDocuments) msg.sourceDocuments = JSON.parse(chatmsg.sourceDocuments) - if (chatmsg.usedTools) msg.usedTools = JSON.parse(chatmsg.usedTools) - if (chatmsg.fileAnnotations) msg.fileAnnotations = JSON.parse(chatmsg.fileAnnotations) + if (chatmsg.sourceDocuments) msg.sourceDocuments = chatmsg.sourceDocuments + if (chatmsg.usedTools) msg.usedTools = chatmsg.usedTools + if (chatmsg.fileAnnotations) msg.fileAnnotations = chatmsg.fileAnnotations if (chatmsg.feedback) msg.feedback = chatmsg.feedback?.content - if (chatmsg.agentReasoning) msg.agentReasoning = JSON.parse(chatmsg.agentReasoning) - + if (chatmsg.agentReasoning) msg.agentReasoning = chatmsg.agentReasoning + if (chatmsg.artifacts) { + msg.artifacts = chatmsg.artifacts + msg.artifacts.forEach((artifact) => { + if (artifact.type === 'png' || artifact.type === 'jpeg') { + artifact.data = `${baseURL}/api/v1/get-upload-file?chatflowId=${chatmsg.chatflowid}&chatId=${ + chatmsg.chatId + }&fileName=${artifact.data.replace('FILE-STORAGE::', '')}` + } + }) + } if (!Object.prototype.hasOwnProperty.call(obj, chatPK)) { obj[chatPK] = { id: chatmsg.chatId, @@ -236,7 +385,9 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { } const dataStr = JSON.stringify(exportMessages, null, 2) - const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + //const dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const blob = new Blob([dataStr], { type: 'application/json' }) + const dataUri = URL.createObjectURL(blob) const exportFileDefaultName = `${dialogProps.chatflow.id}-Message.json` @@ -285,8 +436,18 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { ) } }) - getChatmessageApi.request(chatflowid) - getStatsApi.request(chatflowid) // update stats + getChatmessageApi.request(chatflowid, { + startDate: startDate, + endDate: endDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined + }) + getStatsApi.request(chatflowid, { + startDate: startDate, + endDate: endDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined, + feedbackType: feedbackTypeFilter.length ? feedbackTypeFilter : undefined + }) } catch (error) { enqueueSnackbar({ message: typeof error.response.data === 'object' ? error.response.data.message : error.response.data, @@ -329,8 +490,7 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { }) } } - if (chatmsg.fileUploads) { - chatmsg.fileUploads = JSON.parse(chatmsg.fileUploads) + if (chatmsg.fileUploads && Array.isArray(chatmsg.fileUploads)) { chatmsg.fileUploads.forEach((file) => { if (file.type === 'stored-file') { file.data = `${baseURL}/api/v1/get-upload-file?chatflowId=${chatmsg.chatflowid}&chatId=${chatmsg.chatId}&fileName=${file.name}` @@ -342,11 +502,20 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { message: chatmsg.content, type: chatmsg.role } - if (chatmsg.sourceDocuments) obj.sourceDocuments = JSON.parse(chatmsg.sourceDocuments) - if (chatmsg.usedTools) obj.usedTools = JSON.parse(chatmsg.usedTools) - if (chatmsg.fileAnnotations) obj.fileAnnotations = JSON.parse(chatmsg.fileAnnotations) - if (chatmsg.agentReasoning) obj.agentReasoning = JSON.parse(chatmsg.agentReasoning) - + if (chatmsg.sourceDocuments) obj.sourceDocuments = chatmsg.sourceDocuments + if (chatmsg.usedTools) obj.usedTools = chatmsg.usedTools + if (chatmsg.fileAnnotations) obj.fileAnnotations = chatmsg.fileAnnotations + if (chatmsg.agentReasoning) obj.agentReasoning = chatmsg.agentReasoning + if (chatmsg.artifacts) { + obj.artifacts = chatmsg.artifacts + obj.artifacts.forEach((artifact) => { + if (artifact.type === 'png' || artifact.type === 'jpeg') { + artifact.data = `${baseURL}/api/v1/get-upload-file?chatflowId=${chatmsg.chatflowid}&chatId=${ + chatmsg.chatId + }&fileName=${artifact.data.replace('FILE-STORAGE::', '')}` + } + }) + } loadedMessages.push(obj) } setChatMessages(loadedMessages) @@ -443,6 +612,59 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { setSourceDialogOpen(true) } + const renderFileUploads = (item, index) => { + if (item?.mime?.startsWith('image/')) { + return ( + + + + ) + } else if (item?.mime?.startsWith('audio/')) { + return ( + /* eslint-disable jsx-a11y/media-has-caption */ + + ) + } else { + return ( + + + + {item.name} + + + ) + } + } + useEffect(() => { const leadEmailFromChatMessages = chatMessages.filter((message) => message.type === 'userMessage' && message.leadEmail) if (leadEmailFromChatMessages.length) { @@ -488,8 +710,14 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { useEffect(() => { if (dialogProps.chatflow) { - getChatmessageApi.request(dialogProps.chatflow.id) - getStatsApi.request(dialogProps.chatflow.id) + getChatmessageApi.request(dialogProps.chatflow.id, { + startDate: startDate, + endDate: endDate + }) + getStatsApi.request(dialogProps.chatflow.id, { + startDate: startDate, + endDate: endDate + }) } return () => { @@ -500,7 +728,7 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { setFeedbackTypeFilter([]) setSelectedMessageIndex(0) setSelectedChatId('') - setStartDate(new Date().setMonth(new Date().getMonth() - 1)) + setStartDate(new Date(new Date().setMonth(new Date().getMonth() - 1))) setEndDate(new Date()) setStats([]) setLeadEmail('') @@ -519,19 +747,104 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { if (dialogProps.chatflow) { // when the filter is cleared fetch all messages if (feedbackTypeFilter.length === 0) { - getChatmessageApi.request(dialogProps.chatflow.id) - getStatsApi.request(dialogProps.chatflow.id) + getChatmessageApi.request(dialogProps.chatflow.id, { + startDate: startDate, + endDate: endDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined + }) + getStatsApi.request(dialogProps.chatflow.id, { + startDate: startDate, + endDate: endDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined + }) } } // eslint-disable-next-line react-hooks/exhaustive-deps }, [feedbackTypeFilter]) + const agentReasoningArtifacts = (artifacts) => { + const newArtifacts = cloneDeep(artifacts) + for (let i = 0; i < newArtifacts.length; i++) { + const artifact = newArtifacts[i] + if (artifact && (artifact.type === 'png' || artifact.type === 'jpeg')) { + const data = artifact.data + newArtifacts[i].data = `${baseURL}/api/v1/get-upload-file?chatflowId=${ + dialogProps.chatflow.id + }&chatId=${selectedChatId}&fileName=${data.replace('FILE-STORAGE::', '')}` + } + } + return newArtifacts + } + + const renderArtifacts = (item, index, isAgentReasoning) => { + if (item.type === 'png' || item.type === 'jpeg') { + return ( + + + + ) + } else if (item.type === 'html') { + return ( +
+
+
+ ) + } else { + return ( + + ) : ( + + {children} + + ) + } + }} + > + {item.data} + + ) + } + } + const component = show ? ( @@ -637,6 +950,11 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { />
+ {stats.totalMessages > 0 && ( + + )}
{ width: '100%' }} > - {message.usedTools && ( -
- {message.usedTools.map((tool, index) => { - return ( - onSourceDialogClick(tool, 'Used Tools')} - /> - ) - })} -
- )} {message.fileUploads && message.fileUploads.length > 0 && (
{ }} > {message.fileUploads.map((item, index) => { - return ( - <> - {item.mime.startsWith('image/') ? ( - - - - ) : ( - // eslint-disable-next-line jsx-a11y/media-has-caption - - )} - - ) + return <>{renderFileUploads(item, index)} })}
)} @@ -947,10 +1217,30 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { key={index} label={tool.tool} component='a' - sx={{ mr: 1, mt: 1 }} + sx={{ + mr: 1, + mt: 1, + borderColor: tool.error + ? 'error.main' + : undefined, + color: tool.error + ? 'error.main' + : undefined + }} variant='outlined' clickable - icon={} + icon={ + + } onClick={() => onSourceDialogClick( tool, @@ -990,6 +1280,31 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { />
)} + {agent.artifacts && ( +
+ {agentReasoningArtifacts( + agent.artifacts + ).map((item, index) => { + return item !== null ? ( + <> + {renderArtifacts( + item, + index, + true + )} + + ) : null + })} +
+ )} {agent.messages.length > 0 && ( { return !inline ? ( { })} )} + {message.usedTools && ( +
+ {message.usedTools.map((tool, index) => { + return ( + + } + onClick={() => onSourceDialogClick(tool, 'Used Tools')} + /> + ) + })} +
+ )} + {message.artifacts && ( +
+ {message.artifacts.map((item, index) => { + return item !== null ? ( + <>{renderArtifacts(item, index)} + ) : null + })} +
+ )}
{/* Messages are being rendered in Markdown format */} { )}
setSourceDialogOpen(false)} /> + setHardDeleteDialogOpen(false)} + onConfirm={(hardDelete) => deleteMessages(hardDelete)} + />
diff --git a/packages/ui/src/ui-component/dropdown/AsyncDropdown.jsx b/packages/ui/src/ui-component/dropdown/AsyncDropdown.jsx index 4b743d56fb1..5d4a0935b4a 100644 --- a/packages/ui/src/ui-component/dropdown/AsyncDropdown.jsx +++ b/packages/ui/src/ui-component/dropdown/AsyncDropdown.jsx @@ -29,7 +29,10 @@ const fetchList = async ({ name, nodeData }) => { const loadMethod = nodeData.inputParams.find((param) => param.name === name)?.loadMethod let lists = await client - .post(`/node-load-method/${nodeData.name}`, { ...nodeData, loadMethod }) + .post( + `${baseURL}/api/v1/node-load-method/${nodeData.name}`, + { ...nodeData, loadMethod } + ) .then(async function (response) { return response.data }) @@ -48,15 +51,28 @@ export const AsyncDropdown = ({ onCreateNew, credentialNames = [], disabled = false, - disableClearable = false + freeSolo = false, + disableClearable = false, + multiple = false }) => { const customization = useSelector((state) => state.customization) const [open, setOpen] = useState(false) const [options, setOptions] = useState([]) const [loading, setLoading] = useState(false) - const findMatchingOptions = (options = [], value) => options.find((option) => option.name === value) - const getDefaultOptionValue = () => '' + const findMatchingOptions = (options = [], value) => { + if (multiple) { + let values = [] + if ('choose an option' !== value && value && typeof value === 'string') { + values = JSON.parse(value) + } else { + values = value + } + return options.filter((option) => values.includes(option.name)) + } + return options.find((option) => option.name === value) + } + const getDefaultOptionValue = () => (multiple ? [] : '') const addNewOption = [{ label: '- Create New -', name: '-create-' }] let [internalValue, setInternalValue] = useState(value ?? 'choose an option') @@ -104,8 +120,11 @@ export const AsyncDropdown = ({ <> { - const value = selection ? selection.name : '' - if (isCreateNewOption && value === '-create-') { - onCreateNew() - } else { + if (multiple) { + let value = '' + if (selection.length) { + const selectionNames = selection.map((item) => item.name) + value = JSON.stringify(selectionNames) + } setInternalValue(value) onSelect(value) + } else { + const value = selection ? selection.name : '' + if (isCreateNewOption && value === '-create-') { + onCreateNew() + } else { + setInternalValue(value) + onSelect(value) + } } }} PopperComponent={StyledPopper} @@ -166,7 +195,9 @@ AsyncDropdown.propTypes = { onSelect: PropTypes.func, onCreateNew: PropTypes.func, disabled: PropTypes.bool, + freeSolo: PropTypes.bool, credentialNames: PropTypes.array, disableClearable: PropTypes.bool, - isCreateNewOption: PropTypes.bool + isCreateNewOption: PropTypes.bool, + multiple: PropTypes.bool } diff --git a/packages/ui/src/ui-component/dropdown/Dropdown.jsx b/packages/ui/src/ui-component/dropdown/Dropdown.jsx index 65b4f89e350..333b3cca1c8 100644 --- a/packages/ui/src/ui-component/dropdown/Dropdown.jsx +++ b/packages/ui/src/ui-component/dropdown/Dropdown.jsx @@ -18,7 +18,7 @@ const StyledPopper = styled(Popper)({ } }) -export const Dropdown = ({ name, value, loading, options, onSelect, disabled = false, disableClearable = false }) => { +export const Dropdown = ({ name, value, loading, options, onSelect, disabled = false, freeSolo = false, disableClearable = false }) => { const customization = useSelector((state) => state.customization) const findMatchingOptions = (options = [], value) => options.find((option) => option.name === value) const getDefaultOptionValue = () => '' @@ -29,6 +29,7 @@ export const Dropdown = ({ name, value, loading, options, onSelect, disabled = f ( - - )} + renderInput={(params) => { + const matchingOption = findMatchingOptions(options, internalValue) + return ( + + ) : null + }} + /> + ) + }} renderOption={(props, option) => ( - + + {option.imageSrc && ( + {option.description} + )}
{option.label} {option.description && ( @@ -64,6 +102,7 @@ Dropdown.propTypes = { value: PropTypes.string, loading: PropTypes.bool, options: PropTypes.array, + freeSolo: PropTypes.bool, onSelect: PropTypes.func, disabled: PropTypes.bool, disableClearable: PropTypes.bool diff --git a/packages/ui/src/ui-component/extended/AllowedDomains.jsx b/packages/ui/src/ui-component/extended/AllowedDomains.jsx index 8c6e70dceb5..b13d660d5c4 100644 --- a/packages/ui/src/ui-component/extended/AllowedDomains.jsx +++ b/packages/ui/src/ui-component/extended/AllowedDomains.jsx @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import { enqueueSnackbar as enqueueSnackbarAction, closeSnackbar as closeSnackbarAction, SET_CHATFLOW } from '@/store/actions' // material-ui -import { Button, IconButton, OutlinedInput, Box, List, InputAdornment, Typography } from '@mui/material' +import { Button, IconButton, OutlinedInput, Box, InputAdornment, Stack, Typography } from '@mui/material' import { IconX, IconTrash, IconPlus } from '@tabler/icons-react' // Project import @@ -118,23 +118,17 @@ const AllowedDomains = ({ dialogProps }) => { }, [dialogProps]) return ( - <> - - - - Allowed Domains - - - - + + + Allowed Domains + + + + + Domains {inputFields.map((origin, index) => { return (
@@ -176,11 +170,9 @@ const AllowedDomains = ({ dialogProps }) => {
) })} -
-
- -
- + + + Error Message { setErrorMessage(e.target.value) }} /> -
-
+ + Save - + ) } diff --git a/packages/ui/src/ui-component/extended/AnalyseFlow.jsx b/packages/ui/src/ui-component/extended/AnalyseFlow.jsx index 56f227c587c..071355b1945 100644 --- a/packages/ui/src/ui-component/extended/AnalyseFlow.jsx +++ b/packages/ui/src/ui-component/extended/AnalyseFlow.jsx @@ -28,6 +28,8 @@ import langsmithPNG from '@/assets/images/langchain.png' import langfuseSVG from '@/assets/images/langfuse.svg' import lunarySVG from '@/assets/images/lunary.svg' import langwatchSVG from '@/assets/images/langwatch.svg' +import arizePNG from '@/assets/images/arize.png' +import phoenixPNG from '@/assets/images/phoenix.png' // store import useNotifier from '@/utils/useNotifier' @@ -131,6 +133,62 @@ const analyticProviders = [ optional: true } ] + }, + { + label: 'Arize', + name: 'arize', + icon: arizePNG, + url: 'https://arize.com', + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['arizeApi'] + }, + { + label: 'Project Name', + name: 'projectName', + type: 'string', + optional: true, + description: 'If not provided, default will be used.', + placeholder: 'default' + }, + { + label: 'On/Off', + name: 'status', + type: 'boolean', + optional: true + } + ] + }, + { + label: 'Phoenix', + name: 'phoenix', + icon: phoenixPNG, + url: 'https://phoenix.arize.com', + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['phoenixApi'] + }, + { + label: 'Project Name', + name: 'projectName', + type: 'string', + optional: true, + description: 'If not provided, default will be used.', + placeholder: 'default' + }, + { + label: 'On/Off', + name: 'status', + type: 'boolean', + optional: true + } + ] } ] diff --git a/packages/ui/src/ui-component/extended/FileUpload.jsx b/packages/ui/src/ui-component/extended/FileUpload.jsx new file mode 100644 index 00000000000..d6fc8f02aba --- /dev/null +++ b/packages/ui/src/ui-component/extended/FileUpload.jsx @@ -0,0 +1,150 @@ +import { useDispatch } from 'react-redux' +import { useState, useEffect } from 'react' +import PropTypes from 'prop-types' +import { enqueueSnackbar as enqueueSnackbarAction, closeSnackbar as closeSnackbarAction, SET_CHATFLOW } from '@/store/actions' +import parser from 'html-react-parser' + +// material-ui +import { Button, Box } from '@mui/material' +import { IconX, IconBulb } from '@tabler/icons-react' + +// Project import +import { StyledButton } from '@/ui-component/button/StyledButton' +import { SwitchInput } from '@/ui-component/switch/Switch' + +// store +import useNotifier from '@/utils/useNotifier' + +// API +import chatflowsApi from '@/api/chatflows' + +const message = `Uploaded files will be parsed as strings and sent to the LLM. If file upload is enabled on the Vector Store as well, this will override and take precedence. +
+Refer
docs for more details.` + +const FileUpload = ({ dialogProps }) => { + const dispatch = useDispatch() + + useNotifier() + + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + const [fullFileUpload, setFullFileUpload] = useState(false) + const [chatbotConfig, setChatbotConfig] = useState({}) + + const handleChange = (value) => { + setFullFileUpload(value) + } + + const onSave = async () => { + try { + const value = { + status: fullFileUpload + } + chatbotConfig.fullFileUpload = value + + const saveResp = await chatflowsApi.updateChatflow(dialogProps.chatflow.id, { + chatbotConfig: JSON.stringify(chatbotConfig) + }) + if (saveResp.data) { + enqueueSnackbar({ + message: 'File Upload Configuration Saved', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + dispatch({ type: SET_CHATFLOW, chatflow: saveResp.data }) + } + } catch (error) { + enqueueSnackbar({ + message: `Failed to save File Upload Configuration: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + useEffect(() => { + if (dialogProps.chatflow) { + if (dialogProps.chatflow.chatbotConfig) { + try { + let chatbotConfig = JSON.parse(dialogProps.chatflow.chatbotConfig) + setChatbotConfig(chatbotConfig || {}) + if (chatbotConfig.fullFileUpload) { + setFullFileUpload(chatbotConfig.fullFileUpload.status) + } + } catch (e) { + setChatbotConfig({}) + } + } + } + + return () => {} + }, [dialogProps]) + + return ( + <> + +
+
+ + {parser(message)} +
+
+ +
+ {/* TODO: Allow selection of allowed file types*/} + + Save + + + ) +} + +FileUpload.propTypes = { + dialogProps: PropTypes.object +} + +export default FileUpload diff --git a/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx b/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx new file mode 100644 index 00000000000..911c270e044 --- /dev/null +++ b/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx @@ -0,0 +1,603 @@ +import PropTypes from 'prop-types' +import { Box, Button, FormControl, ListItem, ListItemAvatar, ListItemText, MenuItem, Select, Typography } from '@mui/material' +import { useEffect, useState } from 'react' +import { useDispatch } from 'react-redux' + +// Project Imports +import { StyledButton } from '@/ui-component/button/StyledButton' +import { SwitchInput } from '@/ui-component/switch/Switch' +import chatflowsApi from '@/api/chatflows' +import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction, SET_CHATFLOW } from '@/store/actions' +import useNotifier from '@/utils/useNotifier' +import anthropicIcon from '@/assets/images/anthropic.svg' +import azureOpenAiIcon from '@/assets/images/azure_openai.svg' +import mistralAiIcon from '@/assets/images/mistralai.svg' +import openAiIcon from '@/assets/images/openai.svg' +import groqIcon from '@/assets/images/groq.gif' +import ollamaIcon from '@/assets/images/ollama.svg' +import { TooltipWithParser } from '@/ui-component/tooltip/TooltipWithParser' +import CredentialInputHandler from '@/views/canvas/CredentialInputHandler' +import { Input } from '@/ui-component/input/Input' +import { AsyncDropdown } from '@/ui-component/dropdown/AsyncDropdown' + +// Icons +import { IconX } from '@tabler/icons-react' +import { Dropdown } from '@/ui-component/dropdown/Dropdown' +import Image from 'next/image' + +const promptDescription = + 'Prompt to generate questions based on the conversation history. You can use variable {history} to refer to the conversation history.' +const defaultPrompt = + 'Given the following conversations: {history}. Please help me predict the three most likely questions that human would ask and keeping each question short and concise.' + +// update when adding new providers +const FollowUpPromptProviders = { + ANTHROPIC: 'chatAnthropic', + AZURE_OPENAI: 'azureChatOpenAI', + GOOGLE_GENAI: 'chatGoogleGenerativeAI', + GROQ: 'groqChat', + MISTRALAI: 'chatMistralAI', + OPENAI: 'chatOpenAI', + OLLAMA: 'ollama' +} + +const followUpPromptsOptions = { + [FollowUpPromptProviders.ANTHROPIC]: { + label: 'Anthropic Claude', + name: FollowUpPromptProviders.ANTHROPIC, + icon: anthropicIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['anthropicApi'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'asyncOptions', + loadMethod: 'listModels' + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.AZURE_OPENAI]: { + label: 'Azure ChatOpenAI', + name: FollowUpPromptProviders.AZURE_OPENAI, + icon: azureOpenAiIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['azureOpenAIApi'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'asyncOptions', + loadMethod: 'listModels' + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.GOOGLE_GENAI]: { + label: 'Google Gemini', + name: FollowUpPromptProviders.GOOGLE_GENAI, + icon: azureOpenAiIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['googleGenerativeAI'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'options', + default: 'gemini-1.5-pro-latest', + options: [ + { label: 'gemini-1.5-flash-latest', name: 'gemini-1.5-flash-latest' }, + { label: 'gemini-1.5-pro-latest', name: 'gemini-1.5-pro-latest' } + ] + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.GROQ]: { + label: 'Groq', + name: FollowUpPromptProviders.GROQ, + icon: groqIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['groqApi'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'asyncOptions', + loadMethod: 'listModels' + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.MISTRALAI]: { + label: 'Mistral AI', + name: FollowUpPromptProviders.MISTRALAI, + icon: mistralAiIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['mistralAIApi'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'options', + options: [ + { label: 'mistral-large-latest', name: 'mistral-large-latest' }, + { label: 'mistral-large-2402', name: 'mistral-large-2402' } + ] + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.OPENAI]: { + label: 'OpenAI', + name: FollowUpPromptProviders.OPENAI, + icon: openAiIcon, + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['openAIApi'] + }, + { + label: 'Model Name', + name: 'modelName', + type: 'asyncOptions', + loadMethod: 'listModels' + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.9 + } + ] + }, + [FollowUpPromptProviders.OLLAMA]: { + label: 'Ollama', + name: FollowUpPromptProviders.OLLAMA, + icon: ollamaIcon, + inputs: [ + { + label: 'Model Name', + name: 'modelName', + type: 'string', + placeholder: 'llama2', + description: 'Name of the Ollama model to use', + default: 'llama3.2-vision:latest' + }, + { + label: 'Prompt', + name: 'prompt', + type: 'string', + rows: 4, + description: promptDescription, + optional: true, + default: defaultPrompt + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + optional: true, + default: 0.7 + } + ] + } +} + +const FollowUpPrompts = ({ dialogProps }) => { + const dispatch = useDispatch() + + useNotifier() + + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + const [followUpPromptsConfig, setFollowUpPromptsConfig] = useState({}) + const [chatbotConfig, setChatbotConfig] = useState({}) + const [selectedProvider, setSelectedProvider] = useState('none') + + const handleChange = (key, value) => { + setFollowUpPromptsConfig({ + ...followUpPromptsConfig, + [key]: value + }) + } + + const handleSelectedProviderChange = (event) => { + const selectedProvider = event.target.value + setSelectedProvider(selectedProvider) + handleChange('selectedProvider', selectedProvider) + } + + const setValue = (value, providerName, inputParamName) => { + let newVal = {} + if (!Object.prototype.hasOwnProperty.call(followUpPromptsConfig, providerName)) { + newVal = { ...followUpPromptsConfig, [providerName]: {} } + } else { + newVal = { ...followUpPromptsConfig } + } + + newVal[providerName][inputParamName] = value + if (inputParamName === 'status' && value === true) { + // ensure that the others are turned off + Object.keys(followUpPromptsOptions).forEach((key) => { + const provider = followUpPromptsOptions[key] + if (provider.name !== providerName) { + newVal[provider.name] = { ...followUpPromptsConfig[provider.name], status: false } + } + }) + } + setFollowUpPromptsConfig(newVal) + return newVal + } + + const onSave = async () => { + // TODO: saving without changing the prompt will not save the prompt + try { + let value = { + followUpPrompts: { status: followUpPromptsConfig.status } + } + chatbotConfig.followUpPrompts = value.followUpPrompts + + // if the prompt is not set, save the default prompt + const selectedProvider = followUpPromptsConfig.selectedProvider + + if (selectedProvider && followUpPromptsConfig[selectedProvider] && followUpPromptsOptions[selectedProvider]) { + if (!followUpPromptsConfig[selectedProvider].prompt) { + followUpPromptsConfig[selectedProvider].prompt = followUpPromptsOptions[selectedProvider].inputs.find( + (input) => input.name === 'prompt' + )?.default + } + + if (!followUpPromptsConfig[selectedProvider].temperature) { + followUpPromptsConfig[selectedProvider].temperature = followUpPromptsOptions[selectedProvider].inputs.find( + (input) => input.name === 'temperature' + )?.default + } + } + + const saveResp = await chatflowsApi.updateChatflow(dialogProps.chatflow.id, { + chatbotConfig: JSON.stringify(chatbotConfig), + followUpPrompts: JSON.stringify(followUpPromptsConfig) + }) + if (saveResp.data) { + enqueueSnackbar({ + message: 'Follow-up Prompts configuration saved', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + dispatch({ type: SET_CHATFLOW, chatflow: saveResp.data }) + } + } catch (error) { + const errorData = error.response.data || `${error.response.status}: ${error.response.statusText}` + enqueueSnackbar({ + message: `Failed to save follow-up prompts configuration: ${errorData}`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + useEffect(() => { + if (dialogProps.chatflow && dialogProps.chatflow.followUpPrompts) { + let chatbotConfig = JSON.parse(dialogProps.chatflow.chatbotConfig) + let followUpPromptsConfig = JSON.parse(dialogProps.chatflow.followUpPrompts) + setChatbotConfig(chatbotConfig || {}) + if (followUpPromptsConfig) { + setFollowUpPromptsConfig(followUpPromptsConfig) + setSelectedProvider(followUpPromptsConfig.selectedProvider) + } + } + + return () => {} + }, [dialogProps]) + + const checkDisabled = () => { + if (followUpPromptsConfig && followUpPromptsConfig.status) { + if (selectedProvider === 'none') { + return true + } + const provider = followUpPromptsOptions[selectedProvider] + for (let inputParam of provider.inputs) { + if (!inputParam.optional) { + const param = inputParam.name === 'credential' ? 'credentialId' : inputParam.name + if ( + !followUpPromptsConfig[selectedProvider] || + !followUpPromptsConfig[selectedProvider][param] || + followUpPromptsConfig[selectedProvider][param] === '' + ) { + return true + } + } + } + } + return false + } + + return ( + <> + + handleChange('status', value)} + value={followUpPromptsConfig.status} + /> + {followUpPromptsConfig && followUpPromptsConfig.status && ( + <> + Providers + + + + {selectedProvider !== 'none' && ( + <> + + +
+ AI +
+
+ + {followUpPromptsOptions[selectedProvider].url} + + } + /> +
+ {followUpPromptsOptions[selectedProvider].inputs.map((inputParam, index) => ( + +
+ + {inputParam.label} + {!inputParam.optional &&  *} + {inputParam.description && ( + + )} + +
+ {inputParam.type === 'credential' && ( + setValue(newValue, selectedProvider, 'credentialId')} + /> + )} + + {(inputParam.type === 'string' || + inputParam.type === 'password' || + inputParam.type === 'number') && ( + setValue(newValue, selectedProvider, inputParam.name)} + value={ + followUpPromptsConfig[selectedProvider] && + followUpPromptsConfig[selectedProvider][inputParam.name] + ? followUpPromptsConfig[selectedProvider][inputParam.name] + : inputParam.default ?? '' + } + /> + )} + + {inputParam.type === 'asyncOptions' && ( + <> +
+ setValue(newValue, selectedProvider, inputParam.name)} + /> +
+ + )} + + {inputParam.type === 'options' && ( + setValue(newValue, selectedProvider, inputParam.name)} + value={ + followUpPromptsConfig[selectedProvider] && + followUpPromptsConfig[selectedProvider][inputParam.name] + ? followUpPromptsConfig[selectedProvider][inputParam] + : inputParam.default ?? 'choose an option' + } + /> + )} +
+ ))} + + )} + + )} +
+ + Save + + + ) +} + +FollowUpPrompts.propTypes = { + dialogProps: PropTypes.object +} + +export default FollowUpPrompts diff --git a/packages/ui/src/ui-component/extended/OverrideConfig.jsx b/packages/ui/src/ui-component/extended/OverrideConfig.jsx new file mode 100644 index 00000000000..5f398fe01d6 --- /dev/null +++ b/packages/ui/src/ui-component/extended/OverrideConfig.jsx @@ -0,0 +1,436 @@ +import PropTypes from 'prop-types' +import { useEffect, useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { + Accordion, + AccordionDetails, + AccordionSummary, + Button, + Paper, + Stack, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Typography, + Card +} from '@mui/material' +import { useTheme } from '@mui/material/styles' + +// Project import +import { StyledButton } from '@/ui-component/button/StyledButton' +import { TooltipWithParser } from '@/ui-component/tooltip/TooltipWithParser' +import { SwitchInput } from '@/ui-component/switch/Switch' +import useNotifier from '@/utils/useNotifier' +import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction, SET_CHATFLOW } from '@/store/actions' + +// Icons +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { IconX, IconBox, IconVariable } from '@tabler/icons-react' + +// API +import useApi from '@/hooks/useApi' +import chatflowsApi from '@/api/chatflows' +import configApi from '@/api/config' +import variablesApi from '@/api/variables' + +// utils + +const OverrideConfigTable = ({ columns, onToggle, rows, sx }) => { + const handleChange = (enabled, row) => { + onToggle(row, enabled) + } + + return ( + + + + + {columns.map((col, index) => ( + {col.charAt(0).toUpperCase() + col.slice(1)} + ))} + + + + {rows.map((row, index) => ( + + {Object.keys(row).map((key, index) => { + if (key !== 'id') { + return ( + + {key === 'enabled' ? ( + handleChange(enabled, row)} value={row.enabled} /> + ) : ( + row[key] + )} + + ) + } + })} + + ))} + +
+
+ ) +} + +OverrideConfigTable.propTypes = { + rows: PropTypes.array, + columns: PropTypes.array, + sx: PropTypes.object, + onToggle: PropTypes.func +} + +const OverrideConfig = ({ dialogProps }) => { + const dispatch = useDispatch() + const chatflow = useSelector((state) => state.canvas.chatflow) + const chatflowid = chatflow.id + const apiConfig = chatflow.apiConfig ? JSON.parse(chatflow.apiConfig) : {} + + useNotifier() + const theme = useTheme() + + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + const [nodeConfig, setNodeConfig] = useState(null) + const [nodeConfigExpanded, setNodeConfigExpanded] = useState({}) + const [overrideConfigStatus, setOverrideConfigStatus] = useState( + apiConfig?.overrideConfig?.status !== undefined ? apiConfig.overrideConfig.status : false + ) + const [nodeOverrides, setNodeOverrides] = useState(apiConfig?.overrideConfig?.nodes !== undefined ? apiConfig.overrideConfig.nodes : {}) + const [variableOverrides, setVariableOverrides] = useState( + apiConfig?.overrideConfig?.variables !== undefined ? apiConfig.overrideConfig.variables : [] + ) + + const getConfigApi = useApi(configApi.getConfig) + const getAllVariablesApi = useApi(variablesApi.getAllVariables) + + const handleAccordionChange = (nodeLabel) => (event, isExpanded) => { + const accordianNodes = { ...nodeConfigExpanded } + accordianNodes[nodeLabel] = isExpanded + setNodeConfigExpanded(accordianNodes) + } + + const formatObj = () => { + const obj = { + overrideConfig: { status: overrideConfigStatus } + } + + if (overrideConfigStatus) { + // loop through each key in nodeOverrides and filter out the enabled ones + const filteredNodeOverrides = {} + for (const key in nodeOverrides) { + filteredNodeOverrides[key] = nodeOverrides[key].filter((node) => node.enabled) + } + + obj.overrideConfig = { + ...obj.overrideConfig, + nodes: filteredNodeOverrides, + variables: variableOverrides.filter((node) => node.enabled) + } + } + + return obj + } + + const onNodeOverrideToggle = (node, property, status) => { + setNodeOverrides((prev) => { + const newConfig = { ...prev } + newConfig[node] = newConfig[node].map((item) => { + if (item.name === property) { + item.enabled = status + } + return item + }) + return newConfig + }) + } + + const onVariableOverrideToggle = (id, status) => { + setVariableOverrides((prev) => { + return prev.map((item) => { + if (item.id === id) { + item.enabled = status + } + return item + }) + }) + } + + const groupByNodeLabel = (nodes) => { + const result = {} + const newNodeOverrides = {} + const seenNodes = new Set() + + nodes.forEach((item) => { + const { node, nodeId, label, name, type } = item + seenNodes.add(node) + + if (!result[node]) { + result[node] = { + nodeIds: [], + params: [] + } + } + + if (!newNodeOverrides[node]) { + // If overrideConfigStatus is true, copy existing config for this node + newNodeOverrides[node] = overrideConfigStatus ? [...(nodeOverrides[node] || [])] : [] + } + + if (!result[node].nodeIds.includes(nodeId)) result[node].nodeIds.push(nodeId) + + const param = { label, name, type } + + if (!result[node].params.some((existingParam) => JSON.stringify(existingParam) === JSON.stringify(param))) { + result[node].params.push(param) + const paramExists = newNodeOverrides[node].some( + (existingParam) => existingParam.label === label && existingParam.name === name && existingParam.type === type + ) + if (!paramExists) { + newNodeOverrides[node].push({ ...param, enabled: false }) + } + } + }) + + // Sort the nodeIds array + for (const node in result) { + result[node].nodeIds.sort() + } + setNodeConfig(result) + + if (!overrideConfigStatus) { + setNodeOverrides(newNodeOverrides) + } else { + const updatedNodeOverrides = { ...nodeOverrides } + + Object.keys(updatedNodeOverrides).forEach((node) => { + if (!seenNodes.has(node)) { + delete updatedNodeOverrides[node] + } + }) + + seenNodes.forEach((node) => { + if (!updatedNodeOverrides[node]) { + updatedNodeOverrides[node] = newNodeOverrides[node] + } + }) + + setNodeOverrides(updatedNodeOverrides) + } + } + + const groupByVariableLabel = (variables) => { + const newVariables = [] + const seenVariables = new Set() + + variables.forEach((item) => { + const { id, name, type } = item + seenVariables.add(id) + + const param = { id, name, type } + const existingVariable = variableOverrides?.find((existingParam) => existingParam.id === id) + + if (existingVariable) { + if (!newVariables.some((existingVariable) => existingVariable.id === id)) { + newVariables.push({ ...existingVariable }) + } + } else { + if (!newVariables.some((existingVariable) => existingVariable.id === id)) { + newVariables.push({ ...param, enabled: false }) + } + } + }) + + if (variableOverrides) { + variableOverrides.forEach((existingVariable) => { + if (!seenVariables.has(existingVariable.id)) { + const index = newVariables.findIndex((newVariable) => newVariable.id === existingVariable.id) + if (index !== -1) { + newVariables.splice(index, 1) + } + } + }) + } + + setVariableOverrides(newVariables) + } + + const onOverrideConfigSave = async () => { + try { + const saveResp = await chatflowsApi.updateChatflow(chatflowid, { + apiConfig: JSON.stringify(formatObj()) + }) + if (saveResp.data) { + enqueueSnackbar({ + message: 'Override Configuration Saved', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + dispatch({ type: SET_CHATFLOW, chatflow: saveResp.data }) + } + } catch (error) { + enqueueSnackbar({ + message: `Failed to save Override Configuration: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + useEffect(() => { + if (dialogProps.chatflow) { + getConfigApi.request(dialogProps.chatflow.id) + getAllVariablesApi.request() + } + + return () => {} + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dialogProps]) + + useEffect(() => { + if (getConfigApi.data) { + groupByNodeLabel(getConfigApi.data) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [getConfigApi.data]) + + useEffect(() => { + if (getAllVariablesApi.data) { + groupByVariableLabel(getAllVariablesApi.data) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [getAllVariablesApi.data]) + + return ( + + + Override Configuration + documentation for more information.' + } + /> + + + + {overrideConfigStatus && ( + <> + {nodeOverrides && nodeConfig && ( + + + + Nodes + + + {Object.keys(nodeOverrides) + .sort() + .map((nodeLabel) => ( + + } + aria-controls={`nodes-accordian-${nodeLabel}`} + id={`nodes-accordian-header-${nodeLabel}`} + > + + {nodeLabel} + {nodeConfig[nodeLabel].nodeIds.length > 0 && + nodeConfig[nodeLabel].nodeIds.map((nodeId, index) => ( +
+ + {nodeId} + +
+ ))} +
+
+ + 0 + ? Object.keys(nodeOverrides[nodeLabel][0]) + : [] + } + onToggle={(property, status) => + onNodeOverrideToggle(nodeLabel, property.name, status) + } + /> + +
+ ))} +
+
+ )} + {variableOverrides && variableOverrides.length > 0 && ( + + + + Variables + + onVariableOverrideToggle(property.id, status)} + /> + + )} + + )} +
+ + Save + +
+ ) +} + +OverrideConfig.propTypes = { + dialogProps: PropTypes.object +} + +export default OverrideConfig diff --git a/packages/ui/src/ui-component/extended/PostProcessing.jsx b/packages/ui/src/ui-component/extended/PostProcessing.jsx new file mode 100644 index 00000000000..fd56a3eb683 --- /dev/null +++ b/packages/ui/src/ui-component/extended/PostProcessing.jsx @@ -0,0 +1,228 @@ +import { useDispatch } from 'react-redux' +import { useState, useEffect } from 'react' +import PropTypes from 'prop-types' +import { useSelector } from 'react-redux' + +// material-ui +import { IconButton, Button, Box, Typography } from '@mui/material' +import { IconArrowsMaximize, IconBulb, IconX } from '@tabler/icons-react' +import { useTheme } from '@mui/material/styles' + +// Project import +import { StyledButton } from '@/ui-component/button/StyledButton' +import { SwitchInput } from '@/ui-component/switch/Switch' +import { CodeEditor } from '@/ui-component/editor/CodeEditor' +import ExpandTextDialog from '@/ui-component/dialog/ExpandTextDialog' + +// store +import { enqueueSnackbar as enqueueSnackbarAction, closeSnackbar as closeSnackbarAction, SET_CHATFLOW } from '@/store/actions' +import useNotifier from '@/utils/useNotifier' + +// API +import chatflowsApi from '@/api/chatflows' + +const sampleFunction = `return $flow.rawOutput + " This is a post processed response!";` + +const PostProcessing = ({ dialogProps }) => { + const dispatch = useDispatch() + + useNotifier() + const theme = useTheme() + const customization = useSelector((state) => state.customization) + + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + + const [postProcessingEnabled, setPostProcessingEnabled] = useState(false) + const [postProcessingFunction, setPostProcessingFunction] = useState('') + const [chatbotConfig, setChatbotConfig] = useState({}) + const [showExpandDialog, setShowExpandDialog] = useState(false) + const [expandDialogProps, setExpandDialogProps] = useState({}) + + const handleChange = (value) => { + setPostProcessingEnabled(value) + } + + const onExpandDialogClicked = (value) => { + const dialogProps = { + value, + inputParam: { + label: 'Post Processing Function', + name: 'postProcessingFunction', + type: 'code', + placeholder: sampleFunction, + hideCodeExecute: true + }, + languageType: 'js', + confirmButtonName: 'Save', + cancelButtonName: 'Cancel' + } + setExpandDialogProps(dialogProps) + setShowExpandDialog(true) + } + + const onSave = async () => { + try { + let value = { + postProcessing: { + enabled: postProcessingEnabled, + customFunction: JSON.stringify(postProcessingFunction) + } + } + chatbotConfig.postProcessing = value.postProcessing + const saveResp = await chatflowsApi.updateChatflow(dialogProps.chatflow.id, { + chatbotConfig: JSON.stringify(chatbotConfig) + }) + if (saveResp.data) { + enqueueSnackbar({ + message: 'Post Processing Settings Saved', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + dispatch({ type: SET_CHATFLOW, chatflow: saveResp.data }) + } + } catch (error) { + enqueueSnackbar({ + message: `Failed to save Post Processing Settings: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } + + useEffect(() => { + if (dialogProps.chatflow && dialogProps.chatflow.chatbotConfig) { + let chatbotConfig = JSON.parse(dialogProps.chatflow.chatbotConfig) + setChatbotConfig(chatbotConfig || {}) + if (chatbotConfig.postProcessing) { + setPostProcessingEnabled(chatbotConfig.postProcessing.enabled) + if (chatbotConfig.postProcessing.customFunction) { + setPostProcessingFunction(JSON.parse(chatbotConfig.postProcessing.customFunction)) + } + } + } + + return () => {} + }, [dialogProps]) + + return ( + <> + + + + + + JS Function + +
+ onExpandDialogClicked(postProcessingFunction)} + > + + + + +
+ setPostProcessingFunction(code)} + basicSetup={{ highlightActiveLine: false, highlightActiveLineGutter: false }} + /> +
+ +
+
+ + + The following variables are available to use in the custom function:{' '} +
$flow.rawOutput, $flow.input, $flow.chatflowId, $flow.sessionId, $flow.chatId
+
+
+
+ + Save + + setShowExpandDialog(false)} + onConfirm={(newValue) => { + setPostProcessingFunction(newValue) + setShowExpandDialog(false) + }} + > + + ) +} + +PostProcessing.propTypes = { + dialogProps: PropTypes.object +} + +export default PostProcessing diff --git a/packages/ui/src/ui-component/extended/RateLimit.jsx b/packages/ui/src/ui-component/extended/RateLimit.jsx index 1a578af6a5a..e392737c2ba 100644 --- a/packages/ui/src/ui-component/extended/RateLimit.jsx +++ b/packages/ui/src/ui-component/extended/RateLimit.jsx @@ -3,11 +3,12 @@ import { useDispatch, useSelector } from 'react-redux' import { enqueueSnackbar as enqueueSnackbarAction, closeSnackbar as closeSnackbarAction, SET_CHATFLOW } from '@/store/actions' import PropTypes from 'prop-types' -import { Box, Typography, Button, OutlinedInput } from '@mui/material' +import { Typography, Button, OutlinedInput, Stack } from '@mui/material' // Project import import { StyledButton } from '@/ui-component/button/StyledButton' import { TooltipWithParser } from '@/ui-component/tooltip/TooltipWithParser' +import { SwitchInput } from '@/ui-component/switch/Switch' // Icons import { IconX } from '@tabler/icons-react' @@ -29,29 +30,47 @@ const RateLimit = ({ dialogProps }) => { const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + const [rateLimitStatus, setRateLimitStatus] = useState(apiConfig?.rateLimit?.status !== undefined ? apiConfig.rateLimit.status : false) const [limitMax, setLimitMax] = useState(apiConfig?.rateLimit?.limitMax ?? '') const [limitDuration, setLimitDuration] = useState(apiConfig?.rateLimit?.limitDuration ?? '') const [limitMsg, setLimitMsg] = useState(apiConfig?.rateLimit?.limitMsg ?? '') const formatObj = () => { const obj = { - rateLimit: {} + rateLimit: { status: rateLimitStatus } } - const rateLimitValuesBoolean = [!limitMax, !limitDuration, !limitMsg] - const rateLimitFilledValues = rateLimitValuesBoolean.filter((value) => value === false) - if (rateLimitFilledValues.length >= 1 && rateLimitFilledValues.length <= 2) { - throw new Error('Need to fill all rate limit input fields') - } else if (rateLimitFilledValues.length === 3) { - obj.rateLimit = { - limitMax, - limitDuration, - limitMsg + + if (rateLimitStatus) { + const rateLimitValuesBoolean = [!limitMax, !limitDuration, !limitMsg] + const rateLimitFilledValues = rateLimitValuesBoolean.filter((value) => value === false) + if (rateLimitFilledValues.length >= 1 && rateLimitFilledValues.length <= 2) { + throw new Error('Need to fill all rate limit input fields') + } else if (rateLimitFilledValues.length === 3) { + obj.rateLimit = { + ...obj.rateLimit, + limitMax, + limitDuration, + limitMsg + } } } return obj } + const handleChange = (value) => { + setRateLimitStatus(value) + } + + const checkDisabled = () => { + if (rateLimitStatus) { + if (limitMax === '' || limitDuration === '' || limitMsg === '') { + return true + } + } + return false + } + const onSave = async () => { try { const saveResp = await chatflowsApi.updateChatflow(chatflowid, { @@ -107,46 +126,49 @@ const RateLimit = ({ dialogProps }) => { const textField = (message, fieldName, fieldLabel, fieldType = 'string', placeholder = '') => { return ( - -
- {fieldLabel} - { - onTextChanged(e.target.value, fieldName) - }} - /> -
-
+ + {fieldLabel} + { + onTextChanged(e.target.value, fieldName) + }} + /> + ) } return ( - <> - {/*Rate Limit*/} - + + Rate Limit{' '} Rate Limit Setup Guide to set up Rate Limit correctly in your hosting environment.' + 'Visit Rate Limit Setup Guide to set up Rate Limit correctly in your hosting environment.' } /> - {textField(limitMax, 'limitMax', 'Message Limit per Duration', 'number', '5')} - {textField(limitDuration, 'limitDuration', 'Duration in Second', 'number', '60')} - {textField(limitMsg, 'limitMsg', 'Limit Message', 'string', 'You have reached the quota')} - - onSave()}> - Save Changes + + + {rateLimitStatus && ( + + {textField(limitMax, 'limitMax', 'Message Limit per Duration', 'number', '5')} + {textField(limitDuration, 'limitDuration', 'Duration in Second', 'number', '60')} + {textField(limitMsg, 'limitMsg', 'Limit Message', 'string', 'You have reached the quota')} + + )} + + onSave()} sx={{ width: 'auto' }}> + Save - + ) } diff --git a/packages/ui/src/ui-component/extended/Security.jsx b/packages/ui/src/ui-component/extended/Security.jsx new file mode 100644 index 00000000000..b46847fcba0 --- /dev/null +++ b/packages/ui/src/ui-component/extended/Security.jsx @@ -0,0 +1,26 @@ +import PropTypes from 'prop-types' +import { Divider, Stack } from '@mui/material' +import { useTheme } from '@mui/material/styles' + +// Project import +import RateLimit from '@/ui-component/extended/RateLimit' +import AllowedDomains from '@/ui-component/extended/AllowedDomains' +import OverrideConfig from './OverrideConfig' + +const Security = ({ dialogProps }) => { + const theme = useTheme() + + return ( + } spacing={4}> + + + + + ) +} + +Security.propTypes = { + dialogProps: PropTypes.object +} + +export default Security diff --git a/packages/ui/src/ui-component/extended/SpeechToText.jsx b/packages/ui/src/ui-component/extended/SpeechToText.jsx index 3f3bdad12b4..1aa697efa84 100644 --- a/packages/ui/src/ui-component/extended/SpeechToText.jsx +++ b/packages/ui/src/ui-component/extended/SpeechToText.jsx @@ -17,6 +17,8 @@ import { Dropdown } from '@/ui-component/dropdown/Dropdown' import openAISVG from '@/assets/images/openai.svg' import assemblyAIPng from '@/assets/images/assemblyai.png' import localAiPng from '@/assets/images/localai.png' +import azureSvg from '@/assets/images/azure_openai.svg' +import groqPng from '@/assets/images/groq.gif' // store import useNotifier from '@/utils/useNotifier' @@ -30,7 +32,9 @@ import Image from 'next/image' const SpeechToTextType = { OPENAI_WHISPER: 'openAIWhisper', ASSEMBLYAI_TRANSCRIBE: 'assemblyAiTranscribe', - LOCALAI_STT: 'localAISTT' + LOCALAI_STT: 'localAISTT', + AZURE_COGNITIVE: 'azureCognitive', + GROQ_WHISPER: 'groqWhisper' } // Weird quirk - the key must match the name property value. @@ -140,6 +144,98 @@ const speechToTextProviders = { optional: true } ] + }, + [SpeechToTextType.AZURE_COGNITIVE]: { + label: 'Azure Cognitive Services', + name: SpeechToTextType.AZURE_COGNITIVE, + icon: azureSvg, + url: 'https://azure.microsoft.com/en-us/products/cognitive-services/speech-services', + inputs: [ + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['azureCognitiveServices'] + }, + { + label: 'Language', + name: 'language', + type: 'string', + description: 'The recognition language (e.g., "en-US", "es-ES")', + placeholder: 'en-US', + optional: true + }, + { + label: 'Profanity Filter Mode', + name: 'profanityFilterMode', + type: 'options', + description: 'How to handle profanity in the transcription', + options: [ + { + label: 'None', + name: 'None' + }, + { + label: 'Masked', + name: 'Masked' + }, + { + label: 'Removed', + name: 'Removed' + } + ], + default: 'Masked', + optional: true + }, + { + label: 'Audio Channels', + name: 'channels', + type: 'string', + description: 'Comma-separated list of audio channels to process (e.g., "0,1")', + placeholder: '0,1', + default: '0,1' + } + ] + }, + [SpeechToTextType.GROQ_WHISPER]: { + label: 'Groq Whisper', + name: SpeechToTextType.GROQ_WHISPER, + icon: groqPng, + url: 'https://console.groq.com/', + inputs: [ + { + label: 'Model', + name: 'model', + type: 'string', + description: `The STT model to load. Defaults to whisper-large-v3 if left blank.`, + placeholder: 'whisper-large-v3', + optional: true + }, + { + label: 'Connect Credential', + name: 'credential', + type: 'credential', + credentialNames: ['groqApi'] + }, + { + label: 'Language', + name: 'language', + type: 'string', + description: + 'The language of the input audio. Supplying the input language in ISO-639-1 format will improve accuracy and latency.', + placeholder: 'en', + optional: true + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + step: 0.1, + description: + 'The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.', + optional: true + } + ] } } @@ -211,6 +307,9 @@ const SpeechToText = ({ dialogProps }) => { newVal[provider.name] = { ...speechToText[provider.name], status: false } } }) + if (providerName !== 'none' && newVal['none']) { + newVal['none'].status = false + } } setSpeechToText(newVal) return newVal @@ -249,9 +348,7 @@ const SpeechToText = ({ dialogProps }) => { return ( <> - - Providers - + Providers + {isChatFlowAvailableForImageUploads && ( + + )} + {isChatFlowAvailableForFileUploads && ( + )} )} diff --git a/packages/ui/src/views/credentials/AddEditCredentialDialog.jsx b/packages/ui/src/views/credentials/AddEditCredentialDialog.jsx index 53b41ad38d0..31ca6f57ff0 100644 --- a/packages/ui/src/views/credentials/AddEditCredentialDialog.jsx +++ b/packages/ui/src/views/credentials/AddEditCredentialDialog.jsx @@ -39,6 +39,7 @@ import useApi from '@/hooks/useApi' // utils import useNotifier from '@/utils/useNotifier' +import { initializeDefaultNodeData } from '@/utils/genericHelper' // const import { baseURL, REDACTED_CREDENTIAL_VALUE } from '@/store/constant' @@ -122,7 +123,8 @@ const AddEditCredentialDialog = ({ show, dialogProps, onCancel, onConfirm, setEr // When credential dialog is to add a new credential setName('') setCredential({}) - setCredentialData({}) + const defaultCredentialData = initializeDefaultNodeData(dialogProps.credentialComponent.inputs) + setCredentialData(defaultCredentialData) setComponentCredential(dialogProps.credentialComponent) } diff --git a/packages/ui/src/views/docstore/DeleteDocStoreDialog.jsx b/packages/ui/src/views/docstore/DeleteDocStoreDialog.jsx index 647c8bd6c37..c6bbfc91096 100644 --- a/packages/ui/src/views/docstore/DeleteDocStoreDialog.jsx +++ b/packages/ui/src/views/docstore/DeleteDocStoreDialog.jsx @@ -147,7 +147,7 @@ const DeleteDocStoreDialog = ({ show, dialogProps, onCancel, onDelete }) => { {dialogProps.type === 'STORE' && dialogProps.recordManagerConfig && ( setRemoveFromVS(event.target.checked)} />} - label='Remove data from vector store' + label='Remove data from vector store and record manager' /> )} {removeFromVS && ( @@ -226,7 +226,7 @@ const DeleteDocStoreDialog = ({ show, dialogProps, onCancel, onDelete }) => { - diff --git a/packages/ui/src/views/docstore/DocStoreAPIDialog.jsx b/packages/ui/src/views/docstore/DocStoreAPIDialog.jsx new file mode 100644 index 00000000000..8cf06e75149 --- /dev/null +++ b/packages/ui/src/views/docstore/DocStoreAPIDialog.jsx @@ -0,0 +1,409 @@ +import { createPortal } from 'react-dom' +import { useState, useEffect } from 'react' +import PropTypes from 'prop-types' +import rehypeMathjax from 'rehype-mathjax' +import rehypeRaw from 'rehype-raw' +import remarkGfm from 'remark-gfm' +import remarkMath from 'remark-math' +import { MemoizedReactMarkdown } from '@/ui-component/markdown/MemoizedReactMarkdown' +import { CodeBlock } from '@/ui-component/markdown/CodeBlock' +import { Typography, Stack, Card, Accordion, AccordionSummary, AccordionDetails, Dialog, DialogContent, DialogTitle } from '@mui/material' +import { TableViewOnly } from '@/ui-component/table/Table' +import documentstoreApi from '@/api/documentstore' +import useApi from '@/hooks/useApi' +import { useTheme } from '@mui/material/styles' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' + +const DocStoreAPIDialog = ({ show, dialogProps, onCancel }) => { + const [nodeConfig, setNodeConfig] = useState({}) + const [values, setValues] = useState('') + const theme = useTheme() + const [nodeConfigExpanded, setNodeConfigExpanded] = useState({}) + + const getConfigApi = useApi(documentstoreApi.getDocumentStoreConfig) + + const formDataRequest = () => { + return `With the Upsert API, you can choose an existing document and reuse the same configuration for upserting. + +\`\`\`python +import requests +import json + +API_URL = "http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId}" +API_KEY = "your_api_key_here" + +# use form data to upload files +form_data = { + "files": ('my-another-file.pdf', open('my-another-file.pdf', 'rb')) +} + +body_data = { + "docId": "${dialogProps.loaderId}", + "metadata": {}, # Add additional metadata to the document chunks + "replaceExisting": True, # Replace existing document with the new upserted chunks + "createNewDocStore": False, # Create a new document store + "splitter": json.dumps({"config":{"chunkSize":20000}}) # Override existing configuration + # "loader": "", + # "vectorStore": "", + # "embedding": "", + # "recordManager": "", + # "docStore": "" +} + +headers = { + "Authorization": f"Bearer {BEARER_TOKEN}" +} + +def query(form_data): + response = requests.post(API_URL, files=form_data, data=body_data, headers=headers) + print(response) + return response.json() + +output = query(form_data) +print(output) +\`\`\` + +\`\`\`javascript +// use FormData to upload files +let formData = new FormData(); +formData.append("files", input.files[0]); +formData.append("docId", "${dialogProps.loaderId}"); +formData.append("splitter", JSON.stringify({"config":{"chunkSize":20000}})); +// Add additional metadata to the document chunks +formData.append("metadata", "{}"); +// Replace existing document with the new upserted chunks +formData.append("replaceExisting", "true"); +// Create a new document store +formData.append("createNewDocStore", "false"); +// Override existing configuration +// formData.append("loader", ""); +// formData.append("embedding", ""); +// formData.append("vectorStore", ""); +// formData.append("recordManager", ""); +// formData.append("docStore", ""); + +async function query(formData) { + const response = await fetch( + "http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId}", + { + method: "POST", + headers: { + "Authorization": "Bearer " + }, + body: formData + } + ); + const result = await response.json(); + return result; +} + +query(formData).then((response) => { + console.log(response); +}); +\`\`\` + +\`\`\`bash +curl -X POST http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId} \\ + -H "Authorization: Bearer " \\ + -F "files=@" \\ + -F "docId=${dialogProps.loaderId}" \\ + -F "splitter={"config":{"chunkSize":20000}}" \\ + -F "metadata={}" \\ + -F "replaceExisting=true" \\ + -F "createNewDocStore=false" \\ + # Override existing configuration: + # -F "loader=" \\ + # -F "embedding=" \\ + # -F "vectorStore=" \\ + # -F "recordManager=" \\ + # -F "docStore=" +\`\`\` +` + } + + const jsonDataRequest = () => { + return `With the Upsert API, you can choose an existing document and reuse the same configuration for upserting. + +\`\`\`python +import requests + +API_URL = "http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId}" +API_KEY = "your_api_key_here" + +headers = { + "Authorization": f"Bearer {BEARER_TOKEN}" +} + +def query(payload): + response = requests.post(API_URL, json=payload, headers=headers) + return response.json() + +output = query({ + "docId": "${dialogProps.loaderId}", + "metadata": "{}", # Add additional metadata to the document chunks + "replaceExisting": True, # Replace existing document with the new upserted chunks + "createNewDocStore": False, # Create a new document store + # Override existing configuration + "loader": { + "config": { + "text": "This is a new text" + } + }, + "splitter": { + "config": { + "chunkSize": 20000 + } + }, + # embedding: {}, + # vectorStore: {}, + # recordManager: {} + # docStore: {} +}) +print(output) +\`\`\` + +\`\`\`javascript +async function query(data) { + const response = await fetch( + "http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId}", + { + method: "POST", + headers: { + "Content-Type": "application/json", + "Authorization": "Bearer " + }, + body: JSON.stringify(data) + } + ); + const result = await response.json(); + return result; +} + +query({ + "docId": "${dialogProps.loaderId}, + "metadata": "{}", // Add additional metadata to the document chunks + "replaceExisting": true, // Replace existing document with the new upserted chunks + "createNewDocStore": false, // Create a new document store + // Override existing configuration + "loader": { + "config": { + "text": "This is a new text" + } + }, + "splitter": { + "config": { + "chunkSize": 20000 + } + }, + // embedding: {}, + // vectorStore: {}, + // recordManager: {} + // docStore: {} +}).then((response) => { + console.log(response); +}); +\`\`\` + +\`\`\`bash +curl -X POST http://localhost:3000/api/v1/document-store/upsert/${dialogProps.storeId} \\ + -H "Content-Type: application/json" \\ + -H "Authorization: Bearer " \\ + -d '{ + "docId": "${dialogProps.loaderId}", + "metadata": "{}", + "replaceExisting": true, + "createNewDocStore": false, + "loader": { + "config": { + "text": "This is a new text" + } + }, + "splitter": { + "config": { + "chunkSize": 20000 + } + } + // Override existing configuration + // "embedding": {}, + // "vectorStore": {}, + // "recordManager": {} + // "docStore": {} + }' + +\`\`\` +` + } + + const groupByNodeLabel = (nodes) => { + const result = {} + const seenNodes = new Set() + let isFormDataBody = false + + nodes.forEach((item) => { + const { node, nodeId, label, name, type } = item + if (name === 'files') isFormDataBody = true + seenNodes.add(node) + + if (!result[node]) { + result[node] = { + nodeIds: [], + params: [] + } + } + + if (!result[node].nodeIds.includes(nodeId)) result[node].nodeIds.push(nodeId) + + const param = { label, name, type } + + if (!result[node].params.some((existingParam) => JSON.stringify(existingParam) === JSON.stringify(param))) { + result[node].params.push(param) + } + }) + + // Sort the nodeIds array + for (const node in result) { + result[node].nodeIds.sort() + } + setNodeConfig(result) + + if (isFormDataBody) { + setValues(formDataRequest()) + } else { + setValues(jsonDataRequest()) + } + } + + const handleAccordionChange = (nodeLabel) => (event, isExpanded) => { + const accordianNodes = { ...nodeConfigExpanded } + accordianNodes[nodeLabel] = isExpanded + setNodeConfigExpanded(accordianNodes) + } + + useEffect(() => { + if (getConfigApi.data) { + groupByNodeLabel(getConfigApi.data) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [getConfigApi.data]) + + useEffect(() => { + if (show && dialogProps) { + getConfigApi.request(dialogProps.storeId, dialogProps.loaderId) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [show, dialogProps]) + + const portalElement = document.getElementById('portal') + + const component = show ? ( + + + {dialogProps.title} + + + + ) : ( + + {children} + + ) + } + }} + > + {values} + + + You can override existing configurations: + + + + {Object.keys(nodeConfig) + .sort() + .map((nodeLabel) => ( + + } + aria-controls={`nodes-accordian-${nodeLabel}`} + id={`nodes-accordian-header-${nodeLabel}`} + > + + {nodeLabel} + {nodeConfig[nodeLabel].nodeIds.length > 0 && + nodeConfig[nodeLabel].nodeIds.map((nodeId, index) => ( +
+ + {nodeId} + +
+ ))} +
+
+ + { + // eslint-disable-next-line + const { node, nodeId, ...rest } = obj + return rest + })} + columns={Object.keys(nodeConfig[nodeLabel].params[0]).slice(-3)} + /> + +
+ ))} +
+
+
+
+ ) : null + + return createPortal(component, portalElement) +} + +DocStoreAPIDialog.propTypes = { + show: PropTypes.bool, + dialogProps: PropTypes.object, + onCancel: PropTypes.func +} + +export default DocStoreAPIDialog diff --git a/packages/ui/src/views/docstore/DocStoreInputHandler.jsx b/packages/ui/src/views/docstore/DocStoreInputHandler.jsx index 38dc23c68d0..dfac20d6eb5 100644 --- a/packages/ui/src/views/docstore/DocStoreInputHandler.jsx +++ b/packages/ui/src/views/docstore/DocStoreInputHandler.jsx @@ -4,7 +4,7 @@ import { useSelector } from 'react-redux' // material-ui import { Box, Typography, IconButton, Button } from '@mui/material' -import { IconArrowsMaximize, IconAlertTriangle } from '@tabler/icons-react' +import { IconRefresh, IconArrowsMaximize, IconAlertTriangle } from '@tabler/icons-react' // project import import { Dropdown } from '@/ui-component/dropdown/Dropdown' @@ -43,6 +43,7 @@ const DocStoreInputHandler = ({ const [expandDialogProps, setExpandDialogProps] = useState({}) const [showManageScrapedLinksDialog, setShowManageScrapedLinksDialog] = useState(false) const [manageScrapedLinksDialogProps, setManageScrapedLinksDialogProps] = useState({}) + const [reloadTimestamp, setReloadTimestamp] = useState(Date.now().toString()) const onExpandDialogClicked = (value, inputParam) => { const dialogProps = { @@ -80,6 +81,14 @@ const DocStoreInputHandler = ({ data.inputs[inputParamName] = newValue } + const getCredential = () => { + const credential = data.inputs.credential || data.inputs[FLOWISE_CREDENTIAL_ID] + if (credential) { + return { credential } + } + return {} + } + return (
{inputParam && ( @@ -130,7 +139,7 @@ const DocStoreInputHandler = ({ { data.credential = newValue @@ -238,19 +247,33 @@ const DocStoreInputHandler = ({ value={data.inputs[inputParam.name] ?? inputParam.default ?? 'choose an option'} /> )} - {inputParam.type === 'asyncOptions' && ( + {(inputParam.type === 'asyncOptions' || inputParam.type === 'asyncMultiOptions') && ( <> {data.inputParams?.length === 1 &&
}
- (data.inputs[inputParam.name] = newValue)} - onCreateNew={() => addAsyncOption(inputParam.name)} - /> +
+ (data.inputs[inputParam.name] = newValue)} + onCreateNew={() => addAsyncOption(inputParam.name)} + /> +
+ {inputParam.refresh && ( + setReloadTimestamp(Date.now().toString())} + > + + + )}
)} diff --git a/packages/ui/src/views/docstore/DocumentStoreDetail.jsx b/packages/ui/src/views/docstore/DocumentStoreDetail.jsx index 3de95270755..d77fe41fd86 100644 --- a/packages/ui/src/views/docstore/DocumentStoreDetail.jsx +++ b/packages/ui/src/views/docstore/DocumentStoreDetail.jsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import * as PropTypes from 'prop-types' -import { useNavigate, usePathname } from '@/utils/navigation' +import { useNavigate, usePathname, useParams } from '@/utils/navigation' // material-ui import { @@ -36,6 +36,9 @@ import ErrorBoundary from '@/ErrorBoundary' import { StyledButton } from '@/ui-component/button/StyledButton' import ViewHeader from '@/layout/MainLayout/ViewHeader' import DeleteDocStoreDialog from './DeleteDocStoreDialog' +import DocumentStoreStatus from '@/views/docstore/DocumentStoreStatus' +import ConfirmDialog from '@/ui-component/dialog/ConfirmDialog' +import DocStoreAPIDialog from './DocStoreAPIDialog' // API import documentsApi from '@/api/documentstore' @@ -43,22 +46,19 @@ import documentsApi from '@/api/documentstore' // Hooks import useApi from '@/hooks/useApi' import useNotifier from '@/utils/useNotifier' +import { getFileName } from '@/utils/genericHelper' +import useConfirm from '@/hooks/useConfirm' // icons -import { - IconPlus, - IconRefresh, - IconListDetails, - IconTrash, - IconX, - IconVectorBezier2, - IconRowInsertTop, - IconZoomScan -} from '@tabler/icons-react' +import { IconPlus, IconRefresh, IconX, IconVectorBezier2 } from '@tabler/icons-react' import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown' import FileDeleteIcon from '@mui/icons-material/Delete' import FileEditIcon from '@mui/icons-material/Edit' import FileChunksIcon from '@mui/icons-material/AppRegistration' +import NoteAddIcon from '@mui/icons-material/NoteAdd' +import SearchIcon from '@mui/icons-material/Search' +import RefreshIcon from '@mui/icons-material/Refresh' +import CodeIcon from '@mui/icons-material/Code' import doc_store_details_emptySVG from '@/assets/images/doc_store_details_empty.svg' // store @@ -128,6 +128,7 @@ const DocumentStoreDetails = () => { const navigate = useNavigate() const dispatch = useDispatch() useNotifier() + const { confirm } = useConfirm() const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) @@ -144,10 +145,13 @@ const DocumentStoreDetails = () => { const [documentLoaderListDialogProps, setDocumentLoaderListDialogProps] = useState({}) const [showDeleteDocStoreDialog, setShowDeleteDocStoreDialog] = useState(false) const [deleteDocStoreDialogProps, setDeleteDocStoreDialogProps] = useState({}) + const [showDocStoreAPIDialog, setShowDocStoreAPIDialog] = useState(false) + const [docStoreAPIDialogProps, setDocStoreAPIDialogProps] = useState({}) + + const [anchorEl, setAnchorEl] = useState(null) + const open = Boolean(anchorEl) - const pathname = usePathname() - const URLpath = pathname.split('/') - const storeId = URLpath[URLpath.length - 1] === 'document-stores' ? '' : URLpath[URLpath.length - 1] + const { storeId } = useParams() const openPreviewSettings = (id) => { navigate('/document-stores/' + storeId + '/' + id) @@ -186,8 +190,9 @@ const DocumentStoreDetails = () => { } } - const onDocStoreDelete = async (type, loaderId, removeFromVectorStore) => { + const onDocStoreDelete = async (type, file, removeFromVectorStore) => { setBackdropLoading(true) + setShowDeleteDocStoreDialog(false) if (type === 'STORE') { if (removeFromVectorStore) { await deleteVectorStoreDataFromStore(storeId) @@ -213,9 +218,10 @@ const DocumentStoreDetails = () => { } catch (error) { setBackdropLoading(false) setError(error) - const errorData = error.response.data || `${error.response.status}: ${error.response.statusText}` enqueueSnackbar({ - message: `Failed to delete loader: ${errorData}`, + message: `Failed to delete Document Store: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, options: { key: new Date().getTime() + Math.random(), variant: 'error', @@ -250,9 +256,10 @@ const DocumentStoreDetails = () => { } catch (error) { setError(error) setBackdropLoading(false) - const errorData = error.response.data || `${error.response.status}: ${error.response.statusText}` enqueueSnackbar({ - message: `Failed to delete loader: ${errorData}`, + message: `Failed to delete Document Loader: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, options: { key: new Date().getTime() + Math.random(), variant: 'error', @@ -275,7 +282,8 @@ const DocumentStoreDetails = () => { vectorStoreConfig, recordManagerConfig, type: 'LOADER', - loaderId: file.id + loaderId: file.id, + file } setDeleteDocStoreDialogProps(props) @@ -295,6 +303,55 @@ const DocumentStoreDetails = () => { setShowDeleteDocStoreDialog(true) } + const onStoreRefresh = async (storeId) => { + const confirmPayload = { + title: `Refresh all loaders and upsert all chunks?`, + description: `This will re-process all loaders and upsert all chunks. This action might take some time.`, + confirmButtonName: 'Refresh', + cancelButtonName: 'Cancel' + } + const isConfirmed = await confirm(confirmPayload) + + if (isConfirmed) { + setAnchorEl(null) + setBackdropLoading(true) + try { + const resp = await documentsApi.refreshLoader(storeId) + if (resp.data) { + enqueueSnackbar({ + message: 'Document store refresh successfully!', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + } + setBackdropLoading(false) + } catch (error) { + setBackdropLoading(false) + enqueueSnackbar({ + message: `Failed to refresh document store: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + action: (key) => ( + + ) + } + }) + } + } + } + const onEditClicked = () => { const data = { name: documentStore.name, @@ -317,6 +374,26 @@ const DocumentStoreDetails = () => { getSpecificDocumentStore.request(storeId) } + const handleClick = (event) => { + event.preventDefault() + event.stopPropagation() + setAnchorEl(event.currentTarget) + } + + const onViewUpsertAPI = (storeId, loaderId) => { + const props = { + title: `Upsert API`, + storeId, + loaderId + } + setDocStoreAPIDialogProps(props) + setShowDocStoreAPIDialog(true) + } + + const handleClose = () => { + setAnchorEl(null) + } + useEffect(() => { getSpecificDocumentStore.request(storeId) @@ -359,85 +436,86 @@ const DocumentStoreDetails = () => { onBack={() => navigate('/document-stores')} onEdit={() => onEditClicked()} > - onStoreDelete(documentStore.vectorStoreConfig, documentStore.recordManagerConfig)} - size='small' - color='error' - title='Delete Document Store' - sx={{ mr: 2 }} - > - - + {(documentStore?.status === 'STALE' || documentStore?.status === 'UPSERTING') && ( + + + + )} } onClick={listLoaders} > Add Document Loader - {(documentStore?.status === 'STALE' || documentStore?.status === 'UPSERTING') && ( - - )} - {documentStore?.status === 'UPSERTING' && ( - - )} - {documentStore?.totalChunks > 0 && documentStore?.status !== 'UPSERTING' && ( - <> - - - - )} - {documentStore?.totalChunks > 0 && documentStore?.status === 'UPSERTED' && ( - + + showStoredChunks('all')} + disableRipple + > + + View & Edit Chunks + + showVectorStore(documentStore.id)} + disableRipple + > + + Upsert All Chunks + + showVectorStoreQuery(documentStore.id)} + disableRipple > + Retrieval Query - - )} + + onStoreRefresh(documentStore.id)} + disableRipple + title='Re-process all loaders and upsert all chunks' + > + + Refresh + + + onStoreDelete(documentStore.vectorStoreConfig, documentStore.recordManagerConfig)} + disableRipple + > + + Delete + + + {getSpecificDocumentStore.data?.whereUsed?.length > 0 && (
{ documentStore?.recordManagerConfig ) } + onChunkUpsert={() => + navigate(`/document-stores/vector/${documentStore.id}/${loader.id}`) + } + onViewUpsertAPI={() => onViewUpsertAPI(documentStore.id, loader.id)} /> ))} @@ -630,7 +712,15 @@ const DocumentStoreDetails = () => { onDelete={onDocStoreDelete} /> )} + {showDocStoreAPIDialog && ( + setShowDocStoreAPIDialog(false)} + /> + )} {isBackdropLoading && } + ) } @@ -650,6 +740,9 @@ function LoaderRow(props) { } const formatSources = (source) => { + if (source && typeof source === 'string' && source.includes('base64')) { + return getFileName(source) + } if (source && typeof source === 'string' && source.startsWith('[') && source.endsWith(']')) { return JSON.parse(source).join(', ') } @@ -711,6 +804,14 @@ function LoaderRow(props) { View & Edit Chunks + + + Upsert Chunks + + + + View API + @@ -731,6 +832,8 @@ LoaderRow.propTypes = { theme: PropTypes.any, onViewChunksClick: PropTypes.func, onEditClick: PropTypes.func, - onDeleteClick: PropTypes.func + onDeleteClick: PropTypes.func, + onChunkUpsert: PropTypes.func, + onViewUpsertAPI: PropTypes.func } export default DocumentStoreDetails diff --git a/packages/ui/src/views/docstore/DocumentStoreStatus.jsx b/packages/ui/src/views/docstore/DocumentStoreStatus.jsx index e295fb76c0f..544009559f2 100644 --- a/packages/ui/src/views/docstore/DocumentStoreStatus.jsx +++ b/packages/ui/src/views/docstore/DocumentStoreStatus.jsx @@ -10,22 +10,36 @@ const DocumentStoreStatus = ({ status, isTableView }) => { switch (status) { case 'STALE': return customization.isDarkMode - ? [theme.palette.grey[400], theme.palette.grey[600], theme.palette.grey[700]] + ? [theme.palette.grey[400], theme.palette.grey[600], theme.palette.grey[800]] : [theme.palette.grey[300], theme.palette.grey[500], theme.palette.grey[700]] case 'EMPTY': - return ['#673ab7', '#673ab7', '#673ab7'] + return customization.isDarkMode + ? ['#4a148c', '#6a1b9a', '#ffffff'] // Deep Purple + : ['#d1c4e9', '#9575cd', '#673ab7'] case 'SYNCING': + return customization.isDarkMode + ? ['#ff6f00', '#ff8f00', '#ffffff'] // Amber + : ['#fff8e1', '#ffe57f', '#ffc107'] case 'UPSERTING': - return ['#fff8e1', '#ffe57f', '#ffc107'] + return customization.isDarkMode + ? ['#01579b', '#0277bd', '#ffffff'] // Light Blue + : ['#e1f5fe', '#4fc3f7', '#0288d1'] case 'SYNC': + return customization.isDarkMode + ? ['#1b5e20', '#2e7d32', '#ffffff'] // Green + : ['#e8f5e9', '#81c784', '#43a047'] case 'UPSERTED': - return ['#cdf5d8', '#00e676', '#00c853'] + return customization.isDarkMode + ? ['#004d40', '#00695c', '#ffffff'] // Teal + : ['#e0f2f1', '#4db6ac', '#00897b'] case 'NEW': - return ['#e3f2fd', '#2196f3', '#1e88e5'] + return customization.isDarkMode + ? ['#0d47a1', '#1565c0', '#ffffff'] // Blue + : ['#e3f2fd', '#64b5f6', '#1e88e5'] default: return customization.isDarkMode ? [theme.palette.grey[300], theme.palette.grey[500], theme.palette.grey[700]] - : [theme.palette.grey[300], theme.palette.grey[500], theme.palette.grey[700]] + : [theme.palette.grey[200], theme.palette.grey[400], theme.palette.grey[600]] } } @@ -45,7 +59,8 @@ const DocumentStoreStatus = ({ status, isTableView }) => { paddingTop: '3px', paddingBottom: '3px', paddingLeft: '10px', - paddingRight: '10px' + paddingRight: '10px', + width: 'fit-content' }} >
{ const getNodesByCategoryApi = useApi(nodesApi.getNodesByCategory) const getSpecificDocumentStoreApi = useApi(documentsApi.getSpecificDocumentStore) - const pathname = usePathname() - const URLpath = pathname.split('/') - const docLoaderNodeName = URLpath[URLpath.length - 1] === 'document-stores' ? '' : URLpath[URLpath.length - 1] - const storeId = URLpath[URLpath.length - 2] === 'document-stores' ? '' : URLpath[URLpath.length - 2] + const { storeId, name: docLoaderNodeName } = useParams() const [selectedDocumentLoader, setSelectedDocumentLoader] = useState({}) const [selectedCredential, setSelectedCredential] = useState(null) const [selectedCredentialData, setSelectedCredentialData] = useState(null) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) + const [loaderName, setLoaderName] = useState('') const [textSplitterNodes, setTextSplitterNodes] = useState([]) const [splitterOptions, setTextSplitterOptions] = useState([]) @@ -191,9 +189,9 @@ const LoaderConfigPreviewChunks = () => { const config = prepareConfig() config.loaderId === 'googleDrive' && (config.credential = JSON.stringify(selectedCredentialData)) try { - const processResp = await documentStoreApi.processChunks(config) + const saveResp = await documentStoreApi.saveProcessingLoader(config) setLoading(false) - if (processResp.data) { + if (saveResp.data) { enqueueSnackbar({ message: 'File submitted for processing. Redirecting to Document Store..', options: { @@ -206,6 +204,8 @@ const LoaderConfigPreviewChunks = () => { ) } }) + // don't wait for the process to complete, redirect to document store + documentStoreApi.processLoader(config, saveResp.data?.id) navigate('/document-stores/' + storeId) } } catch (error) { @@ -241,7 +241,7 @@ const LoaderConfigPreviewChunks = () => { // Set store id & loader name config.storeId = storeId - config.loaderName = selectedDocumentLoader?.label + config.loaderName = loaderName || selectedDocumentLoader?.label // Set loader config if (selectedDocumentLoader.inputs) { @@ -287,6 +287,7 @@ const LoaderConfigPreviewChunks = () => { // If this is a document store edit config, set the existing input values if (existingLoaderFromDocStoreTable && existingLoaderFromDocStoreTable.loaderConfig) { nodeData.inputs = existingLoaderFromDocStoreTable.loaderConfig + setLoaderName(existingLoaderFromDocStoreTable.loaderName) } setSelectedDocumentLoader(nodeData) @@ -457,6 +458,20 @@ const LoaderConfigPreviewChunks = () => { paddingRight: 15 }} > + + setLoaderName(e.target.value)} + /> + {selectedDocumentLoader && Object.keys(selectedDocumentLoader).length > 0 && (selectedDocumentLoader.inputParams ?? []) diff --git a/packages/ui/src/views/docstore/ShowStoredChunks.jsx b/packages/ui/src/views/docstore/ShowStoredChunks.jsx index 1b15680bc8a..d031b1104ae 100644 --- a/packages/ui/src/views/docstore/ShowStoredChunks.jsx +++ b/packages/ui/src/views/docstore/ShowStoredChunks.jsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate, usePathname } from '@/utils/navigation' +import { useNavigate, useParams } from '@/utils/navigation' import ReactJson from 'flowise-react-json-view' // material-ui @@ -61,10 +61,7 @@ const ShowStoredChunks = () => { const getChunksApi = useApi(documentsApi.getFileChunks) - const pathname = usePathname() - const URLpath = pathname.split('/') - const fileId = URLpath[URLpath.length - 1] === 'document-stores' ? '' : URLpath[URLpath.length - 1] - const storeId = URLpath[URLpath.length - 2] === 'document-stores' ? '' : URLpath[URLpath.length - 2] + const { storeId, fileId } = useParams() const [documentChunks, setDocumentChunks] = useState([]) const [totalChunks, setTotalChunks] = useState(0) @@ -356,7 +353,7 @@ const ShowStoredChunks = () => {
- {getChunksApi.data?.file?.totalChars?.toLocaleString()} characters + {getChunksApi.data?.characters?.toLocaleString()} characters
diff --git a/packages/ui/src/views/docstore/VectorStoreConfigure.jsx b/packages/ui/src/views/docstore/VectorStoreConfigure.jsx index 73f903b814f..2032da5acdc 100644 --- a/packages/ui/src/views/docstore/VectorStoreConfigure.jsx +++ b/packages/ui/src/views/docstore/VectorStoreConfigure.jsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate, usePathname } from '@/utils/navigation' +import { useNavigate, useParams } from '@/utils/navigation' import { cloneDeep } from 'lodash' import { v4 as uuidv4 } from 'uuid' import moment from 'moment/moment' @@ -51,6 +51,8 @@ const VectorStoreConfigure = () => { useNotifier() const customization = useSelector((state) => state.customization) + const { storeId, docId } = useParams() + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) @@ -214,7 +216,8 @@ const VectorStoreConfigure = () => { const prepareConfigData = () => { const data = { - storeId: storeId + storeId: storeId, + docId: docId } // Set embedding config if (selectedEmbeddingsProvider.inputs) { @@ -366,9 +369,6 @@ const VectorStoreConfigure = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [saveVectorStoreConfigApi.error]) - const pathname = usePathname() - const URLpath = pathname.split('/') - const storeId = URLpath[URLpath.length - 1] === 'document-stores' ? '' : URLpath[URLpath.length - 1] useEffect(() => { getSpecificDocumentStoreApi.request(storeId) @@ -434,420 +434,426 @@ const VectorStoreConfigure = () => { {error ? ( ) : ( - - navigate(-1)} - > - {(Object.keys(selectedEmbeddingsProvider).length > 0 || - Object.keys(selectedVectorStoreProvider).length > 0) && ( - - )} - {(Object.keys(selectedEmbeddingsProvider).length > 0 || - Object.keys(selectedVectorStoreProvider).length > 0) && ( - - )} - {Object.keys(selectedEmbeddingsProvider).length > 0 && Object.keys(selectedVectorStoreProvider).length > 0 && ( - - )} - - - - - - - - {Object.keys(selectedEmbeddingsProvider).length === 0 ? ( - - ) : ( - - - -
- + {(Object.keys(selectedEmbeddingsProvider).length > 0 || + Object.keys(selectedVectorStoreProvider).length > 0) && ( + + )} + {(Object.keys(selectedEmbeddingsProvider).length > 0 || + Object.keys(selectedVectorStoreProvider).length > 0) && ( + + )} + {Object.keys(selectedEmbeddingsProvider).length > 0 && + Object.keys(selectedVectorStoreProvider).length > 0 && ( + + )} + + + + + + + + {Object.keys(selectedEmbeddingsProvider).length === 0 ? ( + + ) : ( + + +
- {selectedEmbeddingsProvider.label ? ( - +
- ) : ( - - )} -
- - {selectedEmbeddingsProvider.label} - -
-
- {Object.keys(selectedEmbeddingsProvider).length > 0 && ( - <> - - - - - )} + > + {selectedEmbeddingsProvider.label ? ( + {selectedEmbeddingsProvider.label + ) : ( + + )} +
+ + {selectedEmbeddingsProvider.label} + +
+
+ {Object.keys(selectedEmbeddingsProvider).length > 0 && ( + <> + + + + + )} +
+ + {selectedEmbeddingsProvider && + Object.keys(selectedEmbeddingsProvider).length > 0 && + (selectedEmbeddingsProvider.inputParams ?? []) + .filter((inputParam) => !inputParam.hidden) + .map((inputParam, index) => ( + + ))}
-
- {selectedEmbeddingsProvider && - Object.keys(selectedEmbeddingsProvider).length > 0 && - (selectedEmbeddingsProvider.inputParams ?? []) - .filter((inputParam) => !inputParam.hidden) - .map((inputParam, index) => ( - - ))} -
-
-
-
- )} -
- - {Object.keys(selectedVectorStoreProvider).length === 0 ? ( - - ) : ( - - - -
- + + + + )} + + + {Object.keys(selectedVectorStoreProvider).length === 0 ? ( + + ) : ( + + +
- {selectedVectorStoreProvider.label ? ( - +
- ) : ( - - )} -
- - {selectedVectorStoreProvider.label} - -
-
- {Object.keys(selectedVectorStoreProvider).length > 0 && ( - <> - - - - - )} + > + {selectedVectorStoreProvider.label ? ( + {selectedVectorStoreProvider.label + ) : ( + + )} +
+ + {selectedVectorStoreProvider.label} + +
+
+ {Object.keys(selectedVectorStoreProvider).length > 0 && ( + <> + + + + + )} +
+ + {selectedVectorStoreProvider && + Object.keys(selectedVectorStoreProvider).length > 0 && + (selectedVectorStoreProvider.inputParams ?? []) + .filter((inputParam) => !inputParam.hidden) + .map((inputParam, index) => ( + + ))}
-
- {selectedVectorStoreProvider && - Object.keys(selectedVectorStoreProvider).length > 0 && - (selectedVectorStoreProvider.inputParams ?? []) - .filter((inputParam) => !inputParam.hidden) - .map((inputParam, index) => ( - - ))} -
-
-
-
- )} -
- - {Object.keys(selectedRecordManagerProvider).length === 0 ? ( - - ) : ( - - - -
- + + + + )} + + + {Object.keys(selectedRecordManagerProvider).length === 0 ? ( + + ) : ( + + +
- {selectedRecordManagerProvider.label ? ( - +
- ) : ( - - )} -
- - {selectedRecordManagerProvider.label} - -
-
- {Object.keys(selectedRecordManagerProvider).length > 0 && ( - <> - - - - - )} + > + {selectedRecordManagerProvider.label ? ( + {selectedRecordManagerProvider.label + ) : ( + + )} +
+ + {selectedRecordManagerProvider.label} + +
+
+ {Object.keys(selectedRecordManagerProvider).length > 0 && ( + <> + + + + + )} +
+ + {selectedRecordManagerProvider && + Object.keys(selectedRecordManagerProvider).length > 0 && + (selectedRecordManagerProvider.inputParams ?? []) + .filter((inputParam) => !inputParam.hidden) + .map((inputParam, index) => ( + <> + + + ))}
-
- {selectedRecordManagerProvider && - Object.keys(selectedRecordManagerProvider).length > 0 && - (selectedRecordManagerProvider.inputParams ?? []) - .filter((inputParam) => !inputParam.hidden) - .map((inputParam, index) => ( - <> - - - ))} -
-
-
-
- )} -
-
-
+ + + + )} + + + + )} + )} diff --git a/packages/ui/src/views/docstore/VectorStoreQuery.jsx b/packages/ui/src/views/docstore/VectorStoreQuery.jsx index c98cc09cd39..ab9191404f9 100644 --- a/packages/ui/src/views/docstore/VectorStoreQuery.jsx +++ b/packages/ui/src/views/docstore/VectorStoreQuery.jsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useState, useRef } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate, usePathname } from '@/utils/navigation' +import { useNavigate, useParams } from '@/utils/navigation' import ReactJson from 'flowise-react-json-view' import { cloneDeep } from 'lodash' import { v4 as uuidv4 } from 'uuid' @@ -64,9 +64,7 @@ const VectorStoreQuery = () => { const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) - const pathname = usePathname() - const URLpath = pathname.split('/') - const storeId = URLpath[URLpath.length - 1] === 'document-stores' ? '' : URLpath[URLpath.length - 1] + const { storeId } = useParams() const [documentChunks, setDocumentChunks] = useState([]) const [loading, setLoading] = useState(false) diff --git a/packages/ui/src/views/marketplaces/MarketplaceLanding.jsx b/packages/ui/src/views/marketplaces/MarketplaceLanding.jsx index e2461893726..5fac9020642 100644 --- a/packages/ui/src/views/marketplaces/MarketplaceLanding.jsx +++ b/packages/ui/src/views/marketplaces/MarketplaceLanding.jsx @@ -212,7 +212,7 @@ const MarketplaceLanding = forwardRef(function MarketplaceLanding({ templateId, if (!user) { const redirectUrl = `/sidekick-studio/${isAgentCanvas ? 'agentcanvas' : 'canvas'}` - const loginUrl = `/api/auth/login?returnTo=${redirectUrl}` + const loginUrl = `/api/auth/login?redirect_uri=${redirectUrl}` setNavigationState(state) window.location.href = loginUrl } else { diff --git a/packages/ui/src/views/marketplaces/index.jsx b/packages/ui/src/views/marketplaces/index.jsx index ecae9749498..88249661682 100644 --- a/packages/ui/src/views/marketplaces/index.jsx +++ b/packages/ui/src/views/marketplaces/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import { useEffect, useState } from 'react' import { useNavigate } from '@/utils/navigation' -import PropTypes from 'prop-types' +import { useDispatch } from 'react-redux' // material-ui import { @@ -20,7 +20,9 @@ import { FormControlLabel, ToggleButtonGroup, MenuItem, - Button + Button, + Tabs, + Tab } from '@mui/material' import { useTheme } from '@mui/material/styles' import { IconLayoutGrid, IconList, IconX } from '@tabler/icons-react' @@ -33,37 +35,21 @@ import ToolDialog from '@/views/tools/ToolDialog' import { MarketplaceTable } from '@/ui-component/table/MarketplaceTable' import ViewHeader from '@/layout/MainLayout/ViewHeader' import ErrorBoundary from '@/ErrorBoundary' +import { TabPanel } from '@/ui-component/tabs/TabPanel' +import { closeSnackbar as closeSnackbarAction, enqueueSnackbar as enqueueSnackbarAction } from '@/store/actions' +import ConfirmDialog from '@/ui-component/dialog/ConfirmDialog' // API import marketplacesApi from '@/api/marketplaces' // Hooks import useApi from '@/hooks/useApi' +import useConfirm from '@/hooks/useConfirm' // const import { baseURL } from '@/store/constant' import { gridSpacing } from '@/store/constant' - -function TabPanel(props) { - const { children, value, index, ...other } = props - return ( - - ) -} - -TabPanel.propTypes = { - children: PropTypes.node, - index: PropTypes.number.isRequired, - value: PropTypes.number.isRequired -} +import useNotifier from '@/utils/useNotifier' const badges = ['POPULAR', 'NEW'] const types = ['Chatflow', 'Agentflow', 'Tool'] @@ -84,6 +70,8 @@ const SelectStyles = { const Marketplace = () => { const navigate = useNavigate() + const dispatch = useDispatch() + useNotifier() const theme = useTheme() @@ -105,8 +93,26 @@ const Marketplace = () => { const [typeFilter, setTypeFilter] = useState([]) const [frameworkFilter, setFrameworkFilter] = useState([]) + const getAllCustomTemplatesApi = useApi(marketplacesApi.getAllCustomTemplates) + const [activeTabValue, setActiveTabValue] = useState(0) + const [templateImages, setTemplateImages] = useState({}) + const [templateUsecases, setTemplateUsecases] = useState([]) + const [eligibleTemplateUsecases, setEligibleTemplateUsecases] = useState([]) + const [selectedTemplateUsecases, setSelectedTemplateUsecases] = useState([]) + const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) + const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) + const { confirm } = useConfirm() + + const handleTabChange = (event, newValue) => { + if (newValue === 1 && !getAllCustomTemplatesApi.data) { + getAllCustomTemplatesApi.request() + } + setActiveTabValue(newValue) + } + const clearAllUsecases = () => { - setSelectedUsecases([]) + if (activeTabValue === 0) setSelectedUsecases([]) + else setSelectedTemplateUsecases([]) } const handleBadgeFilterChange = (event) => { @@ -117,7 +123,13 @@ const Marketplace = () => { // On autofill we get a stringified value. typeof value === 'string' ? value.split(',') : value ) - getEligibleUsecases({ typeFilter, badgeFilter: typeof value === 'string' ? value.split(',') : value, frameworkFilter, search }) + const data = activeTabValue === 0 ? getAllTemplatesMarketplacesApi.data : getAllCustomTemplatesApi.data + getEligibleUsecases(data, { + typeFilter, + badgeFilter: typeof value === 'string' ? value.split(',') : value, + frameworkFilter, + search + }) } const handleTypeFilterChange = (event) => { @@ -128,7 +140,13 @@ const Marketplace = () => { // On autofill we get a stringified value. typeof value === 'string' ? value.split(',') : value ) - getEligibleUsecases({ typeFilter: typeof value === 'string' ? value.split(',') : value, badgeFilter, frameworkFilter, search }) + const data = activeTabValue === 0 ? getAllTemplatesMarketplacesApi.data : getAllCustomTemplatesApi.data + getEligibleUsecases(data, { + typeFilter: typeof value === 'string' ? value.split(',') : value, + badgeFilter, + frameworkFilter, + search + }) } const handleFrameworkFilterChange = (event) => { @@ -139,7 +157,13 @@ const Marketplace = () => { // On autofill we get a stringified value. typeof value === 'string' ? value.split(',') : value ) - getEligibleUsecases({ typeFilter, badgeFilter, frameworkFilter: typeof value === 'string' ? value.split(',') : value, search }) + const data = activeTabValue === 0 ? getAllTemplatesMarketplacesApi.data : getAllCustomTemplatesApi.data + getEligibleUsecases(data, { + typeFilter, + badgeFilter, + frameworkFilter: typeof value === 'string' ? value.split(',') : value, + search + }) } const handleViewChange = (event, nextView) => { @@ -150,7 +174,56 @@ const Marketplace = () => { const onSearchChange = (event) => { setSearch(event.target.value) - getEligibleUsecases({ typeFilter, badgeFilter, frameworkFilter, search: event.target.value }) + const data = activeTabValue === 0 ? getAllTemplatesMarketplacesApi.data : getAllCustomTemplatesApi.data + + getEligibleUsecases(data, { typeFilter, badgeFilter, frameworkFilter, search: event.target.value }) + } + + const onDeleteCustomTemplate = async (template) => { + const confirmPayload = { + title: `Delete`, + description: `Delete Custom Template ${template.name}?`, + confirmButtonName: 'Delete', + cancelButtonName: 'Cancel' + } + const isConfirmed = await confirm(confirmPayload) + + if (isConfirmed) { + try { + const deleteResp = await marketplacesApi.deleteCustomTemplate(template.id) + if (deleteResp.data) { + enqueueSnackbar({ + message: 'Custom Template deleted successfully!', + options: { + key: new Date().getTime() + Math.random(), + variant: 'success', + action: (key) => ( + + ) + } + }) + getAllCustomTemplatesApi.request() + } + } catch (error) { + enqueueSnackbar({ + message: `Failed to delete custom template: ${ + typeof error.response.data === 'object' ? error.response.data.message : error.response.data + }`, + options: { + key: new Date().getTime() + Math.random(), + variant: 'error', + persist: true, + action: (key) => ( + + ) + } + }) + } + } } function filterFlows(data) { @@ -174,13 +247,18 @@ const Marketplace = () => { } function filterByUsecases(data) { - return selectedUsecases.length > 0 ? (data.usecases || []).some((item) => selectedUsecases.includes(item)) : true + if (activeTabValue === 0) + return selectedUsecases.length > 0 ? (data.usecases || []).some((item) => selectedUsecases.includes(item)) : true + else + return selectedTemplateUsecases.length > 0 + ? (data.usecases || []).some((item) => selectedTemplateUsecases.includes(item)) + : true } - const getEligibleUsecases = (filter) => { - if (!getAllTemplatesMarketplacesApi.data) return + const getEligibleUsecases = (data, filter) => { + if (!data) return - let filteredData = getAllTemplatesMarketplacesApi.data + let filteredData = data if (filter.badgeFilter.length > 0) filteredData = filteredData.filter((data) => filter.badgeFilter.includes(data.badge)) if (filter.typeFilter.length > 0) filteredData = filteredData.filter((data) => filter.typeFilter.includes(data.type)) if (filter.frameworkFilter.length > 0) @@ -200,7 +278,8 @@ const Marketplace = () => { usecases.push(...filteredData[i].usecases) } } - setEligibleUsecases(Array.from(new Set(usecases)).sort()) + if (activeTabValue === 0) setEligibleUsecases(Array.from(new Set(usecases)).sort()) + else setEligibleTemplateUsecases(Array.from(new Set(usecases)).sort()) } const onUseTemplate = (selectedTool) => { @@ -275,13 +354,57 @@ const Marketplace = () => { } }, [getAllTemplatesMarketplacesApi.error]) + useEffect(() => { + setLoading(getAllCustomTemplatesApi.loading) + }, [getAllCustomTemplatesApi.loading]) + + useEffect(() => { + if (getAllCustomTemplatesApi.data) { + try { + const flows = getAllCustomTemplatesApi.data + const usecases = [] + const tImages = {} + for (let i = 0; i < flows.length; i += 1) { + if (flows[i].flowData) { + const flowDataStr = flows[i].flowData + const flowData = JSON.parse(flowDataStr) + usecases.push(...flows[i].usecases) + if (flows[i].framework) { + flows[i].framework = [flows[i].framework] || [] + } + const nodes = flowData.nodes || [] + tImages[flows[i].id] = [] + for (let j = 0; j < nodes.length; j += 1) { + const imageSrc = `${baseURL}/api/v1/node-icon/${nodes[j].data.name}` + if (!tImages[flows[i].id].includes(imageSrc)) { + tImages[flows[i].id].push(imageSrc) + } + } + } + } + setTemplateImages(tImages) + setTemplateUsecases(Array.from(new Set(usecases)).sort()) + setEligibleTemplateUsecases(Array.from(new Set(usecases)).sort()) + } catch (e) { + console.error(e) + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [getAllCustomTemplatesApi.data]) + + useEffect(() => { + if (getAllCustomTemplatesApi.error) { + setError(getAllCustomTemplatesApi.error) + } + }, [getAllCustomTemplatesApi.error]) + return ( <> {error ? ( ) : ( - + @@ -433,119 +556,253 @@ const Marketplace = () => { - - {usecases.map((usecase, index) => ( - { - setSelectedUsecases( - event.target.checked - ? [...selectedUsecases, usecase] - : selectedUsecases.filter((item) => item !== usecase) - ) - }} - /> - } - label={usecase} + + + + + + + {usecases.map((usecase, index) => ( + { + setSelectedUsecases( + event.target.checked + ? [...selectedUsecases, usecase] + : selectedUsecases.filter((item) => item !== usecase) + ) + }} + /> + } + label={usecase} + /> + ))} + + {selectedUsecases.length > 0 && ( + + )} + + {!view || view === 'card' ? ( + <> + {isLoading ? ( + + + + + + ) : ( + + {getAllTemplatesMarketplacesApi.data + ?.filter(filterByBadge) + .filter(filterByType) + .filter(filterFlows) + .filter(filterByFramework) + .filter(filterByUsecases) + .map((data, index) => ( + + {data.badge && ( + + {(data.type === 'Chatflow' || data.type === 'Agentflow') && ( + goToCanvas(data)} + data={data} + images={images[data.id]} + /> + )} + {data.type === 'Tool' && ( + goToTool(data)} /> + )} + + )} + {!data.badge && (data.type === 'Chatflow' || data.type === 'Agentflow') && ( + goToCanvas(data)} + data={data} + images={images[data.id]} + /> + )} + {!data.badge && data.type === 'Tool' && ( + goToTool(data)} /> + )} + + ))} + + )} + + ) : ( + - ))} - - {selectedUsecases.length > 0 && ( - - )} - {!view || view === 'card' ? ( - <> - {isLoading ? ( - - - - - - ) : ( - - {getAllTemplatesMarketplacesApi.data - ?.filter(filterByBadge) - .filter(filterByType) - .filter(filterFlows) - .filter(filterByFramework) - .filter(filterByUsecases) - .map((data, index) => ( - - {data.badge && ( - - {(data.type === 'Chatflow' || data.type === 'Agentflow') && ( - goToCanvas(data)} - data={data} - images={images[data.id]} - /> - )} - {data.type === 'Tool' && ( - goToTool(data)} /> - )} - - )} - {!data.badge && (data.type === 'Chatflow' || data.type === 'Agentflow') && ( - goToCanvas(data)} data={data} images={images[data.id]} /> - )} - {!data.badge && data.type === 'Tool' && ( - goToTool(data)} /> - )} - - ))} + )} + + {!isLoading && (!getAllTemplatesMarketplacesApi.data || getAllTemplatesMarketplacesApi.data.length === 0) && ( + + + WorkflowEmptySVG - )} - - ) : ( - - )} - - {!isLoading && (!getAllTemplatesMarketplacesApi.data || getAllTemplatesMarketplacesApi.data.length === 0) && ( - - - WorkflowEmptySVGNo Marketplace Yet
+ + )} + + + + {templateUsecases.map((usecase, index) => ( + { + setSelectedTemplateUsecases( + event.target.checked + ? [...selectedTemplateUsecases, usecase] + : selectedTemplateUsecases.filter((item) => item !== usecase) + ) + }} + /> + } + label={usecase} /> -
-
No Marketplace Yet
+ ))} - )} + {selectedTemplateUsecases.length > 0 && ( + + )} + {!view || view === 'card' ? ( + <> + {isLoading ? ( + + + + + + ) : ( + + {getAllCustomTemplatesApi.data + ?.filter(filterByBadge) + .filter(filterByType) + .filter(filterFlows) + .filter(filterByFramework) + .filter(filterByUsecases) + .map((data, index) => ( + + {data.badge && ( + + {(data.type === 'Chatflow' || data.type === 'Agentflow') && ( + goToCanvas(data)} + data={data} + images={templateImages[data.id]} + /> + )} + {data.type === 'Tool' && ( + goToTool(data)} /> + )} + + )} + {!data.badge && (data.type === 'Chatflow' || data.type === 'Agentflow') && ( + goToCanvas(data)} + data={data} + images={templateImages[data.id]} + /> + )} + {!data.badge && data.type === 'Tool' && ( + goToTool(data)} /> + )} + + ))} + + )} + + ) : ( + + )} + {!isLoading && (!getAllCustomTemplatesApi.data || getAllCustomTemplatesApi.data.length === 0) && ( + + + WorkflowEmptySVG + +
No Saved Custom Templates
+
+ )} + )} @@ -556,6 +813,7 @@ const Marketplace = () => { onConfirm={() => setShowToolDialog(false)} onUseTemplate={(tool) => onUseTemplate(tool)} > + ) } diff --git a/packages/ui/src/views/settings/index.jsx b/packages/ui/src/views/settings/index.jsx index 549b82e125a..aeb1274ba72 100644 --- a/packages/ui/src/views/settings/index.jsx +++ b/packages/ui/src/views/settings/index.jsx @@ -16,10 +16,11 @@ import MainCard from '@/ui-component/cards/MainCard' import Transitions from '@/ui-component/extended/Transitions' import settings from '@/menu-items/settings' import agentsettings from '@/menu-items/agentsettings' +import customAssistantSettings from '@/menu-items/customassistant' // ==============================|| SETTINGS ||============================== // -const Settings = ({ chatflow, isSettingsOpen, anchorEl, isAgentCanvas, onSettingsItemClick, onUploadFile, onClose }) => { +const Settings = ({ chatflow, isSettingsOpen, isCustomAssistant, anchorEl, isAgentCanvas, onSettingsItemClick, onUploadFile, onClose }) => { const theme = useTheme() const [settingsMenu, setSettingsMenu] = useState([]) const customization = useSelector((state) => state.customization) @@ -48,11 +49,15 @@ const Settings = ({ chatflow, isSettingsOpen, anchorEl, isAgentCanvas, onSetting const settingsMenu = menus.children.filter((menu) => menu.id === 'loadChatflow') setSettingsMenu(settingsMenu) } else if (chatflow && chatflow.id) { - const menus = isAgentCanvas ? agentsettings : settings - const settingsMenu = menus.children - setSettingsMenu(settingsMenu) + if (isCustomAssistant) { + const menus = customAssistantSettings + setSettingsMenu(menus.children) + } else { + const menus = isAgentCanvas ? agentsettings : settings + setSettingsMenu(menus.children) + } } - }, [chatflow, isAgentCanvas]) + }, [chatflow, isAgentCanvas, isCustomAssistant]) useEffect(() => { setOpen(isSettingsOpen) @@ -148,6 +153,7 @@ const Settings = ({ chatflow, isSettingsOpen, anchorEl, isAgentCanvas, onSetting Settings.propTypes = { chatflow: PropTypes.object, isSettingsOpen: PropTypes.bool, + isCustomAssistant: PropTypes.bool, anchorEl: PropTypes.any, onSettingsItemClick: PropTypes.func, onUploadFile: PropTypes.func, diff --git a/packages/ui/src/views/tools/PasteJSONDialog.jsx b/packages/ui/src/views/tools/PasteJSONDialog.jsx new file mode 100644 index 00000000000..02778aa1cdf --- /dev/null +++ b/packages/ui/src/views/tools/PasteJSONDialog.jsx @@ -0,0 +1,87 @@ +import { createPortal } from 'react-dom' +import PropTypes from 'prop-types' +import { useState } from 'react' +import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material' +import { StyledButton } from '@/ui-component/button/StyledButton' +import { CodeEditor } from '@/ui-component/editor/CodeEditor' + +const PasteJSONDialog = ({ show, onCancel, onConfirm, customization }) => { + const portalElement = document.getElementById('portal') + const [jsonInput, setJsonInput] = useState('') + const [error, setError] = useState('') + + const handleConfirm = () => { + try { + const parsedJSON = JSON.parse(jsonInput) + if (!Array.isArray(parsedJSON)) throw new Error('Input must be an array of properties') + const formattedData = parsedJSON.map((item, index) => ({ + id: index + 1, + property: item.property || '', + type: item.type || 'string', + description: item.description || '', + required: item.required || false + })) + onConfirm(formattedData) + setError('') + } catch (err) { + setError('Invalid JSON format. Please check your input.') + } + } + + const exampleJSON = `[ + { + "property": "name", + "type": "string", + "description": "User's name", + "required": true + }, + { + "property": "age", + "type": "number", + "description": "User's age", + "required": false + } +]` + + const component = show ? ( + + + Paste JSON Schema + + + + + { + setJsonInput(code) + setError('') + }} + /> + {error && {error}} + + + + + + Confirm + + + + ) : null + + return createPortal(component, portalElement) +} + +PasteJSONDialog.propTypes = { + show: PropTypes.bool, + onCancel: PropTypes.func, + onConfirm: PropTypes.func, + customization: PropTypes.object +} + +export default PasteJSONDialog diff --git a/packages/ui/src/views/tools/ToolDialog.jsx b/packages/ui/src/views/tools/ToolDialog.jsx index e999144eca3..9c49a5688ff 100644 --- a/packages/ui/src/views/tools/ToolDialog.jsx +++ b/packages/ui/src/views/tools/ToolDialog.jsx @@ -29,9 +29,10 @@ import DeleteIcon from '@mui/icons-material/Delete' import ConfirmDialog from '@/ui-component/dialog/ConfirmDialog' import { CodeEditor } from '@/ui-component/editor/CodeEditor' import HowToUseFunctionDialog from './HowToUseFunctionDialog' +import PasteJSONDialog from './PasteJSONDialog' // Icons -import { IconX, IconFileDownload, IconPlus } from '@tabler/icons-react' +import { IconX, IconFileDownload, IconPlus, IconTemplate, IconCode } from '@tabler/icons-react' // API import toolsApi from '@/api/tools' @@ -44,6 +45,7 @@ import useApi from '@/hooks/useApi' import useNotifier from '@/utils/useNotifier' import { generateRandomGradient, formatDataGridRows } from '@/utils/genericHelper' import { HIDE_CANVAS_DIALOG, SHOW_CANVAS_DIALOG } from '@/store/actions' +import ExportAsTemplateDialog from '@/ui-component/dialog/ExportAsTemplateDialog' import { useFlags } from 'flagsmith/react' const exampleAPIFunc = `/* @@ -100,6 +102,11 @@ const ToolDialog = ({ show, dialogProps, onUseTemplate, onCancel, onConfirm, set const flags = useFlags(['org:manage']) + const [exportAsTemplateDialogOpen, setExportAsTemplateDialogOpen] = useState(false) + const [exportAsTemplateDialogProps, setExportAsTemplateDialogProps] = useState({}) + + const [showPasteJSONDialog, setShowPasteJSONDialog] = useState(false) + const deleteItem = useCallback( (id) => () => { setTimeout(() => { @@ -126,6 +133,20 @@ const ToolDialog = ({ show, dialogProps, onUseTemplate, onCancel, onConfirm, set }) } + const onSaveAsTemplate = () => { + setExportAsTemplateDialogProps({ + title: 'Export As Template', + tool: { + name: toolName, + description: toolDesc, + iconSrc: toolIcon, + schema: toolSchema, + func: toolFunc + } + }) + setExportAsTemplateDialogOpen(true) + } + const onRowUpdate = (newRow) => { setTimeout(() => { setToolSchema((prevRows) => { @@ -247,7 +268,9 @@ const ToolDialog = ({ show, dialogProps, onUseTemplate, onCancel, onConfirm, set delete toolData.createdDate delete toolData.updatedDate let dataStr = JSON.stringify(toolData, null, 2) - let dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + //let dataUri = 'data:application/json;charset=utf-8,' + encodeURIComponent(dataStr) + const blob = new Blob([dataStr], { type: 'application/json' }) + const dataUri = URL.createObjectURL(blob) let exportFileDefaultName = `${toolName}-CustomTool.json` @@ -423,6 +446,10 @@ const ToolDialog = ({ show, dialogProps, onUseTemplate, onCancel, onConfirm, set }, [visibility] ) + const handlePastedJSON = (formattedData) => { + setToolSchema(formattedData) + setShowPasteJSONDialog(false) + } const component = show ? ( {dialogProps.title} - {dialogProps.type === 'EDIT' && ( - - )} + + {dialogProps.type === 'EDIT' && ( + <> + + + + )} + @@ -536,9 +576,21 @@ const ToolDialog = ({ show, dialogProps, onUseTemplate, onCancel, onConfirm, set - - Input Schema - + + + Input Schema + + + {dialogProps.type !== 'TEMPLATE' && ( + + + + + )} {dialogProps.type !== 'TEMPLATE' && ( ) : null diff --git a/packages/ui/src/views/tools/index.jsx b/packages/ui/src/views/tools/index.jsx index 1d1f96d66cf..ba270e216eb 100644 --- a/packages/ui/src/views/tools/index.jsx +++ b/packages/ui/src/views/tools/index.jsx @@ -1,7 +1,7 @@ 'use client' import PropTypes from 'prop-types' import { useEffect, useState, useRef, useMemo } from 'react' -import { Box, Stack, Tabs, Tab, FormControl, InputLabel, Select, MenuItem, Button } from '@mui/material' +import { Box, Stack, Tabs, Tab, FormControl, InputLabel, Select, MenuItem, Button, Skeleton } from '@mui/material' import MainCard from '@/ui-component/cards/MainCard' import ToolDialog from './ToolDialog' import ViewHeader from '@/layout/MainLayout/ViewHeader' @@ -20,6 +20,12 @@ import useApi from '@/hooks/useApi' // icons import { IconPlus, IconFileUpload } from '@tabler/icons-react' +// project imports +import ItemCard from '@/ui-component/cards/ItemCard' +import { gridSpacing } from '@/store/constant' +import ToolEmptySVG from '@/assets/images/tools_empty.svg' +import { ToolsTable } from '@/ui-component/table/ToolsListTable' + function TabPanel(props) { const { children, value, index, ...other } = props return ( @@ -48,6 +54,7 @@ const Tools = () => { const [marketplaceTools, setMarketplaceTools] = useState([]) const [organizationTools, setOrganizationTools] = useState([]) const flags = useFlags(['org:manage']) + const [view, setView] = useState(typeof window !== 'undefined' ? localStorage.getItem('toolsDisplayStyle') || 'card' : 'card') const inputRef = useRef(null) @@ -81,7 +88,11 @@ const Tools = () => { console.error(e) } } - + const handleChange = (event, nextView) => { + if (nextView === null) return + localStorage.setItem('toolsDisplayStyle', nextView) + setView(nextView) + } const handleFileUpload = (e) => { if (!e.target.files) return @@ -136,6 +147,11 @@ const Tools = () => { getAllToolsApi.request() } + function filterTools(data) { + return ( + data.name.toLowerCase().indexOf(search.toLowerCase()) > -1 || data.description.toLowerCase().indexOf(search.toLowerCase()) > -1 + ) + } const onUseTemplate = (selectedTool) => { const dialogProp = { title: 'Add New Tool', @@ -147,7 +163,6 @@ const Tools = () => { setDialogProps(dialogProp) setShowDialog(true) } - useEffect(() => { getAllToolsApi.request() getMarketplaceToolsApi.request() @@ -186,36 +201,36 @@ const Tools = () => { } }, [getAllToolsApi.data]) - const filterTools = (tools, search, categoryFilter) => { - const searchRegex = new RegExp(search, 'i') // 'i' flag for case-insensitive search - - return tools.filter((tool) => { - if (!tool) return false - - // Check category first - const category = tool.category || '' - if (categoryFilter !== 'All' && !category.includes(categoryFilter)) { - return false - } - - // If category matches, then check search - const name = tool.name || tool.templateName || '' - const description = tool.description || '' - const searchText = `${name} ${description}` - - return searchRegex.test(searchText) - }) - } - - const filteredMyTools = useMemo(() => filterTools(myTools, search, categoryFilter), [myTools, search, categoryFilter]) - const filteredMarketplaceTools = useMemo( - () => filterTools(marketplaceTools, search, categoryFilter), - [marketplaceTools, search, categoryFilter] - ) - const filteredOrganizationTools = useMemo( - () => filterTools(organizationTools, search, categoryFilter), - [organizationTools, search, categoryFilter] - ) + // const filterTools = (tools, search, categoryFilter) => { + // const searchRegex = new RegExp(search, 'i') // 'i' flag for case-insensitive search + + // return tools.filter((tool) => { + // if (!tool) return false + + // // Check category first + // const category = tool.category || '' + // if (categoryFilter !== 'All' && !category.includes(categoryFilter)) { + // return false + // } + + // // If category matches, then check search + // const name = tool.name || tool.templateName || '' + // const description = tool.description || '' + // const searchText = `${name} ${description}` + + // return searchRegex.test(searchText) + // }) + // } + + // const filteredMyTools = useMemo(() => filterTools(myTools, search, categoryFilter), [myTools, search, categoryFilter]) + // const filteredMarketplaceTools = useMemo( + // () => filterTools(marketplaceTools, search, categoryFilter), + // [marketplaceTools, search, categoryFilter] + // ) + // const filteredOrganizationTools = useMemo( + // () => filterTools(organizationTools, search, categoryFilter), + // [organizationTools, search, categoryFilter] + // ) const isAdmin = flags?.['org:manage']?.enabled @@ -226,34 +241,8 @@ const Tools = () => { ) : ( - - - Category - - - { Create - - - - - - - - - - - - - - - - (isAdmin ? edit(tool) : goToTool(tool))} - /> - + {!view || view === 'card' ? ( + <> + {isLoading ? ( + + + + + + ) : ( + + {getAllToolsApi.data && + getAllToolsApi.data + ?.filter(filterTools) + .map((data, index) => edit(data)} />)} + + )} + + ) : ( + + )} + {!isLoading && (!getAllToolsApi.data || getAllToolsApi.data.length === 0) && ( + + + ToolEmptySVG + +
No Tools Created Yet
+
+ )}
)} diff --git a/packages/ui/src/views/vectorstore/UpsertHistoryDialog.jsx b/packages/ui/src/views/vectorstore/UpsertHistoryDialog.jsx index b032fbe6ad1..025e0b6a1eb 100644 --- a/packages/ui/src/views/vectorstore/UpsertHistoryDialog.jsx +++ b/packages/ui/src/views/vectorstore/UpsertHistoryDialog.jsx @@ -197,7 +197,7 @@ const UpsertHistoryDialog = ({ show, dialogProps, onCancel }) => { const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) const [chatflowUpsertHistory, setChatflowUpsertHistory] = useState([]) - const [startDate, setStartDate] = useState(new Date().setMonth(new Date().getMonth() - 1)) + const [startDate, setStartDate] = useState(new Date(new Date().setMonth(new Date().getMonth() - 1))) const [endDate, setEndDate] = useState(new Date()) const [selected, setSelected] = useState([]) @@ -211,17 +211,21 @@ const UpsertHistoryDialog = ({ show, dialogProps, onCancel }) => { } const onStartDateSelected = (date) => { - setStartDate(date) + const updatedDate = new Date(date) + updatedDate.setHours(0, 0, 0, 0) + setStartDate(updatedDate) getUpsertHistoryApi.request(dialogProps.chatflow.id, { - startDate: date, + startDate: updatedDate, endDate: endDate }) } const onEndDateSelected = (date) => { - setEndDate(date) + const updatedDate = new Date(date) + updatedDate.setHours(23, 59, 59, 999) + setEndDate(updatedDate) getUpsertHistoryApi.request(dialogProps.chatflow.id, { - endDate: date, + endDate: updatedDate, startDate: startDate }) } @@ -293,7 +297,7 @@ const UpsertHistoryDialog = ({ show, dialogProps, onCancel }) => { return () => { setChatflowUpsertHistory([]) - setStartDate(new Date().setMonth(new Date().getMonth() - 1)) + setStartDate(new Date(new Date().setMonth(new Date().getMonth() - 1))) setEndDate(new Date()) } diff --git a/packages/ui/src/views/vectorstore/VectorStoreDialog.jsx b/packages/ui/src/views/vectorstore/VectorStoreDialog.jsx index 1edc9af2e41..13b219f67be 100644 --- a/packages/ui/src/views/vectorstore/VectorStoreDialog.jsx +++ b/packages/ui/src/views/vectorstore/VectorStoreDialog.jsx @@ -23,7 +23,7 @@ import { CheckboxInput } from '@/ui-component/checkbox/Checkbox' import { BackdropLoader } from '@/ui-component/loading/BackdropLoader' import { TableViewOnly } from '@/ui-component/table/Table' -import { IconX, IconBulb } from '@tabler/icons-react' +import { IconX, IconBulb, IconExclamationCircle } from '@tabler/icons-react' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import pythonSVG from '@/assets/images/python.svg' import javascriptSVG from '@/assets/images/javascript.svg' @@ -545,6 +545,47 @@ formData.append("openAIApiKey[openAIEmbeddings_0]", "sk-my-openai-2nd-key")` showLineNumbers={false} wrapLines /> +
+
+ + + { + 'For security reason, override config is disabled by default. You can change this by going into Chatflow Configuration -> Security tab, and enable the property you want to override.' + } +  Refer{' '} + + here + {' '} + for more details + +
+
{ const serverPort = parseInt(serverEnv?.['PORT'] ?? 3000) if (!Number.isNaN(serverPort) && serverPort > 0 && serverPort < 65535) { proxy = { - '/api': { - target: `http://${serverHost}:${serverPort}`, - changeOrigin: true - }, - '/socket.io': { + '^/api(/|$).*': { target: `http://${serverHost}:${serverPort}`, changeOrigin: true } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccf7310c4f2..3bf1c73d594 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,50142 +1,52269 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + autoInstallPeers: true + excludeLinksFromLockfile: false overrides: - '@qdrant/openapi-typescript-fetch': 1.2.6 - '@google/generative-ai': ^0.15.0 - openai: 4.51.0 - '@langchain/core': 0.2.18 + '@google/generative-ai': ^0.22.0 + '@grpc/grpc-js': ^1.10.10 + '@langchain/core': 0.3.37 + '@qdrant/openapi-typescript-fetch': 1.2.6 + openai: 4.82.0 + protobufjs: 7.4.0 + axios: 1.7.9 + body-parser: 2.0.2 + braces: 3.0.3 + cross-spawn: 7.0.6 + glob-parent: 6.0.2 + http-proxy-middleware: 3.0.3 + json5: 2.2.3 + nth-check: 2.1.1 + path-to-regexp: 0.1.12 + prismjs: 1.29.0 + semver: 7.7.1 + set-value: 4.1.0 + unset-value: 2.0.1 + webpack-dev-middleware: 7.4.2 importers: - .: - dependencies: - wait-on: - specifier: ^7.0.1 - version: 7.2.0(debug@4.3.4) - devDependencies: - '@babel/preset-env': - specifier: ^7.19.4 - version: 7.24.0(@babel/core@7.24.0) - '@babel/preset-typescript': - specifier: 7.18.6 - version: 7.18.6(@babel/core@7.24.0) - '@cypress/react18': - specifier: ^2.0.0 - version: 2.0.1(@types/react-dom@18.2.21)(@types/react@18.2.65)(cypress@12.17.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/express': - specifier: ^4.17.13 - version: 4.17.21 - '@typescript-eslint/typescript-estree': - specifier: ^7.13.1 - version: 7.13.1(typescript@5.5.2) - cypress: - specifier: ^12.17.1 - version: 12.17.4 - dotenv-cli: - specifier: latest - version: 7.4.2 - eslint: - specifier: ^8.24.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.3.0 - version: 8.10.0(eslint@8.57.0) - eslint-config-react-app: - specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2) - eslint-plugin-jsx-a11y: - specifier: ^6.6.1 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-markdown: - specifier: ^3.0.0 - version: 3.0.1(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^3.4.0 - version: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.26.1 - version: 7.34.0(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.57.0) - eslint-plugin-unused-imports: - specifier: ^2.0.0 - version: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0) - husky: - specifier: ^8.0.1 - version: 8.0.3 - kill-port: - specifier: ^2.0.1 - version: 2.0.1 - lint-staged: - specifier: ^13.0.3 - version: 13.3.0(enquirer@2.4.1) - prettier: - specifier: ^2.7.1 - version: 2.8.8 - pretty-quick: - specifier: ^3.1.3 - version: 3.3.1(prettier@2.8.8) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - turbo: - specifier: 1.10.16 - version: 1.10.16 - typescript: - specifier: ^5.4.5 - version: 5.5.2 - - apps/web: - dependencies: - '@auth0/nextjs-auth0': - specifier: ^3.5.0 - version: 3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) - '@aws-sdk/client-s3': - specifier: ^3.374.0 - version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/s3-request-presigner': - specifier: ^3.374.0 - version: 3.629.0 - '@aws-sdk/signature-v4-crt': - specifier: ^3.357.0 - version: 3.629.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@dqbd/tiktoken': - specifier: ^1.0.6 - version: 1.0.13 - '@emotion/cache': - specifier: ^11.4.0 - version: 11.11.0 - '@emotion/react': - specifier: ^11.10.6 - version: 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.6 - version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@huggingface/inference': - specifier: ^1.8.0 - version: 1.8.0 - '@mui/icons-material': - specifier: 5.0.3 - version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/material': - specifier: 5.15.0 - version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@pinecone-database/pinecone': - specifier: ^0.0.5 - version: 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) - '@sentry/nextjs': - specifier: ^7.108.0 - version: 7.118.0(encoding@0.1.13)(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react@18.2.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - '@sentry/node': - specifier: ^7.108.0 - version: 7.118.0 - '@svgr/webpack': - specifier: ^8.1.0 - version: 8.1.0(typescript@4.9.5) - '@textea/json-viewer': - specifier: 2.14.1 - version: 2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aai-embed: - specifier: workspace:* - version: link:../../packages/embed - add: - specifier: ^2.0.6 - version: 2.0.6 - aws-crt: - specifier: ^1.15.22 - version: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - axios: - specifier: ^1.4.0 - version: 1.6.2(debug@4.3.4) - chromadb: - specifier: ^1.5.5 - version: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: - specifier: ^6.2.2 - version: 6.2.2 - cors: - specifier: ^2.8.5 - version: 2.8.5 - db: - specifier: workspace:* - version: link:../../packages-answers/db - encoding: - specifier: ^0.1.13 - version: 0.1.13 - experimental-prisma-webpack-plugin: - specifier: workspace:* - version: link:../../packages-answers/experimental-prisma-webpack-plugin - flagsmith: - specifier: ^4.0.3 - version: 4.0.3 - flowise-ui: - specifier: workspace:* - version: link:../../packages/ui - handlebars: - specifier: ^4.7.7 - version: 4.7.8 - inngest: - specifier: ^1.8.0 - version: 1.10.1(encoding@0.1.13)(typescript@4.9.5) - ioredis: - specifier: ^5.3.2 - version: 5.3.2 - jose: - specifier: ^5.2.3 - version: 5.6.3 - js-cookie: - specifier: ^3.0.5 - version: 3.0.5 - langchain: - specifier: ^0.0.116 - version: 0.0.116(x2dtq5tq5z47zk6vqilicnfvfy) - next: - specifier: ^14.2.5 - version: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - next-auth: - specifier: ^4.22.3 - version: 4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - openai: - specifier: 4.51.0 - version: 4.51.0(encoding@0.1.13) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: ^7.45.2 - version: 7.52.2(react@18.2.0) - serpapi: - specifier: ^1.1.1 - version: 1.1.1 - stripe: - specifier: ^12.17.0 - version: 12.18.0 - typeorm: - specifier: ^0.3.17 - version: 0.3.20(ioredis@5.3.2)(mysql2@3.9.2)(pg@8.11.5)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - ui: - specifier: workspace:* - version: link:../../packages-answers/ui - utils: - specifier: workspace:* - version: link:../../packages-answers/utils - uuid: - specifier: ^9.0.0 - version: 9.0.1 - devDependencies: - '@babel/core': - specifier: ^7.21.4 - version: 7.24.0 - '@next/bundle-analyzer': - specifier: ^13.4.12 - version: 13.5.6(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@prisma/nextjs-monorepo-workaround-plugin': - specifier: ^5.0.0 - version: 5.18.0 - '@types/cors': - specifier: ^2.8.13 - version: 2.8.17 - '@types/js-cookie': - specifier: ^3.0.3 - version: 3.0.6 - '@types/node': - specifier: ^18.15.11 - version: 18.15.11 - '@types/react': - specifier: ^18.2.15 - version: 18.2.65 - '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.21 - '@types/uuid': - specifier: ^9.0.1 - version: 9.0.8 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - eslint: - specifier: 7.32.0 - version: 7.32.0 - eslint-config-custom: - specifier: workspace:* - version: link:../../packages-answers/eslint-config-custom - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - terser-webpack-plugin: - specifier: ^5.3.9 - version: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - ts-loader: - specifier: ^9.4.4 - version: 9.5.1(typescript@4.9.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - tsconfig: - specifier: workspace:* - version: link:../../packages-answers/tsconfig - types: - specifier: workspace:* - version: link:../../packages-answers/types - typescript: - specifier: ^4.8.4 - version: 4.9.5 - webpack: - specifier: ^5.88.2 - version: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.90.3) - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - - packages-answers/db: - dependencies: - '@prisma/client': - specifier: ^5.10.2 - version: 5.18.0(prisma@5.18.0) - prisma-json-types-generator: - specifier: ^3.0.4 - version: 3.0.4(prisma@5.18.0)(typescript@4.9.5) - devDependencies: - '@types/jest': - specifier: ^29.5.0 - version: 29.5.12 - '@types/node': - specifier: ^18.15.11 - version: 18.15.11 - concurrently: - specifier: ^7.6.0 - version: 7.6.0 - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-custom: - specifier: workspace:* - version: link:../eslint-config-custom - jest: - specifier: ^29.5.0 - version: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - prisma: - specifier: ^5.10.2 - version: 5.18.0 - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) - tsconfig: - specifier: workspace:* - version: link:../tsconfig - typescript: - specifier: ^4.8.4 - version: 4.9.5 - - packages-answers/eslint-config-custom: - dependencies: - eslint: - specifier: ^7.23.0 - version: 7.32.0 - eslint-config-next: - specifier: ^13.4.12 - version: 13.5.6(eslint@7.32.0)(typescript@4.9.5) - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.10.0(eslint@7.32.0) - eslint-config-turbo: - specifier: ^1.10.10 - version: 1.13.4(eslint@7.32.0) - eslint-plugin-react: - specifier: ^7.33.0 - version: 7.34.0(eslint@7.32.0) - devDependencies: - typescript: - specifier: ^4.8.4 - version: 4.9.5 - - packages-answers/experimental-prisma-webpack-plugin: - devDependencies: - webpack: - specifier: ^5.88.2 - version: 5.90.3 - - packages-answers/tsconfig: {} - - packages-answers/types: - devDependencies: - '@algolia/client-search': - specifier: ^4.19.1 - version: 4.24.0 - '@types/node': - specifier: ^18.15.11 - version: 18.15.11 - db: - specifier: workspace:* - version: link:../db - openai: - specifier: 4.51.0 - version: 4.51.0(encoding@0.1.13) - tsconfig: - specifier: workspace:* - version: link:../tsconfig - typescript: - specifier: ^4.8.4 - version: 4.9.5 - - packages-answers/ui: - dependencies: - '@auth0/nextjs-auth0': - specifier: ^3.5.0 - version: 3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) - '@emotion/cache': - specifier: ^11.4.0 - version: 11.11.0 - '@emotion/react': - specifier: ^11.10.6 - version: 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.6 - version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@hookform/error-message': - specifier: ^2.0.1 - version: 2.0.1(react-dom@18.2.0(react@18.2.0))(react-hook-form@7.52.2(react@18.2.0))(react@18.2.0) - '@monaco-editor/react': - specifier: ^4.5.1 - version: 4.6.0(monaco-editor@0.50.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/icons-material': - specifier: 5.0.3 - version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/lab': - specifier: 5.0.0-alpha.156 - version: 5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/material': - specifier: 5.15.0 - version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/utils': - specifier: 5.15.0 - version: 5.15.0(@types/react@18.2.65)(react@18.2.0) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.18.0(prisma@5.18.0))(next-auth@4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@sentry/browser': - specifier: ^7.60.0 - version: 7.118.0 - '@textea/json-viewer': - specifier: 2.14.1 - version: 2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/cors': - specifier: ^2.8.13 - version: 2.8.17 - '@types/js-cookie': - specifier: ^3.0.3 - version: 3.0.6 - '@types/react-window': - specifier: ^1.8.5 - version: 1.8.8 - aai-embed-react: - specifier: ~1.0.8 - version: 1.0.8(@types/node@20.12.12)(aai-embed@packages+embed)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5) - axios: - specifier: ^1.4.0 - version: 1.6.2(debug@4.3.4) - clsx: - specifier: ^1.2.1 - version: 1.2.1 - cors: - specifier: ^2.8.5 - version: 2.8.5 - encoding: - specifier: ^0.1.13 - version: 0.1.13 - flagsmith: - specifier: ^4.0.3 - version: 4.0.3 - framer-motion: - specifier: ^10.13.0 - version: 10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - fuse.js: - specifier: ^7.0.0 - version: 7.0.0 - handlebars: - specifier: ^4.7.7 - version: 4.7.8 - jose: - specifier: ^5.2.3 - version: 5.6.3 - js-cookie: - specifier: ^3.0.5 - version: 3.0.5 - next: - specifier: ^14.2.5 - version: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - next-auth: - specifier: ^4.22.3 - version: 4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-draggable: - specifier: ^4.4.5 - version: 4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-hook-form: - specifier: ^7.45.2 - version: 7.52.2(react@18.2.0) - react-markdown: - specifier: ^8.0.7 - version: 8.0.7(@types/react@18.2.65)(react@18.2.0) - react-syntax-highlighter: - specifier: ^15.5.0 - version: 15.5.0(react@18.2.0) - react-window: - specifier: ^1.8.9 - version: 1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - remark-gfm: - specifier: ^3.0.1 - version: 3.0.1 - stripe: - specifier: ^12.17.0 - version: 12.18.0 - swr: - specifier: ^2.2.0 - version: 2.2.0(react@18.2.0) - types: - specifier: workspace:* - version: link:../types - utils: - specifier: workspace:* - version: link:../utils - devDependencies: - '@types/chrome': - specifier: ^0.0.232 - version: 0.0.232 - '@types/react': - specifier: ^18.2.15 - version: 18.2.65 - '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.21 - '@types/react-syntax-highlighter': - specifier: ^15.5.6 - version: 15.5.13 - db: - specifier: workspace:* - version: link:../db - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-custom: - specifier: workspace:* - version: link:../eslint-config-custom - tsconfig: - specifier: workspace:* - version: link:../tsconfig - tsup: - specifier: ^6.2.3 - version: 6.7.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5))(typescript@4.9.5) - typescript: - specifier: ^4.8.4 - version: 4.9.5 - - packages-answers/utils: - dependencies: - '@algolia/client-search': - specifier: ^4.19.1 - version: 4.24.0 - '@auth0/nextjs-auth0': - specifier: ^3.5.0 - version: 3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) - '@aws-sdk/client-s3': - specifier: ^3.374.0 - version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@contentful/app-sdk': - specifier: ^4.22.1 - version: 4.29.0 - '@contentful/rich-text-from-markdown': - specifier: ^15.16.3 - version: 15.18.8 - '@dqbd/tiktoken': - specifier: ^1.0.6 - version: 1.0.13 - '@pinecone-database/pinecone': - specifier: ^0.0.5 - version: 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) - '@slack/web-api': - specifier: ^6.8.1 - version: 6.12.0 - airtable: - specifier: ^0.11.6 - version: 0.11.6(encoding@0.1.13) - algoliasearch: - specifier: ^4.19.1 - version: 4.24.0 - axios: - specifier: ^1.4.0 - version: 1.6.2(debug@4.3.4) - bufferutil: - specifier: ^4.0.8 - version: 4.0.8 - cheerio: - specifier: ^1.0.0-rc.12 - version: 1.0.0-rc.12 - contentful-management: - specifier: ^10.39.1 - version: 10.46.4 - csv: - specifier: ^6.3.1 - version: 6.3.10 - csv-parser: - specifier: ^3.0.0 - version: 3.0.0 - csv-stringify: - specifier: ^6.4.0 - version: 6.5.1 - dataloader: - specifier: ^2.2.2 - version: 2.2.2 - db: - specifier: workspace:* - version: link:../db - dotenv: - specifier: ^16.3.1 - version: 16.4.5 - eventsource-parser: - specifier: ^1.0.0 - version: 1.1.2 - gpt-3-encoder: - specifier: ^1.1.4 - version: 1.1.4 - gpt-tokens: - specifier: ^1.3.3 - version: 1.3.8 - gpt3-tokenizer: - specifier: ^1.1.5 - version: 1.1.5 - handlebars: - specifier: ^4.7.7 - version: 4.7.8 - import-fresh: - specifier: ^3.3.0 - version: 3.3.0 - inngest: - specifier: ^1.8.0 - version: 1.10.1(encoding@0.1.13)(typescript@4.9.5) - ioredis: - specifier: ^5.3.2 - version: 5.3.2 - jira.js: - specifier: ^2.17.0 - version: 2.20.1 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - jsdom: - specifier: ^22.1.0 - version: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) - langchain: - specifier: ^0.0.116 - version: 0.0.116(mkn4eugug2vxe57dfily4idgsy) - mammoth: - specifier: ^1.6.0 - version: 1.7.2 - natural: - specifier: ^6.2.0 - version: 6.12.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - next-auth: - specifier: ^4.22.3 - version: 4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - node-fetch: - specifier: ^3.3.1 - version: 3.3.2 - node-html-markdown: - specifier: ^1.3.0 - version: 1.3.0 - openai: - specifier: 4.51.0 - version: 4.51.0(encoding@0.1.13) - openapi-typescript: - specifier: ^6.3.7 - version: 6.7.6 - pdfjs-dist: - specifier: ^3.8.162 - version: 3.11.174(encoding@0.1.13) - puppeteer: - specifier: ^19.11.1 - version: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - readline: - specifier: ^1.3.0 - version: 1.3.0 - request: - specifier: ^2.88.2 - version: 2.88.2 - sitemapper: - specifier: ^3.2.6 - version: 3.2.9 - socket.io-client: - specifier: ^4.7.5 - version: 4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) - stripe: - specifier: ^12.17.0 - version: 12.18.0 - swagger2openapi: - specifier: ^7.0.8 - version: 7.0.8(encoding@0.1.13) - utf-8-validate: - specifier: ^6.0.3 - version: 6.0.4 - uuid: - specifier: ^9.0.0 - version: 9.0.1 - ws: - specifier: ^8.16.0 - version: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - yaml: - specifier: ^2.2.1 - version: 2.4.1 - devDependencies: - '@types/jest': - specifier: ^29.5.0 - version: 29.5.12 - '@types/jsdom': - specifier: ^21.1.1 - version: 21.1.6 - '@types/node': - specifier: ^18.15.11 - version: 18.15.11 - '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.21 - '@types/swagger2openapi': - specifier: ^7.0.0 - version: 7.0.4 - '@types/uuid': - specifier: ^9.0.1 - version: 9.0.8 - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-custom: - specifier: workspace:* - version: link:../eslint-config-custom - jest: - specifier: ^29.5.0 - version: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - openapi-types: - specifier: ^12.1.3 - version: 12.1.3 - tsconfig: - specifier: workspace:* - version: link:../tsconfig - types: - specifier: workspace:* - version: link:../types - typescript: - specifier: ^4.8.4 - version: 4.9.5 - - packages/components: - dependencies: - '@aws-sdk/client-bedrock-runtime': - specifier: 3.422.0 - version: 3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-dynamodb': - specifier: ^3.360.0 - version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-s3': - specifier: ^3.427.0 - version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@contentful/rich-text-plain-text-renderer': - specifier: ^16.0.7 - version: 16.2.8 - '@contentful/rich-text-types': - specifier: ^16.5.2 - version: 16.8.3 - '@datastax/astra-db-ts': - specifier: ^0.1.2 - version: 0.1.4 - '@dqbd/tiktoken': - specifier: ^1.0.7 - version: 1.0.13 - '@e2b/code-interpreter': - specifier: ^0.0.5 - version: 0.0.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@elastic/elasticsearch': - specifier: ^8.9.0 - version: 8.12.2 - '@getzep/zep-cloud': - specifier: ~1.0.7 - version: 1.0.7(@langchain/core@0.2.18)(encoding@0.1.13)(langchain@0.2.11) - '@getzep/zep-js': - specifier: ^0.9.0 - version: 0.9.0 - '@gomomento/sdk': - specifier: ^1.51.1 - version: 1.68.1(encoding@0.1.13) - '@gomomento/sdk-core': - specifier: ^1.51.1 - version: 1.68.1 - '@google-ai/generativelanguage': - specifier: ^2.5.0 - version: 2.6.0(encoding@0.1.13) - '@google/generative-ai': - specifier: ^0.15.0 - version: 0.15.0 - '@huggingface/inference': - specifier: ^2.6.1 - version: 2.6.4 - '@langchain/anthropic': - specifier: ^0.2.1 - version: 0.2.1(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/aws': - specifier: ^0.0.9 - version: 0.0.9(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/cohere': - specifier: ^0.0.7 - version: 0.0.7(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/community': - specifier: ^0.2.17 - version: 0.2.17(yfqvvifhmjhb4q5hisu4akm3p4) - '@langchain/core': - specifier: 0.2.18 - version: 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/exa': - specifier: ^0.0.5 - version: 0.0.5(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/google-genai': - specifier: ^0.0.22 - version: 0.0.22(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - '@langchain/google-vertexai': - specifier: ^0.0.19 - version: 0.0.19(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - '@langchain/groq': - specifier: ^0.0.8 - version: 0.0.8(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/langgraph': - specifier: ^0.0.22 - version: 0.0.22(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/mistralai': - specifier: ^0.0.26 - version: 0.0.26(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/mongodb': - specifier: ^0.0.1 - version: 0.0.1(gcp-metadata@5.3.0(encoding@0.1.13))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(socks@2.8.1) - '@langchain/ollama': - specifier: ^0.0.2 - version: 0.0.2(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/openai': - specifier: ^0.0.30 - version: 0.0.30(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge)) - '@langchain/pinecone': - specifier: ^0.0.3 - version: 0.0.3(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/qdrant': - specifier: ^0.0.5 - version: 0.0.5(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(typescript@5.5.2) - '@langchain/weaviate': - specifier: ^0.0.1 - version: 0.0.1(encoding@0.1.13)(graphql@16.8.1)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@mendable/firecrawl-js': - specifier: ^0.0.28 - version: 0.0.28 - '@mistralai/mistralai': - specifier: 0.1.3 - version: 0.1.3(encoding@0.1.13) - '@notionhq/client': - specifier: ^2.2.8 - version: 2.2.14(encoding@0.1.13) - '@opensearch-project/opensearch': - specifier: ^1.2.0 - version: 1.2.0 - '@pinecone-database/pinecone': - specifier: 2.2.2 - version: 2.2.2 - '@qdrant/js-client-rest': - specifier: ^1.9.0 - version: 1.9.0(typescript@5.5.2) - '@supabase/supabase-js': - specifier: ^2.29.0 - version: 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.9 - '@types/jsdom': - specifier: ^21.1.1 - version: 21.1.6 - '@upstash/redis': - specifier: 1.22.1 - version: 1.22.1(encoding@0.1.13) - '@upstash/vector': - specifier: 1.1.5 - version: 1.1.5 - '@zilliz/milvus2-sdk-node': - specifier: ^2.2.24 - version: 2.3.5 - apify-client: - specifier: ^2.7.1 - version: 2.9.3 - assemblyai: - specifier: ^4.2.2 - version: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - axios: - specifier: 1.6.2 - version: 1.6.2(debug@4.3.4) - cheerio: - specifier: ^1.0.0-rc.12 - version: 1.0.0-rc.12 - chromadb: - specifier: ^1.5.11 - version: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: - specifier: ^7.7.5 - version: 7.10.0(encoding@0.1.13) - contentful: - specifier: ^10.6.14 - version: 10.13.2 - contentful-management: - specifier: ^11.7.3 - version: 11.31.1 - crypto-js: - specifier: ^4.1.1 - version: 4.2.0 - css-what: - specifier: ^6.1.0 - version: 6.1.0 - d3-dsv: - specifier: '2' - version: 2.0.0 - dotenv: - specifier: ^16.0.0 - version: 16.4.5 - exa-js: - specifier: ^1.0.12 - version: 1.0.12(encoding@0.1.13) - express: - specifier: ^4.17.3 - version: 4.18.3 - faiss-node: - specifier: ^0.5.1 - version: 0.5.1 - fast-json-patch: - specifier: ^3.1.1 - version: 3.1.1 - form-data: - specifier: ^4.0.0 - version: 4.0.0 - google-auth-library: - specifier: ^9.4.0 - version: 9.6.3(encoding@0.1.13) - graphql: - specifier: ^16.6.0 - version: 16.8.1 - html-to-text: - specifier: ^9.0.5 - version: 9.0.5 - ioredis: - specifier: ^5.3.2 - version: 5.3.2 - jsdom: - specifier: ^22.1.0 - version: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) - jsonpointer: - specifier: ^5.0.1 - version: 5.0.1 - langchain: - specifier: ^0.2.11 - version: 0.2.11(lcaakvik4gok2sgy65marre3ge) - langfuse: - specifier: 3.3.4 - version: 3.3.4 - langfuse-langchain: - specifier: ^3.3.4 - version: 3.3.4(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge)) - langsmith: - specifier: 0.1.6 - version: 0.1.6 - langwatch: - specifier: ^0.1.1 - version: 0.1.1(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2)) - linkifyjs: - specifier: ^4.1.1 - version: 4.1.3 - llamaindex: - specifier: ^0.3.13 - version: 0.3.13(@notionhq/client@2.2.14(encoding@0.1.13))(bufferutil@4.0.8)(encoding@0.1.13)(gcp-metadata@5.3.0(encoding@0.1.13))(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.1)(typescript@5.5.2)(utf-8-validate@6.0.4) - lodash: - specifier: ^4.17.21 - version: 4.17.21 - lunary: - specifier: ^0.6.16 - version: 0.6.16(openai@4.51.0(encoding@0.1.13))(react@18.2.0) - mammoth: - specifier: ^1.5.1 - version: 1.7.0 - moment: - specifier: ^2.29.3 - version: 2.30.1 - mongodb: - specifier: 6.3.0 - version: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - mysql2: - specifier: ^3.9.2 - version: 3.9.2 - node-fetch: - specifier: ^2.6.11 - version: 2.7.0(encoding@0.1.13) - node-html-markdown: - specifier: ^1.3.0 - version: 1.3.0 - notion-to-md: - specifier: ^3.1.1 - version: 3.1.1(encoding@0.1.13) - object-hash: - specifier: ^3.0.0 - version: 3.0.0 - openai: - specifier: 4.51.0 - version: 4.51.0(encoding@0.1.13) - pdf-parse: - specifier: ^1.1.1 - version: 1.1.1 - pdfjs-dist: - specifier: ^3.7.107 - version: 3.11.174(encoding@0.1.13) - pg: - specifier: ^8.11.2 - version: 8.11.3 - playwright: - specifier: ^1.35.0 - version: 1.42.1 - puppeteer: - specifier: ^20.7.1 - version: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) - pyodide: - specifier: '>=0.21.0-alpha.2' - version: 0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - redis: - specifier: ^4.6.7 - version: 4.6.13 - replicate: - specifier: ^0.31.1 - version: 0.31.1 - socket.io: - specifier: ^4.6.1 - version: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) - srt-parser-2: - specifier: ^1.2.3 - version: 1.2.3 - typeorm: - specifier: ^0.3.6 - version: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - vm2: - specifier: ^3.9.19 - version: 3.9.19 - weaviate-ts-client: - specifier: ^1.1.0 - version: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - winston: - specifier: ^3.9.0 - version: 3.12.0 - ws: - specifier: ^8.9.0 - version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youtube-transcript: - specifier: ^1.1.0 - version: 1.2.1 - zod: - specifier: ^3.22.4 - version: 3.22.4 - zod-to-json-schema: - specifier: ^3.21.4 - version: 3.22.4(zod@3.22.4) - devDependencies: - '@swc/core': - specifier: ^1.3.99 - version: 1.4.6(@swc/helpers@0.5.5) - '@types/crypto-js': - specifier: ^4.1.1 - version: 4.2.2 - '@types/gulp': - specifier: 4.0.9 - version: 4.0.9 - '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 - '@types/node-fetch': - specifier: 2.6.2 - version: 2.6.2 - '@types/object-hash': - specifier: ^3.0.2 - version: 3.0.6 - '@types/pg': - specifier: ^8.10.2 - version: 8.11.2 - '@types/ws': - specifier: ^8.5.3 - version: 8.5.10 - babel-register: - specifier: ^6.26.0 - version: 6.26.0 - gulp: - specifier: ^4.0.2 - version: 4.0.2 - rimraf: - specifier: ^5.0.5 - version: 5.0.5 - tsc-watch: - specifier: ^6.0.4 - version: 6.0.4(typescript@5.5.2) - tslib: - specifier: ^2.6.2 - version: 2.6.2 - typescript: - specifier: ^5.4.5 - version: 5.5.2 - - packages/docs: - dependencies: - '@docusaurus/core': - specifier: 3.5.2 - version: 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/preset-classic': - specifier: 3.5.2 - version: 3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2) - '@mdx-js/react': - specifier: ^3.0.0 - version: 3.0.1(@types/react@18.2.65)(react@18.2.0) - aai-embed: - specifier: workspace:* - version: link:../embed - aai-embed-react: - specifier: workspace:^ - version: link:../embed-react - clsx: - specifier: ^2.0.0 - version: 2.1.0 - prism-react-renderer: - specifier: ^2.3.0 - version: 2.4.0(react@18.2.0) - react: - specifier: ^18.0.0 - version: 18.2.0 - react-dom: - specifier: ^18.0.0 - version: 18.2.0(react@18.2.0) - troika-three-text: - specifier: ^0.49.1 - version: 0.49.1(three@0.168.0) - devDependencies: - '@docusaurus/module-type-aliases': - specifier: 3.5.2 - version: 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/tsconfig': - specifier: 3.5.2 - version: 3.5.2 - '@docusaurus/types': - specifier: 3.5.2 - version: 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - typescript: - specifier: ~5.5.2 - version: 5.5.2 - - packages/embed: - dependencies: - '@babel/core': - specifier: ^7.22.1 - version: 7.24.0 - '@ts-stack/markdown': - specifier: ^1.4.0 - version: 1.5.0 - device-detector-js: - specifier: ^3.0.3 - version: 3.0.3 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - prettier: - specifier: ^3.1.0 - version: 3.2.5 - socket.io-client: - specifier: ^4.6.2 - version: 4.7.4(bufferutil@4.0.8) - solid-element: - specifier: 1.7.0 - version: 1.7.0(solid-js@1.7.1) - solid-js: - specifier: 1.7.1 - version: 1.7.1 - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@babel/preset-typescript': - specifier: 7.21.4 - version: 7.21.4(@babel/core@7.24.0) - '@rollup/plugin-babel': - specifier: 6.0.3 - version: 6.0.3(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@3.23.0) - '@rollup/plugin-commonjs': - specifier: ^25.0.0 - version: 25.0.8(rollup@3.23.0) - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0(rollup@3.23.0) - '@rollup/plugin-node-resolve': - specifier: 15.0.1 - version: 15.0.1(rollup@3.23.0) - '@rollup/plugin-terser': - specifier: 0.4.0 - version: 0.4.0(rollup@3.23.0) - '@rollup/plugin-typescript': - specifier: 11.0.0 - version: 11.0.0(rollup@3.23.0)(tslib@2.6.2)(typescript@5.0.3) - '@tailwindcss/typography': - specifier: ^0.5.10 - version: 0.5.14(tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3))) - '@types/lodash': - specifier: ^4.14.195 - version: 4.17.4 - '@types/node': - specifier: 18.15.11 - version: 18.15.11 - '@types/uuid': - specifier: ^8.3.4 - version: 8.3.4 - '@typescript-eslint/eslint-plugin': - specifier: ^5.57.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/parser': - specifier: ^5.57.0 - version: 5.62.0(eslint@8.37.0)(typescript@5.0.3) - autoprefixer: - specifier: 10.4.14 - version: 10.4.14(postcss@8.4.21) - babel-plugin-lodash: - specifier: ^3.3.4 - version: 3.3.4 - babel-preset-solid: - specifier: 1.7.1 - version: 1.7.1(@babel/core@7.24.0) - eslint: - specifier: ^8.24.0 - version: 8.37.0 - eslint-config-next: - specifier: 13.2.4 - version: 13.2.4(eslint@8.37.0)(typescript@5.0.3) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@8.37.0) - eslint-plugin-prettier: - specifier: ^5.0.1 - version: 5.2.1(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.37.0))(eslint@8.37.0)(prettier@3.2.5) - eslint-plugin-react: - specifier: ^7.26.1 - version: 7.34.0(eslint@8.37.0) - eslint-plugin-solid: - specifier: 0.12.0 - version: 0.12.0(eslint@8.37.0)(typescript@5.0.3) - husky: - specifier: ^8.0.0 - version: 8.0.3 - postcss: - specifier: 8.4.21 - version: 8.4.21 - react: - specifier: 18.2.0 - version: 18.2.0 - rollup: - specifier: 3.23.0 - version: 3.23.0 - rollup-plugin-livereload: - specifier: 2.0.5 - version: 2.0.5(bufferutil@4.0.8) - rollup-plugin-postcss: - specifier: 4.0.2 - version: 4.0.2(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) - rollup-plugin-serve: - specifier: 2.0.2 - version: 2.0.2 - rollup-plugin-typescript-paths: - specifier: 1.4.0 - version: 1.4.0(typescript@5.0.3) - rollup-plugin-uglify: - specifier: ^6.0.4 - version: 6.0.4(rollup@3.23.0) - tailwindcss: - specifier: 3.3.1 - version: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) - typescript: - specifier: 5.0.3 - version: 5.0.3 - uuid: - specifier: ^9.0.1 - version: 9.0.1 - - packages/embed-react: - dependencies: - '@ladle/react': - specifier: 2.5.1 - version: 2.5.1(@types/node@18.15.11)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(terser@5.29.1)(typescript@5.0.3) - devDependencies: - '@babel/preset-react': - specifier: 7.18.6 - version: 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': - specifier: 7.21.4 - version: 7.21.4(@babel/core@7.24.0) - '@rollup/plugin-babel': - specifier: 6.0.3 - version: 6.0.3(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@3.20.2) - '@rollup/plugin-node-resolve': - specifier: 15.0.1 - version: 15.0.1(rollup@3.20.2) - '@rollup/plugin-terser': - specifier: 0.4.0 - version: 0.4.0(rollup@3.20.2) - '@rollup/plugin-typescript': - specifier: 11.0.0 - version: 11.0.0(rollup@3.20.2)(tslib@2.5.0)(typescript@5.0.3) - '@types/node': - specifier: 18.15.11 - version: 18.15.11 - '@types/react': - specifier: 18.0.32 - version: 18.0.32 - aai-embed: - specifier: workspace:* - version: link:../embed - eslint: - specifier: 8.37.0 - version: 8.37.0 - react: - specifier: 18.2.0 - version: 18.2.0 - rollup: - specifier: 3.20.2 - version: 3.20.2 - rollup-plugin-typescript-paths: - specifier: 1.4.0 - version: 1.4.0(typescript@5.0.3) - tslib: - specifier: 2.5.0 - version: 2.5.0 - tsx: - specifier: 3.12.6 - version: 3.12.6 - typescript: - specifier: 5.0.3 - version: 5.0.3 - - packages/server: - dependencies: - '@contentful/rich-text-from-markdown': - specifier: ^15.16.15 - version: 15.18.8 - '@oclif/core': - specifier: ^3.26.4 - version: 3.27.0 - '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 - '@types/pdf-parse': - specifier: ^1.1.4 - version: 1.1.4 - '@types/uuid': - specifier: ^9.0.7 - version: 9.0.8 - async-mutex: - specifier: ^0.4.0 - version: 0.4.1 - axios: - specifier: 1.6.2 - version: 1.6.2(debug@4.3.4) - content-disposition: - specifier: 0.5.4 - version: 0.5.4 - contentful-management: - specifier: ^11.7.3 - version: 11.31.1 - cors: - specifier: ^2.8.5 - version: 2.8.5 - crypto-js: - specifier: ^4.1.1 - version: 4.2.0 - dotenv: - specifier: ^16.0.0 - version: 16.4.5 - express: - specifier: ^4.17.3 - version: 4.18.3 - express-basic-auth: - specifier: ^1.2.1 - version: 1.2.1 - express-oauth2-jwt-bearer: - specifier: ^1.6.0 - version: 1.6.0 - express-rate-limit: - specifier: ^6.9.0 - version: 6.11.2(express@4.18.3) - express-session: - specifier: ^1.18.1 - version: 1.18.1 - flowise-components: - specifier: workspace:^ - version: link:../components - flowise-ui: - specifier: workspace:^ - version: link:../ui - google-auth-library: - specifier: ^9.4.0 - version: 9.6.3(encoding@0.1.13) - googleapis: - specifier: ^144.0.0 - version: 144.0.0(encoding@0.1.13) - http-errors: - specifier: ^2.0.0 - version: 2.0.0 - http-status-codes: - specifier: ^2.3.0 - version: 2.3.0 - langchainhub: - specifier: ^0.0.11 - version: 0.0.11 - langfuse: - specifier: 3.32.0 - version: 3.32.0 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - mammoth: - specifier: ^1.9.0 - version: 1.9.0 - moment: - specifier: ^2.29.3 - version: 2.30.1 - moment-timezone: - specifier: ^0.5.34 - version: 0.5.45 - multer: - specifier: ^1.4.5-lts.1 - version: 1.4.5-lts.1 - mysql2: - specifier: ^3.9.2 - version: 3.9.2 - openai: - specifier: 4.51.0 - version: 4.51.0(encoding@0.1.13) - passport: - specifier: ^0.7.0 - version: 0.7.0 - passport-google-oauth20: - specifier: ^2.0.0 - version: 2.0.0 - pg: - specifier: ^8.11.1 - version: 8.11.3 - posthog-node: - specifier: ^3.5.0 - version: 3.6.3 - reflect-metadata: - specifier: ^0.1.13 - version: 0.1.14 - sanitize-html: - specifier: ^2.11.0 - version: 2.12.1 - socket.io: - specifier: ^4.6.1 - version: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) - sqlite3: - specifier: ^5.1.6 - version: 5.1.7 - stripe: - specifier: ^17.6.0 - version: 17.6.0 - typeorm: - specifier: ^0.3.6 - version: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - utils: - specifier: workspace:* - version: link:../../packages-answers/utils - uuid: - specifier: ^9.0.1 - version: 9.0.1 - winston: - specifier: ^3.9.0 - version: 3.12.0 - devDependencies: - '@jest/globals': - specifier: ^29.7.0 - version: 29.7.0 - '@jest/types': - specifier: ^29.6.3 - version: 29.6.3 - '@types/content-disposition': - specifier: 0.5.8 - version: 0.5.8 - '@types/cors': - specifier: ^2.8.12 - version: 2.8.17 - '@types/crypto-js': - specifier: ^4.1.1 - version: 4.2.2 - '@types/express-session': - specifier: ^1.18.1 - version: 1.18.1 - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/multer': - specifier: ^1.4.7 - version: 1.4.11 - '@types/passport': - specifier: ^1.0.17 - version: 1.0.17 - '@types/passport-google-oauth20': - specifier: ^2.0.16 - version: 2.0.16 - '@types/sanitize-html': - specifier: ^2.9.5 - version: 2.11.0 - concurrently: - specifier: ^7.1.0 - version: 7.6.0 - cypress: - specifier: ^13.13.0 - version: 13.13.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - nodemon: - specifier: ^2.0.22 - version: 2.0.22 - oclif: - specifier: ^3 - version: 3.17.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(encoding@0.1.13)(mem-fs@2.3.0)(typescript@5.5.2) - rimraf: - specifier: ^5.0.5 - version: 5.0.5 - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - shx: - specifier: ^0.3.3 - version: 0.3.4 - start-server-and-test: - specifier: ^2.0.3 - version: 2.0.3 - ts-jest: - specifier: ^29.1.2 - version: 29.2.5(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2) - ts-node: - specifier: ^10.7.0 - version: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - tsc-watch: - specifier: ^6.0.4 - version: 6.0.4(typescript@5.5.2) - typescript: - specifier: ^5.4.5 - version: 5.5.2 - - packages/ui: - dependencies: - '@auth0/auth0-react': - specifier: ^2.2.4 - version: 2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@codemirror/lang-javascript': - specifier: ^6.2.1 - version: 6.2.2 - '@codemirror/lang-json': - specifier: ^6.0.1 - version: 6.0.1 - '@codemirror/view': - specifier: ^6.22.3 - version: 6.25.1 - '@emotion/cache': - specifier: ^11.4.0 - version: 11.11.0 - '@emotion/react': - specifier: ^11.10.6 - version: 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.6 - version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/base': - specifier: 5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/icons-material': - specifier: 5.0.3 - version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/lab': - specifier: 5.0.0-alpha.156 - version: 5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/material': - specifier: 5.15.0 - version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/x-data-grid': - specifier: 6.8.0 - version: 6.8.0(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tabler/icons-react': - specifier: ^3.3.0 - version: 3.3.0(react@18.2.0) - '@uiw/codemirror-theme-sublime': - specifier: ^4.21.21 - version: 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) - '@uiw/codemirror-theme-vscode': - specifier: ^4.21.21 - version: 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) - '@uiw/react-codemirror': - specifier: ^4.21.21 - version: 4.21.24(@babel/runtime@7.24.0)(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.25.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aai-embed: - specifier: workspace:* - version: link:../embed - aai-embed-react: - specifier: workspace:* - version: link:../embed-react - axios: - specifier: 1.6.2 - version: 1.6.2(debug@4.3.4) - clsx: - specifier: ^1.1.1 - version: 1.2.1 - dotenv: - specifier: ^16.0.0 - version: 16.4.5 - flagsmith: - specifier: ^4.0.3 - version: 4.0.3 - flowise-react-json-view: - specifier: '*' - version: 1.21.7(@types/react@18.2.65)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - formik: - specifier: ^2.2.6 - version: 2.4.5(react@18.2.0) - framer-motion: - specifier: ^4.1.13 - version: 4.1.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - history: - specifier: ^5.0.0 - version: 5.3.0 - html-react-parser: - specifier: ^3.0.4 - version: 3.0.16(react@18.2.0) - lodash: - specifier: ^4.17.21 - version: 4.17.21 - moment: - specifier: ^2.29.3 - version: 2.30.1 - next: - specifier: ^14.2.5 - version: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - notistack: - specifier: ^2.0.4 - version: 2.0.8(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - prop-types: - specifier: ^15.7.2 - version: 15.8.1 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-code-blocks: - specifier: ^0.0.9-0 - version: 0.0.9-0(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) - react-color: - specifier: ^2.19.3 - version: 2.19.3(react@18.2.0) - react-datepicker: - specifier: ^4.21.0 - version: 4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-device-detect: - specifier: ^1.17.0 - version: 1.17.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-markdown: - specifier: ^8.0.6 - version: 8.0.7(@types/react@18.2.65)(react@18.2.0) - react-perfect-scrollbar: - specifier: ^1.5.8 - version: 1.5.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-redux: - specifier: ^8.0.5 - version: 8.1.3(@types/react-dom@18.2.21)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) - react-router: - specifier: ~6.3.0 - version: 6.3.0(react@18.2.0) - react-router-dom: - specifier: ~6.3.0 - version: 6.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-syntax-highlighter: - specifier: ^15.5.0 - version: 15.5.0(react@18.2.0) - reactflow: - specifier: ^11.5.6 - version: 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - redux: - specifier: ^4.0.5 - version: 4.2.1 - rehype-mathjax: - specifier: ^4.0.2 - version: 4.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - rehype-raw: - specifier: ^7.0.0 - version: 7.0.0 - remark-gfm: - specifier: ^3.0.1 - version: 3.0.1 - remark-math: - specifier: ^5.1.1 - version: 5.1.1 - socket.io-client: - specifier: ^4.6.1 - version: 4.7.4(bufferutil@4.0.8) - swr: - specifier: ^2.2.0 - version: 2.2.0(react@18.2.0) - tinycolor2: - specifier: ^1.6.0 - version: 1.6.0 - uuid: - specifier: ^9.0.1 - version: 9.0.1 - yup: - specifier: ^0.32.9 - version: 0.32.11 - devDependencies: - '@babel/eslint-parser': - specifier: ^7.15.8 - version: 7.23.10(@babel/core@7.24.0)(eslint@8.57.0) - '@babel/plugin-proposal-private-property-in-object': - specifier: ^7.21.11 - version: 7.21.11(@babel/core@7.24.0) - '@testing-library/jest-dom': - specifier: ^5.11.10 - version: 5.17.0 - '@testing-library/react': - specifier: ^14.0.0 - version: 14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@testing-library/user-event': - specifier: ^12.8.3 - version: 12.8.3(@testing-library/dom@9.3.4) - '@vitejs/plugin-react': - specifier: ^4.2.0 - version: 4.2.1(vite@5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1)) - pretty-quick: - specifier: ^3.1.3 - version: 3.3.1(prettier@3.2.5) - react-scripts: - specifier: ^5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2))(type-fest@4.12.0)(typescript@5.5.2) - rimraf: - specifier: ^5.0.5 - version: 5.0.5 - sass: - specifier: ^1.42.1 - version: 1.71.1 - typescript: - specifier: ^5.4.5 - version: 5.5.2 - vite: - specifier: ^5.0.2 - version: 5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1) - vite-plugin-pwa: - specifier: ^0.17.0 - version: 0.17.5(vite@5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) - vite-plugin-react-js-support: - specifier: ^1.0.7 - version: 1.0.7 + + .: + dependencies: + wait-on: + specifier: ^7.0.1 + version: 7.2.0(debug@4.3.4) + devDependencies: + '@babel/preset-env': + specifier: ^7.19.4 + version: 7.24.0(@babel/core@7.26.9) + '@babel/preset-typescript': + specifier: 7.18.6 + version: 7.18.6(@babel/core@7.26.9) + '@cypress/react18': + specifier: ^2.0.0 + version: 2.0.1(@types/react-dom@18.2.21)(@types/react@18.2.65)(cypress@12.17.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/express': + specifier: ^4.17.13 + version: 4.17.21 + '@typescript-eslint/typescript-estree': + specifier: ^7.13.1 + version: 7.13.1(typescript@5.5.2) + cypress: + specifier: ^12.17.1 + version: 12.17.4 + dotenv-cli: + specifier: latest + version: 8.0.0 + eslint: + specifier: ^8.24.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^8.3.0 + version: 8.10.0(eslint@8.57.0) + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.0)(typescript@5.5.2) + eslint-plugin-jsx-a11y: + specifier: ^6.6.1 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-markdown: + specifier: ^3.0.0 + version: 3.0.1(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^3.4.0 + version: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + eslint-plugin-react: + specifier: ^7.26.1 + version: 7.34.0(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.57.0) + eslint-plugin-unused-imports: + specifier: ^2.0.0 + version: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0) + husky: + specifier: ^8.0.1 + version: 8.0.3 + kill-port: + specifier: ^2.0.1 + version: 2.0.1 + lint-staged: + specifier: ^13.0.3 + version: 13.3.0(enquirer@2.4.1) + prettier: + specifier: ^2.7.1 + version: 2.8.8 + pretty-quick: + specifier: ^3.1.3 + version: 3.3.1(prettier@2.8.8) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + turbo: + specifier: 1.10.16 + version: 1.10.16 + typescript: + specifier: ^5.4.5 + version: 5.5.2 + + apps/web: + dependencies: + '@auth0/auth0-react': + specifier: 2.3.0 + version: 2.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@auth0/nextjs-auth0': + specifier: 3.5.0 + version: 3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) + '@aws-sdk/client-s3': + specifier: ^3.374.0 + version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/s3-request-presigner': + specifier: ^3.374.0 + version: 3.629.0 + '@aws-sdk/signature-v4-crt': + specifier: ^3.357.0 + version: 3.629.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@dqbd/tiktoken': + specifier: ^1.0.6 + version: 1.0.13 + '@emotion/cache': + specifier: ^11.4.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.10.6 + version: 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@huggingface/inference': + specifier: ^1.8.0 + version: 1.8.0 + '@mui/icons-material': + specifier: 5.0.3 + version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/material': + specifier: 5.15.0 + version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@pinecone-database/pinecone': + specifier: ^0.0.5 + version: 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) + '@sentry/nextjs': + specifier: ^7.108.0 + version: 7.118.0(encoding@0.1.13)(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react@18.2.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@sentry/node': + specifier: ^7.108.0 + version: 7.118.0 + '@svgr/webpack': + specifier: ^8.1.0 + version: 8.1.0(typescript@4.9.5) + '@textea/json-viewer': + specifier: 2.14.1 + version: 2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aai-embed: + specifier: workspace:* + version: link:../../packages/embed + add: + specifier: ^2.0.6 + version: 2.0.6 + aws-crt: + specifier: ^1.15.22 + version: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + chromadb: + specifier: ^1.5.5 + version: 1.8.1(@google/generative-ai@0.22.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: + specifier: ^6.2.2 + version: 6.2.2 + cors: + specifier: ^2.8.5 + version: 2.8.5 + db: + specifier: workspace:* + version: link:../../packages-answers/db + encoding: + specifier: ^0.1.13 + version: 0.1.13 + experimental-prisma-webpack-plugin: + specifier: workspace:* + version: link:../../packages-answers/experimental-prisma-webpack-plugin + flagsmith: + specifier: ^4.0.3 + version: 4.0.3 + flowise-ui: + specifier: workspace:* + version: link:../../packages/ui + handlebars: + specifier: ^4.7.7 + version: 4.7.8 + inngest: + specifier: ^1.8.0 + version: 1.10.1(encoding@0.1.13)(typescript@4.9.5) + ioredis: + specifier: ^5.3.2 + version: 5.3.2 + jose: + specifier: ^5.2.3 + version: 5.6.3 + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + langchain: + specifier: ^0.0.116 + version: 0.0.116(5dn44eiqldwg2hwusf4ivyprcq) + next: + specifier: ^14.2.5 + version: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + next-auth: + specifier: ^4.22.3 + version: 4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + openai: + specifier: 4.82.0 + version: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-hook-form: + specifier: ^7.45.2 + version: 7.52.2(react@18.2.0) + serpapi: + specifier: ^1.1.1 + version: 1.1.1 + stripe: + specifier: ^12.17.0 + version: 12.18.0 + typeorm: + specifier: ^0.3.17 + version: 0.3.20(ioredis@5.3.2)(mysql2@3.13.0)(pg@8.13.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + ui: + specifier: workspace:* + version: link:../../packages-answers/ui + utils: + specifier: workspace:* + version: link:../../packages-answers/utils + uuid: + specifier: ^9.0.0 + version: 9.0.1 + devDependencies: + '@babel/core': + specifier: ^7.21.4 + version: 7.24.0 + '@next/bundle-analyzer': + specifier: ^13.4.12 + version: 13.5.6(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@prisma/nextjs-monorepo-workaround-plugin': + specifier: ^5.0.0 + version: 5.18.0 + '@types/cors': + specifier: ^2.8.13 + version: 2.8.17 + '@types/js-cookie': + specifier: ^3.0.3 + version: 3.0.6 + '@types/node': + specifier: ^18.15.11 + version: 18.15.11 + '@types/react': + specifier: ^18.2.15 + version: 18.2.65 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.21 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.8 + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + eslint: + specifier: 7.32.0 + version: 7.32.0 + eslint-config-custom: + specifier: workspace:* + version: link:../../packages-answers/eslint-config-custom + file-loader: + specifier: ^6.2.0 + version: 6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + terser-webpack-plugin: + specifier: ^5.3.9 + version: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + ts-loader: + specifier: ^9.4.4 + version: 9.5.1(typescript@4.9.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + tsconfig: + specifier: workspace:* + version: link:../../packages-answers/tsconfig + types: + specifier: workspace:* + version: link:../../packages-answers/types + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.88.2 + version: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack@5.90.3) + webpack-node-externals: + specifier: ^3.0.0 + version: 3.0.0 + + packages-answers/db: + dependencies: + '@prisma/client': + specifier: ^5.10.2 + version: 5.18.0(prisma@5.18.0) + prisma-json-types-generator: + specifier: ^3.0.4 + version: 3.0.4(prisma@5.18.0)(typescript@4.9.5) + devDependencies: + '@types/jest': + specifier: ^29.5.0 + version: 29.5.12 + '@types/node': + specifier: ^18.15.11 + version: 18.15.11 + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + jest: + specifier: ^29.5.0 + version: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + prisma: + specifier: ^5.10.2 + version: 5.18.0 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: ^4.8.4 + version: 4.9.5 + + packages-answers/eslint-config-custom: + dependencies: + eslint: + specifier: ^7.23.0 + version: 7.32.0 + eslint-config-next: + specifier: ^13.4.12 + version: 13.5.6(eslint@7.32.0)(typescript@4.9.5) + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.10.0(eslint@7.32.0) + eslint-config-turbo: + specifier: ^1.10.10 + version: 1.13.4(eslint@7.32.0) + eslint-plugin-react: + specifier: ^7.33.0 + version: 7.34.0(eslint@7.32.0) + devDependencies: + typescript: + specifier: ^4.8.4 + version: 4.9.5 + + packages-answers/experimental-prisma-webpack-plugin: + devDependencies: + webpack: + specifier: ^5.88.2 + version: 5.90.3 + + packages-answers/tsconfig: {} + + packages-answers/types: + devDependencies: + '@algolia/client-search': + specifier: ^4.19.1 + version: 4.24.0 + '@types/node': + specifier: ^18.15.11 + version: 18.15.11 + db: + specifier: workspace:* + version: link:../db + openai: + specifier: 4.82.0 + version: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: ^4.8.4 + version: 4.9.5 + + packages-answers/ui: + dependencies: + '@auth0/auth0-react': + specifier: 2.3.0 + version: 2.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@auth0/nextjs-auth0': + specifier: 3.5.0 + version: 3.5.0(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) + '@emotion/cache': + specifier: ^11.4.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.10.6 + version: 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@hookform/error-message': + specifier: ^2.0.1 + version: 2.0.1(react-dom@18.2.0(react@18.2.0))(react-hook-form@7.52.2(react@18.2.0))(react@18.2.0) + '@monaco-editor/react': + specifier: ^4.5.1 + version: 4.6.0(monaco-editor@0.50.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/icons-material': + specifier: 5.0.3 + version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/lab': + specifier: 5.0.0-alpha.156 + version: 5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/material': + specifier: 5.15.0 + version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/utils': + specifier: 5.15.0 + version: 5.15.0(@types/react@18.2.65)(react@18.2.0) + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@5.18.0(prisma@5.18.0))(next-auth@4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@sentry/browser': + specifier: ^7.60.0 + version: 7.118.0 + '@textea/json-viewer': + specifier: 2.14.1 + version: 2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/cors': + specifier: ^2.8.13 + version: 2.8.17 + '@types/js-cookie': + specifier: ^3.0.3 + version: 3.0.6 + '@types/react-window': + specifier: ^1.8.5 + version: 1.8.8 + aai-embed-react: + specifier: ~1.0.8 + version: 1.0.8(@types/node@22.13.9)(aai-embed@packages+embed)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5) + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + clsx: + specifier: ^1.2.1 + version: 1.2.1 + cors: + specifier: ^2.8.5 + version: 2.8.5 + encoding: + specifier: ^0.1.13 + version: 0.1.13 + flagsmith: + specifier: ^4.0.3 + version: 4.0.3 + framer-motion: + specifier: ^10.13.0 + version: 10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + fuse.js: + specifier: ^7.0.0 + version: 7.0.0 + handlebars: + specifier: ^4.7.7 + version: 4.7.8 + jose: + specifier: ^5.2.3 + version: 5.6.3 + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + next: + specifier: ^14.2.5 + version: 14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + next-auth: + specifier: ^4.22.3 + version: 4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-draggable: + specifier: ^4.4.5 + version: 4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-hook-form: + specifier: ^7.45.2 + version: 7.52.2(react@18.2.0) + react-markdown: + specifier: ^8.0.7 + version: 8.0.7(@types/react@18.2.65)(react@18.2.0) + react-syntax-highlighter: + specifier: ^15.5.0 + version: 15.5.0(react@18.2.0) + react-window: + specifier: ^1.8.9 + version: 1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + remark-gfm: + specifier: ^3.0.1 + version: 3.0.1 + stripe: + specifier: ^12.17.0 + version: 12.18.0 + swr: + specifier: ^2.2.0 + version: 2.2.0(react@18.2.0) + types: + specifier: workspace:* + version: link:../types + utils: + specifier: workspace:* + version: link:../utils + devDependencies: + '@types/chrome': + specifier: ^0.0.232 + version: 0.0.232 + '@types/react': + specifier: ^18.2.15 + version: 18.2.65 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.21 + '@types/react-syntax-highlighter': + specifier: ^15.5.6 + version: 15.5.13 + db: + specifier: workspace:* + version: link:../db + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + tsconfig: + specifier: workspace:* + version: link:../tsconfig + tsup: + specifier: ^6.2.3 + version: 6.7.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5))(typescript@4.9.5) + typescript: + specifier: ^4.8.4 + version: 4.9.5 + + packages-answers/utils: + dependencies: + '@algolia/client-search': + specifier: ^4.19.1 + version: 4.24.0 + '@auth0/auth0-react': + specifier: 2.3.0 + version: 2.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@auth0/nextjs-auth0': + specifier: 3.5.0 + version: 3.5.0(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) + '@aws-sdk/client-s3': + specifier: ^3.374.0 + version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@contentful/app-sdk': + specifier: ^4.22.1 + version: 4.29.0 + '@contentful/rich-text-from-markdown': + specifier: ^15.16.3 + version: 15.18.8 + '@dqbd/tiktoken': + specifier: ^1.0.6 + version: 1.0.13 + '@pinecone-database/pinecone': + specifier: ^0.0.5 + version: 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) + '@slack/web-api': + specifier: ^6.8.1 + version: 6.12.0 + airtable: + specifier: ^0.11.6 + version: 0.11.6(encoding@0.1.13) + algoliasearch: + specifier: ^4.19.1 + version: 4.24.0 + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + bufferutil: + specifier: ^4.0.8 + version: 4.0.8 + cheerio: + specifier: ^1.0.0-rc.12 + version: 1.0.0-rc.12 + contentful-management: + specifier: ^10.39.1 + version: 10.46.4 + csv: + specifier: ^6.3.1 + version: 6.3.10 + csv-parser: + specifier: ^3.0.0 + version: 3.0.0 + csv-stringify: + specifier: ^6.4.0 + version: 6.5.1 + dataloader: + specifier: ^2.2.2 + version: 2.2.2 + db: + specifier: workspace:* + version: link:../db + dotenv: + specifier: ^16.3.1 + version: 16.4.5 + eventsource-parser: + specifier: ^1.0.0 + version: 1.1.2 + gpt-3-encoder: + specifier: ^1.1.4 + version: 1.1.4 + gpt-tokens: + specifier: ^1.3.3 + version: 1.3.8 + gpt3-tokenizer: + specifier: ^1.1.5 + version: 1.1.5 + handlebars: + specifier: ^4.7.7 + version: 4.7.8 + import-fresh: + specifier: ^3.3.0 + version: 3.3.0 + inngest: + specifier: ^1.8.0 + version: 1.10.1(encoding@0.1.13)(typescript@4.9.5) + ioredis: + specifier: ^5.3.2 + version: 5.3.2 + jira.js: + specifier: ^2.17.0 + version: 2.20.1 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + jsdom: + specifier: ^22.1.0 + version: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) + langchain: + specifier: ^0.0.116 + version: 0.0.116(ka7k7qt46crpouvsnraaloshyy) + mammoth: + specifier: ^1.6.0 + version: 1.7.2 + natural: + specifier: ^6.2.0 + version: 6.12.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + next-auth: + specifier: ^4.22.3 + version: 4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + node-fetch: + specifier: ^3.3.1 + version: 3.3.2 + node-html-markdown: + specifier: ^1.3.0 + version: 1.3.0 + openai: + specifier: 4.82.0 + version: 4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2) + openapi-typescript: + specifier: ^6.3.7 + version: 6.7.6 + pdfjs-dist: + specifier: ^3.8.162 + version: 3.11.174(encoding@0.1.13) + puppeteer: + specifier: ^19.11.1 + version: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + readline: + specifier: ^1.3.0 + version: 1.3.0 + request: + specifier: ^2.88.2 + version: 2.88.2 + sitemapper: + specifier: ^3.2.6 + version: 3.2.9 + socket.io-client: + specifier: ^4.7.5 + version: 4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) + stripe: + specifier: ^12.17.0 + version: 12.18.0 + swagger2openapi: + specifier: ^7.0.8 + version: 7.0.8(encoding@0.1.13) + utf-8-validate: + specifier: ^6.0.3 + version: 6.0.4 + uuid: + specifier: ^9.0.0 + version: 9.0.1 + ws: + specifier: ^8.16.0 + version: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + yaml: + specifier: ^2.2.1 + version: 2.4.1 + devDependencies: + '@types/jest': + specifier: ^29.5.0 + version: 29.5.12 + '@types/jsdom': + specifier: ^21.1.1 + version: 21.1.6 + '@types/node': + specifier: ^18.15.11 + version: 18.15.11 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.21 + '@types/swagger2openapi': + specifier: ^7.0.0 + version: 7.0.4 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.8 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + jest: + specifier: ^29.5.0 + version: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + openapi-types: + specifier: ^12.1.3 + version: 12.1.3 + tsconfig: + specifier: workspace:* + version: link:../tsconfig + types: + specifier: workspace:* + version: link:../types + typescript: + specifier: ^4.8.4 + version: 4.9.5 + + packages/api-documentation: + dependencies: + swagger-jsdoc: + specifier: ^6.2.8 + version: 6.2.8(openapi-types@12.1.3) + swagger-ui-express: + specifier: ^5.0.0 + version: 5.0.1(express@5.0.1) + devDependencies: + '@types/swagger-jsdoc': + specifier: ^6.0.1 + version: 6.0.4 + '@types/swagger-ui-express': + specifier: ^4.1.3 + version: 4.1.8 + tsc-watch: + specifier: ^6.0.4 + version: 6.0.4(typescript@5.5.2) + + packages/components: + dependencies: + '@apidevtools/json-schema-ref-parser': + specifier: ^11.7.0 + version: 11.9.3 + '@arizeai/openinference-instrumentation-langchain': + specifier: ^2.0.0 + version: 2.0.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@aws-sdk/client-bedrock-runtime': + specifier: 3.422.0 + version: 3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-dynamodb': + specifier: ^3.360.0 + version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-s3': + specifier: ^3.427.0 + version: 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-secrets-manager': + specifier: ^3.699.0 + version: 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@contentful/rich-text-plain-text-renderer': + specifier: ^16.0.7 + version: 16.2.8 + '@contentful/rich-text-types': + specifier: ^16.5.2 + version: 16.8.3 + '@datastax/astra-db-ts': + specifier: 1.5.0 + version: 1.5.0 + '@dqbd/tiktoken': + specifier: ^1.0.7 + version: 1.0.13 + '@e2b/code-interpreter': + specifier: ^0.0.5 + version: 0.0.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@elastic/elasticsearch': + specifier: ^8.9.0 + version: 8.12.2 + '@flowiseai/nodevm': + specifier: ^3.9.25 + version: 3.9.25 + '@getzep/zep-cloud': + specifier: ~1.0.7 + version: 1.0.7(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u)) + '@getzep/zep-js': + specifier: ^0.9.0 + version: 0.9.0 + '@gomomento/sdk': + specifier: ^1.51.1 + version: 1.68.1(encoding@0.1.13) + '@gomomento/sdk-core': + specifier: ^1.51.1 + version: 1.68.1 + '@google-ai/generativelanguage': + specifier: ^2.5.0 + version: 2.6.0(encoding@0.1.13) + '@google/generative-ai': + specifier: ^0.22.0 + version: 0.22.0 + '@huggingface/inference': + specifier: ^2.6.1 + version: 2.6.4 + '@langchain/anthropic': + specifier: 0.3.14 + version: 0.3.14(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13) + '@langchain/aws': + specifier: 0.1.4 + version: 0.1.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/baidu-qianfan': + specifier: ^0.1.0 + version: 0.1.0(@babel/core@7.26.9)(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/cohere': + specifier: ^0.0.7 + version: 0.0.7(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/community': + specifier: ^0.3.34 + version: 0.3.34(bdtjpertst2vaqrg7c7dviav3q) + '@langchain/core': + specifier: 0.3.37 + version: 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/exa': + specifier: ^0.0.5 + version: 0.0.5(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/google-genai': + specifier: 0.1.9 + version: 0.1.9(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(zod@3.22.4) + '@langchain/google-vertexai': + specifier: ^0.2.0 + version: 0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(zod@3.22.4) + '@langchain/groq': + specifier: 0.1.2 + version: 0.1.2(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/langgraph': + specifier: ^0.0.22 + version: 0.0.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/mistralai': + specifier: ^0.2.0 + version: 0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/mongodb': + specifier: ^0.0.1 + version: 0.0.1(gcp-metadata@5.3.0(encoding@0.1.13))(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(socks@2.8.1) + '@langchain/ollama': + specifier: 0.2.0 + version: 0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/openai': + specifier: 0.4.4 + version: 0.4.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/pinecone': + specifier: ^0.1.3 + version: 0.1.3(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/qdrant': + specifier: ^0.0.5 + version: 0.0.5(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(typescript@5.5.2) + '@langchain/weaviate': + specifier: ^0.0.1 + version: 0.0.1(encoding@0.1.13)(graphql@16.8.1)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/xai': + specifier: ^0.0.1 + version: 0.0.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@mendable/firecrawl-js': + specifier: ^0.0.28 + version: 0.0.28 + '@mistralai/mistralai': + specifier: 0.1.3 + version: 0.1.3(encoding@0.1.13) + '@modelcontextprotocol/sdk': + specifier: ^1.6.1 + version: 1.6.1 + '@modelcontextprotocol/server-brave-search': + specifier: ^0.6.2 + version: 0.6.2 + '@modelcontextprotocol/server-github': + specifier: ^2025.1.23 + version: 2025.1.23 + '@modelcontextprotocol/server-postgres': + specifier: ^0.6.2 + version: 0.6.2 + '@modelcontextprotocol/server-slack': + specifier: ^2025.1.17 + version: 2025.1.17 + '@notionhq/client': + specifier: ^2.2.8 + version: 2.2.14(encoding@0.1.13) + '@opensearch-project/opensearch': + specifier: ^1.2.0 + version: 1.2.0 + '@pinecone-database/pinecone': + specifier: 4.0.0 + version: 4.0.0 + '@qdrant/js-client-rest': + specifier: ^1.9.0 + version: 1.9.0(typescript@5.5.2) + '@stripe/agent-toolkit': + specifier: ^0.1.20 + version: 0.1.21(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(ai@3.2.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4)) + '@supabase/supabase-js': + specifier: ^2.29.0 + version: 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@types/js-yaml': + specifier: ^4.0.5 + version: 4.0.9 + '@types/jsdom': + specifier: ^21.1.1 + version: 21.1.6 + '@upstash/redis': + specifier: 1.22.1 + version: 1.22.1(encoding@0.1.13) + '@upstash/vector': + specifier: 1.1.5 + version: 1.1.5 + '@zilliz/milvus2-sdk-node': + specifier: ^2.2.24 + version: 2.3.5 + apify-client: + specifier: ^2.7.1 + version: 2.9.3 + assemblyai: + specifier: ^4.2.2 + version: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + cheerio: + specifier: ^1.0.0-rc.12 + version: 1.0.0-rc.12 + chromadb: + specifier: ^1.10.0 + version: 1.10.5(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.14)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: + specifier: ^7.7.5 + version: 7.10.0(encoding@0.1.13) + composio-core: + specifier: ^0.4.7 + version: 0.4.8 + contentful: + specifier: ^10.6.14 + version: 10.13.2 + contentful-management: + specifier: ^11.7.3 + version: 11.31.1 + couchbase: + specifier: 4.4.1 + version: 4.4.1 + crypto-js: + specifier: ^4.1.1 + version: 4.2.0 + css-what: + specifier: ^6.1.0 + version: 6.1.0 + d3-dsv: + specifier: '2' + version: 2.0.0 + dotenv: + specifier: ^16.0.0 + version: 16.4.5 + epub2: + specifier: ^3.0.2 + version: 3.0.2(ts-toolbelt@9.6.0) + exa-js: + specifier: ^1.0.12 + version: 1.0.12(encoding@0.1.13) + express: + specifier: ^4.17.3 + version: 4.18.3 + faiss-node: + specifier: ^0.5.1 + version: 0.5.1 + fast-json-patch: + specifier: ^3.1.1 + version: 3.1.1 + form-data: + specifier: ^4.0.0 + version: 4.0.0 + google-auth-library: + specifier: ^9.4.0 + version: 9.6.3(encoding@0.1.13) + graphql: + specifier: ^16.6.0 + version: 16.8.1 + html-to-text: + specifier: ^9.0.5 + version: 9.0.5 + ioredis: + specifier: ^5.3.2 + version: 5.3.2 + jsdom: + specifier: ^22.1.0 + version: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) + jsonpointer: + specifier: ^5.0.1 + version: 5.0.1 + jsonrepair: + specifier: ^3.11.1 + version: 3.12.0 + langchain: + specifier: ^0.3.5 + version: 0.3.19(nvjv7vdhktnobjkcg4sxcelb3u) + langfuse: + specifier: 3.3.4 + version: 3.3.4 + langfuse-langchain: + specifier: ^3.3.4 + version: 3.32.0(langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u)) + langsmith: + specifier: 0.1.6 + version: 0.1.6 + langwatch: + specifier: ^0.1.1 + version: 0.1.1(encoding@0.1.13)(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + linkifyjs: + specifier: ^4.1.1 + version: 4.1.3 + llamaindex: + specifier: ^0.3.13 + version: 0.3.13(@notionhq/client@2.2.14(encoding@0.1.13))(bufferutil@4.0.8)(encoding@0.1.13)(gcp-metadata@5.3.0(encoding@0.1.13))(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.1)(typescript@5.5.2)(utf-8-validate@6.0.4)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + lunary: + specifier: ^0.7.12 + version: 0.7.15(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0) + mammoth: + specifier: ^1.5.1 + version: 1.7.0 + meilisearch: + specifier: ^0.41.0 + version: 0.41.0(encoding@0.1.13) + moment: + specifier: ^2.29.3 + version: 2.30.1 + mongodb: + specifier: 6.3.0 + version: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + mysql2: + specifier: ^3.11.3 + version: 3.13.0 + neo4j-driver: + specifier: ^5.26.0 + version: 5.28.1 + node-fetch: + specifier: ^2.6.11 + version: 2.7.0(encoding@0.1.13) + node-html-markdown: + specifier: ^1.3.0 + version: 1.3.0 + notion-to-md: + specifier: ^3.1.1 + version: 3.1.1(encoding@0.1.13) + object-hash: + specifier: ^3.0.0 + version: 3.0.0 + ollama: + specifier: ^0.5.11 + version: 0.5.14 + openai: + specifier: 4.82.0 + version: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + papaparse: + specifier: ^5.4.1 + version: 5.4.1 + pdf-parse: + specifier: ^1.1.1 + version: 1.1.1 + pdfjs-dist: + specifier: ^3.7.107 + version: 3.11.174(encoding@0.1.13) + pg: + specifier: ^8.11.2 + version: 8.11.3 + playwright: + specifier: ^1.35.0 + version: 1.42.1 + puppeteer: + specifier: ^20.7.1 + version: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) + pyodide: + specifier: '>=0.21.0-alpha.2' + version: 0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + redis: + specifier: ^4.6.7 + version: 4.6.13 + replicate: + specifier: ^0.31.1 + version: 0.31.1 + sanitize-filename: + specifier: ^1.6.3 + version: 1.6.3 + srt-parser-2: + specifier: ^1.2.3 + version: 1.2.3 + typeorm: + specifier: ^0.3.6 + version: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + weaviate-ts-client: + specifier: ^1.1.0 + version: 1.6.0(encoding@0.1.13)(graphql@16.8.1) + winston: + specifier: ^3.9.0 + version: 3.12.0 + ws: + specifier: ^8.18.0 + version: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + youtube-transcript: + specifier: ^1.1.0 + version: 1.2.1 + zod: + specifier: 3.22.4 + version: 3.22.4 + zod-to-json-schema: + specifier: ^3.21.4 + version: 3.22.4(zod@3.22.4) + devDependencies: + '@swc/core': + specifier: ^1.3.99 + version: 1.4.6(@swc/helpers@0.5.5) + '@types/crypto-js': + specifier: ^4.1.1 + version: 4.2.2 + '@types/gulp': + specifier: 4.0.9 + version: 4.0.9 + '@types/lodash': + specifier: ^4.14.202 + version: 4.14.202 + '@types/node-fetch': + specifier: 2.6.2 + version: 2.6.2 + '@types/object-hash': + specifier: ^3.0.2 + version: 3.0.6 + '@types/papaparse': + specifier: ^5.3.15 + version: 5.3.15 + '@types/pg': + specifier: ^8.10.2 + version: 8.11.2 + '@types/ws': + specifier: ^8.5.3 + version: 8.5.10 + babel-register: + specifier: ^6.26.0 + version: 6.26.0 + gulp: + specifier: ^4.0.2 + version: 4.0.2 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + tsc-watch: + specifier: ^6.0.4 + version: 6.0.4(typescript@5.5.2) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + typescript: + specifier: ^5.4.5 + version: 5.5.2 + + packages/docs: + dependencies: + '@docusaurus/core': + specifier: 3.5.2 + version: 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/preset-classic': + specifier: 3.5.2 + version: 3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2) + '@mdx-js/react': + specifier: ^3.0.0 + version: 3.0.1(@types/react@18.2.65)(react@18.2.0) + aai-embed: + specifier: workspace:* + version: link:../embed + aai-embed-react: + specifier: workspace:* + version: link:../embed-react + clsx: + specifier: ^2.0.0 + version: 2.1.0 + prism-react-renderer: + specifier: ^2.3.0 + version: 2.4.0(react@18.2.0) + react: + specifier: ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^18.0.0 + version: 18.2.0(react@18.2.0) + troika-three-text: + specifier: ^0.49.1 + version: 0.49.1(three@0.168.0) + devDependencies: + '@docusaurus/module-type-aliases': + specifier: 3.5.2 + version: 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/tsconfig': + specifier: 3.5.2 + version: 3.5.2 + '@docusaurus/types': + specifier: 3.5.2 + version: 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + typescript: + specifier: ~5.5.2 + version: 5.5.2 + + packages/embed: + dependencies: + '@babel/core': + specifier: ^7.22.1 + version: 7.26.9 + '@microsoft/fetch-event-source': + specifier: ^2.0.1 + version: 2.0.1 + '@ts-stack/markdown': + specifier: ^1.4.0 + version: 1.5.0 + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + cors: + specifier: ^2.8.5 + version: 2.8.5 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + device-detector-js: + specifier: ^3.0.3 + version: 3.0.3 + dotenv: + specifier: ^16.4.5 + version: 16.4.7 + express: + specifier: ^4.21.1 + version: 4.21.2 + form-data: + specifier: ^4.0.1 + version: 4.0.2 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + multer: + specifier: ^1.4.5-lts.1 + version: 1.4.5-lts.1 + node-fetch: + specifier: ^3.3.2 + version: 3.3.2 + prettier: + specifier: ^3.1.0 + version: 3.5.3 + solid-element: + specifier: 1.7.0 + version: 1.7.0(solid-js@1.7.1) + solid-js: + specifier: 1.7.1 + version: 1.7.1 + zod: + specifier: ^3.22.4 + version: 3.24.2 + devDependencies: + '@babel/preset-typescript': + specifier: 7.21.4 + version: 7.21.4(@babel/core@7.26.9) + '@rollup/plugin-babel': + specifier: 6.0.3 + version: 6.0.3(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.23.0) + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.8(rollup@3.23.0) + '@rollup/plugin-json': + specifier: ^6.1.0 + version: 6.1.0(rollup@3.23.0) + '@rollup/plugin-node-resolve': + specifier: 15.0.1 + version: 15.0.1(rollup@3.23.0) + '@rollup/plugin-terser': + specifier: 0.4.0 + version: 0.4.0(rollup@3.23.0) + '@rollup/plugin-typescript': + specifier: 11.0.0 + version: 11.0.0(rollup@3.23.0)(tslib@2.6.2)(typescript@5.0.3) + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.16(tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3))) + '@types/lodash': + specifier: ^4.14.195 + version: 4.17.16 + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/uuid': + specifier: ^8.3.4 + version: 8.3.4 + '@typescript-eslint/eslint-plugin': + specifier: ^5.57.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': + specifier: ^5.57.0 + version: 5.62.0(eslint@8.37.0)(typescript@5.0.3) + autoprefixer: + specifier: 10.4.14 + version: 10.4.14(postcss@8.4.21) + babel-plugin-lodash: + specifier: ^3.3.4 + version: 3.3.4 + babel-preset-solid: + specifier: 1.7.1 + version: 1.7.1(@babel/core@7.26.9) + eslint: + specifier: ^8.24.0 + version: 8.37.0 + eslint-config-next: + specifier: 13.2.4 + version: 13.2.4(eslint@8.37.0)(typescript@5.0.3) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.1.0(eslint@8.37.0) + eslint-plugin-prettier: + specifier: ^5.0.1 + version: 5.2.3(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.37.0))(eslint@8.37.0)(prettier@3.5.3) + eslint-plugin-react: + specifier: ^7.26.1 + version: 7.37.4(eslint@8.37.0) + eslint-plugin-solid: + specifier: 0.12.0 + version: 0.12.0(eslint@8.37.0)(typescript@5.0.3) + husky: + specifier: ^8.0.0 + version: 8.0.3 + postcss: + specifier: 8.4.21 + version: 8.4.21 + react: + specifier: 18.2.0 + version: 18.2.0 + rollup: + specifier: 3.23.0 + version: 3.23.0 + rollup-plugin-livereload: + specifier: 2.0.5 + version: 2.0.5(bufferutil@4.0.8) + rollup-plugin-postcss: + specifier: 4.0.2 + version: 4.0.2(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + rollup-plugin-serve: + specifier: 2.0.2 + version: 2.0.2 + rollup-plugin-typescript-paths: + specifier: 1.4.0 + version: 1.4.0(typescript@5.0.3) + rollup-plugin-uglify: + specifier: ^6.0.4 + version: 6.0.4(rollup@3.23.0) + tailwindcss: + specifier: 3.3.1 + version: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + typescript: + specifier: 5.0.3 + version: 5.0.3 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + + packages/embed-react: + dependencies: + '@ladle/react': + specifier: 2.5.1 + version: 2.5.1(@types/node@18.15.11)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(terser@5.29.1)(typescript@5.0.3) + devDependencies: + '@babel/preset-react': + specifier: 7.18.6 + version: 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': + specifier: 7.21.4 + version: 7.21.4(@babel/core@7.26.9) + '@rollup/plugin-babel': + specifier: 6.0.3 + version: 6.0.3(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.20.2) + '@rollup/plugin-node-resolve': + specifier: 15.0.1 + version: 15.0.1(rollup@3.20.2) + '@rollup/plugin-terser': + specifier: 0.4.0 + version: 0.4.0(rollup@3.20.2) + '@rollup/plugin-typescript': + specifier: 11.0.0 + version: 11.0.0(rollup@3.20.2)(tslib@2.5.0)(typescript@5.0.3) + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/react': + specifier: 18.0.32 + version: 18.0.32 + aai-embed: + specifier: workspace:* + version: link:../embed + eslint: + specifier: 8.37.0 + version: 8.37.0 + react: + specifier: 18.2.0 + version: 18.2.0 + rollup: + specifier: 3.20.2 + version: 3.20.2 + rollup-plugin-typescript-paths: + specifier: 1.4.0 + version: 1.4.0(typescript@5.0.3) + tslib: + specifier: 2.5.0 + version: 2.5.0 + tsx: + specifier: 3.12.6 + version: 3.12.6 + typescript: + specifier: 5.0.3 + version: 5.0.3 + + packages/server: + dependencies: + '@aws-sdk/client-secrets-manager': + specifier: ^3.699.0 + version: 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@contentful/rich-text-from-markdown': + specifier: ^15.16.15 + version: 15.18.8 + '@oclif/core': + specifier: 4.0.7 + version: 4.0.7 + '@opentelemetry/api': + specifier: ^1.3.0 + version: 1.9.0 + '@opentelemetry/auto-instrumentations-node': + specifier: ^0.52.0 + version: 0.52.1(@opentelemetry/api@1.9.0)(encoding@0.1.13) + '@opentelemetry/core': + specifier: 1.27.0 + version: 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-proto': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': + specifier: 0.54.0 + version: 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': + specifier: 1.27.0 + version: 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': + specifier: 1.27.0 + version: 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': + specifier: ^0.54.0 + version: 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': + specifier: 1.27.0 + version: 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': + specifier: 1.27.0 + version: 1.27.0 + '@types/lodash': + specifier: ^4.14.202 + version: 4.14.202 + '@types/pdf-parse': + specifier: ^1.1.4 + version: 1.1.4 + '@types/uuid': + specifier: ^9.0.7 + version: 9.0.8 + async-mutex: + specifier: ^0.4.0 + version: 0.4.1 + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + bull-board: + specifier: ^2.1.3 + version: 2.1.3 + bullmq: + specifier: ^5.13.2 + version: 5.41.7 + content-disposition: + specifier: 0.5.4 + version: 0.5.4 + contentful-management: + specifier: ^11.7.3 + version: 11.31.1 + cors: + specifier: ^2.8.5 + version: 2.8.5 + crypto-js: + specifier: ^4.1.1 + version: 4.2.0 + dotenv: + specifier: ^16.0.0 + version: 16.4.5 + express: + specifier: ^4.17.3 + version: 4.18.3 + express-basic-auth: + specifier: ^1.2.1 + version: 1.2.1 + express-oauth2-jwt-bearer: + specifier: ^1.6.0 + version: 1.6.0 + express-rate-limit: + specifier: ^6.9.0 + version: 6.11.2(express@4.18.3) + express-session: + specifier: ^1.18.1 + version: 1.18.1 + flowise-components: + specifier: workspace:* + version: link:../components + flowise-ui: + specifier: workspace:* + version: link:../ui + global-agent: + specifier: ^3.0.0 + version: 3.0.0 + google-auth-library: + specifier: ^9.4.0 + version: 9.6.3(encoding@0.1.13) + googleapis: + specifier: ^144.0.0 + version: 144.0.0(encoding@0.1.13) + http-errors: + specifier: ^2.0.0 + version: 2.0.0 + http-status-codes: + specifier: ^2.3.0 + version: 2.3.0 + langchainhub: + specifier: ^0.0.11 + version: 0.0.11 + langfuse: + specifier: 3.32.0 + version: 3.32.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + mammoth: + specifier: ^1.9.0 + version: 1.9.0 + moment: + specifier: ^2.29.3 + version: 2.30.1 + moment-timezone: + specifier: ^0.5.34 + version: 0.5.45 + multer: + specifier: ^1.4.5-lts.1 + version: 1.4.5-lts.1 + multer-s3: + specifier: ^3.0.1 + version: 3.0.1(@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))) + mysql2: + specifier: ^3.11.3 + version: 3.13.0 + nim-container-manager: + specifier: ^1.0.4 + version: 1.0.4 + openai: + specifier: 4.82.0 + version: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2) + passport: + specifier: ^0.7.0 + version: 0.7.0 + passport-google-oauth20: + specifier: ^2.0.0 + version: 2.0.0 + pg: + specifier: ^8.11.1 + version: 8.11.3 + posthog-node: + specifier: ^3.5.0 + version: 3.6.3 + prom-client: + specifier: ^15.1.3 + version: 15.1.3 + rate-limit-redis: + specifier: ^4.2.0 + version: 4.2.0(express-rate-limit@6.11.2(express@4.18.3)) + reflect-metadata: + specifier: ^0.1.13 + version: 0.1.14 + s3-streamlogger: + specifier: ^1.11.0 + version: 1.11.0(aws-crt@1.21.3(bufferutil@4.0.8)) + sanitize-html: + specifier: ^2.11.0 + version: 2.12.1 + socket.io: + specifier: ^4.6.1 + version: 4.7.4(bufferutil@4.0.8) + sqlite3: + specifier: ^5.1.6 + version: 5.1.7 + stripe: + specifier: ^17.6.0 + version: 17.6.0 + typeorm: + specifier: ^0.3.6 + version: 0.3.20(ioredis@5.6.0)(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + utils: + specifier: workspace:* + version: link:../../packages-answers/utils + uuid: + specifier: ^9.0.1 + version: 9.0.1 + winston: + specifier: ^3.9.0 + version: 3.12.0 + devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@jest/types': + specifier: ^29.6.3 + version: 29.6.3 + '@types/content-disposition': + specifier: 0.5.8 + version: 0.5.8 + '@types/cors': + specifier: ^2.8.12 + version: 2.8.17 + '@types/crypto-js': + specifier: ^4.1.1 + version: 4.2.2 + '@types/express-session': + specifier: ^1.18.1 + version: 1.18.1 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/multer': + specifier: ^1.4.7 + version: 1.4.11 + '@types/multer-s3': + specifier: ^3.0.3 + version: 3.0.3(aws-crt@1.21.3(bufferutil@4.0.8)) + '@types/passport': + specifier: ^1.0.17 + version: 1.0.17 + '@types/passport-google-oauth20': + specifier: ^2.0.16 + version: 2.0.16 + '@types/sanitize-html': + specifier: ^2.9.5 + version: 2.11.0 + concurrently: + specifier: ^7.1.0 + version: 7.6.0 + cypress: + specifier: ^13.13.0 + version: 13.13.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + nodemon: + specifier: ^2.0.22 + version: 2.0.22 + oclif: + specifier: ^3 + version: 3.17.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(encoding@0.1.13)(mem-fs@2.3.0)(typescript@5.5.2) + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + shx: + specifier: ^0.3.3 + version: 0.3.4 + start-server-and-test: + specifier: ^2.0.3 + version: 2.0.3 + ts-jest: + specifier: ^29.1.2 + version: 29.2.5(@babel/core@7.26.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.9))(jest@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.2) + ts-node: + specifier: ^10.7.0 + version: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + tsc-watch: + specifier: ^6.0.4 + version: 6.0.4(typescript@5.5.2) + typescript: + specifier: ^5.4.5 + version: 5.5.2 + + packages/ui: + dependencies: + '@auth0/auth0-react': + specifier: 2.3.0 + version: 2.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@auth0/nextjs-auth0': + specifier: 3.5.0 + version: 3.5.0(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)) + '@codemirror/lang-javascript': + specifier: ^6.2.1 + version: 6.2.2 + '@codemirror/lang-json': + specifier: ^6.0.1 + version: 6.0.1 + '@codemirror/view': + specifier: ^6.22.3 + version: 6.25.1 + '@emotion/cache': + specifier: ^11.4.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.10.6 + version: 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@microsoft/fetch-event-source': + specifier: ^2.0.1 + version: 2.0.1 + '@mui/base': + specifier: 5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/icons-material': + specifier: 5.0.3 + version: 5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/lab': + specifier: 5.0.0-alpha.156 + version: 5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/material': + specifier: 5.15.0 + version: 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/x-data-grid': + specifier: 6.8.0 + version: 6.8.0(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@tabler/icons-react': + specifier: ^3.3.0 + version: 3.3.0(react@18.2.0) + '@uiw/codemirror-theme-sublime': + specifier: ^4.21.21 + version: 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) + '@uiw/codemirror-theme-vscode': + specifier: ^4.21.21 + version: 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) + '@uiw/react-codemirror': + specifier: ^4.21.21 + version: 4.21.24(@babel/runtime@7.24.0)(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.25.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aai-embed: + specifier: workspace:* + version: link:../embed + aai-embed-react: + specifier: workspace:* + version: link:../embed-react + axios: + specifier: 1.7.9 + version: 1.7.9(debug@4.3.4) + clsx: + specifier: ^1.1.1 + version: 1.2.1 + dotenv: + specifier: ^16.0.0 + version: 16.4.5 + flagsmith: + specifier: ^4.0.3 + version: 4.0.3 + flowise-react-json-view: + specifier: '*' + version: 1.21.7(@types/react@18.2.65)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + formik: + specifier: ^2.2.6 + version: 2.4.5(react@18.2.0) + framer-motion: + specifier: ^4.1.13 + version: 4.1.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + history: + specifier: ^5.0.0 + version: 5.3.0 + html-react-parser: + specifier: ^3.0.4 + version: 3.0.16(react@18.2.0) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + moment: + specifier: ^2.29.3 + version: 2.30.1 + next: + specifier: ^14.2.5 + version: 14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + notistack: + specifier: ^2.0.4 + version: 2.0.8(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + prop-types: + specifier: ^15.7.2 + version: 15.8.1 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-code-blocks: + specifier: ^0.0.9-0 + version: 0.0.9-0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) + react-color: + specifier: ^2.19.3 + version: 2.19.3(react@18.2.0) + react-datepicker: + specifier: ^4.21.0 + version: 4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-device-detect: + specifier: ^1.17.0 + version: 1.17.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-markdown: + specifier: ^8.0.6 + version: 8.0.7(@types/react@18.2.65)(react@18.2.0) + react-perfect-scrollbar: + specifier: ^1.5.8 + version: 1.5.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-redux: + specifier: ^8.0.5 + version: 8.1.3(@types/react-dom@18.2.21)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + react-router: + specifier: ~6.3.0 + version: 6.3.0(react@18.2.0) + react-router-dom: + specifier: ~6.3.0 + version: 6.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-syntax-highlighter: + specifier: ^15.5.0 + version: 15.5.0(react@18.2.0) + reactflow: + specifier: ^11.5.6 + version: 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + redux: + specifier: ^4.0.5 + version: 4.2.1 + rehype-mathjax: + specifier: ^4.0.2 + version: 4.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + rehype-raw: + specifier: ^7.0.0 + version: 7.0.0 + remark-gfm: + specifier: ^3.0.1 + version: 3.0.1 + remark-math: + specifier: ^5.1.1 + version: 5.1.1 + socket.io-client: + specifier: ^4.6.1 + version: 4.7.4(bufferutil@4.0.8) + swr: + specifier: ^2.2.0 + version: 2.2.0(react@18.2.0) + tinycolor2: + specifier: ^1.6.0 + version: 1.6.0 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + yup: + specifier: ^0.32.9 + version: 0.32.11 + devDependencies: + '@babel/eslint-parser': + specifier: ^7.15.8 + version: 7.23.10(@babel/core@7.26.9)(eslint@8.57.1) + '@babel/plugin-proposal-private-property-in-object': + specifier: ^7.21.11 + version: 7.21.11(@babel/core@7.26.9) + '@testing-library/jest-dom': + specifier: ^5.11.10 + version: 5.17.0 + '@testing-library/react': + specifier: ^14.0.0 + version: 14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@testing-library/user-event': + specifier: ^12.8.3 + version: 12.8.3(@testing-library/dom@9.3.4) + '@vitejs/plugin-react': + specifier: ^4.2.0 + version: 4.2.1(vite@5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1)) + pretty-quick: + specifier: ^3.1.3 + version: 3.3.1(prettier@3.5.3) + react-scripts: + specifier: ^5.0.1 + version: 5.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(eslint@8.57.1)(react@18.2.0)(sass@1.71.1)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2))(type-fest@4.12.0)(typescript@5.5.2) + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + sass: + specifier: ^1.42.1 + version: 1.71.1 + typescript: + specifier: ^5.4.5 + version: 5.5.2 + vite: + specifier: ^5.0.2 + version: 5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1) + vite-plugin-pwa: + specifier: ^0.17.0 + version: 0.17.5(vite@5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) + vite-plugin-react-js-support: + specifier: ^1.0.7 + version: 1.0.7 packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: { integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== } - engines: { node: '>=0.10.0' } - - '@adobe/css-tools@4.3.3': - resolution: { integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== } - - '@ai-sdk/provider-utils@0.0.14': - resolution: { integrity: sha512-PCQFN3MlC6DShS/81IFU9NVvt9OekQGiZTEowRc2AwAwWrDsv7er3UkcMswFAL/Z7xZKjgu0dZTNH1z9oUlo7A== } - engines: { node: '>=18' } - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@1.0.2': - resolution: { integrity: sha512-57f6O4OFVNEpI8Z8o+K40tIB3YQiTw+VCql/qrAO9Utq7Ti1o6+X9tvm177DlZJL7ft0Rwzvgy48S9YhrEKgmA== } - engines: { node: '>=18' } - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider@0.0.10': - resolution: { integrity: sha512-NzkrtREQpHID1cTqY/C4CI30PVOaXWKYytDR2EcytmFgnP7Z6+CrGIA/YCnNhYAuUm6Nx+nGpRL/Hmyrv7NYzg== } - engines: { node: '>=18' } - - '@ai-sdk/provider@0.0.12': - resolution: { integrity: sha512-oOwPQD8i2Ynpn22cur4sk26FW3mSy6t6/X/K1Ay2yGBKYiSpRyLfObhOrZEGsXDx+3euKy4nEZ193R36NM+tpQ== } - engines: { node: '>=18' } - - '@ai-sdk/react@0.0.20': - resolution: { integrity: sha512-L/PFqvT+rZd/aYZekEWXuVW3zooJEZAf2O5wL5JeKi71slBEuKZGGZP/7GzyX+8Uhl3JOg4wOdJTO/dogWzbAQ== } - engines: { node: '>=18' } - peerDependencies: - react: ^18 || ^19 - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - '@ai-sdk/solid@0.0.14': - resolution: { integrity: sha512-9esGkm7/jocNELfGstrd3TYgWycXLP0OG6LXGGaEXd7v75eEp067avoLgQuPdWmzjnJD2U7N8u4wXa0lLd0WQQ== } - engines: { node: '>=18' } - peerDependencies: - solid-js: ^1.7.7 - peerDependenciesMeta: - solid-js: - optional: true - - '@ai-sdk/svelte@0.0.15': - resolution: { integrity: sha512-k4WwNgAddrQhumC6ogjZ/MPEk9kn3xEcD4CLX4CURX7y+641ktDIcZr5KeS+4o9U/jTrjSbYBJVr5HjoWm+Ixg== } - engines: { node: '>=18' } - peerDependencies: - svelte: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - - '@ai-sdk/ui-utils@0.0.12': - resolution: { integrity: sha512-ivveEuneZPOUKqcIqZRCr2NUD+LJC8mYfL7jJRWaCr+JZqdYZ+5uR/nc8GKCly2TcC9/qoF3zxQuZEn0c5805g== } - engines: { node: '>=18' } - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/vue@0.0.15': - resolution: { integrity: sha512-e8JBjZWV7MYdGcgiZCNp2qso/HdqJ2hSRD54oEELfiHgVf2y3FLnnRnc4M1MwyvX6WaVYvAd6+pdDgwVjU7h1Q== } - engines: { node: '>=18' } - peerDependencies: - vue: ^3.3.4 - peerDependenciesMeta: - vue: - optional: true - - '@algolia/autocomplete-core@1.9.3': - resolution: { integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== } - - '@algolia/autocomplete-plugin-algolia-insights@1.9.3': - resolution: { integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== } - peerDependencies: - search-insights: '>= 1 < 3' - - '@algolia/autocomplete-preset-algolia@1.9.3': - resolution: { integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== } - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/autocomplete-shared@1.9.3': - resolution: { integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== } - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/cache-browser-local-storage@4.24.0': - resolution: { integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww== } - - '@algolia/cache-common@4.24.0': - resolution: { integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g== } - - '@algolia/cache-in-memory@4.24.0': - resolution: { integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w== } - - '@algolia/client-account@4.24.0': - resolution: { integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA== } - - '@algolia/client-analytics@4.24.0': - resolution: { integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg== } - - '@algolia/client-common@4.24.0': - resolution: { integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA== } - - '@algolia/client-personalization@4.24.0': - resolution: { integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w== } - - '@algolia/client-search@4.24.0': - resolution: { integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== } - - '@algolia/events@4.0.1': - resolution: { integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== } - - '@algolia/logger-common@4.24.0': - resolution: { integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA== } - - '@algolia/logger-console@4.24.0': - resolution: { integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg== } - - '@algolia/recommend@4.24.0': - resolution: { integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw== } - - '@algolia/requester-browser-xhr@4.24.0': - resolution: { integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA== } - '@algolia/requester-common@4.24.0': - resolution: { integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA== } + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@adobe/css-tools@4.3.3': + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + + '@ai-sdk/provider-utils@0.0.14': + resolution: {integrity: sha512-PCQFN3MlC6DShS/81IFU9NVvt9OekQGiZTEowRc2AwAwWrDsv7er3UkcMswFAL/Z7xZKjgu0dZTNH1z9oUlo7A==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/provider-utils@1.0.2': + resolution: {integrity: sha512-57f6O4OFVNEpI8Z8o+K40tIB3YQiTw+VCql/qrAO9Utq7Ti1o6+X9tvm177DlZJL7ft0Rwzvgy48S9YhrEKgmA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/provider@0.0.10': + resolution: {integrity: sha512-NzkrtREQpHID1cTqY/C4CI30PVOaXWKYytDR2EcytmFgnP7Z6+CrGIA/YCnNhYAuUm6Nx+nGpRL/Hmyrv7NYzg==} + engines: {node: '>=18'} + + '@ai-sdk/provider@0.0.12': + resolution: {integrity: sha512-oOwPQD8i2Ynpn22cur4sk26FW3mSy6t6/X/K1Ay2yGBKYiSpRyLfObhOrZEGsXDx+3euKy4nEZ193R36NM+tpQ==} + engines: {node: '>=18'} + + '@ai-sdk/react@0.0.20': + resolution: {integrity: sha512-L/PFqvT+rZd/aYZekEWXuVW3zooJEZAf2O5wL5JeKi71slBEuKZGGZP/7GzyX+8Uhl3JOg4wOdJTO/dogWzbAQ==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + + '@ai-sdk/solid@0.0.14': + resolution: {integrity: sha512-9esGkm7/jocNELfGstrd3TYgWycXLP0OG6LXGGaEXd7v75eEp067avoLgQuPdWmzjnJD2U7N8u4wXa0lLd0WQQ==} + engines: {node: '>=18'} + peerDependencies: + solid-js: ^1.7.7 + peerDependenciesMeta: + solid-js: + optional: true + + '@ai-sdk/svelte@0.0.15': + resolution: {integrity: sha512-k4WwNgAddrQhumC6ogjZ/MPEk9kn3xEcD4CLX4CURX7y+641ktDIcZr5KeS+4o9U/jTrjSbYBJVr5HjoWm+Ixg==} + engines: {node: '>=18'} + peerDependencies: + svelte: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + + '@ai-sdk/ui-utils@0.0.12': + resolution: {integrity: sha512-ivveEuneZPOUKqcIqZRCr2NUD+LJC8mYfL7jJRWaCr+JZqdYZ+5uR/nc8GKCly2TcC9/qoF3zxQuZEn0c5805g==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/vue@0.0.15': + resolution: {integrity: sha512-e8JBjZWV7MYdGcgiZCNp2qso/HdqJ2hSRD54oEELfiHgVf2y3FLnnRnc4M1MwyvX6WaVYvAd6+pdDgwVjU7h1Q==} + engines: {node: '>=18'} + peerDependencies: + vue: ^3.3.4 + peerDependenciesMeta: + vue: + optional: true + + '@algolia/autocomplete-core@1.9.3': + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3': + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.9.3': + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.9.3': + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} + + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} + + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - '@algolia/requester-node-http@4.24.0': - resolution: { integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw== } + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - '@algolia/transporter@4.24.0': - resolution: { integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA== } + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - '@ampproject/remapping@2.3.0': - resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== } - engines: { node: '>=6.0.0' } + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - '@anthropic-ai/sdk@0.20.9': - resolution: { integrity: sha512-Lq74+DhiEQO6F9/gdVOLmHx57pX45ebK2Q/zH14xYe1157a7QeUVknRqIp0Jz5gQI01o7NKbuv9Dag2uQsLjDg== } + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - '@anthropic-ai/sdk@0.21.1': - resolution: { integrity: sha512-fqdt74RTdplnaFOYhwNjjK/Ec09Dqv9ekYr7PuC6GdhV1RWkziqbpJBewn42CYYqCr92JeX6g+IXVgXmq9l7XQ== } + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - '@anthropic-ai/sdk@0.5.10': - resolution: { integrity: sha512-P8xrIuTUO/6wDzcjQRUROXp4WSqtngbXaE4GpEu0PhEmnq/1Q8vbF1s0o7W07EV3j8zzRoyJxAKovUJtNXH7ew== } + '@algolia/events@4.0.1': + resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@apideck/better-ajv-errors@0.3.6': - resolution: { integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== } - engines: { node: '>=10' } - peerDependencies: - ajv: '>=8' + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - '@apify/consts@2.26.0': - resolution: { integrity: sha512-K0BacKRZhnYE3sLBMFB9CjbLFg7PAPMSQAVxwJkfACKWQcFPpf9ly95tcG0YWezkU9Euj/jsiSTSnuQvyWnMVw== } + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - '@apify/log@2.5.0': - resolution: { integrity: sha512-PYux77qonKSKePFRuPBjM6QdLTzrG2rWLGCyWNZDgSdCWY9kNMvw5dwzHxjWp4B6sYJrz6Blea0KRIemo5MO+Q== } + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - '@auth0/auth0-react@2.2.4': - resolution: { integrity: sha512-l29PQC0WdgkCoOc6WeMAY26gsy/yXJICW0jHfj0nz8rZZphYKrLNqTRWFFCMJY+sagza9tSgB1kG/UvQYgGh9A== } - peerDependencies: - react: ^16.11.0 || ^17 || ^18 - react-dom: ^16.11.0 || ^17 || ^18 + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - '@auth0/auth0-spa-js@2.1.3': - resolution: { integrity: sha512-NMTBNuuG4g3rame1aCnNS5qFYIzsTUV5qTFPRfTyYFS1feS6jsCBR+eTq9YkxCp1yuoM2UIcjunPaoPl77U9xQ== } + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - '@auth0/nextjs-auth0@3.5.0': - resolution: { integrity: sha512-uFZEE2QQf1zU+jRK2fwqxRQt+WSqDPYF2tnr7d6BEa7b6L6tpPJ3evzoImbWSY1a7gFdvD7RD/Rvrsx7B5CKVg== } - engines: { node: '>=16' } - peerDependencies: - next: '>=10' + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - '@aws-crypto/crc32@3.0.0': - resolution: { integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== } + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} - '@aws-crypto/crc32@5.2.0': - resolution: { integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== } - engines: { node: '>=16.0.0' } + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} - '@aws-crypto/crc32c@3.0.0': - resolution: { integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== } + '@anthropic-ai/sdk@0.20.9': + resolution: {integrity: sha512-Lq74+DhiEQO6F9/gdVOLmHx57pX45ebK2Q/zH14xYe1157a7QeUVknRqIp0Jz5gQI01o7NKbuv9Dag2uQsLjDg==} - '@aws-crypto/ie11-detection@3.0.0': - resolution: { integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== } + '@anthropic-ai/sdk@0.27.3': + resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} - '@aws-crypto/sha1-browser@3.0.0': - resolution: { integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== } + '@anthropic-ai/sdk@0.37.0': + resolution: {integrity: sha512-tHjX2YbkUBwEgg0JZU3EFSSAQPoK4qQR/NFYa8Vtzd5UAyXzZksCw2In69Rml4R/TyHPBfRYaLK35XiOe33pjw==} - '@aws-crypto/sha256-browser@3.0.0': - resolution: { integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== } + '@anthropic-ai/sdk@0.5.10': + resolution: {integrity: sha512-P8xrIuTUO/6wDzcjQRUROXp4WSqtngbXaE4GpEu0PhEmnq/1Q8vbF1s0o7W07EV3j8zzRoyJxAKovUJtNXH7ew==} - '@aws-crypto/sha256-browser@5.2.0': - resolution: { integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== } + '@apideck/better-ajv-errors@0.3.6': + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' - '@aws-crypto/sha256-js@3.0.0': - resolution: { integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== } + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} - '@aws-crypto/sha256-js@5.2.0': - resolution: { integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== } - engines: { node: '>=16.0.0' } + '@apidevtools/json-schema-ref-parser@9.1.2': + resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: { integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== } + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: { integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== } + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} - '@aws-crypto/util@3.0.0': - resolution: { integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== } + '@apidevtools/swagger-parser@10.0.3': + resolution: {integrity: sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==} + peerDependencies: + openapi-types: '>=7' - '@aws-crypto/util@5.2.0': - resolution: { integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== } + '@apify/consts@2.26.0': + resolution: {integrity: sha512-K0BacKRZhnYE3sLBMFB9CjbLFg7PAPMSQAVxwJkfACKWQcFPpf9ly95tcG0YWezkU9Euj/jsiSTSnuQvyWnMVw==} - '@aws-sdk/client-bedrock-agent-runtime@3.625.0': - resolution: { integrity: sha512-4oMSxhRmytD2aiqKLlx8nkQ2IABSzy6bNeC/1BApgGjh5KBd5zPJ+A6BsthfMsgHuHYRbAIQDR8zOTMdQEyFrg== } - engines: { node: '>=16.0.0' } + '@apify/log@2.5.0': + resolution: {integrity: sha512-PYux77qonKSKePFRuPBjM6QdLTzrG2rWLGCyWNZDgSdCWY9kNMvw5dwzHxjWp4B6sYJrz6Blea0KRIemo5MO+Q==} - '@aws-sdk/client-bedrock-runtime@3.422.0': - resolution: { integrity: sha512-gbvlxoRpoppcKib3zH8qITSF8hXnE3uJxD278KSyIGV4C6tyCz+bm70369/1PkLaxcNDjzN/Jh9xNKeYplKDuA== } - engines: { node: '>=14.0.0' } + '@arizeai/openinference-core@1.0.0': + resolution: {integrity: sha512-lzuH626IMZ//ghRB5ClCKWNfZ/f/LUx7X2n+B6YvQX3CNze8RNrciGptgonEjaGvKiccV5fdWQ0yXR1KOpOBEg==} - '@aws-sdk/client-bedrock-runtime@3.624.0': - resolution: { integrity: sha512-9v4h93oxTdcL2jMGxkpgBAaclThLhQzjcPvL32hFx7HzJmMi1EQUTqFBb0PTPYGZtFcqdgDX8V103fkhagklTA== } - engines: { node: '>=16.0.0' } + '@arizeai/openinference-instrumentation-langchain@2.0.0': + resolution: {integrity: sha512-bDRyCnXsapwOckqZlDoh5cyeogWtX/DXjw+rfdRpmbZ9ejz26HUroWn2/JU89DW4rHWV+Y5kZtM3qDsTSkqN/Q==} + peerDependencies: + '@langchain/core': 0.3.37 - '@aws-sdk/client-dynamodb@3.529.1': - resolution: { integrity: sha512-oyMCMu4JUGUIwuLYm2WAI/wUbw3RwWwgPTPTxJdus79NVgQ0lGCZnS4cOd2LtzufRglShr5LZUvueVdyn8Hrjw== } - engines: { node: '>=14.0.0' } + '@arizeai/openinference-semantic-conventions@1.0.0': + resolution: {integrity: sha512-I14TjDAoDXQFT1boslWSgNU59XgcVL8VS7UwX9EA524fVgOAoxWaowKwTPLvT4y8EYQLtdg+X9t3KvBiO3+AmA==} - '@aws-sdk/client-kendra@3.624.0': - resolution: { integrity: sha512-nNhxyljtuowPBcgMueUFMFZ+acLLZCSSR2ctCFGb38/UVdasbfql0G6I7Ta4zWlT1XvVcGGsBFeSeMmCw71Jhg== } - engines: { node: '>=16.0.0' } + '@auth0/auth0-react@2.3.0': + resolution: {integrity: sha512-YYTc/DWWigKC9fURufR/79h3+3DAnIzbfEzJLZ8Z4Q0BXE0azru3pKUbU+vYzS4lMAJkclwLuAbUnLjK81vCpA==} + peerDependencies: + react: ^16.11.0 || ^17 || ^18 || ^19 + react-dom: ^16.11.0 || ^17 || ^18 || ^19 - '@aws-sdk/client-s3@3.529.1': - resolution: { integrity: sha512-ZpvyO4w3XWo/OjXLd3fm7CLcKUUYcyady9qzTnKKSnp8a2NqO7UvU/1zhYdm+yyy8TR/9t7sDy+q6AYd4Nsr8g== } - engines: { node: '>=14.0.0' } + '@auth0/auth0-spa-js@2.1.3': + resolution: {integrity: sha512-NMTBNuuG4g3rame1aCnNS5qFYIzsTUV5qTFPRfTyYFS1feS6jsCBR+eTq9YkxCp1yuoM2UIcjunPaoPl77U9xQ==} - '@aws-sdk/client-sso-oidc@3.529.1': - resolution: { integrity: sha512-bimxCWAvRnVcluWEQeadXvHyzWlBWsuGVligsaVZaGF0TLSn0eLpzpN9B1EhHzTf7m0Kh/wGtPSH1JxO6PpB+A== } - engines: { node: '>=14.0.0' } - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.529.1 + '@auth0/nextjs-auth0@3.5.0': + resolution: {integrity: sha512-uFZEE2QQf1zU+jRK2fwqxRQt+WSqDPYF2tnr7d6BEa7b6L6tpPJ3evzoImbWSY1a7gFdvD7RD/Rvrsx7B5CKVg==} + engines: {node: '>=16'} + peerDependencies: + next: '>=10' - '@aws-sdk/client-sso-oidc@3.624.0': - resolution: { integrity: sha512-Ki2uKYJKKtfHxxZsiMTOvJoVRP6b2pZ1u3rcUb2m/nVgBPUfLdl8ZkGpqE29I+t5/QaS/sEdbn6cgMUZwl+3Dg== } - engines: { node: '>=16.0.0' } - peerDependencies: - '@aws-sdk/client-sts': ^3.624.0 + '@aws-crypto/crc32@3.0.0': + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - '@aws-sdk/client-sso@3.421.0': - resolution: { integrity: sha512-40CmW7K2/FZEn3CbOjbpRYeVjKu6aJQlpRHcAgEJGNoVEAnRA3YNH4H0BN2iWWITfYg3B7sIjMm5VE9fCIK1Ng== } - engines: { node: '>=14.0.0' } + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso@3.529.1': - resolution: { integrity: sha512-KT1U/ZNjDhVv2ZgjzaeAn9VM7l667yeSguMrRYC8qk5h91/61MbjZypi6eOuKuVM+0fsQvzKScTQz0Lio0eYag== } - engines: { node: '>=14.0.0' } + '@aws-crypto/crc32c@3.0.0': + resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - '@aws-sdk/client-sso@3.624.0': - resolution: { integrity: sha512-EX6EF+rJzMPC5dcdsu40xSi2To7GSvdGQNIpe97pD9WvZwM9tRNQnNM4T6HA4gjV1L6Jwk8rBlG/CnveXtLEMw== } - engines: { node: '>=16.0.0' } + '@aws-crypto/ie11-detection@3.0.0': + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - '@aws-sdk/client-sts@3.421.0': - resolution: { integrity: sha512-/92NOZMcdkBcvGrINk5B/l+6DGcVzYE4Ab3ME4vcY9y//u2gd0yNn5YYRSzzjVBLvhDP3u6CbTfLX2Bm4qihPw== } - engines: { node: '>=14.0.0' } + '@aws-crypto/sha1-browser@3.0.0': + resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - '@aws-sdk/client-sts@3.529.1': - resolution: { integrity: sha512-Rvk2Sr3MACQTOtngUU+omlf4E17k47dRVXR7OFRD6Ow5iGgC9tkN2q/ExDPW/ktPOmM0lSgzWyQ6/PC/Zq3HUg== } - engines: { node: '>=14.0.0' } - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.529.1 + '@aws-crypto/sha256-browser@3.0.0': + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - '@aws-sdk/client-sts@3.624.0': - resolution: { integrity: sha512-k36fLZCb2nfoV/DKK3jbRgO/Yf7/R80pgYfMiotkGjnZwDmRvNN08z4l06L9C+CieazzkgRxNUzyppsYcYsQaw== } - engines: { node: '>=16.0.0' } + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - '@aws-sdk/core@3.529.1': - resolution: { integrity: sha512-Sj42sYPfaL9PHvvciMICxhyrDZjqnnvFbPKDmQL5aFKyXy122qx7RdVqUOQERDmMQfvJh6+0W1zQlLnre89q4Q== } - engines: { node: '>=14.0.0' } + '@aws-crypto/sha256-js@3.0.0': + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - '@aws-sdk/core@3.624.0': - resolution: { integrity: sha512-WyFmPbhRIvtWi7hBp8uSFy+iPpj8ccNV/eX86hwF4irMjfc/FtsGVIAeBXxXM/vGCjkdfEzOnl+tJ2XACD4OXg== } - engines: { node: '>=16.0.0' } + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.629.0': - resolution: { integrity: sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ== } - engines: { node: '>=16.0.0' } + '@aws-crypto/supports-web-crypto@3.0.0': + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - '@aws-sdk/credential-provider-env@3.418.0': - resolution: { integrity: sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ== } - engines: { node: '>=14.0.0' } + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - '@aws-sdk/credential-provider-env@3.523.0': - resolution: { integrity: sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-env@3.620.1': - resolution: { integrity: sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/credential-provider-http@3.525.0': - resolution: { integrity: sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-http@3.622.0': - resolution: { integrity: sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/credential-provider-ini@3.421.0': - resolution: { integrity: sha512-J5yH/gkpAk6FMeH5F9u5Nr6oG+97tj1kkn5q49g3XMbtWw7GiynadxdtoRBCeIg1C7o2LOQx4B1AnhNhIw1z/g== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-ini@3.529.1': - resolution: { integrity: sha512-RjHsuTvHIwXG7a/3ERexemiD3c9riKMCZQzY2/b0Gg0ButEVbBcMfERtUzWmQ0V4ufe/PEZjP68MH1gupcoF9A== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-ini@3.624.0': - resolution: { integrity: sha512-mMoNIy7MO2WTBbdqMyLpbt6SZpthE6e0GkRYpsd0yozPt0RZopcBhEh+HG1U9Y1PVODo+jcMk353vAi61CfnhQ== } - engines: { node: '>=16.0.0' } - peerDependencies: - '@aws-sdk/client-sts': ^3.624.0 - - '@aws-sdk/credential-provider-node@3.421.0': - resolution: { integrity: sha512-g1dvdvfDj0u8B/gOsHR3o1arP4O4QE/dFm2IJBYr/eUdKISMUgbQULWtg4zdtAf0Oz4xN0723i7fpXAF1gTnRA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-node@3.529.1': - resolution: { integrity: sha512-mvY7F3dMmk/0dZOCfl5sUI1bG0osureBjxhELGCF0KkJqhWI0hIzh8UnPkYytSg3vdc97CMv7pTcozxrdA3b0g== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-node@3.624.0': - resolution: { integrity: sha512-vYyGK7oNpd81BdbH5IlmQ6zfaQqU+rPwsKTDDBeLRjshtrGXOEpfoahVpG9PX0ibu32IOWp4ZyXBNyVrnvcMOw== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/credential-provider-process@3.418.0': - resolution: { integrity: sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-process@3.523.0': - resolution: { integrity: sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-process@3.620.1': - resolution: { integrity: sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/credential-provider-sso@3.421.0': - resolution: { integrity: sha512-f8T3L5rhImL6T6RTSvbOxaWw9k2fDOT2DZbNjcPz9ITWmwXj2NNbdHGWuRi3dv2HoY/nW2IJdNxnhdhbn6Fc1A== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-sso@3.529.1': - resolution: { integrity: sha512-KFMKkaoTGDgSJG+o9Ii7AglWG5JQeF6IFw9cXLMwDdIrp3KUmRcUIqe0cjOoCqeQEDGy0VHsimHmKKJ3894i/A== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-sso@3.624.0': - resolution: { integrity: sha512-A02bayIjU9APEPKr3HudrFHEx0WfghoSPsPopckDkW7VBqO4wizzcxr75Q9A3vNX+cwg0wCN6UitTNe6pVlRaQ== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/credential-provider-web-identity@3.418.0': - resolution: { integrity: sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-web-identity@3.529.1': - resolution: { integrity: sha512-AGuZDOKN+AttjwTjrF47WLqzeEut2YynyxjkXZhxZF/xn8i5Y51kUAUdXsXw1bgR25pAeXQIdhsrQlRa1Pm5kw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/credential-provider-web-identity@3.621.0': - resolution: { integrity: sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== } - engines: { node: '>=16.0.0' } - peerDependencies: - '@aws-sdk/client-sts': ^3.621.0 + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - '@aws-sdk/endpoint-cache@3.495.0': - resolution: { integrity: sha512-XCDrpiS50WaPzPzp7FwsChPHtX9PQQUU4nRzcn2N7IkUtpcFCUx8m1PAZe086VQr6hrbdeE4Z4j8hUPNwVdJGQ== } - engines: { node: '>=14.0.0' } + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/middleware-bucket-endpoint@3.525.0': - resolution: { integrity: sha512-nYfQ2Xspfef7j8mZO7varUWLPH6HQlXateH7tBVtBNUAazyQE4UJEvC0fbQ+Y01e+FKlirim/m2umkdMXqAlTg== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-bedrock-agent-runtime@3.758.0': + resolution: {integrity: sha512-5Svphee/Q/3hKlk/V6UQmQBQdBG0rIfqi7eMgEaNWXHfwy9/V6zJ6MsPvPGHqVZMNqUaSZJ0ToycvVbZ6HX3bA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-endpoint-discovery@3.525.0': - resolution: { integrity: sha512-nT/XYP3RDRWPFCTEOZQbOC3HWmUkxB0fDuobmH8WzL92MCBGz9gBG/q9XBxiw9pHk9Dky/MIkLV50BlGB3kM7g== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-bedrock-runtime@3.422.0': + resolution: {integrity: sha512-gbvlxoRpoppcKib3zH8qITSF8hXnE3uJxD278KSyIGV4C6tyCz+bm70369/1PkLaxcNDjzN/Jh9xNKeYplKDuA==} + engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-expect-continue@3.523.0': - resolution: { integrity: sha512-E5DyRAHU39VHaAlQLqXYS/IKpgk3vsryuU6kkOcIIK8Dgw0a2tjoh5AOCaNa8pD+KgAGrFp35JIMSX1zui5diA== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-bedrock-runtime@3.758.0': + resolution: {integrity: sha512-T7s+fULUxN3AcJP+lgoUKLawzVEtyCTi+5Ga+wrHnqEPwAsM/wg7VctsZfow1fCgARLT/lzmP2LTCi8ycRnQWg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.523.0': - resolution: { integrity: sha512-lIa1TdWY9q4zsDFarfSnYcdrwPR+nypaU4n6hb95i620/1F5M5s6H8P0hYtwTNNvx+slrR8F3VBML9pjBtzAHw== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-dynamodb@3.529.1': + resolution: {integrity: sha512-oyMCMu4JUGUIwuLYm2WAI/wUbw3RwWwgPTPTxJdus79NVgQ0lGCZnS4cOd2LtzufRglShr5LZUvueVdyn8Hrjw==} + engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-host-header@3.418.0': - resolution: { integrity: sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-kendra@3.758.0': + resolution: {integrity: sha512-jciLetMDVx5hom0UKIr+t+WsehbRH7aF1E0BiFsgHfpFI+KRyVRIrOUOFxUDq2EKMOPSZbWLqDO7xJ4w/OuPlA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.523.0': - resolution: { integrity: sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-s3@3.529.1': + resolution: {integrity: sha512-ZpvyO4w3XWo/OjXLd3fm7CLcKUUYcyady9qzTnKKSnp8a2NqO7UvU/1zhYdm+yyy8TR/9t7sDy+q6AYd4Nsr8g==} + engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-host-header@3.620.0': - resolution: { integrity: sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== } - engines: { node: '>=16.0.0' } + '@aws-sdk/client-secrets-manager@3.758.0': + resolution: {integrity: sha512-Vi4cdCim0jQx3rrU5R1W4v3czoWL0ajBtoI15oSSt7cwLjzNA0xq4nXSa6rahjTgtZWlLeBprbquvxNzY3qg5Q==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.523.0': - resolution: { integrity: sha512-1QAUXX3U0jkARnU0yyjk81EO4Uw5dCeQOtvUY5s3bUOHatR3ThosQeIr6y9BCsbXHzNnDe1ytCjqAPyo8r/bYw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-logger@3.418.0': - resolution: { integrity: sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-logger@3.523.0': - resolution: { integrity: sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-logger@3.609.0': - resolution: { integrity: sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/middleware-recursion-detection@3.418.0': - resolution: { integrity: sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-recursion-detection@3.523.0': - resolution: { integrity: sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-recursion-detection@3.620.0': - resolution: { integrity: sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/middleware-sdk-s3@3.525.0': - resolution: { integrity: sha512-ewFyyFM6wdFTOqCiId5GQNi7owDdLEonQhB4h8tF6r3HV52bRlDvZA4aDos+ft6N/XY2J6L0qlFTFq+/oiurXw== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-sdk-s3@3.629.0': - resolution: { integrity: sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/middleware-sdk-sts@3.418.0': - resolution: { integrity: sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-signing@3.418.0': - resolution: { integrity: sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-signing@3.523.0': - resolution: { integrity: sha512-pFXV4don6qcmew/OvEjLUr2foVjzoJ8o5k57Oz9yAHz8INx3RHK8MP/K4mVhHo6n0SquRcWrm4kY/Tw+89gkEA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-ssec@3.523.0': - resolution: { integrity: sha512-FaqAZQeF5cQzZLOIboIJRaWVOQ2F2pJZAXGF5D7nJsxYNFChotA0O0iWimBRxU35RNn7yirVxz35zQzs20ddIw== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-sso-oidc@3.529.1': + resolution: {integrity: sha512-bimxCWAvRnVcluWEQeadXvHyzWlBWsuGVligsaVZaGF0TLSn0eLpzpN9B1EhHzTf7m0Kh/wGtPSH1JxO6PpB+A==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.529.1 - '@aws-sdk/middleware-user-agent@3.418.0': - resolution: { integrity: sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw== } - engines: { node: '>=14.0.0' } + '@aws-sdk/client-sso@3.421.0': + resolution: {integrity: sha512-40CmW7K2/FZEn3CbOjbpRYeVjKu6aJQlpRHcAgEJGNoVEAnRA3YNH4H0BN2iWWITfYg3B7sIjMm5VE9fCIK1Ng==} + engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-user-agent@3.525.0': - resolution: { integrity: sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/middleware-user-agent@3.620.0': - resolution: { integrity: sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/region-config-resolver@3.418.0': - resolution: { integrity: sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/region-config-resolver@3.525.0': - resolution: { integrity: sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/region-config-resolver@3.614.0': - resolution: { integrity: sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/s3-request-presigner@3.629.0': - resolution: { integrity: sha512-6lVgK9Y5m+AqisPNLs1Low5oJHFg/lfsuEsQMKG5y0/uqR1KVLswiaY1mhp0cprMEXRN2DDMAhP7i+jy5/WLNw== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/signature-v4-crt@3.629.0': - resolution: { integrity: sha512-c7dPxhYCn8OBed9eYGWHrpyzPRwPXJr9AMCaN2BBUdZZsDq29+EUC+VQDcDEUa6Dwmt4UCW8Mn1YIP4SxpqC0A== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/signature-v4-multi-region@3.525.0': - resolution: { integrity: sha512-j8gkdfiokaherRgokfZBl2azYBMHlegT7pOnR/3Y79TSz6G+bJeIkuNk8aUbJArr6R8nvAM1j4dt1rBM+efolQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/signature-v4-multi-region@3.629.0': - resolution: { integrity: sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/token-providers@3.418.0': - resolution: { integrity: sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/token-providers@3.529.1': - resolution: { integrity: sha512-NpgMjsfpqiugbxrYGXtta914N43Mx/H0niidqv8wKMTgWQEtsJvYtOni+kuLXB+LmpjaMFNlpadooFU/bK4buA== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/token-providers@3.614.0': - resolution: { integrity: sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== } - engines: { node: '>=16.0.0' } - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.614.0 - - '@aws-sdk/types@3.418.0': - resolution: { integrity: sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/types@3.523.0': - resolution: { integrity: sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/types@3.609.0': - resolution: { integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/util-arn-parser@3.495.0': - resolution: { integrity: sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/util-arn-parser@3.568.0': - resolution: { integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/util-endpoints@3.418.0': - resolution: { integrity: sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/util-endpoints@3.525.0': - resolution: { integrity: sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/util-endpoints@3.614.0': - resolution: { integrity: sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/util-format-url@3.609.0': - resolution: { integrity: sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ== } - engines: { node: '>=16.0.0' } - - '@aws-sdk/util-locate-window@3.495.0': - resolution: { integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg== } - engines: { node: '>=14.0.0' } - - '@aws-sdk/util-user-agent-browser@3.418.0': - resolution: { integrity: sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg== } - - '@aws-sdk/util-user-agent-browser@3.523.0': - resolution: { integrity: sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA== } - - '@aws-sdk/util-user-agent-browser@3.609.0': - resolution: { integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== } - - '@aws-sdk/util-user-agent-node@3.418.0': - resolution: { integrity: sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg== } - engines: { node: '>=14.0.0' } - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-user-agent-node@3.525.0': - resolution: { integrity: sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ== } - engines: { node: '>=14.0.0' } - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-user-agent-node@3.614.0': - resolution: { integrity: sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== } - engines: { node: '>=16.0.0' } - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: { integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== } - - '@aws-sdk/xml-builder@3.523.0': - resolution: { integrity: sha512-wfvyVymj2TUw7SuDor9IuFcAzJZvWRBZotvY/wQJOlYa3UP3Oezzecy64N4FWfBJEsZdrTN+HOZFl+IzTWWnUA== } - engines: { node: '>=14.0.0' } - - '@babel/code-frame@7.12.11': - resolution: { integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== } - - '@babel/code-frame@7.23.5': - resolution: { integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== } - engines: { node: '>=6.9.0' } - - '@babel/code-frame@7.24.7': - resolution: { integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== } - engines: { node: '>=6.9.0' } - - '@babel/compat-data@7.23.5': - resolution: { integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== } - engines: { node: '>=6.9.0' } - - '@babel/compat-data@7.24.4': - resolution: { integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== } - engines: { node: '>=6.9.0' } - - '@babel/core@7.24.0': - resolution: { integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== } - engines: { node: '>=6.9.0' } - - '@babel/eslint-parser@7.23.10': - resolution: { integrity: sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw== } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - - '@babel/generator@7.23.6': - resolution: { integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== } - engines: { node: '>=6.9.0' } - - '@babel/generator@7.25.6': - resolution: { integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-annotate-as-pure@7.22.5': - resolution: { integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== } - engines: { node: '>=6.9.0' } - - '@babel/helper-annotate-as-pure@7.24.7': - resolution: { integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== } - engines: { node: '>=6.9.0' } - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: { integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-compilation-targets@7.23.6': - resolution: { integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-create-class-features-plugin@7.24.0': - resolution: { integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.24.5': - resolution: { integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.25.4': - resolution: { integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: { integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.5.0': - resolution: { integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-define-polyfill-provider@0.6.0': - resolution: { integrity: sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: { integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.22.20': - resolution: { integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-function-name@7.23.0': - resolution: { integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-hoist-variables@7.22.5': - resolution: { integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: { integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-member-expression-to-functions@7.24.5': - resolution: { integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: { integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.18.6': - resolution: { integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.24.3': - resolution: { integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.24.7': - resolution: { integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-transforms@7.24.5': - resolution: { integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-module-transforms@7.25.2': - resolution: { integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.22.5': - resolution: { integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-optimise-call-expression@7.24.7': - resolution: { integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== } - engines: { node: '>=6.9.0' } - - '@babel/helper-plugin-utils@7.24.0': - resolution: { integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== } - engines: { node: '>=6.9.0' } - - '@babel/helper-plugin-utils@7.24.5': - resolution: { integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-plugin-utils@7.24.8': - resolution: { integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== } - engines: { node: '>=6.9.0' } - - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: { integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.22.20': - resolution: { integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.24.1': - resolution: { integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.25.0': - resolution: { integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.24.5': - resolution: { integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-simple-access@7.24.7': - resolution: { integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== } - engines: { node: '>=6.9.0' } - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: { integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== } - engines: { node: '>=6.9.0' } - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: { integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-split-export-declaration@7.22.6': - resolution: { integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== } - engines: { node: '>=6.9.0' } - - '@babel/helper-split-export-declaration@7.24.5': - resolution: { integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== } - engines: { node: '>=6.9.0' } - - '@babel/helper-string-parser@7.24.1': - resolution: { integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-string-parser@7.24.8': - resolution: { integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-identifier@7.24.5': - resolution: { integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-identifier@7.24.7': - resolution: { integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-option@7.23.5': - resolution: { integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-option@7.24.8': - resolution: { integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== } - engines: { node: '>=6.9.0' } - - '@babel/helper-wrap-function@7.22.20': - resolution: { integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== } - engines: { node: '>=6.9.0' } - - '@babel/helpers@7.24.0': - resolution: { integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== } - engines: { node: '>=6.9.0' } - - '@babel/highlight@7.23.4': - resolution: { integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== } - engines: { node: '>=6.9.0' } - - '@babel/highlight@7.24.7': - resolution: { integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== } - engines: { node: '>=6.9.0' } - - '@babel/parser@7.24.8': - resolution: { integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== } - engines: { node: '>=6.0.0' } - hasBin: true - - '@babel/parser@7.25.6': - resolution: { integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== } - engines: { node: '>=6.0.0' } - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': - resolution: { integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': - resolution: { integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: { integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': - resolution: { integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: { integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': - resolution: { integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: { integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: { integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-decorators@7.24.0': - resolution: { integrity: sha512-LiT1RqZWeij7X+wGxCoYh3/3b8nVOX6/7BZ9wiQgAIyjoeQWdROaodJCgT+dwtbjHaz0r7bEbHJzjSbVfcOyjQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: { integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-numeric-separator@7.18.6': - resolution: { integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: { integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: { integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: { integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11': - resolution: { integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@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-decorators@7.24.0': - resolution: { integrity: sha512-MXW3pQCu9gUiVGzqkGqsgiINDVYXoAnrY8FYF/rmb+OfufNF0zHMpHPN4ulRrinxYT8Vk/aZJxYqOKsDECjKAw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: { integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: { integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.23.3': - resolution: { integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.23.3': - resolution: { integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: { integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.23.3': - resolution: { integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: { integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== } - 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.23.3': - resolution: { integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.24.7': - resolution: { integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== } - 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.23.3': - resolution: { integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.4': - resolution: { integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: { integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.23.3': - resolution: { integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: { integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.23.9': - resolution: { integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: { integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.23.3': - resolution: { integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: { integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.23.3': - resolution: { integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: { integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.23.4': - resolution: { integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.24.5': - resolution: { integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.23.3': - resolution: { integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.24.1': - resolution: { integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.23.4': - resolution: { integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: { integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.23.8': - resolution: { integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-classes@7.24.5': - resolution: { integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.23.3': - resolution: { integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: { integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.23.3': - resolution: { integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.24.5': - resolution: { integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.23.3': - resolution: { integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: { integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.23.3': - resolution: { integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: { integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.23.4': - resolution: { integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: { integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.23.3': - resolution: { integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: { integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.23.4': - resolution: { integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: { integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.23.3': - resolution: { integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.23.6': - resolution: { integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.24.1': - resolution: { integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.23.3': - resolution: { integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.24.1': - resolution: { integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.23.4': - resolution: { integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.24.1': - resolution: { integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.23.3': - resolution: { integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.24.1': - resolution: { integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.23.4': - resolution: { integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: { integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.23.3': - resolution: { integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: { integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.23.3': - resolution: { integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: { integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.23.3': - resolution: { integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: { integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: { integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.23.9': - resolution: { integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: { integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.23.3': - resolution: { integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: { integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: { integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.23.3': - resolution: { integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-new-target@7.24.1': - resolution: { integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': - resolution: { integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: { integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.23.4': - resolution: { integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: { integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.0': - resolution: { integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.5': - resolution: { integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.23.3': - resolution: { integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.24.1': - resolution: { integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.23.4': - resolution: { integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: { integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.23.4': - resolution: { integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.24.5': - resolution: { integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.23.3': - resolution: { integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.24.5': - resolution: { integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.23.3': - resolution: { integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.24.1': - resolution: { integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.23.4': - resolution: { integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.24.5': - resolution: { integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.23.3': - resolution: { integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.24.1': - resolution: { integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-constant-elements@7.23.3': - resolution: { integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.23.3': - resolution: { integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.24.7': - resolution: { integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.22.5': - resolution: { integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.24.7': - resolution: { integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.23.3': - resolution: { integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.23.3': - resolution: { integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.23.4': - resolution: { integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.25.2': - resolution: { integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.23.3': - resolution: { integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.24.7': - resolution: { integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.23.3': - resolution: { integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.24.1': - resolution: { integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.23.3': - resolution: { integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: { integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.24.0': - resolution: { integrity: sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.23.3': - resolution: { integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: { integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.23.3': - resolution: { integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.1': - resolution: { integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.23.3': - resolution: { integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: { integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.23.3': - resolution: { integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.1': - resolution: { integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.23.3': - resolution: { integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.5': - resolution: { integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.23.6': - resolution: { integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.25.2': - resolution: { integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.23.3': - resolution: { integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: { integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.23.3': - resolution: { integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: { integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.23.3': - resolution: { integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: { integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3': - resolution: { integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: { integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.24.0': - resolution: { integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-env@7.24.5': - resolution: { integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: { integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== } - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.18.6': - resolution: { integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-react@7.24.7': - resolution: { integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.18.6': - resolution: { integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.21.4': - resolution: { integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.24.7': - resolution: { integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: { integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== } - - '@babel/runtime-corejs3@7.25.6': - resolution: { integrity: sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw== } - engines: { node: '>=6.9.0' } - - '@babel/runtime@7.24.0': - resolution: { integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== } - engines: { node: '>=6.9.0' } - - '@babel/template@7.24.0': - resolution: { integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== } - engines: { node: '>=6.9.0' } - - '@babel/template@7.25.0': - resolution: { integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== } - engines: { node: '>=6.9.0' } - - '@babel/traverse@7.24.0': - resolution: { integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== } - engines: { node: '>=6.9.0' } - - '@babel/traverse@7.25.6': - resolution: { integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== } - engines: { node: '>=6.9.0' } - - '@babel/types@7.24.0': - resolution: { integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== } - engines: { node: '>=6.9.0' } - - '@babel/types@7.24.5': - resolution: { integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== } - engines: { node: '>=6.9.0' } - - '@babel/types@7.25.6': - resolution: { integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== } - engines: { node: '>=6.9.0' } - - '@bcoe/v8-coverage@0.2.3': - resolution: { integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== } - - '@codemirror/autocomplete@6.14.0': - resolution: { integrity: sha512-Kx9BCSOLKmqNXEvmViuzsBQJ2VEa/wWwOATNpixOa+suttTV3rDnAUtAIt5ObAUFjXvZakWfFfF/EbxELnGLzQ== } - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 - - '@codemirror/commands@6.3.3': - resolution: { integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A== } - - '@codemirror/commands@6.5.0': - resolution: { integrity: sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg== } - - '@codemirror/lang-javascript@6.2.2': - resolution: { integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg== } - - '@codemirror/lang-json@6.0.1': - resolution: { integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ== } - - '@codemirror/language@6.10.1': - resolution: { integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ== } - - '@codemirror/lint@6.5.0': - resolution: { integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g== } - - '@codemirror/search@6.5.6': - resolution: { integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q== } - - '@codemirror/state@6.4.1': - resolution: { integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A== } - - '@codemirror/theme-one-dark@6.1.2': - resolution: { integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA== } - - '@codemirror/view@6.25.1': - resolution: { integrity: sha512-2LXLxsQnHDdfGzDvjzAwZh2ZviNJm7im6tGpa0IONIDnFd8RZ80D2SNi8PDi6YjKcMoMRK20v6OmKIdsrwsyoQ== } - - '@codemirror/view@6.26.3': - resolution: { integrity: sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw== } - - '@colors/colors@1.5.0': - resolution: { integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== } - engines: { node: '>=0.1.90' } - - '@colors/colors@1.6.0': - resolution: { integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== } - engines: { node: '>=0.1.90' } - - '@contentful/app-sdk@4.29.0': - resolution: { integrity: sha512-g1PHiCZGImrJq1+ctdb3leCaRrnLaj1yOSHBaibQSzNncH5M5g6zefW7Isy8LHhav5+g+0/WNjsoucBH27d7gg== } - - '@contentful/content-source-maps@0.6.1': - resolution: { integrity: sha512-IjsyhakG17OC5xtIa5agVRsnjjxiJf9HZjpDIV6Ix036Pd5YHJrbyyiF4KNEmLlIqe3hQ0kHGWEs9S/HfECmRQ== } - - '@contentful/rich-text-from-markdown@15.18.8': - resolution: { integrity: sha512-x7uF6+VAGHplPgLdWtznY9uoE/nlr/1kXbC6P4BEZD2loAcPJiVlNQFUCY8TIFa5VkFIEknQEnuQJ2nauC3VEA== } - - '@contentful/rich-text-plain-text-renderer@16.2.8': - resolution: { integrity: sha512-5YQPg1rERTTla1XpQqvLYUtmyz7WPZnNX6o66SYQ7kF8FSjK4HKAVJEpzs8qMlyQCKdlzXUVbu9ItrlStORh1g== } - engines: { node: '>=6.0.0' } - - '@contentful/rich-text-types@16.8.3': - resolution: { integrity: sha512-vXwXDQMDbqITCWfTkU5R/q+uvXWCc1eYNvdZyjtrs0YDIYr4L7QJ2s1r4ZheIs3iVf3AFucKIHgDSpwCAm2wKA== } - engines: { node: '>=6.0.0' } - - '@couchbase/couchbase-darwin-arm64-napi@4.3.1': - resolution: { integrity: sha512-lCDXvd0H6ncRViIRki0N6Ckk24jxiDgq2H30xCnXP5KB9cAj8eGPfWYFg/2Za/4fvnMWhhCVpLyNNZeRJlT/hg== } - engines: { node: '>=16' } - cpu: [arm64] - os: [darwin] - - '@couchbase/couchbase-darwin-x64-napi@4.3.1': - resolution: { integrity: sha512-pXaz2V9f6kSIP+zsNLQ/GMpfhGx7ixZ96j41spVYhuB5XjpESA3UAr2oc+hCY58o3fe+Nixj1+0DmpEEpnW61w== } - engines: { node: '>=16' } - cpu: [x64] - os: [darwin] - - '@couchbase/couchbase-linux-arm64-napi@4.3.1': - resolution: { integrity: sha512-voskaiVSURtQCipz/DYAhGw3mi7m+yxHEG5Z9jeuu3MVKBA2s9JpPbAWxNYdsW4lBM6PJkleWW8y3M9GAhuQJA== } - engines: { node: '>=16' } - cpu: [arm64] - os: [linux] - - '@couchbase/couchbase-linux-x64-napi@4.3.1': - resolution: { integrity: sha512-/7hQFt7DuwY8JG8QHWsZdXV6yXYSavKr9G+bsYEBmRgtvSzz/UYNc/0fZdZTNmgwkJt4ENUsJGc469k6Xe/I9A== } - engines: { node: '>=16' } - cpu: [x64] - os: [linux] - - '@couchbase/couchbase-linuxmusl-x64-napi@4.3.1': - resolution: { integrity: sha512-IG57mSmAmuAD285KnBD3yvXEeny4RtTNahKKSFNDU3bk1CKfeLXss1WdG82SKIpvYWIl8x0eSVbxDtaGgvmezg== } - engines: { node: '>=16' } - cpu: [x64] - os: [linux] - - '@couchbase/couchbase-win32-x64-napi@4.3.1': - resolution: { integrity: sha512-GeY2emczQPeonB3OAg8LdJF4B3iZa1wzyANUf47Nw4Y12eUMD9nQ30hE1QdiS0QXhZ5syikvGeUHnvGRkiSEKg== } - engines: { node: '>=16' } - cpu: [x64] - os: [win32] - - '@crawlee/types@3.8.1': - resolution: { integrity: sha512-CVs4bTtgXDGLkEVLTFwONbIe3dE9GYkZ/uT0bxagzD7/dqJa3HqihOSGE8Wnr2pKl5uGN/3fYJuL5CpfqyFU9A== } - engines: { node: '>=16.0.0' } - - '@cspotcode/source-map-support@0.8.1': - resolution: { integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== } - engines: { node: '>=12' } - - '@csstools/normalize.css@12.1.1': - resolution: { integrity: sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== } - - '@csstools/postcss-cascade-layers@1.1.1': - resolution: { integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-color-function@1.1.1': - resolution: { integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-font-format-keywords@1.0.1': - resolution: { integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-hwb-function@1.0.2': - resolution: { integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-ic-unit@1.0.1': - resolution: { integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-is-pseudo-class@2.0.7': - resolution: { integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-nested-calc@1.0.0': - resolution: { integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-normalize-display-values@1.0.1': - resolution: { integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-oklab-function@1.1.1': - resolution: { integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-progressive-custom-properties@1.3.0': - resolution: { integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.3 - - '@csstools/postcss-stepped-value-functions@1.0.1': - resolution: { integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-text-decoration-shorthand@1.0.0': - resolution: { integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-trigonometric-functions@1.0.2': - resolution: { integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== } - engines: { node: ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/postcss-unset-value@1.0.2': - resolution: { integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - '@csstools/selector-specificity@2.2.0': - resolution: { integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss-selector-parser: ^6.0.10 - - '@cypress/react18@2.0.1': - resolution: { integrity: sha512-T/bhFEvVDIu0lDOKXbEQqVEmmANKWc/pyFDyDoJw3OndRYv9QVEJSsE/VNXIaOQLDjWvQkKBOwd0lLe1hWF/Zg== } - peerDependencies: - '@types/react': ^18 - '@types/react-dom': ^18 - cypress: '*' - react: ^18 - react-dom: ^18 - peerDependenciesMeta: - '@types/react': - optional: true - - '@cypress/request@2.88.12': - resolution: { integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== } - engines: { node: '>= 6' } - - '@cypress/request@3.0.1': - resolution: { integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== } - engines: { node: '>= 6' } - - '@cypress/xvfb@1.2.4': - resolution: { integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== } - - '@dabh/diagnostics@2.0.3': - resolution: { integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== } - - '@datastax/astra-db-ts@0.1.4': - resolution: { integrity: sha512-EG/7UUuEdxpeyGV1fkGIUX5jjUcESToCtohoti0rNMEm01T1E4NXOPHXMnkyXo71zqrlUoTlGn5du+acnlbslQ== } - engines: { node: '>=14.0.0' } - hasBin: true - - '@datastax/astra-db-ts@1.1.0': - resolution: { integrity: sha512-MqXLbhd7JU30LVzytGl7sQUYKwMbV1nU3lnHLAZCy1XLQDlcEynRHh/mJrmVKQGNqezQnCwM4r2knq1sYLyMGw== } - engines: { node: '>=14.0.0' } - - '@discoveryjs/json-ext@0.5.7': - resolution: { integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== } - engines: { node: '>=10.0.0' } - - '@docsearch/css@3.6.1': - resolution: { integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg== } - - '@docsearch/react@3.6.1': - resolution: { integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw== } - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true - - '@docusaurus/core@3.5.2': - resolution: { integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w== } - engines: { node: '>=18.0' } - hasBin: true - peerDependencies: - '@mdx-js/react': ^3.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/cssnano-preset@3.5.2': - resolution: { integrity: sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA== } - engines: { node: '>=18.0' } - - '@docusaurus/logger@3.5.2': - resolution: { integrity: sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw== } - engines: { node: '>=18.0' } - - '@docusaurus/mdx-loader@3.5.2': - resolution: { integrity: sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/module-type-aliases@3.5.2': - resolution: { integrity: sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg== } - peerDependencies: - react: '*' - react-dom: '*' - - '@docusaurus/plugin-content-blog@3.5.2': - resolution: { integrity: sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg== } - engines: { node: '>=18.0' } - peerDependencies: - '@docusaurus/plugin-content-docs': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-content-docs@3.5.2': - resolution: { integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-content-pages@3.5.2': - resolution: { integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-debug@3.5.2': - resolution: { integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-analytics@3.5.2': - resolution: { integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-gtag@3.5.2': - resolution: { integrity: sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-tag-manager@3.5.2': - resolution: { integrity: sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-sitemap@3.5.2': - resolution: { integrity: sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/preset-classic@3.5.2': - resolution: { integrity: sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/react-loadable@6.0.0': - resolution: { integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== } - peerDependencies: - react: '*' - - '@docusaurus/theme-classic@3.5.2': - resolution: { integrity: sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-common@3.5.2': - resolution: { integrity: sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew== } - engines: { node: '>=18.0' } - peerDependencies: - '@docusaurus/plugin-content-docs': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-search-algolia@3.5.2': - resolution: { integrity: sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA== } - engines: { node: '>=18.0' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-translations@3.5.2': - resolution: { integrity: sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw== } - engines: { node: '>=18.0' } - - '@docusaurus/tsconfig@3.5.2': - resolution: { integrity: sha512-rQ7toURCFnWAIn8ubcquDs0ewhPwviMzxh6WpRjBW7sJVCXb6yzwUaY3HMNa0VXCFw+qkIbFywrMTf+Pb4uHWQ== } - - '@docusaurus/types@3.5.2': - resolution: { integrity: sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw== } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/utils-common@3.5.2': - resolution: { integrity: sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg== } - engines: { node: '>=18.0' } - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - - '@docusaurus/utils-validation@3.5.2': - resolution: { integrity: sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA== } - engines: { node: '>=18.0' } - - '@docusaurus/utils@3.5.2': - resolution: { integrity: sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA== } - engines: { node: '>=18.0' } - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - - '@dqbd/tiktoken@1.0.13': - resolution: { integrity: sha512-941kjlHjfI97l6NuH/AwuXV4mHuVnRooDcHNSlzi98hz+4ug3wT4gJcWjSwSZHqeGAEn90lC9sFD+8a9d5Jvxg== } - - '@e2b/code-interpreter@0.0.5': - resolution: { integrity: sha512-ToFQ6N6EU8t91z3EJzh+mG+zf7uK8I1PRLWeu1f3bPS0pAJfM0puzBWOB3XlF9A9R5zZu/g8iO1gGPQXzXY5vA== } - engines: { node: '>=18' } - - '@elastic/elasticsearch@8.12.2': - resolution: { integrity: sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ== } - engines: { node: '>=18' } - - '@elastic/transport@8.4.1': - resolution: { integrity: sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA== } - engines: { node: '>=16' } - - '@emotion/babel-plugin@11.11.0': - resolution: { integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== } - - '@emotion/cache@11.11.0': - resolution: { integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== } - - '@emotion/hash@0.9.1': - resolution: { integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== } - - '@emotion/is-prop-valid@0.8.8': - resolution: { integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== } - - '@emotion/is-prop-valid@1.2.2': - resolution: { integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== } - - '@emotion/memoize@0.7.4': - resolution: { integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== } - - '@emotion/memoize@0.8.1': - resolution: { integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== } - - '@emotion/react@11.11.4': - resolution: { integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== } - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.1.3': - resolution: { integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== } - - '@emotion/sheet@1.2.2': - resolution: { integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== } - - '@emotion/styled@11.11.0': - resolution: { integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== } - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/stylis@0.8.5': - resolution: { integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== } - - '@emotion/unitless@0.7.5': - resolution: { integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== } - - '@emotion/unitless@0.8.1': - resolution: { integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== } - - '@emotion/use-insertion-effect-with-fallbacks@1.0.1': - resolution: { integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== } - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.2.1': - resolution: { integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== } - - '@emotion/weak-memoize@0.3.1': - resolution: { integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== } - - '@esbuild-kit/cjs-loader@2.4.4': - resolution: { integrity: sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg== } - deprecated: 'Merged into tsx: https://tsx.is' - - '@esbuild-kit/core-utils@3.3.2': - resolution: { integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ== } - deprecated: 'Merged into tsx: https://tsx.is' - - '@esbuild-kit/esm-loader@2.6.5': - resolution: { integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA== } - deprecated: 'Merged into tsx: https://tsx.is' - - '@esbuild/aix-ppc64@0.19.12': - resolution: { integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== } - engines: { node: '>=12' } - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.17.19': - resolution: { integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.18.20': - resolution: { integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.19.12': - resolution: { integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.17.19': - resolution: { integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== } - engines: { node: '>=12' } - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.18.20': - resolution: { integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== } - engines: { node: '>=12' } - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: { integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== } - engines: { node: '>=12' } - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.19': - resolution: { integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== } - engines: { node: '>=12' } - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.18.20': - resolution: { integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== } - engines: { node: '>=12' } - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: { integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== } - engines: { node: '>=12' } - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.19': - resolution: { integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== } - engines: { node: '>=12' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.18.20': - resolution: { integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.19.12': - resolution: { integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== } - engines: { node: '>=12' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.19': - resolution: { integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== } - engines: { node: '>=12' } - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: { integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== } - engines: { node: '>=12' } - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: { integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== } - engines: { node: '>=12' } - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.19': - resolution: { integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== } - engines: { node: '>=12' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: { integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== } - engines: { node: '>=12' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: { integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.19': - resolution: { integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== } - engines: { node: '>=12' } - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: { integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== } - engines: { node: '>=12' } - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: { integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== } - engines: { node: '>=12' } - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.19': - resolution: { integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== } - engines: { node: '>=12' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.18.20': - resolution: { integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.19.12': - resolution: { integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== } - engines: { node: '>=12' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.19': - resolution: { integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== } - engines: { node: '>=12' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: { integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== } - engines: { node: '>=12' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: { integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== } - engines: { node: '>=12' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.19': - resolution: { integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== } - engines: { node: '>=12' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: { integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== } - engines: { node: '>=12' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: { integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== } - engines: { node: '>=12' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.17.19': - resolution: { integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== } - engines: { node: '>=12' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: { integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== } - engines: { node: '>=12' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: { integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== } - engines: { node: '>=12' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.19': - resolution: { integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== } - engines: { node: '>=12' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.18.20': - resolution: { integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== } - engines: { node: '>=12' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: { integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== } - engines: { node: '>=12' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.19': - resolution: { integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== } - engines: { node: '>=12' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.18.20': - resolution: { integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== } - engines: { node: '>=12' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: { integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== } - engines: { node: '>=12' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.19': - resolution: { integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== } - engines: { node: '>=12' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.18.20': - resolution: { integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== } - engines: { node: '>=12' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: { integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== } - engines: { node: '>=12' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.19': - resolution: { integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== } - engines: { node: '>=12' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.18.20': - resolution: { integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== } - engines: { node: '>=12' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: { integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== } - engines: { node: '>=12' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.19': - resolution: { integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== } - engines: { node: '>=12' } - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.18.20': - resolution: { integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== } - engines: { node: '>=12' } - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: { integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== } - engines: { node: '>=12' } - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.19': - resolution: { integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== } - engines: { node: '>=12' } - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.18.20': - resolution: { integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== } - engines: { node: '>=12' } - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.19.12': - resolution: { integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== } - engines: { node: '>=12' } - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.17.19': - resolution: { integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== } - engines: { node: '>=12' } - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.18.20': - resolution: { integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== } - engines: { node: '>=12' } - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: { integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== } - engines: { node: '>=12' } - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.19': - resolution: { integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== } - engines: { node: '>=12' } - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.18.20': - resolution: { integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== } - engines: { node: '>=12' } - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.19.12': - resolution: { integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== } - engines: { node: '>=12' } - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.19': - resolution: { integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== } - engines: { node: '>=12' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.18.20': - resolution: { integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== } - engines: { node: '>=12' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.19.12': - resolution: { integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== } - engines: { node: '>=12' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.19': - resolution: { integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== } - engines: { node: '>=12' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.18.20': - resolution: { integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== } - engines: { node: '>=12' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: { integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== } - engines: { node: '>=12' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.19': - resolution: { integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== } - engines: { node: '>=12' } - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.18.20': - resolution: { integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== } - engines: { node: '>=12' } - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: { integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== } - engines: { node: '>=12' } - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: { integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: { integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - - '@eslint/eslintrc@0.4.3': - resolution: { integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== } - engines: { node: ^10.12.0 || >=12.0.0 } - - '@eslint/eslintrc@2.1.4': - resolution: { integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@eslint/js@8.37.0': - resolution: { integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@eslint/js@8.57.0': - resolution: { integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@exodus/schemasafe@1.3.0': - resolution: { integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== } - - '@fastify/busboy@2.1.1': - resolution: { integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== } - engines: { node: '>=14' } - - '@floating-ui/core@1.6.0': - resolution: { integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== } - - '@floating-ui/dom@1.6.3': - resolution: { integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== } - - '@floating-ui/react-dom@2.0.8': - resolution: { integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== } - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.1': - resolution: { integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== } - - '@gar/promisify@1.1.3': - resolution: { integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== } - - '@getzep/zep-cloud@1.0.7': - resolution: { integrity: sha512-QL0v8SBqDVm/CX447pAGaw55hIE8U3WfOCjmiGx/S0ICamtJFRmVZDeOpCzb6sPPxVE9OjaSaCuW8ORvzHb2Ew== } - peerDependencies: - '@langchain/core': 0.2.18 - langchain: ~0.1.19 - peerDependenciesMeta: - '@langchain/core': - optional: true - langchain: - optional: true - - '@getzep/zep-js@0.9.0': - resolution: { integrity: sha512-GNaH7EwAisAaMuaUZzOR3hk3yTc7LXrqboPfSN6mZE0rAWGHOjT7V53Hec6yFJqFyXs4/7DsJvZlOcs+gEygNQ== } - engines: { node: '>=18.0.0' } - - '@gomomento/generated-types@0.106.1': - resolution: { integrity: sha512-ZU4UwavbZArUoF/5nlRnKgriSZ1CJTNcYa/LhIlOcUuCGIBKi4W1+/rd/q/M5g9SspMdTawywRgncGYqwjrUpw== } - - '@gomomento/sdk-core@1.68.1': - resolution: { integrity: sha512-T527eUIn8+cYFDWUY0hoVRBI+M4jkY5WvB9EIS6M13mVk2XH5sgX9X3MNQCPU+KR4YDvvMH8BPhWydQEazZEQQ== } - engines: { node: '>= 14' } - - '@gomomento/sdk@1.68.1': - resolution: { integrity: sha512-e3rko4EI2+975jfZ+7bXugjHJD32pqtBLs1bMFhsqBUm2daMU86i/5HvQ8jCpCsKpaQpsLS37SlZKkJ8LZJ3Aw== } - engines: { node: '>= 14' } - - '@google-ai/generativelanguage@2.6.0': - resolution: { integrity: sha512-T2tULO1/j4Gs1oYF9OMKCGXHE/m7aCPUonav32iu+sA4nN+acy5Z+Sz6yR4EzL+LkPSfkeW0FOjeRGkl5xtwvw== } - engines: { node: '>=14.0.0' } - - '@google-cloud/vertexai@1.1.0': - resolution: { integrity: sha512-hfwfdlVpJ+kM6o2b5UFfPnweBcz8tgHAFRswnqUKYqLJsvKU0DDD0Z2/YKoHyAUoPJAv20qg6KlC3msNeUKUiw== } - engines: { node: '>=18.0.0' } - - '@google/generative-ai@0.15.0': - resolution: { integrity: sha512-zs37judcTYFJf1U7tnuqnh7gdzF6dcWj9pNRxjA5JTONRoiQ0htrRdbefRFiewOIfXwhun5t9hbd2ray7812eQ== } - engines: { node: '>=18.0.0' } - - '@graphql-typed-document-node/core@3.2.0': - resolution: { integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@grpc/grpc-js@1.10.0': - resolution: { integrity: sha512-tx+eoEsqkMkLCHR4OOplwNIaJ7SVZWzeVKzEMBz8VR+TbssgBYOP4a0P+KQiQ6LaTG4SGaIEu7YTS8xOmkOWLA== } - engines: { node: ^8.13.0 || >=10.10.0 } - - '@grpc/grpc-js@1.10.10': - resolution: { integrity: sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg== } - engines: { node: '>=12.10.0' } - - '@grpc/grpc-js@1.10.8': - resolution: { integrity: sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg== } - engines: { node: '>=12.10.0' } - - '@grpc/grpc-js@1.8.17': - resolution: { integrity: sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw== } - engines: { node: ^8.13.0 || >=10.10.0 } - - '@grpc/proto-loader@0.7.10': - resolution: { integrity: sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== } - engines: { node: '>=6' } - hasBin: true - - '@grpc/proto-loader@0.7.13': - resolution: { integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== } - engines: { node: '>=6' } - hasBin: true - - '@grpc/proto-loader@0.7.7': - resolution: { integrity: sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ== } - engines: { node: '>=6' } - hasBin: true - - '@hapi/hoek@9.3.0': - resolution: { integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== } - - '@hapi/topo@5.1.0': - resolution: { integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== } - - '@hookform/error-message@2.0.1': - resolution: { integrity: sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg== } - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - react-hook-form: ^7.0.0 - - '@httptoolkit/websocket-stream@6.0.1': - resolution: { integrity: sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ== } - - '@huggingface/inference@1.8.0': - resolution: { integrity: sha512-Dkh7PiyMf6TINRocQsdceiR5LcqJiUHgWjaBMRpCUOCbs+GZA122VH9q+wodoSptj6rIQf7wIwtDsof+/gd0WA== } - engines: { node: '>=18' } - - '@huggingface/inference@2.6.4': - resolution: { integrity: sha512-Xna7arltBSBoKaH3diGi3sYvkExgJMd/pF4T6vl2YbmDccbr1G/X5EPZ2048p+YgrJYG1jTYFCtY6Dr3HvJaow== } - engines: { node: '>=18' } - - '@huggingface/inference@2.7.0': - resolution: { integrity: sha512-u7Fn637Q3f7nUB1tajM4CgzhvoFQkOQr5W5Fm+2wT9ETgGoLBh25BLlYPTJRjAd2WY01s71v0lqAwNvHHCc3mg== } - engines: { node: '>=18' } - - '@huggingface/jinja@0.2.2': - resolution: { integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA== } - engines: { node: '>=18' } - - '@huggingface/tasks@0.10.6': - resolution: { integrity: sha512-aGqvPsZZ8JLkAs7IChsEZil/aNLoMsqDryDFqJV7N5u//EaHzHAU6ORwVxEJIWJ9MIqJauJ9f7LYNtKC5Axh3w== } - - '@humanwhocodes/config-array@0.11.14': - resolution: { integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== } - engines: { node: '>=10.10.0' } - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/config-array@0.5.0': - resolution: { integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== } - engines: { node: '>=10.10.0' } - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } - engines: { node: '>=12.22' } - - '@humanwhocodes/object-schema@1.2.1': - resolution: { integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== } - deprecated: Use @eslint/object-schema instead - - '@humanwhocodes/object-schema@2.0.2': - resolution: { integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== } - deprecated: Use @eslint/object-schema instead - - '@icons/material@0.2.4': - resolution: { integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== } - peerDependencies: - react: '*' - - '@ioredis/commands@1.2.0': - resolution: { integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== } - - '@isaacs/cliui@8.0.2': - resolution: { integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== } - engines: { node: '>=12' } - - '@isaacs/string-locale-compare@1.1.0': - resolution: { integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== } - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: { integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== } - engines: { node: '>=8' } - - '@istanbuljs/schema@0.1.3': - resolution: { integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== } - engines: { node: '>=8' } - - '@jest/console@27.5.1': - resolution: { integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/console@28.1.3': - resolution: { integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - - '@jest/console@29.7.0': - resolution: { integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - '@jest/core@27.5.1': - resolution: { integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/core@29.7.0': - resolution: { integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@27.5.1': - resolution: { integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/environment@29.7.0': - resolution: { integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - '@jest/expect-utils@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@27.5.1': - resolution: { integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': - resolution: { integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': - resolution: { integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/reporters@29.7.0': - resolution: { integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@28.1.3': - resolution: { integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - - '@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@27.5.1': - resolution: { integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': - resolution: { integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/test-result@28.1.3': - resolution: { integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1': - resolution: { integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': - resolution: { integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': - resolution: { integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/types@28.1.3': - resolution: { integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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.5': - resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } - 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.4.15': - resolution: { integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== } - - '@jridgewell/trace-mapping@0.3.25': - resolution: { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } - - '@jridgewell/trace-mapping@0.3.9': - resolution: { integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== } - - '@js-sdsl/ordered-map@4.4.2': - resolution: { integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== } - - '@ladle/react-context@1.0.1': - resolution: { integrity: sha512-xVQ8siyOEQG6e4Knibes1uA3PTyXnqiMmfSmd5pIbkzeDty8NCBtYHhTXSlfmcDNEsw/G8OzNWo4VbyQAVDl2A== } - peerDependencies: - react: '>=16.14.0' - react-dom: '>=16.14.0' - - '@ladle/react@2.5.1': - resolution: { integrity: sha512-xTSs5dUIK+zQzHNo6i3SDuA9lu0k8nUJ7/RNeNJ7oTkX05FfBSxCUeIKeUAjaVNm/axvylVhdGDm+yLBIxq8EA== } - engines: { node: '>=16.0.0' } - hasBin: true - peerDependencies: - react: '>=16.14.0' - react-dom: '>=16.14.0' - - '@langchain/anthropic@0.2.1': - resolution: { integrity: sha512-HoN8uHks0dnA8yK6sWO6Oz3N4c5YxLAGhNzxxAD4bIBnmD2ZvQq54Skjxh+m0ANkbjH7yJwRqU3HJyIhOUeLtA== } - engines: { node: '>=18' } - - '@langchain/aws@0.0.9': - resolution: { integrity: sha512-MiLG27Bxg6bZo44QA1ksPirW6qY/p6ErdZAnlrW2PtDO0JqF2hHct5KdW+meXd7bT5U53hONZXF1J/oT+Q+tUg== } - engines: { node: '>=18' } - - '@langchain/cohere@0.0.7': - resolution: { integrity: sha512-ICSrSOT6FzSbR+xnbkP6BxXhuom1ViPRiy8K8KrL6bHbTiR5v1UnpskTWRpyhQS1GA6+3t1gp7XHxB5CZzLyqQ== } - engines: { node: '>=18' } - - '@langchain/community@0.2.17': - resolution: { integrity: sha512-lbmOvOvE0L2EV8lUb/ZcYyrLGF0sveGpYg9A0m6F/nDhuPG1HZqHvU/LiHsCaVO2WJPGowibMPTC02fUG/6dKA== } - engines: { node: '>=18' } - peerDependencies: - '@aws-crypto/sha256-js': ^5.0.0 - '@aws-sdk/client-bedrock-agent-runtime': ^3.583.0 - '@aws-sdk/client-bedrock-runtime': ^3.422.0 - '@aws-sdk/client-dynamodb': ^3.310.0 - '@aws-sdk/client-kendra': ^3.352.0 - '@aws-sdk/client-lambda': ^3.310.0 - '@aws-sdk/client-s3': ^3.310.0 - '@aws-sdk/client-sagemaker-runtime': ^3.310.0 - '@aws-sdk/client-sfn': ^3.310.0 - '@aws-sdk/credential-provider-node': ^3.388.0 - '@azure/search-documents': ^12.0.0 - '@azure/storage-blob': ^12.15.0 - '@browserbasehq/sdk': '*' - '@clickhouse/client': ^0.2.5 - '@cloudflare/ai': '*' - '@datastax/astra-db-ts': ^1.0.0 - '@elastic/elasticsearch': ^8.4.0 - '@getmetal/metal-sdk': '*' - '@getzep/zep-cloud': ^1.0.6 - '@getzep/zep-js': ^0.9.0 - '@gomomento/sdk': ^1.51.1 - '@gomomento/sdk-core': ^1.51.1 - '@google-ai/generativelanguage': '*' - '@google-cloud/storage': ^6.10.1 || ^7.7.0 - '@gradientai/nodejs-sdk': ^1.2.0 - '@huggingface/inference': ^2.6.4 - '@layerup/layerup-security': ^1.5.12 - '@mendable/firecrawl-js': ^0.0.13 - '@mlc-ai/web-llm': 0.2.46 - '@mozilla/readability': '*' - '@neondatabase/serverless': '*' - '@notionhq/client': ^2.2.10 - '@opensearch-project/opensearch': '*' - '@pinecone-database/pinecone': '*' - '@planetscale/database': ^1.8.0 - '@premai/prem-sdk': ^0.3.25 - '@qdrant/js-client-rest': ^1.8.2 - '@raycast/api': ^1.55.2 - '@rockset/client': ^0.9.1 - '@smithy/eventstream-codec': ^2.0.5 - '@smithy/protocol-http': ^3.0.6 - '@smithy/signature-v4': ^2.0.10 - '@smithy/util-utf8': ^2.0.0 - '@spider-cloud/spider-client': ^0.0.21 - '@supabase/postgrest-js': ^1.1.1 - '@supabase/supabase-js': ^2.10.0 - '@tensorflow-models/universal-sentence-encoder': '*' - '@tensorflow/tfjs-converter': '*' - '@tensorflow/tfjs-core': '*' - '@upstash/ratelimit': ^1.1.3 - '@upstash/redis': ^1.20.6 - '@upstash/vector': ^1.1.1 - '@vercel/kv': ^0.2.3 - '@vercel/postgres': ^0.5.0 - '@writerai/writer-sdk': ^0.40.2 - '@xata.io/client': ^0.28.0 - '@xenova/transformers': ^2.5.4 - '@zilliz/milvus2-sdk-node': '>=2.3.5' - apify-client: ^2.7.1 - assemblyai: ^4.0.0 - better-sqlite3: '>=9.4.0 <12.0.0' - cassandra-driver: ^4.7.2 - cborg: ^4.1.1 - cheerio: ^1.0.0-rc.12 - chromadb: '*' - closevector-common: 0.1.3 - closevector-node: 0.1.6 - closevector-web: 0.1.6 - cohere-ai: '*' - convex: ^1.3.1 - couchbase: ^4.3.0 - crypto-js: ^4.2.0 - d3-dsv: ^2.0.0 - discord.js: ^14.14.1 - dria: ^0.0.3 - duck-duck-scrape: ^2.2.5 - epub2: ^3.0.1 - faiss-node: ^0.5.1 - firebase-admin: ^11.9.0 || ^12.0.0 - google-auth-library: '*' - googleapis: ^126.0.1 - hnswlib-node: ^3.0.0 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - interface-datastore: ^8.2.11 - ioredis: ^5.3.2 - it-all: ^3.0.4 - jsdom: '*' - jsonwebtoken: ^9.0.2 - llmonitor: ^0.5.9 - lodash: ^4.17.21 - lunary: ^0.6.11 - mammoth: ^1.6.0 - mongodb: '>=5.2.0' - mysql2: ^3.3.3 - neo4j-driver: '*' - node-llama-cpp: '*' - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - pdf-parse: 1.1.1 - pg: ^8.11.0 - pg-copy-streams: ^6.0.5 - pickleparser: ^0.2.1 - playwright: ^1.32.1 - portkey-ai: ^0.1.11 - puppeteer: ^19.7.2 - redis: '*' - replicate: ^0.29.4 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.3 - typeorm: ^0.3.20 - typesense: ^1.5.3 - usearch: ^1.1.1 - vectordb: ^0.1.4 - voy-search: 0.6.2 - weaviate-ts-client: '*' - web-auth-library: ^1.0.3 - ws: ^8.14.2 - youtube-transcript: ^1.0.6 - youtubei.js: ^9.1.0 - peerDependenciesMeta: - '@aws-crypto/sha256-js': - optional: true - '@aws-sdk/client-bedrock-agent-runtime': - optional: true - '@aws-sdk/client-bedrock-runtime': - optional: true - '@aws-sdk/client-dynamodb': - optional: true - '@aws-sdk/client-kendra': - optional: true - '@aws-sdk/client-lambda': - optional: true - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sagemaker-runtime': - optional: true - '@aws-sdk/client-sfn': - optional: true - '@aws-sdk/credential-provider-node': - optional: true - '@azure/search-documents': - optional: true - '@azure/storage-blob': - optional: true - '@browserbasehq/sdk': - optional: true - '@clickhouse/client': - optional: true - '@cloudflare/ai': - optional: true - '@datastax/astra-db-ts': - optional: true - '@elastic/elasticsearch': - optional: true - '@getmetal/metal-sdk': - optional: true - '@getzep/zep-cloud': - optional: true - '@getzep/zep-js': - optional: true - '@gomomento/sdk': - optional: true - '@gomomento/sdk-core': - optional: true - '@google-ai/generativelanguage': - optional: true - '@google-cloud/storage': - optional: true - '@gradientai/nodejs-sdk': - optional: true - '@huggingface/inference': - optional: true - '@layerup/layerup-security': - optional: true - '@mendable/firecrawl-js': - optional: true - '@mlc-ai/web-llm': - optional: true - '@mozilla/readability': - optional: true - '@neondatabase/serverless': - optional: true - '@notionhq/client': - optional: true - '@opensearch-project/opensearch': - optional: true - '@pinecone-database/pinecone': - optional: true - '@planetscale/database': - optional: true - '@premai/prem-sdk': - optional: true - '@qdrant/js-client-rest': - optional: true - '@raycast/api': - optional: true - '@rockset/client': - optional: true - '@smithy/eventstream-codec': - optional: true - '@smithy/protocol-http': - optional: true - '@smithy/signature-v4': - optional: true - '@smithy/util-utf8': - optional: true - '@spider-cloud/spider-client': - optional: true - '@supabase/postgrest-js': - optional: true - '@supabase/supabase-js': - optional: true - '@tensorflow-models/universal-sentence-encoder': - optional: true - '@tensorflow/tfjs-converter': - optional: true - '@tensorflow/tfjs-core': - optional: true - '@upstash/ratelimit': - optional: true - '@upstash/redis': - optional: true - '@upstash/vector': - optional: true - '@vercel/kv': - optional: true - '@vercel/postgres': - optional: true - '@writerai/writer-sdk': - optional: true - '@xata.io/client': - optional: true - '@xenova/transformers': - optional: true - '@zilliz/milvus2-sdk-node': - optional: true - apify-client: - optional: true - assemblyai: - optional: true - better-sqlite3: - optional: true - cassandra-driver: - optional: true - cborg: - optional: true - cheerio: - optional: true - chromadb: - optional: true - closevector-common: - optional: true - closevector-node: - optional: true - closevector-web: - optional: true - cohere-ai: - optional: true - convex: - optional: true - couchbase: - optional: true - crypto-js: - optional: true - d3-dsv: - optional: true - discord.js: - optional: true - dria: - optional: true - duck-duck-scrape: - optional: true - epub2: - optional: true - faiss-node: - optional: true - firebase-admin: - optional: true - google-auth-library: - optional: true - googleapis: - optional: true - hnswlib-node: - optional: true - html-to-text: - optional: true - ignore: - optional: true - interface-datastore: - optional: true - ioredis: - optional: true - it-all: - optional: true - jsdom: - optional: true - jsonwebtoken: - optional: true - llmonitor: - optional: true - lodash: - optional: true - lunary: - optional: true - mammoth: - optional: true - mongodb: - optional: true - mysql2: - optional: true - neo4j-driver: - optional: true - node-llama-cpp: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true - pg: - optional: true - pg-copy-streams: - optional: true - pickleparser: - optional: true - playwright: - optional: true - portkey-ai: - optional: true - puppeteer: - optional: true - redis: - optional: true - replicate: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - typesense: - optional: true - usearch: - optional: true - vectordb: - optional: true - voy-search: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - youtube-transcript: - optional: true - youtubei.js: - optional: true - - '@langchain/core@0.2.18': - resolution: { integrity: sha512-ru542BwNcsnDfjTeDbIkFIchwa54ctHZR+kVrC8U9NPS9/36iM8p8ruprOV7Zccj/oxtLE5UpEhV+9MZhVcFlA== } - engines: { node: '>=18' } - - '@langchain/exa@0.0.5': - resolution: { integrity: sha512-KXNCYLxKs6rDGw+jcrFqE4CrIooUgzU0ip0k76YFptvMPrqLpNurYyqr5mAys0qn2vFavFfC3eJV/wrZ602EfA== } - engines: { node: '>=18' } - - '@langchain/google-common@0.0.20': - resolution: { integrity: sha512-kH1Bwh1tKxzIU+IFhOLLxuY7GjYjO+iebd3Gaih3smtQNldMidrYO2CRYtesnvD9AKJxvforU7neeux39fysoA== } - engines: { node: '>=18' } - - '@langchain/google-gauth@0.0.19': - resolution: { integrity: sha512-T8kTEeIRIYkdZC7RfdfbWBuH7uz3PztDU0X0o9dlQDFlGdln4bSsnvprTN8eiUQ8AVsNCRnfh0WIOyv89qzJFA== } - engines: { node: '>=18' } - - '@langchain/google-genai@0.0.22': - resolution: { integrity: sha512-egxPpu+GdYigUYOFGDujKt6ziYZ/ELrTvEZ17TJYUgLyvw/gfzr5lz0hU4CgKKUwI/tIk6ZU5I2uaC4oFDkRSQ== } - engines: { node: '>=18' } - - '@langchain/google-vertexai@0.0.19': - resolution: { integrity: sha512-yqXi0S44dtwmdgHfQZ80A7MsIUJR97I5QUe1urorfUvN42s2NMM1PTY+3VHFtVpUPV9506Pp2+/Fg7NEQz/cDw== } - engines: { node: '>=18' } - - '@langchain/groq@0.0.8': - resolution: { integrity: sha512-xqbe35K+12fiYtC/uqkaTT4AXxqL5uvhCrHzc+nBoFkTwM6YfTFE1ch95RZ5G2JnK1U9pKAre/trUSzlU1/6Kg== } - engines: { node: '>=18' } - - '@langchain/langgraph@0.0.22': - resolution: { integrity: sha512-VdWUDRo/CXe1SjR34WxtbIwxIykSKjbdduKaNxCIPCZYxhfeL+NY3xi3F8ES6RTQV9gNYrl6ODuuXQtACQpK7g== } - engines: { node: '>=18' } - peerDependencies: - better-sqlite3: ^9.5.0 - peerDependenciesMeta: - better-sqlite3: - optional: true - - '@langchain/mistralai@0.0.26': - resolution: { integrity: sha512-NoXmOTrkHjfCcgWQprbPujCvFktJFPcFTAcJEc4jY0J+PRiwWfhe4Xx2MevWTSV9clWm2Pil454nJ1CYEvh3Ng== } - engines: { node: '>=18' } - - '@langchain/mongodb@0.0.1': - resolution: { integrity: sha512-5CWh73s7D9/WraXcZJTqc6VRkITNe71G4uXBO/KwtE1E/7DlYT8EvWzX6Er+HvVp1EsBGlcJGUp9St/lvbfrPg== } - engines: { node: '>=18' } - - '@langchain/ollama@0.0.2': - resolution: { integrity: sha512-RMgEensnUeL9+4/5Z2v8E2bjEazyq0THQtYEXF9M4cd2DRwIwq9KJmQMLwOqIZO4vNVWJd5Vn4v17ZRnikGytg== } - engines: { node: '>=18' } - - '@langchain/openai@0.0.30': - resolution: { integrity: sha512-FgKl+bJFl9nDWynfYHb2A3VeTtzgEyzOM/DJZvRuVJ8yYejrLL/tE50G37gDeHOoBTm/12liLY4qhB71ONCVRA== } - engines: { node: '>=18' } - - '@langchain/openai@0.1.3': - resolution: { integrity: sha512-riv/JC9x2A8b7GcHu8sx+mlZJ8KAwSSi231IPTlcciYnKozmrQ5H0vrtiD31fxiDbaRsk7tyCpkSBIOQEo7CyQ== } - engines: { node: '>=18' } - - '@langchain/pinecone@0.0.3': - resolution: { integrity: sha512-uhmGdiF6OLL583kQNMdKl799+3E1nQphrZ4a/Y/yQcXKUPVNZYwNLUimK1ws80RBhfqR7DKvywkvERoOsvCDlA== } - engines: { node: '>=18' } - - '@langchain/qdrant@0.0.5': - resolution: { integrity: sha512-zhBHE3rSBUBzIqBnR4RQB48DwXLPp5LGbCPfFCDrum4ZXDUXHQNq6Jrq8OAm6UFfx9IzMQ07Dlr7/VO6w3BlaQ== } - engines: { node: '>=18' } - - '@langchain/textsplitters@0.0.1': - resolution: { integrity: sha512-DqYsdZ/W2e4DlC8uFEFkYMtlAAmtDJgEJIl59XkueCQ0yNIMi1r9zpiRykaK/hBNEwE8FnQxixGj3mXwVTerdQ== } - engines: { node: '>=18' } - - '@langchain/weaviate@0.0.1': - resolution: { integrity: sha512-Lf6zgTf6i/fsPNlkDxPRLA3LEz2Wwgk6LNe54dByt0oZM4W+N4n5n/gDwojsXAKNEF5alXUv2N6yAOcUuXSbxg== } - engines: { node: '>=18' } - - '@leichtgewicht/ip-codec@2.0.4': - resolution: { integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== } - - '@lezer/common@1.2.1': - resolution: { integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== } - - '@lezer/highlight@1.2.0': - resolution: { integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA== } - - '@lezer/javascript@1.4.13': - resolution: { integrity: sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow== } - - '@lezer/json@1.0.2': - resolution: { integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ== } - - '@lezer/lr@1.4.0': - resolution: { integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== } - - '@llamaindex/cloud@0.0.5': - resolution: { integrity: sha512-8HBSiAZkmX1RvpEM2czEVKqMUCKk7uvMSiDpMGWlEj3MUKBYCh+r8E2TtVhZfU4TunEI7nJRMcVBfXDyFz6Lpw== } - peerDependencies: - node-fetch: ^3.3.2 - peerDependenciesMeta: - node-fetch: - optional: true - - '@llamaindex/env@0.1.3': - resolution: { integrity: sha512-PM9cZ8x6jjdugWG30vBxb9Ju2LFmGY0l0pN7AUXXKULFNytQddx96xHh07pV/juf/WqjhFp75FVAykAlqO/qzQ== } - peerDependencies: - '@aws-crypto/sha256-js': ^5.2.0 - pathe: ^1.1.2 - peerDependenciesMeta: - '@aws-crypto/sha256-js': - optional: true - pathe: - optional: true - - '@mapbox/node-pre-gyp@1.0.11': - resolution: { integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== } - hasBin: true - - '@mdx-js/mdx@3.0.1': - resolution: { integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA== } - - '@mdx-js/react@3.0.1': - resolution: { integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== } - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@mendable/firecrawl-js@0.0.28': - resolution: { integrity: sha512-Xa+ZbBQkoR/KHM1ZpvJBdLWSCdRoRGyllDNoVvhKxGv9qXZk9h/lBxbqp3Kc1Kg2L2JJnJCkmeaTUCAn8y33GA== } - - '@mistralai/mistralai@0.1.3': - resolution: { integrity: sha512-WUHxC2xdeqX9PTXJEqdiNY54vT2ir72WSJrZTTBKRnkfhX6zIfCYA24faRlWjUB5WTpn+wfdGsTMl3ArijlXFA== } - - '@mistralai/mistralai@0.2.0': - resolution: { integrity: sha512-mYjE9NovwWdhSXd6KvOgjWUyka2qlxhuohsqhRN4rFtH2MdTDJhAeH3Aqvu3P9q71Xz9oBX2pNWrPVVzkgwZTg== } - - '@mistralai/mistralai@0.4.0': - resolution: { integrity: sha512-KmFzNro1RKxIFh19J3osmUQhucefBBauMXN5fa9doG6dT9OHR/moBvvn+riVlR7c0AVfuxO8Dfa03AyLYYzbyg== } - - '@monaco-editor/loader@1.4.0': - resolution: { integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg== } - peerDependencies: - monaco-editor: '>= 0.21.0 < 1' - - '@monaco-editor/react@4.6.0': - resolution: { integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw== } - peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@mongodb-js/saslprep@1.1.5': - resolution: { integrity: sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA== } - - '@mui/base@5.0.0-beta.27': - resolution: { integrity: sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/base@5.0.0-beta.40': - resolution: { integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/core-downloads-tracker@5.15.12': - resolution: { integrity: sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA== } - - '@mui/icons-material@5.0.3': - resolution: { integrity: sha512-Lktn+4GNnXdVrOCUUvNNvOD9VyrGazWBsJy0BQeQgBe/+IjFMdlcNrDEUIlGlA5ZXOq7Mr/Mv9Os02mgF65jiw== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@mui/material': ^5.0.0-rc.0 - '@types/react': ^16.8.6 || ^17.0.0 - react: ^17.0.2 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/lab@5.0.0-alpha.156': - resolution: { integrity: sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@mui/material': '>=5.10.11' - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - - '@mui/material@5.15.0': - resolution: { integrity: sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - - '@mui/private-theming@5.15.12': - resolution: { integrity: sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/styled-engine@5.15.11': - resolution: { integrity: sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - - '@mui/system@5.15.12': - resolution: { integrity: sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - - '@mui/types@7.2.13': - resolution: { integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/types@7.2.14': - resolution: { integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@5.15.0': - resolution: { integrity: sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@5.16.0': - resolution: { integrity: sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/x-data-grid@6.8.0': - resolution: { integrity: sha512-L4CJb2zJDkyBXItfY1QwXt57ap1vIigPGiNrmuJZ8APS1jHafO1dftBWSfJyDJXsnQ5UsDBXsX1nagX51AebpQ== } - engines: { node: '>=14.0.0' } - peerDependencies: - '@mui/material': ^5.4.1 - '@mui/system': ^5.4.1 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - - '@next-auth/prisma-adapter@1.0.7': - resolution: { integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw== } - peerDependencies: - '@prisma/client': '>=2.26.0 || >=3' - next-auth: ^4 - - '@next/bundle-analyzer@13.5.6': - resolution: { integrity: sha512-4P5YVpR3N/B5+p0TQ/rPAr+9fsjkdfCVTGzJhKwE7XHqS+QME4gYxAYeGKkfkHEkP2A3GKXs8QSp0LjIvWLI3g== } - - '@next/env@14.2.5': - resolution: { integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA== } - - '@next/eslint-plugin-next@13.2.4': - resolution: { integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ== } - - '@next/eslint-plugin-next@13.5.6': - resolution: { integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg== } - - '@next/swc-darwin-arm64@14.2.5': - resolution: { integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ== } - engines: { node: '>= 10' } - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@14.2.5': - resolution: { integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA== } - engines: { node: '>= 10' } - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@14.2.5': - resolution: { integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA== } - engines: { node: '>= 10' } - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.2.5': - resolution: { integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA== } - engines: { node: '>= 10' } - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.2.5': - resolution: { integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ== } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.2.5': - resolution: { integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ== } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@14.2.5': - resolution: { integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw== } - engines: { node: '>= 10' } - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.5': - resolution: { integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg== } - engines: { node: '>= 10' } - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.5': - resolution: { integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g== } - engines: { node: '>= 10' } - cpu: [x64] - os: [win32] - - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: { integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== } - - '@nodelib/fs.scandir@2.1.5': - resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } - engines: { node: '>= 8' } - - '@nodelib/fs.stat@2.0.5': - resolution: { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } - engines: { node: '>= 8' } - - '@nodelib/fs.walk@1.2.8': - resolution: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } - engines: { node: '>= 8' } - - '@notionhq/client@2.2.14': - resolution: { integrity: sha512-oqUefZtCiJPCX+74A1Os9OVTef3fSnVWe2eVQtU1HJSD+nsfxfhwvDKnzJTh2Tw1ZHKLxpieHB/nzGdY+Uo12A== } - engines: { node: '>=12' } - - '@npmcli/arborist@4.3.1': - resolution: { integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16 } - hasBin: true - - '@npmcli/fs@1.1.1': - resolution: { integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== } - - '@npmcli/fs@2.1.2': - resolution: { integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/fs@3.1.0': - resolution: { integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/git@2.1.0': - resolution: { integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== } - - '@npmcli/git@4.1.0': - resolution: { integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/installed-package-contents@1.0.7': - resolution: { integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== } - engines: { node: '>= 10' } - hasBin: true - - '@npmcli/installed-package-contents@2.0.2': - resolution: { integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true - - '@npmcli/map-workspaces@2.0.4': - resolution: { integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/metavuln-calculator@2.0.0': - resolution: { integrity: sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16 } - - '@npmcli/move-file@1.1.2': - resolution: { integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== } - engines: { node: '>=10' } - deprecated: This functionality has been moved to @npmcli/fs - - '@npmcli/move-file@2.0.1': - resolution: { integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This functionality has been moved to @npmcli/fs + '@aws-sdk/client-sso@3.529.1': + resolution: {integrity: sha512-KT1U/ZNjDhVv2ZgjzaeAn9VM7l667yeSguMrRYC8qk5h91/61MbjZypi6eOuKuVM+0fsQvzKScTQz0Lio0eYag==} + engines: {node: '>=14.0.0'} - '@npmcli/name-from-folder@1.0.1': - resolution: { integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== } + '@aws-sdk/client-sso@3.758.0': + resolution: {integrity: sha512-BoGO6IIWrLyLxQG6txJw6RT2urmbtlwfggapNCrNPyYjlXpzTSJhBYjndg7TpDATFd0SXL0zm8y/tXsUXNkdYQ==} + engines: {node: '>=18.0.0'} - '@npmcli/node-gyp@1.0.3': - resolution: { integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== } + '@aws-sdk/client-sts@3.421.0': + resolution: {integrity: sha512-/92NOZMcdkBcvGrINk5B/l+6DGcVzYE4Ab3ME4vcY9y//u2gd0yNn5YYRSzzjVBLvhDP3u6CbTfLX2Bm4qihPw==} + engines: {node: '>=14.0.0'} - '@npmcli/node-gyp@3.0.0': - resolution: { integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/client-sts@3.529.1': + resolution: {integrity: sha512-Rvk2Sr3MACQTOtngUU+omlf4E17k47dRVXR7OFRD6Ow5iGgC9tkN2q/ExDPW/ktPOmM0lSgzWyQ6/PC/Zq3HUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.529.1 - '@npmcli/package-json@1.0.1': - resolution: { integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== } + '@aws-sdk/core@3.529.1': + resolution: {integrity: sha512-Sj42sYPfaL9PHvvciMICxhyrDZjqnnvFbPKDmQL5aFKyXy122qx7RdVqUOQERDmMQfvJh6+0W1zQlLnre89q4Q==} + engines: {node: '>=14.0.0'} - '@npmcli/promise-spawn@1.3.2': - resolution: { integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== } + '@aws-sdk/core@3.629.0': + resolution: {integrity: sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==} + engines: {node: '>=16.0.0'} - '@npmcli/promise-spawn@6.0.2': - resolution: { integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/core@3.758.0': + resolution: {integrity: sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==} + engines: {node: '>=18.0.0'} - '@npmcli/run-script@2.0.0': - resolution: { integrity: sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== } + '@aws-sdk/credential-provider-env@3.418.0': + resolution: {integrity: sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ==} + engines: {node: '>=14.0.0'} - '@npmcli/run-script@6.0.2': - resolution: { integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/credential-provider-env@3.523.0': + resolution: {integrity: sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==} + engines: {node: '>=14.0.0'} - '@oclif/core@2.15.0': - resolution: { integrity: sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA== } - engines: { node: '>=14.0.0' } + '@aws-sdk/credential-provider-env@3.758.0': + resolution: {integrity: sha512-N27eFoRrO6MeUNumtNHDW9WOiwfd59LPXPqDrIa3kWL/s+fOKFHb9xIcF++bAwtcZnAxKkgpDCUP+INNZskE+w==} + engines: {node: '>=18.0.0'} - '@oclif/core@3.27.0': - resolution: { integrity: sha512-Fg93aNFvXzBq5L7ztVHFP2nYwWU1oTCq48G0TjF/qC1UN36KWa2H5Hsm72kERd5x/sjy2M2Tn4kDEorUlpXOlw== } - engines: { node: '>=18.0.0' } - - '@oclif/plugin-help@5.2.20': - resolution: { integrity: sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ== } - engines: { node: '>=12.0.0' } - - '@oclif/plugin-not-found@2.4.3': - resolution: { integrity: sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg== } - engines: { node: '>=12.0.0' } - - '@oclif/plugin-warn-if-update-available@2.1.1': - resolution: { integrity: sha512-y7eSzT6R5bmTIJbiMMXgOlbBpcWXGlVhNeQJBLBCCy1+90Wbjyqf6uvY0i2WcO4sh/THTJ20qCW80j3XUlgDTA== } - engines: { node: '>=12.0.0' } - - '@octokit/auth-token@2.5.0': - resolution: { integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== } - - '@octokit/core@3.6.0': - resolution: { integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== } - - '@octokit/endpoint@6.0.12': - resolution: { integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== } - - '@octokit/graphql@4.8.0': - resolution: { integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== } - - '@octokit/openapi-types@12.11.0': - resolution: { integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== } - - '@octokit/plugin-paginate-rest@2.21.3': - resolution: { integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== } - peerDependencies: - '@octokit/core': '>=2' - - '@octokit/plugin-request-log@1.0.4': - resolution: { integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== } - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-rest-endpoint-methods@5.16.2': - resolution: { integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== } - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@2.1.0': - resolution: { integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== } - - '@octokit/request@5.6.3': - resolution: { integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== } - - '@octokit/rest@18.12.0': - resolution: { integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== } - - '@octokit/types@6.41.0': - resolution: { integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== } - - '@opensearch-project/opensearch@1.2.0': - resolution: { integrity: sha512-bX0aUz5e7rlY1lKz1rFrqnNbl/l1CHvvysYB2Jn+C3WNs7nL6FnQjuxLhGwyRdW9W1bFokDoOVgPMIOi/Nn9/g== } - engines: { node: '>=10' } - - '@opentelemetry/api@1.9.0': - resolution: { integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== } - engines: { node: '>=8.0.0' } - - '@panva/hkdf@1.2.1': - resolution: { integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw== } + '@aws-sdk/credential-provider-http@3.525.0': + resolution: {integrity: sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==} + engines: {node: '>=14.0.0'} - '@petamoriken/float16@3.8.7': - resolution: { integrity: sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA== } + '@aws-sdk/credential-provider-http@3.758.0': + resolution: {integrity: sha512-Xt9/U8qUCiw1hihztWkNeIR+arg6P+yda10OuCHX6kFVx3auTlU7+hCqs3UxqniGU4dguHuftf3mRpi5/GJ33Q==} + engines: {node: '>=18.0.0'} - '@pinecone-database/pinecone@0.0.5': - resolution: { integrity: sha512-x5O/LTPHbhDxybECQ8yXa4A/ubaAhkocnraHA51mdZFsOD+/2l8WAQnX1cLp7j+EEAF5xiureK4ExkP6N9dG/g== } + '@aws-sdk/credential-provider-ini@3.421.0': + resolution: {integrity: sha512-J5yH/gkpAk6FMeH5F9u5Nr6oG+97tj1kkn5q49g3XMbtWw7GiynadxdtoRBCeIg1C7o2LOQx4B1AnhNhIw1z/g==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-ini@3.529.1': + resolution: {integrity: sha512-RjHsuTvHIwXG7a/3ERexemiD3c9riKMCZQzY2/b0Gg0ButEVbBcMfERtUzWmQ0V4ufe/PEZjP68MH1gupcoF9A==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-ini@3.758.0': + resolution: {integrity: sha512-cymSKMcP5d+OsgetoIZ5QCe1wnp2Q/tq+uIxVdh9MbfdBBEnl9Ecq6dH6VlYS89sp4QKuxHxkWXVnbXU3Q19Aw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.421.0': + resolution: {integrity: sha512-g1dvdvfDj0u8B/gOsHR3o1arP4O4QE/dFm2IJBYr/eUdKISMUgbQULWtg4zdtAf0Oz4xN0723i7fpXAF1gTnRA==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-node@3.529.1': + resolution: {integrity: sha512-mvY7F3dMmk/0dZOCfl5sUI1bG0osureBjxhELGCF0KkJqhWI0hIzh8UnPkYytSg3vdc97CMv7pTcozxrdA3b0g==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-node@3.758.0': + resolution: {integrity: sha512-+DaMv63wiq7pJrhIQzZYMn4hSarKiizDoJRvyR7WGhnn0oQ/getX9Z0VNCV3i7lIFoLNTb7WMmQ9k7+z/uD5EQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.418.0': + resolution: {integrity: sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-process@3.523.0': + resolution: {integrity: sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-process@3.758.0': + resolution: {integrity: sha512-AzcY74QTPqcbXWVgjpPZ3HOmxQZYPROIBz2YINF0OQk0MhezDWV/O7Xec+K1+MPGQO3qS6EDrUUlnPLjsqieHA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.421.0': + resolution: {integrity: sha512-f8T3L5rhImL6T6RTSvbOxaWw9k2fDOT2DZbNjcPz9ITWmwXj2NNbdHGWuRi3dv2HoY/nW2IJdNxnhdhbn6Fc1A==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-sso@3.529.1': + resolution: {integrity: sha512-KFMKkaoTGDgSJG+o9Ii7AglWG5JQeF6IFw9cXLMwDdIrp3KUmRcUIqe0cjOoCqeQEDGy0VHsimHmKKJ3894i/A==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-sso@3.758.0': + resolution: {integrity: sha512-x0FYJqcOLUCv8GLLFDYMXRAQKGjoM+L0BG4BiHYZRDf24yQWFCAZsCQAYKo6XZYh2qznbsW6f//qpyJ5b0QVKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.418.0': + resolution: {integrity: sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.529.1': + resolution: {integrity: sha512-AGuZDOKN+AttjwTjrF47WLqzeEut2YynyxjkXZhxZF/xn8i5Y51kUAUdXsXw1bgR25pAeXQIdhsrQlRa1Pm5kw==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.758.0': + resolution: {integrity: sha512-XGguXhBqiCXMXRxcfCAVPlMbm3VyJTou79r/3mxWddHWF0XbhaQiBIbUz6vobVTD25YQRbWSmSch7VA8kI5Lrw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/endpoint-cache@3.495.0': + resolution: {integrity: sha512-XCDrpiS50WaPzPzp7FwsChPHtX9PQQUU4nRzcn2N7IkUtpcFCUx8m1PAZe086VQr6hrbdeE4Z4j8hUPNwVdJGQ==} + engines: {node: '>=14.0.0'} + + '@aws-sdk/lib-storage@3.758.0': + resolution: {integrity: sha512-g07y7rA505zaTJNPTmvW4zYJA3gThFDE1be7kBUKhTKAdwv8jVSbOiAy2AhClXs2evSUoQiFFtD1xWxLRXPPRQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.758.0 - '@pinecone-database/pinecone@2.2.2': - resolution: { integrity: sha512-gbe/4SowHc64pHIm0kBdgY9hVdzsQnnnpcWviwYMB33gOmsL8brvE8fUSpl1dLDvdyXzKcQkzdBsjCDlqgpdMA== } - engines: { node: '>=14.0.0' } + '@aws-sdk/middleware-bucket-endpoint@3.525.0': + resolution: {integrity: sha512-nYfQ2Xspfef7j8mZO7varUWLPH6HQlXateH7tBVtBNUAazyQE4UJEvC0fbQ+Y01e+FKlirim/m2umkdMXqAlTg==} + engines: {node: '>=14.0.0'} - '@pkgjs/parseargs@0.11.0': - resolution: { integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== } - engines: { node: '>=14' } + '@aws-sdk/middleware-endpoint-discovery@3.525.0': + resolution: {integrity: sha512-nT/XYP3RDRWPFCTEOZQbOC3HWmUkxB0fDuobmH8WzL92MCBGz9gBG/q9XBxiw9pHk9Dky/MIkLV50BlGB3kM7g==} + engines: {node: '>=14.0.0'} - '@pkgr/core@0.1.1': - resolution: { integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + '@aws-sdk/middleware-expect-continue@3.523.0': + resolution: {integrity: sha512-E5DyRAHU39VHaAlQLqXYS/IKpgk3vsryuU6kkOcIIK8Dgw0a2tjoh5AOCaNa8pD+KgAGrFp35JIMSX1zui5diA==} + engines: {node: '>=14.0.0'} - '@pmmmwh/react-refresh-webpack-plugin@0.5.11': - resolution: { integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== } - engines: { node: '>= 10.13' } - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - - '@pnpm/config.env-replace@1.1.0': - resolution: { integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== } - engines: { node: '>=12.22.0' } - - '@pnpm/network.ca-file@1.0.2': - resolution: { integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== } - engines: { node: '>=12.22.0' } - - '@pnpm/npm-conf@2.3.1': - resolution: { integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== } - engines: { node: '>=12' } - - '@polka/url@1.0.0-next.25': - resolution: { integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== } - - '@popperjs/core@2.11.8': - resolution: { integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== } - - '@prisma/client@5.18.0': - resolution: { integrity: sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw== } - engines: { node: '>=16.13' } - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - - '@prisma/debug@5.18.0': - resolution: { integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw== } - - '@prisma/debug@5.9.1': - resolution: { integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA== } - - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': - resolution: { integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg== } - - '@prisma/engines@5.18.0': - resolution: { integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg== } - - '@prisma/fetch-engine@5.18.0': - resolution: { integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg== } - - '@prisma/generator-helper@5.9.1': - resolution: { integrity: sha512-WMdEUPpPYxUGruRQM6e6IVTWXFjt1hHdF/m2TO7pWxhPo7/ZeoTOF9fH8JsvVSV78DYLOQkx9osjFLXZu447Kw== } - - '@prisma/get-platform@5.18.0': - resolution: { integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA== } - - '@prisma/nextjs-monorepo-workaround-plugin@5.18.0': - resolution: { integrity: sha512-BRTytLDKe0JR/+uOrGJTeGJA+EhdgBbDM5Su+AML7t0Pz5Zi+5bjE5nHxcFLIVm/bJjDXd06P8UVkTdK6PW0VQ== } - - '@protobufjs/aspromise@1.1.2': - resolution: { integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== } - - '@protobufjs/base64@1.1.2': - resolution: { integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== } - - '@protobufjs/codegen@2.0.4': - resolution: { integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== } - - '@protobufjs/eventemitter@1.1.0': - resolution: { integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== } - - '@protobufjs/fetch@1.1.0': - resolution: { integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== } - - '@protobufjs/float@1.0.2': - resolution: { integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== } - - '@protobufjs/inquire@1.1.0': - resolution: { integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== } - - '@protobufjs/path@1.1.2': - resolution: { integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== } - - '@protobufjs/pool@1.1.0': - resolution: { integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== } - - '@protobufjs/utf8@1.1.0': - resolution: { integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== } - - '@puppeteer/browsers@0.5.0': - resolution: { integrity: sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ== } - engines: { node: '>=14.1.0' } - hasBin: true - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true - - '@puppeteer/browsers@1.4.6': - resolution: { integrity: sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ== } - engines: { node: '>=16.3.0' } - hasBin: true - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true - - '@qdrant/js-client-rest@1.9.0': - resolution: { integrity: sha512-YiX/IskbRCoAY2ujyPDI6FBcO0ygAS4pgkGaJ7DcrJFh4SZV2XHs+u0KM7mO72RWJn1eJQFF2PQwxG+401xxJg== } - engines: { node: '>=18.0.0', pnpm: '>=8' } - peerDependencies: - typescript: '>=4.7' - - '@qdrant/openapi-typescript-fetch@1.2.6': - resolution: { integrity: sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA== } - engines: { node: '>=18.0.0', pnpm: '>=8' } - - '@reactflow/background@11.3.9': - resolution: { integrity: sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@reactflow/controls@11.2.9': - resolution: { integrity: sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@reactflow/core@11.10.4': - resolution: { integrity: sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@reactflow/minimap@11.7.9': - resolution: { integrity: sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@reactflow/node-resizer@2.2.9': - resolution: { integrity: sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@reactflow/node-toolbar@1.3.9': - resolution: { integrity: sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@redis/bloom@1.2.0': - resolution: { integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg== } - peerDependencies: - '@redis/client': ^1.0.0 - - '@redis/client@1.5.14': - resolution: { integrity: sha512-YGn0GqsRBFUQxklhY7v562VMOP0DcmlrHHs3IV1mFE3cbxe31IITUkqhBcIhVSI/2JqtWAJXg5mjV4aU+zD0HA== } - engines: { node: '>=14' } - - '@redis/graph@1.1.1': - resolution: { integrity: sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw== } - peerDependencies: - '@redis/client': ^1.0.0 - - '@redis/json@1.0.6': - resolution: { integrity: sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw== } - peerDependencies: - '@redis/client': ^1.0.0 - - '@redis/search@1.1.6': - resolution: { integrity: sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw== } - peerDependencies: - '@redis/client': ^1.0.0 - - '@redis/time-series@1.0.5': - resolution: { integrity: sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg== } - peerDependencies: - '@redis/client': ^1.0.0 - - '@rollup/plugin-babel@5.3.1': - resolution: { integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== } - engines: { node: '>= 10.0.0' } - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - - '@rollup/plugin-babel@6.0.3': - resolution: { integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg== } - engines: { node: '>=14.0.0' } - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - - '@rollup/plugin-commonjs@24.0.0': - resolution: { integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@25.0.8': - resolution: { integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: { integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@11.2.1': - resolution: { integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== } - engines: { node: '>= 10.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-node-resolve@15.0.1': - resolution: { integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.78.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@2.4.2': - resolution: { integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== } - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/plugin-terser@0.4.0': - resolution: { integrity: sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.x || ^3.x - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-typescript@11.0.0': - resolution: { integrity: sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - - '@rollup/pluginutils@3.1.0': - resolution: { integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== } - engines: { node: '>= 8.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/pluginutils@5.1.0': - resolution: { integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.13.0': - resolution: { integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg== } - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.13.0': - resolution: { integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q== } - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.13.0': - resolution: { integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g== } - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.13.0': - resolution: { integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg== } - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - resolution: { integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ== } - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.13.0': - resolution: { integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w== } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.13.0': - resolution: { integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw== } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - resolution: { integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA== } - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.13.0': - resolution: { integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA== } - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.13.0': - resolution: { integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw== } - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.13.0': - resolution: { integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA== } - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.13.0': - resolution: { integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw== } - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.13.0': - resolution: { integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw== } - cpu: [x64] - os: [win32] - - '@rushstack/eslint-patch@1.7.2': - resolution: { integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== } - - '@selderee/plugin-htmlparser2@0.11.0': - resolution: { integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ== } - - '@sentry-internal/feedback@7.118.0': - resolution: { integrity: sha512-IYOGRcqIqKJJpMwBBv+0JTu0FPpXnakJYvOx/XEa/SNyF5+l7b9gGEjUVWh1ok50kTLW/XPnpnXNAGQcoKHg+w== } - engines: { node: '>=12' } - - '@sentry-internal/replay-canvas@7.118.0': - resolution: { integrity: sha512-XxHlCClvrxmVKpiZetFYyiBaPQNiojoBGFFVgbbWBIAPc+fWeLJ2BMoQEBjn/0NA/8u8T6lErK5YQo/eIx9+XQ== } - engines: { node: '>=12' } - - '@sentry-internal/tracing@7.118.0': - resolution: { integrity: sha512-dERAshKlQLrBscHSarhHyUeGsu652bDTUN1FK0m4e3X48M3I5/s+0N880Qjpe5MprNLcINlaIgdQ9jkisvxjfw== } - engines: { node: '>=8' } - - '@sentry/browser@7.118.0': - resolution: { integrity: sha512-8onDOFV1VLEoBuqA5yaJeR3FF1JNuxr5C7p1oN3OwY724iTVqQnOLmZKZaSnHV3RkY67wKDGQkQIie14sc+42g== } - engines: { node: '>=8' } - - '@sentry/cli@1.77.3': - resolution: { integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ== } - engines: { node: '>= 8' } - hasBin: true - - '@sentry/core@7.118.0': - resolution: { integrity: sha512-ol0xBdp3/K11IMAYSQE0FMxBOOH9hMsb/rjxXWe0hfM5c72CqYWL3ol7voPci0GELJ5CZG+9ImEU1V9r6gK64g== } - engines: { node: '>=8' } - - '@sentry/integrations@7.118.0': - resolution: { integrity: sha512-C2rR4NvIMjokF8jP5qzSf1o2zxDx7IeYnr8u15Kb2+HdZtX559owALR0hfgwnfeElqMhGlJBaKUWZ48lXJMzCQ== } - engines: { node: '>=8' } - - '@sentry/nextjs@7.118.0': - resolution: { integrity: sha512-UFhg4QSZ6LqOKTU67kgjojy23ZqoIgB1fjwOS6S10d5LKdbz7POwrNwHqi+aB3YIqyrSvRtFCXA+8mmsE0QoqA== } - engines: { node: '>=8' } - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true - - '@sentry/node@7.118.0': - resolution: { integrity: sha512-79N63DvYKkNPqzmc0cjO+vMZ/nU7+CbE3K3COQNiV7gk58+666G9mRZQJuZVOVebatq5wM5UR0G4LPkwD+J84g== } - engines: { node: '>=8' } - - '@sentry/react@7.118.0': - resolution: { integrity: sha512-oEYe5TGk8S7YzPsFqDf4xDHjfzs35/QFE+dou3S2d24OYpso8Tq4C5f1VzYmnOOyy85T7JNicYLSo0n0NSJvQg== } - engines: { node: '>=8' } - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x - - '@sentry/replay@7.118.0': - resolution: { integrity: sha512-boQfCL+1L/tSZ9Huwi00+VtU+Ih1Lcg8HtxBuAsBCJR9pQgUL5jp7ECYdTeeHyCh/RJO7JqV1CEoGTgohe10mA== } - engines: { node: '>=12' } + '@aws-sdk/middleware-flexible-checksums@3.523.0': + resolution: {integrity: sha512-lIa1TdWY9q4zsDFarfSnYcdrwPR+nypaU4n6hb95i620/1F5M5s6H8P0hYtwTNNvx+slrR8F3VBML9pjBtzAHw==} + engines: {node: '>=14.0.0'} - '@sentry/types@7.118.0': - resolution: { integrity: sha512-2drqrD2+6kgeg+W/ycmiti3G4lJrV3hGjY9PpJ3bJeXrh6T2+LxKPzlgSEnKFaeQWkXdZ4eaUbtTXVebMjb5JA== } - engines: { node: '>=8' } + '@aws-sdk/middleware-host-header@3.418.0': + resolution: {integrity: sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ==} + engines: {node: '>=14.0.0'} - '@sentry/utils@7.118.0': - resolution: { integrity: sha512-43qItc/ydxZV1Zb3Kn2M54RwL9XXFa3IAYBO8S82Qvq5YUYmU2AmJ1jgg7DabXlVSWgMA1HntwqnOV3JLaEnTQ== } - engines: { node: '>=8' } + '@aws-sdk/middleware-host-header@3.523.0': + resolution: {integrity: sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==} + engines: {node: '>=14.0.0'} - '@sentry/vercel-edge@7.118.0': - resolution: { integrity: sha512-DclIpD0/Xi0kNeT97aFFtMLBzk3GFZXf9mpGgbx29Gt9Vt7Fyq8ZA9izALHYzXx056fqQaLtvOAkQxWsy9QuSA== } - engines: { node: '>=8' } + '@aws-sdk/middleware-host-header@3.734.0': + resolution: {integrity: sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==} + engines: {node: '>=18.0.0'} - '@sentry/webpack-plugin@1.21.0': - resolution: { integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og== } - engines: { node: '>= 8' } + '@aws-sdk/middleware-location-constraint@3.523.0': + resolution: {integrity: sha512-1QAUXX3U0jkARnU0yyjk81EO4Uw5dCeQOtvUY5s3bUOHatR3ThosQeIr6y9BCsbXHzNnDe1ytCjqAPyo8r/bYw==} + engines: {node: '>=14.0.0'} - '@sevinf/maybe@0.5.0': - resolution: { integrity: sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg== } + '@aws-sdk/middleware-logger@3.418.0': + resolution: {integrity: sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ==} + engines: {node: '>=14.0.0'} - '@sideway/address@4.1.5': - resolution: { integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== } + '@aws-sdk/middleware-logger@3.523.0': + resolution: {integrity: sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==} + engines: {node: '>=14.0.0'} - '@sideway/formula@3.0.1': - resolution: { integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== } + '@aws-sdk/middleware-logger@3.734.0': + resolution: {integrity: sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==} + engines: {node: '>=18.0.0'} - '@sideway/pinpoint@2.0.0': - resolution: { integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== } + '@aws-sdk/middleware-recursion-detection@3.418.0': + resolution: {integrity: sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg==} + engines: {node: '>=14.0.0'} - '@sigstore/bundle@1.1.0': - resolution: { integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/middleware-recursion-detection@3.523.0': + resolution: {integrity: sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==} + engines: {node: '>=14.0.0'} - '@sigstore/protobuf-specs@0.2.1': - resolution: { integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/middleware-recursion-detection@3.734.0': + resolution: {integrity: sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==} + engines: {node: '>=18.0.0'} - '@sigstore/sign@1.0.0': - resolution: { integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/middleware-sdk-s3@3.525.0': + resolution: {integrity: sha512-ewFyyFM6wdFTOqCiId5GQNi7owDdLEonQhB4h8tF6r3HV52bRlDvZA4aDos+ft6N/XY2J6L0qlFTFq+/oiurXw==} + engines: {node: '>=14.0.0'} - '@sigstore/tuf@1.0.3': - resolution: { integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@aws-sdk/middleware-sdk-s3@3.629.0': + resolution: {integrity: sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A==} + engines: {node: '>=16.0.0'} - '@sinclair/typebox@0.24.51': - resolution: { integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== } + '@aws-sdk/middleware-sdk-sts@3.418.0': + resolution: {integrity: sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA==} + engines: {node: '>=14.0.0'} - '@sinclair/typebox@0.27.8': - resolution: { integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== } + '@aws-sdk/middleware-signing@3.418.0': + resolution: {integrity: sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA==} + engines: {node: '>=14.0.0'} - '@sinclair/typebox@0.29.6': - resolution: { integrity: sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ== } + '@aws-sdk/middleware-signing@3.523.0': + resolution: {integrity: sha512-pFXV4don6qcmew/OvEjLUr2foVjzoJ8o5k57Oz9yAHz8INx3RHK8MP/K4mVhHo6n0SquRcWrm4kY/Tw+89gkEA==} + engines: {node: '>=14.0.0'} - '@sindresorhus/is@4.6.0': - resolution: { integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== } - engines: { node: '>=10' } + '@aws-sdk/middleware-ssec@3.523.0': + resolution: {integrity: sha512-FaqAZQeF5cQzZLOIboIJRaWVOQ2F2pJZAXGF5D7nJsxYNFChotA0O0iWimBRxU35RNn7yirVxz35zQzs20ddIw==} + engines: {node: '>=14.0.0'} - '@sindresorhus/is@5.6.0': - resolution: { integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== } - engines: { node: '>=14.16' } + '@aws-sdk/middleware-user-agent@3.418.0': + resolution: {integrity: sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw==} + engines: {node: '>=14.0.0'} - '@sinonjs/commons@1.8.6': - resolution: { integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== } + '@aws-sdk/middleware-user-agent@3.525.0': + resolution: {integrity: sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==} + engines: {node: '>=14.0.0'} - '@sinonjs/commons@3.0.1': - resolution: { integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== } + '@aws-sdk/middleware-user-agent@3.758.0': + resolution: {integrity: sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==} + engines: {node: '>=18.0.0'} - '@sinonjs/fake-timers@10.3.0': - resolution: { integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== } + '@aws-sdk/nested-clients@3.758.0': + resolution: {integrity: sha512-YZ5s7PSvyF3Mt2h1EQulCG93uybprNGbBkPmVuy/HMMfbFTt4iL3SbKjxqvOZelm86epFfj7pvK7FliI2WOEcg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.418.0': + resolution: {integrity: sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA==} + engines: {node: '>=14.0.0'} - '@sinonjs/fake-timers@8.1.0': - resolution: { integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== } + '@aws-sdk/region-config-resolver@3.525.0': + resolution: {integrity: sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==} + engines: {node: '>=14.0.0'} - '@slack/logger@3.0.0': - resolution: { integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA== } - engines: { node: '>= 12.13.0', npm: '>= 6.12.0' } + '@aws-sdk/region-config-resolver@3.734.0': + resolution: {integrity: sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==} + engines: {node: '>=18.0.0'} - '@slack/types@2.12.0': - resolution: { integrity: sha512-yFewzUomYZ2BYaGJidPuIgjoYj5wqPDmi7DLSaGIkf+rCi4YZ2Z3DaiYIbz7qb/PL2NmamWjCvB7e9ArI5HkKg== } - engines: { node: '>= 12.13.0', npm: '>= 6.12.0' } + '@aws-sdk/s3-request-presigner@3.629.0': + resolution: {integrity: sha512-6lVgK9Y5m+AqisPNLs1Low5oJHFg/lfsuEsQMKG5y0/uqR1KVLswiaY1mhp0cprMEXRN2DDMAhP7i+jy5/WLNw==} + engines: {node: '>=16.0.0'} - '@slack/web-api@6.12.0': - resolution: { integrity: sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ== } - engines: { node: '>= 12.13.0', npm: '>= 6.12.0' } + '@aws-sdk/signature-v4-crt@3.629.0': + resolution: {integrity: sha512-c7dPxhYCn8OBed9eYGWHrpyzPRwPXJr9AMCaN2BBUdZZsDq29+EUC+VQDcDEUa6Dwmt4UCW8Mn1YIP4SxpqC0A==} + engines: {node: '>=16.0.0'} - '@slorber/remark-comment@1.0.0': - resolution: { integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== } + '@aws-sdk/signature-v4-multi-region@3.525.0': + resolution: {integrity: sha512-j8gkdfiokaherRgokfZBl2azYBMHlegT7pOnR/3Y79TSz6G+bJeIkuNk8aUbJArr6R8nvAM1j4dt1rBM+efolQ==} + engines: {node: '>=14.0.0'} - '@smithy/abort-controller@2.1.4': - resolution: { integrity: sha512-66HO817oIZ2otLIqy06R5muapqZjkgF1jfU0wyNko8cuqZNu8nbS9ljlhcRYw/M/uWRJzB9ih81DLSHhYbBLlQ== } - engines: { node: '>=14.0.0' } + '@aws-sdk/signature-v4-multi-region@3.629.0': + resolution: {integrity: sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg==} + engines: {node: '>=16.0.0'} - '@smithy/abort-controller@3.1.1': - resolution: { integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== } - engines: { node: '>=16.0.0' } + '@aws-sdk/token-providers@3.418.0': + resolution: {integrity: sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g==} + engines: {node: '>=14.0.0'} - '@smithy/chunked-blob-reader-native@2.1.2': - resolution: { integrity: sha512-KwR9fFc/t5jH9RQFbrA9DHSmI+URTmB4v+i7H08UNET9AcN6GGBTBMiDKpA56Crw6CN7cSaSDXaRS/AsfOuupQ== } + '@aws-sdk/token-providers@3.529.1': + resolution: {integrity: sha512-NpgMjsfpqiugbxrYGXtta914N43Mx/H0niidqv8wKMTgWQEtsJvYtOni+kuLXB+LmpjaMFNlpadooFU/bK4buA==} + engines: {node: '>=14.0.0'} - '@smithy/chunked-blob-reader@2.1.1': - resolution: { integrity: sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ== } + '@aws-sdk/token-providers@3.758.0': + resolution: {integrity: sha512-ckptN1tNrIfQUaGWm/ayW1ddG+imbKN7HHhjFdS4VfItsP0QQOB0+Ov+tpgb4MoNR4JaUghMIVStjIeHN2ks1w==} + engines: {node: '>=18.0.0'} - '@smithy/config-resolver@2.1.5': - resolution: { integrity: sha512-LcBB5JQC3Tx2ZExIJzfvWaajhFIwHrUNQeqxhred2r5nnqrdly9uoCrvM1sxOOdghYuWWm2Kr8tBCDOmxsgeTA== } - engines: { node: '>=14.0.0' } + '@aws-sdk/types@3.418.0': + resolution: {integrity: sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ==} + engines: {node: '>=14.0.0'} - '@smithy/config-resolver@3.0.5': - resolution: { integrity: sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== } - engines: { node: '>=16.0.0' } + '@aws-sdk/types@3.523.0': + resolution: {integrity: sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==} + engines: {node: '>=14.0.0'} - '@smithy/core@1.3.7': - resolution: { integrity: sha512-zHrrstOO78g+/rOJoHi4j3mGUBtsljRhcKNzloWPv1XIwgcFUi+F1YFKr2qPQ3z7Ls5dNc4L2SPrVarNFIQqog== } - engines: { node: '>=14.0.0' } + '@aws-sdk/types@3.609.0': + resolution: {integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==} + engines: {node: '>=16.0.0'} - '@smithy/core@2.3.2': - resolution: { integrity: sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q== } - engines: { node: '>=16.0.0' } + '@aws-sdk/types@3.734.0': + resolution: {integrity: sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==} + engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@2.2.6': - resolution: { integrity: sha512-+xQe4Pite0kdk9qn0Vyw5BRVh0iSlj+T4TEKRXr4E1wZKtVgIzGlkCrfICSjiPVFkPxk4jMpVboMYdEiiA88/w== } - engines: { node: '>=14.0.0' } + '@aws-sdk/util-arn-parser@3.495.0': + resolution: {integrity: sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==} + engines: {node: '>=14.0.0'} - '@smithy/credential-provider-imds@3.2.0': - resolution: { integrity: sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== } - engines: { node: '>=16.0.0' } + '@aws-sdk/util-arn-parser@3.568.0': + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-codec@2.1.4': - resolution: { integrity: sha512-UkiieTztP7adg8EuqZvB0Y4LewdleZCJU7Kgt9RDutMsRYqO32fMpWeQHeTHaIMosmzcRZUykMRrhwGJe9mP3A== } + '@aws-sdk/util-endpoints@3.418.0': + resolution: {integrity: sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ==} + engines: {node: '>=14.0.0'} - '@smithy/eventstream-codec@3.1.2': - resolution: { integrity: sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== } + '@aws-sdk/util-endpoints@3.525.0': + resolution: {integrity: sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==} + engines: {node: '>=14.0.0'} - '@smithy/eventstream-serde-browser@2.1.4': - resolution: { integrity: sha512-K0SyvrUu/vARKzNW+Wp9HImiC/cJ6K88/n7FTH1slY+MErdKoiSbRLaXbJ9qD6x1Hu28cplHMlhADwZelUx/Ww== } - engines: { node: '>=14.0.0' } + '@aws-sdk/util-endpoints@3.743.0': + resolution: {integrity: sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@3.0.6': - resolution: { integrity: sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ== } - engines: { node: '>=16.0.0' } + '@aws-sdk/util-format-url@3.609.0': + resolution: {integrity: sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ==} + engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@2.1.4': - resolution: { integrity: sha512-FH+2AwOwZ0kHPB9sciWJtUqx81V4vizfT3P6T9eslmIC2hi8ch/KFvQlF7jDmwR1aLlPlq6qqLKLqzK/71Ki4A== } - engines: { node: '>=14.0.0' } + '@aws-sdk/util-locate-window@3.495.0': + resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==} + engines: {node: '>=14.0.0'} - '@smithy/eventstream-serde-config-resolver@3.0.3': - resolution: { integrity: sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== } - engines: { node: '>=16.0.0' } + '@aws-sdk/util-user-agent-browser@3.418.0': + resolution: {integrity: sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg==} - '@smithy/eventstream-serde-node@2.1.4': - resolution: { integrity: sha512-gsc5ZTvVcB9sleLQzsK/rOhgn52+AAsmhEr41WDwAcctccBjh429+b8gT9t+SU8QyajypfsLOZfJQu0+zE515Q== } - engines: { node: '>=14.0.0' } + '@aws-sdk/util-user-agent-browser@3.523.0': + resolution: {integrity: sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==} - '@smithy/eventstream-serde-node@3.0.5': - resolution: { integrity: sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ== } - engines: { node: '>=16.0.0' } + '@aws-sdk/util-user-agent-browser@3.734.0': + resolution: {integrity: sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==} + + '@aws-sdk/util-user-agent-node@3.418.0': + resolution: {integrity: sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-user-agent-node@3.525.0': + resolution: {integrity: sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-user-agent-node@3.614.0': + resolution: {integrity: sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-user-agent-node@3.758.0': + resolution: {integrity: sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true - '@smithy/eventstream-serde-universal@2.1.4': - resolution: { integrity: sha512-NKLAsYnZA5s+ntipJRKo1RrRbhYHrsEnmiUoz0EhVYrAih+UELY9sKR+A1ujGaFm3nKDs5fPfiozC2wpXq2zUA== } - engines: { node: '>=14.0.0' } + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.523.0': + resolution: {integrity: sha512-wfvyVymj2TUw7SuDor9IuFcAzJZvWRBZotvY/wQJOlYa3UP3Oezzecy64N4FWfBJEsZdrTN+HOZFl+IzTWWnUA==} + engines: {node: '>=14.0.0'} + + '@babel/code-frame@7.12.11': + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.23.5': + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.4': + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + 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.24.0': + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.23.10': + resolution: {integrity: sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + + '@babel/generator@7.23.6': + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.0': + resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-class-features-plugin@7.24.5': + resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-class-features-plugin@7.25.4': + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.5.0': + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-define-polyfill-provider@0.6.0': + resolution: {integrity: sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.5': + resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + 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.24.5': + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.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-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.0': + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.5': + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.22.20': + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.24.1': + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.5': + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.5': + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + 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.24.5': + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + 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.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.0': + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.8': + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': + resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.24.0': + resolution: {integrity: sha512-LiT1RqZWeij7X+wGxCoYh3/3b8nVOX6/7BZ9wiQgAIyjoeQWdROaodJCgT+dwtbjHaz0r7bEbHJzjSbVfcOyjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-numeric-separator@7.18.6': + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11': + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@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-decorators@7.24.0': + resolution: {integrity: sha512-MXW3pQCu9gUiVGzqkGqsgiINDVYXoAnrY8FYF/rmb+OfufNF0zHMpHPN4ulRrinxYT8Vk/aZJxYqOKsDECjKAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.23.3': + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.23.3': + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.1': + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.23.3': + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.1': + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + 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.23.3': + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + 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.23.3': + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.23.3': + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-arrow-functions@7.24.1': + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.23.9': + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.24.3': + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.23.3': + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.1': + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.23.3': + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.1': + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.23.4': + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.24.5': + resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.23.3': + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.1': + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.23.4': + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-class-static-block@7.24.4': + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.23.8': + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-classes@7.24.5': + resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.23.3': + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.1': + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.23.3': + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.5': + resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.23.3': + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.1': + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.23.3': + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.1': + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.23.4': + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.24.1': + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.23.3': + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.1': + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.23.4': + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.1': + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.23.3': + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.23.6': + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.1': + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.23.3': + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.24.1': + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.23.4': + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.1': + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.23.3': + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.24.1': + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.23.4': + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.1': + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.23.3': + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.1': + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.23.3': + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.1': + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.23.3': + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.1': + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.23.9': + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.24.1': + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.23.3': + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.1': + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.23.3': + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-new-target@7.24.1': + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.23.4': + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.1': + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.0': + resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.5': + resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.23.3': + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.1': + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.23.4': + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.1': + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.23.4': + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.5': + resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.23.3': + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.5': + resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.23.3': + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.1': + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.23.4': + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.5': + resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.23.3': + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.1': + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-constant-elements@7.23.3': + resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.23.3': + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.7': + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.22.5': + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.24.7': + resolution: {integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.23.3': + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.23.3': + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.23.4': + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.2': + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.23.3': + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.24.7': + resolution: {integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.23.3': + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.1': + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.23.3': + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.1': + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.0': + resolution: {integrity: sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.23.3': + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.1': + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.23.3': + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.1': + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.23.3': + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.1': + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.23.3': + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.1': + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.23.3': + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.5': + resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.23.6': + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.23.3': + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.1': + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.23.3': + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.1': + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.23.3': + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.1': + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.23.3': + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.1': + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.24.0': + resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-env@7.24.5': + resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.18.6': + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-react@7.24.7': + resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.18.6': + resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.21.4': + resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime-corejs3@7.25.6': + resolution: {integrity: sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.24.0': + resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.0': + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.5': + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + + '@baiducloud/qianfan@0.1.9': + resolution: {integrity: sha512-p+pvfMVGHrjgPxkL5O5RAL2xWoSH/bIjxNOfk5KA6oqPAeJzSUMyKswwlCgFxLvt6flsgJmJ6PYVBCDNPhnYcQ==} + + '@balena/dockerignore@1.0.2': + resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@browserbasehq/sdk@2.3.0': + resolution: {integrity: sha512-H2nu46C6ydWgHY+7yqaP8qpfRJMJFVGxVIgsuHe1cx9HkfJHqzkuIqaK/k8mU4ZeavQgV5ZrJa0UX6MDGYiT4w==} + + '@browserbasehq/stagehand@1.12.0': + resolution: {integrity: sha512-RWhdGxs2tUKyNpUh710ct/1Wwhv4jsEc1Qs8lz8Qngm3y7onRu0WYH0Cf3mnFZqYLTf3ni9x17VNju8YJACa5Q==} + peerDependencies: + '@playwright/test': ^1.42.1 + deepmerge: ^4.3.1 + dotenv: ^16.4.5 + openai: 4.82.0 + zod: ^3.23.8 + + '@cfworker/json-schema@4.1.1': + resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} + + '@codemirror/autocomplete@6.14.0': + resolution: {integrity: sha512-Kx9BCSOLKmqNXEvmViuzsBQJ2VEa/wWwOATNpixOa+suttTV3rDnAUtAIt5ObAUFjXvZakWfFfF/EbxELnGLzQ==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + + '@codemirror/commands@6.3.3': + resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==} + + '@codemirror/commands@6.5.0': + resolution: {integrity: sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg==} + + '@codemirror/lang-javascript@6.2.2': + resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} + + '@codemirror/lang-json@6.0.1': + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + + '@codemirror/language@6.10.1': + resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==} + + '@codemirror/lint@6.5.0': + resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==} + + '@codemirror/search@6.5.6': + resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} + + '@codemirror/state@6.4.1': + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + + '@codemirror/theme-one-dark@6.1.2': + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} + + '@codemirror/view@6.25.1': + resolution: {integrity: sha512-2LXLxsQnHDdfGzDvjzAwZh2ZviNJm7im6tGpa0IONIDnFd8RZ80D2SNi8PDi6YjKcMoMRK20v6OmKIdsrwsyoQ==} + + '@codemirror/view@6.26.3': + resolution: {integrity: sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@contentful/app-sdk@4.29.0': + resolution: {integrity: sha512-g1PHiCZGImrJq1+ctdb3leCaRrnLaj1yOSHBaibQSzNncH5M5g6zefW7Isy8LHhav5+g+0/WNjsoucBH27d7gg==} + + '@contentful/content-source-maps@0.6.1': + resolution: {integrity: sha512-IjsyhakG17OC5xtIa5agVRsnjjxiJf9HZjpDIV6Ix036Pd5YHJrbyyiF4KNEmLlIqe3hQ0kHGWEs9S/HfECmRQ==} + + '@contentful/rich-text-from-markdown@15.18.8': + resolution: {integrity: sha512-x7uF6+VAGHplPgLdWtznY9uoE/nlr/1kXbC6P4BEZD2loAcPJiVlNQFUCY8TIFa5VkFIEknQEnuQJ2nauC3VEA==} + + '@contentful/rich-text-plain-text-renderer@16.2.8': + resolution: {integrity: sha512-5YQPg1rERTTla1XpQqvLYUtmyz7WPZnNX6o66SYQ7kF8FSjK4HKAVJEpzs8qMlyQCKdlzXUVbu9ItrlStORh1g==} + engines: {node: '>=6.0.0'} + + '@contentful/rich-text-types@16.8.3': + resolution: {integrity: sha512-vXwXDQMDbqITCWfTkU5R/q+uvXWCc1eYNvdZyjtrs0YDIYr4L7QJ2s1r4ZheIs3iVf3AFucKIHgDSpwCAm2wKA==} + engines: {node: '>=6.0.0'} + + '@couchbase/couchbase-darwin-arm64-napi@4.4.1': + resolution: {integrity: sha512-YHS0TDrXe+S3nKywjZ/11Ia+25l5DypXYdyeOf4/le+zsJomnR5E3w4h1RaZ669/gvR8ltyOJn6TG//VDSp6qg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@couchbase/couchbase-darwin-x64-napi@4.4.1': + resolution: {integrity: sha512-sgO3sp6yLEA/wuiimd0nvjqBPUmur/4Egjs250QYXOzGltO/uh/HMVfqrhn/ISuT32P5AMg63iPE1jQMWFXcMw==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@couchbase/couchbase-linux-arm64-napi@4.4.1': + resolution: {integrity: sha512-dQfukBVV2wbxqGdbWY6nwOZ7NvIlKMxFcCZmpiF+H9GrVT8lu1mSul682GcK1bAz5d7NSiiOYRO+W6wi3PsqkQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@couchbase/couchbase-linux-x64-napi@4.4.1': + resolution: {integrity: sha512-wN22rAJm0esLaAVETSm3PEo+jkrXSQStD0B/s5uBUsNaGitg5jE8F+g4xTaob4J38iuZ1HRXhaAy22VH3PzHQQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@couchbase/couchbase-linuxmusl-arm64-napi@4.4.1': + resolution: {integrity: sha512-RHcVgPxha054FTAO3Kcq5R6OjB1MKWLKlNWQ7FX2GpzIJNySR3J+RBmAh6yEE8fj/F7genz48RdWttFMvrjT3g==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@couchbase/couchbase-linuxmusl-x64-napi@4.4.1': + resolution: {integrity: sha512-X81yEnZo4gg2Uj+6V4urcK8yPGUENPoJn+TgZmzcjZ3zGXdxpZKF9f96K+dsIfTrvdbf8o3HJExElsYApPIO/g==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@couchbase/couchbase-win32-x64-napi@4.4.1': + resolution: {integrity: sha512-RWu0GXr6YMlH/LCFxdoNqyWvARWIxl1h44rAl+Mc5VPETpslGUFb35g4MDvVEqL+8J4T8eVL29vK6xrQ/4hYyg==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@crawlee/types@3.8.1': + resolution: {integrity: sha512-CVs4bTtgXDGLkEVLTFwONbIe3dE9GYkZ/uT0bxagzD7/dqJa3HqihOSGE8Wnr2pKl5uGN/3fYJuL5CpfqyFU9A==} + engines: {node: '>=16.0.0'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@csstools/normalize.css@12.1.1': + resolution: {integrity: sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==} + + '@csstools/postcss-cascade-layers@1.1.1': + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-color-function@1.1.1': + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-font-format-keywords@1.0.1': + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-hwb-function@1.0.2': + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-ic-unit@1.0.1': + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-is-pseudo-class@2.0.7': + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-nested-calc@1.0.0': + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-normalize-display-values@1.0.1': + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-oklab-function@1.1.1': + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-progressive-custom-properties@1.3.0': + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + '@csstools/postcss-stepped-value-functions@1.0.1': + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-text-decoration-shorthand@1.0.0': + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-trigonometric-functions@1.0.2': + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-unset-value@1.0.2': + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/selector-specificity@2.2.0': + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + + '@cypress/react18@2.0.1': + resolution: {integrity: sha512-T/bhFEvVDIu0lDOKXbEQqVEmmANKWc/pyFDyDoJw3OndRYv9QVEJSsE/VNXIaOQLDjWvQkKBOwd0lLe1hWF/Zg==} + peerDependencies: + '@types/react': ^18 + '@types/react-dom': ^18 + cypress: '*' + react: ^18 + react-dom: ^18 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-serde-universal@3.0.5': - resolution: { integrity: sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ== } - engines: { node: '>=16.0.0' } + '@cypress/request@2.88.12': + resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} + engines: {node: '>= 6'} - '@smithy/fetch-http-handler@2.4.4': - resolution: { integrity: sha512-DSUtmsnIx26tPuyyrK49dk2DAhPgEw6xRW7V62nMHIB5dk3NqhGnwcKO2fMdt/l3NUVgia34ZsSJA8bD+3nh7g== } + '@cypress/request@3.0.1': + resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} + engines: {node: '>= 6'} - '@smithy/fetch-http-handler@3.2.4': - resolution: { integrity: sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== } + '@cypress/xvfb@1.2.4': + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} - '@smithy/hash-blob-browser@2.1.4': - resolution: { integrity: sha512-bDugS1DortnriGDdp0sqdq7dLI5if8CEOF9rKtpJa1ZYMq6fxOtTId//dlilS5QgUtUs6GHN5aMQVxEjhBzzQA== } + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@smithy/hash-node@2.1.4': - resolution: { integrity: sha512-uvCcpDLXaTTL0X/9ezF8T8sS77UglTfZVQaUOBiCvR0QydeSyio3t0Hj3QooVdyFsKTubR8gCk/ubLk3vAyDng== } - engines: { node: '>=14.0.0' } + '@datastax/astra-db-ts@1.5.0': + resolution: {integrity: sha512-Z9pEVyyHfglh8XAKrIASxdvORdei4pLUKDDGarqYvBkA9B9rKdqqdN+4I42Dz8paU5uscu8FwM5mc+Ly/U6jfA==} + engines: {node: '>=14.0.0'} - '@smithy/hash-node@3.0.3': - resolution: { integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== } - engines: { node: '>=16.0.0' } + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} - '@smithy/hash-stream-node@2.1.4': - resolution: { integrity: sha512-HcDQRs/Fcx7lwAd+/vSW/e7ltdh148D2Pq7XI61CEWcOoQdQ0W8aYBHDRC4zjtXv6hySdmWE+vo3dvdTt7aj8A== } - engines: { node: '>=14.0.0' } + '@docsearch/css@3.6.1': + resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==} - '@smithy/invalid-dependency@2.1.4': - resolution: { integrity: sha512-QzlNBl6jt3nb9jNnE51wTegReVvUdozyMMrFEyb/rc6AzPID1O+qMJYjAAoNw098y0CZVfCpEnoK2+mfBOd8XA== } + '@docsearch/react@3.6.1': + resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true - '@smithy/invalid-dependency@3.0.3': - resolution: { integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== } + '@docusaurus/core@3.5.2': + resolution: {integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==} + engines: {node: '>=18.0'} + hasBin: true + peerDependencies: + '@mdx-js/react': ^3.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/cssnano-preset@3.5.2': + resolution: {integrity: sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==} + engines: {node: '>=18.0'} + + '@docusaurus/logger@3.5.2': + resolution: {integrity: sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==} + engines: {node: '>=18.0'} + + '@docusaurus/mdx-loader@3.5.2': + resolution: {integrity: sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/module-type-aliases@3.5.2': + resolution: {integrity: sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==} + peerDependencies: + react: '*' + react-dom: '*' + + '@docusaurus/plugin-content-blog@3.5.2': + resolution: {integrity: sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/plugin-content-docs': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-content-docs@3.5.2': + resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-content-pages@3.5.2': + resolution: {integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-debug@3.5.2': + resolution: {integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-google-analytics@3.5.2': + resolution: {integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-google-gtag@3.5.2': + resolution: {integrity: sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-google-tag-manager@3.5.2': + resolution: {integrity: sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/plugin-sitemap@3.5.2': + resolution: {integrity: sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/preset-classic@3.5.2': + resolution: {integrity: sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/react-loadable@6.0.0': + resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==} + peerDependencies: + react: '*' + + '@docusaurus/theme-classic@3.5.2': + resolution: {integrity: sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/theme-common@3.5.2': + resolution: {integrity: sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/plugin-content-docs': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/theme-search-algolia@3.5.2': + resolution: {integrity: sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/theme-translations@3.5.2': + resolution: {integrity: sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==} + engines: {node: '>=18.0'} + + '@docusaurus/tsconfig@3.5.2': + resolution: {integrity: sha512-rQ7toURCFnWAIn8ubcquDs0ewhPwviMzxh6WpRjBW7sJVCXb6yzwUaY3HMNa0VXCFw+qkIbFywrMTf+Pb4uHWQ==} + + '@docusaurus/types@3.5.2': + resolution: {integrity: sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@docusaurus/utils-common@3.5.2': + resolution: {integrity: sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true - '@smithy/is-array-buffer@2.1.1': - resolution: { integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ== } - engines: { node: '>=14.0.0' } + '@docusaurus/utils-validation@3.5.2': + resolution: {integrity: sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==} + engines: {node: '>=18.0'} + + '@docusaurus/utils@3.5.2': + resolution: {integrity: sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true - '@smithy/is-array-buffer@3.0.0': - resolution: { integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== } - engines: { node: '>=16.0.0' } + '@dqbd/tiktoken@1.0.13': + resolution: {integrity: sha512-941kjlHjfI97l6NuH/AwuXV4mHuVnRooDcHNSlzi98hz+4ug3wT4gJcWjSwSZHqeGAEn90lC9sFD+8a9d5Jvxg==} - '@smithy/md5-js@2.1.4': - resolution: { integrity: sha512-WHTnnYJPKE7Sy49DogLuox42TnlwD3cQ6TObPD6WFWjKocWIdpEpIvdJHwWUfSFf0JIi8ON8z6ZEhsnyKVCcLQ== } + '@e2b/code-interpreter@0.0.5': + resolution: {integrity: sha512-ToFQ6N6EU8t91z3EJzh+mG+zf7uK8I1PRLWeu1f3bPS0pAJfM0puzBWOB3XlF9A9R5zZu/g8iO1gGPQXzXY5vA==} + engines: {node: '>=18'} - '@smithy/middleware-content-length@2.1.4': - resolution: { integrity: sha512-C6VRwfcr0w9qRFhDGCpWMVhlEIBFlmlPRP1aX9Cv9xDj9SUwlDrNvoV1oP1vjRYuLxCDgovBBynCwwcluS2wLw== } - engines: { node: '>=14.0.0' } + '@elastic/elasticsearch@8.12.2': + resolution: {integrity: sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ==} + engines: {node: '>=18'} - '@smithy/middleware-content-length@3.0.5': - resolution: { integrity: sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== } - engines: { node: '>=16.0.0' } + '@elastic/transport@8.4.1': + resolution: {integrity: sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA==} + engines: {node: '>=16'} - '@smithy/middleware-endpoint@2.4.6': - resolution: { integrity: sha512-AsXtUXHPOAS0EGZUSFOsVJvc7p0KL29PGkLxLfycPOcFVLru/oinYB6yvyL73ZZPX2OB8sMYUMrj7eH2kI7V/w== } - engines: { node: '>=14.0.0' } + '@emotion/babel-plugin@11.11.0': + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} - '@smithy/middleware-endpoint@3.1.0': - resolution: { integrity: sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== } - engines: { node: '>=16.0.0' } + '@emotion/cache@11.11.0': + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - '@smithy/middleware-retry@2.1.6': - resolution: { integrity: sha512-khpSV0NxqMHfa06kfG4WYv+978sVvfTFmn0hIFKKwOXtIxyYtPKiQWFT4nnwZD07fGdYGbtCBu3YALc8SsA5mA== } - engines: { node: '>=14.0.0' } + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - '@smithy/middleware-retry@3.0.14': - resolution: { integrity: sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ== } - engines: { node: '>=16.0.0' } + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - '@smithy/middleware-serde@2.2.1': - resolution: { integrity: sha512-VAWRWqnNjgccebndpyK94om4ZTYzXLQxUmNCXYzM/3O9MTfQjTNBgtFtQwyIIez6z7LWcCsXmnKVIOE9mLqAHQ== } - engines: { node: '>=14.0.0' } + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} - '@smithy/middleware-serde@3.0.3': - resolution: { integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== } - engines: { node: '>=16.0.0' } + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - '@smithy/middleware-stack@2.1.4': - resolution: { integrity: sha512-Qqs2ba8Ax1rGKOSGJS2JN23fhhox2WMdRuzx0NYHtXzhxbJOIMmz9uQY6Hf4PY8FPteBPp1+h0j5Fmr+oW12sg== } - engines: { node: '>=14.0.0' } + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - '@smithy/middleware-stack@3.0.3': - resolution: { integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== } - engines: { node: '>=16.0.0' } + '@emotion/react@11.11.4': + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/node-config-provider@2.2.5': - resolution: { integrity: sha512-CxPf2CXhjO79IypHJLBATB66Dw6suvr1Yc2ccY39hpR6wdse3pZ3E8RF83SODiNH0Wjmkd0ze4OF8exugEixgA== } - engines: { node: '>=14.0.0' } + '@emotion/serialize@1.1.3': + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} - '@smithy/node-config-provider@3.1.4': - resolution: { integrity: sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== } - engines: { node: '>=16.0.0' } + '@emotion/sheet@1.2.2': + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - '@smithy/node-http-handler@2.4.2': - resolution: { integrity: sha512-yrj3c1g145uiK5io+1UPbJAHo8BSGORkBzrmzvAsOmBKb+1p3jmM8ZwNLDH/HTTxVLm9iM5rMszx+iAh1HUC4Q== } - engines: { node: '>=14.0.0' } + '@emotion/styled@11.11.0': + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/node-http-handler@3.1.4': - resolution: { integrity: sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== } - engines: { node: '>=16.0.0' } + '@emotion/stylis@0.8.5': + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.2.1': + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@esbuild-kit/cjs-loader@2.4.4': + resolution: {integrity: sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@0.4.3': + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.37.0': + resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@floating-ui/core@1.6.0': + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + + '@floating-ui/dom@1.6.3': + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + + '@floating-ui/react-dom@2.0.8': + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.1': + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + + '@flowiseai/nodevm@3.9.25': + resolution: {integrity: sha512-Ncd6iSsW4X6cKmJ+QtRM3SAZkqkM4Hg/CpgSdij3zOiZok9NiLxptXOyadHp5uomwr8EVozFFYknAVJngJ0jFQ==} + engines: {node: '>=18.10', pnpm: '>=9.6'} + hasBin: true + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@getzep/zep-cloud@1.0.7': + resolution: {integrity: sha512-QL0v8SBqDVm/CX447pAGaw55hIE8U3WfOCjmiGx/S0ICamtJFRmVZDeOpCzb6sPPxVE9OjaSaCuW8ORvzHb2Ew==} + peerDependencies: + '@langchain/core': 0.3.37 + langchain: ~0.1.19 + peerDependenciesMeta: + '@langchain/core': + optional: true + langchain: + optional: true - '@smithy/property-provider@2.1.4': - resolution: { integrity: sha512-nWaY/MImj1BiXZ9WY65h45dcxOx8pl06KYoHxwojDxDL+Q9yLU1YnZpgv8zsHhEftlj9KhePENjQTlNowWVyug== } - engines: { node: '>=14.0.0' } + '@getzep/zep-js@0.9.0': + resolution: {integrity: sha512-GNaH7EwAisAaMuaUZzOR3hk3yTc7LXrqboPfSN6mZE0rAWGHOjT7V53Hec6yFJqFyXs4/7DsJvZlOcs+gEygNQ==} + engines: {node: '>=18.0.0'} - '@smithy/property-provider@3.1.3': - resolution: { integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== } - engines: { node: '>=16.0.0' } + '@gomomento/generated-types@0.106.1': + resolution: {integrity: sha512-ZU4UwavbZArUoF/5nlRnKgriSZ1CJTNcYa/LhIlOcUuCGIBKi4W1+/rd/q/M5g9SspMdTawywRgncGYqwjrUpw==} + + '@gomomento/sdk-core@1.68.1': + resolution: {integrity: sha512-T527eUIn8+cYFDWUY0hoVRBI+M4jkY5WvB9EIS6M13mVk2XH5sgX9X3MNQCPU+KR4YDvvMH8BPhWydQEazZEQQ==} + engines: {node: '>= 14'} + + '@gomomento/sdk@1.68.1': + resolution: {integrity: sha512-e3rko4EI2+975jfZ+7bXugjHJD32pqtBLs1bMFhsqBUm2daMU86i/5HvQ8jCpCsKpaQpsLS37SlZKkJ8LZJ3Aw==} + engines: {node: '>= 14'} + + '@google-ai/generativelanguage@2.6.0': + resolution: {integrity: sha512-T2tULO1/j4Gs1oYF9OMKCGXHE/m7aCPUonav32iu+sA4nN+acy5Z+Sz6yR4EzL+LkPSfkeW0FOjeRGkl5xtwvw==} + engines: {node: '>=14.0.0'} + + '@google-cloud/vertexai@1.1.0': + resolution: {integrity: sha512-hfwfdlVpJ+kM6o2b5UFfPnweBcz8tgHAFRswnqUKYqLJsvKU0DDD0Z2/YKoHyAUoPJAv20qg6KlC3msNeUKUiw==} + engines: {node: '>=18.0.0'} + + '@google/generative-ai@0.22.0': + resolution: {integrity: sha512-mLR3PDWCk5O/BWNyDvFDIiwKeXQmFGZ+kJFd9m73QrUPCFREttJyVbBPTW4y9CwTbaltLMDaLDfroCrRv5Bl8Q==} + engines: {node: '>=18.0.0'} + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@smithy/protocol-http@3.2.2': - resolution: { integrity: sha512-xYBlllOQcOuLoxzhF2u8kRHhIFGQpDeTQj/dBSnw4kfI29WMKL5RnW1m9YjnJAJ49miuIvrkJR+gW5bCQ+Mchw== } - engines: { node: '>=14.0.0' } + '@grpc/grpc-js@1.10.10': + resolution: {integrity: sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg==} + engines: {node: '>=12.10.0'} - '@smithy/protocol-http@4.1.0': - resolution: { integrity: sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== } - engines: { node: '>=16.0.0' } + '@grpc/proto-loader@0.7.13': + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true - '@smithy/querystring-builder@2.1.4': - resolution: { integrity: sha512-LXSL0J/nRWvGT+jIj+Fip3j0J1ZmHkUyBFRzg/4SmPNCLeDrtVu7ptKOnTboPsFZu5BxmpYok3kJuQzzRdrhbw== } - engines: { node: '>=14.0.0' } + '@grpc/proto-loader@0.7.7': + resolution: {integrity: sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==} + engines: {node: '>=6'} + hasBin: true - '@smithy/querystring-builder@3.0.3': - resolution: { integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== } - engines: { node: '>=16.0.0' } + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - '@smithy/querystring-parser@2.1.4': - resolution: { integrity: sha512-U2b8olKXgZAs0eRo7Op11jTNmmcC/sqYmsA7vN6A+jkGnDvJlEl7AetUegbBzU8q3D6WzC5rhR/joIy8tXPzIg== } - engines: { node: '>=14.0.0' } + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@smithy/querystring-parser@3.0.3': - resolution: { integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== } - engines: { node: '>=16.0.0' } + '@hookform/error-message@2.0.1': + resolution: {integrity: sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + react-hook-form: ^7.0.0 + + '@httptoolkit/websocket-stream@6.0.1': + resolution: {integrity: sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ==} + + '@huggingface/inference@1.8.0': + resolution: {integrity: sha512-Dkh7PiyMf6TINRocQsdceiR5LcqJiUHgWjaBMRpCUOCbs+GZA122VH9q+wodoSptj6rIQf7wIwtDsof+/gd0WA==} + engines: {node: '>=18'} + + '@huggingface/inference@2.6.4': + resolution: {integrity: sha512-Xna7arltBSBoKaH3diGi3sYvkExgJMd/pF4T6vl2YbmDccbr1G/X5EPZ2048p+YgrJYG1jTYFCtY6Dr3HvJaow==} + engines: {node: '>=18'} + + '@huggingface/inference@2.7.0': + resolution: {integrity: sha512-u7Fn637Q3f7nUB1tajM4CgzhvoFQkOQr5W5Fm+2wT9ETgGoLBh25BLlYPTJRjAd2WY01s71v0lqAwNvHHCc3mg==} + engines: {node: '>=18'} + + '@huggingface/jinja@0.2.2': + resolution: {integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==} + engines: {node: '>=18'} + + '@huggingface/tasks@0.10.6': + resolution: {integrity: sha512-aGqvPsZZ8JLkAs7IChsEZil/aNLoMsqDryDFqJV7N5u//EaHzHAU6ORwVxEJIWJ9MIqJauJ9f7LYNtKC5Axh3w==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/config-array@0.5.0': + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@humanwhocodes/object-schema@2.0.2': + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + deprecated: Use @eslint/object-schema instead + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@ibm-cloud/watsonx-ai@1.5.1': + resolution: {integrity: sha512-7srn4TgknDWcql63OXLNsZnqVbsqHzFVLTihDPI/UyufDxQbGdsYbdc/aEua1qW9HYDoAmEerXuYuohsMwthjw==} + engines: {node: '>=18.0.0'} + + '@icons/material@0.2.4': + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/string-locale-compare@1.1.0': + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/console@28.1.3': + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - '@smithy/service-error-classification@2.1.4': - resolution: { integrity: sha512-JW2Hthy21evnvDmYYk1kItOmbp3X5XI5iqorXgFEunb6hQfSDZ7O1g0Clyxg7k/Pcr9pfLk5xDIR2To/IohlsQ== } - engines: { node: '>=14.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 - '@smithy/service-error-classification@3.0.3': - resolution: { integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== } - engines: { node: '>=16.0.0' } + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@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@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - '@smithy/shared-ini-file-loader@2.3.5': - resolution: { integrity: sha512-oI99+hOvsM8oAJtxAGmoL/YCcGXtbP0fjPseYGaNmJ4X5xOFTer0KPk7AIH3AL6c5AlYErivEi1X/X78HgTVIw== } - engines: { node: '>=14.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 - '@smithy/shared-ini-file-loader@3.1.4': - resolution: { integrity: sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== } - engines: { node: '>=16.0.0' } + '@jest/schemas@28.1.3': + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@smithy/signature-v4@2.1.4': - resolution: { integrity: sha512-gnu9gCn0qQ8IdhNjs6o3QVCXzUs33znSDYwVMWo3nX4dM6j7z9u6FC302ShYyVWfO4MkVMuGCCJ6nl3PcH7V1Q== } - engines: { node: '>=14.0.0' } + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@smithy/signature-v4@4.1.0': - resolution: { integrity: sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== } - engines: { node: '>=16.0.0' } + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@smithy/smithy-client@2.4.4': - resolution: { integrity: sha512-SNE17wjycPZIJ2P5sv6wMTteV/vQVPdaqQkoK1KeGoWHXx79t3iLhQXj1uqRdlkMUS9pXJrLOAS+VvUSOYwQKw== } - engines: { node: '>=14.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@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@28.1.3': + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@28.1.3': + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + 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.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.1.1': + resolution: {integrity: sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.5.0': + resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@ladle/react-context@1.0.1': + resolution: {integrity: sha512-xVQ8siyOEQG6e4Knibes1uA3PTyXnqiMmfSmd5pIbkzeDty8NCBtYHhTXSlfmcDNEsw/G8OzNWo4VbyQAVDl2A==} + peerDependencies: + react: '>=16.14.0' + react-dom: '>=16.14.0' + + '@ladle/react@2.5.1': + resolution: {integrity: sha512-xTSs5dUIK+zQzHNo6i3SDuA9lu0k8nUJ7/RNeNJ7oTkX05FfBSxCUeIKeUAjaVNm/axvylVhdGDm+yLBIxq8EA==} + engines: {node: '>=16.0.0'} + hasBin: true + peerDependencies: + react: '>=16.14.0' + react-dom: '>=16.14.0' + + '@langchain/anthropic@0.3.14': + resolution: {integrity: sha512-zfix+qo/coIkgjTYpadp71IAWGXriIfImYLwMr1HnFsit4/RN9DU+aEOdm0nTwycbaneUpwWs5yfje8IKWHfsA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/aws@0.1.4': + resolution: {integrity: sha512-1tQiDKEKayY0eGVzs2HAzw13v8sN7Vm3omlYgIhOlE1Mh29p63Z5REj1UN+rfXNY8OFqjzDxBBFNA7A943+rqQ==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/baidu-qianfan@0.1.0': + resolution: {integrity: sha512-sl0kgN/7pBti2oF3PQRk1dLfXpmx3kGuyFiooTfkTswO7zeVbv5VPwjmw2/096ctkziEQLBGqQ7dZReEDcXPRA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/cohere@0.0.7': + resolution: {integrity: sha512-ICSrSOT6FzSbR+xnbkP6BxXhuom1ViPRiy8K8KrL6bHbTiR5v1UnpskTWRpyhQS1GA6+3t1gp7XHxB5CZzLyqQ==} + engines: {node: '>=18'} + + '@langchain/community@0.3.34': + resolution: {integrity: sha512-s0KVulgVIPd90s3m6XZtWrCRGQPWsY93uY62seFMmNhzcyF+I65kKnN04Nbiouthrn/YJ9HB4hW8MJAFuX6RRg==} + engines: {node: '>=18'} + peerDependencies: + '@arcjet/redact': ^v1.0.0-alpha.23 + '@aws-crypto/sha256-js': ^5.0.0 + '@aws-sdk/client-bedrock-agent-runtime': ^3.749.0 + '@aws-sdk/client-bedrock-runtime': ^3.749.0 + '@aws-sdk/client-dynamodb': ^3.749.0 + '@aws-sdk/client-kendra': ^3.749.0 + '@aws-sdk/client-lambda': ^3.749.0 + '@aws-sdk/client-s3': ^3.749.0 + '@aws-sdk/client-sagemaker-runtime': ^3.749.0 + '@aws-sdk/client-sfn': ^3.749.0 + '@aws-sdk/credential-provider-node': ^3.388.0 + '@aws-sdk/dsql-signer': '*' + '@azure/search-documents': ^12.0.0 + '@azure/storage-blob': ^12.15.0 + '@browserbasehq/sdk': '*' + '@browserbasehq/stagehand': ^1.0.0 + '@clickhouse/client': ^0.2.5 + '@cloudflare/ai': '*' + '@datastax/astra-db-ts': ^1.0.0 + '@elastic/elasticsearch': ^8.4.0 + '@getmetal/metal-sdk': '*' + '@getzep/zep-cloud': ^1.0.6 + '@getzep/zep-js': ^0.9.0 + '@gomomento/sdk': ^1.51.1 + '@gomomento/sdk-core': ^1.51.1 + '@google-ai/generativelanguage': '*' + '@google-cloud/storage': ^6.10.1 || ^7.7.0 + '@gradientai/nodejs-sdk': ^1.2.0 + '@huggingface/inference': ^2.6.4 + '@huggingface/transformers': ^3.2.3 + '@ibm-cloud/watsonx-ai': '*' + '@lancedb/lancedb': ^0.12.0 + '@langchain/core': 0.3.37 + '@layerup/layerup-security': ^1.5.12 + '@libsql/client': ^0.14.0 + '@mendable/firecrawl-js': ^1.4.3 + '@mlc-ai/web-llm': '*' + '@mozilla/readability': '*' + '@neondatabase/serverless': '*' + '@notionhq/client': ^2.2.10 + '@opensearch-project/opensearch': '*' + '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 + '@premai/prem-sdk': ^0.3.25 + '@qdrant/js-client-rest': ^1.8.2 + '@raycast/api': ^1.55.2 + '@rockset/client': ^0.9.1 + '@smithy/eventstream-codec': ^2.0.5 + '@smithy/protocol-http': ^3.0.6 + '@smithy/signature-v4': ^2.0.10 + '@smithy/util-utf8': ^2.0.0 + '@spider-cloud/spider-client': ^0.0.21 + '@supabase/supabase-js': ^2.45.0 + '@tensorflow-models/universal-sentence-encoder': '*' + '@tensorflow/tfjs-converter': '*' + '@tensorflow/tfjs-core': '*' + '@upstash/ratelimit': ^1.1.3 || ^2.0.3 + '@upstash/redis': ^1.20.6 + '@upstash/vector': ^1.1.1 + '@vercel/kv': '*' + '@vercel/postgres': '*' + '@writerai/writer-sdk': ^0.40.2 + '@xata.io/client': ^0.28.0 + '@zilliz/milvus2-sdk-node': '>=2.3.5' + apify-client: ^2.7.1 + assemblyai: ^4.6.0 + better-sqlite3: '>=9.4.0 <12.0.0' + cassandra-driver: ^4.7.2 + cborg: ^4.1.1 + cheerio: ^1.0.0-rc.12 + chromadb: '*' + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: '*' + convex: ^1.3.1 + crypto-js: ^4.2.0 + d3-dsv: ^2.0.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + duck-duck-scrape: ^2.2.5 + epub2: ^3.0.1 + fast-xml-parser: '*' + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: '*' + googleapis: '*' + hnswlib-node: ^3.0.0 + html-to-text: ^9.0.5 + ibm-cloud-sdk-core: '*' + ignore: ^5.2.0 + interface-datastore: ^8.2.11 + ioredis: ^5.3.2 + it-all: ^3.0.4 + jsdom: '*' + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.7.10 + mammoth: ^1.6.0 + mongodb: '>=5.2.0' + mysql2: ^3.9.8 + neo4j-driver: '*' + notion-to-md: ^3.1.0 + officeparser: ^4.0.4 + openai: 4.82.0 + pdf-parse: 1.1.1 + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + playwright: ^1.32.1 + portkey-ai: ^0.1.11 + puppeteer: '*' + pyodide: '>=0.24.1 <0.27.0' + redis: '*' + replicate: '*' + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.3 + typeorm: ^0.3.20 + typesense: ^1.5.3 + usearch: ^1.1.1 + voy-search: 0.6.2 + weaviate-ts-client: '*' + web-auth-library: ^1.0.3 + word-extractor: '*' + ws: ^8.14.2 + youtubei.js: '*' + peerDependenciesMeta: + '@arcjet/redact': + optional: true + '@aws-crypto/sha256-js': + optional: true + '@aws-sdk/client-bedrock-agent-runtime': + optional: true + '@aws-sdk/client-bedrock-runtime': + optional: true + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-kendra': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@aws-sdk/credential-provider-node': + optional: true + '@aws-sdk/dsql-signer': + optional: true + '@azure/search-documents': + optional: true + '@azure/storage-blob': + optional: true + '@browserbasehq/sdk': + optional: true + '@clickhouse/client': + optional: true + '@cloudflare/ai': + optional: true + '@datastax/astra-db-ts': + optional: true + '@elastic/elasticsearch': + optional: true + '@getmetal/metal-sdk': + optional: true + '@getzep/zep-cloud': + optional: true + '@getzep/zep-js': + optional: true + '@gomomento/sdk': + optional: true + '@gomomento/sdk-core': + optional: true + '@google-ai/generativelanguage': + optional: true + '@google-cloud/storage': + optional: true + '@gradientai/nodejs-sdk': + optional: true + '@huggingface/inference': + optional: true + '@huggingface/transformers': + optional: true + '@lancedb/lancedb': + optional: true + '@layerup/layerup-security': + optional: true + '@libsql/client': + optional: true + '@mendable/firecrawl-js': + optional: true + '@mlc-ai/web-llm': + optional: true + '@mozilla/readability': + optional: true + '@neondatabase/serverless': + optional: true + '@notionhq/client': + optional: true + '@opensearch-project/opensearch': + optional: true + '@pinecone-database/pinecone': + optional: true + '@planetscale/database': + optional: true + '@premai/prem-sdk': + optional: true + '@qdrant/js-client-rest': + optional: true + '@raycast/api': + optional: true + '@rockset/client': + optional: true + '@smithy/eventstream-codec': + optional: true + '@smithy/protocol-http': + optional: true + '@smithy/signature-v4': + optional: true + '@smithy/util-utf8': + optional: true + '@spider-cloud/spider-client': + optional: true + '@supabase/supabase-js': + optional: true + '@tensorflow-models/universal-sentence-encoder': + optional: true + '@tensorflow/tfjs-converter': + optional: true + '@tensorflow/tfjs-core': + optional: true + '@upstash/ratelimit': + optional: true + '@upstash/redis': + optional: true + '@upstash/vector': + optional: true + '@vercel/kv': + optional: true + '@vercel/postgres': + optional: true + '@writerai/writer-sdk': + optional: true + '@xata.io/client': + optional: true + '@zilliz/milvus2-sdk-node': + optional: true + apify-client: + optional: true + assemblyai: + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + cborg: + optional: true + cheerio: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + crypto-js: + optional: true + d3-dsv: + optional: true + discord.js: + optional: true + dria: + optional: true + duck-duck-scrape: + optional: true + epub2: + optional: true + fast-xml-parser: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ignore: + optional: true + interface-datastore: + optional: true + ioredis: + optional: true + it-all: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mammoth: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + playwright: + optional: true + portkey-ai: + optional: true + puppeteer: + optional: true + pyodide: + optional: true + redis: + optional: true + replicate: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + word-extractor: + optional: true + ws: + optional: true + youtubei.js: + optional: true - '@smithy/smithy-client@3.1.12': - resolution: { integrity: sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA== } - engines: { node: '>=16.0.0' } + '@langchain/core@0.3.37': + resolution: {integrity: sha512-LFk9GqHxcyCFx0oXvCBP7vDZIOUHYzzNU7JR+2ofIMnfkBLzcCKzBLySQDfPtd13PrpGHkaeOeLq8H1Tqi9lSw==} + engines: {node: '>=18'} + + '@langchain/exa@0.0.5': + resolution: {integrity: sha512-KXNCYLxKs6rDGw+jcrFqE4CrIooUgzU0ip0k76YFptvMPrqLpNurYyqr5mAys0qn2vFavFfC3eJV/wrZ602EfA==} + engines: {node: '>=18'} + + '@langchain/google-common@0.2.1': + resolution: {integrity: sha512-0qDUE1TniKULQHxgjcg8ZJ4rIkXMcCzsxnf6nJ4ZT2RdnkuQCdHOfEaYS9y+0eqUGuUzKyM59VhQwwv5WVBAMQ==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/google-gauth@0.2.1': + resolution: {integrity: sha512-pk4DRPFP/ag5Ns4gIGdBb/+9YyMi28b5p1wzyB9u1HzTd2zZo8eX0W71eU4G6AtBdr+2Q2JPMkWAXgrvag8MFw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/google-genai@0.1.9': + resolution: {integrity: sha512-YmGnGJBOMOmSwWFrVy1ySGft7RbdLjwOdziwxgMfk4353CDE7rsRyzMMLkLEwaG8qGxF5vdZAlAImnVDFkJhug==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/google-vertexai@0.2.1': + resolution: {integrity: sha512-eLJGR2xTKqGI1Tc/iBCJUIYyevMvhKHlZslbUdkK6j/czhJ9uRV7hjI83NJq5osru6oWdryVGZ9AIyJ1MdGnIw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/langgraph@0.0.22': + resolution: {integrity: sha512-VdWUDRo/CXe1SjR34WxtbIwxIykSKjbdduKaNxCIPCZYxhfeL+NY3xi3F8ES6RTQV9gNYrl6ODuuXQtACQpK7g==} + engines: {node: '>=18'} + peerDependencies: + better-sqlite3: ^9.5.0 + peerDependenciesMeta: + better-sqlite3: + optional: true - '@smithy/types@2.11.0': - resolution: { integrity: sha512-AR0SXO7FuAskfNhyGfSTThpLRntDI5bOrU0xrpVYU0rZyjl3LBXInZFMTP/NNSd7IS6Ksdtar0QvnrPRIhVrLQ== } - engines: { node: '>=14.0.0' } + '@langchain/mistralai@0.2.0': + resolution: {integrity: sha512-VdfbKZopAuSXf/vlXbriGWLK3c7j5s47DoB3S31xpprY2BMSKZZiX9vE9TsgxMfAPuIDPIYcfgU7p1upvTYt8g==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/mongodb@0.0.1': + resolution: {integrity: sha512-5CWh73s7D9/WraXcZJTqc6VRkITNe71G4uXBO/KwtE1E/7DlYT8EvWzX6Er+HvVp1EsBGlcJGUp9St/lvbfrPg==} + engines: {node: '>=18'} + + '@langchain/ollama@0.2.0': + resolution: {integrity: sha512-jLlYFqt+nbhaJKLakk7lRTWHZJ7wHeJLM6yuv4jToQ8zPzpL//372+MjggDoW0mnw8ofysg1T2C6mEJspKJtiA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/openai@0.3.17': + resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/openai@0.4.4': + resolution: {integrity: sha512-UZybJeMd8+UX7Kn47kuFYfqKdBCeBUWNqDtmAr6ZUIMMnlsNIb6MkrEEhGgAEjGCpdT4CU8U/DyyddTz+JayOQ==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/pinecone@0.1.3': + resolution: {integrity: sha512-1DPZvkg3Ve1TJSUfmpf7GF2SvRyg8cLjKjffkuW/C3oPONti2a9W7Q+F18YgBf1Swk0bPJ7A1EtMvlsU+NOQmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/qdrant@0.0.5': + resolution: {integrity: sha512-zhBHE3rSBUBzIqBnR4RQB48DwXLPp5LGbCPfFCDrum4ZXDUXHQNq6Jrq8OAm6UFfx9IzMQ07Dlr7/VO6w3BlaQ==} + engines: {node: '>=18'} + + '@langchain/textsplitters@0.0.1': + resolution: {integrity: sha512-DqYsdZ/W2e4DlC8uFEFkYMtlAAmtDJgEJIl59XkueCQ0yNIMi1r9zpiRykaK/hBNEwE8FnQxixGj3mXwVTerdQ==} + engines: {node: '>=18'} + + '@langchain/textsplitters@0.1.0': + resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@langchain/weaviate@0.0.1': + resolution: {integrity: sha512-Lf6zgTf6i/fsPNlkDxPRLA3LEz2Wwgk6LNe54dByt0oZM4W+N4n5n/gDwojsXAKNEF5alXUv2N6yAOcUuXSbxg==} + engines: {node: '>=18'} + + '@langchain/xai@0.0.1': + resolution: {integrity: sha512-F1/btq7+DzvyBFsCsShkt1MVUXIo52b4f6Ti2Eea0o/Oth/D2jfpnQmZLZ4rZHSGjxI0bRkS5zLyYveTbr+7yA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + + '@leichtgewicht/ip-codec@2.0.4': + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + + '@lezer/common@1.2.1': + resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} + + '@lezer/highlight@1.2.0': + resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} + + '@lezer/javascript@1.4.13': + resolution: {integrity: sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==} + + '@lezer/json@1.0.2': + resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} + + '@lezer/lr@1.4.0': + resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==} + + '@llamaindex/cloud@0.0.5': + resolution: {integrity: sha512-8HBSiAZkmX1RvpEM2czEVKqMUCKk7uvMSiDpMGWlEj3MUKBYCh+r8E2TtVhZfU4TunEI7nJRMcVBfXDyFz6Lpw==} + peerDependencies: + node-fetch: ^3.3.2 + peerDependenciesMeta: + node-fetch: + optional: true - '@smithy/types@3.3.0': - resolution: { integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== } - engines: { node: '>=16.0.0' } + '@llamaindex/env@0.1.3': + resolution: {integrity: sha512-PM9cZ8x6jjdugWG30vBxb9Ju2LFmGY0l0pN7AUXXKULFNytQddx96xHh07pV/juf/WqjhFp75FVAykAlqO/qzQ==} + peerDependencies: + '@aws-crypto/sha256-js': ^5.2.0 + pathe: ^1.1.2 + peerDependenciesMeta: + '@aws-crypto/sha256-js': + optional: true + pathe: + optional: true - '@smithy/url-parser@2.1.4': - resolution: { integrity: sha512-1hTy6UYRYqOZlHKH2/2NzdNQ4NNmW2Lp0sYYvztKy+dEQuLvZL9w88zCzFQqqFer3DMcscYOshImxkJTGdV+rg== } + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@mdx-js/mdx@3.0.1': + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + + '@mdx-js/react@3.0.1': + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mendable/firecrawl-js@0.0.28': + resolution: {integrity: sha512-Xa+ZbBQkoR/KHM1ZpvJBdLWSCdRoRGyllDNoVvhKxGv9qXZk9h/lBxbqp3Kc1Kg2L2JJnJCkmeaTUCAn8y33GA==} + + '@microsoft/fetch-event-source@2.0.1': + resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} + + '@mistralai/mistralai@0.1.3': + resolution: {integrity: sha512-WUHxC2xdeqX9PTXJEqdiNY54vT2ir72WSJrZTTBKRnkfhX6zIfCYA24faRlWjUB5WTpn+wfdGsTMl3ArijlXFA==} + + '@mistralai/mistralai@0.2.0': + resolution: {integrity: sha512-mYjE9NovwWdhSXd6KvOgjWUyka2qlxhuohsqhRN4rFtH2MdTDJhAeH3Aqvu3P9q71Xz9oBX2pNWrPVVzkgwZTg==} + + '@mistralai/mistralai@1.5.0': + resolution: {integrity: sha512-AIn8pwAwA/fDvEUvmkt+40zH1ZmfaG3Q7oUWl17GUEC1tU7ZPwYz8Cv9P59lyS1SisHdDSu81oknO7f1ywkz8Q==} + peerDependencies: + zod: '>= 3' + + '@modelcontextprotocol/sdk@1.0.1': + resolution: {integrity: sha512-slLdFaxQJ9AlRg+hw28iiTtGvShAOgOKXcD0F91nUcRYiOMuS9ZBYjcdNZRXW9G5JQ511GRTdUy1zQVZDpJ+4w==} + + '@modelcontextprotocol/sdk@1.6.1': + resolution: {integrity: sha512-oxzMzYCkZHMntzuyerehK3fV6A2Kwh5BD6CGEJSVDU2QNEhfLOptf2X7esQgaHZXHZY0oHmMsOtIDLP71UJXgA==} + engines: {node: '>=18'} + + '@modelcontextprotocol/server-brave-search@0.6.2': + resolution: {integrity: sha512-AtdnPh8zVsEooXWZD21Negz3JL6iRmKf4sUtwCrLe0e83QBJD6Hf5B3rOFkwsrnTew/6xL7oyRkhc6YuXhuuhQ==} + hasBin: true + + '@modelcontextprotocol/server-github@2025.1.23': + resolution: {integrity: sha512-VlRc0G/hDjfOWXOT7r5LFB6+nivQXRlwfxYE0h92tyVjBPgfwSK508xGkiGI14Llllcbo2vCeRO/y2+1I1UKGA==} + hasBin: true + + '@modelcontextprotocol/server-postgres@0.6.2': + resolution: {integrity: sha512-ukbVmVxLAsdZ5pTVWbhf9fc7lqkSf7XqizNH8XAotI21GnRPtkqO+WLWpeBFU+/2Fyv63uXS7/9NnR8Y8wOP1Q==} + hasBin: true + + '@modelcontextprotocol/server-slack@2025.1.17': + resolution: {integrity: sha512-JTP/GdbZnTj8rC2KeVBpwsQLP6R7rt26M01cMt8SPgVy18vsTogjDEotQYjYv0b8ga4EgPLWzJhiKbpn81zOKg==} + hasBin: true + + '@monaco-editor/loader@1.4.0': + resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' + + '@monaco-editor/react@4.6.0': + resolution: {integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@mongodb-js/saslprep@1.1.5': + resolution: {integrity: sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@mui/base@5.0.0-beta.27': + resolution: {integrity: sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/url-parser@3.0.3': - resolution: { integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== } + '@mui/base@5.0.0-beta.40': + resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-base64@2.2.0': - resolution: { integrity: sha512-RiQI/Txu0SxCR38Ky5BMEVaFfkNTBjpbxlr2UhhxggSmnsHDQPZJWMtPoXs7TWZaseslIlAWMiHmqRT3AV/P2w== } - engines: { node: '>=14.0.0' } + '@mui/core-downloads-tracker@5.15.12': + resolution: {integrity: sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA==} + + '@mui/icons-material@5.0.3': + resolution: {integrity: sha512-Lktn+4GNnXdVrOCUUvNNvOD9VyrGazWBsJy0BQeQgBe/+IjFMdlcNrDEUIlGlA5ZXOq7Mr/Mv9Os02mgF65jiw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0-rc.0 + '@types/react': ^16.8.6 || ^17.0.0 + react: ^17.0.2 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-base64@3.0.0': - resolution: { integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== } - engines: { node: '>=16.0.0' } + '@mui/lab@5.0.0-alpha.156': + resolution: {integrity: sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material': '>=5.10.11' + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true - '@smithy/util-body-length-browser@2.1.1': - resolution: { integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag== } + '@mui/material@5.15.0': + resolution: {integrity: sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true - '@smithy/util-body-length-browser@3.0.0': - resolution: { integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== } + '@mui/private-theming@5.15.12': + resolution: {integrity: sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-body-length-node@2.2.1': - resolution: { integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg== } - engines: { node: '>=14.0.0' } + '@mui/styled-engine@5.15.11': + resolution: {integrity: sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true - '@smithy/util-body-length-node@3.0.0': - resolution: { integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== } - engines: { node: '>=16.0.0' } + '@mui/system@5.15.12': + resolution: {integrity: sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true - '@smithy/util-buffer-from@2.1.1': - resolution: { integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg== } - engines: { node: '>=14.0.0' } + '@mui/types@7.2.13': + resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-buffer-from@3.0.0': - resolution: { integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== } - engines: { node: '>=16.0.0' } + '@mui/types@7.2.14': + resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-config-provider@2.2.1': - resolution: { integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw== } - engines: { node: '>=14.0.0' } + '@mui/utils@5.15.0': + resolution: {integrity: sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-config-provider@3.0.0': - resolution: { integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== } - engines: { node: '>=16.0.0' } + '@mui/utils@5.16.0': + resolution: {integrity: sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/util-defaults-mode-browser@2.1.6': - resolution: { integrity: sha512-lM2JMYCilrejfGf8WWnVfrKly3vf+mc5x9TrTpT++qIKP452uWfLqlaUxbz1TkSfhqm8RjrlY22589B9aI8A9w== } - engines: { node: '>= 10.0.0' } + '@mui/x-data-grid@6.8.0': + resolution: {integrity: sha512-L4CJb2zJDkyBXItfY1QwXt57ap1vIigPGiNrmuJZ8APS1jHafO1dftBWSfJyDJXsnQ5UsDBXsX1nagX51AebpQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^5.4.1 + '@mui/system': ^5.4.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@next-auth/prisma-adapter@1.0.7': + resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3' + next-auth: ^4 + + '@next/bundle-analyzer@13.5.6': + resolution: {integrity: sha512-4P5YVpR3N/B5+p0TQ/rPAr+9fsjkdfCVTGzJhKwE7XHqS+QME4gYxAYeGKkfkHEkP2A3GKXs8QSp0LjIvWLI3g==} + + '@next/env@14.2.5': + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + + '@next/eslint-plugin-next@13.2.4': + resolution: {integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==} + + '@next/eslint-plugin-next@13.5.6': + resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} + + '@next/swc-darwin-arm64@14.2.5': + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@14.2.5': + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@14.2.5': + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.5': + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@14.2.5': + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.5': + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@14.2.5': + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@14.2.5': + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.5': + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@notionhq/client@2.2.14': + resolution: {integrity: sha512-oqUefZtCiJPCX+74A1Os9OVTef3fSnVWe2eVQtU1HJSD+nsfxfhwvDKnzJTh2Tw1ZHKLxpieHB/nzGdY+Uo12A==} + engines: {node: '>=12'} + + '@npmcli/arborist@4.3.1': + resolution: {integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true + + '@npmcli/fs@1.1.1': + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/fs@3.1.0': + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/git@2.1.0': + resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} + + '@npmcli/git@4.1.0': + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/installed-package-contents@1.0.7': + resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} + engines: {node: '>= 10'} + hasBin: true + + '@npmcli/installed-package-contents@2.0.2': + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + '@npmcli/map-workspaces@2.0.4': + resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/metavuln-calculator@2.0.0': + resolution: {integrity: sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + + '@npmcli/move-file@1.1.2': + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs - '@smithy/util-defaults-mode-browser@3.0.14': - resolution: { integrity: sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w== } - engines: { node: '>= 10.0.0' } + '@npmcli/name-from-folder@1.0.1': + resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} - '@smithy/util-defaults-mode-node@2.2.6': - resolution: { integrity: sha512-UmUbPHbkBJCXRFbq+FPLpVwiFPHj1oPWXJS2f2sy23PtXM94c9X5EceI6JKuKdBty+tzhrAs5JbmPM/HvmDB8Q== } - engines: { node: '>= 10.0.0' } + '@npmcli/node-gyp@1.0.3': + resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} - '@smithy/util-defaults-mode-node@3.0.14': - resolution: { integrity: sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ== } - engines: { node: '>= 10.0.0' } + '@npmcli/node-gyp@3.0.0': + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@smithy/util-endpoints@1.1.5': - resolution: { integrity: sha512-tgDpaUNsUtRvNiBulKU1VnpoXU1GINMfZZXunRhUXOTBEAufG1Wp79uDXLau2gg1RZ4dpAR6lXCkrmddihCGUg== } - engines: { node: '>= 14.0.0' } + '@npmcli/package-json@1.0.1': + resolution: {integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==} - '@smithy/util-endpoints@2.0.5': - resolution: { integrity: sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== } - engines: { node: '>=16.0.0' } + '@npmcli/promise-spawn@1.3.2': + resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} - '@smithy/util-hex-encoding@2.1.1': - resolution: { integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg== } - engines: { node: '>=14.0.0' } + '@npmcli/promise-spawn@6.0.2': + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@smithy/util-hex-encoding@3.0.0': - resolution: { integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== } - engines: { node: '>=16.0.0' } + '@npmcli/run-script@2.0.0': + resolution: {integrity: sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==} - '@smithy/util-middleware@2.1.4': - resolution: { integrity: sha512-5yYNOgCN0DL0OplME0pthoUR/sCfipnROkbTO7m872o0GHCVNJj5xOFJ143rvHNA54+pIPMLum4z2DhPC2pVGA== } - engines: { node: '>=14.0.0' } + '@npmcli/run-script@6.0.2': + resolution: {integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@smithy/util-middleware@3.0.3': - resolution: { integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== } - engines: { node: '>=16.0.0' } + '@oclif/core@2.15.0': + resolution: {integrity: sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA==} + engines: {node: '>=14.0.0'} - '@smithy/util-retry@2.1.4': - resolution: { integrity: sha512-JRZwhA3fhkdenSEYIWatC8oLwt4Bdf2LhHbNQApqb7yFoIGMl4twcYI3BcJZ7YIBZrACA9jGveW6tuCd836XzQ== } - engines: { node: '>= 14.0.0' } + '@oclif/core@4.0.7': + resolution: {integrity: sha512-sU4Dx+RXCWAkrMw8tQFYAL6VfcHYKLPxVC9iKfgTXr4aDhcCssDwrbgpx0Di1dnNxvQlDGUhuCEInZuIY/nNfw==} + engines: {node: '>=18.0.0'} - '@smithy/util-retry@3.0.3': - resolution: { integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== } - engines: { node: '>=16.0.0' } + '@oclif/plugin-help@5.2.20': + resolution: {integrity: sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ==} + engines: {node: '>=12.0.0'} + + '@oclif/plugin-not-found@2.4.3': + resolution: {integrity: sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg==} + engines: {node: '>=12.0.0'} + + '@oclif/plugin-warn-if-update-available@2.1.1': + resolution: {integrity: sha512-y7eSzT6R5bmTIJbiMMXgOlbBpcWXGlVhNeQJBLBCCy1+90Wbjyqf6uvY0i2WcO4sh/THTJ20qCW80j3XUlgDTA==} + engines: {node: '>=12.0.0'} + + '@octokit/auth-token@2.5.0': + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + + '@octokit/core@3.6.0': + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + + '@octokit/endpoint@6.0.12': + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + + '@octokit/graphql@4.8.0': + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + + '@octokit/openapi-types@12.11.0': + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + + '@octokit/plugin-paginate-rest@2.21.3': + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + + '@octokit/plugin-request-log@1.0.4': + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + + '@octokit/plugin-rest-endpoint-methods@5.16.2': + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + + '@octokit/request-error@2.1.0': + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + + '@octokit/request@5.6.3': + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + + '@octokit/rest@18.12.0': + resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} + + '@octokit/types@6.41.0': + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + + '@opensearch-project/opensearch@1.2.0': + resolution: {integrity: sha512-bX0aUz5e7rlY1lKz1rFrqnNbl/l1CHvvysYB2Jn+C3WNs7nL6FnQjuxLhGwyRdW9W1bFokDoOVgPMIOi/Nn9/g==} + engines: {node: '>=10'} + + '@opentelemetry/api-logs@0.54.0': + resolution: {integrity: sha512-9HhEh5GqFrassUndqJsyW7a0PzfyWr2eV2xwzHLIS+wX3125+9HE9FMRAKmJRwxZhgZGwH3HNQQjoMGZqmOeVA==} + engines: {node: '>=14'} + + '@opentelemetry/api-logs@0.54.2': + resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==} + engines: {node: '>=14'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/auto-instrumentations-node@0.52.1': + resolution: {integrity: sha512-4QaRTZifSoYnh27B3JA7z7YwE0Nwkd824pDeonAQVijeLLsenhZB1japualZ6mF9lY8VdQId9KkNsgmCGdJVNQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.4.1 + + '@opentelemetry/context-async-hooks@1.27.0': + resolution: {integrity: sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@1.27.0': + resolution: {integrity: sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/exporter-logs-otlp-grpc@0.54.2': + resolution: {integrity: sha512-MQNmV5r96+5n3axLFgNYtVy62x8Ru7VERZH3zgC50KDcIKWCiQT3vHOtzakhzd1Wq0HqOgu6bzKdwzneSoDrEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-http@0.54.2': + resolution: {integrity: sha512-wYeCSbX2XWX2wFslnfQ/YFUolO0fj2nUiGI7oEQWpLKSg40Lc4xOOW14X/EXOkCCijhP7bigo6nvyEQlxEVLjA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-proto@0.54.2': + resolution: {integrity: sha512-agrzFbSNmIy6dhkyg41ERlEDUDqkaUJj2n/tVRFp9Tl+6wyNVPsqmwU5RWJOXpyK+lYH/znv6A47VpTeJF0lrw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-grpc@0.54.0': + resolution: {integrity: sha512-xzehh4aIoOuUrS2WFDlKVIz3Ayufa4AO8JOYwUsb65e8oWT3VWJV/V6kV80zC5xK/Wv/xJxfCBNA4FPazW1eDg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-http@0.54.0': + resolution: {integrity: sha512-9jRNyeyjPjGGRY4Fx7NdIAJ8Rook5D5z1toCp+xevujQcltgZOO/3rCqMo95UiY3d6zQu/H9ky5zzeCaYtXijg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-proto@0.54.0': + resolution: {integrity: sha512-2XOuSna24CWn1vCTqu/dY0Iva+3azP3tIPffjbCy+EDboATT6wpDJSkuT0gMgVb1HG7h0hxdq5XMIlJk/pS03A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.0': + resolution: {integrity: sha512-DOoK7yk/L/RHoyuYTxIyGY7PLFSTS7OGNks9htMS7eAFkm4Lsa6EtPlGANCT39NXWP4XIQR1c+Y+YIQ7lJdI+w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.2': + resolution: {integrity: sha512-tmxiCYhQdPrzwlM6O7VQeNP9PBjKhaiOo54wFxQFZQcoVaDiOOES4+6PwHU1eW+43mDsgdQHN5AHSRHVLe9jDA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.54.0': + resolution: {integrity: sha512-00X6rtr6Ew59+MM9pPSH7Ww5ScpWKBLiBA49awbPqQuVL/Bp0qp7O1cTxKHgjWdNkhsELzJxAEYwuRnDGrMXyA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.54.2': + resolution: {integrity: sha512-BgWKKyD/h2zpISdmYHN/sapwTjvt1P4p5yx4xeBV8XAEqh4OQUhOtSGFG80+nPQ1F8of3mKOT1DDoDbJp1u25w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-proto@0.54.0': + resolution: {integrity: sha512-cpDQj5wl7G8pLu3lW94SnMpn0C85A9Ehe7+JBow2IL5DGPWXTkynFngMtCC3PpQzQgzlyOVe0MVZfoBB3M5ECA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-proto@0.54.2': + resolution: {integrity: sha512-XSmm1N2wAhoWDXP1q/N6kpLebWaxl6VIADv4WA5QWKHLRpF3gLz5NAWNJBR8ygsvv8jQcrwnXgwfnJ18H3v1fg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-zipkin@1.27.0': + resolution: {integrity: sha512-eGMY3s4QprspFZojqsuQyQpWNFpo+oNVE/aosTbtvAlrJBAlvXcwwsOROOHOd8Y9lkU4i0FpQW482rcXkgwCSw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/instrumentation-amqplib@0.43.0': + resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-aws-lambda@0.47.0': + resolution: {integrity: sha512-0BidKDPziHWGl5mnpLuh7ob1X3KpR0UN3QcJkcxIsOMylBbMMp9EoB55dHsTMoNO7bx2uyeY0iirEuTchjF1gQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-aws-sdk@0.46.0': + resolution: {integrity: sha512-EyxGQVYhgY8OI4/CKzqamUswiEVlua6DJcsmkeNSykZrDGs78jPfssbqoMQGetywHWPZBRVJN4Ba/7aB5iLHBA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-bunyan@0.42.0': + resolution: {integrity: sha512-GBh6ybwKmFZjc86SyHVx72jHg+4pFPaXT3IZgJ4QtnMsMf0/q5m2aHAjid+yakmEkApsnRWX8pJ8nkl1e+6mag==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-cassandra-driver@0.42.0': + resolution: {integrity: sha512-35I9Gw4BeSs9NPe7fugu9e/mWKaapc/N1wounHnGt259/Q3ISGMOQRrOwIBw+x/XJygJvn4Ss1c+r5h89TsVAw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-connect@0.40.0': + resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-cucumber@0.10.0': + resolution: {integrity: sha512-5sT6Ap3W7StEL0Oax/vd1YTEcTPTefx+9myzkKrr72hxzFzSooGRCxlU3sfPwZqWptUV7+QWTMd7SqGEEPnE/w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/instrumentation-dataloader@0.13.0': + resolution: {integrity: sha512-wbU3WdgUAXljEIY2nfpkqID/VH70ThnES8mZZHKCZlV/Pl5T4+qmrVdT7U9/WUzz8flwsXfER6T6jl48Wbl+LQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-dns@0.40.0': + resolution: {integrity: sha512-tLNR8XLPiYRKKk3/UqifXnPP2TVt1RcwvHU0R1ETL1xkZ1ZHMTmSC4x6TignnHOFtRixtJ05EgMGejnffaBXkQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-express@0.44.0': + resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-fastify@0.41.0': + resolution: {integrity: sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-fs@0.16.0': + resolution: {integrity: sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-generic-pool@0.40.0': + resolution: {integrity: sha512-k+/JlNDHN3bPi/Cir+Ew6tKHFVCa1ZFeQyGUw5HQkRX/twCRaN3kJFXJW+rDAN90XwK3RtC9AWwBihDGh/oSlQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-graphql@0.44.0': + resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-grpc@0.54.2': + resolution: {integrity: sha512-KhSzerCaaqVH2zfDro7nTunWUZXt1pQISQpE83LuQTOKGk7mN3G60T1wliQ3Qdg0X3UUuhCXEC7u6IAVfDxkUQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-hapi@0.42.0': + resolution: {integrity: sha512-TQC0BtIWLHrp6nKsYdZ5t5B7aiZ16BwbRqZtYYQxeJVsq/HQTANWpknjtA7KMxv5tAUMCrU/eDo8F3qioUOSZg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-http@0.54.2': + resolution: {integrity: sha512-mABjJ34UcU32pg8g18L9xBh0U3JON/2F6/57BYYy8AZJp2a71lZjcKr0T00pICoic50TW5HvcTrmyfMil+AiXQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-ioredis@0.44.0': + resolution: {integrity: sha512-312pE2xc0ihX9haTf9WC4OF9in5EfVO1y5I8Ef9aMQKJNhuSe3IgzQAqGoLfaYajC+ig0IZ9SQKU8mRbFwHU+A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-kafkajs@0.4.0': + resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-knex@0.41.0': + resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-koa@0.44.0': + resolution: {integrity: sha512-ryPqGIQ4hpMGd85bAGjRMDAy/ic+Qdh1GtFGJo9KaXdzbcvZoF1ZgXVsKTYDxbD1n5C0BoQy6rcWg8Lu68iCJA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-lru-memoizer@0.41.0': + resolution: {integrity: sha512-6OePkk4RYCPVsnS0TroEK6UZzxxxjVWaE6EPdOn2qxGHMtm+Qb80tiBQ6BbmC+f7bjc27O85JY8gxeTybhHZXw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-memcached@0.40.0': + resolution: {integrity: sha512-VzJUUH6cVz8yrb25RvvjhxCpwu4vUk28I0m5nnnhebULOo8p9lda5PgQeVde2+jQAd977C/vN714fkbYOmwb+A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongodb@0.48.0': + resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongoose@0.43.0': + resolution: {integrity: sha512-y1mWuL/zb6IKi199HkROgmStxF/ybEsnKYgx+/lpLATd57oZHOqrXP9tLmp9qRVI5c6P5XEWfe7ZCvrj07iDMQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql2@0.42.1': + resolution: {integrity: sha512-5hOQbFSpqsgDLaqIeWZNbSWB6XdwN+aBjoCIe60lmGG86zeNXu9I6l1kEckRb+Gy0i7zrt0Tk8S62zsOSZ8l7Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql@0.42.0': + resolution: {integrity: sha512-1GN2EBGVSZABGQ25MSz3faeBW/DwhzmE10aNW1/A2mvQAxF1CvpMk17YmNUzwapVt29iKsiU3SXQG7vjh/019A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-nestjs-core@0.41.0': + resolution: {integrity: sha512-XCqtghFktpcJ2BOaJtFfqtTMsHffJADxfYhJl28WT6ygCChS2uZVxMKKLsy+i9VtPaw/i1IumPICL6mbhwq+Vw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-net@0.40.0': + resolution: {integrity: sha512-abErnVRxTmtiF7EvBISW81Se2nj/j3Xtpfy//9++dgvDOXwbcD1Xz1via6ZHOm/VamboGhqPlYiO7ABzluPLwg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-pg@0.47.1': + resolution: {integrity: sha512-qIcydMBVlKtAyFQWYunjqvFMVqIGvxGMXISrdLuSbcCqico9QKhK7bF5wzsotjGwHcGnc7q5kRqSL7j+LnY1Cw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-pino@0.43.0': + resolution: {integrity: sha512-jlOOgbODWRRNknWXY1VLgmqgG0SO4kLgU3XnejjO/3De4OisroAsMGk+1cRB5AQ6WZ8WLAMkMyTShaOe6j2Asw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-redis-4@0.43.0': + resolution: {integrity: sha512-6B2+CFRY9xRnkeZrSvlTyY2yB/zAgxjbXS5EwXhE3ZAKR1hWWoUzaTADIKT5xe9/VbDW42U3UoOPCcaCmeAXww==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-redis@0.43.0': + resolution: {integrity: sha512-dufe08W3sCOjutbTJmV6tg2Y3+7IBe59oQrnIW2RCgjRhsW0Jjaenezt490eawO0MdXjUfFyrIUg8WetKhE4xA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-restify@0.42.0': + resolution: {integrity: sha512-ApDD9HNy6de6xrHmISEfkQHwwX1f1JrBj0ADnlk6tVdJ0j/vNmsZNLwaU2IA2K3mHqbp2YLarLgxAZp6rjcfWg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-router@0.41.0': + resolution: {integrity: sha512-IbvzgaoylMqStOOtwucEvSu5CDbfQN+H1ZZ2p6c9Kmvzptqh6G441GFy0FFVVqxOAHNhQm2w6n0Ag8trdBjCfw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-socket.io@0.43.0': + resolution: {integrity: sha512-HAQoIZ6N/ey1L4jF69gmqo7RyeSv5rc4sZZAd1v6SVaB8ZolTEyWEzGlu1NRZZTnqfWNxDkX6J1/omWpDd9k0w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-tedious@0.15.0': + resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-undici@0.7.1': + resolution: {integrity: sha512-sIl4zrRDP7pR+2Pmdm9XJQULMKiUmvZze2cEW6gUz7TXCEaYmJ+vNMdd7qgeRo8C7AMm+T08mptobFVKPzdz+A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + + '@opentelemetry/instrumentation-winston@0.41.0': + resolution: {integrity: sha512-qtqGDx2Plu71s9xaeXut0YgZFG/y68ENG9vvo/SODeEC+4/APiS/htQ5YNJIxxjOuxYowdFYRqV9Kmef2EUzmw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.46.0': + resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.54.2': + resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.54.0': + resolution: {integrity: sha512-g+H7+QleVF/9lz4zhaR9Dt4VwApjqG5WWupy5CTMpWJfHB/nLxBbX73GBZDgdiNfh08nO3rNa6AS7fK8OhgF5g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.54.2': + resolution: {integrity: sha512-NrNyxu6R/bGAwanhz1HI0aJWKR6xUED4TjCH4iWMlAfyRukGbI9Kt/Akd2sYLwRKNhfS+sKetKGCUQPMDyYYMA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.54.0': + resolution: {integrity: sha512-Yl2Dw0jlRWisEia9Hv/N8u2JLITCvzA6gAIKEvxpEu6nwHEftD2WhTJMIclkTtfmSW0rLmEEXymwmboG4xDN0Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.54.2': + resolution: {integrity: sha512-HZtACQuLhgDcgNa9arGnVVGV28sSGQ+iwRgICWikFKiVxUsoWffqBvTxPa6G3DUTg5R+up97j/zxubEyxSAOHg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.54.0': + resolution: {integrity: sha512-jRexIASQQzdK4AjfNIBfn94itAq4Q8EXR9d3b/OVbhd3kKQKvMr7GkxYDjbeTbY7hHCOLcLfJ3dpYQYGOe8qOQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.54.2': + resolution: {integrity: sha512-2tIjahJlMRRUz0A2SeE+qBkeBXBFkSjR0wqJ08kuOqaL8HNGan5iZf+A8cfrfmZzPUuMKCyY9I+okzFuFs6gKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/propagation-utils@0.30.16': + resolution: {integrity: sha512-ZVQ3Z/PQ+2GQlrBfbMMMT0U7MzvYZLCPP800+ooyaBqm4hMvuQHfP028gB9/db0mwkmyEAMad9houukUVxhwcw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/propagator-b3@1.27.0': + resolution: {integrity: sha512-pTsko3gnMioe3FeWcwTQR3omo5C35tYsKKwjgTCTVCgd3EOWL9BZrMfgLBmszrwXABDfUrlAEFN/0W0FfQGynQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@1.27.0': + resolution: {integrity: sha512-EI1bbK0wn0yIuKlc2Qv2LKBRw6LiUWevrjCF80fn/rlaB+7StAi8Y5s8DBqAYNpY7v1q86+NjU18v7hj2ejU3A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/redis-common@0.36.2': + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + engines: {node: '>=14'} + + '@opentelemetry/resource-detector-alibaba-cloud@0.29.7': + resolution: {integrity: sha512-PExUl/R+reSQI6Y/eNtgAsk6RHk1ElYSzOa8/FHfdc/nLmx9sqMasBEpLMkETkzDP7t27ORuXe4F9vwkV2uwwg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-aws@1.12.0': + resolution: {integrity: sha512-Cvi7ckOqiiuWlHBdA1IjS0ufr3sltex2Uws2RK6loVp4gzIJyOijsddAI6IZ5kiO8h/LgCWe8gxPmwkTKImd+Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-azure@0.2.12': + resolution: {integrity: sha512-iIarQu6MiCjEEp8dOzmBvCSlRITPFTinFB2oNKAjU6xhx8d7eUcjNOKhBGQTvuCriZrxrEvDaEEY9NfrPQ6uYQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-container@0.5.3': + resolution: {integrity: sha512-x5DxWu+ZALBuFpxwO2viv9ktH4Y3Gk9LaYKn2U8J+aeD412iy/OcGLPbQ76Px7pQ8qaJ5rnjcevBOHYT4aA+zQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-gcp@0.29.13': + resolution: {integrity: sha512-vdotx+l3Q+89PeyXMgKEGnZ/CwzwMtuMi/ddgD9/5tKZ08DfDGB2Npz9m2oXPHRCjc4Ro6ifMqFlRyzIvgOjhg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resources@1.27.0': + resolution: {integrity: sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.54.0': + resolution: {integrity: sha512-HeWvOPiWhEw6lWvg+lCIi1WhJnIPbI4/OFZgHq9tKfpwF3LX6/kk3+GR8sGUGAEZfbjPElkkngzvd2s03zbD7Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.54.2': + resolution: {integrity: sha512-yIbYqDLS/AtBbPjCjh6eSToGNRMqW2VR8RrKEy+G+J7dFG7pKoptTH5T+XlKPleP9NY8JZYIpgJBlI+Osi0rFw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@1.27.0': + resolution: {integrity: sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-node@0.54.2': + resolution: {integrity: sha512-afn8GBpA7Gb55aU0LUxIQ+oe6QxLhsf+Te9iw12Non3ZAspzdoCcfz5+hqecwpuVpEDdnj5iSalF7VVaL2pDeg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@1.27.0': + resolution: {integrity: sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-trace-node@1.27.0': + resolution: {integrity: sha512-dWZp/dVGdUEfRBjBq2BgNuBlFqHCxyyMc8FsN0NX15X07mxSUO0SZRLyK/fdAVrde8nqFI/FEdMH4rgU9fqJfQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.27.0': + resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} + engines: {node: '>=14'} + + '@opentelemetry/sql-common@0.40.1': + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + + '@petamoriken/float16@3.8.7': + resolution: {integrity: sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==} + + '@pinecone-database/pinecone@0.0.5': + resolution: {integrity: sha512-x5O/LTPHbhDxybECQ8yXa4A/ubaAhkocnraHA51mdZFsOD+/2l8WAQnX1cLp7j+EEAF5xiureK4ExkP6N9dG/g==} + + '@pinecone-database/pinecone@2.2.2': + resolution: {integrity: sha512-gbe/4SowHc64pHIm0kBdgY9hVdzsQnnnpcWviwYMB33gOmsL8brvE8fUSpl1dLDvdyXzKcQkzdBsjCDlqgpdMA==} + engines: {node: '>=14.0.0'} + + '@pinecone-database/pinecone@4.0.0': + resolution: {integrity: sha512-INYS+GBys9v5BRTyn0tv8srVsPTlSRvE3BPE4Wkc/lOEyAIyB9F7DEMXbeF19FOLEgRwCuHTLjzm1niENl+4FA==} + engines: {node: '>=18.0.0'} + + '@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} + + '@playwright/test@1.50.1': + resolution: {integrity: sha512-Jii3aBg+CEDpgnuDxEp/h7BimHcUTDlpEtce89xEumlJ5ef2hqepZ+PWp1DDpYC/VO9fmWVI1IlEaoI5fK9FXQ==} + engines: {node: '>=18'} + hasBin: true + + '@pmmmwh/react-refresh-webpack-plugin@0.5.11': + resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true - '@smithy/util-stream@2.1.4': - resolution: { integrity: sha512-CiWaFPXstoR7v/PGHddFckovkhJb28wgQR7LwIt6RsQCJeRIHvUTVWhXw/Pco6Jm6nz/vfzN9FFdj/JN7RTkxQ== } - engines: { node: '>=14.0.0' } + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} - '@smithy/util-stream@3.1.3': - resolution: { integrity: sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== } - engines: { node: '>=16.0.0' } + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} - '@smithy/util-uri-escape@2.1.1': - resolution: { integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw== } - engines: { node: '>=14.0.0' } + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} - '@smithy/util-uri-escape@3.0.0': - resolution: { integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== } - engines: { node: '>=16.0.0' } + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - '@smithy/util-utf8@2.2.0': - resolution: { integrity: sha512-hBsKr5BqrDrKS8qy+YcV7/htmMGxriA1PREOf/8AGBhHIZnfilVv1Waf1OyKhSbFW15U/8+gcMUQ9/Kk5qwpHQ== } - engines: { node: '>=14.0.0' } + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@smithy/util-utf8@3.0.0': - resolution: { integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== } - engines: { node: '>=16.0.0' } + '@prisma/client@5.18.0': + resolution: {integrity: sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==} + engines: {node: '>=16.13'} + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true - '@smithy/util-waiter@2.1.4': - resolution: { integrity: sha512-AK17WaC0hx1wR9juAOsQkJ6DjDxBGEf5TrKhpXtNFEn+cVto9Li3MVsdpAO97AF7bhFXSyC8tJA3F4ThhqwCdg== } - engines: { node: '>=14.0.0' } + '@prisma/debug@5.18.0': + resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} - '@socket.io/component-emitter@3.1.0': - resolution: { integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== } - - '@sqltools/formatter@1.2.5': - resolution: { integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== } - - '@supabase/functions-js@2.1.5': - resolution: { integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw== } - - '@supabase/gotrue-js@2.62.2': - resolution: { integrity: sha512-AP6e6W9rQXFTEJ7sTTNYQrNf0LCcnt1hUW+RIgUK+Uh3jbWvcIST7wAlYyNZiMlS9+PYyymWQ+Ykz/rOYSO0+A== } - - '@supabase/node-fetch@2.6.15': - resolution: { integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== } - engines: { node: 4.x || >=6.0.0 } - - '@supabase/postgrest-js@1.9.2': - resolution: { integrity: sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw== } - - '@supabase/realtime-js@2.9.3': - resolution: { integrity: sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ== } - - '@supabase/storage-js@2.5.5': - resolution: { integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w== } - - '@supabase/supabase-js@2.39.8': - resolution: { integrity: sha512-WpiawHjseIRcCQTZbMJtHUSOepz5+M9qE1jP9BDmg8X7ehALFwgEkiKyHAu59qm/pKP2ryyQXLtu2XZNRbUarw== } - - '@supercharge/promise-pool@3.1.1': - resolution: { integrity: sha512-TgCm6jVqMPv+OgD5uBNND/CkCwNDdXPQlcprtnXsWSBpTCy0q5CI6vRj+jsUiXE1xeRaKIX4UeaYJqzZBL92sg== } - engines: { node: '>=8' } - - '@surma/rollup-plugin-off-main-thread@2.2.3': - resolution: { integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== } - - '@svgr/babel-plugin-add-jsx-attribute@5.4.0': - resolution: { integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': - resolution: { integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': - resolution: { integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: { integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': - resolution: { integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: { integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': - resolution: { integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': - resolution: { integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-dynamic-title@5.4.0': - resolution: { integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': - resolution: { integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-em-dimensions@5.4.0': - resolution: { integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': - resolution: { integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-react-native-svg@5.4.0': - resolution: { integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': - resolution: { integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-svg-component@5.5.0': - resolution: { integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== } - engines: { node: '>=10' } - - '@svgr/babel-plugin-transform-svg-component@8.0.0': - resolution: { integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== } - engines: { node: '>=12' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-preset@5.5.0': - resolution: { integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== } - engines: { node: '>=10' } - - '@svgr/babel-preset@8.1.0': - resolution: { integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== } - engines: { node: '>=14' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/core@5.5.0': - resolution: { integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== } - engines: { node: '>=10' } - - '@svgr/core@8.1.0': - resolution: { integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== } - engines: { node: '>=14' } - - '@svgr/hast-util-to-babel-ast@5.5.0': - resolution: { integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== } - engines: { node: '>=10' } - - '@svgr/hast-util-to-babel-ast@8.0.0': - resolution: { integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== } - engines: { node: '>=14' } - - '@svgr/plugin-jsx@5.5.0': - resolution: { integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== } - engines: { node: '>=10' } - - '@svgr/plugin-jsx@8.1.0': - resolution: { integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== } - engines: { node: '>=14' } - peerDependencies: - '@svgr/core': '*' - - '@svgr/plugin-svgo@5.5.0': - resolution: { integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== } - engines: { node: '>=10' } - - '@svgr/plugin-svgo@8.1.0': - resolution: { integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== } - engines: { node: '>=14' } - peerDependencies: - '@svgr/core': '*' - - '@svgr/webpack@5.5.0': - resolution: { integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== } - engines: { node: '>=10' } - - '@svgr/webpack@8.1.0': - resolution: { integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== } - engines: { node: '>=14' } - - '@swc/core-darwin-arm64@1.4.6': - resolution: { integrity: sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw== } - engines: { node: '>=10' } - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.4.6': - resolution: { integrity: sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w== } - engines: { node: '>=10' } - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.4.6': - resolution: { integrity: sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g== } - engines: { node: '>=10' } - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.4.6': - resolution: { integrity: sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ== } - engines: { node: '>=10' } - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.4.6': - resolution: { integrity: sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw== } - engines: { node: '>=10' } - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.4.6': - resolution: { integrity: sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg== } - engines: { node: '>=10' } - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.4.6': - resolution: { integrity: sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ== } - engines: { node: '>=10' } - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.4.6': - resolution: { integrity: sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A== } - engines: { node: '>=10' } - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.4.6': - resolution: { integrity: sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ== } - engines: { node: '>=10' } - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.4.6': - resolution: { integrity: sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw== } - engines: { node: '>=10' } - cpu: [x64] - os: [win32] - - '@swc/core@1.4.6': - resolution: { integrity: sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA== } - engines: { node: '>=10' } - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: { integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== } - - '@swc/helpers@0.5.5': - resolution: { integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== } - - '@swc/types@0.1.5': - resolution: { integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== } - - '@szmarczak/http-timer@4.0.6': - resolution: { integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== } - engines: { node: '>=10' } - - '@szmarczak/http-timer@5.0.1': - resolution: { integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== } - engines: { node: '>=14.16' } - - '@tabler/icons-react@3.3.0': - resolution: { integrity: sha512-Qn1Po+0gErh1zCWlaOdoVoGqeonWfSuiboYgwZBs6PIJNsj7yr3bIa4BkHmgJgtlXLT9LvCzt/RvwlgjxLfjjg== } - peerDependencies: - react: '>= 16' - - '@tabler/icons@3.3.0': - resolution: { integrity: sha512-PLVe9d7b59sKytbx00KgeGhQG3N176Ezv8YMmsnSz4s0ifDzMWlp/h2wEfQZ0ZNe8e377GY2OW6kovUe3Rnd0g== } - - '@tailwindcss/typography@0.5.14': - resolution: { integrity: sha512-ZvOCjUbsJBjL9CxQBn+VEnFpouzuKhxh2dH8xMIWHILL+HfOYtlAkWcyoon8LlzE53d2Yo6YO6pahKKNW3q1YQ== } - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - '@testing-library/dom@9.3.4': - resolution: { integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== } - engines: { node: '>=14' } - - '@testing-library/jest-dom@5.17.0': - resolution: { integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== } - engines: { node: '>=8', npm: '>=6', yarn: '>=1' } - - '@testing-library/react@14.2.1': - resolution: { integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A== } - engines: { node: '>=14' } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@testing-library/user-event@12.8.3': - resolution: { integrity: sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== } - engines: { node: '>=10', npm: '>=6' } - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@prisma/debug@5.9.1': + resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==} - '@textea/json-viewer@2.14.1': - resolution: { integrity: sha512-WCrG96OTfojy2CFywUXXArtrZrBEQRZXP1nT6T5lE0aXjDzkpoqLRqDOcowvB4Jfs5mRx2YzkbeK231GX4yp1A== } - peerDependencies: - react: ^17 || ^18 - react-dom: ^17 || ^18 + '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': + resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} - '@tootallnate/once@1.1.2': - resolution: { integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== } - engines: { node: '>= 6' } + '@prisma/engines@5.18.0': + resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} - '@tootallnate/once@2.0.0': - resolution: { integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== } - engines: { node: '>= 10' } + '@prisma/fetch-engine@5.18.0': + resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: { integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== } + '@prisma/generator-helper@5.9.1': + resolution: {integrity: sha512-WMdEUPpPYxUGruRQM6e6IVTWXFjt1hHdF/m2TO7pWxhPo7/ZeoTOF9fH8JsvVSV78DYLOQkx9osjFLXZu447Kw==} - '@trysound/sax@0.2.0': - resolution: { integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== } - engines: { node: '>=10.13.0' } + '@prisma/get-platform@5.18.0': + resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} - '@ts-stack/markdown@1.5.0': - resolution: { integrity: sha512-ntVX2Kmb2jyTdH94plJohokvDVPvp6CwXHqsa9NVZTK8cOmHDCYNW0j6thIadUVRTStJhxhfdeovLd0owqDxLw== } + '@prisma/nextjs-monorepo-workaround-plugin@5.18.0': + resolution: {integrity: sha512-BRTytLDKe0JR/+uOrGJTeGJA+EhdgBbDM5Su+AML7t0Pz5Zi+5bjE5nHxcFLIVm/bJjDXd06P8UVkTdK6PW0VQ==} - '@tsconfig/node10@1.0.9': - resolution: { integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== } + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - '@tsconfig/node12@1.0.11': - resolution: { integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== } + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@tsconfig/node14@1.0.3': - resolution: { integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== } + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - '@tsconfig/node16@1.0.4': - resolution: { integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== } + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - '@tufjs/canonical-json@1.0.0': - resolution: { integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - '@tufjs/models@1.0.4': - resolution: { integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@types/acorn@4.0.6': - resolution: { integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== } + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@types/aria-query@5.0.4': - resolution: { integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== } + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - '@types/babel__core@7.20.5': - resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== } + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@types/babel__generator@7.6.8': - resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== } + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@types/babel__template@7.4.4': - resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== } + '@puppeteer/browsers@0.5.0': + resolution: {integrity: sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==} + engines: {node: '>=14.1.0'} + hasBin: true + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true - '@types/babel__traverse@7.20.5': - resolution: { integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== } + '@puppeteer/browsers@1.4.6': + resolution: {integrity: sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==} + engines: {node: '>=16.3.0'} + hasBin: true + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true - '@types/body-parser@1.19.5': - resolution: { integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== } + '@qdrant/js-client-rest@1.9.0': + resolution: {integrity: sha512-YiX/IskbRCoAY2ujyPDI6FBcO0ygAS4pgkGaJ7DcrJFh4SZV2XHs+u0KM7mO72RWJn1eJQFF2PQwxG+401xxJg==} + engines: {node: '>=18.0.0', pnpm: '>=8'} + peerDependencies: + typescript: '>=4.7' + + '@qdrant/openapi-typescript-fetch@1.2.6': + resolution: {integrity: sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==} + engines: {node: '>=18.0.0', pnpm: '>=8'} + + '@reactflow/background@11.3.9': + resolution: {integrity: sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/controls@11.2.9': + resolution: {integrity: sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/core@11.10.4': + resolution: {integrity: sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/minimap@11.7.9': + resolution: {integrity: sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/node-resizer@2.2.9': + resolution: {integrity: sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/node-toolbar@1.3.9': + resolution: {integrity: sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@redis/bloom@1.2.0': + resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} + peerDependencies: + '@redis/client': ^1.0.0 + + '@redis/client@1.5.14': + resolution: {integrity: sha512-YGn0GqsRBFUQxklhY7v562VMOP0DcmlrHHs3IV1mFE3cbxe31IITUkqhBcIhVSI/2JqtWAJXg5mjV4aU+zD0HA==} + engines: {node: '>=14'} + + '@redis/graph@1.1.1': + resolution: {integrity: sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==} + peerDependencies: + '@redis/client': ^1.0.0 + + '@redis/json@1.0.6': + resolution: {integrity: sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==} + peerDependencies: + '@redis/client': ^1.0.0 + + '@redis/search@1.1.6': + resolution: {integrity: sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==} + peerDependencies: + '@redis/client': ^1.0.0 + + '@redis/time-series@1.0.5': + resolution: {integrity: sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==} + peerDependencies: + '@redis/client': ^1.0.0 + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true - '@types/bonjour@3.5.13': - resolution: { integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== } + '@rollup/plugin-babel@6.0.3': + resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true - '@types/cacheable-request@6.0.3': - resolution: { integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== } + '@rollup/plugin-commonjs@24.0.0': + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/caseless@0.12.5': - resolution: { integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== } + '@rollup/plugin-commonjs@25.0.8': + resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/chrome@0.0.232': - resolution: { integrity: sha512-IfEhAewLgCDJZ70gnNJ2cbl4L5+9WvR0FL5wl3MGHguSbeQbThN2BNagFq5PddNFMVHW7JKf8TBu7tyWixOeyQ== } + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/cli-progress@3.11.5': - resolution: { integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g== } + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/connect-history-api-fallback@1.5.4': - resolution: { integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== } + '@rollup/plugin-node-resolve@11.2.1': + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/plugin-node-resolve@15.0.1': + resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/connect@3.4.38': - resolution: { integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== } + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/plugin-terser@0.4.0': + resolution: {integrity: sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.x || ^3.x + peerDependenciesMeta: + rollup: + optional: true - '@types/content-disposition@0.5.8': - resolution: { integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg== } + '@rollup/plugin-typescript@11.0.0': + resolution: {integrity: sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true - '@types/cookie@0.4.1': - resolution: { integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== } + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@types/cors@2.8.17': - resolution: { integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== } + '@rollup/rollup-android-arm-eabi@4.13.0': + resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.13.0': + resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.13.0': + resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.13.0': + resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.13.0': + resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.13.0': + resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.13.0': + resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.13.0': + resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.13.0': + resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.13.0': + resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.13.0': + resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.13.0': + resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.13.0': + resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + cpu: [x64] + os: [win32] + + '@rushstack/eslint-patch@1.7.2': + resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} + + '@scarf/scarf@1.4.0': + resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sentry-internal/feedback@7.118.0': + resolution: {integrity: sha512-IYOGRcqIqKJJpMwBBv+0JTu0FPpXnakJYvOx/XEa/SNyF5+l7b9gGEjUVWh1ok50kTLW/XPnpnXNAGQcoKHg+w==} + engines: {node: '>=12'} + + '@sentry-internal/replay-canvas@7.118.0': + resolution: {integrity: sha512-XxHlCClvrxmVKpiZetFYyiBaPQNiojoBGFFVgbbWBIAPc+fWeLJ2BMoQEBjn/0NA/8u8T6lErK5YQo/eIx9+XQ==} + engines: {node: '>=12'} + + '@sentry-internal/tracing@7.118.0': + resolution: {integrity: sha512-dERAshKlQLrBscHSarhHyUeGsu652bDTUN1FK0m4e3X48M3I5/s+0N880Qjpe5MprNLcINlaIgdQ9jkisvxjfw==} + engines: {node: '>=8'} + + '@sentry/browser@7.118.0': + resolution: {integrity: sha512-8onDOFV1VLEoBuqA5yaJeR3FF1JNuxr5C7p1oN3OwY724iTVqQnOLmZKZaSnHV3RkY67wKDGQkQIie14sc+42g==} + engines: {node: '>=8'} + + '@sentry/cli@1.77.3': + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + + '@sentry/core@7.118.0': + resolution: {integrity: sha512-ol0xBdp3/K11IMAYSQE0FMxBOOH9hMsb/rjxXWe0hfM5c72CqYWL3ol7voPci0GELJ5CZG+9ImEU1V9r6gK64g==} + engines: {node: '>=8'} + + '@sentry/integrations@7.118.0': + resolution: {integrity: sha512-C2rR4NvIMjokF8jP5qzSf1o2zxDx7IeYnr8u15Kb2+HdZtX559owALR0hfgwnfeElqMhGlJBaKUWZ48lXJMzCQ==} + engines: {node: '>=8'} + + '@sentry/nextjs@7.118.0': + resolution: {integrity: sha512-UFhg4QSZ6LqOKTU67kgjojy23ZqoIgB1fjwOS6S10d5LKdbz7POwrNwHqi+aB3YIqyrSvRtFCXA+8mmsE0QoqA==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true - '@types/crypto-js@4.2.2': - resolution: { integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== } + '@sentry/node@7.118.0': + resolution: {integrity: sha512-79N63DvYKkNPqzmc0cjO+vMZ/nU7+CbE3K3COQNiV7gk58+666G9mRZQJuZVOVebatq5wM5UR0G4LPkwD+J84g==} + engines: {node: '>=8'} - '@types/d3-array@3.2.1': - resolution: { integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== } + '@sentry/react@7.118.0': + resolution: {integrity: sha512-oEYe5TGk8S7YzPsFqDf4xDHjfzs35/QFE+dou3S2d24OYpso8Tq4C5f1VzYmnOOyy85T7JNicYLSo0n0NSJvQg==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x - '@types/d3-axis@3.0.6': - resolution: { integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== } + '@sentry/replay@7.118.0': + resolution: {integrity: sha512-boQfCL+1L/tSZ9Huwi00+VtU+Ih1Lcg8HtxBuAsBCJR9pQgUL5jp7ECYdTeeHyCh/RJO7JqV1CEoGTgohe10mA==} + engines: {node: '>=12'} - '@types/d3-brush@3.0.6': - resolution: { integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== } + '@sentry/types@7.118.0': + resolution: {integrity: sha512-2drqrD2+6kgeg+W/ycmiti3G4lJrV3hGjY9PpJ3bJeXrh6T2+LxKPzlgSEnKFaeQWkXdZ4eaUbtTXVebMjb5JA==} + engines: {node: '>=8'} - '@types/d3-chord@3.0.6': - resolution: { integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== } + '@sentry/utils@7.118.0': + resolution: {integrity: sha512-43qItc/ydxZV1Zb3Kn2M54RwL9XXFa3IAYBO8S82Qvq5YUYmU2AmJ1jgg7DabXlVSWgMA1HntwqnOV3JLaEnTQ==} + engines: {node: '>=8'} - '@types/d3-color@3.1.3': - resolution: { integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== } + '@sentry/vercel-edge@7.118.0': + resolution: {integrity: sha512-DclIpD0/Xi0kNeT97aFFtMLBzk3GFZXf9mpGgbx29Gt9Vt7Fyq8ZA9izALHYzXx056fqQaLtvOAkQxWsy9QuSA==} + engines: {node: '>=8'} - '@types/d3-contour@3.0.6': - resolution: { integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== } + '@sentry/webpack-plugin@1.21.0': + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} - '@types/d3-delaunay@6.0.4': - resolution: { integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== } + '@sevinf/maybe@0.5.0': + resolution: {integrity: sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==} - '@types/d3-dispatch@3.0.6': - resolution: { integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ== } + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - '@types/d3-drag@3.0.7': - resolution: { integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== } + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - '@types/d3-dsv@3.0.7': - resolution: { integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== } + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@types/d3-ease@3.0.2': - resolution: { integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== } + '@sigstore/bundle@1.1.0': + resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@types/d3-fetch@3.0.7': - resolution: { integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== } + '@sigstore/protobuf-specs@0.2.1': + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@types/d3-force@3.0.9': - resolution: { integrity: sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA== } + '@sigstore/sign@1.0.0': + resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@types/d3-format@3.0.4': - resolution: { integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== } + '@sigstore/tuf@1.0.3': + resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@types/d3-geo@3.1.0': - resolution: { integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== } + '@sinclair/typebox@0.24.51': + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - '@types/d3-hierarchy@3.1.6': - resolution: { integrity: sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw== } + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@types/d3-interpolate@3.0.4': - resolution: { integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== } + '@sinclair/typebox@0.29.6': + resolution: {integrity: sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ==} - '@types/d3-path@3.1.0': - resolution: { integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ== } + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} - '@types/d3-polygon@3.0.2': - resolution: { integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== } + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} - '@types/d3-quadtree@3.0.6': - resolution: { integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== } + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - '@types/d3-random@3.0.3': - resolution: { integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== } + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@types/d3-scale-chromatic@3.0.3': - resolution: { integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw== } + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@types/d3-scale@4.0.8': - resolution: { integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== } + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@types/d3-selection@3.0.10': - resolution: { integrity: sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg== } + '@slack/logger@3.0.0': + resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - '@types/d3-shape@3.1.6': - resolution: { integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA== } + '@slack/types@2.12.0': + resolution: {integrity: sha512-yFewzUomYZ2BYaGJidPuIgjoYj5wqPDmi7DLSaGIkf+rCi4YZ2Z3DaiYIbz7qb/PL2NmamWjCvB7e9ArI5HkKg==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - '@types/d3-time-format@4.0.3': - resolution: { integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== } + '@slack/web-api@6.12.0': + resolution: {integrity: sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - '@types/d3-time@3.0.3': - resolution: { integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== } + '@slorber/remark-comment@1.0.0': + resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - '@types/d3-timer@3.0.2': - resolution: { integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== } + '@smithy/abort-controller@2.1.4': + resolution: {integrity: sha512-66HO817oIZ2otLIqy06R5muapqZjkgF1jfU0wyNko8cuqZNu8nbS9ljlhcRYw/M/uWRJzB9ih81DLSHhYbBLlQ==} + engines: {node: '>=14.0.0'} - '@types/d3-transition@3.0.8': - resolution: { integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ== } + '@smithy/abort-controller@3.1.1': + resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} + engines: {node: '>=16.0.0'} - '@types/d3-zoom@3.0.8': - resolution: { integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== } + '@smithy/abort-controller@4.0.1': + resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} + engines: {node: '>=18.0.0'} - '@types/d3@7.4.3': - resolution: { integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== } + '@smithy/chunked-blob-reader-native@2.1.2': + resolution: {integrity: sha512-KwR9fFc/t5jH9RQFbrA9DHSmI+URTmB4v+i7H08UNET9AcN6GGBTBMiDKpA56Crw6CN7cSaSDXaRS/AsfOuupQ==} - '@types/debug@4.1.12': - resolution: { integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== } + '@smithy/chunked-blob-reader@2.1.1': + resolution: {integrity: sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==} - '@types/diff-match-patch@1.0.36': - resolution: { integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg== } + '@smithy/config-resolver@2.1.5': + resolution: {integrity: sha512-LcBB5JQC3Tx2ZExIJzfvWaajhFIwHrUNQeqxhred2r5nnqrdly9uoCrvM1sxOOdghYuWWm2Kr8tBCDOmxsgeTA==} + engines: {node: '>=14.0.0'} - '@types/eslint-scope@3.7.7': - resolution: { integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== } + '@smithy/config-resolver@4.0.1': + resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} + engines: {node: '>=18.0.0'} - '@types/eslint@8.56.5': - resolution: { integrity: sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw== } + '@smithy/core@1.3.7': + resolution: {integrity: sha512-zHrrstOO78g+/rOJoHi4j3mGUBtsljRhcKNzloWPv1XIwgcFUi+F1YFKr2qPQ3z7Ls5dNc4L2SPrVarNFIQqog==} + engines: {node: '>=14.0.0'} - '@types/estree-jsx@1.0.5': - resolution: { integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== } + '@smithy/core@2.3.2': + resolution: {integrity: sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==} + engines: {node: '>=16.0.0'} - '@types/estree@0.0.39': - resolution: { integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== } + '@smithy/core@3.1.5': + resolution: {integrity: sha512-HLclGWPkCsekQgsyzxLhCQLa8THWXtB5PxyYN+2O6nkyLt550KQKTlbV2D1/j5dNIQapAZM1+qFnpBFxZQkgCA==} + engines: {node: '>=18.0.0'} - '@types/estree@1.0.5': - resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== } + '@smithy/credential-provider-imds@2.2.6': + resolution: {integrity: sha512-+xQe4Pite0kdk9qn0Vyw5BRVh0iSlj+T4TEKRXr4E1wZKtVgIzGlkCrfICSjiPVFkPxk4jMpVboMYdEiiA88/w==} + engines: {node: '>=14.0.0'} - '@types/expect@1.20.4': - resolution: { integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== } + '@smithy/credential-provider-imds@4.0.1': + resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} + engines: {node: '>=18.0.0'} - '@types/express-serve-static-core@4.17.43': - resolution: { integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== } + '@smithy/eventstream-codec@2.1.4': + resolution: {integrity: sha512-UkiieTztP7adg8EuqZvB0Y4LewdleZCJU7Kgt9RDutMsRYqO32fMpWeQHeTHaIMosmzcRZUykMRrhwGJe9mP3A==} - '@types/express-session@1.18.1': - resolution: { integrity: sha512-S6TkD/lljxDlQ2u/4A70luD8/ZxZcrU5pQwI1rVXCiaVIywoFgbA+PIUNDjPhQpPdK0dGleLtYc/y7XWBfclBg== } + '@smithy/eventstream-codec@4.0.1': + resolution: {integrity: sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==} + engines: {node: '>=18.0.0'} - '@types/express@4.17.21': - resolution: { integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== } + '@smithy/eventstream-serde-browser@2.1.4': + resolution: {integrity: sha512-K0SyvrUu/vARKzNW+Wp9HImiC/cJ6K88/n7FTH1slY+MErdKoiSbRLaXbJ9qD6x1Hu28cplHMlhADwZelUx/Ww==} + engines: {node: '>=14.0.0'} - '@types/filesystem@0.0.36': - resolution: { integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA== } + '@smithy/eventstream-serde-browser@4.0.1': + resolution: {integrity: sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==} + engines: {node: '>=18.0.0'} - '@types/filewriter@0.0.33': - resolution: { integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g== } + '@smithy/eventstream-serde-config-resolver@2.1.4': + resolution: {integrity: sha512-FH+2AwOwZ0kHPB9sciWJtUqx81V4vizfT3P6T9eslmIC2hi8ch/KFvQlF7jDmwR1aLlPlq6qqLKLqzK/71Ki4A==} + engines: {node: '>=14.0.0'} - '@types/geojson@7946.0.14': - resolution: { integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== } + '@smithy/eventstream-serde-config-resolver@4.0.1': + resolution: {integrity: sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==} + engines: {node: '>=18.0.0'} - '@types/glob-stream@8.0.2': - resolution: { integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA== } + '@smithy/eventstream-serde-node@2.1.4': + resolution: {integrity: sha512-gsc5ZTvVcB9sleLQzsK/rOhgn52+AAsmhEr41WDwAcctccBjh429+b8gT9t+SU8QyajypfsLOZfJQu0+zE515Q==} + engines: {node: '>=14.0.0'} - '@types/google-protobuf@3.15.10': - resolution: { integrity: sha512-uiyKJCa8hbmPE4yxwjbkMOALaBAiOVcatW/yEGbjTqwAh4kzNgQPWRlJMNPXpB5CPUM66xsYufiSX9WKHZCE9g== } + '@smithy/eventstream-serde-node@4.0.1': + resolution: {integrity: sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==} + engines: {node: '>=18.0.0'} - '@types/graceful-fs@4.1.9': - resolution: { integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== } + '@smithy/eventstream-serde-universal@2.1.4': + resolution: {integrity: sha512-NKLAsYnZA5s+ntipJRKo1RrRbhYHrsEnmiUoz0EhVYrAih+UELY9sKR+A1ujGaFm3nKDs5fPfiozC2wpXq2zUA==} + engines: {node: '>=14.0.0'} - '@types/gtag.js@0.0.12': - resolution: { integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== } + '@smithy/eventstream-serde-universal@4.0.1': + resolution: {integrity: sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==} + engines: {node: '>=18.0.0'} - '@types/gulp@4.0.9': - resolution: { integrity: sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q== } + '@smithy/fetch-http-handler@2.4.4': + resolution: {integrity: sha512-DSUtmsnIx26tPuyyrK49dk2DAhPgEw6xRW7V62nMHIB5dk3NqhGnwcKO2fMdt/l3NUVgia34ZsSJA8bD+3nh7g==} - '@types/har-format@1.2.15': - resolution: { integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA== } + '@smithy/fetch-http-handler@3.2.4': + resolution: {integrity: sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==} - '@types/hast@2.3.10': - resolution: { integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== } + '@smithy/fetch-http-handler@5.0.1': + resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} + engines: {node: '>=18.0.0'} - '@types/hast@3.0.4': - resolution: { integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== } + '@smithy/hash-blob-browser@2.1.4': + resolution: {integrity: sha512-bDugS1DortnriGDdp0sqdq7dLI5if8CEOF9rKtpJa1ZYMq6fxOtTId//dlilS5QgUtUs6GHN5aMQVxEjhBzzQA==} - '@types/history@4.7.11': - resolution: { integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== } + '@smithy/hash-node@2.1.4': + resolution: {integrity: sha512-uvCcpDLXaTTL0X/9ezF8T8sS77UglTfZVQaUOBiCvR0QydeSyio3t0Hj3QooVdyFsKTubR8gCk/ubLk3vAyDng==} + engines: {node: '>=14.0.0'} - '@types/hoist-non-react-statics@3.3.5': - resolution: { integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== } + '@smithy/hash-node@4.0.1': + resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} + engines: {node: '>=18.0.0'} - '@types/html-minifier-terser@6.1.0': - resolution: { integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== } + '@smithy/hash-stream-node@2.1.4': + resolution: {integrity: sha512-HcDQRs/Fcx7lwAd+/vSW/e7ltdh148D2Pq7XI61CEWcOoQdQ0W8aYBHDRC4zjtXv6hySdmWE+vo3dvdTt7aj8A==} + engines: {node: '>=14.0.0'} - '@types/http-cache-semantics@4.0.4': - resolution: { integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== } + '@smithy/invalid-dependency@2.1.4': + resolution: {integrity: sha512-QzlNBl6jt3nb9jNnE51wTegReVvUdozyMMrFEyb/rc6AzPID1O+qMJYjAAoNw098y0CZVfCpEnoK2+mfBOd8XA==} - '@types/http-errors@2.0.4': - resolution: { integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== } + '@smithy/invalid-dependency@4.0.1': + resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} + engines: {node: '>=18.0.0'} - '@types/http-proxy@1.17.14': - resolution: { integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== } + '@smithy/is-array-buffer@2.1.1': + resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} + engines: {node: '>=14.0.0'} - '@types/is-stream@1.1.0': - resolution: { integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg== } + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} - '@types/istanbul-lib-coverage@2.0.6': - resolution: { integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== } + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} - '@types/istanbul-lib-report@3.0.3': - resolution: { integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== } + '@smithy/md5-js@2.1.4': + resolution: {integrity: sha512-WHTnnYJPKE7Sy49DogLuox42TnlwD3cQ6TObPD6WFWjKocWIdpEpIvdJHwWUfSFf0JIi8ON8z6ZEhsnyKVCcLQ==} - '@types/istanbul-reports@3.0.4': - resolution: { integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== } + '@smithy/middleware-content-length@2.1.4': + resolution: {integrity: sha512-C6VRwfcr0w9qRFhDGCpWMVhlEIBFlmlPRP1aX9Cv9xDj9SUwlDrNvoV1oP1vjRYuLxCDgovBBynCwwcluS2wLw==} + engines: {node: '>=14.0.0'} - '@types/jest@29.5.12': - resolution: { integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== } + '@smithy/middleware-content-length@4.0.1': + resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} + engines: {node: '>=18.0.0'} - '@types/js-cookie@3.0.6': - resolution: { integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ== } + '@smithy/middleware-endpoint@2.4.6': + resolution: {integrity: sha512-AsXtUXHPOAS0EGZUSFOsVJvc7p0KL29PGkLxLfycPOcFVLru/oinYB6yvyL73ZZPX2OB8sMYUMrj7eH2kI7V/w==} + engines: {node: '>=14.0.0'} - '@types/js-yaml@4.0.9': - resolution: { integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg== } + '@smithy/middleware-endpoint@3.1.0': + resolution: {integrity: sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==} + engines: {node: '>=16.0.0'} - '@types/jsdom@21.1.6': - resolution: { integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw== } + '@smithy/middleware-endpoint@4.0.6': + resolution: {integrity: sha512-ftpmkTHIFqgaFugcjzLZv3kzPEFsBFSnq1JsIkr2mwFzCraZVhQk2gqN51OOeRxqhbPTkRFj39Qd2V91E/mQxg==} + engines: {node: '>=18.0.0'} - '@types/json-patch@0.0.30': - resolution: { integrity: sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw== } + '@smithy/middleware-retry@2.1.6': + resolution: {integrity: sha512-khpSV0NxqMHfa06kfG4WYv+978sVvfTFmn0hIFKKwOXtIxyYtPKiQWFT4nnwZD07fGdYGbtCBu3YALc8SsA5mA==} + engines: {node: '>=14.0.0'} - '@types/json-schema@7.0.15': - resolution: { integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== } + '@smithy/middleware-retry@3.0.14': + resolution: {integrity: sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==} + engines: {node: '>=16.0.0'} - '@types/json5@0.0.29': - resolution: { integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== } + '@smithy/middleware-retry@4.0.7': + resolution: {integrity: sha512-58j9XbUPLkqAcV1kHzVX/kAR16GT+j7DUZJqwzsxh1jtz7G82caZiGyyFgUvogVfNTg3TeAOIJepGc8TXF4AVQ==} + engines: {node: '>=18.0.0'} - '@types/katex@0.16.7': - resolution: { integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== } + '@smithy/middleware-serde@2.2.1': + resolution: {integrity: sha512-VAWRWqnNjgccebndpyK94om4ZTYzXLQxUmNCXYzM/3O9MTfQjTNBgtFtQwyIIez6z7LWcCsXmnKVIOE9mLqAHQ==} + engines: {node: '>=14.0.0'} - '@types/keyv@3.1.4': - resolution: { integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== } + '@smithy/middleware-serde@3.0.3': + resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} + engines: {node: '>=16.0.0'} - '@types/lodash-es@4.17.12': - resolution: { integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== } + '@smithy/middleware-serde@4.0.2': + resolution: {integrity: sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==} + engines: {node: '>=18.0.0'} - '@types/lodash@4.14.202': - resolution: { integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== } + '@smithy/middleware-stack@2.1.4': + resolution: {integrity: sha512-Qqs2ba8Ax1rGKOSGJS2JN23fhhox2WMdRuzx0NYHtXzhxbJOIMmz9uQY6Hf4PY8FPteBPp1+h0j5Fmr+oW12sg==} + engines: {node: '>=14.0.0'} - '@types/lodash@4.17.4': - resolution: { integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== } + '@smithy/middleware-stack@3.0.3': + resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} + engines: {node: '>=16.0.0'} - '@types/long@4.0.2': - resolution: { integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== } + '@smithy/middleware-stack@4.0.1': + resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} + engines: {node: '>=18.0.0'} - '@types/mathjax@0.0.37': - resolution: { integrity: sha512-y0WSZBtBNQwcYipTU/BhgeFu1EZNlFvUNCmkMXV9kBQZq7/o5z82dNVyH3yy2Xv5zzeNeQoHSL4Xm06+EQiH+g== } + '@smithy/node-config-provider@2.2.5': + resolution: {integrity: sha512-CxPf2CXhjO79IypHJLBATB66Dw6suvr1Yc2ccY39hpR6wdse3pZ3E8RF83SODiNH0Wjmkd0ze4OF8exugEixgA==} + engines: {node: '>=14.0.0'} - '@types/mdast@3.0.15': - resolution: { integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== } + '@smithy/node-config-provider@3.1.4': + resolution: {integrity: sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==} + engines: {node: '>=16.0.0'} - '@types/mdast@4.0.3': - resolution: { integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== } + '@smithy/node-config-provider@4.0.1': + resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} + engines: {node: '>=18.0.0'} - '@types/mdx@2.0.13': - resolution: { integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== } + '@smithy/node-http-handler@2.4.2': + resolution: {integrity: sha512-yrj3c1g145uiK5io+1UPbJAHo8BSGORkBzrmzvAsOmBKb+1p3jmM8ZwNLDH/HTTxVLm9iM5rMszx+iAh1HUC4Q==} + engines: {node: '>=14.0.0'} - '@types/mime@1.3.5': - resolution: { integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== } + '@smithy/node-http-handler@3.1.4': + resolution: {integrity: sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==} + engines: {node: '>=16.0.0'} - '@types/mime@3.0.4': - resolution: { integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== } + '@smithy/node-http-handler@4.0.3': + resolution: {integrity: sha512-dYCLeINNbYdvmMLtW0VdhW1biXt+PPCGazzT5ZjKw46mOtdgToQEwjqZSS9/EN8+tNs/RO0cEWG044+YZs97aA==} + engines: {node: '>=18.0.0'} - '@types/minimatch@3.0.5': - resolution: { integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== } + '@smithy/property-provider@2.1.4': + resolution: {integrity: sha512-nWaY/MImj1BiXZ9WY65h45dcxOx8pl06KYoHxwojDxDL+Q9yLU1YnZpgv8zsHhEftlj9KhePENjQTlNowWVyug==} + engines: {node: '>=14.0.0'} - '@types/ms@0.7.34': - resolution: { integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== } + '@smithy/property-provider@3.1.3': + resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} + engines: {node: '>=16.0.0'} - '@types/multer@1.4.11': - resolution: { integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w== } + '@smithy/property-provider@4.0.1': + resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} + engines: {node: '>=18.0.0'} - '@types/node-fetch@2.6.11': - resolution: { integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== } + '@smithy/protocol-http@3.2.2': + resolution: {integrity: sha512-xYBlllOQcOuLoxzhF2u8kRHhIFGQpDeTQj/dBSnw4kfI29WMKL5RnW1m9YjnJAJ49miuIvrkJR+gW5bCQ+Mchw==} + engines: {node: '>=14.0.0'} - '@types/node-fetch@2.6.2': - resolution: { integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== } + '@smithy/protocol-http@4.1.0': + resolution: {integrity: sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==} + engines: {node: '>=16.0.0'} - '@types/node-forge@1.3.11': - resolution: { integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== } + '@smithy/protocol-http@5.0.1': + resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} + engines: {node: '>=18.0.0'} - '@types/node@14.18.63': - resolution: { integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== } + '@smithy/querystring-builder@2.1.4': + resolution: {integrity: sha512-LXSL0J/nRWvGT+jIj+Fip3j0J1ZmHkUyBFRzg/4SmPNCLeDrtVu7ptKOnTboPsFZu5BxmpYok3kJuQzzRdrhbw==} + engines: {node: '>=14.0.0'} - '@types/node@15.14.9': - resolution: { integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== } + '@smithy/querystring-builder@3.0.3': + resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} + engines: {node: '>=16.0.0'} - '@types/node@16.18.105': - resolution: { integrity: sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA== } + '@smithy/querystring-builder@4.0.1': + resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} + engines: {node: '>=18.0.0'} - '@types/node@17.0.45': - resolution: { integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== } + '@smithy/querystring-parser@2.1.4': + resolution: {integrity: sha512-U2b8olKXgZAs0eRo7Op11jTNmmcC/sqYmsA7vN6A+jkGnDvJlEl7AetUegbBzU8q3D6WzC5rhR/joIy8tXPzIg==} + engines: {node: '>=14.0.0'} - '@types/node@18.15.11': - resolution: { integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== } + '@smithy/querystring-parser@3.0.3': + resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} + engines: {node: '>=16.0.0'} - '@types/node@20.12.12': - resolution: { integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== } + '@smithy/querystring-parser@4.0.1': + resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} + engines: {node: '>=18.0.0'} - '@types/normalize-package-data@2.4.4': - resolution: { integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== } + '@smithy/service-error-classification@2.1.4': + resolution: {integrity: sha512-JW2Hthy21evnvDmYYk1kItOmbp3X5XI5iqorXgFEunb6hQfSDZ7O1g0Clyxg7k/Pcr9pfLk5xDIR2To/IohlsQ==} + engines: {node: '>=14.0.0'} - '@types/oauth@0.9.6': - resolution: { integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA== } + '@smithy/service-error-classification@3.0.3': + resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} + engines: {node: '>=16.0.0'} - '@types/object-hash@3.0.6': - resolution: { integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w== } + '@smithy/service-error-classification@4.0.1': + resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} + engines: {node: '>=18.0.0'} - '@types/papaparse@5.3.14': - resolution: { integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g== } + '@smithy/shared-ini-file-loader@2.3.5': + resolution: {integrity: sha512-oI99+hOvsM8oAJtxAGmoL/YCcGXtbP0fjPseYGaNmJ4X5xOFTer0KPk7AIH3AL6c5AlYErivEi1X/X78HgTVIw==} + engines: {node: '>=14.0.0'} - '@types/parse-json@4.0.2': - resolution: { integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== } + '@smithy/shared-ini-file-loader@3.1.4': + resolution: {integrity: sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==} + engines: {node: '>=16.0.0'} - '@types/passport-google-oauth20@2.0.16': - resolution: { integrity: sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA== } + '@smithy/shared-ini-file-loader@4.0.1': + resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} + engines: {node: '>=18.0.0'} - '@types/passport-oauth2@1.4.17': - resolution: { integrity: sha512-ODiAHvso6JcWJ6ZkHHroVp05EHGhqQN533PtFNBkg8Fy5mERDqsr030AX81M0D69ZcaMvhF92SRckEk2B0HYYg== } + '@smithy/signature-v4@2.1.4': + resolution: {integrity: sha512-gnu9gCn0qQ8IdhNjs6o3QVCXzUs33znSDYwVMWo3nX4dM6j7z9u6FC302ShYyVWfO4MkVMuGCCJ6nl3PcH7V1Q==} + engines: {node: '>=14.0.0'} - '@types/passport@1.0.17': - resolution: { integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg== } + '@smithy/signature-v4@4.1.0': + resolution: {integrity: sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==} + engines: {node: '>=16.0.0'} - '@types/pdf-parse@1.1.4': - resolution: { integrity: sha512-+gbBHbNCVGGYw1S9lAIIvrHW47UYOhMIFUsJcMkMrzy1Jf0vulBN3XQIjPgnoOXveMuHnF3b57fXROnY/Or7eg== } + '@smithy/signature-v4@5.0.1': + resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} + engines: {node: '>=18.0.0'} - '@types/pg@8.11.2': - resolution: { integrity: sha512-G2Mjygf2jFMU/9hCaTYxJrwdObdcnuQde1gndooZSOHsNSaCehAuwc7EIuSA34Do8Jx2yZ19KtvW8P0j4EuUXw== } + '@smithy/smithy-client@2.4.4': + resolution: {integrity: sha512-SNE17wjycPZIJ2P5sv6wMTteV/vQVPdaqQkoK1KeGoWHXx79t3iLhQXj1uqRdlkMUS9pXJrLOAS+VvUSOYwQKw==} + engines: {node: '>=14.0.0'} - '@types/pg@8.11.6': - resolution: { integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ== } + '@smithy/smithy-client@3.1.12': + resolution: {integrity: sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==} + engines: {node: '>=16.0.0'} - '@types/phoenix@1.6.4': - resolution: { integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA== } + '@smithy/smithy-client@4.1.6': + resolution: {integrity: sha512-UYDolNg6h2O0L+cJjtgSyKKvEKCOa/8FHYJnBobyeoeWDmNpXjwOAtw16ezyeu1ETuuLEOZbrynK0ZY1Lx9Jbw==} + engines: {node: '>=18.0.0'} - '@types/picomatch@2.3.3': - resolution: { integrity: sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg== } + '@smithy/types@2.11.0': + resolution: {integrity: sha512-AR0SXO7FuAskfNhyGfSTThpLRntDI5bOrU0xrpVYU0rZyjl3LBXInZFMTP/NNSd7IS6Ksdtar0QvnrPRIhVrLQ==} + engines: {node: '>=14.0.0'} - '@types/prettier@2.7.3': - resolution: { integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== } + '@smithy/types@3.3.0': + resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} + engines: {node: '>=16.0.0'} - '@types/prismjs@1.26.4': - resolution: { integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg== } + '@smithy/types@4.1.0': + resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} + engines: {node: '>=18.0.0'} - '@types/prop-types@15.7.11': - resolution: { integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== } + '@smithy/url-parser@2.1.4': + resolution: {integrity: sha512-1hTy6UYRYqOZlHKH2/2NzdNQ4NNmW2Lp0sYYvztKy+dEQuLvZL9w88zCzFQqqFer3DMcscYOshImxkJTGdV+rg==} - '@types/q@1.5.8': - resolution: { integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== } + '@smithy/url-parser@3.0.3': + resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} - '@types/qs@6.9.12': - resolution: { integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg== } + '@smithy/url-parser@4.0.1': + resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} + engines: {node: '>=18.0.0'} - '@types/range-parser@1.2.7': - resolution: { integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== } + '@smithy/util-base64@2.2.0': + resolution: {integrity: sha512-RiQI/Txu0SxCR38Ky5BMEVaFfkNTBjpbxlr2UhhxggSmnsHDQPZJWMtPoXs7TWZaseslIlAWMiHmqRT3AV/P2w==} + engines: {node: '>=14.0.0'} - '@types/react-dom@18.2.21': - resolution: { integrity: sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw== } + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} - '@types/react-router-config@5.0.11': - resolution: { integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== } + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} - '@types/react-router-dom@5.3.3': - resolution: { integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== } + '@smithy/util-body-length-browser@2.1.1': + resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} - '@types/react-router@5.1.20': - resolution: { integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== } + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} - '@types/react-syntax-highlighter@15.5.13': - resolution: { integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA== } + '@smithy/util-body-length-node@2.2.1': + resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} + engines: {node: '>=14.0.0'} - '@types/react-transition-group@4.4.10': - resolution: { integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== } + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} - '@types/react-window@1.8.8': - resolution: { integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q== } + '@smithy/util-buffer-from@2.1.1': + resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} + engines: {node: '>=14.0.0'} - '@types/react@18.0.32': - resolution: { integrity: sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw== } + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} - '@types/react@18.2.65': - resolution: { integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ== } + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} - '@types/request@2.48.12': - resolution: { integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw== } + '@smithy/util-config-provider@2.2.1': + resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} + engines: {node: '>=14.0.0'} - '@types/resolve@1.17.1': - resolution: { integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== } + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} - '@types/resolve@1.20.2': - resolution: { integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== } + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} - '@types/responselike@1.0.3': - resolution: { integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== } + '@smithy/util-defaults-mode-browser@2.1.6': + resolution: {integrity: sha512-lM2JMYCilrejfGf8WWnVfrKly3vf+mc5x9TrTpT++qIKP452uWfLqlaUxbz1TkSfhqm8RjrlY22589B9aI8A9w==} + engines: {node: '>= 10.0.0'} - '@types/retry@0.12.0': - resolution: { integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== } + '@smithy/util-defaults-mode-browser@4.0.7': + resolution: {integrity: sha512-CZgDDrYHLv0RUElOsmZtAnp1pIjwDVCSuZWOPhIOBvG36RDfX1Q9+6lS61xBf+qqvHoqRjHxgINeQz47cYFC2Q==} + engines: {node: '>=18.0.0'} - '@types/sanitize-html@2.11.0': - resolution: { integrity: sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ== } + '@smithy/util-defaults-mode-node@2.2.6': + resolution: {integrity: sha512-UmUbPHbkBJCXRFbq+FPLpVwiFPHj1oPWXJS2f2sy23PtXM94c9X5EceI6JKuKdBty+tzhrAs5JbmPM/HvmDB8Q==} + engines: {node: '>= 10.0.0'} - '@types/sax@1.2.7': - resolution: { integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== } + '@smithy/util-defaults-mode-node@4.0.7': + resolution: {integrity: sha512-79fQW3hnfCdrfIi1soPbK3zmooRFnLpSx3Vxi6nUlqaaQeC5dm8plt4OTNDNqEEEDkvKghZSaoti684dQFVrGQ==} + engines: {node: '>=18.0.0'} - '@types/scheduler@0.16.8': - resolution: { integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== } + '@smithy/util-endpoints@1.1.5': + resolution: {integrity: sha512-tgDpaUNsUtRvNiBulKU1VnpoXU1GINMfZZXunRhUXOTBEAufG1Wp79uDXLau2gg1RZ4dpAR6lXCkrmddihCGUg==} + engines: {node: '>= 14.0.0'} - '@types/semver@7.5.8': - resolution: { integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== } + '@smithy/util-endpoints@3.0.1': + resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} + engines: {node: '>=18.0.0'} - '@types/send@0.17.4': - resolution: { integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== } + '@smithy/util-hex-encoding@2.1.1': + resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} + engines: {node: '>=14.0.0'} - '@types/serve-index@1.9.4': - resolution: { integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== } + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} - '@types/serve-static@1.15.5': - resolution: { integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== } + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} - '@types/sinonjs__fake-timers@8.1.1': - resolution: { integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== } + '@smithy/util-middleware@2.1.4': + resolution: {integrity: sha512-5yYNOgCN0DL0OplME0pthoUR/sCfipnROkbTO7m872o0GHCVNJj5xOFJ143rvHNA54+pIPMLum4z2DhPC2pVGA==} + engines: {node: '>=14.0.0'} - '@types/sizzle@2.3.8': - resolution: { integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== } + '@smithy/util-middleware@3.0.3': + resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} + engines: {node: '>=16.0.0'} - '@types/sockjs@0.3.36': - resolution: { integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== } + '@smithy/util-middleware@4.0.1': + resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} + engines: {node: '>=18.0.0'} - '@types/stack-utils@2.0.3': - resolution: { integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== } + '@smithy/util-retry@2.1.4': + resolution: {integrity: sha512-JRZwhA3fhkdenSEYIWatC8oLwt4Bdf2LhHbNQApqb7yFoIGMl4twcYI3BcJZ7YIBZrACA9jGveW6tuCd836XzQ==} + engines: {node: '>= 14.0.0'} - '@types/streamx@2.9.5': - resolution: { integrity: sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ== } + '@smithy/util-retry@3.0.3': + resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} + engines: {node: '>=16.0.0'} - '@types/swagger2openapi@7.0.4': - resolution: { integrity: sha512-ffMqzciTDihOKH4Q//9Ond1yb5JP1P5FC/aFPsLK4blea1Fwk2aYctiNCkAh5etDYFswFXS+5LV/vuGkf+PU6A== } + '@smithy/util-retry@4.0.1': + resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} + engines: {node: '>=18.0.0'} - '@types/testing-library__jest-dom@5.14.9': - resolution: { integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== } + '@smithy/util-stream@2.1.4': + resolution: {integrity: sha512-CiWaFPXstoR7v/PGHddFckovkhJb28wgQR7LwIt6RsQCJeRIHvUTVWhXw/Pco6Jm6nz/vfzN9FFdj/JN7RTkxQ==} + engines: {node: '>=14.0.0'} - '@types/tough-cookie@4.0.5': - resolution: { integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== } + '@smithy/util-stream@3.1.3': + resolution: {integrity: sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==} + engines: {node: '>=16.0.0'} - '@types/triple-beam@1.3.5': - resolution: { integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== } + '@smithy/util-stream@4.1.2': + resolution: {integrity: sha512-44PKEqQ303d3rlQuiDpcCcu//hV8sn+u2JBo84dWCE0rvgeiVl0IlLMagbU++o0jCWhYCsHaAt9wZuZqNe05Hw==} + engines: {node: '>=18.0.0'} - '@types/trusted-types@2.0.7': - resolution: { integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== } + '@smithy/util-uri-escape@2.1.1': + resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} + engines: {node: '>=14.0.0'} - '@types/undertaker-registry@1.0.4': - resolution: { integrity: sha512-tW77pHh2TU4uebWXWeEM5laiw8BuJ7pyJYDh6xenOs75nhny2kVgwYbegJ4BoLMYsIrXaBpKYaPdYO3/udG+hg== } + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} - '@types/undertaker@1.2.11': - resolution: { integrity: sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA== } + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} - '@types/unist@2.0.10': - resolution: { integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== } + '@smithy/util-utf8@2.2.0': + resolution: {integrity: sha512-hBsKr5BqrDrKS8qy+YcV7/htmMGxriA1PREOf/8AGBhHIZnfilVv1Waf1OyKhSbFW15U/8+gcMUQ9/Kk5qwpHQ==} + engines: {node: '>=14.0.0'} - '@types/unist@3.0.2': - resolution: { integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== } + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} - '@types/use-sync-external-store@0.0.3': - resolution: { integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== } + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} - '@types/uuid@8.3.4': - resolution: { integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== } + '@smithy/util-waiter@2.1.4': + resolution: {integrity: sha512-AK17WaC0hx1wR9juAOsQkJ6DjDxBGEf5TrKhpXtNFEn+cVto9Li3MVsdpAO97AF7bhFXSyC8tJA3F4ThhqwCdg==} + engines: {node: '>=14.0.0'} + + '@socket.io/component-emitter@3.1.0': + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + + '@sqltools/formatter@1.2.5': + resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} + + '@stripe/agent-toolkit@0.1.21': + resolution: {integrity: sha512-fuKNgCgqLih+L1um0rKuwLSypn9dgvFnG6VKtJnFVwEVrqKZTcD1KXMNuwru+6FWhpkjbmshGWZRwx0VtEsR1Q==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': 0.3.37 + ai: ^3.4.7 + + '@supabase/functions-js@2.1.5': + resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==} + + '@supabase/gotrue-js@2.62.2': + resolution: {integrity: sha512-AP6e6W9rQXFTEJ7sTTNYQrNf0LCcnt1hUW+RIgUK+Uh3jbWvcIST7wAlYyNZiMlS9+PYyymWQ+Ykz/rOYSO0+A==} + + '@supabase/node-fetch@2.6.15': + resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} + engines: {node: 4.x || >=6.0.0} + + '@supabase/postgrest-js@1.9.2': + resolution: {integrity: sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw==} + + '@supabase/realtime-js@2.9.3': + resolution: {integrity: sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==} + + '@supabase/storage-js@2.5.5': + resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} + + '@supabase/supabase-js@2.39.8': + resolution: {integrity: sha512-WpiawHjseIRcCQTZbMJtHUSOepz5+M9qE1jP9BDmg8X7ehALFwgEkiKyHAu59qm/pKP2ryyQXLtu2XZNRbUarw==} + + '@supercharge/promise-pool@3.1.1': + resolution: {integrity: sha512-TgCm6jVqMPv+OgD5uBNND/CkCwNDdXPQlcprtnXsWSBpTCy0q5CI6vRj+jsUiXE1xeRaKIX4UeaYJqzZBL92sg==} + engines: {node: '>=8'} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@svgr/babel-plugin-add-jsx-attribute@5.4.0': + resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': + resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': + resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': + resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@5.4.0': + resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@5.4.0': + resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@5.4.0': + resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@5.5.0': + resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@5.5.0': + resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} + engines: {node: '>=10'} + + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@5.5.0': + resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} + engines: {node: '>=10'} + + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + + '@svgr/hast-util-to-babel-ast@5.5.0': + resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} + engines: {node: '>=10'} + + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + + '@svgr/plugin-jsx@5.5.0': + resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} + engines: {node: '>=10'} + + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/plugin-svgo@5.5.0': + resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} + engines: {node: '>=10'} + + '@svgr/plugin-svgo@8.1.0': + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/webpack@5.5.0': + resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + engines: {node: '>=10'} + + '@svgr/webpack@8.1.0': + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} + + '@swc/core-darwin-arm64@1.4.6': + resolution: {integrity: sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.4.6': + resolution: {integrity: sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.4.6': + resolution: {integrity: sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.4.6': + resolution: {integrity: sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.4.6': + resolution: {integrity: sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.4.6': + resolution: {integrity: sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.4.6': + resolution: {integrity: sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.4.6': + resolution: {integrity: sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.4.6': + resolution: {integrity: sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.4.6': + resolution: {integrity: sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.4.6': + resolution: {integrity: sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true - '@types/uuid@9.0.8': - resolution: { integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== } + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@types/vinyl-fs@3.0.5': - resolution: { integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig== } + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - '@types/vinyl@2.0.11': - resolution: { integrity: sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw== } + '@swc/types@0.1.5': + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} - '@types/webidl-conversions@7.0.3': - resolution: { integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== } + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} - '@types/whatwg-url@11.0.4': - resolution: { integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw== } + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} - '@types/ws@8.5.10': - resolution: { integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== } + '@tabler/icons-react@3.3.0': + resolution: {integrity: sha512-Qn1Po+0gErh1zCWlaOdoVoGqeonWfSuiboYgwZBs6PIJNsj7yr3bIa4BkHmgJgtlXLT9LvCzt/RvwlgjxLfjjg==} + peerDependencies: + react: '>= 16' - '@types/yargs-parser@21.0.3': - resolution: { integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== } - - '@types/yargs@16.0.9': - resolution: { integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== } - - '@types/yargs@17.0.32': - resolution: { integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== } - - '@types/yauzl@2.10.3': - resolution: { integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== } - - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: { integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/experimental-utils@5.62.0': - resolution: { integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/parser@5.62.0': - resolution: { integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: { integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/type-utils@5.62.0': - resolution: { integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: { integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/types@7.13.1': - resolution: { integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw== } - engines: { node: ^18.18.0 || >=20.0.0 } - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: { integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.13.1': - resolution: { integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw== } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: { integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: { integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/visitor-keys@7.13.1': - resolution: { integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA== } - engines: { node: ^18.18.0 || >=20.0.0 } - - '@uiw/codemirror-extensions-basic-setup@4.21.24': - resolution: { integrity: sha512-TJYKlPxNAVJNclW1EGumhC7I02jpdMgBon4jZvb5Aju9+tUzS44IwORxUx8BD8ZtH2UHmYS+04rE3kLk/BtnCQ== } - peerDependencies: - '@codemirror/autocomplete': '>=6.0.0' - '@codemirror/commands': '>=6.0.0' - '@codemirror/language': '>=6.0.0' - '@codemirror/lint': '>=6.0.0' - '@codemirror/search': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - - '@uiw/codemirror-theme-sublime@4.21.24': - resolution: { integrity: sha512-rMVl/WrRtN/XtRiLEd/Bnb6TYQqDilZVWi8TC5YpKN6J6uK00zOxlJ7nopm3SwRL8FqzJSybNdMZMnbEKaoYQg== } - - '@uiw/codemirror-theme-vscode@4.21.24': - resolution: { integrity: sha512-319zklfinRpKxs9OIowhIt3kDYDe2uTg7Xx5tpYO9lHnU1GiJRQZflXUqxroLqZU1Zfx7pjXtFtVstL3sTuhqw== } - - '@uiw/codemirror-themes@4.21.24': - resolution: { integrity: sha512-InY24KWP8YArDBACWHKFZ6ZU+WCvRHf3ZB2cCVxMVN35P1ANUmRzpAP2ernZQ5OIriL1/A/kXgD0Zg3Y65PNgg== } - peerDependencies: - '@codemirror/language': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - - '@uiw/react-codemirror@4.21.24': - resolution: { integrity: sha512-8zs5OuxbhikHocHBsVBMuW1vqlv4ccZAkt4rFwr7ebLP2Q6RwHsjpsR9GeGyAigAqonKRoeHugqF78UMrkaTgg== } - peerDependencies: - '@babel/runtime': '>=7.11.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/theme-one-dark': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - codemirror: '>=6.0.0' - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@ungap/structured-clone@1.2.0': - resolution: { integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== } - - '@upstash/redis@1.22.1': - resolution: { integrity: sha512-7ec2eCMkVxZzuHNb+hPKonX4b/Pu0BdDeSBsEy+jKIqiweXzCs5Dpu9642vJgf57YnEsfwgXnQMVEataarvyeQ== } - - '@upstash/vector@1.1.5': - resolution: { integrity: sha512-55+Beu/kCwjcnzg6fnMN06v9PYU1lv9NQfQwpjrJAQTH8GOprcRsQeyXBdNHKNzoQvRnVS0ENd5CDgFoljfrAw== } - - '@vercel/stega@0.1.2': - resolution: { integrity: sha512-P7mafQXjkrsoyTRppnt0N21udKS9wUmLXHRyP9saLXLHw32j/FgUJ3FscSWgvSqRs4cj7wKZtwqJEvWJ2jbGmA== } - - '@vitejs/plugin-react@3.1.0': - resolution: { integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - vite: ^4.1.0-beta.0 - - '@vitejs/plugin-react@4.2.1': - resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - - '@vue/compiler-core@3.4.31': - resolution: { integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg== } - - '@vue/compiler-dom@3.4.31': - resolution: { integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ== } - - '@vue/compiler-sfc@3.4.31': - resolution: { integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ== } - - '@vue/compiler-ssr@3.4.31': - resolution: { integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA== } - - '@vue/reactivity@3.4.31': - resolution: { integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q== } - - '@vue/runtime-core@3.4.31': - resolution: { integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw== } - - '@vue/runtime-dom@3.4.31': - resolution: { integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw== } - - '@vue/server-renderer@3.4.31': - resolution: { integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA== } - peerDependencies: - vue: 3.4.31 - - '@vue/shared@3.4.31': - resolution: { integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA== } - - '@webassemblyjs/ast@1.11.6': - resolution: { integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== } + '@tabler/icons@3.3.0': + resolution: {integrity: sha512-PLVe9d7b59sKytbx00KgeGhQG3N176Ezv8YMmsnSz4s0ifDzMWlp/h2wEfQZ0ZNe8e377GY2OW6kovUe3Rnd0g==} - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: { integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== } + '@tailwindcss/typography@0.5.16': + resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@webassemblyjs/helper-api-error@1.11.6': - resolution: { integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== } + '@testing-library/dom@9.3.4': + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} - '@webassemblyjs/helper-buffer@1.11.6': - resolution: { integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== } + '@testing-library/jest-dom@5.17.0': + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} - '@webassemblyjs/helper-numbers@1.11.6': - resolution: { integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== } + '@testing-library/react@14.2.1': + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: { integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== } + '@testing-library/user-event@12.8.3': + resolution: {integrity: sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: { integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== } + '@textea/json-viewer@2.14.1': + resolution: {integrity: sha512-WCrG96OTfojy2CFywUXXArtrZrBEQRZXP1nT6T5lE0aXjDzkpoqLRqDOcowvB4Jfs5mRx2YzkbeK231GX4yp1A==} + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 - '@webassemblyjs/ieee754@1.11.6': - resolution: { integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== } + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@webassemblyjs/leb128@1.11.6': - resolution: { integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== } + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} - '@webassemblyjs/utf8@1.11.6': - resolution: { integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== } + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} - '@webassemblyjs/wasm-edit@1.11.6': - resolution: { integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== } + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@webassemblyjs/wasm-gen@1.11.6': - resolution: { integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== } + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} - '@webassemblyjs/wasm-opt@1.11.6': - resolution: { integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== } + '@ts-stack/markdown@1.5.0': + resolution: {integrity: sha512-ntVX2Kmb2jyTdH94plJohokvDVPvp6CwXHqsa9NVZTK8cOmHDCYNW0j6thIadUVRTStJhxhfdeovLd0owqDxLw==} - '@webassemblyjs/wasm-parser@1.11.6': - resolution: { integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== } + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - '@webassemblyjs/wast-printer@1.11.6': - resolution: { integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== } + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - '@webpack-cli/configtest@2.1.1': - resolution: { integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - '@webpack-cli/info@2.0.2': - resolution: { integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@webpack-cli/serve@2.0.5': - resolution: { integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true + '@tufjs/canonical-json@1.0.0': + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@xenova/transformers@2.17.1': - resolution: { integrity: sha512-zo702tQAFZXhzeD2GCYUNUqeqkoueOdiSbQWa4s0q7ZE4z8WBIwIsMMPGobpgdqjQ2u0Qulo08wuqVEUrBXjkQ== } + '@tufjs/models@1.0.4': + resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@xmldom/xmldom@0.8.10': - resolution: { integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== } - engines: { node: '>=10.0.0' } + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@xtuc/ieee754@1.2.0': - resolution: { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@xtuc/long@4.2.2': - resolution: { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } + '@types/aws-lambda@8.10.143': + resolution: {integrity: sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg==} - '@zilliz/milvus2-sdk-node@2.3.5': - resolution: { integrity: sha512-bWbQnhvu+7jZXoqI+qySycwph3vloy0LDV54TBY4wRmu6HhMlqIqyIiI8sQNeSJFs8M1jHg1PlmhE/dvckA1bA== } + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@zilliz/milvus2-sdk-node@2.4.2': - resolution: { integrity: sha512-fkPu7XXzfUvHoCnSPVOjqQpWuSnnn9x2NMmmCcIOyRzMeXIsrz4Mf/+M7LUzmT8J9F0Khx65B0rJgCu27YzWQw== } + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - aai-embed-react@1.0.8: - resolution: { integrity: sha512-lZ/C3oh22nWaDlVEfZd/ayIqRkERPGCbfVEV0uaZSneSOvt50aTjyXMDia3Bvb8WPr/hvFHH5RVtJ+i/BagwYQ== } - peerDependencies: - aai-embed: '*' - react: 18.x - - abab@2.0.6: - resolution: { integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== } - deprecated: Use your platform's native atob() and btoa() methods instead - - 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' } - - abortcontroller-polyfill@1.7.5: - resolution: { integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== } - - accepts@1.3.8: - resolution: { integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== } - engines: { node: '>= 0.6' } - - acorn-globals@6.0.0: - resolution: { integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== } - - acorn-globals@7.0.1: - resolution: { integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== } - - acorn-import-assertions@1.9.0: - resolution: { integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== } - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@7.2.0: - resolution: { integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== } - engines: { node: '>=0.4.0' } - - acorn-walk@8.3.2: - resolution: { integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== } - engines: { node: '>=0.4.0' } - - acorn@7.4.1: - resolution: { integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== } - engines: { node: '>=0.4.0' } - hasBin: true - - acorn@8.11.3: - resolution: { integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== } - engines: { node: '>=0.4.0' } - hasBin: true - - add@2.0.6: - resolution: { integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== } - - address@1.2.2: - resolution: { integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== } - engines: { node: '>= 10.0.0' } - - adjust-sourcemap-loader@4.0.0: - resolution: { integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== } - engines: { node: '>=8.9' } - - afinn-165-financialmarketnews@3.0.0: - resolution: { integrity: sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw== } - - afinn-165@1.0.4: - resolution: { integrity: sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA== } - - agent-base@6.0.2: - resolution: { integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== } - engines: { node: '>= 6.0.0' } - - agent-base@7.1.0: - resolution: { integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== } - engines: { node: '>= 14' } - - agentkeepalive@4.5.0: - resolution: { integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== } - engines: { node: '>= 8.0.0' } - - aggregate-error@3.1.0: - resolution: { integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== } - engines: { node: '>=8' } - - ai@3.2.22: - resolution: { integrity: sha512-2u2YT6cf/bTRexUtSiSDco/3/z/xlQ9iiW3y2aH05RwDlj9Q6rpALsTdjRNcglI+OBPaXUEORB/bD1dRwxob6Q== } - engines: { node: '>=18' } - peerDependencies: - openai: 4.51.0 - react: ^18 || ^19 - svelte: ^3.0.0 || ^4.0.0 - zod: ^3.0.0 - peerDependenciesMeta: - openai: - optional: true - react: - optional: true - svelte: - optional: true - zod: - optional: true - - airtable@0.11.6: - resolution: { integrity: sha512-Na67L2TO1DflIJ1yOGhQG5ilMfL2beHpsR+NW/jhaYOa4QcoxZOtDFs08cpSd1tBMsLpz5/rrz/VMX/pGL/now== } - engines: { node: '>=8.0.0' } - - ajv-formats@2.1.1: - resolution: { integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== } - 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.13.0: - resolution: { integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== } - - algoliasearch-helper@3.22.4: - resolution: { integrity: sha512-fvBCywguW9f+939S6awvRMstqMF1XXcd2qs1r1aGqL/PJ1go/DqN06tWmDVmhCDqBJanm++imletrQWf0G2S1g== } - peerDependencies: - algoliasearch: '>= 3.1 < 6' - - algoliasearch@4.24.0: - resolution: { integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g== } - - align-text@0.1.4: - resolution: { integrity: sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg== } - engines: { node: '>=0.10.0' } - - already@2.2.1: - resolution: { integrity: sha512-qk6RIVMS/R1yTvBzfIL1T76PsIL7DIVCINoLuFw2YXKLpLtsTobqdChMs8m3OhuPS3CEE3+Ra5ibYiqdyogbsQ== } - - ansi-align@3.0.1: - resolution: { integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== } - - ansi-bgblack@0.1.1: - resolution: { integrity: sha512-tp8M/NCmSr6/skdteeo9UgJ2G1rG88X3ZVNZWXUxFw4Wh0PAGaAAWQS61sfBt/1QNcwMTY3EBKOMPujwioJLaw== } - engines: { node: '>=0.10.0' } - - ansi-bgblue@0.1.1: - resolution: { integrity: sha512-R8JmX2Xv3+ichUQE99oL+LvjsyK+CDWo/BtVb4QUz3hOfmf2bdEmiDot3fQcpn2WAHW3toSRdjSLm6bgtWRDlA== } - engines: { node: '>=0.10.0' } - - ansi-bgcyan@0.1.1: - resolution: { integrity: sha512-6SByK9q2H978bmqzuzA5NPT1lRDXl3ODLz/DjC4URO5f/HqK7dnRKfoO/xQLx/makOz7zWIbRf6+Uf7bmaPSkQ== } - engines: { node: '>=0.10.0' } - - ansi-bggreen@0.1.1: - resolution: { integrity: sha512-8TRtOKmIPOuxjpklrkhUbqD2NnVb4WZQuIjXrT+TGKFKzl7NrL7wuNvEap3leMt2kQaCngIN1ZzazSbJNzF+Aw== } - engines: { node: '>=0.10.0' } - - ansi-bgmagenta@0.1.1: - resolution: { integrity: sha512-UZYhobiGAlV4NiwOlKAKbkCyxOl1PPZNvdIdl/Ce5by45vwiyNdBetwHk/AjIpo1Ji9z+eE29PUBAjjfVmz5SA== } - engines: { node: '>=0.10.0' } - - ansi-bgred@0.1.1: - resolution: { integrity: sha512-BpPHMnYmRBhcjY5knRWKjQmPDPvYU7wrgBSW34xj7JCH9+a/SEIV7+oSYVOgMFopRIadOz9Qm4zIy+mEBvUOPA== } - engines: { node: '>=0.10.0' } - - ansi-bgwhite@0.1.1: - resolution: { integrity: sha512-KIF19t+HOYOorUnHTOhZpeZ3bJsjzStBG2hSGM0WZ8YQQe4c7lj9CtwnucscJDPrNwfdz6GBF+pFkVfvHBq6uw== } - engines: { node: '>=0.10.0' } - - ansi-bgyellow@0.1.1: - resolution: { integrity: sha512-WyRoOFSIvOeM7e7YdlSjfAV82Z6K1+VUVbygIQ7C/VGzWYuO/d30F0PG7oXeo4uSvSywR0ozixDQvtXJEorq4Q== } - engines: { node: '>=0.10.0' } - - ansi-black@0.1.1: - resolution: { integrity: sha512-hl7re02lWus7lFOUG6zexhoF5gssAfG5whyr/fOWK9hxNjUFLTjhbU/b4UHWOh2dbJu9/STSUv+80uWYzYkbTQ== } - engines: { node: '>=0.10.0' } - - ansi-blue@0.1.1: - resolution: { integrity: sha512-8Um59dYNDdQyoczlf49RgWLzYgC2H/28W3JAIyOAU/+WkMcfZmaznm+0i1ikrE0jME6Ypk9CJ9CY2+vxbPs7Fg== } - engines: { node: '>=0.10.0' } - - ansi-bold@0.1.1: - resolution: { integrity: sha512-wWKwcViX1E28U6FohtWOP4sHFyArELHJ2p7+3BzbibqJiuISeskq6t7JnrLisUngMF5zMhgmXVw8Equjzz9OlA== } - engines: { node: '>=0.10.0' } - - ansi-colors@0.1.0: - resolution: { integrity: sha512-nUNbMZLDr1YQaPdMC2lREJXKttoaHwICajt9x40Js/POX7gNv7OK/VbC9ciJaIFshg9Xol+1GclqfY14UW+0ZA== } - engines: { node: '>=0.10.0' } - - ansi-colors@0.2.0: - resolution: { integrity: sha512-ScRNUT0TovnYw6+Xo3iKh6G+VXDw2Ds7ZRnMIuKBgHY02DgvT2T2K22/tc/916Fi0W/5Z1RzDaHQwnp75hqdbA== } - engines: { node: '>=0.10.0' } - - ansi-colors@1.1.0: - resolution: { integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== } - engines: { node: '>=0.10.0' } - - ansi-colors@4.1.3: - resolution: { integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== } - engines: { node: '>=6' } - - ansi-cyan@0.1.1: - resolution: { integrity: sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A== } - engines: { node: '>=0.10.0' } + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - ansi-dim@0.1.1: - resolution: { integrity: sha512-zAfb1fokXsq4BoZBkL0eK+6MfFctbzX3R4UMcoWrL1n2WHewFKentTvOZv2P11u6P4NtW/V47hVjaN7fJiefOg== } - engines: { node: '>=0.10.0' } + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - ansi-escapes@1.4.0: - resolution: { integrity: sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw== } - engines: { node: '>=0.10.0' } + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - ansi-escapes@4.3.2: - resolution: { integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== } - engines: { node: '>=8' } + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - ansi-escapes@5.0.0: - resolution: { integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== } - engines: { node: '>=12' } + '@types/bunyan@1.8.9': + resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} - ansi-gray@0.1.1: - resolution: { integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw== } - engines: { node: '>=0.10.0' } + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - ansi-green@0.1.1: - resolution: { integrity: sha512-WJ70OI4jCaMy52vGa/ypFSKFb/TrYNPaQ2xco5nUwE0C5H8piume/uAZNNdXXiMQ6DbRmiE7l8oNBHu05ZKkrw== } - engines: { node: '>=0.10.0' } + '@types/caseless@0.12.5': + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - ansi-grey@0.1.1: - resolution: { integrity: sha512-+J1nM4lC+whSvf3T4jsp1KR+C63lypb+VkkwtLQMc1Dlt+nOvdZpFT0wwFTYoSlSwCcLUAaOpHF6kPkYpSa24A== } - engines: { node: '>=0.10.0' } + '@types/chrome@0.0.232': + resolution: {integrity: sha512-IfEhAewLgCDJZ70gnNJ2cbl4L5+9WvR0FL5wl3MGHguSbeQbThN2BNagFq5PddNFMVHW7JKf8TBu7tyWixOeyQ==} - ansi-hidden@0.1.1: - resolution: { integrity: sha512-8gB1bo9ym9qZ/Obvrse1flRsfp2RE+40B23DhQcKxY+GSeaOJblLnzBOxzvmLTWbi5jNON3as7wd9rC0fNK73Q== } - engines: { node: '>=0.10.0' } + '@types/cli-progress@3.11.5': + resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} - ansi-html-community@0.0.8: - resolution: { integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== } - engines: { '0': node >= 0.8.0 } - hasBin: true + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - ansi-inverse@0.1.1: - resolution: { integrity: sha512-Kq8Z0dBRhQhDMN/Rso1Nu9niwiTsRkJncfJZXiyj7ApbfJrGrrubHXqXI37feJZkYcIx6SlTBdNCeK0OQ6X6ag== } - engines: { node: '>=0.10.0' } + '@types/connect@3.4.36': + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} - ansi-italic@0.1.1: - resolution: { integrity: sha512-jreCxifSAqbaBvcibeQxcwhQDbEj7gF69XnpA6x83qbECEBaRBD1epqskrmov1z4B+zzQuEdwbWxgzvhKa+PkA== } - engines: { node: '>=0.10.0' } + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - ansi-magenta@0.1.1: - resolution: { integrity: sha512-A1Giu+HRwyWuiXKyXPw2AhG1yWZjNHWO+5mpt+P+VWYkmGRpLPry0O5gmlJQEvpjNpl4RjFV7DJQ4iozWOmkbQ== } - engines: { node: '>=0.10.0' } + '@types/content-disposition@0.5.8': + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} - ansi-red@0.1.1: - resolution: { integrity: sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow== } - engines: { node: '>=0.10.0' } + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - ansi-regex@2.1.1: - resolution: { integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== } - engines: { node: '>=0.10.0' } + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - ansi-regex@5.0.1: - resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } - engines: { node: '>=8' } + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} - ansi-regex@6.0.1: - resolution: { integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== } - engines: { node: '>=12' } + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} - ansi-reset@0.1.1: - resolution: { integrity: sha512-n+D0qD3B+h/lP0dSwXX1SZMoXufdUVotLMwUuvXa50LtBAh3f+WV8b5nFMfLL/hgoPBUt+rG/pqqzF8krlZKcw== } - engines: { node: '>=0.10.0' } + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} - ansi-strikethrough@0.1.1: - resolution: { integrity: sha512-gWkLPDvHH2pC9YEKqp8dIl0mg3sRglMPvioqGDIOXiwxjxUwIJ1gF86E2o4R5yLNh8IAkwHbaMtASkJfkQ2hIA== } - engines: { node: '>=0.10.0' } + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} - ansi-styles@2.2.1: - resolution: { integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== } - engines: { node: '>=0.10.0' } + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} - ansi-styles@3.2.1: - resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } - engines: { node: '>=4' } + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - ansi-styles@4.3.0: - resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } - engines: { node: '>=8' } + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} - ansi-styles@5.2.0: - resolution: { integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== } - engines: { node: '>=10' } + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} - ansi-styles@6.2.1: - resolution: { integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== } - engines: { node: '>=12' } + '@types/d3-dispatch@3.0.6': + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} - ansi-underline@0.1.1: - resolution: { integrity: sha512-D+Bzwio/0/a0Fu5vJzrIT6bFk43TW46vXfSvzysOTEHcXOAUJTVMHWDbELIzGU4AVxVw2rCTb7YyWS4my2cSKQ== } - engines: { node: '>=0.10.0' } + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} - ansi-white@0.1.1: - resolution: { integrity: sha512-DJHaF2SRzBb9wZBgqIJNjjTa7JUJTO98sHeTS1sDopyKKRopL1KpaJ20R6W2f/ZGras8bYyIZDtNwYOVXNgNFg== } - engines: { node: '>=0.10.0' } + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} - ansi-wrap@0.1.0: - resolution: { integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== } - engines: { node: '>=0.10.0' } + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - ansi-yellow@0.1.1: - resolution: { integrity: sha512-6E3D4BQLXHLl3c/NwirWVZ+BCkMq2qsYxdeAGGOijKrx09FaqU+HktFL6QwAwNvgJiMLnv6AQ2C1gFZx0h1CBg== } - engines: { node: '>=0.10.0' } + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} - ansicolors@0.3.2: - resolution: { integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== } + '@types/d3-force@3.0.9': + resolution: {integrity: sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==} - any-promise@1.3.0: - resolution: { integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== } + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} - anymatch@2.0.0: - resolution: { integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== } + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} - anymatch@3.1.3: - resolution: { integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== } - engines: { node: '>= 8' } + '@types/d3-hierarchy@3.1.6': + resolution: {integrity: sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==} - apify-client@2.9.3: - resolution: { integrity: sha512-qQn1BxNL29cxwFSpgA3oc53i88xdYGtNZfYDFCoi3MJyds1XKx2NDPuf65YwQS/n0Qsfq1uHJqbkqV5oo/FSXw== } + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - app-root-path@3.1.0: - resolution: { integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== } - engines: { node: '>= 6.0.0' } + '@types/d3-path@3.1.0': + resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} - apparatus@0.0.10: - resolution: { integrity: sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg== } - engines: { node: '>=0.2.6' } + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} - append-buffer@1.0.2: - resolution: { integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA== } - engines: { node: '>=0.10.0' } + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - append-field@1.0.0: - resolution: { integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== } + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} - aproba@2.0.0: - resolution: { integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== } + '@types/d3-scale-chromatic@3.0.3': + resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} - arch@2.2.0: - resolution: { integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== } + '@types/d3-scale@4.0.8': + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} - archy@1.0.0: - resolution: { integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== } + '@types/d3-selection@3.0.10': + resolution: {integrity: sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==} - 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. + '@types/d3-shape@3.1.6': + resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} - are-we-there-yet@3.0.1: - resolution: { integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} - arg@4.1.3: - resolution: { integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== } + '@types/d3-time@3.0.3': + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} - arg@5.0.2: - resolution: { integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== } + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - argparse@1.0.10: - resolution: { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } + '@types/d3-transition@3.0.8': + resolution: {integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==} - argparse@2.0.1: - resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - aria-query@5.1.3: - resolution: { integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== } + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - aria-query@5.3.0: - resolution: { integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== } + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - arr-diff@2.0.0: - resolution: { integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== } - engines: { node: '>=0.10.0' } + '@types/diff-match-patch@1.0.36': + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - arr-diff@4.0.0: - resolution: { integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== } - engines: { node: '>=0.10.0' } + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - arr-filter@1.1.2: - resolution: { integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA== } - engines: { node: '>=0.10.0' } + '@types/eslint@8.56.5': + resolution: {integrity: sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==} - arr-flatten@1.1.0: - resolution: { integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== } - engines: { node: '>=0.10.0' } + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - arr-map@2.0.2: - resolution: { integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw== } - engines: { node: '>=0.10.0' } + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - arr-pluck@0.1.0: - resolution: { integrity: sha512-r+XGzphTuhTu//mwL9wIjXawJCiKkZqUDgJsUxzq+YGiYb4Gg9+GuIVorvSo7halsbEiDj5D34cquiHj7jTvgg== } - engines: { node: '>=0.10.0' } + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - arr-union@3.1.0: - resolution: { integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== } - engines: { node: '>=0.10.0' } + '@types/expect@1.20.4': + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} - array-buffer-byte-length@1.0.1: - resolution: { integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== } - engines: { node: '>= 0.4' } + '@types/express-serve-static-core@4.17.43': + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} - array-differ@3.0.0: - resolution: { integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== } - engines: { node: '>=8' } + '@types/express-session@1.18.1': + resolution: {integrity: sha512-S6TkD/lljxDlQ2u/4A70luD8/ZxZcrU5pQwI1rVXCiaVIywoFgbA+PIUNDjPhQpPdK0dGleLtYc/y7XWBfclBg==} - array-each@1.0.1: - resolution: { integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA== } - engines: { node: '>=0.10.0' } + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - array-flatten@1.1.1: - resolution: { integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== } + '@types/filesystem@0.0.36': + resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} - array-includes@3.1.7: - resolution: { integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== } - engines: { node: '>= 0.4' } + '@types/filewriter@0.0.33': + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - array-initial@1.1.0: - resolution: { integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw== } - engines: { node: '>=0.10.0' } + '@types/geojson@7946.0.14': + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} - array-keyed-map@2.1.3: - resolution: { integrity: sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA== } + '@types/glob-stream@8.0.2': + resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} - array-last@1.3.0: - resolution: { integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== } - engines: { node: '>=0.10.0' } + '@types/google-protobuf@3.15.10': + resolution: {integrity: sha512-uiyKJCa8hbmPE4yxwjbkMOALaBAiOVcatW/yEGbjTqwAh4kzNgQPWRlJMNPXpB5CPUM66xsYufiSX9WKHZCE9g==} - array-slice@1.1.0: - resolution: { integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== } - engines: { node: '>=0.10.0' } + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - array-sort@0.1.4: - resolution: { integrity: sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ== } - engines: { node: '>=0.10.0' } + '@types/gtag.js@0.0.12': + resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} - array-sort@1.0.0: - resolution: { integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== } - engines: { node: '>=0.10.0' } + '@types/gulp@4.0.9': + resolution: {integrity: sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==} - array-union@2.1.0: - resolution: { integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== } - engines: { node: '>=8' } + '@types/har-format@1.2.15': + resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} - array-unique@0.2.1: - resolution: { integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== } - engines: { node: '>=0.10.0' } + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - array-unique@0.3.2: - resolution: { integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== } - engines: { node: '>=0.10.0' } + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - array.prototype.filter@1.0.3: - resolution: { integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== } - engines: { node: '>= 0.4' } + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - array.prototype.findlast@1.2.4: - resolution: { integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw== } - engines: { node: '>= 0.4' } + '@types/hoist-non-react-statics@3.3.5': + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} - array.prototype.findlastindex@1.2.4: - resolution: { integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== } - engines: { node: '>= 0.4' } + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - array.prototype.flat@1.3.2: - resolution: { integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== } - engines: { node: '>= 0.4' } + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - array.prototype.flatmap@1.3.2: - resolution: { integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== } - engines: { node: '>= 0.4' } + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - array.prototype.reduce@1.0.6: - resolution: { integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== } - engines: { node: '>= 0.4' } + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} - array.prototype.toreversed@1.1.2: - resolution: { integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== } + '@types/is-stream@1.1.0': + resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} - array.prototype.tosorted@1.1.3: - resolution: { integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== } + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - arraybuffer.prototype.slice@1.0.3: - resolution: { integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== } - engines: { node: '>= 0.4' } + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - arrayify-compact@0.2.0: - resolution: { integrity: sha512-uCIqMaBeu+onuiFS1kB2raQYLETAAeWwAGwrZs7soA1nu4TuHfejWJMoFL06SvWHZAxmOCN7UDzcBjUZ6Y6s6Q== } - engines: { node: '>=0.10.0' } + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - arrify@2.0.1: - resolution: { integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== } - engines: { node: '>=8' } + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - asap@2.0.6: - resolution: { integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== } + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - asn1@0.2.6: - resolution: { integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== } + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - assemble-core@0.25.0: - resolution: { integrity: sha512-5vS/XZK0ke3gIHoKTyl88brqOR9zw3niz5jJHrEgrDLlZGEri4a1Wr4badallKCx4M4/TWG12GT/O5wABZjaVA== } - engines: { node: '>=4.0' } + '@types/jsdom@21.1.6': + resolution: {integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==} - assemble-fs@0.6.0: - resolution: { integrity: sha512-vp9szLsFTz0NFa7aiCBZ4JJZPsRRjLB7ftj3anSm/apE+DJ8d1s7kaVFHpxc2LCrEVIGMc1ALLyfRYJDwtzfaw== } - engines: { node: '>=0.10.0' } + '@types/json-patch@0.0.30': + resolution: {integrity: sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==} - assemble-handle@0.1.4: - resolution: { integrity: sha512-7O1lbkR2fMqsGwrtGzHraLQHN0OKukPeLF/qgD7yTzFKSKg/HH2xeEN8mKutwymXRzVsUF3AvboJoOjMGiT+5g== } - engines: { node: '>=0.10.0' } + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - assemble-loader@0.6.1: - resolution: { integrity: sha512-jef7ecixuK8DgP2LMJ5TO1Zs6YnltxQN8KDLDYLav+VbfK7+BGVLHv2NNrIm0/Mls2CklNmMqeWcccdSUNRUnQ== } - engines: { node: '>=0.10.0' } + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - assemble-render-file@0.7.2: - resolution: { integrity: sha512-Fmt/7KDIwHr/zIStwzl1QEzeph++eP0I7G3tQch1s0ftBllEwZZ5Py7IpO1WPkP+ef8xMRjXNrNKx8/cpTgb4w== } - engines: { node: '>=0.10.0' } + '@types/katex@0.16.7': + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} - assemble-streams@0.6.0: - resolution: { integrity: sha512-JEZRYrkAQHKCT41jTVXQ63AxeYGD9aDuxRDZhZH5fsVfvLZGOHXsGPSJBEfDuC6Nz6APJGt9lwWfZH9lqmG65Q== } - engines: { node: '>=0.10.0' } + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - assemblyai@4.3.2: - resolution: { integrity: sha512-XSrLNA8laggP2P8GswK2HlAdx/uwGQ8Y2O0IkAoOz/OsRE3zBqtcY0RPFB2vQSdVKkHVbDC/S5kcQ8Sp1ABcqA== } - engines: { node: '>=18' } + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - assemblyai@4.4.3: - resolution: { integrity: sha512-kciFasQyO+fVxwr2PrrMByFoRRSG4FLwUGXiYJOB9WFd2A121r3nqBwOs4rjkPByxSbIOAQqf/OggnUwWbsNDw== } - engines: { node: '>=18' } + '@types/lodash@4.14.202': + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - assert-plus@1.0.0: - resolution: { integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== } - engines: { node: '>=0.8' } + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - assign-deep@0.4.8: - resolution: { integrity: sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg== } - engines: { node: '>=0.10.0' } + '@types/lodash@4.17.4': + resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} - assign-symbols@0.1.1: - resolution: { integrity: sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg== } - engines: { node: '>=0.10.0' } + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - assign-symbols@1.0.0: - resolution: { integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== } - engines: { node: '>=0.10.0' } + '@types/mathjax@0.0.37': + resolution: {integrity: sha512-y0WSZBtBNQwcYipTU/BhgeFu1EZNlFvUNCmkMXV9kBQZq7/o5z82dNVyH3yy2Xv5zzeNeQoHSL4Xm06+EQiH+g==} - ast-types-flow@0.0.8: - resolution: { integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== } + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - ast-types@0.13.4: - resolution: { integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== } - engines: { node: '>=4' } + '@types/mdast@4.0.3': + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - astral-regex@2.0.0: - resolution: { integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== } - engines: { node: '>=8' } + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - astring@1.9.0: - resolution: { integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== } - hasBin: true + '@types/memcached@2.2.10': + resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} - async-array-reduce@0.2.1: - resolution: { integrity: sha512-/ywTADOcaEnwiAnOEi0UB/rAcIq5bTFfCV9euv3jLYFUMmy6KvKccTQUnLlp8Ensmfj43wHSmbGiPqjsZ6RhNA== } - engines: { node: '>=0.10.0' } + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - async-done@0.4.0: - resolution: { integrity: sha512-NcrnJY08hBDUa3qhZIfRALshlau6U/Q9X1WHA53t/8OfJpQz5qXPKGFVHwIY38md62TiM9JA+5tpRed5LFWrKw== } + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - async-done@1.3.2: - resolution: { integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== } - engines: { node: '>= 0.10' } + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - async-each-series@1.1.0: - resolution: { integrity: sha512-/VIpPVIJJlJObJiXkHBJ1RhjDtydBRG/3/dWpsXoVGOShNw5tameXnC7Yys+wpb0p/myItxGmSGgNi/dNlsIiA== } - engines: { node: '>=0.8.0' } + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - async-each@1.0.6: - resolution: { integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== } + '@types/multer-s3@3.0.3': + resolution: {integrity: sha512-VgWygI9UwyS7loLithUUi0qAMIDWdNrERS2Sb06UuPYiLzKuIFn2NgL7satyl4v8sh/LLoU7DiPanvbQaRg9Yg==} - async-helpers@0.3.17: - resolution: { integrity: sha512-LfgCyvmK6ZiC7pyqOgli2zfkWL4HYbEb+HXvGgdmqVBgsOOtQz5rSF8Ii/H/1cNNtrfj1KsdZE/lUMeIY3Qcwg== } - engines: { node: '>=4.0.0' } + '@types/multer@1.4.11': + resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} - async-mutex@0.4.1: - resolution: { integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== } + '@types/mysql@2.15.26': + resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} - async-retry@1.3.3: - resolution: { integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== } + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - async-settle@0.2.1: - resolution: { integrity: sha512-3b4i8Bf/9Zw3V/EsLtMx+qj2r0mDYotjMhzXJQxjvESOe5LgevY5KaH5BHROVZWHE7TlSY2FkeTgIgDvdkRFYQ== } + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - async-settle@1.0.0: - resolution: { integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw== } - engines: { node: '>= 0.10' } + '@types/node-fetch@2.6.2': + resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - async@1.5.2: - resolution: { integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== } + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - async@3.2.5: - resolution: { integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== } + '@types/node@14.18.63': + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - asynciterator.prototype@1.0.0: - resolution: { integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== } + '@types/node@15.14.9': + resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} - asynckit@0.4.0: - resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== } + '@types/node@16.18.105': + resolution: {integrity: sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==} - at-least-node@1.0.0: - resolution: { integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== } - engines: { node: '>= 4.0.0' } + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - atlassian-jwt@2.0.3: - resolution: { integrity: sha512-G9oO3HHS1UKgsLRXj6nNKv2TY6g3PleBCdzHwbFeVKg+18GBFIMRz+ApxuOuWAgcL7RngNFF5rGNtw1Ss3hvTg== } - engines: { node: '>= 0.4.0' } + '@types/node@18.15.11': + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - atob@2.1.2: - resolution: { integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== } - engines: { node: '>= 4.5.0' } - hasBin: true + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} - autoprefixer@10.4.14: - resolution: { integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 + '@types/node@22.13.9': + resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} - autoprefixer@10.4.20: - resolution: { integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - available-typed-arrays@1.0.7: - resolution: { integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== } - engines: { node: '>= 0.4' } + '@types/oauth@0.9.6': + resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==} - aws-crt@1.21.3: - resolution: { integrity: sha512-oaiP5zoPkXwbM9T3nwSgq6CBZWx0501iefLPg12FODniIgqGMyzbMXHYC+fxbCoP5SOQVmCwtAfbNuIG5bFENg== } + '@types/object-hash@3.0.6': + resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} - aws-sdk@2.1575.0: - resolution: { integrity: sha512-q33w5NN057CYOdcbxpKAgrb7CUSPrtPBxGGzgIo44y1Fi1iEXDawMYcahu5cwSfD6NFzvZkPz2a5Eo1Fu3Az8A== } - engines: { node: '>= 10.0.0' } + '@types/papaparse@5.3.15': + resolution: {integrity: sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw==} - aws-sign2@0.7.0: - resolution: { integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== } + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - aws4@1.12.0: - resolution: { integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== } + '@types/passport-google-oauth20@2.0.16': + resolution: {integrity: sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA==} - axe-core@4.7.0: - resolution: { integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== } - engines: { node: '>=4' } + '@types/passport-oauth2@1.4.17': + resolution: {integrity: sha512-ODiAHvso6JcWJ6ZkHHroVp05EHGhqQN533PtFNBkg8Fy5mERDqsr030AX81M0D69ZcaMvhF92SRckEk2B0HYYg==} - axe-core@4.8.4: - resolution: { integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg== } - engines: { node: '>=4' } + '@types/passport@1.0.17': + resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==} - axios@1.6.2: - resolution: { integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== } + '@types/pdf-parse@1.1.4': + resolution: {integrity: sha512-+gbBHbNCVGGYw1S9lAIIvrHW47UYOhMIFUsJcMkMrzy1Jf0vulBN3XQIjPgnoOXveMuHnF3b57fXROnY/Or7eg==} - axios@1.6.8: - resolution: { integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== } + '@types/pg-pool@2.0.6': + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} - axios@1.7.2: - resolution: { integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== } + '@types/pg@8.11.2': + resolution: {integrity: sha512-G2Mjygf2jFMU/9hCaTYxJrwdObdcnuQde1gndooZSOHsNSaCehAuwc7EIuSA34Do8Jx2yZ19KtvW8P0j4EuUXw==} - axobject-query@3.2.1: - resolution: { integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== } + '@types/pg@8.11.6': + resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} - axobject-query@4.0.0: - resolution: { integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw== } + '@types/pg@8.6.1': + resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} - b4a@1.6.6: - resolution: { integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== } + '@types/phoenix@1.6.4': + resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} - babel-code-frame@6.26.0: - resolution: { integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== } + '@types/picomatch@2.3.3': + resolution: {integrity: sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg==} - babel-core@6.26.3: - resolution: { integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== } - - babel-generator@6.26.1: - resolution: { integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== } - - babel-helpers@6.24.1: - resolution: { integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== } - - babel-jest@27.5.1: - resolution: { integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - '@babel/core': ^7.8.0 - - babel-jest@29.7.0: - resolution: { integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - '@babel/core': ^7.8.0 - - babel-loader@8.3.0: - resolution: { integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== } - engines: { node: '>= 8.9' } - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - - babel-loader@9.1.3: - resolution: { integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== } - engines: { node: '>= 14.15.0' } - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-messages@6.23.0: - resolution: { integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== } - - babel-plugin-dynamic-import-node@2.3.3: - resolution: { integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== } - - babel-plugin-istanbul@6.1.1: - resolution: { integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== } - engines: { node: '>=8' } - - babel-plugin-jest-hoist@27.5.1: - resolution: { integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - babel-plugin-jest-hoist@29.6.3: - resolution: { integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - babel-plugin-jsx-dom-expressions@0.36.18: - resolution: { integrity: sha512-8K0CHgzNMB0+1OC+GQf1O49Nc6DfHAoWDjY4YTW3W/3il5KrDKAj65723oPmya68kKKOkqDKuz+Zh1u7VFHthw== } - peerDependencies: - '@babel/core': ^7.20.12 + '@types/prismjs@1.26.4': + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} - babel-plugin-lodash@3.3.4: - resolution: { integrity: sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg== } + '@types/prop-types@15.7.11': + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - babel-plugin-macros@3.1.0: - resolution: { integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== } - engines: { node: '>=10', npm: '>=6' } + '@types/q@1.5.8': + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} - babel-plugin-named-asset-import@0.3.8: - resolution: { integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== } - peerDependencies: - '@babel/core': ^7.1.0 + '@types/qs@6.9.12': + resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==} - babel-plugin-polyfill-corejs2@0.4.11: - resolution: { integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - babel-plugin-polyfill-corejs2@0.4.9: - resolution: { integrity: sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/react-dom@18.2.21': + resolution: {integrity: sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==} - babel-plugin-polyfill-corejs3@0.10.4: - resolution: { integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/react-router-config@5.0.11': + resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} - babel-plugin-polyfill-corejs3@0.9.0: - resolution: { integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/react-router-dom@5.3.3': + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} - babel-plugin-polyfill-regenerator@0.5.5: - resolution: { integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - babel-plugin-polyfill-regenerator@0.6.2: - resolution: { integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@types/react-syntax-highlighter@15.5.13': + resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} - babel-plugin-styled-components@2.1.4: - resolution: { integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g== } - peerDependencies: - styled-components: '>= 2' - - babel-plugin-transform-react-remove-prop-types@0.4.24: - resolution: { integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== } - - babel-preset-current-node-syntax@1.0.1: - resolution: { integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== } - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@27.5.1: - resolution: { integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - '@babel/core': ^7.0.0 + '@types/react-transition-group@4.4.10': + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} - 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 + '@types/react-window@1.8.8': + resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - babel-preset-react-app@10.0.1: - resolution: { integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== } + '@types/react@18.0.32': + resolution: {integrity: sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==} - babel-preset-solid@1.7.1: - resolution: { integrity: sha512-a4TSLrEKIscsTIEBVo9fuWSdBQjEBrkQmNzIvXd26MO1Zyqdts+VEMy2k/OhfH0/L9ZY0ELLrTcij1IMDxVldQ== } - peerDependencies: - '@babel/core': ^7.0.0 + '@types/react@18.2.65': + resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} - babel-register@6.26.0: - resolution: { integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== } + '@types/request@2.48.12': + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - babel-runtime@6.26.0: - resolution: { integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== } + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - babel-template@6.26.0: - resolution: { integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== } + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - babel-traverse@6.26.0: - resolution: { integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== } + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - babel-types@6.26.0: - resolution: { integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== } + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - babylon@6.18.0: - resolution: { integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== } - hasBin: true + '@types/sanitize-html@2.11.0': + resolution: {integrity: sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ==} - bach@0.5.0: - resolution: { integrity: sha512-wr1KICs4sa/Ye4D38CEWkxmRi0E/1NnlcTXE4WT46993f+m+W8rVeRlQVh7O9jUHd3/cyNttv4qIDEUullFPcw== } - engines: { node: '>= 0.10' } + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - bach@1.2.0: - resolution: { integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg== } - engines: { node: '>= 0.10' } + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - bail@1.0.5: - resolution: { integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== } + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - bail@2.0.2: - resolution: { integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== } + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - balanced-match@1.0.2: - resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - bare-events@2.2.1: - resolution: { integrity: sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A== } + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - bare-fs@2.2.1: - resolution: { integrity: sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg== } + '@types/shimmer@1.2.0': + resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - bare-os@2.2.0: - resolution: { integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag== } + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - bare-path@2.1.0: - resolution: { integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw== } + '@types/sizzle@2.3.8': + resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} - base-64@0.1.0: - resolution: { integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA== } + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - base-64@1.0.0: - resolution: { integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== } + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - base-argv@0.4.5: - resolution: { integrity: sha512-U78T4In2FMtSYBaf3utKCAOrOBJJXgvGLUmck71ZLQuJZBO6+DDUFoJGfuys0bX/wSQOZgB/HLLFiapvvUUFlw== } - engines: { node: '>=0.10.0' } + '@types/streamx@2.9.5': + resolution: {integrity: sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ==} - base-cli-process@0.1.19: - resolution: { integrity: sha512-hH9MGqad9bZBmowsZ8uKL91rS4L+q4GEOc5SaL045jQWaR93sla0UI4Q9C6GzOD2AgVJulY2QtCMmwcBhdVYtQ== } - engines: { node: '>=4.0' } + '@types/swagger-jsdoc@6.0.4': + resolution: {integrity: sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==} - base-cli-schema@0.1.19: - resolution: { integrity: sha512-8k3JPZjVjdwpYtaaF3F8JT9RztX1oFDWKsAVDpUUR/uXL6b85DyTpRX4TUw3rjwZMZIf1BmiTys2zOSqC7+oAA== } - engines: { node: '>=4.0' } + '@types/swagger-ui-express@4.1.8': + resolution: {integrity: sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==} - base-cli@0.5.0: - resolution: { integrity: sha512-GQnPyusKASZoCKR3JFf4iVygLvZjk6RwEQokZF35M9VHnhkoPycf22jYlWkwLEtCejtcLECgGC7fq0G/ab5k8g== } - engines: { node: '>=0.10.0' } + '@types/swagger2openapi@7.0.4': + resolution: {integrity: sha512-ffMqzciTDihOKH4Q//9Ond1yb5JP1P5FC/aFPsLK4blea1Fwk2aYctiNCkAh5etDYFswFXS+5LV/vuGkf+PU6A==} - base-compose@0.2.1: - resolution: { integrity: sha512-z/wx9ij4i4Bj6WbXJeJlVO2O99eErMXSWjyYUt/NAfxrGpNfMz4SWS9P0OYx9RVQ2CyMEcT1J3z5+9EqQQr8Ug== } - engines: { node: '>=4.0' } + '@types/tedious@4.0.14': + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} - base-config-process@0.1.9: - resolution: { integrity: sha512-tShRbXNMml5V/qgcZ3ntWsaS6ovw1t7e4yvtYY9XzhJtNpuC8WudMwtSbG7lXAuEZ04jY1istJzKR3NzAoxo3A== } - engines: { node: '>=0.10.0' } + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} - base-config-schema@0.1.24: - resolution: { integrity: sha512-3CYvd28nsiNVp1rkAfVqfYo7VzDPdIxwv0Ab6iGY0K7JdGRsT6U7Jqq6BBMGNd9XLazLhVBPNGUzaDg5oUtV5w== } - engines: { node: '>=0.12.0' } + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - base-config@0.5.2: - resolution: { integrity: sha512-Oq0PKM//Sh82mHQt64eUi5GZQOM8I+aNkM/P8Al4A5qwaGBkxKB+ElNqJHUVlF3WA9VjBLYUmO9asGzLEigxBw== } - engines: { node: '>=0.10.0' } + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - base-cwd@0.3.4: - resolution: { integrity: sha512-/kxZE1Hg9p4tvy4DHrWyS/DelZeovOWvBZ9CZKTgeieIxMuZ47FaLIkEkcjOVFcu3nIY4TXdlxhMZFi8D2Rs9g== } - engines: { node: '>=0.10.0' } + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - base-data@0.6.2: - resolution: { integrity: sha512-wH2ViG6CUO2AaeHSEt6fJTyQAk5gl0oY456DoSC5h8mnHrWUbvdctMCuF53CXgBmi0oalZQppKNH0iamG5+uqw== } - engines: { node: '>=0.10.0' } + '@types/undertaker-registry@1.0.4': + resolution: {integrity: sha512-tW77pHh2TU4uebWXWeEM5laiw8BuJ7pyJYDh6xenOs75nhny2kVgwYbegJ4BoLMYsIrXaBpKYaPdYO3/udG+hg==} - base-engines@0.2.1: - resolution: { integrity: sha512-s/A07Vbh6irEMNG+HpccmaGw8SUMXPBetJuYPpq7Rf1WCjtCU1L+FKyeKyRahONGNYBSIHEV0d3cqXYw35EjBw== } - engines: { node: '>=0.10.0' } + '@types/undertaker@1.2.11': + resolution: {integrity: sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA==} - base-env@0.3.1: - resolution: { integrity: sha512-/HxC8QV1m/bWqvjcu4WZl4Um1HRpTAjuY31uiFUEukXsXge4WIvNvGKG/gCs2PrpBFPCybowA406V/ivdPknpQ== } - engines: { node: '>=0.10.0' } + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - base-generators@0.4.6: - resolution: { integrity: sha512-0k8QAoqYhOwIHQANQxwNOhtlQiuoMqv+rFu2szVIvLUNhZ8B7BOXWFRE5UXMAexRxz7H8rZIwLmeqxlYpOXJGw== } - engines: { node: '>=0.10.0' } + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - base-helpers@0.1.1: - resolution: { integrity: sha512-aUdOoz47aMdM2OAkN71P3m8wjFB+pZDVfvLebDoNAsD0zhKUc68QR30q9iK6vW6S302yNNVW8bZxUF6FwFLnQw== } - engines: { node: '>=0.10.0' } + '@types/use-sync-external-store@0.0.3': + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} - base-namespace@0.2.0: - resolution: { integrity: sha512-jZYAnj1wkwyi6HkqATtO86D8L9jbDdqVthISLG27LcXCFkc5EV+BwS/cfaPBkWoMGb3NsVMau+PLfFle58Xi2g== } - engines: { node: '>=0.10.0' } + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - base-option@0.8.4: - resolution: { integrity: sha512-CS9V8trhwEccFFjmveBHWx4Wr4rwaohzMhwZx1DSUHdGHV9Nme3jbxJQ0U8JsrLFJvGtiav35NiHLeNd8n74XA== } - engines: { node: '>=0.10.0' } + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - base-pkg@0.2.5: - resolution: { integrity: sha512-/POxajlgBhVsknwLXnqnbp//bAMh7SkDgHF+z/uoYnFqk46e05c3MxSEmn5vFCB8g4rHHKxAPLKrU/4Yb3vUdA== } - engines: { node: '>=0.10.0' } + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - base-plugins@0.4.13: - resolution: { integrity: sha512-w77IDOnkxERPZ7x27A8MmSFcwEfTfrcZ43zK5eOt42itA8FZT9OFhZm1XgOtTEORKrCmW8yVT6DWr/ut7wvgiQ== } - engines: { node: '>=0.10.0' } + '@types/vinyl-fs@3.0.5': + resolution: {integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==} - base-questions@0.7.4: - resolution: { integrity: sha512-uHRp5ZM2MFXUhDOPK09lroJdDe3lrXTHtg2x7pC1x4RdimVZcsX+hvQuxNqyAUN62EHfFuaK+FIFjMiA4AoiQg== } - engines: { node: '>=0.10.0' } + '@types/vinyl@2.0.11': + resolution: {integrity: sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw==} - base-routes@0.2.2: - resolution: { integrity: sha512-z7jtXacfUbjAKUGj5jmJP8GrhZG+UqcwnfkKjLJtUa1w1bWrq5JmsZ1SFRfomXWbLAlEcE87dHvelvTkelQBIg== } - engines: { node: '>=0.10.0' } + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - base-runtimes@0.2.0: - resolution: { integrity: sha512-J98SbWB4Rpcva8w8kWtTts+Qc/X/imcmFoy9nt2fKemPTmVgvrt8DyDK5KFUDyQHt+hahYa69pJTGFfUma7V8A== } - engines: { node: '>=0.10.0' } + '@types/whatwg-url@11.0.4': + resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} - base-store@0.4.4: - resolution: { integrity: sha512-fb5L2iNR9pCl85jeg88TCJYlcKg8xhmdH1Cjp1MI2RZNnMBjdIaQOuGy9Q4VjSD/GNGBWgQ2H8pQK61Xsx29OA== } - engines: { node: '>=0.10.0' } + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - base-task@0.6.2: - resolution: { integrity: sha512-dxCXKPLFRrl02kJ+Lu6Y0Y2/XeaVf3GbGXMoZKuHN9OvFjz+QXRwpTJ0PciQPAvktUgK46Mc9Kwakrcj8fSTog== } - engines: { node: '>=0.10.0' } + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - base16@1.0.0: - resolution: { integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== } + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} - base64-js@1.5.1: - resolution: { integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== } + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - base64id@2.0.0: - resolution: { integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== } - engines: { node: ^4.5.0 || >= 5.9 } + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - base64url@3.0.1: - resolution: { integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== } - engines: { node: '>=6.0.0' } + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - base@0.11.2: - resolution: { integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== } - engines: { node: '>=0.10.0' } + '@typescript-eslint/experimental-utils@5.62.0': + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - base@0.8.1: - resolution: { integrity: sha512-hCEtSWF9Xin1mVIrgCAwJhIJxURWOu3odjKsv+9TXofdJly0vO9Di87hnkChwi44v0+LPzHtNOjoCUYb36fBhg== } - engines: { node: '>=0.10.0' } + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - basic-auth@2.0.1: - resolution: { integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== } - engines: { node: '>= 0.8' } + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@7.13.1': + resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - basic-ftp@5.0.5: - resolution: { integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== } - engines: { node: '>=10.0.0' } + '@typescript-eslint/typescript-estree@7.13.1': + resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - batch@0.6.1: - resolution: { integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== } + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@7.13.1': + resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + engines: {node: ^18.18.0 || >=20.0.0} - bcrypt-pbkdf@1.0.2: - resolution: { integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== } + '@uiw/codemirror-extensions-basic-setup@4.21.24': + resolution: {integrity: sha512-TJYKlPxNAVJNclW1EGumhC7I02jpdMgBon4jZvb5Aju9+tUzS44IwORxUx8BD8ZtH2UHmYS+04rE3kLk/BtnCQ==} + peerDependencies: + '@codemirror/autocomplete': '>=6.0.0' + '@codemirror/commands': '>=6.0.0' + '@codemirror/language': '>=6.0.0' + '@codemirror/lint': '>=6.0.0' + '@codemirror/search': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' - before-after-hook@2.2.3: - resolution: { integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== } + '@uiw/codemirror-theme-sublime@4.21.24': + resolution: {integrity: sha512-rMVl/WrRtN/XtRiLEd/Bnb6TYQqDilZVWi8TC5YpKN6J6uK00zOxlJ7nopm3SwRL8FqzJSybNdMZMnbEKaoYQg==} - bfj@7.1.0: - resolution: { integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== } - engines: { node: '>= 8.0.0' } + '@uiw/codemirror-theme-vscode@4.21.24': + resolution: {integrity: sha512-319zklfinRpKxs9OIowhIt3kDYDe2uTg7Xx5tpYO9lHnU1GiJRQZflXUqxroLqZU1Zfx7pjXtFtVstL3sTuhqw==} - bidi-js@1.0.3: - resolution: { integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== } + '@uiw/codemirror-themes@4.21.24': + resolution: {integrity: sha512-InY24KWP8YArDBACWHKFZ6ZU+WCvRHf3ZB2cCVxMVN35P1ANUmRzpAP2ernZQ5OIriL1/A/kXgD0Zg3Y65PNgg==} + peerDependencies: + '@codemirror/language': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' - big-integer@1.6.52: - resolution: { integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== } - engines: { node: '>=0.6' } + '@uiw/react-codemirror@4.21.24': + resolution: {integrity: sha512-8zs5OuxbhikHocHBsVBMuW1vqlv4ccZAkt4rFwr7ebLP2Q6RwHsjpsR9GeGyAigAqonKRoeHugqF78UMrkaTgg==} + peerDependencies: + '@babel/runtime': '>=7.11.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/theme-one-dark': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + codemirror: '>=6.0.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' - big.js@5.2.2: - resolution: { integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== } + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - bignumber.js@9.1.2: - resolution: { integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== } + '@upstash/redis@1.22.1': + resolution: {integrity: sha512-7ec2eCMkVxZzuHNb+hPKonX4b/Pu0BdDeSBsEy+jKIqiweXzCs5Dpu9642vJgf57YnEsfwgXnQMVEataarvyeQ==} - bin-links@3.0.3: - resolution: { integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + '@upstash/vector@1.1.5': + resolution: {integrity: sha512-55+Beu/kCwjcnzg6fnMN06v9PYU1lv9NQfQwpjrJAQTH8GOprcRsQeyXBdNHKNzoQvRnVS0ENd5CDgFoljfrAw==} - binary-extensions@1.13.1: - resolution: { integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== } - engines: { node: '>=0.10.0' } + '@vercel/stega@0.1.2': + resolution: {integrity: sha512-P7mafQXjkrsoyTRppnt0N21udKS9wUmLXHRyP9saLXLHw32j/FgUJ3FscSWgvSqRs4cj7wKZtwqJEvWJ2jbGmA==} - binary-extensions@2.2.0: - resolution: { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } - engines: { node: '>=8' } + '@vitejs/plugin-react@3.1.0': + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 + + '@vitejs/plugin-react@4.2.1': + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} + + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} + + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} + + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} + + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} + + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} + + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} + + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} + peerDependencies: + vue: 3.4.31 + + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + + '@webassemblyjs/ast@1.11.6': + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.11.6': + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - binary-search@1.3.6: - resolution: { integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA== } + '@webassemblyjs/helper-wasm-section@1.11.6': + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - binaryextensions@4.19.0: - resolution: { integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg== } - engines: { node: '>=0.8' } + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - bindings@1.5.0: - resolution: { integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== } + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - bl@4.1.0: - resolution: { integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== } + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - blob-util@2.0.2: - resolution: { integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== } + '@webassemblyjs/wasm-edit@1.11.6': + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - bluebird@3.4.7: - resolution: { integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== } + '@webassemblyjs/wasm-gen@1.11.6': + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - bluebird@3.7.2: - resolution: { integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== } + '@webassemblyjs/wasm-opt@1.11.6': + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - body-parser@1.20.2: - resolution: { integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + '@webassemblyjs/wasm-parser@1.11.6': + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - bonjour-service@1.2.1: - resolution: { integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== } + '@webassemblyjs/wast-printer@1.11.6': + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} - boolbase@1.0.0: - resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== } + '@webpack-cli/configtest@2.1.1': + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x - bowser@2.11.0: - resolution: { integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== } + '@webpack-cli/info@2.0.2': + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x - boxen@6.2.1: - resolution: { integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + '@webpack-cli/serve@2.0.5': + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true - boxen@7.1.1: - resolution: { integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== } - engines: { node: '>=14.16' } + '@xenova/transformers@2.17.1': + resolution: {integrity: sha512-zo702tQAFZXhzeD2GCYUNUqeqkoueOdiSbQWa4s0q7ZE4z8WBIwIsMMPGobpgdqjQ2u0Qulo08wuqVEUrBXjkQ==} - bplist-parser@0.2.0: - resolution: { integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== } - engines: { node: '>= 5.10.0' } + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} - brace-expansion@1.1.11: - resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - brace-expansion@2.0.1: - resolution: { integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== } + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - braces@1.8.5: - resolution: { integrity: sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== } - engines: { node: '>=0.10.0' } + '@zilliz/milvus2-sdk-node@2.3.5': + resolution: {integrity: sha512-bWbQnhvu+7jZXoqI+qySycwph3vloy0LDV54TBY4wRmu6HhMlqIqyIiI8sQNeSJFs8M1jHg1PlmhE/dvckA1bA==} - braces@2.3.2: - resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } - engines: { node: '>=0.10.0' } + '@zilliz/milvus2-sdk-node@2.4.2': + resolution: {integrity: sha512-fkPu7XXzfUvHoCnSPVOjqQpWuSnnn9x2NMmmCcIOyRzMeXIsrz4Mf/+M7LUzmT8J9F0Khx65B0rJgCu27YzWQw==} - braces@3.0.2: - resolution: { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } - engines: { node: '>=8' } + aai-embed-react@1.0.8: + resolution: {integrity: sha512-lZ/C3oh22nWaDlVEfZd/ayIqRkERPGCbfVEV0uaZSneSOvt50aTjyXMDia3Bvb8WPr/hvFHH5RVtJ+i/BagwYQ==} + peerDependencies: + aai-embed: '*' + react: 18.x - browser-process-hrtime@1.0.0: - resolution: { integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== } + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead - browserslist@4.23.0: - resolution: { integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - browserslist@4.23.3: - resolution: { integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} - bs-logger@0.2.6: - resolution: { integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== } - engines: { node: '>= 6' } + abortcontroller-polyfill@1.7.5: + resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + deprecated: package has been renamed to acorn-import-attributes + peerDependencies: + acorn: ^8 + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + add@2.0.6: + resolution: {integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==} + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + afinn-165-financialmarketnews@3.0.0: + resolution: {integrity: sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==} + + afinn-165@1.0.4: + resolution: {integrity: sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ai@3.2.22: + resolution: {integrity: sha512-2u2YT6cf/bTRexUtSiSDco/3/z/xlQ9iiW3y2aH05RwDlj9Q6rpALsTdjRNcglI+OBPaXUEORB/bD1dRwxob6Q==} + engines: {node: '>=18'} + peerDependencies: + openai: 4.82.0 + react: ^18 || ^19 + svelte: ^3.0.0 || ^4.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + openai: + optional: true + react: + optional: true + svelte: + optional: true + zod: + optional: true - bser@2.1.1: - resolution: { integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== } + airtable@0.11.6: + resolution: {integrity: sha512-Na67L2TO1DflIJ1yOGhQG5ilMfL2beHpsR+NW/jhaYOa4QcoxZOtDFs08cpSd1tBMsLpz5/rrz/VMX/pGL/now==} + engines: {node: '>=8.0.0'} - bson-objectid@2.0.4: - resolution: { integrity: sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ== } + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - bson@6.4.0: - resolution: { integrity: sha512-6/gSSEdbkuFlSb+ufj5jUSU4+wo8xQOwm2bDSqwmxiPE17JTpsP63eAwoN8iF8Oy4gJYj+PAL3zdRCTdaw5Y1g== } - engines: { node: '>=16.20.1' } - deprecated: a critical bug affecting zSeries s390x big-endian systems is fixed in bson@6.5.0 + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 - bson@6.7.0: - resolution: { integrity: sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ== } - engines: { node: '>=16.20.1' } + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 - buffer-crc32@0.2.13: - resolution: { integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== } + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - buffer-equal-constant-time@1.0.1: - resolution: { integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== } + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - buffer-equal@1.0.1: - resolution: { integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== } - engines: { node: '>=0.4' } + algoliasearch-helper@3.22.4: + resolution: {integrity: sha512-fvBCywguW9f+939S6awvRMstqMF1XXcd2qs1r1aGqL/PJ1go/DqN06tWmDVmhCDqBJanm++imletrQWf0G2S1g==} + peerDependencies: + algoliasearch: '>= 3.1 < 6' - buffer-from@1.1.2: - resolution: { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== } + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - buffer-writer@2.0.0: - resolution: { integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== } - engines: { node: '>=4' } + already@2.2.1: + resolution: {integrity: sha512-qk6RIVMS/R1yTvBzfIL1T76PsIL7DIVCINoLuFw2YXKLpLtsTobqdChMs8m3OhuPS3CEE3+Ra5ibYiqdyogbsQ==} - buffer@4.9.2: - resolution: { integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== } + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - buffer@5.7.1: - resolution: { integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== } + ansi-colors@1.1.0: + resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} + engines: {node: '>=0.10.0'} - buffer@6.0.3: - resolution: { integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== } + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} - bufferutil@4.0.8: - resolution: { integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== } - engines: { node: '>=6.14.2' } + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} - builtin-modules@3.3.0: - resolution: { integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== } - engines: { node: '>=6' } + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} - builtins@1.0.3: - resolution: { integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== } + ansi-gray@0.1.1: + resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} + engines: {node: '>=0.10.0'} - builtins@5.0.1: - resolution: { integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== } + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true - bundle-name@3.0.0: - resolution: { integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== } - engines: { node: '>=12' } + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} - bundle-require@4.2.1: - resolution: { integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - peerDependencies: - esbuild: '>=0.17' + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - busboy@1.6.0: - resolution: { integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== } - engines: { node: '>=10.16.0' } + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} - bytes@3.0.0: - resolution: { integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== } - engines: { node: '>= 0.8' } + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} - bytes@3.1.2: - resolution: { integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== } - engines: { node: '>= 0.8' } + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} - cac@6.7.14: - resolution: { integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== } - engines: { node: '>=8' } + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - cacache@15.3.0: - resolution: { integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== } - engines: { node: '>= 10' } + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - cacache@16.1.3: - resolution: { integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} - cacache@17.1.4: - resolution: { integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + ansi-wrap@0.1.0: + resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} + engines: {node: '>=0.10.0'} - cache-base@0.8.5: - resolution: { integrity: sha512-19t0n7xdoVr5Q08+6sF85YZ9VuvbpVFq5JLm0gcsRmCvTO1Y3duTJGMaOQYf14Ras4o6dEnvoqvjdrUK1tNtgg== } - engines: { node: '>=0.10.0' } + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - cache-base@1.0.1: - resolution: { integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== } - engines: { node: '>=0.10.0' } + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} - cacheable-lookup@5.0.4: - resolution: { integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== } - engines: { node: '>=10.6.0' } + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - cacheable-lookup@7.0.0: - resolution: { integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== } - engines: { node: '>=14.16' } + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - cacheable-request@10.2.14: - resolution: { integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== } - engines: { node: '>=14.16' } + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} - cacheable-request@7.0.4: - resolution: { integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== } - engines: { node: '>=8' } + apify-client@2.9.3: + resolution: {integrity: sha512-qQn1BxNL29cxwFSpgA3oc53i88xdYGtNZfYDFCoi3MJyds1XKx2NDPuf65YwQS/n0Qsfq1uHJqbkqV5oo/FSXw==} - cachedir@2.4.0: - resolution: { integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== } - engines: { node: '>=6' } + app-root-path@3.1.0: + resolution: {integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==} + engines: {node: '>= 6.0.0'} - call-bind@1.0.7: - resolution: { integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== } - engines: { node: '>= 0.4' } + apparatus@0.0.10: + resolution: {integrity: sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==} + engines: {node: '>=0.2.6'} - call-me-maybe@1.0.2: - resolution: { integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== } + append-buffer@1.0.2: + resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} + engines: {node: '>=0.10.0'} - callguard@2.0.0: - resolution: { integrity: sha512-I3nd+fuj20FK1qu00ImrbH+II+8ULS6ioYr9igqR1xyqySoqc3DiHEyUM0mkoAdKeLGg2CtGnO8R3VRQX5krpQ== } + append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} - callsites@3.1.0: - resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } - engines: { node: '>=6' } + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - camel-case@3.0.0: - resolution: { integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== } + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - camel-case@4.1.2: - resolution: { integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== } + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - camelcase-css@2.0.1: - resolution: { integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== } - engines: { node: '>= 6' } + 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. - camelcase@3.0.0: - resolution: { integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== } - engines: { node: '>=0.10.0' } + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. - camelcase@4.1.0: - resolution: { integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== } - engines: { node: '>=4' } + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - camelcase@5.3.1: - resolution: { integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== } - engines: { node: '>=6' } + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - camelcase@6.3.0: - resolution: { integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== } - engines: { node: '>=10' } + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - camelcase@7.0.1: - resolution: { integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== } - engines: { node: '>=14.16' } + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - camelize@1.0.1: - resolution: { integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== } + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - caniuse-api@3.0.0: - resolution: { integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== } + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - caniuse-lite@1.0.30001597: - resolution: { integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w== } + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001658: - resolution: { integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw== } + arr-filter@1.1.2: + resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} + engines: {node: '>=0.10.0'} - canonicalize@1.0.8: - resolution: { integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A== } + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} - canvas@2.11.2: - resolution: { integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== } - engines: { node: '>=6' } + arr-map@2.0.2: + resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} + engines: {node: '>=0.10.0'} - cardinal@2.1.1: - resolution: { integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== } - hasBin: true + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} - case-sensitive-paths-webpack-plugin@2.4.0: - resolution: { integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== } - engines: { node: '>=4' } + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} - caseless@0.12.0: - resolution: { integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== } + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} - ccount@1.1.0: - resolution: { integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== } + array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} - ccount@2.0.1: - resolution: { integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== } + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} - chalk@1.1.3: - resolution: { integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== } - engines: { node: '>=0.10.0' } + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - chalk@2.4.2: - resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } - engines: { node: '>=4' } + array-hyper-unique@2.1.6: + resolution: {integrity: sha512-BdlHRqjKSYs88WFaVNVEc6Kv8ln/FdzCKPbcDPuWs4/EXkQFhnjc8TyR7hnPxRjcjo5LKOhUMGUWpAqRgeJvpA==} - chalk@3.0.0: - resolution: { integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== } - engines: { node: '>=8' } + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} - chalk@4.1.2: - resolution: { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } - engines: { node: '>=10' } + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} - chalk@5.3.0: - resolution: { integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + array-initial@1.1.0: + resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} + engines: {node: '>=0.10.0'} - char-regex@1.0.2: - resolution: { integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== } - engines: { node: '>=10' } + array-keyed-map@2.1.3: + resolution: {integrity: sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA==} - char-regex@2.0.1: - resolution: { integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== } - engines: { node: '>=12.20' } + array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} - character-entities-html4@2.1.0: - resolution: { integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== } - - character-entities-legacy@1.1.4: - resolution: { integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== } + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} - character-entities-legacy@3.0.0: - resolution: { integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== } + array-sort@1.0.0: + resolution: {integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==} + engines: {node: '>=0.10.0'} - character-entities@1.2.4: - resolution: { integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== } + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} - character-entities@2.0.2: - resolution: { integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== } + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} - character-reference-invalid@1.1.4: - resolution: { integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== } + array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + engines: {node: '>= 0.4'} - character-reference-invalid@2.0.1: - resolution: { integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== } + array.prototype.findlast@1.2.4: + resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} + engines: {node: '>= 0.4'} - chardet@0.7.0: - resolution: { integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== } + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} - charenc@0.0.2: - resolution: { integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== } + array.prototype.findlastindex@1.2.4: + resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + engines: {node: '>= 0.4'} - check-more-types@2.24.0: - resolution: { integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== } - engines: { node: '>= 0.8.0' } + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} - check-types@11.2.3: - resolution: { integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== } + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} - cheerio-select@2.1.0: - resolution: { integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== } + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} - cheerio@1.0.0-rc.12: - resolution: { integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== } - engines: { node: '>= 6' } + array.prototype.reduce@1.0.6: + resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} + engines: {node: '>= 0.4'} - chokidar@2.1.8: - resolution: { integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== } - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - chokidar@3.6.0: - resolution: { integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== } - engines: { node: '>= 8.10.0' } - - chownr@1.1.4: - resolution: { integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== } - - chownr@2.0.0: - resolution: { integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== } - engines: { node: '>=10' } - - chromadb@1.7.3: - resolution: { integrity: sha512-3GgvQjpqgk5C89x5EuTDaXKbfrdqYDJ5UVyLQ3ZmwxnpetNc+HhRDGjkvXa5KSvpQ3lmKoyDoqnN4tZepfFkbw== } - engines: { node: '>=14.17.0' } - peerDependencies: - '@google/generative-ai': ^0.15.0 - cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 - openai: 4.51.0 - peerDependenciesMeta: - '@google/generative-ai': - optional: true - cohere-ai: - optional: true - openai: - optional: true - - chromadb@1.8.1: - resolution: { integrity: sha512-NpbYydbg4Uqt/9BXKgkZXn0fqpsh2Z1yjhkhKH+rcHMoq0pwI18BFSU2QU7Fk/ZypwGefW2AvqyE/3ZJIgy4QA== } - engines: { node: '>=14.17.0' } - peerDependencies: - '@google/generative-ai': ^0.15.0 - cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 - openai: 4.51.0 - peerDependenciesMeta: - '@google/generative-ai': - optional: true - cohere-ai: - optional: true - openai: - optional: true - - chrome-trace-event@1.0.3: - resolution: { integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== } - engines: { node: '>=6.0' } - - chromium-bidi@0.4.16: - resolution: { integrity: sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA== } - peerDependencies: - devtools-protocol: '*' - - chromium-bidi@0.4.7: - resolution: { integrity: sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ== } - peerDependencies: - devtools-protocol: '*' - - ci-info@3.9.0: - resolution: { integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== } - engines: { node: '>=8' } - - cjs-module-lexer@1.2.3: - resolution: { integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== } - - class-utils@0.3.6: - resolution: { integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== } - engines: { node: '>=0.10.0' } - - classcat@5.0.4: - resolution: { integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g== } - - classnames@2.5.1: - resolution: { integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== } - - clean-css@5.3.3: - resolution: { integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== } - engines: { node: '>= 10.0' } - - clean-stack@2.2.0: - resolution: { integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== } - engines: { node: '>=6' } - - clean-stack@3.0.1: - resolution: { integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== } - engines: { node: '>=10' } - - cli-boxes@3.0.0: - resolution: { integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== } - engines: { node: '>=10' } - - cli-cursor@1.0.2: - resolution: { integrity: sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A== } - engines: { node: '>=0.10.0' } - - cli-cursor@3.1.0: - resolution: { integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== } - engines: { node: '>=8' } - - cli-cursor@4.0.0: - resolution: { integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - cli-highlight@2.1.11: - resolution: { integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== } - engines: { node: '>=8.0.0', npm: '>=5.0.0' } - hasBin: true - - cli-progress@3.12.0: - resolution: { integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== } - engines: { node: '>=4' } - - cli-spinners@2.9.2: - resolution: { integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== } - engines: { node: '>=6' } - - cli-table3@0.6.4: - resolution: { integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== } - engines: { node: 10.* || >= 12.* } - - cli-table@0.3.11: - resolution: { integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== } - engines: { node: '>= 0.2.0' } - - cli-truncate@2.1.0: - resolution: { integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== } - engines: { node: '>=8' } + array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} - cli-truncate@3.1.0: - resolution: { integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} - cli-width@1.1.1: - resolution: { integrity: sha512-eMU2akIeEIkCxGXUNmDnJq1KzOIiPnJ+rKqRe6hcxE3vIOPvpMrBYOn/Bl7zNlYJj/zQxXquAnozHUCf9Whnsg== } + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} - cli-width@3.0.0: - resolution: { integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== } - engines: { node: '>= 10' } + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} - client-only@0.0.1: - resolution: { integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== } + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} - clipboard@2.0.11: - resolution: { integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== } + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - cliui@3.2.0: - resolution: { integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== } + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - cliui@7.0.4: - resolution: { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } + assemblyai@4.3.2: + resolution: {integrity: sha512-XSrLNA8laggP2P8GswK2HlAdx/uwGQ8Y2O0IkAoOz/OsRE3zBqtcY0RPFB2vQSdVKkHVbDC/S5kcQ8Sp1ABcqA==} + engines: {node: '>=18'} - cliui@8.0.1: - resolution: { integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== } - engines: { node: '>=12' } + assemblyai@4.4.3: + resolution: {integrity: sha512-kciFasQyO+fVxwr2PrrMByFoRRSG4FLwUGXiYJOB9WFd2A121r3nqBwOs4rjkPByxSbIOAQqf/OggnUwWbsNDw==} + engines: {node: '>=18'} - clone-buffer@1.0.0: - resolution: { integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== } - engines: { node: '>= 0.10' } + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} - clone-deep@0.2.4: - resolution: { integrity: sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg== } - engines: { node: '>=0.10.0' } + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} - clone-deep@4.0.1: - resolution: { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } - engines: { node: '>=6' } + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - clone-response@1.0.3: - resolution: { integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== } + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} - clone-stats@0.0.1: - resolution: { integrity: sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA== } + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} - clone-stats@1.0.0: - resolution: { integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== } + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true - clone@1.0.4: - resolution: { integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== } - engines: { node: '>=0.8' } + async-done@1.3.2: + resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} + engines: {node: '>= 0.10'} - clone@2.1.2: - resolution: { integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== } - engines: { node: '>=0.8' } + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - cloneable-readable@1.1.3: - resolution: { integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== } + async-mutex@0.4.1: + resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} - clsx@1.2.1: - resolution: { integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== } - engines: { node: '>=6' } + async-mutex@0.5.0: + resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} - clsx@2.1.0: - resolution: { integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== } - engines: { node: '>=6' } + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - cluster-key-slot@1.1.2: - resolution: { integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== } - engines: { node: '>=0.10.0' } + async-settle@1.0.0: + resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} + engines: {node: '>= 0.10'} - cmake-js@7.3.0: - resolution: { integrity: sha512-dXs2zq9WxrV87bpJ+WbnGKv8WUBXDw8blNiwNHoRe/it+ptscxhQHKB1SJXa1w+kocLMeP28Tk4/eTCezg4o+w== } - engines: { node: '>= 14.15.0' } - hasBin: true + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - cmd-shim@5.0.0: - resolution: { integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - co@4.6.0: - resolution: { integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== } - engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - coa@2.0.2: - resolution: { integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== } - engines: { node: '>= 4.0' } + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} - code-point-at@1.1.0: - resolution: { integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== } - engines: { node: '>=0.10.0' } + atlassian-jwt@2.0.3: + resolution: {integrity: sha512-G9oO3HHS1UKgsLRXj6nNKv2TY6g3PleBCdzHwbFeVKg+18GBFIMRz+ApxuOuWAgcL7RngNFF5rGNtw1Ss3hvTg==} + engines: {node: '>= 0.4.0'} - code-red@1.0.4: - resolution: { integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw== } + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true - codemirror@6.0.1: - resolution: { integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== } + autoprefixer@10.4.14: + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 - codsen-utils@1.6.4: - resolution: { integrity: sha512-PDyvQ5f2PValmqZZIJATimcokDt4JjIev8cKbZgEOoZm+U1IJDYuLeTcxZPQdep99R/X0RIlQ6ReQgPOVnPbNw== } - engines: { node: '>=14.18.0' } + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 - cohere-ai@6.2.2: - resolution: { integrity: sha512-+Tq+4e8N/YWKJqFpWaULsfbZR/GOvGh8WWYFKR1bpipu8bCok3VcbTPnBmIToQiIqOgFpGk3HsA4b0guVyL3vg== } + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} - cohere-ai@7.10.0: - resolution: { integrity: sha512-HmPyn+DOM9yUv20oM1xlQSZWtFSAKbS8nqtstGKdjX9DK5zTiQXwpwsP7Il5l66jx2TB8NyNXLujmuw0MTgmSQ== } + aws-crt@1.21.3: + resolution: {integrity: sha512-oaiP5zoPkXwbM9T3nwSgq6CBZWx0501iefLPg12FODniIgqGMyzbMXHYC+fxbCoP5SOQVmCwtAfbNuIG5bFENg==} - collapse-white-space@2.1.0: - resolution: { integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== } + aws-sdk@2.1575.0: + resolution: {integrity: sha512-q33w5NN057CYOdcbxpKAgrb7CUSPrtPBxGGzgIo44y1Fi1iEXDawMYcahu5cwSfD6NFzvZkPz2a5Eo1Fu3Az8A==} + engines: {node: '>= 10.0.0'} - collect-v8-coverage@1.0.2: - resolution: { integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== } + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - collection-map@1.0.0: - resolution: { integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA== } - engines: { node: '>=0.10.0' } + aws-ssl-profiles@1.1.2: + resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} + engines: {node: '>= 6.0.0'} - collection-visit@0.2.3: - resolution: { integrity: sha512-V88PJOCqJfsZS45YBELDgmhQkECokQAAr9XR4hT6eFkFsAPsCsk3EoDHSuBPYzygjquGM/0KF4vdwTiQO6lbdw== } - engines: { node: '>=0.10.0' } + aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - collection-visit@1.0.0: - resolution: { integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== } - engines: { node: '>=0.10.0' } + axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} - color-convert@1.9.3: - resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } + axe-core@4.8.4: + resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} + engines: {node: '>=4'} - color-convert@2.0.1: - resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } - engines: { node: '>=7.0.0' } + axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} - color-name@1.1.3: - resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } + axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - color-name@1.1.4: - resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + babel-code-frame@6.26.0: + resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - color-string@1.9.1: - resolution: { integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== } + babel-core@6.26.3: + resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} + + babel-generator@6.26.1: + resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} + + babel-helpers@6.24.1: + resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-loader@8.3.0: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-loader@9.1.3: + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-messages@6.23.0: + resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-jsx-dom-expressions@0.36.18: + resolution: {integrity: sha512-8K0CHgzNMB0+1OC+GQf1O49Nc6DfHAoWDjY4YTW3W/3il5KrDKAj65723oPmya68kKKOkqDKuz+Zh1u7VFHthw==} + peerDependencies: + '@babel/core': ^7.20.12 + + babel-plugin-lodash@3.3.4: + resolution: {integrity: sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} - color-support@1.1.3: - resolution: { integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== } - hasBin: true + babel-plugin-named-asset-import@0.3.8: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 - color@3.2.1: - resolution: { integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== } + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - color@4.2.3: - resolution: { integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== } - engines: { node: '>=12.5.0' } + babel-plugin-polyfill-corejs2@0.4.9: + resolution: {integrity: sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - colord@2.9.3: - resolution: { integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== } + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - colorette@2.0.20: - resolution: { integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== } + babel-plugin-polyfill-corejs3@0.9.0: + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - colors@1.0.3: - resolution: { integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== } - engines: { node: '>=0.1.90' } + babel-plugin-polyfill-regenerator@0.5.5: + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - colorspace@1.1.4: - resolution: { integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== } + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - combine-promises@1.2.0: - resolution: { integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== } - engines: { node: '>=10' } + babel-plugin-styled-components@2.1.4: + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' - combined-stream@1.0.8: - resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== } - engines: { node: '>= 0.8' } + babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 - comma-separated-tokens@1.0.8: - resolution: { integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== } + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 - comma-separated-tokens@2.0.3: - resolution: { integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== } + 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 - commander@10.0.1: - resolution: { integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== } - engines: { node: '>=14' } + babel-preset-react-app@10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} - commander@11.0.0: - resolution: { integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== } - engines: { node: '>=16' } + babel-preset-solid@1.7.1: + resolution: {integrity: sha512-a4TSLrEKIscsTIEBVo9fuWSdBQjEBrkQmNzIvXd26MO1Zyqdts+VEMy2k/OhfH0/L9ZY0ELLrTcij1IMDxVldQ==} + peerDependencies: + '@babel/core': ^7.0.0 - commander@2.20.3: - resolution: { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } + babel-register@6.26.0: + resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} - commander@4.1.1: - resolution: { integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== } - engines: { node: '>= 6' } + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - commander@5.1.0: - resolution: { integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== } - engines: { node: '>= 6' } + babel-template@6.26.0: + resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} - commander@6.2.1: - resolution: { integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== } - engines: { node: '>= 6' } + babel-traverse@6.26.0: + resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} - commander@7.1.0: - resolution: { integrity: sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== } - engines: { node: '>= 10' } + babel-types@6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - commander@7.2.0: - resolution: { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } - engines: { node: '>= 10' } + babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true - commander@8.3.0: - resolution: { integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== } - engines: { node: '>= 12' } + bach@1.2.0: + resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} + engines: {node: '>= 0.10'} - commander@9.2.0: - resolution: { integrity: sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== } - engines: { node: ^12.20.0 || >=14 } + bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - commander@9.5.0: - resolution: { integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== } - engines: { node: ^12.20.0 || >=14 } + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - commist@1.1.0: - resolution: { integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg== } + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - common-ancestor-path@1.0.1: - resolution: { integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== } + bare-events@2.2.1: + resolution: {integrity: sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==} - common-config@0.1.1: - resolution: { integrity: sha512-mDp+nqoFbYsHKZfjg8OSb0CYfdPkuoGTMCVKy4ceYHR0EACTLV/qG8Q4cih2c/0IleQ7SISiqWqLMLXXZnJ2FA== } - engines: { node: '>=0.10.0' } - hasBin: true + bare-fs@2.2.1: + resolution: {integrity: sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==} - common-path-prefix@3.0.0: - resolution: { integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== } + bare-os@2.2.0: + resolution: {integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==} - common-tags@1.8.2: - resolution: { integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== } - engines: { node: '>=4.0.0' } + bare-path@2.1.0: + resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} - commondir@1.0.1: - resolution: { integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== } + base-64@0.1.0: + resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} - component-emitter@1.3.1: - resolution: { integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== } + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - component-register@0.8.3: - resolution: { integrity: sha512-/0u8ov0WPWi2FL78rgB9aFOcfY8pJT4jP/l9NTOukGNLVQ6hk35sEJE1RkEnNQU3yk48Qr7HlDQjRQKEVfgeWg== } + base16@1.0.0: + resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - composer@0.13.0: - resolution: { integrity: sha512-8bW8vzd0YdwjBTbbHmUV3fb1jGFlczUEwti3dbdogI+r/igv2yyLqZFh9IyQv4+gK3k1kdNGVrf6Af5BY8qB3Q== } - engines: { node: '>=4.0' } + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - compressible@2.0.18: - resolution: { integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== } - engines: { node: '>= 0.6' } + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} - compression@1.7.4: - resolution: { integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== } - engines: { node: '>= 0.8.0' } + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} - concat-map@0.0.1: - resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} - concat-stream@1.6.2: - resolution: { integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== } - engines: { '0': node >= 0.8 } + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} - concat-stream@2.0.0: - resolution: { integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== } - engines: { '0': node >= 6.0 } + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} - concat-with-sourcemaps@1.1.0: - resolution: { integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== } + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - concurrently@7.6.0: - resolution: { integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== } - engines: { node: ^12.20.0 || ^14.13.0 || >=16.0.0 } - hasBin: true + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - config-chain@1.1.13: - resolution: { integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== } + before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - configstore@6.0.0: - resolution: { integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== } - engines: { node: '>=12' } + bfj@7.1.0: + resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} + engines: {node: '>= 8.0.0'} - confusing-browser-globals@1.0.11: - resolution: { integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== } + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - connect-history-api-fallback@2.0.0: - resolution: { integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== } - engines: { node: '>=0.8' } + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} - consola@2.15.3: - resolution: { integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== } + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - consola@3.2.3: - resolution: { integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== } - engines: { node: ^14.18.0 || >=16.10.0 } + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - console-control-strings@1.1.0: - resolution: { integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== } + bin-links@3.0.3: + resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - contains-path@0.1.0: - resolution: { integrity: sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== } - engines: { node: '>=0.10.0' } + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} - content-disposition@0.5.2: - resolution: { integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== } - engines: { node: '>= 0.6' } + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} - content-disposition@0.5.4: - resolution: { integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== } - engines: { node: '>= 0.6' } + binary-search@1.3.6: + resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} - content-type@1.0.5: - resolution: { integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== } - engines: { node: '>= 0.6' } + binaryextensions@4.19.0: + resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} + engines: {node: '>=0.8'} - contentful-management@10.46.4: - resolution: { integrity: sha512-swOTlKO6AeCRnD5w237ey6wKDXty8shFVm0AisKO2w5seQINlFytgCkZd89E0lxjg4zgjb9maa7AScUtyQUd5w== } - engines: { node: '>=14' } + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - contentful-management@11.31.1: - resolution: { integrity: sha512-4QY5E+sshln13+4dS3aVxyCJkB5YPZl5tRj7eo60U8SudF6BpkAJWRY9hKTWOpiWGGHS7YsAw/oARs1cYqInMw== } - engines: { node: '>=18' } + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} - contentful-resolve-response@1.9.0: - resolution: { integrity: sha512-LtgPx/eREpHXOX82od48zFZbFhXzYw/NfUoYK4Qf1OaKpLzmYPE4cAY4aD+rxVgnMM5JN/mQaPCsofUlJRYEUA== } - engines: { node: '>=4.7.2' } + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - contentful-sdk-core@8.3.1: - resolution: { integrity: sha512-HYy4ecFA76ERxz7P0jW7hgDcL8jH+bRckv2QfAwQ4k1yPP9TvxpZwrKnlLM69JOStxVkCXP37HvbjbFnjcoWdg== } - engines: { node: '>=18' } + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} - contentful@10.13.2: - resolution: { integrity: sha512-59qQqHKAjd2Bc1XV1pqyHzhwHg4X3BMZKqPkPMptPwoXUYjion+1zytFuXyt5YsNMKVvImvFfZVab8ZOrbI6Iw== } - engines: { node: '>=18' } + bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} - convert-source-map@1.9.0: - resolution: { integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== } + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - convert-source-map@2.0.0: - resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } + body-parser@2.0.2: + resolution: {integrity: sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==} + engines: {node: '>=18'} - cookie-es@1.2.2: - resolution: { integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== } + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} - cookie-signature@1.0.6: - resolution: { integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== } + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - cookie-signature@1.0.7: - resolution: { integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== } + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - cookie@0.4.2: - resolution: { integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== } - engines: { node: '>= 0.6' } + bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - cookie@0.5.0: - resolution: { integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== } - engines: { node: '>= 0.6' } + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - cookie@0.6.0: - resolution: { integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== } - engines: { node: '>= 0.6' } + boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cookie@0.7.2: - resolution: { integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== } - engines: { node: '>= 0.6' } + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} - copy-descriptor@0.1.1: - resolution: { integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== } - engines: { node: '>=0.10.0' } + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} - copy-props@2.0.5: - resolution: { integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw== } + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - copy-task@0.1.0: - resolution: { integrity: sha512-Idcf7BdeyJY8kSQodguY8jevkP8CuB22S9Hr5blRqwEyO75yuZEJQbzJ755Q9vZREnCQ5sfOIRxjZWbUq2+K0g== } - engines: { node: '>=0.10.0' } + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - copy-text-to-clipboard@3.2.0: - resolution: { integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== } - engines: { node: '>=12' } + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - copy-to-clipboard@3.3.3: - resolution: { integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== } + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - copy-webpack-plugin@11.0.0: - resolution: { integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== } - engines: { node: '>= 14.15.0' } - peerDependencies: - webpack: ^5.1.0 + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - core-js-compat@3.36.0: - resolution: { integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== } + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - core-js-compat@3.37.0: - resolution: { integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== } + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - core-js-pure@3.36.0: - resolution: { integrity: sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ== } + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} - core-js@2.6.12: - resolution: { integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== } - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - core-js@3.36.0: - resolution: { integrity: sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== } + bson@6.4.0: + resolution: {integrity: sha512-6/gSSEdbkuFlSb+ufj5jUSU4+wo8xQOwm2bDSqwmxiPE17JTpsP63eAwoN8iF8Oy4gJYj+PAL3zdRCTdaw5Y1g==} + engines: {node: '>=16.20.1'} + deprecated: a critical bug affecting zSeries s390x big-endian systems is fixed in bson@6.5.0 - core-util-is@1.0.2: - resolution: { integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== } + bson@6.7.0: + resolution: {integrity: sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==} + engines: {node: '>=16.20.1'} + deprecated: a critical bug affecting only useBigInt64=true deserialization usage is fixed in bson@6.10.3 - core-util-is@1.0.3: - resolution: { integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== } + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - cors@2.8.5: - resolution: { integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== } - engines: { node: '>= 0.10' } + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - cosmiconfig@6.0.0: - resolution: { integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== } - engines: { node: '>=8' } + buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} - cosmiconfig@7.1.0: - resolution: { integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== } - engines: { node: '>=10' } - - cosmiconfig@8.1.3: - resolution: { integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== } - engines: { node: '>=14' } - - cosmiconfig@8.2.0: - resolution: { integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== } - engines: { node: '>=14' } - - 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 - - couchbase@4.3.1: - resolution: { integrity: sha512-WHD8xBQgDlNO2/qmtMYi3owcUC+RJvIoCt1FBWG7QslXedvbY9+AMBDOkpAz3hdIHXZ/ocs2DpOXHSpHJb6J2w== } - engines: { node: '>=16' } - - 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== } - - crelt@1.0.6: - resolution: { integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== } - - cross-fetch@3.1.5: - resolution: { integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== } - - cross-fetch@3.1.8: - resolution: { integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== } - - cross-fetch@4.0.0: - resolution: { integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== } - - cross-spawn-async@2.2.5: - resolution: { integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ== } - deprecated: cross-spawn no longer requires a build toolchain, use it instead - - cross-spawn@7.0.3: - resolution: { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } - engines: { node: '>= 8' } - - crossws@0.2.4: - resolution: { integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== } - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - - crypt@0.0.2: - resolution: { integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== } - - crypto-js@4.2.0: - resolution: { integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== } - - crypto-random-string@2.0.0: - resolution: { integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== } - engines: { node: '>=8' } - - crypto-random-string@4.0.0: - resolution: { integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== } - engines: { node: '>=12' } - - css-blank-pseudo@3.0.3: - resolution: { integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== } - engines: { node: ^12 || ^14 || >=16 } - hasBin: true - peerDependencies: - postcss: ^8.4 - - css-color-keywords@1.0.0: - resolution: { integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== } - engines: { node: '>=4' } - - css-declaration-sorter@6.4.1: - resolution: { integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== } - engines: { node: ^10 || ^12 || >=14 } - peerDependencies: - postcss: ^8.0.9 - - css-declaration-sorter@7.2.0: - resolution: { integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.0.9 - - css-has-pseudo@3.0.4: - resolution: { integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== } - engines: { node: ^12 || ^14 || >=16 } - hasBin: true - peerDependencies: - postcss: ^8.4 - - css-loader@6.10.0: - resolution: { integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== } - engines: { node: '>= 12.13.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-minimizer-webpack-plugin@3.4.1: - resolution: { integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== } - engines: { node: '>= 12.13.0' } - peerDependencies: - '@parcel/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - - css-minimizer-webpack-plugin@5.0.1: - resolution: { integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== } - engines: { node: '>= 14.15.0' } - peerDependencies: - '@parcel/css': '*' - '@swc/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - lightningcss: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - '@swc/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - - css-prefers-color-scheme@6.0.3: - resolution: { integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== } - engines: { node: ^12 || ^14 || >=16 } - hasBin: true - peerDependencies: - postcss: ^8.4 - - css-select-base-adapter@0.1.1: - resolution: { integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== } - - css-select@2.1.0: - resolution: { integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== } - - css-select@4.3.0: - resolution: { integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== } - - css-select@5.1.0: - resolution: { integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== } - - css-to-react-native@3.2.0: - resolution: { integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== } - - css-tree@1.0.0-alpha.37: - resolution: { integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== } - engines: { node: '>=8.0.0' } - - css-tree@1.1.3: - resolution: { integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== } - engines: { node: '>=8.0.0' } - - css-tree@2.2.1: - resolution: { integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } - - css-tree@2.3.1: - resolution: { integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - - css-what@3.4.2: - resolution: { integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== } - engines: { node: '>= 6' } - - css-what@6.1.0: - resolution: { integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== } - engines: { node: '>= 6' } - - css.escape@1.5.1: - resolution: { integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== } - - cssdb@7.11.2: - resolution: { integrity: sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== } - - cssesc@3.0.0: - resolution: { integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== } - engines: { node: '>=4' } - hasBin: true - - cssnano-preset-advanced@6.1.2: - resolution: { integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - cssnano-preset-default@5.2.14: - resolution: { integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - cssnano-preset-default@6.1.2: - resolution: { integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@3.1.0: - resolution: { integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - cssnano-utils@4.0.2: - resolution: { integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - cssnano@5.1.15: - resolution: { integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - cssnano@6.1.2: - resolution: { integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - csso@4.2.0: - resolution: { integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== } - engines: { node: '>=8.0.0' } - - csso@5.0.5: - resolution: { integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } - - cssom@0.3.8: - resolution: { integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== } - - cssom@0.4.4: - resolution: { integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== } - - cssom@0.5.0: - resolution: { integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== } - - cssstyle@2.3.0: - resolution: { integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== } - engines: { node: '>=8' } - - cssstyle@3.0.0: - resolution: { integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== } - engines: { node: '>=14' } - - csstype@3.1.3: - resolution: { integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== } - - csv-generate@4.4.1: - resolution: { integrity: sha512-O/einO0v4zPmXaOV+sYqGa02VkST4GP5GLpWBNHEouIU7pF3kpGf3D0kCCvX82ydIY4EKkOK+R8b1BYsRXravg== } - - csv-parse@5.5.6: - resolution: { integrity: sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A== } - - csv-parser@3.0.0: - resolution: { integrity: sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ== } - engines: { node: '>= 10' } - hasBin: true - - csv-stringify@6.5.1: - resolution: { integrity: sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ== } - - csv@6.3.10: - resolution: { integrity: sha512-5NYZG4AN2ZUthmNxIudgBEdMPUnbQHu9V4QTzBPqQzUP3KQsFiJo+8HQ0+oVxj1PomIT1/f67VI1QH/hsrZLKA== } - engines: { node: '>= 0.1.90' } - - cwd@0.10.0: - resolution: { integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA== } - engines: { node: '>=0.8' } - - cwd@0.9.1: - resolution: { integrity: sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A== } - engines: { node: '>=0.8' } - - cypress@12.17.4: - resolution: { integrity: sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ== } - engines: { node: ^14.0.0 || ^16.0.0 || >=18.0.0 } - hasBin: true - - cypress@13.13.0: - resolution: { integrity: sha512-ou/MQUDq4tcDJI2FsPaod2FZpex4kpIK43JJlcBgWrX8WX7R/05ZxGTuxedOuZBfxjZxja+fbijZGyxiLP6CFA== } - engines: { node: ^16.0.0 || ^18.0.0 || >=20.0.0 } - hasBin: true - - d3-color@3.1.0: - resolution: { integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== } - engines: { node: '>=12' } - - d3-dispatch@3.0.1: - resolution: { integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== } - engines: { node: '>=12' } - - d3-drag@3.0.0: - resolution: { integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== } - engines: { node: '>=12' } - - d3-dsv@2.0.0: - resolution: { integrity: sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w== } - hasBin: true - - d3-ease@3.0.1: - resolution: { integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== } - engines: { node: '>=12' } - - d3-interpolate@3.0.1: - resolution: { integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== } - engines: { node: '>=12' } - - d3-selection@3.0.0: - resolution: { integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== } - engines: { node: '>=12' } - - d3-timer@3.0.1: - resolution: { integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== } - engines: { node: '>=12' } - - d3-transition@3.0.1: - resolution: { integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== } - engines: { node: '>=12' } - peerDependencies: - d3-selection: 2 - 3 - - d3-zoom@3.0.0: - resolution: { integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== } - engines: { node: '>=12' } - - d@1.0.2: - resolution: { integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== } - engines: { node: '>=0.12' } - - damerau-levenshtein@1.0.8: - resolution: { integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== } - - dargs@7.0.0: - resolution: { integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== } - engines: { node: '>=8' } - - dashdash@1.14.1: - resolution: { integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== } - engines: { node: '>=0.10' } - - data-store@0.16.1: - resolution: { integrity: sha512-tGbl4oVi9UPysie6y6+fuCjUNhaR3KxnuIRV0OMUCwq/wvikmWHXQYALbW/IVQvmxBNbrxUwjG5BWsrjx5v55w== } - engines: { node: '>=0.10.0' } - - data-uri-to-buffer@4.0.1: - resolution: { integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== } - engines: { node: '>= 12' } - - data-uri-to-buffer@6.0.2: - resolution: { integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== } - engines: { node: '>= 14' } - - data-urls@2.0.0: - resolution: { integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== } - engines: { node: '>=10' } - - data-urls@3.0.2: - resolution: { integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== } - engines: { node: '>=12' } - - data-urls@4.0.0: - resolution: { integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== } - engines: { node: '>=14' } - - dataloader@2.2.2: - resolution: { integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== } - - date-fns@2.30.0: - resolution: { integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== } - engines: { node: '>=0.11' } - - dateformat@4.6.3: - resolution: { integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== } - - dayjs@1.11.10: - resolution: { integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== } - - debounce@1.2.1: - resolution: { integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== } - - debug@2.6.9: - resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.6: - resolution: { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debuglog@1.0.1: - resolution: { integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== } - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - decamelize@1.2.0: - resolution: { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } - engines: { node: '>=0.10.0' } - - decimal.js@10.4.3: - resolution: { integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== } - - decode-named-character-reference@1.0.2: - resolution: { integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== } - - decode-uri-component@0.2.2: - resolution: { integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== } - engines: { node: '>=0.10' } - - decode-uri-component@0.4.1: - resolution: { integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ== } - engines: { node: '>=14.16' } - - decompress-response@4.2.1: - resolution: { integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== } - engines: { node: '>=8' } - - decompress-response@6.0.0: - resolution: { integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== } - engines: { node: '>=10' } - - dedent@0.7.0: - resolution: { integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== } - - dedent@1.5.3: - resolution: { integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== } - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-bind@0.3.0: - resolution: { integrity: sha512-SwekOBPDnCT3qhOM78ARzBdPSbNMyQ63F8eZDahBzzVAoqousMhYh3HYIh2pLmhtGcVvO8/SU6B6kMsj0SXb1Q== } - engines: { node: '>=0.10.0' } - - deep-equal@2.2.3: - resolution: { integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== } - engines: { node: '>= 0.4' } - - deep-extend@0.6.0: - resolution: { integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== } - engines: { node: '>=4.0.0' } - - deep-is@0.1.4: - resolution: { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } - - deepmerge@2.2.1: - resolution: { integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== } - engines: { node: '>=0.10.0' } - - deepmerge@4.3.1: - resolution: { integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== } - engines: { node: '>=0.10.0' } - - default-browser-id@3.0.0: - resolution: { integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== } - engines: { node: '>=12' } - - default-browser@3.1.0: - resolution: { integrity: sha512-SOHecvSoairSAWxEHP/0qcsld/KtI3DargfEuELQDyHIYmS2EMgdGhHOTC1GxaYr+NLUV6kDroeiSBfnNHnn8w== } - engines: { node: '>=12' } - - default-compare@1.0.0: - resolution: { integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== } - engines: { node: '>=0.10.0' } - - default-gateway@6.0.3: - resolution: { integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== } - engines: { node: '>= 10' } - - default-resolution@2.0.0: - resolution: { integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ== } - engines: { node: '>= 0.10' } - - defaults-deep@0.2.4: - resolution: { integrity: sha512-V6BtqzcMvn0EPOy7f+SfMhfmTawq+7UQdt9yZH0EBK89+IHo5f+Hse/qzTorAXOBrQpxpwb6cB/8OgtaMrT+Fg== } - engines: { node: '>=0.10.0' } + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - defaults@1.0.4: - resolution: { integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== } + buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} - defer-to-connect@2.0.1: - resolution: { integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== } - engines: { node: '>=10' } + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - define-data-property@1.1.4: - resolution: { integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== } - engines: { node: '>= 0.4' } + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} - define-lazy-prop@2.0.0: - resolution: { integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== } - engines: { node: '>=8' } + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - define-properties@1.2.1: - resolution: { integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== } - engines: { node: '>= 0.4' } + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - define-property@0.2.5: - resolution: { integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== } - engines: { node: '>=0.10.0' } + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} - define-property@1.0.0: - resolution: { integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== } - engines: { node: '>=0.10.0' } + buildcheck@0.0.6: + resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} + engines: {node: '>=10.0.0'} - define-property@2.0.2: - resolution: { integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== } - engines: { node: '>=0.10.0' } + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} - defu@6.1.4: - resolution: { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } + builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - degenerator@5.0.1: - resolution: { integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== } - engines: { node: '>= 14' } + builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - del@6.1.1: - resolution: { integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== } - engines: { node: '>=10' } + bull-board@2.1.3: + resolution: {integrity: sha512-SrmGzrC024OGtK5Wvv/6VhK4s/iq1h0XUrThc0jla8XhEBUdC79UrG24SOXs68zj7yZnFG0/EG330nPf1Pt5UQ==} + deprecated: 2.x is no longer supported, we moved to use @bull-board scope - delayed-stream@1.0.0: - resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== } - engines: { node: '>=0.4.0' } + bullmq@5.41.7: + resolution: {integrity: sha512-eZbKJSx15bflfzKRiR+dKeLTr/M/YKb4cIp73OdU79PEMHQ6aEFUtbG6R+f0KvLLznI/O01G581U2Eqli6S2ew==} - delegate@3.2.0: - resolution: { integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== } + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} - delegates@1.0.0: - resolution: { integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== } + bundle-require@4.2.1: + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' - delimiter-regex@1.3.1: - resolution: { integrity: sha512-NyEdbzFCa0imbFMxQH6X5AB/DxngubpAAiQEqaam+YYcT0gGiM1gFo410HwpiPOruHl8HfFM913tFLjA8kkvHg== } - engines: { node: '>=0.10.0' } + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} - delimiter-regex@2.0.0: - resolution: { integrity: sha512-EtGkq9TgEZlFACc/NvgwIidQ1wkEupWWbAIJTr9gi4TJUZOvHY8TdXd3i8/dan66BufB1/V6bI7rRW/zvGoVKw== } - engines: { node: '>=0.10.0' } + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} - denque@2.1.0: - resolution: { integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== } - engines: { node: '>=0.10' } + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} - depd@1.1.2: - resolution: { integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== } - engines: { node: '>= 0.6' } + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - depd@2.0.0: - resolution: { integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== } - engines: { node: '>= 0.8' } + cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} - deprecation@2.3.1: - resolution: { integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== } + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dequal@2.0.3: - resolution: { integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== } - engines: { node: '>=6' } + cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - destr@2.0.3: - resolution: { integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== } + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} - destroy@1.2.0: - resolution: { integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} - detect-file@1.0.0: - resolution: { integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== } - engines: { node: '>=0.10.0' } + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} - detect-indent@4.0.0: - resolution: { integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== } - engines: { node: '>=0.10.0' } + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} - detect-libc@2.0.2: - resolution: { integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== } - engines: { node: '>=8' } + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: { integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== } - engines: { node: '>=8' } + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} - detect-node@2.1.0: - resolution: { integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== } + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} - detect-port-alt@1.1.6: - resolution: { integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== } - engines: { node: '>= 4.2.1' } - hasBin: true + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} - detect-port@1.6.1: - resolution: { integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== } - engines: { node: '>= 4.0.0' } - hasBin: true + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} - device-detector-js@3.0.3: - resolution: { integrity: sha512-jM89LJAvP6uOd84at8OlD9dWP8KeYCCHUde0RT0HQo/stdoRH4b54Xl/fntx2nEXCmqiFhmo+/cJetS2VGUHPw== } - engines: { node: '>= 8.11.4' } + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} - devlop@1.1.0: - resolution: { integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== } + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - devtools-protocol@0.0.1107588: - resolution: { integrity: sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg== } + callguard@2.0.0: + resolution: {integrity: sha512-I3nd+fuj20FK1qu00ImrbH+II+8ULS6ioYr9igqR1xyqySoqc3DiHEyUM0mkoAdKeLGg2CtGnO8R3VRQX5krpQ==} - devtools-protocol@0.0.1147663: - resolution: { integrity: sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ== } + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - dezalgo@1.0.4: - resolution: { integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== } + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - didyoumean@1.2.2: - resolution: { integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== } + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - diff-match-patch@1.0.5: - resolution: { integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== } + camelcase@3.0.0: + resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} + engines: {node: '>=0.10.0'} - diff-sequences@27.5.1: - resolution: { integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} - diff-sequences@29.6.3: - resolution: { integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} - diff@4.0.2: - resolution: { integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== } - engines: { node: '>=0.3.1' } + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} - diff@5.2.0: - resolution: { integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== } - engines: { node: '>=0.3.1' } + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} - digest-fetch@1.3.0: - resolution: { integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA== } + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - dingbat-to-unicode@1.0.1: - resolution: { integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w== } + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - dir-glob@3.0.1: - resolution: { integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== } - engines: { node: '>=8' } + caniuse-lite@1.0.30001597: + resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} - dlv@1.1.3: - resolution: { integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== } + caniuse-lite@1.0.30001658: + resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} - dns-packet@5.6.1: - resolution: { integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== } - engines: { node: '>=6' } + caniuse-lite@1.0.30001701: + resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} - doctrine@2.1.0: - resolution: { integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== } - engines: { node: '>=0.10.0' } + canonicalize@1.0.8: + resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==} - doctrine@3.0.0: - resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } - engines: { node: '>=6.0.0' } + canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} - dom-accessibility-api@0.5.16: - resolution: { integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== } + cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true - dom-converter@0.2.0: - resolution: { integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== } + case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} - dom-helpers@5.2.1: - resolution: { integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== } + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dom-serializer@0.2.2: - resolution: { integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== } + ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - dom-serializer@1.4.1: - resolution: { integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== } + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dom-serializer@2.0.0: - resolution: { integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== } + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} - domelementtype@1.3.1: - resolution: { integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== } + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} - domelementtype@2.3.0: - resolution: { integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== } + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} - domexception@2.0.1: - resolution: { integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== } - engines: { node: '>=8' } - deprecated: Use your platform's native DOMException instead + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - domexception@4.0.0: - resolution: { integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== } - engines: { node: '>=12' } - deprecated: Use your platform's native DOMException instead + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - domhandler@4.3.1: - resolution: { integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== } - engines: { node: '>= 4' } + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} - domhandler@5.0.3: - resolution: { integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== } - engines: { node: '>= 4' } + char-regex@2.0.1: + resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} + engines: {node: '>=12.20'} - domutils@1.7.0: - resolution: { integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== } + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - domutils@2.8.0: - resolution: { integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== } + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - domutils@3.1.0: - resolution: { integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== } + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dot-case@3.0.4: - resolution: { integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== } + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - dot-prop@6.0.1: - resolution: { integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== } - engines: { node: '>=10' } + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dotenv-cli@7.4.2: - resolution: { integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA== } - hasBin: true + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - dotenv-expand@10.0.0: - resolution: { integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== } - engines: { node: '>=12' } + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dotenv-expand@5.1.0: - resolution: { integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== } + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dotenv@10.0.0: - resolution: { integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== } - engines: { node: '>=10' } + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dotenv@16.0.3: - resolution: { integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== } - engines: { node: '>=12' } + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} - dotenv@16.4.5: - resolution: { integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== } - engines: { node: '>=12' } + check-types@11.2.3: + resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} - duck@0.1.12: - resolution: { integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg== } + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - duplexer@0.1.2: - resolution: { integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== } + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} - duplexify@3.7.1: - resolution: { integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== } + chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - duplexify@4.1.3: - resolution: { integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== } + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} - e2b@0.16.1: - resolution: { integrity: sha512-2L1R/REEB+EezD4Q4MmcXXNATjvCYov2lv/69+PY6V95+wl1PZblIMTYAe7USxX6P6sqANxNs+kXqZr6RvXkSw== } - engines: { node: '>=18' } + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - each-props@1.3.2: - resolution: { integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== } + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} - eastasianwidth@0.2.0: - resolution: { integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== } + chromadb@1.10.5: + resolution: {integrity: sha512-+IeTjjf44pKUY3vp1BacwO2tFAPcWCd64zxPZZm98dVj/kbSBeaHKB2D6eX7iRLHS1PTVASuqoR6mAJ+nrsTBg==} + engines: {node: '>=14.17.0'} + peerDependencies: + '@google/generative-ai': ^0.22.0 + cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 + ollama: ^0.5.0 + openai: 4.82.0 + voyageai: ^0.0.3-1 + peerDependenciesMeta: + '@google/generative-ai': + optional: true + cohere-ai: + optional: true + ollama: + optional: true + openai: + optional: true + voyageai: + optional: true - ecc-jsbn@0.1.2: - resolution: { integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== } + chromadb@1.7.3: + resolution: {integrity: sha512-3GgvQjpqgk5C89x5EuTDaXKbfrdqYDJ5UVyLQ3ZmwxnpetNc+HhRDGjkvXa5KSvpQ3lmKoyDoqnN4tZepfFkbw==} + engines: {node: '>=14.17.0'} + peerDependencies: + '@google/generative-ai': ^0.22.0 + cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 + openai: 4.82.0 + peerDependenciesMeta: + '@google/generative-ai': + optional: true + cohere-ai: + optional: true + openai: + optional: true - ecdsa-sig-formatter@1.0.11: - resolution: { integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== } + chromadb@1.8.1: + resolution: {integrity: sha512-NpbYydbg4Uqt/9BXKgkZXn0fqpsh2Z1yjhkhKH+rcHMoq0pwI18BFSU2QU7Fk/ZypwGefW2AvqyE/3ZJIgy4QA==} + engines: {node: '>=14.17.0'} + peerDependencies: + '@google/generative-ai': ^0.22.0 + cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 + openai: 4.82.0 + peerDependenciesMeta: + '@google/generative-ai': + optional: true + cohere-ai: + optional: true + openai: + optional: true - ee-first@1.1.1: - resolution: { integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== } + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} - ejs@3.1.10: - resolution: { integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== } - engines: { node: '>=0.10.0' } - hasBin: true + chromium-bidi@0.4.16: + resolution: {integrity: sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==} + peerDependencies: + devtools-protocol: '*' - ejs@3.1.9: - resolution: { integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== } - engines: { node: '>=0.10.0' } - hasBin: true + chromium-bidi@0.4.7: + resolution: {integrity: sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==} + peerDependencies: + devtools-protocol: '*' - electron-to-chromium@1.4.701: - resolution: { integrity: sha512-K3WPQ36bUOtXg/1+69bFlFOvdSm0/0bGqmsfPDLRXLanoKXdA+pIWuf/VbA9b+2CwBFuONgl4NEz4OEm+OJOKA== } + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} - electron-to-chromium@1.5.17: - resolution: { integrity: sha512-Q6Q+04tjC2KJ8qsSOSgovvhWcv5t+SmpH6/YfAWmhpE5/r+zw6KQy1/yWVFFNyEBvy68twTTXr2d5eLfCq7QIw== } + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - emittery@0.10.2: - resolution: { integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== } - engines: { node: '>=12' } + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} - emittery@0.13.1: - resolution: { integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== } - engines: { node: '>=12' } + classcat@5.0.4: + resolution: {integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==} - emittery@0.8.1: - resolution: { integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== } - engines: { node: '>=10' } + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - emoji-regex@8.0.0: - resolution: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} - emoji-regex@9.2.2: - resolution: { integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== } + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} - emojilib@2.4.0: - resolution: { integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== } + clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} - emojis-list@3.0.0: - resolution: { integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== } - engines: { node: '>= 4' } + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} - emoticon@4.1.0: - resolution: { integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ== } + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} - empty-dir@0.2.1: - resolution: { integrity: sha512-0f1naHGJh4K6iVG28nRN7SCdfzT18OlpGzHmXw3JGwREb8qmtibHdmRgqx08u4sQfDadezK7kpU3bcIZNSwoZw== } - engines: { node: '>= 0.8.0' } + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - en-route@0.7.5: - resolution: { integrity: sha512-WjnZ2HzvoztSL/NhKYmlN86tSP7VkOTN0Ck4FBJUsvTfLQOlULZak/1wcUArcdenvT9mNS3NzQ+41lqKf/gaGQ== } - engines: { node: '>=0.10.0' } + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true - enabled@2.0.0: - resolution: { integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== } + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} - encodeurl@1.0.2: - resolution: { integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== } - engines: { node: '>= 0.8' } + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} - encoding@0.1.13: - resolution: { integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== } + cli-table3@0.6.4: + resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} + engines: {node: 10.* || >= 12.*} - end-of-stream@0.1.5: - resolution: { integrity: sha512-go5TQkd0YRXYhX+Lc3UrXkoKU5j+m72jEP5lHWr2Nh82L8wfZtH8toKgcg4T10o23ELIMGXQdwCbl+qAXIPDrw== } + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} - end-of-stream@1.4.4: - resolution: { integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== } + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} - engine-base@0.1.3: - resolution: { integrity: sha512-CdNgUJcWgD9OsZ4vDFDmQB1/sN+UM0hEaDcbTZ2Ya/eMTkgCbdRLGvNuRE1UbN+AQJNo8Sm6iT327ULB7ynqnQ== } - engines: { node: '>=0.10.0' } + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - engine-cache@0.19.4: - resolution: { integrity: sha512-PNhE008O6X+7VggZSVe0+fZcafIAjVHWuU+iLIbeKXGGKzjb05Y8ht0l1O9sIusrULRsNq/FcYVPoqoNz7k4wg== } - engines: { node: '>=0.10.0' } + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} - engine-utils@0.1.1: - resolution: { integrity: sha512-5IdkZiV3qEGS3STfaRfeQsQ93Sokg9cEK7rdfjCGZFY6O/iTdq+d0obwqjkmv4fTSbTqEgYV+J3TeSzkq9GP5A== } - engines: { node: '>=0.10.0' } + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - engine.io-client@6.5.3: - resolution: { integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== } + cliui@3.2.0: + resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - engine.io-parser@5.2.2: - resolution: { integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== } - engines: { node: '>=10.0.0' } + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - engine.io@6.5.4: - resolution: { integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== } - engines: { node: '>=10.2.0' } + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} - engine@0.1.12: - resolution: { integrity: sha512-1+oxmZV5nKFhoR3QkwIbyHKSVbMuNgU8+oxcx4Af1kpxuSjDD0nL3pKKJtY1mGjAPqSAwNeDEHzD94NR5LP5rg== } - engines: { node: '>=0.10.0' } + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} - enhanced-resolve@5.16.0: - resolution: { integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== } - engines: { node: '>=10.13.0' } + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} - enquirer@2.4.1: - resolution: { integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== } - engines: { node: '>=8.6' } + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - entities@2.2.0: - resolution: { integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== } + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} - entities@4.5.0: - resolution: { integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== } - engines: { node: '>=0.12' } + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} - env-paths@2.2.1: - resolution: { integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== } - engines: { node: '>=6' } + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} - envinfo@7.13.0: - resolution: { integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== } - engines: { node: '>=4' } - hasBin: true + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} - err-code@2.0.3: - resolution: { integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== } + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} - error-ex@1.3.2: - resolution: { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== } + clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} - error-stack-parser@2.1.4: - resolution: { integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== } + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} - error-symbol@0.1.0: - resolution: { integrity: sha512-VyjaKxUmeDX/m2lxm/aknsJ1GWDWUO2Ze2Ad8S1Pb9dykAm9TjSKp5CjrNyltYqZ5W/PO6TInAmO2/BfwMyT1g== } - engines: { node: '>=0.10.0' } + cmake-js@7.3.0: + resolution: {integrity: sha512-dXs2zq9WxrV87bpJ+WbnGKv8WUBXDw8blNiwNHoRe/it+ptscxhQHKB1SJXa1w+kocLMeP28Tk4/eTCezg4o+w==} + engines: {node: '>= 14.15.0'} + hasBin: true - error@10.4.0: - resolution: { integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== } + cmd-shim@5.0.0: + resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - es-abstract@1.22.5: - resolution: { integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w== } - engines: { node: '>= 0.4' } + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - es-array-method-boxes-properly@1.0.0: - resolution: { integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== } + coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} - es-define-property@1.0.0: - resolution: { integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== } - engines: { node: '>= 0.4' } + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} - es-errors@1.3.0: - resolution: { integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== } - engines: { node: '>= 0.4' } + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - es-get-iterator@1.1.3: - resolution: { integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== } + codemirror@6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} - es-iterator-helpers@1.0.17: - resolution: { integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ== } - engines: { node: '>= 0.4' } + codsen-utils@1.6.4: + resolution: {integrity: sha512-PDyvQ5f2PValmqZZIJATimcokDt4JjIev8cKbZgEOoZm+U1IJDYuLeTcxZPQdep99R/X0RIlQ6ReQgPOVnPbNw==} + engines: {node: '>=14.18.0'} - es-module-lexer@1.4.1: - resolution: { integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== } + cohere-ai@6.2.2: + resolution: {integrity: sha512-+Tq+4e8N/YWKJqFpWaULsfbZR/GOvGh8WWYFKR1bpipu8bCok3VcbTPnBmIToQiIqOgFpGk3HsA4b0guVyL3vg==} - es-set-tostringtag@2.0.3: - resolution: { integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== } - engines: { node: '>= 0.4' } + cohere-ai@7.10.0: + resolution: {integrity: sha512-HmPyn+DOM9yUv20oM1xlQSZWtFSAKbS8nqtstGKdjX9DK5zTiQXwpwsP7Il5l66jx2TB8NyNXLujmuw0MTgmSQ==} - es-shim-unscopables@1.0.2: - resolution: { integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== } - - es-to-primitive@1.2.1: - resolution: { integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== } - engines: { node: '>= 0.4' } - - es5-ext@0.10.64: - resolution: { integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== } - engines: { node: '>=0.10' } - - es6-iterator@2.0.3: - resolution: { integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== } - - es6-promise@3.3.1: - resolution: { integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== } - - es6-symbol@3.1.4: - resolution: { integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== } - engines: { node: '>=0.12' } - - es6-weak-map@2.0.3: - resolution: { integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== } - - esbuild@0.17.19: - resolution: { integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== } - engines: { node: '>=12' } - hasBin: true - - esbuild@0.18.20: - resolution: { integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== } - engines: { node: '>=12' } - hasBin: true - - esbuild@0.19.12: - resolution: { integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== } - engines: { node: '>=12' } - hasBin: true - - escalade@3.1.2: - resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== } - engines: { node: '>=6' } - - escape-goat@4.0.0: - resolution: { integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== } - engines: { node: '>=12' } - - 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' } - - escape-string-regexp@5.0.0: - resolution: { integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== } - engines: { node: '>=12' } - - escodegen@1.14.3: - resolution: { integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== } - engines: { node: '>=4.0' } - hasBin: true - - escodegen@2.1.0: - resolution: { integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== } - engines: { node: '>=6.0' } - hasBin: true - - eslint-config-next@13.2.4: - resolution: { integrity: sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg== } - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-next@13.5.6: - resolution: { integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg== } - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-prettier@8.10.0: - resolution: { integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== } - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-prettier@9.1.0: - resolution: { integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== } - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-react-app@7.0.1: - resolution: { integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== } - engines: { node: '>=14.0.0' } - peerDependencies: - eslint: ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-turbo@1.13.4: - resolution: { integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw== } - peerDependencies: - eslint: '>6.6.0' - - eslint-import-resolver-node@0.3.9: - resolution: { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } - - eslint-import-resolver-typescript@3.6.1: - resolution: { integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - - eslint-module-utils@2.8.1: - resolution: { integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== } - engines: { node: '>=4' } - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-flowtype@8.0.3: - resolution: { integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@babel/plugin-syntax-flow': ^7.14.5 - '@babel/plugin-transform-react-jsx': ^7.14.9 - eslint: ^8.1.0 - - eslint-plugin-import@2.29.1: - resolution: { integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== } - engines: { node: '>=4' } - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jest@25.7.0: - resolution: { integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - peerDependencies: - '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - - eslint-plugin-jsx-a11y@6.8.0: - resolution: { integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== } - engines: { node: '>=4.0' } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-markdown@3.0.1: - resolution: { integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - eslint-plugin-prettier@3.4.1: - resolution: { integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== } - engines: { node: '>=6.0.0' } - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-plugin-prettier@5.2.1: - resolution: { integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - '@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-react-hooks@4.6.0: - resolution: { integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== } - engines: { node: '>=10' } - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.34.0: - resolution: { integrity: sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ== } - engines: { node: '>=4' } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-solid@0.12.0: - resolution: { integrity: sha512-4nnLFJwvw5AGC+yAGHFtPGKFgs8Ou77/PGi8DJVfQgILK0fJWVvY07FKzkjQXtO1x/x7DocXusr+ZWutz8DVDQ== } - engines: { node: '>=12.0.0' } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - eslint-plugin-testing-library@5.11.1: - resolution: { integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6' } - peerDependencies: - eslint: ^7.5.0 || ^8.0.0 - - eslint-plugin-turbo@1.13.4: - resolution: { integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg== } - peerDependencies: - eslint: '>6.6.0' - - eslint-plugin-unused-imports@2.0.0: - resolution: { integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-rule-composer@0.3.0: - resolution: { integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== } - engines: { node: '>=4.0.0' } - - eslint-scope@5.1.1: - resolution: { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } - engines: { node: '>=8.0.0' } - - eslint-scope@7.2.2: - resolution: { integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - eslint-utils@2.1.0: - resolution: { integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== } - engines: { node: '>=6' } - - eslint-visitor-keys@1.3.0: - resolution: { integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== } - engines: { node: '>=4' } - - eslint-visitor-keys@2.1.0: - resolution: { integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== } - engines: { node: '>=10' } - - eslint-visitor-keys@3.4.3: - resolution: { integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - eslint-webpack-plugin@3.2.0: - resolution: { integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== } - engines: { node: '>= 12.13.0' } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - webpack: ^5.0.0 - - eslint@7.32.0: - resolution: { integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== } - engines: { node: ^10.12.0 || >=12.0.0 } - hasBin: true - - eslint@8.37.0: - resolution: { integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - - eslint@8.57.0: - resolution: { integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - - esm@3.2.25: - resolution: { integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== } - engines: { node: '>=6' } - - esniff@2.0.1: - resolution: { integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== } - engines: { node: '>=0.10' } - - espree@7.3.1: - resolution: { integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== } - engines: { node: ^10.12.0 || >=12.0.0 } - - espree@9.6.1: - resolution: { integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - esprima@1.2.2: - resolution: { integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== } - engines: { node: '>=0.4.0' } - hasBin: true - - esprima@4.0.1: - resolution: { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } - engines: { node: '>=4' } - hasBin: true + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - esquery@1.5.0: - resolution: { integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== } - engines: { node: '>=0.10' } + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - esrecurse@4.3.0: - resolution: { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } - engines: { node: '>=4.0' } + collection-map@1.0.0: + resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==} + engines: {node: '>=0.10.0'} - estraverse@4.3.0: - resolution: { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } - engines: { node: '>=4.0' } + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} - estraverse@5.3.0: - resolution: { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } - engines: { node: '>=4.0' } + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - estree-util-attach-comments@3.0.0: - resolution: { integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== } + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - estree-util-build-jsx@3.0.1: - resolution: { integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== } + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - estree-util-is-identifier-name@3.0.0: - resolution: { integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== } + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - estree-util-to-js@2.0.0: - resolution: { integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== } + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - estree-util-value-to-estree@3.1.2: - resolution: { integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag== } + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true - estree-util-visit@2.0.0: - resolution: { integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== } + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - estree-walker@0.6.1: - resolution: { integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== } + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} - estree-walker@1.0.1: - resolution: { integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== } + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - estree-walker@2.0.2: - resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - estree-walker@3.0.3: - resolution: { integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== } + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} - esutils@2.0.3: - resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } - engines: { node: '>=0.10.0' } + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - eta@2.2.0: - resolution: { integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== } - engines: { node: '>=6.0.0' } + combine-promises@1.2.0: + resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} + engines: {node: '>=10'} - etag@1.8.1: - resolution: { integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== } - engines: { node: '>= 0.6' } + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} - eval@0.1.8: - resolution: { integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== } - engines: { node: '>= 0.8' } + comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - event-emitter@0.3.5: - resolution: { integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== } + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - event-stream@3.3.4: - resolution: { integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== } + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} - event-target-shim@5.0.1: - resolution: { integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== } - engines: { node: '>=6' } + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} - eventemitter2@6.4.7: - resolution: { integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== } + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - eventemitter3@3.1.2: - resolution: { integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== } + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - eventemitter3@4.0.7: - resolution: { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== } + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} - eventemitter3@5.0.1: - resolution: { integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== } + commander@6.2.0: + resolution: {integrity: sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==} + engines: {node: '>= 6'} - events@1.1.1: - resolution: { integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== } - engines: { node: '>=0.4.x' } + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} - events@3.3.0: - resolution: { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } - engines: { node: '>=0.8.x' } + commander@7.1.0: + resolution: {integrity: sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==} + engines: {node: '>= 10'} - eventsource-parser@1.1.2: - resolution: { integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA== } - engines: { node: '>=14.18' } + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} - exa-js@1.0.12: - resolution: { integrity: sha512-4oDvjl1966qy1BwjuGm/q/k2gZomS8WhpcuiXyn672cTmEfaRIwQnAbXBznuqzT1WaWeHfJXGTeeboaW41OCiw== } + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} - execa@0.2.2: - resolution: { integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ== } - engines: { node: '>=0.12' } + commander@9.2.0: + resolution: {integrity: sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==} + engines: {node: ^12.20.0 || >=14} - execa@4.1.0: - resolution: { integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== } - engines: { node: '>=10' } + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} - execa@5.1.1: - resolution: { integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== } - engines: { node: '>=10' } + commist@1.1.0: + resolution: {integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==} - execa@7.2.0: - resolution: { integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== } - engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - executable@4.1.1: - resolution: { integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== } - engines: { node: '>=4' } + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - exit-hook@1.1.1: - resolution: { integrity: sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg== } - engines: { node: '>=0.10.0' } + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} - exit@0.1.2: - resolution: { integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== } - engines: { node: '>= 0.8.0' } + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - expand-args@0.4.3: - resolution: { integrity: sha512-bAAnw/WnKZUkA9PI3tk4oWRpyZkRiHtFSJ+W8dkTX/oXGhM3rz9Vo5+qW9sJ34z1da8jPap35/igXmE7lEjdsQ== } - engines: { node: '>=0.10.0' } + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - expand-brackets@0.1.5: - resolution: { integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== } - engines: { node: '>=0.10.0' } + component-register@0.8.3: + resolution: {integrity: sha512-/0u8ov0WPWi2FL78rgB9aFOcfY8pJT4jP/l9NTOukGNLVQ6hk35sEJE1RkEnNQU3yk48Qr7HlDQjRQKEVfgeWg==} - expand-brackets@2.1.4: - resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } - engines: { node: '>=0.10.0' } + composio-core@0.4.8: + resolution: {integrity: sha512-XcC3zib6M7o+zgk5gCqE/BNXKqR0uyonOaaRNO4jKbIjArihKrk0MPXC5dF1V23GvsN+qA4OF0tFmQl8poOjTA==} + hasBin: true - expand-object@0.4.2: - resolution: { integrity: sha512-rC0h+knI3YE2rT9v2m6HIowp1aLAVo19u02/wRzE+Dl5eyPowLRcWVyLQ3UaIjSLvjfsTiE0xGb0qqrap5ABKw== } - engines: { node: '>=0.10.0' } - hasBin: true + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} - expand-pkg@0.1.9: - resolution: { integrity: sha512-Qqtqzx/e8tODrDr0H8HtO7+nftN0wH9bsk3948KpKBZLrc86Cm3/8mRKJmDfNSDWWcuKsilMmFlKPhYx5gHYuA== } - engines: { node: '>= 0.10.0' } + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} - expand-range@1.8.2: - resolution: { integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== } - engines: { node: '>=0.10.0' } + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - expand-template@2.0.3: - resolution: { integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== } - engines: { node: '>=6' } + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} - expand-tilde@1.2.2: - resolution: { integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== } - engines: { node: '>=0.10.0' } + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} - expand-tilde@2.0.2: - resolution: { integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== } - engines: { node: '>=0.10.0' } + concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - expect@27.5.1: - resolution: { integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + concurrently@7.6.0: + resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} + engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} + hasBin: true - expect@29.7.0: - resolution: { integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - exponential-backoff@3.1.1: - resolution: { integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== } + configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} - export-files@2.1.1: - resolution: { integrity: sha512-r2x1Zt0OKgdXRy0bXis3sOI8TNYmo5Fe71qXwsvpYaMvIlH5G0fWEf3AYiE2bONjePdSOojca7Jw+p9CQ6/6NQ== } - engines: { node: '>=0.10.0' } + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - expr-eval@2.0.2: - resolution: { integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg== } + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} - express-basic-auth@1.2.1: - resolution: { integrity: sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA== } + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - express-oauth2-jwt-bearer@1.6.0: - resolution: { integrity: sha512-HXnez7vocYlOqlfF3ozPcf/WE3zxT7zfUNfeg5FHJnvNwhBYlNXiPOvuCtBalis8xcigvwtInzEKhBuH87+9ug== } - engines: { node: ^12.19.0 || ^14.15.0 || ^16.13.0 || ^18.12.0 || ^20.2.0 } + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} - express-rate-limit@6.11.2: - resolution: { integrity: sha512-a7uwwfNTh1U60ssiIkuLFWHt4hAC5yxlLGU2VP0X4YNlyEDZAqF4tK3GD3NSitVBrCQmQ0++0uOyFOgC2y4DDw== } - engines: { node: '>= 14' } - peerDependencies: - express: ^4 || ^5 + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - express-session@1.18.1: - resolution: { integrity: sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA== } - engines: { node: '>= 0.8.0' } + console-table-printer@2.12.1: + resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} - express@4.18.3: - resolution: { integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw== } - engines: { node: '>= 0.10.0' } + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} - ext@1.7.0: - resolution: { integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== } + content-disposition@0.5.3: + resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} + engines: {node: '>= 0.6'} - extend-shallow@1.1.4: - resolution: { integrity: sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw== } - engines: { node: '>=0.10.0' } + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} - extend-shallow@2.0.1: - resolution: { integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== } - engines: { node: '>=0.10.0' } + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} - extend-shallow@3.0.2: - resolution: { integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== } - engines: { node: '>=0.10.0' } + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} - extend@3.0.2: - resolution: { integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== } + contentful-management@10.46.4: + resolution: {integrity: sha512-swOTlKO6AeCRnD5w237ey6wKDXty8shFVm0AisKO2w5seQINlFytgCkZd89E0lxjg4zgjb9maa7AScUtyQUd5w==} + engines: {node: '>=14'} - external-editor@3.1.0: - resolution: { integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== } - engines: { node: '>=4' } + contentful-management@11.31.1: + resolution: {integrity: sha512-4QY5E+sshln13+4dS3aVxyCJkB5YPZl5tRj7eo60U8SudF6BpkAJWRY9hKTWOpiWGGHS7YsAw/oARs1cYqInMw==} + engines: {node: '>=18'} - extglob@0.3.2: - resolution: { integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== } - engines: { node: '>=0.10.0' } + contentful-resolve-response@1.9.0: + resolution: {integrity: sha512-LtgPx/eREpHXOX82od48zFZbFhXzYw/NfUoYK4Qf1OaKpLzmYPE4cAY4aD+rxVgnMM5JN/mQaPCsofUlJRYEUA==} + engines: {node: '>=4.7.2'} - extglob@2.0.4: - resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } - engines: { node: '>=0.10.0' } + contentful-sdk-core@8.3.1: + resolution: {integrity: sha512-HYy4ecFA76ERxz7P0jW7hgDcL8jH+bRckv2QfAwQ4k1yPP9TvxpZwrKnlLM69JOStxVkCXP37HvbjbFnjcoWdg==} + engines: {node: '>=18'} - extract-files@9.0.0: - resolution: { integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== } - engines: { node: ^10.17.0 || ^12.0.0 || >= 13.7.0 } + contentful@10.13.2: + resolution: {integrity: sha512-59qQqHKAjd2Bc1XV1pqyHzhwHg4X3BMZKqPkPMptPwoXUYjion+1zytFuXyt5YsNMKVvImvFfZVab8ZOrbI6Iw==} + engines: {node: '>=18'} - extract-zip@2.0.1: - resolution: { integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== } - engines: { node: '>= 10.17.0' } - hasBin: true + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - extsprintf@1.3.0: - resolution: { integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== } - engines: { '0': node >=0.6.0 } + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - faiss-node@0.5.1: - resolution: { integrity: sha512-zD8wobJn8C6OLWo68Unho+Ih8l6nSRB2w3Amj01a+xc4bsEvd2mBDLklAn7VocA9XO3WDvQL/bLpi5flkCn/XQ== } - engines: { node: '>= 14.0.0' } + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - falsey@0.3.2: - resolution: { integrity: sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg== } - engines: { node: '>=0.10.0' } + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - fancy-log@1.3.3: - resolution: { integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== } - engines: { node: '>= 0.10' } + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - fast-copy@2.1.7: - resolution: { integrity: sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA== } + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} - fast-copy@3.0.2: - resolution: { integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== } + cookie@0.4.0: + resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} + engines: {node: '>= 0.6'} - fast-deep-equal@3.1.3: - resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} - fast-diff@1.3.0: - resolution: { integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== } + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} - fast-fifo@1.3.2: - resolution: { integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== } + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} - fast-glob@3.3.2: - resolution: { integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== } - engines: { node: '>=8.6.0' } + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} - fast-json-patch@3.1.1: - resolution: { integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== } + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} - fast-json-stable-stringify@2.1.0: - resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} - fast-levenshtein@1.1.4: - resolution: { integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw== } + copy-props@2.0.5: + resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} - fast-levenshtein@2.0.6: - resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + copy-text-to-clipboard@3.2.0: + resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + engines: {node: '>=12'} - fast-levenshtein@3.0.0: - resolution: { integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== } + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - fast-safe-stringify@2.1.1: - resolution: { integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== } + copy-webpack-plugin@11.0.0: + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 - fast-text-encoding@1.0.6: - resolution: { integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== } + core-js-compat@3.36.0: + resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} - fast-url-parser@1.1.3: - resolution: { integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== } + core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} - fast-xml-parser@4.2.5: - resolution: { integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== } - hasBin: true + core-js-pure@3.36.0: + resolution: {integrity: sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==} - fast-xml-parser@4.3.5: - resolution: { integrity: sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ== } - hasBin: true + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - fast-xml-parser@4.4.1: - resolution: { integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== } - hasBin: true + core-js@3.36.0: + resolution: {integrity: sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==} - fastest-levenshtein@1.0.16: - resolution: { integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== } - engines: { node: '>= 4.9.1' } + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - fastq@1.17.1: - resolution: { integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== } + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - fault@1.0.4: - resolution: { integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== } + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} - fault@2.0.1: - resolution: { integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== } + cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} - faye-websocket@0.11.4: - resolution: { integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== } - engines: { node: '>=0.8.0' } + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} - fb-watchman@2.0.2: - resolution: { integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== } + cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + engines: {node: '>=14'} - fbemitter@3.0.0: - resolution: { integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== } + cosmiconfig@8.2.0: + resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + engines: {node: '>=14'} - fbjs-css-vars@1.0.2: - resolution: { integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== } + 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 - fbjs@3.0.5: - resolution: { integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== } + couchbase@4.4.1: + resolution: {integrity: sha512-7U0FTKIgp8mKfm3ZSqafQpQFIH0t1NannxZDjCGA43HdVvv5n0kGR9KfmdWgVK++QmQqhnh98C2AaSgpXZka/w==} + engines: {node: '>=16'} - fd-slicer@1.1.0: - resolution: { integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== } + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} - fecha@4.2.3: - resolution: { integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== } + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true - feed@4.2.2: - resolution: { integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== } - engines: { node: '>=0.4.0' } + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - fetch-blob@3.2.0: - resolution: { integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== } - engines: { node: ^12.20 || >= 14.13 } + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - fetch-h2@3.0.2: - resolution: { integrity: sha512-Lo6UPdMKKc9Ond7yjG2vq0mnocspOLh1oV6+XZdtfdexacvMSz5xm3WoQhTAdoR2+UqPlyMNqcqfecipoD+l/A== } - engines: { node: '>=12' } + crlf-normalize@1.0.20: + resolution: {integrity: sha512-h/rBerTd3YHQGfv7tNT25mfhWvRq2BBLCZZ80GFarFxf6HQGbpW6iqDL3N+HBLpjLfAdcBXfWAzVlLfHkRUQBQ==} - figures@1.7.0: - resolution: { integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== } - engines: { node: '>=0.10.0' } + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} - figures@3.2.0: - resolution: { integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== } - engines: { node: '>=8' } + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true - file-contents@0.2.4: - resolution: { integrity: sha512-PEz7U6YlXr+dvWCtW63DUY1LUTHOVs1rv4s1/I/39dpvvidQqMSTY6JklazQS60MMoI/ztpo5kMlpdvGagvLbA== } - engines: { node: '>=0.10.0' } + cross-fetch@3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} - file-contents@1.0.1: - resolution: { integrity: sha512-yR9NGsF6Ua0vUjag441JRYB+WflAoBCF3+ReeKocYzpfAjN1U4TvQEjIKXOqwIxFl9Bflg8xf/Fi2qrNBoFUOQ== } - engines: { node: '>=0.10.0' } + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - file-entry-cache@6.0.1: - resolution: { integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== } - engines: { node: ^10.12.0 || >=12.0.0 } + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - file-is-binary@1.0.0: - resolution: { integrity: sha512-71I2LciuolZDBUCu4JzFBKxSvVurMD84G97uCYgt9PZ7ElhEomGqYHTKKU2NcDOxR1g2bwn+hRbkTFSrD80Pfw== } - engines: { node: '>=0.10.0' } + cross-spawn-async@2.2.5: + resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} + deprecated: cross-spawn no longer requires a build toolchain, use it instead - file-loader@6.2.0: - resolution: { integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== } - engines: { node: '>= 10.13.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} - file-name@0.1.0: - resolution: { integrity: sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw== } - engines: { node: '>=0.10.0' } + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true - file-stat@0.1.3: - resolution: { integrity: sha512-f72m4132aOd5DVtREdDX8I0Dd7Zf/3PiUYYvn4BFCxfsLqj6r8joBZzrRlfvsNvxhADw+jpEa0AnWPII9H0Fbg== } - engines: { node: '>=0.10.0' } + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-blank-pseudo@3.0.3: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-has-pseudo@3.0.4: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-loader@6.10.0: + resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - file-uri-to-path@1.0.0: - resolution: { integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== } + css-minimizer-webpack-plugin@3.4.1: + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true - filelist@1.0.4: - resolution: { integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== } + css-minimizer-webpack-plugin@5.0.1: + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true - filename-regex@2.0.1: - resolution: { integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== } - engines: { node: '>=0.10.0' } + css-prefers-color-scheme@6.0.3: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + + css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} - filesize@8.0.7: - resolution: { integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== } - engines: { node: '>= 0.4.0' } + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - fill-range@2.2.4: - resolution: { integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== } - engines: { node: '>=0.10.0' } + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - fill-range@4.0.0: - resolution: { integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== } - engines: { node: '>=0.10.0' } + css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} - fill-range@7.0.1: - resolution: { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } - engines: { node: '>=8' } + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} - filter-obj@5.1.0: - resolution: { integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng== } - engines: { node: '>=14.16' } + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssdb@7.11.2: + resolution: {integrity: sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-advanced@6.1.2: + resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-preset-default@6.1.2: + resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@6.1.2: + resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + csv-generate@4.4.1: + resolution: {integrity: sha512-O/einO0v4zPmXaOV+sYqGa02VkST4GP5GLpWBNHEouIU7pF3kpGf3D0kCCvX82ydIY4EKkOK+R8b1BYsRXravg==} + + csv-parse@5.5.6: + resolution: {integrity: sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==} + + csv-parser@3.0.0: + resolution: {integrity: sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==} + engines: {node: '>= 10'} + hasBin: true + + csv-stringify@6.5.1: + resolution: {integrity: sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ==} + + csv@6.3.10: + resolution: {integrity: sha512-5NYZG4AN2ZUthmNxIudgBEdMPUnbQHu9V4QTzBPqQzUP3KQsFiJo+8HQ0+oVxj1PomIT1/f67VI1QH/hsrZLKA==} + engines: {node: '>= 0.1.90'} + + cypress@12.17.4: + resolution: {integrity: sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==} + engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} + hasBin: true + + cypress@13.13.0: + resolution: {integrity: sha512-ou/MQUDq4tcDJI2FsPaod2FZpex4kpIK43JJlcBgWrX8WX7R/05ZxGTuxedOuZBfxjZxja+fbijZGyxiLP6CFA==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@2.0.0: + resolution: {integrity: sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} - finalhandler@1.2.0: - resolution: { integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== } - engines: { node: '>= 0.8' } + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 - find-cache-dir@3.3.2: - resolution: { integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== } - engines: { node: '>=8' } + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} - find-cache-dir@4.0.0: - resolution: { integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== } - engines: { node: '>=14.16' } + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} - find-file-up@0.1.3: - resolution: { integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A== } - engines: { node: '>=0.10.0' } + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - find-pkg@0.1.2: - resolution: { integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw== } - engines: { node: '>=0.10.0' } + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} - find-root@1.1.0: - resolution: { integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== } - - find-up@1.1.2: - resolution: { integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== } - engines: { node: '>=0.10.0' } - - find-up@3.0.0: - resolution: { integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== } - engines: { node: '>=6' } - - 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-up@6.3.0: - resolution: { integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - find-yarn-workspace-root2@1.2.16: - resolution: { integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== } - - find-yarn-workspace-root@2.0.0: - resolution: { integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== } - - findup-sync@2.0.0: - resolution: { integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g== } - engines: { node: '>= 0.10' } - - findup-sync@3.0.0: - resolution: { integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== } - engines: { node: '>= 0.10' } - - fined@1.2.0: - resolution: { integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== } - engines: { node: '>= 0.10' } - - first-chunk-stream@1.0.0: - resolution: { integrity: sha512-ArRi5axuv66gEsyl3UuK80CzW7t56hem73YGNYxNWTGNKFJUadSb9Gu9SHijYEUi8ulQMf1bJomYNwSCPHhtTQ== } - engines: { node: '>=0.10.0' } - - first-chunk-stream@2.0.0: - resolution: { integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg== } - engines: { node: '>=0.10.0' } - - flagged-respawn@1.0.1: - resolution: { integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== } - engines: { node: '>= 0.10' } - - flagsmith@4.0.3: - resolution: { integrity: sha512-F2lI84yCwxP9RZMcqDgpj9cjWfgQ6YQLS1/bXNp4iltZz6K8lr4zECjBbqqZSUBpxpKBOxfPFX6XGdDurAKOuA== } - - flat-cache@3.2.0: - resolution: { integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== } - engines: { node: ^10.12.0 || >=12.0.0 } - - flat@5.0.2: - resolution: { integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== } - hasBin: true - - flatbuffers@1.12.0: - resolution: { integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ== } - - flatted@3.3.1: - resolution: { integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== } - - flowise-react-json-view@1.21.7: - resolution: { integrity: sha512-oFjwtSLJkUWk6waLh8heCQ4o9b60FJRA2X8LefaZp5WaJvj/Rr2HILjk+ocf1JkfTcq8jc6t2jfIybg4leWsaQ== } - peerDependencies: - react: ^17.0.0 || ^16.3.0 || ^15.5.4 - react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 - - flush-write-stream@1.1.1: - resolution: { integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== } - - flux@4.0.4: - resolution: { integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== } - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - - fn.name@1.1.0: - resolution: { integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== } - - follow-redirects@1.15.5: - resolution: { integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== } - engines: { node: '>=4.0' } - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - follow-redirects@1.15.6: - resolution: { integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== } - engines: { node: '>=4.0' } - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: { integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== } - - for-in@0.1.8: - resolution: { integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g== } - engines: { node: '>=0.10.0' } - - for-in@1.0.2: - resolution: { integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== } - engines: { node: '>=0.10.0' } - - for-own@0.1.5: - resolution: { integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== } - engines: { node: '>=0.10.0' } - - for-own@1.0.0: - resolution: { integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg== } - engines: { node: '>=0.10.0' } - - foreach@2.0.6: - resolution: { integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== } - - foreground-child@3.1.1: - resolution: { integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== } - engines: { node: '>=14' } - - forever-agent@0.6.1: - resolution: { integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== } - - fork-ts-checker-webpack-plugin@6.5.3: - resolution: { integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== } - engines: { node: '>=10', yarn: '>=1.0.0' } - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - form-data-encoder@1.7.2: - resolution: { integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== } - - form-data-encoder@2.1.4: - resolution: { integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== } - engines: { node: '>= 14.17' } - - form-data-encoder@4.0.2: - resolution: { integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== } - engines: { node: '>= 18' } - - form-data@2.3.3: - resolution: { integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== } - engines: { node: '>= 0.12' } - - form-data@2.5.1: - resolution: { integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== } - engines: { node: '>= 0.12' } - - form-data@3.0.1: - resolution: { integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== } - engines: { node: '>= 6' } - - form-data@4.0.0: - resolution: { integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== } - engines: { node: '>= 6' } - - format@0.2.2: - resolution: { integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== } - engines: { node: '>=0.4.x' } - - formdata-node@4.4.1: - resolution: { integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== } - engines: { node: '>= 12.20' } - - formdata-node@6.0.3: - resolution: { integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== } - engines: { node: '>= 18' } - - formdata-polyfill@4.0.10: - resolution: { integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== } - engines: { node: '>=12.20.0' } - - formik@2.4.5: - resolution: { integrity: sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ== } - peerDependencies: - react: '>=16.8.0' - - forwarded@0.2.0: - resolution: { integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== } - engines: { node: '>= 0.6' } - - fraction.js@4.3.7: - resolution: { integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== } - - fragment-cache@0.2.1: - resolution: { integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== } - engines: { node: '>=0.10.0' } - - framer-motion@10.18.0: - resolution: { integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w== } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - framer-motion@4.1.17: - resolution: { integrity: sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw== } - peerDependencies: - react: '>=16.8 || ^17.0.0' - react-dom: '>=16.8 || ^17.0.0' - - framesync@5.3.0: - resolution: { integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== } - - fresh@0.5.2: - resolution: { integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== } - engines: { node: '>= 0.6' } - - from@0.1.7: - resolution: { integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== } - - fs-constants@1.0.0: - resolution: { integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== } - - fs-exists-sync@0.1.0: - resolution: { integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== } - engines: { node: '>=0.10.0' } - - fs-extra@10.1.0: - resolution: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== } - engines: { node: '>=12' } - - fs-extra@11.2.0: - resolution: { integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== } - engines: { node: '>=14.14' } - - fs-extra@2.1.2: - resolution: { integrity: sha512-9ztMtDZtSKC78V8mev+k31qaTabbmuH5jatdvPBMikrFHvw5BqlYnQIn/WGK3WHeRooSTkRvLa2IPlaHjPq5Sg== } - - fs-extra@8.1.0: - resolution: { integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== } - engines: { node: '>=6 <7 || >=8' } - - fs-extra@9.1.0: - resolution: { integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== } - engines: { node: '>=10' } - - fs-minipass@2.1.0: - resolution: { integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== } - engines: { node: '>= 8' } - - fs-minipass@3.0.3: - resolution: { integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - fs-mkdirp-stream@1.0.0: - resolution: { integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ== } - engines: { node: '>= 0.10' } - - fs-monkey@1.0.5: - resolution: { integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== } + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} - fs-promise@2.0.3: - resolution: { integrity: sha512-oDrTLBQAcRd+p/tSRWvqitKegLPsvqr7aehs5N9ILWFM9az5y5Uh71jKdZ/DTMC4Kel7+GNCQyFCx/IftRv8yg== } - deprecated: Use mz or fs-extra^3.0 with Promise Support + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} - fs.realpath@1.0.0: - resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} - fsevents@1.2.13: - resolution: { integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== } - engines: { node: '>= 4.0' } - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - - fsevents@2.3.2: - resolution: { integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} - fsevents@2.3.3: - resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} - function-bind@1.1.2: - resolution: { integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== } + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} - function.prototype.name@1.1.6: - resolution: { integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== } - engines: { node: '>= 0.4' } + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} - functional-red-black-tree@1.0.1: - resolution: { integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== } + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} - functions-have-names@1.2.3: - resolution: { integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== } + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} - fuse.js@7.0.0: - resolution: { integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q== } - engines: { node: '>=10' } + dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - gauge@3.0.2: - resolution: { integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== } - engines: { node: '>=10' } - deprecated: This package is no longer supported. + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - gauge@4.0.4: - resolution: { integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - gaxios@5.1.3: - resolution: { integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== } - engines: { node: '>=12' } + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - gaxios@6.3.0: - resolution: { integrity: sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg== } - engines: { node: '>=14' } + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - gcp-metadata@5.3.0: - resolution: { integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== } - engines: { node: '>=12' } + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - gcp-metadata@6.1.0: - resolution: { integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg== } - engines: { node: '>=14' } + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - generate-function@2.3.1: - resolution: { integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== } + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - generic-names@4.0.0: - resolution: { integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== } + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - generic-pool@3.9.0: - resolution: { integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== } - engines: { node: '>= 4' } + debuglog@1.0.1: + resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - gensync@1.0.0-beta.2: - resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } - engines: { node: '>=6.9.0' } + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} - get-caller-file@1.0.3: - resolution: { integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== } + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - get-caller-file@2.0.5: - resolution: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } - engines: { node: 6.* || 8.* || >= 10.* } + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - get-intrinsic@1.2.4: - resolution: { integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== } - engines: { node: '>= 0.4' } + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} - get-own-enumerable-property-symbols@3.0.2: - resolution: { integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== } + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} - get-package-type@0.1.0: - resolution: { integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== } - engines: { node: '>=8.0.0' } + decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} - get-port@6.1.2: - resolution: { integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} - get-stdin@5.0.1: - resolution: { integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA== } - engines: { node: '>=0.12.0' } + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - get-stream@5.2.0: - resolution: { integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== } - engines: { node: '>=8' } + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true - get-stream@6.0.1: - resolution: { integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== } - engines: { node: '>=10' } + deep-eql@4.0.0: + resolution: {integrity: sha512-GxJC5MOg2KyQlv6WiUF/VAnMj4MWnYiXo4oLgeptOELVoknyErb4Z8+5F/IM/K4g9/80YzzatxmWcyRwUseH0A==} + engines: {node: '>=6'} - get-symbol-description@1.0.2: - resolution: { integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== } - engines: { node: '>= 0.4' } + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} - get-them-args@1.3.2: - resolution: { integrity: sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw== } + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} - get-tsconfig@4.7.6: - resolution: { integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA== } + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - get-uri@6.0.3: - resolution: { integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== } - engines: { node: '>= 14' } + deepmerge@2.2.1: + resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} + engines: {node: '>=0.10.0'} - get-value@1.3.1: - resolution: { integrity: sha512-TrDxHI5wqgpM5Guhoz7xmblwy7kzhDauSs4df3NP907yFmLtCkOau8YtGo087jZXKDwP22NG6fCo0UA4EFLjOw== } - engines: { node: '>=0.10.0' } + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - get-value@2.0.6: - resolution: { integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== } - engines: { node: '>=0.10.0' } + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} - get-view@0.1.3: - resolution: { integrity: sha512-PZOmJnoY9wEDzAWW/0L6vRVfmPx/iKNiAxXdEI83dD8EPaqnI3GQraUTTSVgIVt5R1ja25/C3ARQAyVSkxN2Cg== } - engines: { node: '>=0.10.0' } + default-browser@3.1.0: + resolution: {integrity: sha512-SOHecvSoairSAWxEHP/0qcsld/KtI3DargfEuELQDyHIYmS2EMgdGhHOTC1GxaYr+NLUV6kDroeiSBfnNHnn8w==} + engines: {node: '>=12'} - getos@3.2.1: - resolution: { integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== } + default-compare@1.0.0: + resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} + engines: {node: '>=0.10.0'} - getpass@0.1.7: - resolution: { integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== } + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} - git-config-path@1.0.1: - resolution: { integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg== } - engines: { node: '>=0.10.0' } + default-resolution@2.0.0: + resolution: {integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==} + engines: {node: '>= 0.10'} - git-repo-name@0.6.0: - resolution: { integrity: sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g== } - engines: { node: '>=0.8' } + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - github-from-package@0.0.0: - resolution: { integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== } + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} - github-slugger@1.5.0: - resolution: { integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== } + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} - github-username@6.0.0: - resolution: { integrity: sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ== } - engines: { node: '>=10' } + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} - glob-base@0.3.0: - resolution: { integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== } - engines: { node: '>=0.10.0' } + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} - glob-parent@2.0.0: - resolution: { integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== } + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} - glob-parent@3.1.0: - resolution: { integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== } + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} - glob-parent@5.1.2: - resolution: { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } - engines: { node: '>= 6' } + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} - glob-parent@6.0.2: - resolution: { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } - engines: { node: '>=10.13.0' } + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - glob-stream@5.3.5: - resolution: { integrity: sha512-piN8XVAO2sNxwVLokL4PswgJvK/uQ6+awwXUVRTGF+rRfgCZpn4hOqxiRuTEbU/k3qgKl0DACYQ/0Sge54UMQg== } - engines: { node: '>= 0.10' } + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} - glob-stream@6.1.0: - resolution: { integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw== } - engines: { node: '>= 0.10' } + del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} - glob-to-regexp@0.4.1: - resolution: { integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== } + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} - glob-watcher@5.0.5: - resolution: { integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== } - engines: { node: '>= 0.10' } + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - glob@10.3.10: - resolution: { integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== } - engines: { node: '>=16 || 14 >=14.17' } - hasBin: true + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} - glob@5.0.15: - resolution: { integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== } - deprecated: Glob versions prior to v9 are no longer supported + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} - glob@7.1.7: - resolution: { integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== } - deprecated: Glob versions prior to v9 are no longer supported + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} - glob@7.2.3: - resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== } - deprecated: Glob versions prior to v9 are no longer supported + deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - glob@8.1.0: - resolution: { integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== } - engines: { node: '>=12' } - deprecated: Glob versions prior to v9 are no longer supported + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - global-dirs@3.0.1: - resolution: { integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== } - engines: { node: '>=10' } + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - global-modules@0.2.3: - resolution: { integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== } - engines: { node: '>=0.10.0' } + destroy@1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} - global-modules@1.0.0: - resolution: { integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== } - engines: { node: '>=0.10.0' } + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - global-modules@2.0.0: - resolution: { integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== } - engines: { node: '>=6' } + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} - global-prefix@0.1.5: - resolution: { integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== } - engines: { node: '>=0.10.0' } + detect-indent@4.0.0: + resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} + engines: {node: '>=0.10.0'} - global-prefix@1.0.2: - resolution: { integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== } - engines: { node: '>=0.10.0' } + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} - global-prefix@3.0.0: - resolution: { integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== } - engines: { node: '>=6' } + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} - globals@11.12.0: - resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } - engines: { node: '>=4' } + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - globals@13.24.0: - resolution: { integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== } - engines: { node: '>=8' } + detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true - globals@9.18.0: - resolution: { integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== } - engines: { node: '>=0.10.0' } + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true - globalthis@1.0.3: - resolution: { integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== } - engines: { node: '>= 0.4' } + device-detector-js@3.0.3: + resolution: {integrity: sha512-jM89LJAvP6uOd84at8OlD9dWP8KeYCCHUde0RT0HQo/stdoRH4b54Xl/fntx2nEXCmqiFhmo+/cJetS2VGUHPw==} + engines: {node: '>= 8.11.4'} - globby@11.1.0: - resolution: { integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== } - engines: { node: '>=10' } + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - globby@13.2.2: - resolution: { integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + devtools-protocol@0.0.1107588: + resolution: {integrity: sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==} - globrex@0.1.2: - resolution: { integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== } + devtools-protocol@0.0.1147663: + resolution: {integrity: sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==} - glogg@1.0.2: - resolution: { integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== } - engines: { node: '>= 0.10' } + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - good-listener@1.2.2: - resolution: { integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== } + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - google-auth-library@8.9.0: - resolution: { integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== } - engines: { node: '>=12' } + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - google-auth-library@9.15.0: - resolution: { integrity: sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ== } - engines: { node: '>=14' } + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - google-auth-library@9.6.3: - resolution: { integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ== } - engines: { node: '>=14' } + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - google-gax@4.3.7: - resolution: { integrity: sha512-3bnD8RASQyaxOYTdWLgwpQco/aytTxFavoI/UN5QN5txDLp8QRrBHNtCUJ5+Ago+551GD92jG8jJduwvmaneUw== } - engines: { node: '>=14' } + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} - google-p12-pem@4.0.1: - resolution: { integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== } - engines: { node: '>=12.0.0' } - deprecated: Package is no longer maintained - hasBin: true + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} - google-protobuf@3.21.2: - resolution: { integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA== } + digest-fetch@1.3.0: + resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} - googleapis-common@7.2.0: - resolution: { integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA== } - engines: { node: '>=14.0.0' } + dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} - googleapis@144.0.0: - resolution: { integrity: sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw== } - engines: { node: '>=14.0.0' } + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} - gopd@1.0.1: - resolution: { integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== } + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - got@11.8.6: - resolution: { integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== } - engines: { node: '>=10.19.0' } + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} - got@12.6.1: - resolution: { integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== } - engines: { node: '>=14.16' } + docker-modem@5.0.6: + resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} + engines: {node: '>= 8.0'} - gpt-3-encoder@1.1.4: - resolution: { integrity: sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg== } + dockerode@4.0.4: + resolution: {integrity: sha512-6GYP/EdzEY50HaOxTVTJ2p+mB5xDHTMJhS+UoGrVyS6VC+iQRh7kZ4FRpUYq6nziby7hPqWhOrFFUFTMUZJJ5w==} + engines: {node: '>= 8.0'} - gpt-tokens@1.3.8: - resolution: { integrity: sha512-B9Xylpb3h+k+hr8NBDZjpB9bi24CXhekMJ9ZnmZ3A7RWUpExxLuccfLoqNF61UiOEz0r+7VT1vxuLatr8E4KuA== } + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} - gpt3-tokenizer@1.1.5: - resolution: { integrity: sha512-O9iCL8MqGR0Oe9wTh0YftzIbysypNQmS5a5JG3cB3M4LMYjlAVvNnf8LUzVY9MrI7tj+YLY356uHtO2lLX2HpA== } - engines: { node: '>=12' } + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} - graceful-fs@4.2.10: - resolution: { integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== } + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - graceful-fs@4.2.11: - resolution: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== } + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - grapheme-splitter@1.0.4: - resolution: { integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== } + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - graphemer@1.4.0: - resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - graphql-request@5.2.0: - resolution: { integrity: sha512-pLhKIvnMyBERL0dtFI3medKqWOz/RhHdcgbZ+hMMIb32mEPa5MJSzS4AuXxfI4sRAu6JVVk5tvXuGfCWl9JYWQ== } - peerDependencies: - graphql: 14 - 16 + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - graphql@16.8.1: - resolution: { integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== } - engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - gray-matter@3.1.1: - resolution: { integrity: sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA== } - engines: { node: '>=0.10.0' } + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - gray-matter@4.0.3: - resolution: { integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== } - engines: { node: '>=6.0' } + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - groq-sdk@0.3.2: - resolution: { integrity: sha512-Xp1xOea7nqUcTMndpiA8VkjZ05jM/eUUeCILxhRF+c2etBz/myQwRcUrr5lpWc0euIt96AiBMa9aYa0Iqrh13g== } + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead - group-array@0.3.4: - resolution: { integrity: sha512-YAmNsgsi1uQ7Ai3T4FFkMoskqbLEUPRajAmrn8FclwZQQnV98NLrNWjQ3n2+i1pANxdO3n6wsNEkKq5XrYy0Ow== } - engines: { node: '>=0.10.0' } + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead - grouped-queue@2.0.0: - resolution: { integrity: sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw== } - engines: { node: '>=8.0.0' } + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} - grpc-tools@1.12.4: - resolution: { integrity: sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg== } - hasBin: true + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} - gtoken@6.1.2: - resolution: { integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== } - engines: { node: '>=12.0.0' } + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - gtoken@7.1.0: - resolution: { integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== } - engines: { node: '>=14.0.0' } + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - guid-typescript@1.0.9: - resolution: { integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ== } + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - gulp-choose-files@0.1.3: - resolution: { integrity: sha512-SuAg0I2iCMEDcE3BJ46cfIo1Gn5N16403eie6G/iqrttDuKJUK1q3wh/2HBP/ZAJAqNXABI0uEavL2QxSMka1A== } - engines: { node: '>=0.10.0' } + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - gulp-cli@2.3.0: - resolution: { integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== } - engines: { node: '>= 0.10' } - hasBin: true + dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} - gulp-sourcemaps@1.6.0: - resolution: { integrity: sha512-NjRy6+Qb5K1xbwOvPviD3uA4KSq2zsalPL+4vxPQPuL+kKzHjXJL10/kLaESic3LmBto8VIBHr3gIN3F9AjnhA== } + dotenv-cli@8.0.0: + resolution: {integrity: sha512-aLqYbK7xKOiTMIRf1lDPbI+Y+Ip/wo5k3eyp6ePysVaSqbyxjyK3dK35BTxG+rmd7djf5q2UPs4noPNH+cj0Qw==} + hasBin: true - gulp@4.0.2: - resolution: { integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== } - engines: { node: '>= 0.10' } - hasBin: true + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} - gulplog@1.0.0: - resolution: { integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw== } - engines: { node: '>= 0.10' } + dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - gzip-size@6.0.0: - resolution: { integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== } - engines: { node: '>=10' } + dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} - h3@1.12.0: - resolution: { integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA== } + dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} - handle-thing@2.0.1: - resolution: { integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== } + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} - handlebars@4.7.8: - resolution: { integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== } - engines: { node: '>=0.4.7' } - hasBin: true + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} - har-schema@2.0.0: - resolution: { integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== } - engines: { node: '>=4' } + duck@0.1.12: + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} - har-validator@5.1.5: - resolution: { integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== } - engines: { node: '>=6' } - deprecated: this library is no longer supported + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} - harmony-reflect@1.6.2: - resolution: { integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== } + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - has-ansi@2.0.0: - resolution: { integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== } - engines: { node: '>=0.10.0' } + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - has-bigints@1.0.2: - resolution: { integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== } + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - has-flag@3.0.0: - resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } - engines: { node: '>=4' } + e2b@0.16.1: + resolution: {integrity: sha512-2L1R/REEB+EezD4Q4MmcXXNATjvCYov2lv/69+PY6V95+wl1PZblIMTYAe7USxX6P6sqANxNs+kXqZr6RvXkSw==} + engines: {node: '>=18'} - has-flag@4.0.0: - resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } - engines: { node: '>=8' } + each-props@1.3.2: + resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} - has-glob@0.1.1: - resolution: { integrity: sha512-WMHzb7oCwDcMDngWy0b+viLjED8zvSi5d4/YdBetADHX/rLH+noJaRTytuyN6thTxxM7lK+FloogQHHdOOR+7g== } - engines: { node: '>=0.10.0' } + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - has-glob@1.0.0: - resolution: { integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g== } - engines: { node: '>=0.10.0' } + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - has-own-deep@0.1.4: - resolution: { integrity: sha512-a9Dn8Q46DZySlvZqjCX5rkwS9AYIv3VQM3IoOhTXJVJ/cEmVDMLTrJClIihLS0a09PzhrEBbueji44ZQjLh19g== } - engines: { node: '>=0.10.0' } + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - has-property-descriptors@1.0.2: - resolution: { integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== } + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - has-proto@1.0.3: - resolution: { integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== } - engines: { node: '>= 0.4' } + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true - has-symbols@1.0.3: - resolution: { integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== } - engines: { node: '>= 0.4' } + ejs@3.1.6: + resolution: {integrity: sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==} + engines: {node: '>=0.10.0'} + hasBin: true - has-tostringtag@1.0.2: - resolution: { integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== } - engines: { node: '>= 0.4' } + electron-to-chromium@1.4.701: + resolution: {integrity: sha512-K3WPQ36bUOtXg/1+69bFlFOvdSm0/0bGqmsfPDLRXLanoKXdA+pIWuf/VbA9b+2CwBFuONgl4NEz4OEm+OJOKA==} - has-unicode@2.0.1: - resolution: { integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== } + electron-to-chromium@1.5.109: + resolution: {integrity: sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==} - has-value@0.3.1: - resolution: { integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== } - engines: { node: '>=0.10.0' } + electron-to-chromium@1.5.17: + resolution: {integrity: sha512-Q6Q+04tjC2KJ8qsSOSgovvhWcv5t+SmpH6/YfAWmhpE5/r+zw6KQy1/yWVFFNyEBvy68twTTXr2d5eLfCq7QIw==} - has-value@1.0.0: - resolution: { integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== } - engines: { node: '>=0.10.0' } + emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} - has-values@0.1.4: - resolution: { integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== } - engines: { node: '>=0.10.0' } + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} - has-values@1.0.0: - resolution: { integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== } - engines: { node: '>=0.10.0' } + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} - has-yarn@3.0.0: - resolution: { integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - hash.js@1.1.7: - resolution: { integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== } + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - hasown@2.0.2: - resolution: { integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== } - engines: { node: '>= 0.4' } + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - hast-util-from-dom@4.2.0: - resolution: { integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ== } + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} - hast-util-from-parse5@8.0.1: - resolution: { integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== } + emoticon@4.1.0: + resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - hast-util-is-element@2.1.3: - resolution: { integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA== } + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - hast-util-parse-selector@2.2.5: - resolution: { integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== } + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} - hast-util-parse-selector@3.1.1: - resolution: { integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== } + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} - hast-util-parse-selector@4.0.0: - resolution: { integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== } + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - hast-util-raw@9.0.2: - resolution: { integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== } + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - hast-util-to-estree@3.1.0: - resolution: { integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== } + engine.io-client@6.5.3: + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} - hast-util-to-jsx-runtime@2.3.0: - resolution: { integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== } + engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} - hast-util-to-parse5@8.0.0: - resolution: { integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== } + engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} - hast-util-to-text@3.1.2: - resolution: { integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw== } + enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} - hast-util-whitespace@2.0.1: - resolution: { integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== } + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} - hast-util-whitespace@3.0.0: - resolution: { integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== } + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - hastscript@5.1.2: - resolution: { integrity: sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== } + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} - hastscript@6.0.0: - resolution: { integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== } + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} - hastscript@7.2.0: - resolution: { integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== } + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true - hastscript@8.0.0: - resolution: { integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== } + epub2@3.0.2: + resolution: {integrity: sha512-rhvpt27CV5MZfRetfNtdNwi3XcNg1Am0TwfveJkK8YWeHItHepQ8Js9J06v8XRIjuTrCW/NSGYMTy55Of7BfNQ==} - he@1.2.0: - resolution: { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== } - hasBin: true + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - help-me@3.0.0: - resolution: { integrity: sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ== } + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - helper-cache@0.7.2: - resolution: { integrity: sha512-ictXA4Nsj9HZcY5Sf4PyWKOXRkQLCDLJLvekaKKrQ+IGLMe4Z+u2oM1QqRGjtWeQRfQCA3NJyIzZpfmw6GvwOQ== } - engines: { node: '>=0.10.0' } + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - hey-listen@1.0.8: - resolution: { integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== } + error@10.4.0: + resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} - highlight.js@10.7.3: - resolution: { integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== } + es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + engines: {node: '>= 0.4'} - highlight.js@9.15.10: - resolution: { integrity: sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== } - deprecated: Version no longer supported. Upgrade to @latest + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} - history@4.10.1: - resolution: { integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== } + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - history@5.3.0: - resolution: { integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== } + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} - hoist-non-react-statics@3.3.2: - resolution: { integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== } + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - home-or-tmp@2.0.0: - resolution: { integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== } - engines: { node: '>=0.10.0' } + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - homedir-polyfill@1.0.3: - resolution: { integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== } - engines: { node: '>=0.10.0' } + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - hoopy@0.1.4: - resolution: { integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== } - engines: { node: '>= 6.0.0' } + es-iterator-helpers@1.0.17: + resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} + engines: {node: '>= 0.4'} - hosted-git-info@2.8.9: - resolution: { integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== } + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} - hosted-git-info@4.1.0: - resolution: { integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== } - engines: { node: '>=10' } + es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - hosted-git-info@6.1.1: - resolution: { integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} - hpack.js@2.1.6: - resolution: { integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== } + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} - hpagent@0.1.2: - resolution: { integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ== } + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} - hpagent@1.2.0: - resolution: { integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== } - engines: { node: '>=14' } + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - html-dom-parser@3.1.7: - resolution: { integrity: sha512-cDgNF4YgF6J3H+d9mcldGL19p0GzVdS3iGuDNzYWQpU47q3+IRM85X3Xo07E+nntF4ek4s78A9V24EwxlPTjig== } + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + + 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'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-next@13.2.4: + resolution: {integrity: sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-next@13.5.6: + resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-react-app@7.0.1: + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-turbo@1.13.4: + resolution: {integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==} + peerDependencies: + eslint: '>6.6.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.1: + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-flowtype@8.0.3: + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jest@25.7.0: + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-jsx-a11y@6.8.0: + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-markdown@3.0.1: + resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + eslint-plugin-prettier@3.4.1: + resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=5.0.0' + eslint-config-prettier: '*' + prettier: '>=1.13.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-plugin-prettier@5.2.3: + resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@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-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.34.0: + resolution: {integrity: sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + 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 + + eslint-plugin-solid@0.12.0: + resolution: {integrity: sha512-4nnLFJwvw5AGC+yAGHFtPGKFgs8Ou77/PGi8DJVfQgILK0fJWVvY07FKzkjQXtO1x/x7DocXusr+ZWutz8DVDQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + eslint-plugin-testing-library@5.11.1: + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + + eslint-plugin-turbo@1.13.4: + resolution: {integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==} + peerDependencies: + eslint: '>6.6.0' + + eslint-plugin-unused-imports@2.0.0: + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-webpack-plugin@3.2.0: + resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + + eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + eslint@8.37.0: + resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@1.2.2: + resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} + engines: {node: '>=0.4.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + 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'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@3.1.2: + resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter3@3.1.2: + resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@1.1.1: + resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} + engines: {node: '>=0.4.x'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource-parser@1.1.2: + resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} + engines: {node: '>=14.18'} + + eventsource-parser@3.0.0: + resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.5: + resolution: {integrity: sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==} + engines: {node: '>=18.0.0'} + + exa-js@1.0.12: + resolution: {integrity: sha512-4oDvjl1966qy1BwjuGm/q/k2gZomS8WhpcuiXyn672cTmEfaRIwQnAbXBznuqzT1WaWeHfJXGTeeboaW41OCiw==} + + execa@0.2.2: + resolution: {integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ==} + engines: {node: '>=0.12'} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + expr-eval@2.0.2: + resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} + + express-basic-auth@1.2.1: + resolution: {integrity: sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==} + + express-oauth2-jwt-bearer@1.6.0: + resolution: {integrity: sha512-HXnez7vocYlOqlfF3ozPcf/WE3zxT7zfUNfeg5FHJnvNwhBYlNXiPOvuCtBalis8xcigvwtInzEKhBuH87+9ug==} + engines: {node: ^12.19.0 || ^14.15.0 || ^16.13.0 || ^18.12.0 || ^20.2.0} + + express-rate-limit@6.11.2: + resolution: {integrity: sha512-a7uwwfNTh1U60ssiIkuLFWHt4hAC5yxlLGU2VP0X4YNlyEDZAqF4tK3GD3NSitVBrCQmQ0++0uOyFOgC2y4DDw==} + engines: {node: '>= 14'} + peerDependencies: + express: ^4 || ^5 + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express-session@1.18.1: + resolution: {integrity: sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==} + engines: {node: '>= 0.8.0'} + + express@4.17.1: + resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==} + engines: {node: '>= 0.10.0'} + + express@4.18.3: + resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==} + engines: {node: '>= 0.10.0'} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + express@5.0.1: + resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} + engines: {node: '>= 18'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + faiss-node@0.5.1: + resolution: {integrity: sha512-zD8wobJn8C6OLWo68Unho+Ih8l6nSRB2w3Amj01a+xc4bsEvd2mBDLklAn7VocA9XO3WDvQL/bLpi5flkCn/XQ==} + engines: {node: '>= 14.0.0'} + + fancy-log@1.3.3: + resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} + engines: {node: '>= 0.10'} + + fast-copy@2.1.7: + resolution: {integrity: sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA==} + + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + 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.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@1.1.4: + resolution: {integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-text-encoding@1.0.6: + resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + + fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fast-xml-parser@4.5.3: + resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + hasBin: true + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} + + fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + + fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + fetch-h2@3.0.2: + resolution: {integrity: sha512-Lo6UPdMKKc9Ond7yjG2vq0mnocspOLh1oV6+XZdtfdexacvMSz5xm3WoQhTAdoR2+UqPlyMNqcqfecipoD+l/A==} + engines: {node: '>=12'} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-loader@6.2.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + + file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + 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-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + + findup-sync@2.0.0: + resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} + engines: {node: '>= 0.10'} + + findup-sync@3.0.0: + resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} + engines: {node: '>= 0.10'} + + fined@1.2.0: + resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} + engines: {node: '>= 0.10'} + + first-chunk-stream@2.0.0: + resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} + engines: {node: '>=0.10.0'} + + flagged-respawn@1.0.1: + resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} + engines: {node: '>= 0.10'} + + flagsmith@4.0.3: + resolution: {integrity: sha512-F2lI84yCwxP9RZMcqDgpj9cjWfgQ6YQLS1/bXNp4iltZz6K8lr4zECjBbqqZSUBpxpKBOxfPFX6XGdDurAKOuA==} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatbuffers@1.12.0: + resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flowise-react-json-view@1.21.7: + resolution: {integrity: sha512-oFjwtSLJkUWk6waLh8heCQ4o9b60FJRA2X8LefaZp5WaJvj/Rr2HILjk+ocf1JkfTcq8jc6t2jfIybg4leWsaQ==} + peerDependencies: + react: ^17.0.0 || ^16.3.0 || ^15.5.4 + react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 + + flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + + flux@4.0.4: + resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} + peerDependencies: + react: ^15.0.2 || ^16.0.0 || ^17.0.0 + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreach@2.0.6: + resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + fork-ts-checker-webpack-plugin@6.5.3: + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data-encoder@4.0.2: + resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==} + engines: {node: '>= 18'} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + + form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + formdata-node@6.0.3: + resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==} + engines: {node: '>= 18'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + formik@2.4.5: + resolution: {integrity: sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==} + peerDependencies: + react: '>=16.8.0' + + forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + framer-motion@10.18.0: + resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + framer-motion@4.1.17: + resolution: {integrity: sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==} + peerDependencies: + react: '>=16.8 || ^17.0.0' + react-dom: '>=16.8 || ^17.0.0' + + framesync@5.3.0: + resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} + + 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'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@2.1.2: + resolution: {integrity: sha512-9ztMtDZtSKC78V8mev+k31qaTabbmuH5jatdvPBMikrFHvw5BqlYnQIn/WGK3WHeRooSTkRvLa2IPlaHjPq5Sg==} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs-mkdirp-stream@1.0.0: + resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} + engines: {node: '>= 0.10'} + + fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + + fs-promise@2.0.3: + resolution: {integrity: sha512-oDrTLBQAcRd+p/tSRWvqitKegLPsvqr7aehs5N9ILWFM9az5y5Uh71jKdZ/DTMC4Kel7+GNCQyFCx/IftRv8yg==} + deprecated: Use mz or fs-extra^3.0 with Promise Support + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + 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.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + fuse.js@7.0.0: + resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} + engines: {node: '>=10'} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + gaxios@5.1.3: + resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} + engines: {node: '>=12'} + + gaxios@6.3.0: + resolution: {integrity: sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg==} + engines: {node: '>=14'} + + gcp-metadata@5.3.0: + resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} + engines: {node: '>=12'} + + gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + 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@1.0.3: + resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@6.1.2: + resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-them-args@1.3.2: + resolution: {integrity: sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==} + + get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + + get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + get-value@3.0.1: + resolution: {integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==} + engines: {node: '>=6.0'} + + getos@3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + + github-username@6.0.0: + resolution: {integrity: sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==} + engines: {node: '>=10'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-stream@6.1.0: + resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} + engines: {node: '>= 0.10'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob-watcher@5.0.5: + resolution: {integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==} + engines: {node: '>= 0.10'} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@9.18.0: + resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} + engines: {node: '>=0.10.0'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + glogg@1.0.2: + resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} + engines: {node: '>= 0.10'} + + google-auth-library@8.9.0: + resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} + engines: {node: '>=12'} + + google-auth-library@9.15.0: + resolution: {integrity: sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==} + engines: {node: '>=14'} + + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + + google-auth-library@9.6.3: + resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} + engines: {node: '>=14'} + + google-gax@4.3.7: + resolution: {integrity: sha512-3bnD8RASQyaxOYTdWLgwpQco/aytTxFavoI/UN5QN5txDLp8QRrBHNtCUJ5+Ago+551GD92jG8jJduwvmaneUw==} + engines: {node: '>=14'} + + google-p12-pem@4.0.1: + resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==} + engines: {node: '>=12.0.0'} + deprecated: Package is no longer maintained + hasBin: true + + google-protobuf@3.21.2: + resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} + + googleapis-common@7.2.0: + resolution: {integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==} + engines: {node: '>=14.0.0'} + + googleapis@144.0.0: + resolution: {integrity: sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==} + engines: {node: '>=14.0.0'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + gpt-3-encoder@1.1.4: + resolution: {integrity: sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg==} + + gpt-tokens@1.3.8: + resolution: {integrity: sha512-B9Xylpb3h+k+hr8NBDZjpB9bi24CXhekMJ9ZnmZ3A7RWUpExxLuccfLoqNF61UiOEz0r+7VT1vxuLatr8E4KuA==} + + gpt3-tokenizer@1.1.5: + resolution: {integrity: sha512-O9iCL8MqGR0Oe9wTh0YftzIbysypNQmS5a5JG3cB3M4LMYjlAVvNnf8LUzVY9MrI7tj+YLY356uHtO2lLX2HpA==} + engines: {node: '>=12'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql-request@5.2.0: + resolution: {integrity: sha512-pLhKIvnMyBERL0dtFI3medKqWOz/RhHdcgbZ+hMMIb32mEPa5MJSzS4AuXxfI4sRAu6JVVk5tvXuGfCWl9JYWQ==} + peerDependencies: + graphql: 14 - 16 + + graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + + grouped-queue@2.0.0: + resolution: {integrity: sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==} + engines: {node: '>=8.0.0'} + + grpc-tools@1.12.4: + resolution: {integrity: sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==} + hasBin: true + + gtoken@6.1.2: + resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} + engines: {node: '>=12.0.0'} + + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + guid-typescript@1.0.9: + resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} + + gulp-cli@2.3.0: + resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==} + engines: {node: '>= 0.10'} + hasBin: true + + gulp@4.0.2: + resolution: {integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==} + engines: {node: '>= 0.10'} + hasBin: true + + gulplog@1.0.0: + resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} + engines: {node: '>= 0.10'} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + 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.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-value@2.0.2: + resolution: {integrity: sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA==} + engines: {node: '>=6'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + has-values@2.0.1: + resolution: {integrity: sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w==} + engines: {node: '>=6'} + + has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-dom@4.2.0: + resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-is-element@2.1.3: + resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + + hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.2: + resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + + hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-text@3.1.2: + resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@5.1.2: + resolution: {integrity: sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==} + + hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + help-me@3.0.0: + resolution: {integrity: sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + highlight.js@9.15.10: + resolution: {integrity: sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==} + deprecated: Version no longer supported. Upgrade to @latest + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + home-or-tmp@2.0.0: + resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} + engines: {node: '>=0.10.0'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + hpagent@0.1.2: + resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==} + + hpagent@1.2.0: + resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} + engines: {node: '>=14'} + + html-comment-regex@1.1.2: + resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} + + html-dom-parser@3.1.7: + resolution: {integrity: sha512-cDgNF4YgF6J3H+d9mcldGL19p0GzVdS3iGuDNzYWQpU47q3+IRM85X3Xo07E+nntF4ek4s78A9V24EwxlPTjig==} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true + + html-react-parser@3.0.16: + resolution: {integrity: sha512-ysQZtRFPcg+McVb4B05oNWSnqM14zagpvTgGcI5e1/BvCl38YwzWzKibrbBmXeemg70olN1bAoeixo7o06G5Eg==} + peerDependencies: + react: 0.14 || 15 || 16 || 17 || 18 + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + html-webpack-plugin@5.6.0: + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@1.7.3: + resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-proxy-middleware@3.0.3: + resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + http-signature@1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + + http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + 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.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + + hyperlinker@1.0.0: + resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} + engines: {node: '>=4'} + + ibm-cloud-sdk-core@5.1.4: + resolution: {integrity: sha512-RXdCryEel2IM2RW1DZ42SJba1oZOwwbKmDARDDn4Uzb1HxO7RhEULNCdH5WoUwaSW07ObgFqwGNwraR92MCV3A==} + engines: {node: '>=18'} + + iconv-lite@0.4.24: + 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'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + ieee754@1.1.13: + resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + ignore-walk@4.0.1: + resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} + engines: {node: '>=10'} + + ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + + import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + + import-in-the-middle@1.13.1: + resolution: {integrity: sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==} + + import-in-the-middle@1.7.1: + resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + 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'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + infima@0.2.0-alpha.44: + resolution: {integrity: sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==} + engines: {node: '>=12'} + + 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. + + infobox-parser@3.6.4: + resolution: {integrity: sha512-d2lTlxKZX7WsYxk9/UPt51nkmZv5tbC75SSw4hfHqZ3LpRAn6ug0oru9xI2X+S78va3aUAze3xl/UqMuwLmJUw==} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + + inngest@1.10.1: + resolution: {integrity: sha512-jKDSl/a7zl0ylxPkZXFM3Zp3P2mXsvpU/QKvvPMunm0f9AFav+m+wwJb0ktXoLSf7o1hxYnnJ1qPlgjVOxQNng==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + typescript: '>=4.7.2' + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + invert-kv@1.0.0: + resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} + engines: {node: '>=0.10.0'} + + ioredis@5.3.2: + resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + engines: {node: '>=12.22.0'} + + ioredis@5.6.0: + resolution: {integrity: sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==} + engines: {node: '>=12.22.0'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-any-array@2.0.1: + resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + 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.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-finite@1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-gzip@2.0.0: + resolution: {integrity: sha512-jtO4Njg6q58zDo/Pu4027beSZ0VdsZlt8/5Moco6yAg+DIxb5BK/xUYqYG2+MD4+piKldXJNHxRkhEYI2fvrxA==} + engines: {node: '>=4'} + + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-html@2.0.0: + resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} + engines: {node: '>=8'} + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + + is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + + is-scoped@2.1.0: + resolution: {integrity: sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==} + engines: {node: '>=8'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + 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.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + 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'} + + isbinaryfile@5.0.2: + resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isobject@4.0.0: + resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} + engines: {node: '>=0.10.0'} + + isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + 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'} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@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@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + 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@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-watch-typeahead@1.1.0: + resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.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@27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jira.js@2.20.1: + resolution: {integrity: sha512-ZFlFAVTEaw86OemQ8BVyVSV0YDZqMI6WVc08Th5GgqVEODW4gmhXLOxqSmCasRJMMVAtI1LrFlFFTf9GnFaUhg==} + + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + + joi@17.12.2: + resolution: {integrity: sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==} + + jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + + jose@5.6.3: + resolution: {integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-base64@3.7.2: + resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-sdsl@4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + + js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} + + js-tiktoken@1.0.12: + resolution: {integrity: sha512-L7wURW1fH9Qaext0VzaUDpFGVQgjkdE3Dgsy9/+yXyGEpBKnylTd0mU0bfbNkKDlXRb6TEsZkwuflu1B8uQbJQ==} + + js-tokens@3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + + 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@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@1.3.0: + resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-pointer@0.6.2: + resolution: {integrity: sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==} + + 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-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-nice@1.1.4: + resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsondiffpatch@0.6.0: + resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonpath@1.1.1: + resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonrepair@3.12.0: + resolution: {integrity: sha512-SWfjz8SuQ0wZjwsxtSJ3Zy8vvLg6aO/kxcp9TWNPGwJKgTZVfhNEQBMk/vPOpYCDFWRxD6QWuI6IHR1t615f0w==} + hasBin: true + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + jsuri@1.3.1: + resolution: {integrity: sha512-LLdAeqOf88/X0hylAI7oSir6QUsz/8kOW0FcJzzu/SJRfORA/oPHycAOthkNp7eLPlTAbqVDFbqNRHkRVzEA3g==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + just-debounce@1.1.0: + resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==} + + just-diff-apply@5.5.0: + resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} + + just-diff@5.2.0: + resolution: {integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==} + + 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==} + + jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + + kareem@2.6.3: + resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} + engines: {node: '>=12.0.0'} + + katex@0.16.9: + resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} + hasBin: true + + kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kill-port@2.0.1: + resolution: {integrity: sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==} + hasBin: true + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + + 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'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + known-css-properties@0.24.0: + resolution: {integrity: sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + langchain@0.0.116: + resolution: {integrity: sha512-bFXj5MDWPKkSiQUhx//p6zDLrSo2aFZnewhmUwJYRKkSPkXE4MxTzPqxZa8E0hv9EqyOb6dA8RVcvh6xp1hUkw==} + engines: {node: '>=18'} + peerDependencies: + '@aws-sdk/client-dynamodb': ^3.310.0 + '@aws-sdk/client-kendra': ^3.352.0 + '@aws-sdk/client-lambda': ^3.310.0 + '@aws-sdk/client-s3': ^3.310.0 + '@aws-sdk/client-sagemaker-runtime': ^3.310.0 + '@aws-sdk/client-sfn': ^3.310.0 + '@clickhouse/client': ^0.0.14 + '@elastic/elasticsearch': ^8.4.0 + '@getmetal/metal-sdk': '*' + '@getzep/zep-js': ^0.4.1 + '@gomomento/sdk': ^1.23.0 + '@google-ai/generativelanguage': ^0.2.1 + '@google-cloud/storage': ^6.10.1 + '@huggingface/inference': ^1.5.1 + '@notionhq/client': ^2.2.5 + '@opensearch-project/opensearch': '*' + '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 + '@qdrant/js-client-rest': ^1.2.0 + '@supabase/postgrest-js': ^1.1.1 + '@supabase/supabase-js': ^2.10.0 + '@tensorflow-models/universal-sentence-encoder': '*' + '@tensorflow/tfjs-converter': '*' + '@tensorflow/tfjs-core': '*' + '@tigrisdata/vector': ^1.1.0 + '@upstash/redis': ^1.20.6 + '@zilliz/milvus2-sdk-node': '>=2.2.7' + apify-client: ^2.7.1 + axios: 1.7.9 + cheerio: ^1.0.0-rc.12 + chromadb: ^1.5.3 + cohere-ai: ^5.0.2 + d3-dsv: ^2.0.0 + epub2: ^3.0.1 + faiss-node: ^0.2.1 + firebase-admin: ^11.9.0 + google-auth-library: ^8.9.0 + hnswlib-node: ^1.4.2 + html-to-text: ^9.0.5 + ignore: ^5.2.0 + ioredis: ^5.3.2 + mammoth: '*' + mongodb: ^5.2.0 + mysql2: ^3.3.3 + notion-to-md: ^3.1.0 + pdf-parse: 1.1.1 + peggy: ^3.0.2 + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.1.0 + playwright: ^1.32.1 + puppeteer: ^19.7.2 + redis: ^4.6.4 + replicate: ^0.12.3 + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.2 + typeorm: ^0.3.12 + typesense: ^1.5.3 + vectordb: ^0.1.4 + weaviate-ts-client: ^1.0.0 + peerDependenciesMeta: + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-kendra': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@clickhouse/client': + optional: true + '@elastic/elasticsearch': + optional: true + '@getmetal/metal-sdk': + optional: true + '@getzep/zep-js': + optional: true + '@gomomento/sdk': + optional: true + '@google-ai/generativelanguage': + optional: true + '@google-cloud/storage': + optional: true + '@huggingface/inference': + optional: true + '@notionhq/client': + optional: true + '@opensearch-project/opensearch': + optional: true + '@pinecone-database/pinecone': + optional: true + '@planetscale/database': + optional: true + '@qdrant/js-client-rest': + optional: true + '@supabase/postgrest-js': + optional: true + '@supabase/supabase-js': + optional: true + '@tensorflow-models/universal-sentence-encoder': + optional: true + '@tensorflow/tfjs-converter': + optional: true + '@tensorflow/tfjs-core': + optional: true + '@tigrisdata/vector': + optional: true + '@upstash/redis': + optional: true + '@zilliz/milvus2-sdk-node': + optional: true + apify-client: + optional: true + axios: + optional: true + cheerio: + optional: true + chromadb: + optional: true + cohere-ai: + optional: true + d3-dsv: + optional: true + epub2: + optional: true + faiss-node: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ignore: + optional: true + ioredis: + optional: true + mammoth: + optional: true + mongodb: + optional: true + mysql2: + optional: true + notion-to-md: + optional: true + pdf-parse: + optional: true + peggy: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + playwright: + optional: true + puppeteer: + optional: true + redis: + optional: true + replicate: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + typesense: + optional: true + vectordb: + optional: true + weaviate-ts-client: + optional: true - html-encoding-sniffer@2.0.1: - resolution: { integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== } - engines: { node: '>=10' } + langchain@0.3.19: + resolution: {integrity: sha512-aGhoTvTBS5ulatA67RHbJ4bcV5zcYRYdm5IH+hpX99RYSFXG24XF3ghSjhYi6sxW+SUnEQ99fJhA5kroVpKNhw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cerebras': '*' + '@langchain/cohere': '*' + '@langchain/core': 0.3.37 + '@langchain/deepseek': '*' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/google-vertexai-web': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + '@langchain/xai': '*' + axios: 1.7.9 + cheerio: '*' + handlebars: ^4.7.8 + peggy: ^3.0.2 + typeorm: '*' + peerDependenciesMeta: + '@langchain/anthropic': + optional: true + '@langchain/aws': + optional: true + '@langchain/cerebras': + optional: true + '@langchain/cohere': + optional: true + '@langchain/deepseek': + optional: true + '@langchain/google-genai': + optional: true + '@langchain/google-vertexai': + optional: true + '@langchain/google-vertexai-web': + optional: true + '@langchain/groq': + optional: true + '@langchain/mistralai': + optional: true + '@langchain/ollama': + optional: true + '@langchain/xai': + optional: true + axios: + optional: true + cheerio: + optional: true + handlebars: + optional: true + peggy: + optional: true + typeorm: + optional: true - html-encoding-sniffer@3.0.0: - resolution: { integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== } - engines: { node: '>=12' } + langchainhub@0.0.11: + resolution: {integrity: sha512-WnKI4g9kU2bHQP136orXr2bcRdgz9iiTBpTN0jWt9IlScUKnJBoD0aa2HOzHURQKeQDnt2JwqVmQ6Depf5uDLQ==} + + langfuse-core@3.32.0: + resolution: {integrity: sha512-8wWnPtmhMBBgVicLR9SjQ1O29fgvTJyRDE5kaF8b908TvE0PXZmxs068GGhLCCdTMUGpU6WXqKRHTZfXAuIzXA==} + engines: {node: '>=18'} + + langfuse-langchain@3.32.0: + resolution: {integrity: sha512-Dtl5r8SeBUrOV1f4715mC3Giey6KPhJWYkgh5qaQm+sONgiaqqDl5QfLFxmy7C5tFW7xSgGwo6DfbD7VY+dFnQ==} + engines: {node: '>=18'} + peerDependencies: + langchain: '>=0.0.157 <0.4.0' + + langfuse@3.3.4: + resolution: {integrity: sha512-QCUf+z2v+HDI78c02nsN7Fgu9jly67u4OwMRDeEQ/vOCiaUTKT4GLpYyzIL3sfl5DOp+pQsVozC/207CU8X1vw==} + engines: {node: '>=18'} + + langfuse@3.32.0: + resolution: {integrity: sha512-Qto8+CW8ZulNaZ/gn4JgVe5v/yeKbvMyvQ/s2DXO5bP5o1PmqE6YOCHQ3Uep6W94B8kpXUgOHg7ZS5Wg8Xljsw==} + engines: {node: '>=18'} + + langsmith@0.0.70: + resolution: {integrity: sha512-QFHrzo/efBowGPCxtObv7G40/OdwqQfGshavMbSJtHBgX+OMqnn4lCMqVeEwTdyue4lEcpwAsGNg5Vty91YIyw==} + hasBin: true + + langsmith@0.1.6: + resolution: {integrity: sha512-pLwepjtA7ki4aK20L1KqbJi55f10KVHHOSPAqzoNnAZqWv/YlHyxHhNrY/Nkxb+rM+hKLZNBMpmjlgvceEQtvw==} + hasBin: true + + langsmith@0.3.12: + resolution: {integrity: sha512-e4qWM27hxEr8GfO6dgXrc3W8La+wxkX1zEtMhxhqS/Th2ujTt5OH7x0uXfXFDqCv9WaC3nquo1Y2s4vpYmLLtg==} + peerDependencies: + openai: 4.82.0 + peerDependenciesMeta: + openai: + optional: true - html-entities@2.3.3: - resolution: { integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== } + language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - html-entities@2.5.2: - resolution: { integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== } + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} - html-escaper@2.0.2: - resolution: { integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== } + langwatch@0.1.1: + resolution: {integrity: sha512-rss9pU4CoVk4LnwsZwhVhBJ6iaG2r/0p5uDldDpOUt4i3C3WLMRjSJ8R6wJ5Kj9DRIRP3auELDxiBs1DI4qZPg==} + engines: {node: '>=18.0.0'} - html-minifier-terser@6.1.0: - resolution: { integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== } - engines: { node: '>=12' } - hasBin: true + last-run@1.1.1: + resolution: {integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==} + engines: {node: '>= 0.10'} - html-minifier-terser@7.2.0: - resolution: { integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== } - engines: { node: ^14.13.1 || >=16.0.0 } - hasBin: true + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} - html-react-parser@3.0.16: - resolution: { integrity: sha512-ysQZtRFPcg+McVb4B05oNWSnqM14zagpvTgGcI5e1/BvCl38YwzWzKibrbBmXeemg70olN1bAoeixo7o06G5Eg== } - peerDependencies: - react: 0.14 || 15 || 16 || 17 || 18 + launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} - html-tags@3.3.1: - resolution: { integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== } - engines: { node: '>=8' } + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} - html-to-text@9.0.5: - resolution: { integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg== } - engines: { node: '>=14' } + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} - html-void-elements@3.0.0: - resolution: { integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== } + lcid@1.0.0: + resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} + engines: {node: '>=0.10.0'} - html-webpack-plugin@5.6.0: - resolution: { integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== } - engines: { node: '>=10.13.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - htmlparser2@6.1.0: - resolution: { integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== } + lead@1.0.0: + resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} + engines: {node: '>= 0.10'} - htmlparser2@8.0.2: - resolution: { integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== } + leven@2.1.0: + resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} + engines: {node: '>=0.10.0'} - http-cache-semantics@4.1.1: - resolution: { integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== } + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} - http-call@5.3.0: - resolution: { integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w== } - engines: { node: '>=8.0.0' } + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} - http-deceiver@1.2.7: - resolution: { integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== } + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} - http-errors@1.6.3: - resolution: { integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== } - engines: { node: '>= 0.6' } + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - http-errors@2.0.0: - resolution: { integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== } - engines: { node: '>= 0.8' } + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - http-parser-js@0.5.8: - resolution: { integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== } + liftoff@3.1.0: + resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} + engines: {node: '>= 0.8'} - http-proxy-agent@4.0.1: - resolution: { integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== } - engines: { node: '>= 6' } + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - http-proxy-agent@5.0.0: - resolution: { integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== } - engines: { node: '>= 6' } + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} - http-proxy-agent@7.0.2: - resolution: { integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== } - engines: { node: '>= 14' } + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - http-proxy-middleware@2.0.6: - resolution: { integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true + linkifyjs@4.1.3: + resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==} - http-proxy@1.18.1: - resolution: { integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== } - engines: { node: '>=8.0.0' } + lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true - http-signature@1.2.0: - resolution: { integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== } - engines: { node: '>=0.8', npm: '>=1.3.7' } + listr2@3.14.0: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true - http-signature@1.3.6: - resolution: { integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== } - engines: { node: '>=0.10' } - - http-status-codes@2.3.0: - resolution: { integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA== } - - http2-client@1.3.5: - resolution: { integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== } + listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true - http2-wrapper@1.0.3: - resolution: { integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== } - engines: { node: '>=10.19.0' } + livereload-js@3.4.1: + resolution: {integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==} - http2-wrapper@2.2.1: - resolution: { integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== } - engines: { node: '>=10.19.0' } + livereload@0.9.3: + resolution: {integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==} + engines: {node: '>=8.0.0'} + hasBin: true - https-proxy-agent@5.0.1: - resolution: { integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== } - engines: { node: '>= 6' } + llamaindex@0.3.13: + resolution: {integrity: sha512-c/6Rvwdy5NNleS29rEOQTjcGfeXLfpI4CGX0MEPjy8yd1KjZIB5dPEED5vepvgoSL8shW+5452G3vmvwrD258Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@notionhq/client': ^2.2.15 - https-proxy-agent@7.0.4: - resolution: { integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== } - engines: { node: '>= 14' } + llm-cost@1.0.4: + resolution: {integrity: sha512-2VQOroPSjyijGUkA8id61srReJXDJzftfOerly4HUIRNbYrPPt+4eqOIM1wL3vTOrIp7z//xevyoK/TsTH2fhQ==} - human-signals@1.1.1: - resolution: { integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== } - engines: { node: '>=8.12.0' } + load-json-file@1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} - human-signals@2.1.0: - resolution: { integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== } - engines: { node: '>=10.17.0' } + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - human-signals@4.3.1: - resolution: { integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== } - engines: { node: '>=14.18.0' } + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} - humanize-ms@1.2.1: - resolution: { integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== } + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} - husky@8.0.3: - resolution: { integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== } - engines: { node: '>=14' } - hasBin: true + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} - hyperlinker@1.0.0: - resolution: { integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== } - engines: { node: '>=4' } + loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} - iconv-lite@0.4.24: - resolution: { integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== } - engines: { node: '>=0.10.0' } + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - iconv-lite@0.6.3: - resolution: { integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== } - engines: { node: '>=0.10.0' } + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - icss-replace-symbols@1.1.0: - resolution: { integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== } + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} - icss-utils@5.1.0: - resolution: { integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} - idb@7.1.1: - resolution: { integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== } + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} - identity-obj-proxy@3.0.0: - resolution: { integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== } - engines: { node: '>=4' } + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ieee754@1.1.13: - resolution: { integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== } + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - ieee754@1.2.1: - resolution: { integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== } + lodash._reinterpolate@3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - ignore-by-default@1.0.1: - resolution: { integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== } + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - ignore-walk@4.0.1: - resolution: { integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== } - engines: { node: '>=10' } + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - ignore-walk@6.0.4: - resolution: { integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - ignore@4.0.6: - resolution: { integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== } - engines: { node: '>= 4' } + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - ignore@5.3.1: - resolution: { integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== } - engines: { node: '>= 4' } + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - image-size@1.1.1: - resolution: { integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== } - engines: { node: '>=16.x' } - hasBin: true + lodash.flow@3.5.0: + resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - immediate@3.0.6: - resolution: { integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== } + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - immer@9.0.21: - resolution: { integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== } + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - immutable@4.3.5: - resolution: { integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== } + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - import-cwd@3.0.0: - resolution: { integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== } - engines: { node: '>=8' } + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - import-fresh@3.3.0: - resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } - engines: { node: '>=6' } + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - import-from@3.0.0: - resolution: { integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== } - engines: { node: '>=8' } + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - import-lazy@4.0.0: - resolution: { integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== } - engines: { node: '>=8' } + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - import-local@3.1.0: - resolution: { integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== } - engines: { node: '>=8' } - hasBin: true + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - imurmurhash@0.1.4: - resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } - engines: { node: '>=0.8.19' } + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - indent-string@4.0.0: - resolution: { integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== } - engines: { node: '>=8' } + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - infer-owner@1.0.4: - resolution: { integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== } + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - infima@0.2.0-alpha.44: - resolution: { integrity: sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ== } - engines: { node: '>=12' } + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - inflection@1.13.4: - resolution: { integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw== } - engines: { '0': node >= 0.4.0 } + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - 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. + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - info-symbol@0.1.0: - resolution: { integrity: sha512-qkc9wjLDQ+dYYZnY5uJXGNNHyZ0UOMDUnhvy0SEZGVVYmQ5s4i8cPAin2MbU6OxJgi8dfj/AnwqPx0CJE6+Lsw== } - engines: { node: '>=0.10.0' } + lodash.template@4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. - infobox-parser@3.6.4: - resolution: { integrity: sha512-d2lTlxKZX7WsYxk9/UPt51nkmZv5tbC75SSw4hfHqZ3LpRAn6ug0oru9xI2X+S78va3aUAze3xl/UqMuwLmJUw== } + lodash.templatesettings@4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} - inherits@2.0.3: - resolution: { integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== } + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - inherits@2.0.4: - resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - ini@1.3.8: - resolution: { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== } + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - ini@2.0.0: - resolution: { integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== } - engines: { node: '>=10' } + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} - inline-style-parser@0.1.1: - resolution: { integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== } + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} - inline-style-parser@0.2.3: - resolution: { integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g== } + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - inngest@1.10.1: - resolution: { integrity: sha512-jKDSl/a7zl0ylxPkZXFM3Zp3P2mXsvpU/QKvvPMunm0f9AFav+m+wwJb0ktXoLSf7o1hxYnnJ1qPlgjVOxQNng== } - engines: { node: '>=14' } - hasBin: true - peerDependencies: - typescript: '>=4.7.2' + logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} - inquirer2@0.1.1: - resolution: { integrity: sha512-U7R6xvJmmcAx8Bq3Ok7+9L5kyBiUbCokZJMSibn+lDQasL9RtW9kYmnO5fezF0EcqE+pt4Hp3gc5XBGCqLkRDg== } + long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - inquirer@8.2.6: - resolution: { integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== } - engines: { node: '>=12.0.0' } + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - internal-slot@1.0.7: - resolution: { integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== } - engines: { node: '>= 0.4' } + longest-streak@2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} - interpret@1.4.0: - resolution: { integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== } - engines: { node: '>= 0.10' } + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - interpret@3.1.1: - resolution: { integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== } - engines: { node: '>=10.13.0' } + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true - invariant@2.2.4: - resolution: { integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== } + lop@0.4.1: + resolution: {integrity: sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==} - invert-kv@1.0.0: - resolution: { integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== } - engines: { node: '>=0.10.0' } + lop@0.4.2: + resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} - ioredis@5.3.2: - resolution: { integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== } - engines: { node: '>=12.22.0' } + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - ip-address@9.0.5: - resolution: { integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== } - engines: { node: '>= 12' } + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} - ipaddr.js@1.9.1: - resolution: { integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== } - engines: { node: '>= 0.10' } + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ipaddr.js@2.1.0: - resolution: { integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== } - engines: { node: '>= 10' } + lowlight@1.12.1: + resolution: {integrity: sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w==} - iron-webcrypto@1.2.1: - resolution: { integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== } + lowlight@1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - is-absolute@0.2.6: - resolution: { integrity: sha512-7Kr05z5LkcOpoMvxHN1PC11WbPabdNFmMYYo0eZvWu3BfVS0T03yoqYDczoCBx17xqk2x1XAZrcKiFVL88jxlQ== } - engines: { node: '>=0.10.0' } + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} - is-absolute@1.0.0: - resolution: { integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== } - engines: { node: '>=0.10.0' } + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - is-accessor-descriptor@1.0.1: - resolution: { integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== } - engines: { node: '>= 0.10' } + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - is-alphabetical@1.0.4: - resolution: { integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== } + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} - is-alphabetical@2.0.1: - resolution: { integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== } + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} - is-alphanumerical@1.0.4: - resolution: { integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== } + lru-cache@9.1.2: + resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} + engines: {node: 14 || >=16.14} - is-alphanumerical@2.0.1: - resolution: { integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== } + lru.min@1.1.1: + resolution: {integrity: sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==} + engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} - is-answer@0.1.1: - resolution: { integrity: sha512-ifVYWfVjXzeNx32XK7twC8xMzVYfOqFGETEuwww/Oo8OZQe/tv+huAjP+05qP8omK+IfLmPWN0omZ7YvIvejMw== } - engines: { node: '>=0.10.0' } + lunary@0.7.15: + resolution: {integrity: sha512-qBuAxsCG/weIr6Zhapn9oVLxNcjJGzmZRJj8Tu/L+1QOufRjLXfbZ9ouMjSwX36MUTNIxUpgKBbsmIEEcOio4Q==} + peerDependencies: + openai: 4.82.0 + react: '>=17.0.0' + peerDependenciesMeta: + openai: + optional: true + react: + optional: true - is-any-array@2.0.1: - resolution: { integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ== } + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} - is-arguments@1.1.1: - resolution: { integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== } - engines: { node: '>= 0.4' } + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true - is-array-buffer@3.0.4: - resolution: { integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== } - engines: { node: '>= 0.4' } + magic-bytes.js@1.10.0: + resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} - is-arrayish@0.2.1: - resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== } + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - is-arrayish@0.3.2: - resolution: { integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== } + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} - is-async-function@2.0.0: - resolution: { integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== } - engines: { node: '>= 0.4' } + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - is-bigint@1.0.4: - resolution: { integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== } + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} - is-binary-buffer@1.0.0: - resolution: { integrity: sha512-fP08vt1YuBWSWdDCWkHUDo/Gb+YpnsiK41w2kP3iAkWhMKV4uuAAwPQm9GkA4r+OCDzpa+APIOaHZW6d83e5Ug== } - engines: { node: '>=4' } + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} - is-binary-path@1.0.1: - resolution: { integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== } - engines: { node: '>=0.10.0' } + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - is-binary-path@2.1.0: - resolution: { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } - engines: { node: '>=8' } + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - is-boolean-object@1.1.2: - resolution: { integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== } - engines: { node: '>= 0.4' } + make-fetch-happen@11.1.1: + resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - is-buffer@1.1.6: - resolution: { integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== } + make-fetch-happen@9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} - is-buffer@2.0.5: - resolution: { integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== } - engines: { node: '>=4' } + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} - is-builtin-module@3.2.1: - resolution: { integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== } - engines: { node: '>=6' } + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - is-callable@1.2.7: - resolution: { integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== } - engines: { node: '>= 0.4' } + mammoth@1.7.0: + resolution: {integrity: sha512-ptFhft61dqieLffpdpHD7PUS0cX9YvHQIO3n3ejRhj1bi5Na+RL5wovtNHHXAK6Oj554XfGrVcyTuxgegN6umw==} + engines: {node: '>=12.0.0'} + hasBin: true - is-ci@3.0.1: - resolution: { integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== } - hasBin: true + mammoth@1.7.2: + resolution: {integrity: sha512-MqWU2hcLf1I5QMKyAbfJCvrLxnv5WztrAQyorfZ+WPq7Hk82vZFmvfR2/64ajIPpM4jlq0TXp1xZvp/FFaL1Ug==} + engines: {node: '>=12.0.0'} + hasBin: true - is-core-module@2.13.1: - resolution: { integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== } + mammoth@1.9.0: + resolution: {integrity: sha512-F+0NxzankQV9XSUAuVKvkdQK0GbtGGuqVnND9aVf9VSeUA82LQa29GjLqYU6Eez8LHqSJG3eGiDW3224OKdpZg==} + engines: {node: '>=12.0.0'} + hasBin: true - is-data-descriptor@1.0.1: - resolution: { integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== } - engines: { node: '>= 0.4' } + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} - is-date-object@1.0.5: - resolution: { integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== } - engines: { node: '>= 0.4' } + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - is-decimal@1.0.4: - resolution: { integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== } + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} - is-decimal@2.0.1: - resolution: { integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== } + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} - is-descriptor@0.1.7: - resolution: { integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== } - engines: { node: '>= 0.4' } + markdown-table@2.0.0: + resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} - is-descriptor@1.0.3: - resolution: { integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== } - engines: { node: '>= 0.4' } + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - is-docker@2.2.1: - resolution: { integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== } - engines: { node: '>=8' } - hasBin: true + matchdep@2.0.0: + resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} + engines: {node: '>= 0.10.0'} - is-dotfile@1.0.3: - resolution: { integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== } - engines: { node: '>=0.10.0' } + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} - is-electron@2.2.2: - resolution: { integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== } + material-colors@1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} - is-equal-shallow@0.1.3: - resolution: { integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== } - engines: { node: '>=0.10.0' } + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - is-extendable@0.1.1: - resolution: { integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== } - engines: { node: '>=0.10.0' } + mathjax-full@3.2.2: + resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} - is-extendable@1.0.1: - resolution: { integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== } - engines: { node: '>=0.10.0' } + md-utils-ts@2.0.0: + resolution: {integrity: sha512-sMG6JtX0ebcRMHxYTcmgsh0/m6o8hGdQHFE2OgjvflRZlQM51CGGj/uuk056D+12BlCiW0aTpt/AdlDNtgQiew==} - is-extglob@1.0.0: - resolution: { integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== } - engines: { node: '>=0.10.0' } + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - is-extglob@2.1.1: - resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } - engines: { node: '>=0.10.0' } + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - is-finalizationregistry@1.0.2: - resolution: { integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== } + mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - is-finite@1.1.0: - resolution: { integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== } - engines: { node: '>=0.10.0' } + mdast-util-find-and-replace@1.1.1: + resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==} - is-fullwidth-code-point@1.0.0: - resolution: { integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== } - engines: { node: '>=0.10.0' } + mdast-util-find-and-replace@2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - is-fullwidth-code-point@3.0.0: - resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } - engines: { node: '>=8' } + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - is-fullwidth-code-point@4.0.0: - resolution: { integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== } - engines: { node: '>=12' } + mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} - is-generator-fn@2.1.0: - resolution: { integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== } - engines: { node: '>=6' } + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - is-generator-function@1.0.10: - resolution: { integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== } - engines: { node: '>= 0.4' } + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - is-generator@1.0.3: - resolution: { integrity: sha512-G56jBpbJeg7ds83HW1LuShNs8J73Fv3CPz/bmROHOHlnKkN8sWb9ujiagjmxxMUywftgq48HlBZELKKqFLk0oA== } + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - is-glob@2.0.1: - resolution: { integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== } - engines: { node: '>=0.10.0' } + mdast-util-gfm-autolink-literal@0.1.3: + resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==} - is-glob@3.1.0: - resolution: { integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== } - engines: { node: '>=0.10.0' } + mdast-util-gfm-autolink-literal@1.0.3: + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} - is-glob@4.0.3: - resolution: { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } - engines: { node: '>=0.10.0' } + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - is-gzip@2.0.0: - resolution: { integrity: sha512-jtO4Njg6q58zDo/Pu4027beSZ0VdsZlt8/5Moco6yAg+DIxb5BK/xUYqYG2+MD4+piKldXJNHxRkhEYI2fvrxA== } - engines: { node: '>=4' } + mdast-util-gfm-footnote@1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} - is-hexadecimal@1.0.4: - resolution: { integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== } + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - is-hexadecimal@2.0.1: - resolution: { integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== } + mdast-util-gfm-strikethrough@0.2.3: + resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==} - is-html@2.0.0: - resolution: { integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg== } - engines: { node: '>=8' } + mdast-util-gfm-strikethrough@1.0.3: + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} - is-installed-globally@0.4.0: - resolution: { integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== } - engines: { node: '>=10' } + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - is-interactive@1.0.0: - resolution: { integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== } - engines: { node: '>=8' } + mdast-util-gfm-table@0.1.6: + resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==} - is-lambda@1.0.1: - resolution: { integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== } + mdast-util-gfm-table@1.0.7: + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} - is-map@2.0.3: - resolution: { integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== } - engines: { node: '>= 0.4' } + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - is-module@1.0.0: - resolution: { integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== } + mdast-util-gfm-task-list-item@0.1.6: + resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==} - is-negated-glob@1.0.0: - resolution: { integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug== } - engines: { node: '>=0.10.0' } + mdast-util-gfm-task-list-item@1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} - is-negative-zero@2.0.3: - resolution: { integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== } - engines: { node: '>= 0.4' } + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - is-npm@6.0.0: - resolution: { integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + mdast-util-gfm@0.1.2: + resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==} - is-number-object@1.0.7: - resolution: { integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== } - engines: { node: '>= 0.4' } + mdast-util-gfm@2.0.2: + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - is-number@2.1.0: - resolution: { integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== } - engines: { node: '>=0.10.0' } + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - is-number@3.0.0: - resolution: { integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== } - engines: { node: '>=0.10.0' } + mdast-util-math@2.0.2: + resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} - is-number@4.0.0: - resolution: { integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== } - engines: { node: '>=0.10.0' } + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - is-number@7.0.0: - resolution: { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } - engines: { node: '>=0.12.0' } + mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} - is-obj@1.0.1: - resolution: { integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== } - engines: { node: '>=0.10.0' } + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - is-obj@2.0.0: - resolution: { integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== } - engines: { node: '>=8' } + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - is-path-cwd@2.2.0: - resolution: { integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== } - engines: { node: '>=6' } + mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - is-path-inside@3.0.3: - resolution: { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } - engines: { node: '>=8' } + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - is-plain-obj@2.1.0: - resolution: { integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== } - engines: { node: '>=8' } + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - is-plain-obj@3.0.0: - resolution: { integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== } - engines: { node: '>=10' } + mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - is-plain-obj@4.1.0: - resolution: { integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== } - engines: { node: '>=12' } + mdast-util-to-markdown@0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} - is-plain-object@2.0.4: - resolution: { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } - engines: { node: '>=0.10.0' } + mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - is-plain-object@5.0.0: - resolution: { integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== } - engines: { node: '>=0.10.0' } + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - is-posix-bracket@0.1.1: - resolution: { integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== } - engines: { node: '>=0.10.0' } + mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - is-potential-custom-element-name@1.0.1: - resolution: { integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== } + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - is-primitive@2.0.0: - resolution: { integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== } - engines: { node: '>=0.10.0' } + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - is-property@1.0.2: - resolution: { integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== } + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - is-reference@1.2.1: - resolution: { integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== } + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - is-reference@3.0.2: - resolution: { integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== } + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - is-regex@1.1.4: - resolution: { integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== } - engines: { node: '>= 0.4' } + mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} - is-regexp@1.0.0: - resolution: { integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== } - engines: { node: '>=0.10.0' } + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} - is-registered@0.1.5: - resolution: { integrity: sha512-dOOjAYNmKGtjoW229wn/SDmrO65oQcUvng9WUYF/AIZAQZG/l+puNUPt+/x7YCn4W9A33H6LItHgSETDmS0urg== } - engines: { node: '>=0.10.0' } + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} - is-relative@0.2.1: - resolution: { integrity: sha512-9AMzjRmLqcue629b4ezEVSK6kJsYJlUIhMcygmYORUgwUNJiavHcC3HkaGx0XYpyVKQSOqFbMEZmW42cY87sYw== } - engines: { node: '>=0.10.0' } + meilisearch@0.41.0: + resolution: {integrity: sha512-5KcGLxEXD7E+uNO7R68rCbGSHgCqeM3Q3RFFLSsN7ZrIgr8HPDXVAIlP4LHggAZfk0FkSzo8VSXifHCwa2k80g==} - is-relative@1.0.0: - resolution: { integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== } - engines: { node: '>=0.10.0' } + mem-fs-editor@9.7.0: + resolution: {integrity: sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg==} + engines: {node: '>=12.10.0'} + peerDependencies: + mem-fs: ^2.1.0 + peerDependenciesMeta: + mem-fs: + optional: true - is-retry-allowed@1.2.0: - resolution: { integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== } - engines: { node: '>=0.10.0' } + mem-fs@2.3.0: + resolution: {integrity: sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw==} + engines: {node: '>=12'} - is-root@2.1.0: - resolution: { integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== } - engines: { node: '>=6' } + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} - is-scoped@2.1.0: - resolution: { integrity: sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== } - engines: { node: '>=8' } + memfs@4.17.0: + resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} + engines: {node: '>= 4.0.0'} - is-set@2.0.3: - resolution: { integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== } - engines: { node: '>= 0.4' } + memjs@1.3.2: + resolution: {integrity: sha512-qUEg2g8vxPe+zPn09KidjIStHPtoBO8Cttm8bgJFWWabbsjQ9Av9Ky+6UcvKx6ue0LLb/LEhtcyQpRyKfzeXcg==} + engines: {node: '>=0.10.0'} - is-shared-array-buffer@1.0.3: - resolution: { integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== } - engines: { node: '>= 0.4' } + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - is-stream@1.1.0: - resolution: { integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== } - engines: { node: '>=0.10.0' } + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - is-stream@2.0.1: - resolution: { integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== } - engines: { node: '>=8' } + memory-stream@1.0.0: + resolution: {integrity: sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==} - is-stream@3.0.0: - resolution: { integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - is-string@1.0.7: - resolution: { integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== } - engines: { node: '>= 0.4' } + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - is-symbol@1.0.4: - resolution: { integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== } - engines: { node: '>= 0.4' } + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} - is-typed-array@1.1.13: - resolution: { integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== } - engines: { node: '>= 0.4' } + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - is-typedarray@1.0.0: - resolution: { integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== } + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - is-unc-path@0.1.2: - resolution: { integrity: sha512-HhLc5VDMH4pu3oMtIuunz/DFQUIoR561kMME3U3Afhj8b7vH085vkIkemrz1kLXCEIuoMAmO3yVmafWdSbGW8w== } - engines: { node: '>=0.10.0' } + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} - is-unc-path@1.0.0: - resolution: { integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== } - engines: { node: '>=0.10.0' } + mhchemparser@4.2.1: + resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} - is-unicode-supported@0.1.0: - resolution: { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } - engines: { node: '>=10' } + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - is-utf8@0.2.1: - resolution: { integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== } + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - is-valid-app@0.1.2: - resolution: { integrity: sha512-UKIjincKieawS6pPJjpH76qUmblicLSi0pqGCvFdscOM3pWgnrRBtB/iWIRYXKNCW8qjxb+6k12wFd82Kq94CA== } - engines: { node: '>=0.10.0' } + micromark-extension-directive@3.0.1: + resolution: {integrity: sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg==} - is-valid-app@0.2.1: - resolution: { integrity: sha512-2/qNSVFKyi5WiaIgv153Vt2ZM7T7HSlUu/m3HMnoyp6pk5NYhOUz0aU7Gx2DGYRnZ/8q+pMOwd93pCE8uWhvBg== } - engines: { node: '>=0.10.0' } + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - is-valid-app@0.3.0: - resolution: { integrity: sha512-6+PklNvJraE3XpoqWurkrPIqFIeJin5kwX+sJjcwhPcFY7TM0wjbJlPIBCvHtGawIfb4WtS1t22s7TdgQ0S+Xg== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-autolink-literal@0.5.7: + resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==} - is-valid-glob@0.3.0: - resolution: { integrity: sha512-CvG8EtJZ8FyzVOGPzrDorzyN65W1Ld8BVnqshRCah6pFIsprGx3dKgFtjLn/Vw9kGqR4OlR84U7yhT9ZVTyWIQ== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-autolink-literal@1.0.5: + resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} - is-valid-glob@1.0.0: - resolution: { integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - is-valid-instance@0.1.0: - resolution: { integrity: sha512-js5DRu650+u3zcGfCe23npdFtPuBeLx3iR8q2vfCO4m1KqNz5R35fDQlLPm++gAzg5H+OJXDOG5LGyn8pzl/1Q== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-footnote@1.1.2: + resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - is-valid-instance@0.2.0: - resolution: { integrity: sha512-dNT7bamkigo07gvbnoBRABSNX1ayAhkcw6/3fYhVDhiPXiqnCouD4JMmrozyOx37UUlC+Se1j/jCfLo1fNs0Ng== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - is-valid-instance@0.3.0: - resolution: { integrity: sha512-XEd0ddnORLW/Qf1+VMh7PnYb6XhWs0zK0C/Kh8muwj26IjdlCTlo7QQIjt8+efkE8RqtyzlqYNZE5SfN8ys9hQ== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-strikethrough@0.6.5: + resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==} - is-weakmap@2.0.2: - resolution: { integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== } - engines: { node: '>= 0.4' } + micromark-extension-gfm-strikethrough@1.0.7: + resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - is-weakref@1.0.2: - resolution: { integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== } + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - is-weakset@2.0.3: - resolution: { integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== } - engines: { node: '>= 0.4' } + micromark-extension-gfm-table@0.4.3: + resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==} - is-whitespace@0.3.0: - resolution: { integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-table@1.0.7: + resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} - is-windows@0.2.0: - resolution: { integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} - is-windows@1.0.2: - resolution: { integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== } - engines: { node: '>=0.10.0' } + micromark-extension-gfm-tagfilter@0.3.0: + resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==} - is-wsl@2.2.0: - resolution: { integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== } - engines: { node: '>=8' } + micromark-extension-gfm-tagfilter@1.0.2: + resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - is-yarn-global@0.4.1: - resolution: { integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== } - engines: { node: '>=12' } + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - isarray@0.0.1: - resolution: { integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== } + micromark-extension-gfm-task-list-item@0.3.3: + resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==} - isarray@1.0.0: - resolution: { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } + micromark-extension-gfm-task-list-item@1.0.5: + resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - isarray@2.0.5: - resolution: { integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== } + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - isbinaryfile@4.0.10: - resolution: { integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== } - engines: { node: '>= 8.0.0' } + micromark-extension-gfm@0.3.3: + resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==} - isbinaryfile@5.0.2: - resolution: { integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg== } - engines: { node: '>= 18.0.0' } + micromark-extension-gfm@2.0.3: + resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - isexe@2.0.0: - resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } - - isobject@1.0.2: - resolution: { integrity: sha512-WQQgFoML/sLgmhu9zTekYHZUJaPoa/fpVMQ8oxIuOvppzs70DxxyHZdAIjwcuuNDOVtNYsahhqtBbUvKwhRcGw== } - engines: { node: '>=0.10.0' } - - isobject@2.1.0: - resolution: { integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== } - engines: { node: '>=0.10.0' } - - isobject@3.0.1: - resolution: { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } - engines: { node: '>=0.10.0' } - - isomorphic-fetch@3.0.0: - resolution: { integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== } - - isomorphic-ws@4.0.1: - resolution: { integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== } - peerDependencies: - ws: '*' - - isomorphic-ws@5.0.0: - resolution: { integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== } - peerDependencies: - ws: '*' - - isstream@0.1.2: - resolution: { integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== } - - 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' } - - iterator.prototype@1.1.2: - resolution: { integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== } - - jackspeak@2.3.6: - resolution: { integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== } - engines: { node: '>=14' } - - jake@10.8.7: - resolution: { integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== } - engines: { node: '>=10' } - hasBin: true - - javascript-stringify@2.1.0: - resolution: { integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== } - - jest-changed-files@27.5.1: - resolution: { integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-changed-files@29.7.0: - resolution: { integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-circus@27.5.1: - resolution: { integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-cli@29.7.0: - resolution: { integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@27.5.1: - resolution: { integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - - jest-config@29.7.0: - resolution: { integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@27.5.1: - resolution: { integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-diff@29.7.0: - resolution: { integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-docblock@27.5.1: - resolution: { integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-jsdom@27.5.1: - resolution: { integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-environment-node@27.5.1: - resolution: { integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-jasmine2@27.5.1: - resolution: { integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-leak-detector@27.5.1: - resolution: { integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-matcher-utils@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@27.5.1: - resolution: { integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-message-util@28.1.3: - resolution: { integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1: - resolution: { integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-regex-util@28.0.2: - resolution: { integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - - 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@27.5.1: - resolution: { integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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@27.5.1: - resolution: { integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-runner@29.7.0: - resolution: { integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-runtime@27.5.1: - resolution: { integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-serializer@27.5.1: - resolution: { integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-snapshot@27.5.1: - resolution: { integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-snapshot@29.7.0: - resolution: { integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-util@27.5.1: - resolution: { integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-util@28.1.3: - resolution: { integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@27.5.1: - resolution: { integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-watch-typeahead@1.1.0: - resolution: { integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - jest: ^27.0.0 || ^28.0.0 - - jest-watcher@27.5.1: - resolution: { integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - jest-watcher@28.1.3: - resolution: { integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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@24.9.0: - resolution: { integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== } - engines: { node: '>= 6' } + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - jest-worker@26.6.2: - resolution: { integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== } - engines: { node: '>= 10.13.0' } - - jest-worker@27.5.1: - resolution: { integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== } - engines: { node: '>= 10.13.0' } - - jest-worker@28.1.3: - resolution: { integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.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@27.5.1: - resolution: { integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest@29.7.0: - resolution: { integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jira.js@2.20.1: - resolution: { integrity: sha512-ZFlFAVTEaw86OemQ8BVyVSV0YDZqMI6WVc08Th5GgqVEODW4gmhXLOxqSmCasRJMMVAtI1LrFlFFTf9GnFaUhg== } - - jiti@1.21.0: - resolution: { integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== } - hasBin: true - - jmespath@0.16.0: - resolution: { integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== } - engines: { node: '>= 0.6.0' } - - joi@17.12.2: - resolution: { integrity: sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== } - - jose@4.15.9: - resolution: { integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA== } - - jose@5.6.3: - resolution: { integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g== } - - joycon@3.1.1: - resolution: { integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== } - engines: { node: '>=10' } - - js-base64@3.7.2: - resolution: { integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ== } - - js-base64@3.7.7: - resolution: { integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== } - - js-cookie@3.0.5: - resolution: { integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== } - engines: { node: '>=14' } - - js-sdsl@4.3.0: - resolution: { integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== } - - js-sdsl@4.4.2: - resolution: { integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== } - - js-tiktoken@1.0.12: - resolution: { integrity: sha512-L7wURW1fH9Qaext0VzaUDpFGVQgjkdE3Dgsy9/+yXyGEpBKnylTd0mU0bfbNkKDlXRb6TEsZkwuflu1B8uQbJQ== } - - js-tokens@3.0.2: - resolution: { integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== } - - 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@0.1.1: - resolution: { integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== } - - jsbn@1.1.0: - resolution: { integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== } - - jsdom@16.7.0: - resolution: { integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== } - engines: { node: '>=10' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + micromark-extension-math@2.1.2: + resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} - jsdom@20.0.3: - resolution: { integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== } - engines: { node: '>=14' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsdom@22.1.0: - resolution: { integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== } - engines: { node: '>=16' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - jsesc@0.5.0: - resolution: { integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== } - hasBin: true + micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - jsesc@1.3.0: - resolution: { integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== } - hasBin: true + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - jsesc@2.5.2: - resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } - engines: { node: '>=4' } - hasBin: true + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - json-bigint@1.0.0: - resolution: { integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== } + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - json-buffer@3.0.1: - resolution: { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - json-parse-better-errors@1.0.2: - resolution: { integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== } + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - json-parse-even-better-errors@2.3.1: - resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - json-parse-even-better-errors@3.0.1: - resolution: { integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - json-pointer@0.6.2: - resolution: { integrity: sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== } + micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - json-schema-traverse@0.4.1: - resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - json-schema-traverse@1.0.0: - resolution: { integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== } + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - json-schema@0.4.0: - resolution: { integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== } + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - json-stringify-nice@1.1.4: - resolution: { integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== } + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - json-stringify-safe@5.0.1: - resolution: { integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== } + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - json5@0.5.1: - resolution: { integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== } - hasBin: true + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - json5@1.0.2: - resolution: { integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== } - hasBin: true + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - json5@2.2.3: - resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } - engines: { node: '>=6' } - hasBin: true + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - jsondiffpatch@0.6.0: - resolution: { integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ== } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - jsonfile@2.4.0: - resolution: { integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== } + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - jsonfile@4.0.0: - resolution: { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== } + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - jsonfile@6.1.0: - resolution: { integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== } + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - jsonparse@1.3.1: - resolution: { integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== } - engines: { '0': node >= 0.2.0 } + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - jsonpath@1.1.1: - resolution: { integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== } + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - jsonpointer@5.0.1: - resolution: { integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== } - engines: { node: '>=0.10.0' } + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - jsprim@1.4.2: - resolution: { integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== } - engines: { node: '>=0.6.0' } + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - jsprim@2.0.2: - resolution: { integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== } - engines: { '0': node >=0.6.0 } + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - jsuri@1.3.1: - resolution: { integrity: sha512-LLdAeqOf88/X0hylAI7oSir6QUsz/8kOW0FcJzzu/SJRfORA/oPHycAOthkNp7eLPlTAbqVDFbqNRHkRVzEA3g== } + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - jsx-ast-utils@3.3.5: - resolution: { integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== } - engines: { node: '>=4.0' } + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - jszip@3.10.1: - resolution: { integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== } + micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - just-debounce@1.1.0: - resolution: { integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== } + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - just-diff-apply@5.5.0: - resolution: { integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== } + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - just-diff@5.2.0: - resolution: { integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== } - - jwa@2.0.0: - resolution: { integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== } - - jws@4.0.0: - resolution: { integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== } - - jwt-decode@3.1.2: - resolution: { integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== } - - kareem@2.6.3: - resolution: { integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q== } - engines: { node: '>=12.0.0' } - - katex@0.16.9: - resolution: { integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ== } - hasBin: true - - kebab-case@1.0.2: - resolution: { integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q== } - - keyv@4.5.4: - resolution: { integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== } - - kill-port@2.0.1: - resolution: { integrity: sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ== } - hasBin: true - - kind-of@1.1.0: - resolution: { integrity: sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g== } - engines: { node: '>=0.10.0' } - - kind-of@2.0.1: - resolution: { integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg== } - engines: { node: '>=0.10.0' } - - kind-of@3.2.2: - resolution: { integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== } - engines: { node: '>=0.10.0' } - - kind-of@4.0.0: - resolution: { integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== } - engines: { node: '>=0.10.0' } - - kind-of@5.1.0: - resolution: { integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== } - engines: { node: '>=0.10.0' } - - 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' } - - kleur@4.1.5: - resolution: { integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== } - engines: { node: '>=6' } - - klona@2.0.6: - resolution: { integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== } - engines: { node: '>= 8' } - - known-css-properties@0.24.0: - resolution: { integrity: sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA== } - - kuler@2.0.0: - resolution: { integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== } - - langchain@0.0.116: - resolution: { integrity: sha512-bFXj5MDWPKkSiQUhx//p6zDLrSo2aFZnewhmUwJYRKkSPkXE4MxTzPqxZa8E0hv9EqyOb6dA8RVcvh6xp1hUkw== } - engines: { node: '>=18' } - peerDependencies: - '@aws-sdk/client-dynamodb': ^3.310.0 - '@aws-sdk/client-kendra': ^3.352.0 - '@aws-sdk/client-lambda': ^3.310.0 - '@aws-sdk/client-s3': ^3.310.0 - '@aws-sdk/client-sagemaker-runtime': ^3.310.0 - '@aws-sdk/client-sfn': ^3.310.0 - '@clickhouse/client': ^0.0.14 - '@elastic/elasticsearch': ^8.4.0 - '@getmetal/metal-sdk': '*' - '@getzep/zep-js': ^0.4.1 - '@gomomento/sdk': ^1.23.0 - '@google-ai/generativelanguage': ^0.2.1 - '@google-cloud/storage': ^6.10.1 - '@huggingface/inference': ^1.5.1 - '@notionhq/client': ^2.2.5 - '@opensearch-project/opensearch': '*' - '@pinecone-database/pinecone': '*' - '@planetscale/database': ^1.8.0 - '@qdrant/js-client-rest': ^1.2.0 - '@supabase/postgrest-js': ^1.1.1 - '@supabase/supabase-js': ^2.10.0 - '@tensorflow-models/universal-sentence-encoder': '*' - '@tensorflow/tfjs-converter': '*' - '@tensorflow/tfjs-core': '*' - '@tigrisdata/vector': ^1.1.0 - '@upstash/redis': ^1.20.6 - '@zilliz/milvus2-sdk-node': '>=2.2.7' - apify-client: ^2.7.1 - axios: '*' - cheerio: ^1.0.0-rc.12 - chromadb: ^1.5.3 - cohere-ai: ^5.0.2 - d3-dsv: ^2.0.0 - epub2: ^3.0.1 - faiss-node: ^0.2.1 - firebase-admin: ^11.9.0 - google-auth-library: ^8.9.0 - hnswlib-node: ^1.4.2 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - ioredis: ^5.3.2 - mammoth: '*' - mongodb: ^5.2.0 - mysql2: ^3.3.3 - notion-to-md: ^3.1.0 - pdf-parse: 1.1.1 - peggy: ^3.0.2 - pg: ^8.11.0 - pg-copy-streams: ^6.0.5 - pickleparser: ^0.1.0 - playwright: ^1.32.1 - puppeteer: ^19.7.2 - redis: ^4.6.4 - replicate: ^0.12.3 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.2 - typeorm: ^0.3.12 - typesense: ^1.5.3 - vectordb: ^0.1.4 - weaviate-ts-client: ^1.0.0 - peerDependenciesMeta: - '@aws-sdk/client-dynamodb': - optional: true - '@aws-sdk/client-kendra': - optional: true - '@aws-sdk/client-lambda': - optional: true - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sagemaker-runtime': - optional: true - '@aws-sdk/client-sfn': - optional: true - '@clickhouse/client': - optional: true - '@elastic/elasticsearch': - optional: true - '@getmetal/metal-sdk': - optional: true - '@getzep/zep-js': - optional: true - '@gomomento/sdk': - optional: true - '@google-ai/generativelanguage': - optional: true - '@google-cloud/storage': - optional: true - '@huggingface/inference': - optional: true - '@notionhq/client': - optional: true - '@opensearch-project/opensearch': - optional: true - '@pinecone-database/pinecone': - optional: true - '@planetscale/database': - optional: true - '@qdrant/js-client-rest': - optional: true - '@supabase/postgrest-js': - optional: true - '@supabase/supabase-js': - optional: true - '@tensorflow-models/universal-sentence-encoder': - optional: true - '@tensorflow/tfjs-converter': - optional: true - '@tensorflow/tfjs-core': - optional: true - '@tigrisdata/vector': - optional: true - '@upstash/redis': - optional: true - '@zilliz/milvus2-sdk-node': - optional: true - apify-client: - optional: true - axios: - optional: true - cheerio: - optional: true - chromadb: - optional: true - cohere-ai: - optional: true - d3-dsv: - optional: true - epub2: - optional: true - faiss-node: - optional: true - firebase-admin: - optional: true - google-auth-library: - optional: true - hnswlib-node: - optional: true - html-to-text: - optional: true - ignore: - optional: true - ioredis: - optional: true - mammoth: - optional: true - mongodb: - optional: true - mysql2: - optional: true - notion-to-md: - optional: true - pdf-parse: - optional: true - peggy: - optional: true - pg: - optional: true - pg-copy-streams: - optional: true - pickleparser: - optional: true - playwright: - optional: true - puppeteer: - optional: true - redis: - optional: true - replicate: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - typesense: - optional: true - vectordb: - optional: true - weaviate-ts-client: - optional: true - - langchain@0.2.11: - resolution: { integrity: sha512-6FQWKNAXuTmwuhHHMOmurLo8pydSRu5C/FwCYvYbR4ulCLqcsj+jre/kfXvA5BdHOZHNo6oQn0/5kxDNnhxMUA== } - engines: { node: '>=18' } - peerDependencies: - '@aws-sdk/client-s3': ^3.310.0 - '@aws-sdk/client-sagemaker-runtime': ^3.310.0 - '@aws-sdk/client-sfn': ^3.310.0 - '@aws-sdk/credential-provider-node': ^3.388.0 - '@azure/storage-blob': ^12.15.0 - '@browserbasehq/sdk': '*' - '@gomomento/sdk': ^1.51.1 - '@gomomento/sdk-core': ^1.51.1 - '@gomomento/sdk-web': ^1.51.1 - '@langchain/anthropic': '*' - '@langchain/aws': '*' - '@langchain/cohere': '*' - '@langchain/community': '*' - '@langchain/google-genai': '*' - '@langchain/google-vertexai': '*' - '@langchain/google-vertexai-web': '*' - '@langchain/groq': '*' - '@langchain/mistralai': '*' - '@langchain/ollama': '*' - '@mendable/firecrawl-js': ^0.0.13 - '@notionhq/client': ^2.2.10 - '@pinecone-database/pinecone': '*' - '@supabase/supabase-js': ^2.10.0 - '@vercel/kv': ^0.2.3 - '@xata.io/client': ^0.28.0 - apify-client: ^2.7.1 - assemblyai: ^4.6.0 - axios: '*' - cheerio: ^1.0.0-rc.12 - chromadb: '*' - convex: ^1.3.1 - couchbase: ^4.3.0 - d3-dsv: ^2.0.0 - epub2: ^3.0.1 - faiss-node: '*' - fast-xml-parser: '*' - handlebars: ^4.7.8 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - ioredis: ^5.3.2 - jsdom: '*' - mammoth: ^1.6.0 - mongodb: '>=5.2.0' - node-llama-cpp: '*' - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - pdf-parse: 1.1.1 - peggy: ^3.0.2 - playwright: ^1.32.1 - puppeteer: ^19.7.2 - pyodide: ^0.24.1 - redis: ^4.6.4 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.3 - typeorm: ^0.3.20 - weaviate-ts-client: '*' - web-auth-library: ^1.0.3 - ws: ^8.14.2 - youtube-transcript: ^1.0.6 - youtubei.js: ^9.1.0 - peerDependenciesMeta: - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sagemaker-runtime': - optional: true - '@aws-sdk/client-sfn': - optional: true - '@aws-sdk/credential-provider-node': - optional: true - '@azure/storage-blob': - optional: true - '@browserbasehq/sdk': - optional: true - '@gomomento/sdk': - optional: true - '@gomomento/sdk-core': - optional: true - '@gomomento/sdk-web': - optional: true - '@langchain/anthropic': - optional: true - '@langchain/aws': - optional: true - '@langchain/cohere': - optional: true - '@langchain/community': - optional: true - '@langchain/google-genai': - optional: true - '@langchain/google-vertexai': - optional: true - '@langchain/google-vertexai-web': - optional: true - '@langchain/groq': - optional: true - '@langchain/mistralai': - optional: true - '@langchain/ollama': - optional: true - '@mendable/firecrawl-js': - optional: true - '@notionhq/client': - optional: true - '@pinecone-database/pinecone': - optional: true - '@supabase/supabase-js': - optional: true - '@vercel/kv': - optional: true - '@xata.io/client': - optional: true - apify-client: - optional: true - assemblyai: - optional: true - axios: - optional: true - cheerio: - optional: true - chromadb: - optional: true - convex: - optional: true - couchbase: - optional: true - d3-dsv: - optional: true - epub2: - optional: true - faiss-node: - optional: true - fast-xml-parser: - optional: true - handlebars: - optional: true - html-to-text: - optional: true - ignore: - optional: true - ioredis: - optional: true - jsdom: - optional: true - mammoth: - optional: true - mongodb: - optional: true - node-llama-cpp: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true - peggy: - optional: true - playwright: - optional: true - puppeteer: - optional: true - pyodide: - optional: true - redis: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - youtube-transcript: - optional: true - youtubei.js: - optional: true - - langchain@0.2.3: - resolution: { integrity: sha512-T9xR7zd+Nj0oXy6WoYKmZLy0DlQiDLFPGYWdOXDxy+AvqlujoPdVQgDSpdqiOHvAjezrByAoKxoHCz5XMwTP/Q== } - engines: { node: '>=18' } - peerDependencies: - '@aws-sdk/client-s3': ^3.310.0 - '@aws-sdk/client-sagemaker-runtime': ^3.310.0 - '@aws-sdk/client-sfn': ^3.310.0 - '@aws-sdk/credential-provider-node': ^3.388.0 - '@azure/storage-blob': ^12.15.0 - '@browserbasehq/sdk': '*' - '@gomomento/sdk': ^1.51.1 - '@gomomento/sdk-core': ^1.51.1 - '@gomomento/sdk-web': ^1.51.1 - '@mendable/firecrawl-js': ^0.0.13 - '@notionhq/client': ^2.2.10 - '@pinecone-database/pinecone': '*' - '@supabase/supabase-js': ^2.10.0 - '@vercel/kv': ^0.2.3 - '@xata.io/client': ^0.28.0 - apify-client: ^2.7.1 - assemblyai: ^4.0.0 - axios: '*' - cheerio: ^1.0.0-rc.12 - chromadb: '*' - convex: ^1.3.1 - couchbase: ^4.3.0 - d3-dsv: ^2.0.0 - epub2: ^3.0.1 - faiss-node: '*' - fast-xml-parser: '*' - handlebars: ^4.7.8 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - ioredis: ^5.3.2 - jsdom: '*' - mammoth: ^1.6.0 - mongodb: '>=5.2.0' - node-llama-cpp: '*' - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - pdf-parse: 1.1.1 - peggy: ^3.0.2 - playwright: ^1.32.1 - puppeteer: ^19.7.2 - pyodide: ^0.24.1 - redis: ^4.6.4 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.3 - typeorm: ^0.3.12 - weaviate-ts-client: '*' - web-auth-library: ^1.0.3 - ws: ^8.14.2 - youtube-transcript: ^1.0.6 - youtubei.js: ^9.1.0 - peerDependenciesMeta: - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sagemaker-runtime': - optional: true - '@aws-sdk/client-sfn': - optional: true - '@aws-sdk/credential-provider-node': - optional: true - '@azure/storage-blob': - optional: true - '@browserbasehq/sdk': - optional: true - '@gomomento/sdk': - optional: true - '@gomomento/sdk-core': - optional: true - '@gomomento/sdk-web': - optional: true - '@mendable/firecrawl-js': - optional: true - '@notionhq/client': - optional: true - '@pinecone-database/pinecone': - optional: true - '@supabase/supabase-js': - optional: true - '@vercel/kv': - optional: true - '@xata.io/client': - optional: true - apify-client: - optional: true - assemblyai: - optional: true - axios: - optional: true - cheerio: - optional: true - chromadb: - optional: true - convex: - optional: true - couchbase: - optional: true - d3-dsv: - optional: true - epub2: - optional: true - faiss-node: - optional: true - fast-xml-parser: - optional: true - handlebars: - optional: true - html-to-text: - optional: true - ignore: - optional: true - ioredis: - optional: true - jsdom: - optional: true - mammoth: - optional: true - mongodb: - optional: true - node-llama-cpp: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true - peggy: - optional: true - playwright: - optional: true - puppeteer: - optional: true - pyodide: - optional: true - redis: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - youtube-transcript: - optional: true - youtubei.js: - optional: true - - langchainhub@0.0.11: - resolution: { integrity: sha512-WnKI4g9kU2bHQP136orXr2bcRdgz9iiTBpTN0jWt9IlScUKnJBoD0aa2HOzHURQKeQDnt2JwqVmQ6Depf5uDLQ== } - - langchainhub@0.0.8: - resolution: { integrity: sha512-Woyb8YDHgqqTOZvWIbm2CaFDGfZ4NTSyXV687AG4vXEfoNo7cGQp7nhl7wL3ehenKWmNEmcxCLgOZzW8jE6lOQ== } - - langfuse-core@3.3.4: - resolution: { integrity: sha512-qGwkP+7Iv0oVJOd+m3/qRzQbHJ87repYvae+8iC9p6fqK/TOMYP1dBiyBDpk5ksOfOZe/6GkW22j8NQfUOSgFQ== } - engines: { node: '>=18' } - - langfuse-core@3.35.2: - resolution: { integrity: sha512-nHcoe/RPxwCAVvb91NDjVqvaXkBuVI6u9KuhCXLOasIOqMZRnXMeDhheAPE1ZtVGpmc3faYdPPGdobqRB+MdCg== } - engines: { node: '>=18' } - - langfuse-langchain@3.3.4: - resolution: { integrity: sha512-J936Rj+uKLC8DdaZ8d3D1SbRsyOKh/vnmhhsctHAl2PVnJI2sRKHqK2hyoP4NGb8H8dsah9kU3t5Ng86RaJlKg== } - engines: { node: '>=18' } - peerDependencies: - langchain: '>=0.0.157 <0.2.0' - - langfuse@3.3.4: - resolution: { integrity: sha512-QCUf+z2v+HDI78c02nsN7Fgu9jly67u4OwMRDeEQ/vOCiaUTKT4GLpYyzIL3sfl5DOp+pQsVozC/207CU8X1vw== } - engines: { node: '>=18' } - - langfuse@3.32.0: - resolution: { integrity: sha512-Qto8+CW8ZulNaZ/gn4JgVe5v/yeKbvMyvQ/s2DXO5bP5o1PmqE6YOCHQ3Uep6W94B8kpXUgOHg7ZS5Wg8Xljsw== } - engines: { node: '>=18' } - - langsmith@0.0.70: - resolution: { integrity: sha512-QFHrzo/efBowGPCxtObv7G40/OdwqQfGshavMbSJtHBgX+OMqnn4lCMqVeEwTdyue4lEcpwAsGNg5Vty91YIyw== } - hasBin: true - - langsmith@0.1.32: - resolution: { integrity: sha512-EUWHIH6fiOCGRYdzgwGoXwJxCMyUrL+bmUcxoVmkXoXoAGDOVinz8bqJLKbxotsQWqM64NKKsW85OTIutgNaMQ== } - peerDependencies: - '@langchain/core': 0.2.18 - langchain: '*' - openai: 4.51.0 - peerDependenciesMeta: - '@langchain/core': - optional: true - langchain: - optional: true - openai: - optional: true - - langsmith@0.1.39: - resolution: { integrity: sha512-K2/qbc96JhrZbSL74RbZ0DBOpTB9Mxicu8RQrZ88Xsp1bH2O3+y5EdcvC0g/1YzQWQhcQ4peknCA24c3VTNiNA== } - peerDependencies: - '@langchain/core': 0.2.18 - langchain: '*' - openai: 4.51.0 - peerDependenciesMeta: - '@langchain/core': - optional: true - langchain: - optional: true - openai: - optional: true - - langsmith@0.1.6: - resolution: { integrity: sha512-pLwepjtA7ki4aK20L1KqbJi55f10KVHHOSPAqzoNnAZqWv/YlHyxHhNrY/Nkxb+rM+hKLZNBMpmjlgvceEQtvw== } - hasBin: true - - language-subtag-registry@0.3.22: - resolution: { integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== } - - language-tags@1.0.9: - resolution: { integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== } - engines: { node: '>=0.10' } - - langwatch@0.1.1: - resolution: { integrity: sha512-rss9pU4CoVk4LnwsZwhVhBJ6iaG2r/0p5uDldDpOUt4i3C3WLMRjSJ8R6wJ5Kj9DRIRP3auELDxiBs1DI4qZPg== } - engines: { node: '>=18.0.0' } - - last-run@1.1.1: - resolution: { integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ== } - engines: { node: '>= 0.10' } - - latest-version@7.0.0: - resolution: { integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== } - engines: { node: '>=14.16' } - - launch-editor@2.6.1: - resolution: { integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== } - - layouts@0.11.0: - resolution: { integrity: sha512-Zt65tua9otUMsfoQMAKmUSMGBwgkchSCc33ko/xBBSGnc/Q4+G8gJgouynZy7/iSnzpt3+myRRDQ9HQ5cctSog== } - engines: { node: '>=0.10.0' } - - lazy-ass@1.6.0: - resolution: { integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== } - engines: { node: '> 0.8' } - - lazy-cache@0.2.7: - resolution: { integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ== } - engines: { node: '>=0.10.0' } - - lazy-cache@1.0.4: - resolution: { integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== } - engines: { node: '>=0.10.0' } - - lazy-cache@2.0.2: - resolution: { integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA== } - engines: { node: '>=0.10.0' } - - lazystream@1.0.1: - resolution: { integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== } - engines: { node: '>= 0.6.3' } - - lcid@1.0.0: - resolution: { integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== } - engines: { node: '>=0.10.0' } - - leac@0.6.0: - resolution: { integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== } - - lead@1.0.0: - resolution: { integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow== } - engines: { node: '>= 0.10' } - - leven@2.1.0: - resolution: { integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== } - engines: { node: '>=0.10.0' } - - leven@3.1.0: - resolution: { integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== } - engines: { node: '>=6' } - - levn@0.3.0: - resolution: { integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== } - engines: { node: '>= 0.8.0' } - - levn@0.4.1: - resolution: { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } - engines: { node: '>= 0.8.0' } - - lie@3.1.1: - resolution: { integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== } - - lie@3.3.0: - resolution: { integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== } - - liftoff@3.1.0: - resolution: { integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== } - engines: { node: '>= 0.8' } - - lilconfig@2.1.0: - resolution: { integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== } - engines: { node: '>=10' } - - lilconfig@3.1.2: - resolution: { integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== } - engines: { node: '>=14' } - - lines-and-columns@1.2.4: - resolution: { integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== } - - linkifyjs@4.1.3: - resolution: { integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg== } - - lint-staged@13.3.0: - resolution: { integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ== } - engines: { node: ^16.14.0 || >=18.0.0 } - hasBin: true + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - listr2@3.14.0: - resolution: { integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== } - engines: { node: '>=10.0.0' } - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - listr2@6.6.1: - resolution: { integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== } - engines: { node: '>=16.0.0' } - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - livereload-js@3.4.1: - resolution: { integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g== } + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - livereload@0.9.3: - resolution: { integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw== } - engines: { node: '>=8.0.0' } - hasBin: true + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - llamaindex@0.3.13: - resolution: { integrity: sha512-c/6Rvwdy5NNleS29rEOQTjcGfeXLfpI4CGX0MEPjy8yd1KjZIB5dPEED5vepvgoSL8shW+5452G3vmvwrD258Q== } - engines: { node: '>=18.0.0' } - peerDependencies: - '@notionhq/client': ^2.2.15 + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - llm-cost@1.0.4: - resolution: { integrity: sha512-2VQOroPSjyijGUkA8id61srReJXDJzftfOerly4HUIRNbYrPPt+4eqOIM1wL3vTOrIp7z//xevyoK/TsTH2fhQ== } + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - load-helpers@0.2.11: - resolution: { integrity: sha512-+iUnxQSddtpXoeRrza02jbJOUgCbJGG6GGeE4WTf6nV0Z0uR+/+/h2RMfDAl5SI4Cd/fu5xFPqo0ibP3v9y1ew== } - engines: { node: '>=0.10.0' } + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - load-json-file@1.1.0: - resolution: { integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== } - engines: { node: '>=0.10.0' } + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - load-pkg@3.0.1: - resolution: { integrity: sha512-wW6PBOWKbPceeIamjHjoacmI0F7Q+JdHoYl1nYE3lGOQCmq+xAnfIp24dqhUSfsO6Y7YSlrmyi3JxvSiRnoivg== } - engines: { node: '>=0.10.0' } + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - load-templates@0.11.4: - resolution: { integrity: sha512-roLgv19smhcE2x9mBvuuUzj3u3jRL+lWr+7u6v0KSk2wtdX0v8KOEHYZGBUdMjY1YPIh9864YQdO0SqpxiA+6Q== } - engines: { node: '>=0.10.0' } + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - load-templates@1.0.2: - resolution: { integrity: sha512-UUfhwRTBH9V4Uf0gGX7FqU5RUdi9IvJWrY1AaPRCRkV/LE/cbudUtY0+YXZs1fNp1J4PFlwOMyrtfzSOCtBbJA== } - engines: { node: '>=0.10.0' } + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - load-tsconfig@0.2.5: - resolution: { integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - load-yaml-file@0.2.0: - resolution: { integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== } - engines: { node: '>=6' } + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - loader-runner@4.3.0: - resolution: { integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== } - engines: { node: '>=6.11.5' } + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - loader-utils@2.0.4: - resolution: { integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== } - engines: { node: '>=8.9.0' } + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} - loader-utils@3.2.1: - resolution: { integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== } - engines: { node: '>= 12.13.0' } + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} - localforage@1.10.0: - resolution: { integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== } + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - locate-character@3.0.0: - resolution: { integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA== } + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} - locate-path@3.0.0: - resolution: { integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== } - engines: { node: '>=6' } + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - locate-path@5.0.0: - resolution: { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } - engines: { node: '>=8' } + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} - locate-path@6.0.0: - resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } - engines: { node: '>=10' } + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} - locate-path@7.2.0: - resolution: { integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} - lodash-es@4.17.21: - resolution: { integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== } + mime-types@3.0.0: + resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==} + engines: {node: '>= 0.6'} - lodash._arrayfilter@3.0.0: - resolution: { integrity: sha512-xi4jscMHMkWtF8vXNpmvAXTmes6gKMpXsWM8kKuJ5tfk/VhJujrAG2sVc/LBsUERkReV9blMG2GD4SjPHyqaTw== } + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true - lodash._basecallback@3.3.1: - resolution: { integrity: sha512-LQffghuO63ufDY33KKO1ezGKbcFZK3ngYV7JpxaUomoM5acf0YeXU3Pm8csVE0girVs50TXzfNibl69Co3ggJA== } + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true - lodash._baseeach@3.0.4: - resolution: { integrity: sha512-IqUZ9MQo2UT1XPGuBntInqTOlc+oV+bCo0kMp+yuKGsfvRSNgUW0YjWVZUrG/gs+8z/Eyuc0jkJjOBESt9BXxg== } + mime@4.0.4: + resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + engines: {node: '>=16'} + hasBin: true - lodash._basefilter@3.0.0: - resolution: { integrity: sha512-EjWjqBE5KHmvrzgZ9tSvt7ggGmDF0pjPzaiUONQ97M4+YDYW8VMH3VnyKS/JHFoqDAYEIIx+3/Tg4C0zlC6qPA== } + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - lodash._baseisequal@3.0.7: - resolution: { integrity: sha512-U+3GsNEZj9ebI03ncLC2pLmYVjgtYZEwdkAPO7UGgtGvAz36JVFPAQUufpSaVL93Cz5arc6JGRKZRhaOhyVJYA== } + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} - lodash._baseismatch@3.1.3: - resolution: { integrity: sha512-lq0Z+O/HfAJ16frtiZnvi2sLQrFfcYxK2q5R+n10+cWbXQ/Mz6R52mLOX/8R3npLGIO7Rq7zNP7ENTCJB/GN+g== } + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} - lodash._basematches@3.2.0: - resolution: { integrity: sha512-E6aibw9mFnfTO8z4zu1Fc2Pgv102/c11RtunY0MBdnIRWy27CtwnTVBQjfXohtUoDH1BI+vxZ9+b2JJY13dt3A== } + mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} - lodash._bindcallback@3.0.1: - resolution: { integrity: sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ== } + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} - lodash._createwrapper@3.2.0: - resolution: { integrity: sha512-O8fi7P57KZQjtTJN3tbUAJsm6Coo35JVi4OiEU/WV0rrqaWemk+rRB/1ohiIiv1cIK3dIkVhMehaFOFyNZDYkQ== } + 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} - lodash._getnative@3.9.1: - resolution: { integrity: sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA== } + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} - lodash._reinterpolate@3.0.0: - resolution: { integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== } + mini-css-extract-plugin@2.8.1: + resolution: {integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 - lodash._replaceholders@3.0.0: - resolution: { integrity: sha512-FbnZp+6+UaT8VzGNXUK8nIH7rC/P+c2te5R/rpjgwLY27OsEMqCyF6yOxqHMj9Qv3yelSVVuYzCjtrJzcKbAhg== } + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - lodash._root@3.0.1: - resolution: { integrity: sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ== } + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - lodash.assign@4.2.0: - resolution: { integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== } + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} - lodash.bind@3.1.0: - resolution: { integrity: sha512-GaXlyWuJbyuJ54vRypYLVq1NS4v7QIBVicEX4lmW8PE5XaltCuFzWLG4WuXKYQ7SKfzxkiEsadQyuVOxym7paQ== } + minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} - lodash.camelcase@4.3.0: - resolution: { integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== } + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} - lodash.castarray@4.4.0: - resolution: { integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== } + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} - lodash.curry@4.1.1: - resolution: { integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== } + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - lodash.debounce@4.0.8: - resolution: { integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== } + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} - lodash.defaults@4.2.0: - resolution: { integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== } + minipass-fetch@1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} - lodash.filter@4.6.0: - resolution: { integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ== } + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - lodash.flatten@4.4.0: - resolution: { integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== } + minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - lodash.flow@3.5.0: - resolution: { integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== } + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} - lodash.foreach@4.5.0: - resolution: { integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ== } + minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - lodash.initial@4.1.1: - resolution: { integrity: sha512-/eZXy8y0IGQTuCKScq32mU+O/Qc160EfYPrAD7y4oXPAgWdQvyxxhTOIpl+tDfP86yT7jrMtUA8noSqYUdKWQg== } + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} - lodash.isarguments@3.1.0: - resolution: { integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== } + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} - lodash.isarray@3.0.4: - resolution: { integrity: sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ== } + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} - lodash.isequal@4.5.0: - resolution: { integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== } + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} - lodash.isplainobject@4.0.6: - resolution: { integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== } + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} - lodash.isstring@4.0.1: - resolution: { integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== } + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} - lodash.istypedarray@3.0.6: - resolution: { integrity: sha512-lGWJ6N8AA3KSv+ZZxlTdn4f6A7kMfpJboeyvbFdE7IU9YAgweODqmOgdUHOA+c6lVWeVLysdaxciFXi+foVsWw== } + mitt@3.0.0: + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} - lodash.keys@3.1.2: - resolution: { integrity: sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ== } + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} - lodash.last@3.0.0: - resolution: { integrity: sha512-14mq7rSkCxG4XMy9lF2FbIOqqgF0aH0NfPuQ3LPR3vIh0kHnUvIYP70dqa1Hf47zyXfQ8FzAg0MYOQeSuE1R7A== } + mj-context-menu@0.6.1: + resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} - lodash.map@4.6.0: - resolution: { integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q== } + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - lodash.memoize@4.1.2: - resolution: { integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== } + mkdirp-infer-owner@2.0.0: + resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} + engines: {node: '>=10'} - lodash.merge@4.6.2: - resolution: { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true - lodash.once@4.1.1: - resolution: { integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== } + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true - lodash.pairs@3.0.1: - resolution: { integrity: sha512-lgXvpU43ZNQrZ/pK2cR97YzKeAno3e3HhcyvLKsofljeHKrQcZhT1vW7fg4X61c92tM+mjD/DypoLZYuAKNIkQ== } + mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true - lodash.restparam@3.6.1: - resolution: { integrity: sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw== } + ml-array-mean@1.1.6: + resolution: {integrity: sha512-MIdf7Zc8HznwIisyiJGRH9tRigg3Yf4FldW8DxKxpCCv/g5CafTw0RRu51nojVEOXuCQC7DRVVu5c7XXO/5joQ==} - lodash.sortby@4.7.0: - resolution: { integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== } + ml-array-sum@1.1.6: + resolution: {integrity: sha512-29mAh2GwH7ZmiRnup4UyibQZB9+ZLyMShvt4cH4eTK+cL2oEMIZFnSyB3SS8MlsTh6q/w/yh48KmqLxmovN4Dw==} - lodash.template@4.5.0: - resolution: { integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== } + ml-distance-euclidean@2.0.0: + resolution: {integrity: sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q==} - lodash.templatesettings@4.2.0: - resolution: { integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== } + ml-distance@4.0.1: + resolution: {integrity: sha512-feZ5ziXs01zhyFUUUeZV5hwc0f5JW0Sh0ckU1koZe/wdVkJdGxcP06KNQuF0WBTj8FttQUzcvQcpcrOp/XrlEw==} - lodash.truncate@4.4.2: - resolution: { integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== } + ml-tree-similarity@1.0.0: + resolution: {integrity: sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg==} - lodash.uniq@4.5.0: - resolution: { integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== } + mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} - lodash.where@3.1.0: - resolution: { integrity: sha512-9iH6No94IEtewjRRAykRVVW4Sw0DULKFp9H7x92MvbYUjg5EHj/+o58/Jx/kxAu7UWJLItwBH4FemHaQIGFIeg== } + module-details-from-path@1.0.3: + resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} - lodash@4.17.21: - resolution: { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== } + moment-timezone@0.5.45: + resolution: {integrity: sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==} - log-ok@0.1.1: - resolution: { integrity: sha512-cc8VrkS6C+9TFuYAwuHpshrcrGRAv7d0tUJ0GdM72ZBlKXtlgjUZF84O+OhQUdiVHoF7U/nVxwpjOdwUJ8d3Vg== } - engines: { node: '>=0.10.0' } + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - log-symbols@4.1.0: - resolution: { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } - engines: { node: '>=10' } + monaco-editor@0.50.0: + resolution: {integrity: sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA==} - log-update@4.0.0: - resolution: { integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== } - engines: { node: '>=10' } + mongodb-connection-string-url@3.0.0: + resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} - log-update@5.0.1: - resolution: { integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + mongodb@6.3.0: + resolution: {integrity: sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.2.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true - log-utils@0.1.5: - resolution: { integrity: sha512-5jLIj9RWWYxQbBhHDvNZTZE3J/oSTbw/fuPmsXJg8/vbY/4XiJ4YAiEPrwo3dLbcB/n9k1qTznOVr6IigiaF7A== } - engines: { node: '>=0.10.0' } + mongodb@6.6.2: + resolution: {integrity: sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.2.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true - log-utils@0.2.1: - resolution: { integrity: sha512-udyegKoMz9eGfpKAX//Khy7sVAZ8b1F7oLDnepZv/1/y8xTvsyPgqQrM94eG8V0vcc2BieYI2kVW4+aa6m+8Qw== } - engines: { node: '>=0.10.0' } + mongodb@6.7.0: + resolution: {integrity: sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.2.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true - logform@2.6.0: - resolution: { integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== } - engines: { node: '>= 12.0.0' } + mongoose@8.5.2: + resolution: {integrity: sha512-GZB4rHMdYfGatV+23IpCrqFbyCOjCNOHXgWbirr92KRwTEncBrtW3kgU9vmpKjsGf7nMmnAy06SwWUv1vhDkSg==} + engines: {node: '>=16.20.1'} - long@4.0.0: - resolution: { integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== } + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} - long@5.2.3: - resolution: { integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== } + mqtt-packet@6.10.0: + resolution: {integrity: sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==} - longest-streak@2.0.4: - resolution: { integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== } + mqtt@4.3.8: + resolution: {integrity: sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==} + engines: {node: '>=10.0.0'} + hasBin: true - longest-streak@3.1.0: - resolution: { integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== } + mquery@5.0.0: + resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} + engines: {node: '>=14.0.0'} - longest@1.0.1: - resolution: { integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== } - engines: { node: '>=0.10.0' } + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} - loose-envify@1.4.0: - resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } - hasBin: true + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} - lop@0.4.1: - resolution: { integrity: sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ== } + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} - lop@0.4.2: - resolution: { integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw== } + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - lower-case@1.1.4: - resolution: { integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== } + ms@2.1.1: + resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - lower-case@2.0.2: - resolution: { integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== } + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - lowercase-keys@2.0.0: - resolution: { integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== } - engines: { node: '>=8' } + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - lowercase-keys@3.0.0: - resolution: { integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true - lowlight@1.12.1: - resolution: { integrity: sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w== } + msgpackr@1.11.2: + resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} - lowlight@1.20.0: - resolution: { integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== } + multer-s3@3.0.1: + resolution: {integrity: sha512-BFwSO80a5EW4GJRBdUuSHblz2jhVSAze33ZbnGpcfEicoT0iRolx4kWR+AJV07THFRCQ78g+kelKFdjkCCaXeQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.0.0 - lru-cache@10.2.0: - resolution: { integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== } - engines: { node: 14 || >=16.14 } + multer@1.4.5-lts.1: + resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} + engines: {node: '>= 6.0.0'} - lru-cache@4.1.5: - resolution: { integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== } + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true - lru-cache@5.1.1: - resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } + multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} - lru-cache@6.0.0: - resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } - engines: { node: '>=10' } + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true - lru-cache@7.18.3: - resolution: { integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== } - engines: { node: '>=12' } + mute-stdout@1.0.1: + resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==} + engines: {node: '>= 0.10'} - lru-cache@8.0.5: - resolution: { integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA== } - engines: { node: '>=16.14' } + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - lru-cache@9.1.2: - resolution: { integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ== } - engines: { node: 14 || >=16.14 } + mysql2@3.13.0: + resolution: {integrity: sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==} + engines: {node: '>= 8.0'} - lunary@0.6.16: - resolution: { integrity: sha512-LVuABIuZxtxN55zLdRQjXG01S0wQ8U2Psd0/7z+wxK3L2tx6jFk3XIGsRXjXEgcwMAI7KQDrkoGIwtsHmhRcDQ== } - peerDependencies: - openai: 4.51.0 - react: '>=17.0.0' - peerDependenciesMeta: - openai: - optional: true - react: - optional: true + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - lz-string@1.5.0: - resolution: { integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== } - hasBin: true + named-placeholders@1.1.3: + resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} + engines: {node: '>=12.0.0'} - magic-bytes.js@1.10.0: - resolution: { integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ== } + nan@2.19.0: + resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - magic-string@0.25.9: - resolution: { integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== } + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} - magic-string@0.27.0: - resolution: { integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== } - engines: { node: '>=12' } + nanoclone@0.2.1: + resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} - magic-string@0.30.10: - resolution: { integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== } + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - magic-string@0.30.8: - resolution: { integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== } - engines: { node: '>=12' } + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - make-dir@3.1.0: - resolution: { integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== } - engines: { node: '>=8' } + nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true - make-dir@4.0.0: - resolution: { integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== } - engines: { node: '>=10' } + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} - make-error@1.3.6: - resolution: { integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== } + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - make-fetch-happen@10.2.1: - resolution: { integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - make-fetch-happen@11.1.1: - resolution: { integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - make-fetch-happen@9.1.0: - resolution: { integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== } - engines: { node: '>= 10' } + natural-orderby@2.0.3: + resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} - make-iterator@1.0.1: - resolution: { integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== } - engines: { node: '>=0.10.0' } + natural@6.12.0: + resolution: {integrity: sha512-ZV/cuaxOvJ7CSxQRYHc6nlx7ql6hVPQc20N5ubdqVbotWnnqsNc+0/QG+ACIC3XPQ4rfrQrdC/1k47v1cSszTQ==} + engines: {node: '>=0.4.10'} - makeerror@1.0.12: - resolution: { integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== } + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - mammoth@1.7.0: - resolution: { integrity: sha512-ptFhft61dqieLffpdpHD7PUS0cX9YvHQIO3n3ejRhj1bi5Na+RL5wovtNHHXAK6Oj554XfGrVcyTuxgegN6umw== } - engines: { node: '>=12.0.0' } - hasBin: true + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} - mammoth@1.7.2: - resolution: { integrity: sha512-MqWU2hcLf1I5QMKyAbfJCvrLxnv5WztrAQyorfZ+WPq7Hk82vZFmvfR2/64ajIPpM4jlq0TXp1xZvp/FFaL1Ug== } - engines: { node: '>=12.0.0' } - hasBin: true + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - mammoth@1.9.0: - resolution: { integrity: sha512-F+0NxzankQV9XSUAuVKvkdQK0GbtGGuqVnND9aVf9VSeUA82LQa29GjLqYU6Eez8LHqSJG3eGiDW3224OKdpZg== } - engines: { node: '>=12.0.0' } - hasBin: true + neo4j-driver-bolt-connection@5.28.1: + resolution: {integrity: sha512-nY8GBhjOW7J0rDtpiyJn6kFdk2OiNVZZhZrO8//mwNXnf5VQJ6HqZQTDthH/9pEaX0Jvbastz1xU7ZL8xzqY0w==} - map-cache@0.2.2: - resolution: { integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== } - engines: { node: '>=0.10.0' } + neo4j-driver-core@5.28.1: + resolution: {integrity: sha512-14vN8TlxC0JvJYfjWic5PwjsZ38loQLOKFTXwk4fWLTbCk6VhrhubB2Jsy9Rz+gM6PtTor4+6ClBEFDp1q/c8g==} - map-config@0.5.0: - resolution: { integrity: sha512-7pgduXtyOXZ/py4n6IM8G+7wanqbRDPK5Myp7P3jUUAFQwzGDeuMm0N8Dxrwaf3bySqJpne4NdglRUxdw7I7QQ== } - engines: { node: '>=0.10.0' } + neo4j-driver@5.28.1: + resolution: {integrity: sha512-jbyBwyM0a3RLGcP43q3hIxPUPxA+1bE04RovOKdNAS42EtBMVCKcPSeOvWiHxgXp1ZFd0a8XqK+7LtguInOLUg==} - map-schema@0.2.4: - resolution: { integrity: sha512-1sgduImleUF+8NiS1wlqDJ8uhmJtFbLRjVW3PZP5IZJd1n+11eV91AnHI4jOYT2UCirriivNUgh6DG73V+G9QQ== } - engines: { node: '>=0.10.0' } + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} - map-stream@0.1.0: - resolution: { integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== } + next-auth@4.24.7: + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + peerDependencies: + next: ^12.2.5 || ^13 || ^14 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true - map-visit@0.1.5: - resolution: { integrity: sha512-zdmJBFvvVR/H5wCfsCP7XxSLp+346yAZ30Wy2OsQLcH19OVGMWa3Ms9quO00lj9ybsySu3gKOINNgICb4Zqauw== } - engines: { node: '>=0.10.0' } + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + next@14.2.5: + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true - map-visit@1.0.0: - resolution: { integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== } - engines: { node: '>=0.10.0' } + nim-container-manager@1.0.4: + resolution: {integrity: sha512-OJgP279SGRVDoUBmXug1GuXTohCt+udCAb8EEIaTEQ6/aXg+/XOSjSp4REg5ne/Tl6sfnhvhzwyPHjPjJ+DUoA==} - markdown-extensions@2.0.0: - resolution: { integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== } - engines: { node: '>=16' } + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - markdown-table@2.0.0: - resolution: { integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== } + node-abi@3.56.0: + resolution: {integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==} + engines: {node: '>=10'} - markdown-table@3.0.3: - resolution: { integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== } + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - match-file@0.2.2: - resolution: { integrity: sha512-BDEZIcrBSnooL0zC72Yt3z1HhJiCq+2pMnHKVDeYN/cilCrz3KrpqKPm4ZOfWCoDolRl4QyKQpfRlQWF6PqnjQ== } - engines: { node: '>=0.10.0' } + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - matchdep@2.0.0: - resolution: { integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA== } - engines: { node: '>= 0.10.0' } + node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} - matched@0.4.4: - resolution: { integrity: sha512-zpasnbB5vQkvb0nfcKV0zEoGgMtV7atlWR1Vk3E8tEKh6EicMseKtVV+5vc+zsZwvDlcNMKlKK/CVOEeAalYRQ== } - engines: { node: '>= 0.12.0' } + node-addon-api@8.3.1: + resolution: {integrity: sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==} + engines: {node: ^18 || ^20 || >= 21} - matched@1.0.2: - resolution: { integrity: sha512-7ivM1jFZVTOOS77QsR+TtYHH0ecdLclMkqbf5qiJdX2RorqfhsL65QHySPZgDE0ZjHoh+mQUNHTanNXIlzXd0Q== } - engines: { node: '>= 0.12.0' } + node-api-headers@1.1.0: + resolution: {integrity: sha512-ucQW+SbYCUPfprvmzBsnjT034IGRB2XK8rRc78BgjNKhTdFKgAwAmgW704bKIBmcYW48it0Gkjpkd39Azrwquw==} - material-colors@1.2.6: - resolution: { integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== } + node-cleanup@2.1.2: + resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} - math-random@1.0.4: - resolution: { integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== } + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} - mathjax-full@3.2.2: - resolution: { integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w== } + node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} - md-utils-ts@2.0.0: - resolution: { integrity: sha512-sMG6JtX0ebcRMHxYTcmgsh0/m6o8hGdQHFE2OgjvflRZlQM51CGGj/uuk056D+12BlCiW0aTpt/AdlDNtgQiew== } + node-ensure@0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} - md5@2.3.0: - resolution: { integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== } + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} - mdast-util-definitions@5.1.2: - resolution: { integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== } + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - mdast-util-directive@3.0.0: - resolution: { integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== } + node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true - mdast-util-find-and-replace@1.1.1: - resolution: { integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== } + 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: + encoding: + optional: true - mdast-util-find-and-replace@2.2.2: - resolution: { integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== } + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - mdast-util-find-and-replace@3.0.1: - resolution: { integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== } + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} - mdast-util-from-markdown@0.8.5: - resolution: { integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== } + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true - mdast-util-from-markdown@1.3.1: - resolution: { integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== } + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + + node-gyp@8.4.1: + resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} + engines: {node: '>= 10.12.0'} + hasBin: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-html-markdown@1.3.0: + resolution: {integrity: sha512-OeFi3QwC/cPjvVKZ114tzzu+YoR+v9UXW5RwSXGUqGb0qCl0DvP406tzdL7SFn8pZrMyzXoisfG2zcuF9+zw4g==} + engines: {node: '>=10.0.0'} + + node-html-parser@6.1.12: + resolution: {integrity: sha512-/bT/Ncmv+fbMGX96XG9g05vFt43m/+SYKIs9oAemQVYyVcZmDAI2Xq/SbNcpOA35eF0Zk2av3Ksf+Xk8Vt8abA==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nodemon@2.0.22: + resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} + engines: {node: '>=8.10.0'} + hasBin: true + + nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + notion-md-crawler@1.0.0: + resolution: {integrity: sha512-mdB6zn/i32qO2C7X7wZLDpWvFryO3bPYMuBfFgmTPomnfEtIejdQJNVaZzw2GapM82lfWZ5dfsZp3s3UL4p1Fg==} + + notion-to-md@3.1.1: + resolution: {integrity: sha512-Zaa2P1B9Rx99bevFYTGuUMYbbfdHn2G1AZMsytYGDWIJjr6Ie1qp/8CorpwVUh1qrquES/V2PkEREqCuTu1zKA==} + engines: {node: '>=12'} + + notistack@2.0.8: + resolution: {integrity: sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + '@mui/material': ^5.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true - mdast-util-from-markdown@2.0.1: - resolution: { integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA== } + now-and-later@2.0.1: + resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} + engines: {node: '>= 0.10'} - mdast-util-frontmatter@2.0.1: - resolution: { integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== } + npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - mdast-util-gfm-autolink-literal@0.1.3: - resolution: { integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== } + npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-autolink-literal@1.0.3: - resolution: { integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== } + npm-install-checks@4.0.0: + resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} + engines: {node: '>=10'} - mdast-util-gfm-autolink-literal@2.0.1: - resolution: { integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== } + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-footnote@1.0.2: - resolution: { integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== } + npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - mdast-util-gfm-footnote@2.0.0: - resolution: { integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== } + npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - mdast-util-gfm-strikethrough@0.2.3: - resolution: { integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== } + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-strikethrough@1.0.3: - resolution: { integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== } + npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-strikethrough@2.0.0: - resolution: { integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== } + npm-package-arg@8.1.5: + resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} + engines: {node: '>=10'} - mdast-util-gfm-table@0.1.6: - resolution: { integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== } + npm-packlist@3.0.0: + resolution: {integrity: sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==} + engines: {node: '>=10'} + hasBin: true - mdast-util-gfm-table@1.0.7: - resolution: { integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== } + npm-packlist@7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-table@2.0.0: - resolution: { integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== } + npm-pick-manifest@6.1.1: + resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} - mdast-util-gfm-task-list-item@0.1.6: - resolution: { integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== } + npm-pick-manifest@8.0.2: + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm-task-list-item@1.0.2: - resolution: { integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== } + npm-registry-fetch@12.0.2: + resolution: {integrity: sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} - mdast-util-gfm-task-list-item@2.0.0: - resolution: { integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== } + npm-registry-fetch@14.0.5: + resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - mdast-util-gfm@0.1.2: - resolution: { integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== } + npm-run-path@1.0.0: + resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==} + engines: {node: '>=0.10.0'} - mdast-util-gfm@2.0.2: - resolution: { integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== } + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} - mdast-util-gfm@3.0.0: - resolution: { integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== } + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - mdast-util-math@2.0.2: - resolution: { integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ== } + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. - mdast-util-mdx-expression@2.0.0: - resolution: { integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== } + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. - mdast-util-mdx-jsx@3.1.3: - resolution: { integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ== } + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - mdast-util-mdx@3.0.0: - resolution: { integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== } + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - mdast-util-mdxjs-esm@2.0.1: - resolution: { integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== } + num-sort@2.1.0: + resolution: {integrity: sha512-1MQz1Ed8z2yckoBeSfkQHHO9K1yDRxxtotKSJ9yvcTUUxSvfvzEq5GwBrjjHEpMlq/k5gvXdmJ1SbYxWtpNoVg==} + engines: {node: '>=8'} - mdast-util-phrasing@3.0.1: - resolution: { integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== } + number-allocator@1.0.14: + resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - mdast-util-phrasing@4.1.0: - resolution: { integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== } + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} - mdast-util-to-hast@12.3.0: - resolution: { integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== } + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - mdast-util-to-hast@13.1.0: - resolution: { integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== } + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} - mdast-util-to-markdown@0.6.5: - resolution: { integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== } + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} - mdast-util-to-markdown@1.5.0: - resolution: { integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== } + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true - mdast-util-to-markdown@2.1.0: - resolution: { integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== } + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} - mdast-util-to-string@2.0.0: - resolution: { integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== } + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} - mdast-util-to-string@3.2.0: - resolution: { integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== } + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - mdast-util-to-string@4.0.0: - resolution: { integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== } + oauth4webapi@2.11.1: + resolution: {integrity: sha512-aNzOnL98bL6izG97zgnZs1PFEyO4WDVRhz2Pd066NPak44w5ESLRCYmJIyey8avSBPOMtBjhF3ZDDm7bIb7UOg==} - mdn-data@2.0.14: - resolution: { integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== } + oauth@0.10.0: + resolution: {integrity: sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==} - mdn-data@2.0.28: - resolution: { integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== } + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - mdn-data@2.0.30: - resolution: { integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== } + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - mdn-data@2.0.4: - resolution: { integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== } + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} - media-typer@0.3.0: - resolution: { integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== } - engines: { node: '>= 0.6' } + object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} - mem-fs-editor@9.7.0: - resolution: { integrity: sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg== } - engines: { node: '>=12.10.0' } - peerDependencies: - mem-fs: ^2.1.0 - peerDependenciesMeta: - mem-fs: - optional: true + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - mem-fs@2.3.0: - resolution: { integrity: sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw== } - engines: { node: '>=12' } + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - memfs@3.5.3: - resolution: { integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw== } - engines: { node: '>= 4.0.0' } + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} - memjs@1.3.2: - resolution: { integrity: sha512-qUEg2g8vxPe+zPn09KidjIStHPtoBO8Cttm8bgJFWWabbsjQ9Av9Ky+6UcvKx6ue0LLb/LEhtcyQpRyKfzeXcg== } - engines: { node: '>=0.10.0' } + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} - memoize-one@5.2.1: - resolution: { integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== } + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} - memory-pager@1.5.0: - resolution: { integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== } + object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} - memory-stream@1.0.0: - resolution: { integrity: sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww== } + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} - merge-deep@3.0.3: - resolution: { integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== } - engines: { node: '>=0.10.0' } + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} - merge-descriptors@1.0.1: - resolution: { integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== } + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} - merge-stream@0.1.8: - resolution: { integrity: sha512-ivGsLZth/AkvevAzPlRLSie8Q3GdyH/5xUYgn+ItAJYslT0NsKd2cxx0bAjmqoY5swX0NoWJjvkDkfpaVZx9lw== } + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} - merge-stream@1.0.1: - resolution: { integrity: sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA== } + object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} - merge-stream@2.0.0: - resolution: { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} - merge-value@1.0.0: - resolution: { integrity: sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ== } - engines: { node: '>=0.10.0' } + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} - merge2@1.4.1: - resolution: { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } - engines: { node: '>= 8' } + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} - methods@1.1.2: - resolution: { integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== } - engines: { node: '>= 0.6' } + object.getownpropertydescriptors@2.1.7: + resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} + engines: {node: '>= 0.8'} - mhchemparser@4.2.1: - resolution: { integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ== } + object.groupby@1.0.2: + resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} - micromark-core-commonmark@1.1.0: - resolution: { integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== } + object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} - micromark-core-commonmark@2.0.1: - resolution: { integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA== } + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} - micromark-extension-directive@3.0.1: - resolution: { integrity: sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg== } + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} - micromark-extension-frontmatter@2.0.0: - resolution: { integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== } + object.reduce@1.0.1: + resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} + engines: {node: '>=0.10.0'} - micromark-extension-gfm-autolink-literal@0.5.7: - resolution: { integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== } + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} - micromark-extension-gfm-autolink-literal@1.0.5: - resolution: { integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg== } + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: { integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== } + obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} - micromark-extension-gfm-footnote@1.1.2: - resolution: { integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q== } + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - micromark-extension-gfm-footnote@2.1.0: - resolution: { integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== } + oclif@3.17.2: + resolution: {integrity: sha512-+vFXxgmR7dGGz+g6YiqSZu2LXVkBMaS9/rhtsLGkYw45e53CW/3kBgPRnOvxcTDM3Td9JPeBD2JWxXnPKGQW3A==} + engines: {node: '>=12.0.0'} + hasBin: true - micromark-extension-gfm-strikethrough@0.6.5: - resolution: { integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== } + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - micromark-extension-gfm-strikethrough@1.0.7: - resolution: { integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw== } + oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} - micromark-extension-gfm-strikethrough@2.1.0: - resolution: { integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== } + ollama@0.5.14: + resolution: {integrity: sha512-pvOuEYa2WkkAumxzJP0RdEYHkbZ64AYyyUszXVX7ruLvk5L+EiO2G71da2GqEQ4IAk4j6eLoUbGk5arzFT1wJA==} - micromark-extension-gfm-table@0.4.3: - resolution: { integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== } + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} - micromark-extension-gfm-table@1.0.7: - resolution: { integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw== } + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} - micromark-extension-gfm-table@2.1.0: - resolution: { integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== } + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} - micromark-extension-gfm-tagfilter@0.3.0: - resolution: { integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== } + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - micromark-extension-gfm-tagfilter@1.0.2: - resolution: { integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g== } + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - micromark-extension-gfm-tagfilter@2.0.0: - resolution: { integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== } + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} - micromark-extension-gfm-task-list-item@0.3.3: - resolution: { integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== } + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} - micromark-extension-gfm-task-list-item@1.0.5: - resolution: { integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ== } + onnx-proto@4.0.4: + resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==} - micromark-extension-gfm-task-list-item@2.1.0: - resolution: { integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== } + onnxruntime-common@1.14.0: + resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==} - micromark-extension-gfm@0.3.3: - resolution: { integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== } + onnxruntime-node@1.14.0: + resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==} + os: [win32, darwin, linux] - micromark-extension-gfm@2.0.3: - resolution: { integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ== } + onnxruntime-web@1.14.0: + resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==} - micromark-extension-gfm@3.0.0: - resolution: { integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== } + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} - micromark-extension-math@2.1.2: - resolution: { integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg== } + openai-chat-tokens@0.2.8: + resolution: {integrity: sha512-nW7QdFDIZlAYe6jsCT/VPJ/Lam3/w2DX9oxf/5wHpebBT49KI3TN43PPhYlq1klq2ajzXWKNOLY6U4FNZM7AoA==} - micromark-extension-mdx-expression@3.0.0: - resolution: { integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== } + openai@4.82.0: + resolution: {integrity: sha512-1bTxOVGZuVGsKKUWbh3BEwX1QxIXUftJv+9COhhGGVDTFwiaOd4gWsMynF2ewj1mg6by3/O+U8+EEHpWRdPaJg==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.23.8 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true - micromark-extension-mdx-jsx@3.0.1: - resolution: { integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg== } + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - micromark-extension-mdx-md@2.0.0: - resolution: { integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== } + openapi-typescript-fetch@1.1.3: + resolution: {integrity: sha512-smLZPck4OkKMNExcw8jMgrMOGgVGx2N/s6DbKL2ftNl77g5HfoGpZGFy79RBzU/EkaO0OZpwBnslfdBfh7ZcWg==} + engines: {node: '>= 12.0.0', npm: '>= 7.0.0'} - micromark-extension-mdxjs-esm@3.0.0: - resolution: { integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== } + openapi-typescript@6.7.6: + resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==} + hasBin: true - micromark-extension-mdxjs@3.0.0: - resolution: { integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== } + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true - micromark-factory-destination@1.1.0: - resolution: { integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== } + openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} - micromark-factory-destination@2.0.0: - resolution: { integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== } + option@0.2.4: + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} - micromark-factory-label@1.1.0: - resolution: { integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== } + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} - micromark-factory-label@2.0.0: - resolution: { integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== } + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} - micromark-factory-mdx-expression@2.0.2: - resolution: { integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw== } + opts@2.0.2: + resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==} - micromark-factory-space@1.1.0: - resolution: { integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== } + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} - micromark-factory-space@2.0.0: - resolution: { integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== } + ordered-read-streams@1.0.1: + resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} - micromark-factory-title@1.1.0: - resolution: { integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== } + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} - micromark-factory-title@2.0.0: - resolution: { integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== } + os-locale@1.4.0: + resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} + engines: {node: '>=0.10.0'} - micromark-factory-whitespace@1.1.0: - resolution: { integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== } + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} - micromark-factory-whitespace@2.0.0: - resolution: { integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== } + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} - micromark-util-character@1.2.0: - resolution: { integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== } + ow@0.28.2: + resolution: {integrity: sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q==} + engines: {node: '>=12'} - micromark-util-character@2.1.0: - resolution: { integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== } + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} - micromark-util-chunked@1.1.0: - resolution: { integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== } + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} - micromark-util-chunked@2.0.0: - resolution: { integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== } + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} - micromark-util-classify-character@1.1.0: - resolution: { integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== } + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} - micromark-util-classify-character@2.0.0: - resolution: { integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== } + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} - micromark-util-combine-extensions@1.1.0: - resolution: { integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== } + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} - micromark-util-combine-extensions@2.0.0: - resolution: { integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== } + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: { integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== } + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: { integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== } + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} - micromark-util-decode-string@1.1.0: - resolution: { integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== } + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} - micromark-util-decode-string@2.0.0: - resolution: { integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== } + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - micromark-util-encode@1.1.0: - resolution: { integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== } + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} - micromark-util-encode@2.0.0: - resolution: { integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== } + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} - micromark-util-events-to-acorn@2.0.2: - resolution: { integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== } + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} - micromark-util-html-tag-name@1.2.0: - resolution: { integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== } + p-throttle@4.1.1: + resolution: {integrity: sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==} + engines: {node: '>=10'} - micromark-util-html-tag-name@2.0.0: - resolution: { integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== } + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} - micromark-util-normalize-identifier@1.1.0: - resolution: { integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== } + p-transform@1.3.0: + resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} + engines: {node: '>=12.10.0'} - micromark-util-normalize-identifier@2.0.0: - resolution: { integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== } + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - micromark-util-resolve-all@1.1.0: - resolution: { integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== } + pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + engines: {node: '>= 14'} - micromark-util-resolve-all@2.0.0: - resolution: { integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== } + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} - micromark-util-sanitize-uri@1.2.0: - resolution: { integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== } + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} - micromark-util-sanitize-uri@2.0.0: - resolution: { integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== } + packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - micromark-util-subtokenize@1.1.0: - resolution: { integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== } + pacote@12.0.3: + resolution: {integrity: sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true - micromark-util-subtokenize@2.0.1: - resolution: { integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q== } + pacote@15.2.0: + resolution: {integrity: sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true - micromark-util-symbol@1.1.0: - resolution: { integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== } + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - micromark-util-symbol@2.0.0: - resolution: { integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== } + papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - micromark-util-types@1.1.0: - resolution: { integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== } + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - micromark-util-types@2.0.0: - resolution: { integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== } + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} - micromark@2.11.4: - resolution: { integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== } + parse-conflict-json@2.0.2: + resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - micromark@3.2.0: - resolution: { integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== } + parse-entities@1.2.2: + resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} - micromark@4.0.0: - resolution: { integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== } + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - micromatch@2.3.11: - resolution: { integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== } - engines: { node: '>=0.10.0' } + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - micromatch@3.1.10: - resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } - engines: { node: '>=0.10.0' } + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} - micromatch@4.0.5: - resolution: { integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== } - engines: { node: '>=8.6' } + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} - mime-db@1.33.0: - resolution: { integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== } - engines: { node: '>= 0.6' } + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} - mime-db@1.52.0: - resolution: { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== } - engines: { node: '>= 0.6' } + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} - mime-types@2.1.18: - resolution: { integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== } - engines: { node: '>= 0.6' } + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} - mime-types@2.1.35: - resolution: { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== } - engines: { node: '>= 0.6' } + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - mime@1.6.0: - resolution: { integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== } - engines: { node: '>=4' } - hasBin: true + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} - mime@3.0.0: - resolution: { integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== } - engines: { node: '>=10.0.0' } - hasBin: true + parse-srcset@1.0.2: + resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} - mime@4.0.4: - resolution: { integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ== } - engines: { node: '>=16' } - hasBin: true + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - mimic-fn@2.1.0: - resolution: { integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== } - engines: { node: '>=6' } + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - mimic-fn@4.0.0: - resolution: { integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== } - engines: { node: '>=12' } + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} - mimic-response@1.0.1: - resolution: { integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== } - engines: { node: '>=4' } + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - mimic-response@2.1.0: - resolution: { integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== } - engines: { node: '>=8' } + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - mimic-response@3.1.0: - resolution: { integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== } - engines: { node: '>=10' } + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - 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 } + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - min-indent@1.0.1: - resolution: { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } - engines: { node: '>=4' } + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - mini-css-extract-plugin@2.8.1: - resolution: { integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^5.0.0 + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} - minimalistic-assert@1.0.1: - resolution: { integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== } + passport-google-oauth20@2.0.0: + resolution: {integrity: sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==} + engines: {node: '>= 0.4.0'} - minimatch@3.1.2: - resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } + passport-oauth2@1.8.0: + resolution: {integrity: sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==} + engines: {node: '>= 0.4.0'} - minimatch@5.1.6: - resolution: { integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== } - engines: { node: '>=10' } + passport-strategy@1.0.0: + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} - minimatch@7.4.6: - resolution: { integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== } - engines: { node: '>=10' } + passport@0.7.0: + resolution: {integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==} + engines: {node: '>= 0.4.0'} - minimatch@9.0.3: - resolution: { integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== } - engines: { node: '>=16 || 14 >=14.17' } + password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} - minimatch@9.0.4: - resolution: { integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== } - engines: { node: '>=16 || 14 >=14.17' } + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - minimist@1.2.8: - resolution: { integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== } + path-exists@2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} - minipass-collect@1.0.2: - resolution: { integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== } - engines: { node: '>= 8' } + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - minipass-fetch@1.4.1: - resolution: { integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== } - engines: { node: '>=8' } + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - minipass-fetch@2.1.2: - resolution: { integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - minipass-fetch@3.0.4: - resolution: { integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - minipass-flush@1.0.5: - resolution: { integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== } - engines: { node: '>= 8' } + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - minipass-json-stream@1.0.1: - resolution: { integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== } + path-key@1.0.0: + resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==} + engines: {node: '>=0.10.0'} - minipass-pipeline@1.2.4: - resolution: { integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== } - engines: { node: '>=8' } - - minipass-sized@1.0.3: - resolution: { integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== } - engines: { node: '>=8' } - - 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.0.4: - resolution: { integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== } - engines: { node: '>=16 || 14 >=14.17' } - - minizlib@2.1.2: - resolution: { integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== } - engines: { node: '>= 8' } - - mitt@3.0.0: - resolution: { integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== } - - mixin-deep@1.3.2: - resolution: { integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== } - engines: { node: '>=0.10.0' } - - mixin-object@2.0.1: - resolution: { integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA== } - engines: { node: '>=0.10.0' } - - mj-context-menu@0.6.1: - resolution: { integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA== } - - mkdirp-classic@0.5.3: - resolution: { integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== } - - mkdirp-infer-owner@2.0.0: - resolution: { integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== } - engines: { node: '>=10' } - - 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 - - mkdirp@2.1.6: - resolution: { integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== } - engines: { node: '>=10' } - hasBin: true - - ml-array-mean@1.1.6: - resolution: { integrity: sha512-MIdf7Zc8HznwIisyiJGRH9tRigg3Yf4FldW8DxKxpCCv/g5CafTw0RRu51nojVEOXuCQC7DRVVu5c7XXO/5joQ== } - - ml-array-sum@1.1.6: - resolution: { integrity: sha512-29mAh2GwH7ZmiRnup4UyibQZB9+ZLyMShvt4cH4eTK+cL2oEMIZFnSyB3SS8MlsTh6q/w/yh48KmqLxmovN4Dw== } - - ml-distance-euclidean@2.0.0: - resolution: { integrity: sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q== } - - ml-distance@4.0.1: - resolution: { integrity: sha512-feZ5ziXs01zhyFUUUeZV5hwc0f5JW0Sh0ckU1koZe/wdVkJdGxcP06KNQuF0WBTj8FttQUzcvQcpcrOp/XrlEw== } - - ml-tree-similarity@1.0.0: - resolution: { integrity: sha512-XJUyYqjSuUQkNQHMscr6tcjldsOoAekxADTplt40QKfwW6nd++1wHWV9AArl0Zvw/TIHgNaZZNvr8QGvE8wLRg== } - - mnemonist@0.38.3: - resolution: { integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== } - - moment-timezone@0.5.45: - resolution: { integrity: sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== } - - moment@2.30.1: - resolution: { integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== } - - monaco-editor@0.50.0: - resolution: { integrity: sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA== } - - mongodb-connection-string-url@3.0.0: - resolution: { integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ== } - - mongodb@6.3.0: - resolution: { integrity: sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA== } - engines: { node: '>=16.20.1' } - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.1.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - - mongodb@6.6.2: - resolution: { integrity: sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw== } - engines: { node: '>=16.20.1' } - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.1.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - - mongodb@6.7.0: - resolution: { integrity: sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA== } - engines: { node: '>=16.20.1' } - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.1.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - - mongoose@8.5.2: - resolution: { integrity: sha512-GZB4rHMdYfGatV+23IpCrqFbyCOjCNOHXgWbirr92KRwTEncBrtW3kgU9vmpKjsGf7nMmnAy06SwWUv1vhDkSg== } - engines: { node: '>=16.20.1' } - - mpath@0.9.0: - resolution: { integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== } - engines: { node: '>=4.0.0' } - - mqtt-packet@6.10.0: - resolution: { integrity: sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA== } - - mqtt@4.3.8: - resolution: { integrity: sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw== } - engines: { node: '>=10.0.0' } - hasBin: true - - mquery@5.0.0: - resolution: { integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg== } - engines: { node: '>=14.0.0' } - - mri@1.2.0: - resolution: { integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== } - engines: { node: '>=4' } - - mrmime@1.0.1: - resolution: { integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== } - engines: { node: '>=10' } - - mrmime@2.0.0: - resolution: { integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== } - engines: { node: '>=10' } - - 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== } - - multer@1.4.5-lts.1: - resolution: { integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== } - engines: { node: '>= 6.0.0' } - - multicast-dns@7.2.5: - resolution: { integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== } - hasBin: true - - multimatch@5.0.0: - resolution: { integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== } - engines: { node: '>=10' } - - mustache@4.2.0: - resolution: { integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== } - hasBin: true - - mute-stdout@1.0.1: - resolution: { integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== } - engines: { node: '>= 0.10' } - - mute-stream@0.0.5: - resolution: { integrity: sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg== } - - mute-stream@0.0.8: - resolution: { integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== } - - mysql2@3.9.2: - resolution: { integrity: sha512-3Cwg/UuRkAv/wm6RhtPE5L7JlPB877vwSF6gfLAS68H+zhH+u5oa3AieqEd0D0/kC3W7qIhYbH419f7O9i/5nw== } - engines: { node: '>= 8.0' } - - mz@2.7.0: - resolution: { integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== } - - named-placeholders@1.1.3: - resolution: { integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== } - engines: { node: '>=12.0.0' } - - nan@2.19.0: - resolution: { integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== } - - nanoclone@0.2.1: - resolution: { integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== } - - nanoid@3.3.6: - resolution: { integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - nanoid@3.3.7: - resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - nanoid@5.0.7: - resolution: { integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ== } - engines: { node: ^18 || >=20 } - hasBin: true - - nanomatch@1.2.13: - resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } - engines: { node: '>=0.10.0' } + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - nanoseconds@0.1.0: - resolution: { integrity: sha512-6yOHqTvJNI9xGmVHWQ4ZTYhGpT0O4h9N+uk/UuRVPI8TskViB4s4QL3y+jY/Yxsdz7gvoBGPCHWRUibOyyYMwA== } - engines: { node: '>=0.10.0' } + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} - napi-build-utils@1.0.2: - resolution: { integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== } + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - natural-compare-lite@1.4.0: - resolution: { integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== } - - natural-compare@1.4.0: - resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } - - natural-orderby@2.0.3: - resolution: { integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== } - - natural@6.12.0: - resolution: { integrity: sha512-ZV/cuaxOvJ7CSxQRYHc6nlx7ql6hVPQc20N5ubdqVbotWnnqsNc+0/QG+ACIC3XPQ4rfrQrdC/1k47v1cSszTQ== } - engines: { node: '>=0.4.10' } - - negotiator@0.6.3: - resolution: { integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== } - 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-auth@4.24.7: - resolution: { integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ== } - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true - - next-tick@0.2.2: - resolution: { integrity: sha512-f7h4svPtl+QidoBv4taKXUjJ70G2asaZ8G28nS0OkqaalX8dwwrtWtyxEDPK62AC00ur/+/E0pUwBwY5EPn15Q== } - - next-tick@1.1.0: - resolution: { integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== } - - next@14.2.5: - resolution: { integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA== } - engines: { node: '>=18.17.0' } - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - - no-case@2.3.2: - resolution: { integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== } - - no-case@3.0.4: - resolution: { integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== } - - node-abi@3.56.0: - resolution: { integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q== } - engines: { node: '>=10' } - - node-addon-api@6.1.0: - resolution: { integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== } - - node-addon-api@7.1.0: - resolution: { integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== } - engines: { node: ^16 || ^18 || >= 20 } - - node-api-headers@1.1.0: - resolution: { integrity: sha512-ucQW+SbYCUPfprvmzBsnjT034IGRB2XK8rRc78BgjNKhTdFKgAwAmgW704bKIBmcYW48it0Gkjpkd39Azrwquw== } - - node-cleanup@2.1.2: - resolution: { integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== } - - node-domexception@1.0.0: - resolution: { integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== } - engines: { node: '>=10.5.0' } - - node-emoji@2.1.3: - resolution: { integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== } - engines: { node: '>=18' } - - node-ensure@0.0.0: - resolution: { integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw== } - - node-fetch-h2@2.3.0: - resolution: { integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== } - engines: { node: 4.x || >=6.0.0 } - - node-fetch-native@1.6.4: - resolution: { integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== } - - node-fetch@2.6.7: - resolution: { integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - 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: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: { integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - node-forge@1.3.1: - resolution: { integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== } - engines: { node: '>= 6.13.0' } - - node-gyp-build@4.8.1: - resolution: { integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== } - hasBin: true - - node-gyp@8.4.1: - resolution: { integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== } - engines: { node: '>= 10.12.0' } - hasBin: true - - node-gyp@9.4.1: - resolution: { integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== } - engines: { node: ^12.13 || ^14.13 || >=16 } - hasBin: true - - node-html-markdown@1.3.0: - resolution: { integrity: sha512-OeFi3QwC/cPjvVKZ114tzzu+YoR+v9UXW5RwSXGUqGb0qCl0DvP406tzdL7SFn8pZrMyzXoisfG2zcuF9+zw4g== } - engines: { node: '>=10.0.0' } - - node-html-parser@6.1.12: - resolution: { integrity: sha512-/bT/Ncmv+fbMGX96XG9g05vFt43m/+SYKIs9oAemQVYyVcZmDAI2Xq/SbNcpOA35eF0Zk2av3Ksf+Xk8Vt8abA== } - - node-int64@0.4.0: - resolution: { integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== } - - node-readfiles@0.2.0: - resolution: { integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== } - - node-releases@2.0.14: - resolution: { integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== } - - node-releases@2.0.18: - resolution: { integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== } - - nodemon@2.0.22: - resolution: { integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== } - engines: { node: '>=8.10.0' } - hasBin: true - - noncharacters@1.1.0: - resolution: { integrity: sha512-U69XzMNq7UQXR27xT17tkQsHPsLc+5W9yfXvYzVCwFxghVf+7VttxFnCKFMxM/cHD+/QIyU009263hxIIurj4g== } - engines: { node: '>=0.10.0' } - - nopt@1.0.10: - resolution: { integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== } - hasBin: true - - nopt@5.0.0: - resolution: { integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== } - engines: { node: '>=6' } - hasBin: true - - nopt@6.0.0: - resolution: { integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - hasBin: true - - normalize-package-data@2.5.0: - resolution: { integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== } - - normalize-package-data@3.0.3: - resolution: { integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== } - engines: { node: '>=10' } - - normalize-package-data@5.0.0: - resolution: { integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - normalize-path@2.1.1: - resolution: { integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== } - engines: { node: '>=0.10.0' } - - normalize-path@3.0.0: - resolution: { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } - engines: { node: '>=0.10.0' } - - normalize-pkg@0.3.20: - resolution: { integrity: sha512-kM3ee93xDLnhu7R1j2BpJ+0zenlOB5ZE6H+vt2iCNXdGgcxedzweZn6UeW5p2iJEdkNYaXDoJm8uoSLiXF4eBw== } - engines: { node: '>= 0.10.0' } - hasBin: true - - normalize-range@0.1.2: - resolution: { integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== } - engines: { node: '>=0.10.0' } - - normalize-url@6.1.0: - resolution: { integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== } - engines: { node: '>=10' } - - normalize-url@8.0.1: - resolution: { integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== } - engines: { node: '>=14.16' } - - notion-md-crawler@1.0.0: - resolution: { integrity: sha512-mdB6zn/i32qO2C7X7wZLDpWvFryO3bPYMuBfFgmTPomnfEtIejdQJNVaZzw2GapM82lfWZ5dfsZp3s3UL4p1Fg== } - - notion-to-md@3.1.1: - resolution: { integrity: sha512-Zaa2P1B9Rx99bevFYTGuUMYbbfdHn2G1AZMsytYGDWIJjr6Ie1qp/8CorpwVUh1qrquES/V2PkEREqCuTu1zKA== } - engines: { node: '>=12' } - - notistack@2.0.8: - resolution: { integrity: sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw== } - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - '@mui/material': ^5.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} - now-and-later@0.0.6: - resolution: { integrity: sha512-qNIeNeH6v6KbriliCoOEmKhelv+66P2yCKEQta3MYcwN98S3NrVMgYEh9hWxJRPqPna3d7r0KElZQKQkAm0/jA== } - engines: { node: '>= 0.10' } + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} - now-and-later@2.0.1: - resolution: { integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== } - engines: { node: '>= 0.10' } + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} - npm-bundled@1.1.2: - resolution: { integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== } + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - npm-bundled@3.0.0: - resolution: { integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - npm-install-checks@4.0.0: - resolution: { integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== } - engines: { node: '>=10' } - - npm-install-checks@6.3.0: - resolution: { integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + path-type@1.1.0: + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} + engines: {node: '>=0.10.0'} - npm-normalize-package-bin@1.0.1: - resolution: { integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== } + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - npm-normalize-package-bin@2.0.0: - resolution: { integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + path2d-polyfill@2.0.1: + resolution: {integrity: sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==} + engines: {node: '>=8'} - npm-normalize-package-bin@3.0.1: - resolution: { integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - npm-package-arg@10.1.0: - resolution: { integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - npm-package-arg@8.1.5: - resolution: { integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== } - engines: { node: '>=10' } + pause@0.0.1: + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} - npm-packlist@3.0.0: - resolution: { integrity: sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== } - engines: { node: '>=10' } - hasBin: true + pdf-parse@1.1.1: + resolution: {integrity: sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A==} + engines: {node: '>=6.8.1'} - npm-packlist@7.0.4: - resolution: { integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + pdf2json@3.0.5: + resolution: {integrity: sha512-Un1yLbSlk/zfwrltgguskExIioXZlFSFwsyXU0cnBorLywbTbcdzmJJEebh+U2cFCtR7y8nDs5lPHAe7ldxjZg==} + engines: {node: '>=18.12.1', npm: '>=8.19.2'} + hasBin: true + bundledDependencies: + - '@xmldom/xmldom' - npm-pick-manifest@6.1.1: - resolution: { integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== } + pdfjs-dist@3.11.174: + resolution: {integrity: sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==} + engines: {node: '>=18'} - npm-pick-manifest@8.0.2: - resolution: { integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - npm-registry-fetch@12.0.2: - resolution: { integrity: sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16 } + peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} - npm-registry-fetch@14.0.5: - resolution: { integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - npm-run-path@1.0.0: - resolution: { integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA== } - engines: { node: '>=0.10.0' } + perfect-scrollbar@1.5.5: + resolution: {integrity: sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==} - npm-run-path@4.0.1: - resolution: { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== } - engines: { node: '>=8' } + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - npm-run-path@5.3.0: - resolution: { integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - npmlog@5.0.1: - resolution: { integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== } - deprecated: This package is no longer supported. + pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - npmlog@6.0.2: - resolution: { integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. + pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - nprogress@0.2.0: - resolution: { integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== } + pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} - nth-check@1.0.2: - resolution: { integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== } + pg-connection-string@2.7.0: + resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - nth-check@2.1.1: - resolution: { integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== } + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} - num-sort@2.1.0: - resolution: { integrity: sha512-1MQz1Ed8z2yckoBeSfkQHHO9K1yDRxxtotKSJ9yvcTUUxSvfvzEq5GwBrjjHEpMlq/k5gvXdmJ1SbYxWtpNoVg== } - engines: { node: '>=8' } + pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} - number-allocator@1.0.14: - resolution: { integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA== } + pg-pool@3.6.1: + resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + peerDependencies: + pg: '>=8.0' - number-is-nan@1.0.1: - resolution: { integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== } - engines: { node: '>=0.10.0' } + pg-pool@3.6.2: + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} + peerDependencies: + pg: '>=8.0' - nwsapi@2.2.7: - resolution: { integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== } + pg-pool@3.7.1: + resolution: {integrity: sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==} + peerDependencies: + pg: '>=8.0' - oas-kit-common@1.0.8: - resolution: { integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== } + pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} - oas-linter@3.2.2: - resolution: { integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== } + pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} - oas-resolver@2.5.6: - resolution: { integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== } - hasBin: true + pg-protocol@1.7.1: + resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==} - oas-schema-walker@1.1.5: - resolution: { integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== } + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} - oas-validator@5.0.8: - resolution: { integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== } + pg-types@4.0.2: + resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} + engines: {node: '>=10'} - oauth-sign@0.9.0: - resolution: { integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== } + pg@8.11.3: + resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - oauth4webapi@2.11.1: - resolution: { integrity: sha512-aNzOnL98bL6izG97zgnZs1PFEyO4WDVRhz2Pd066NPak44w5ESLRCYmJIyey8avSBPOMtBjhF3ZDDm7bIb7UOg== } + pg@8.11.5: + resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - oauth@0.10.0: - resolution: { integrity: sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q== } + pg@8.13.3: + resolution: {integrity: sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - oauth@0.9.15: - resolution: { integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA== } + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - object-assign@4.1.1: - resolution: { integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== } - engines: { node: '>=0.10.0' } + pgvector@0.1.8: + resolution: {integrity: sha512-mD6aw+XYJrsuLl3Y8s8gHDDfOZQ9ERtfQPdhvjOrC7eOTM7b6sNkxeZxBhHwUdXMfHmyGWIbwU0QbmSnn7pPmg==} + engines: {node: '>= 12'} - object-copy@0.1.0: - resolution: { integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== } - engines: { node: '>=0.10.0' } + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - object-hash@2.2.0: - resolution: { integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== } - engines: { node: '>= 6' } + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - object-hash@3.0.0: - resolution: { integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== } - engines: { node: '>= 6' } + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - object-inspect@1.13.1: - resolution: { integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== } + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - object-is@1.1.6: - resolution: { integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== } - engines: { node: '>= 0.4' } + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - object-keys@1.1.1: - resolution: { integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== } - engines: { node: '>= 0.4' } + picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} - object-treeify@1.1.33: - resolution: { integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== } - engines: { node: '>= 10' } + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkce-challenge@4.1.0: + resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} + engines: {node: '>=16.20.0'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + playwright-core@1.42.1: + resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==} + engines: {node: '>=16'} + hasBin: true + + playwright-core@1.50.1: + resolution: {integrity: sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.42.1: + resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} + engines: {node: '>=16'} + hasBin: true + + playwright@1.50.1: + resolution: {integrity: sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==} + engines: {node: '>=18'} + hasBin: true + + popmotion@9.3.6: + resolution: {integrity: sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw==} + + portkey-ai@0.1.16: + resolution: {integrity: sha512-EY4FRp6PZSD75Q1o1qc08DfPNTG9FnkUPN3Z1/lEvaq9iFpSO5UekcagUZaKSVhao311qjBjns+kF0rS9ht7iA==} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-attribute-case-insensitive@5.0.2: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-browser-comments@4.0.0: + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-calc@9.0.1: + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.2 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@4.2.4: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-color-hex-alpha@8.0.4: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@7.1.1: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-colormin@6.1.0: + resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@6.1.0: + resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-custom-media@8.0.2: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-custom-properties@12.1.11: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-custom-selectors@6.0.3: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-dir-pseudo-class@6.0.5: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@6.0.2: + resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@6.0.2: + resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-unused@6.0.5: + resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-double-position-gradients@3.1.2: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-env-function@4.0.6: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-flexbugs-fixes@5.0.2: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + + postcss-focus-visible@6.0.4: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@5.0.4: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@3.0.5: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-image-set-function@4.0.7: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-initial@4.0.1: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-lab-function@4.2.1: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true - object-visit@0.3.4: - resolution: { integrity: sha512-6QNyX7uTuwqxP7pmDBqgBDKdmZws1rXriUyXM5KG6+7J0aYRuuAGoc636IGdLzgOL77WUwL+EpoTJrEHwWsyOA== } - engines: { node: '>=0.10.0' } + postcss-loader@6.2.1: + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-loader@7.3.4: + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-logical@5.0.4: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-media-minmax@5.0.0: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + + postcss-merge-idents@6.0.3: + resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-longhand@6.0.5: + resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@6.1.0: + resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@6.0.3: + resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@6.1.0: + resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-modules-extract-imports@3.0.0: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.4: + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.1.1: + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-nested@6.0.0: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@10.2.0: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-charset@6.0.2: + resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@6.0.2: + resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@6.0.2: + resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@6.0.2: + resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@6.0.2: + resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@6.0.2: + resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@6.1.0: + resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@6.0.2: + resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize@10.0.1: + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + + postcss-opacity-percentage@1.1.3: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@6.0.2: + resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-overflow-shorthand@3.0.4: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@7.0.5: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-preset-env@7.8.3: + resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-pseudo-class-any-link@7.1.6: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-reduce-idents@6.0.3: + resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@6.1.0: + resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@6.0.2: + resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-selector-not@6.0.1: + resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-sort-media-queries@5.2.0: + resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.4.23 + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-svgo@6.0.3: + resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} + engines: {node: ^14 || ^16 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@6.0.4: + resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss-zindex@6.0.2: + resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} + + posthog-node@3.6.3: + resolution: {integrity: sha512-JB+ei0LkwE+rKHyW5z79Nd1jUaGxU6TvkfjFqY9vQaHxU5aU8dRl0UUaEmZdZbHwjp3WmXCBQQRNyimwbNQfCw==} + engines: {node: '>=15.0.0'} + + preact-render-to-string@5.2.6: + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + + preact@10.23.2: + resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + 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@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + pretty-quick@3.3.1: + resolution: {integrity: sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==} + engines: {node: '>=10.13'} + hasBin: true + peerDependencies: + prettier: ^2.0.0 + + pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + + prism-react-renderer@1.3.5: + resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + peerDependencies: + react: '>=0.14.9' + + prism-react-renderer@2.4.0: + resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==} + peerDependencies: + react: '>=16.0.0' + + prisma-json-types-generator@3.0.4: + resolution: {integrity: sha512-W53OpjBdGZxCsYv7MlUX69d7TPA9lEsQbDf9ddF0J93FX5EvaIRDMexdFPe0KTxiuquGvZTDJgeNXb3gIqEhJw==} + engines: {node: '>=14.0'} + hasBin: true + peerDependencies: + prisma: ^5.1 + typescript: ^5.1 + + prisma@5.18.0: + resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} + engines: {node: '>=16.13'} + hasBin: true + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + private@0.1.8: + resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} + engines: {node: '>= 0.6'} + + proc-log@1.0.0: + resolution: {integrity: sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==} + + proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + + promise-all-reject-late@1.0.1: + resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} + + promise-call-limit@1.0.2: + resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true - object-visit@1.0.1: - resolution: { integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== } - engines: { node: '>=0.10.0' } + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} - object.assign@4.1.5: - resolution: { integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== } - engines: { node: '>= 0.4' } + promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} - object.defaults@1.1.0: - resolution: { integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA== } - engines: { node: '>=0.10.0' } + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - object.entries@1.1.7: - resolution: { integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== } - engines: { node: '>= 0.4' } + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - object.fromentries@2.0.7: - resolution: { integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== } - engines: { node: '>= 0.4' } + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} - object.getownpropertydescriptors@2.1.7: - resolution: { integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== } - engines: { node: '>= 0.8' } + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - object.groupby@1.0.2: - resolution: { integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== } + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - object.hasown@1.1.3: - resolution: { integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== } + property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - object.map@1.0.1: - resolution: { integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w== } - engines: { node: '>=0.10.0' } + property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} - object.omit@2.0.1: - resolution: { integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== } - engines: { node: '>=0.10.0' } + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - object.pick@1.3.0: - resolution: { integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== } - engines: { node: '>=0.10.0' } + proto3-json-serializer@2.0.2: + resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} + engines: {node: '>=14.0.0'} - object.reduce@1.0.1: - resolution: { integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw== } - engines: { node: '>=0.10.0' } + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} - object.values@1.1.7: - resolution: { integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== } - engines: { node: '>= 0.4' } + protoc-gen-ts@0.8.7: + resolution: {integrity: sha512-jr4VJey2J9LVYCV7EVyVe53g1VMw28cCmYJhBe5e3YX5wiyiDwgxWxeDf9oTqAe4P1bN/YGAkW2jhlH8LohwiQ==} + hasBin: true - obliterator@1.6.1: - resolution: { integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== } + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} - obuf@1.1.2: - resolution: { integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== } + proxy-agent@6.3.0: + resolution: {integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==} + engines: {node: '>= 14'} - oclif@3.17.2: - resolution: { integrity: sha512-+vFXxgmR7dGGz+g6YiqSZu2LXVkBMaS9/rhtsLGkYw45e53CW/3kBgPRnOvxcTDM3Td9JPeBD2JWxXnPKGQW3A== } - engines: { node: '>=12.0.0' } - hasBin: true + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} - ohash@1.1.3: - resolution: { integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== } + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - oidc-token-hash@5.0.3: - resolution: { integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== } - engines: { node: ^10.13.0 || >=12.0.0 } + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true - ollama@0.5.6: - resolution: { integrity: sha512-4BySAMt96+OCt4emL6DE78UBCGqC7GvteM9LRCd6WwJyefn0x9w2BrcUcLm9nJ9bYpRsmkhf0Au18Q5MhsA14w== } + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - omit-empty@0.3.6: - resolution: { integrity: sha512-P5zl3TYREgcRAjjyj9kYHNhVtOOXMlCyYh/KNm53oUZNKpGOBbS0WLdRcThDPWbuFleXlbCd1KTBRZD86nj3RA== } - engines: { node: '>=0.10.0' } + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - omit-empty@0.4.1: - resolution: { integrity: sha512-NwnVOAaLwUEYmvvwLKKqvG6BkSG0pu0yKhKc6uYbWerkIXe6Wi2HQ1qoL+Wksj3DCauRuNKIjZUsLyjLj1/lrw== } - engines: { node: '>=0.10.0' } + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - on-finished@2.4.1: - resolution: { integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== } - engines: { node: '>= 0.8' } + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - on-headers@1.0.2: - resolution: { integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== } - engines: { node: '>= 0.8' } + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - once@1.3.3: - resolution: { integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w== } + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - once@1.4.0: - resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + punycode@1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - one-time@1.0.0: - resolution: { integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== } + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - onetime@1.1.0: - resolution: { integrity: sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A== } - engines: { node: '>=0.10.0' } + pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} - onetime@5.1.2: - resolution: { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== } - engines: { node: '>=6' } + puppeteer-core@19.11.1: + resolution: {integrity: sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==} + engines: {node: '>=14.14.0'} + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true - onetime@6.0.0: - resolution: { integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== } - engines: { node: '>=12' } + puppeteer-core@20.9.0: + resolution: {integrity: sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==} + engines: {node: '>=16.3.0'} + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true - onnx-proto@4.0.4: - resolution: { integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA== } + puppeteer@19.11.1: + resolution: {integrity: sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==} + deprecated: < 22.8.2 is no longer supported - onnxruntime-common@1.14.0: - resolution: { integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew== } + puppeteer@20.9.0: + resolution: {integrity: sha512-kAglT4VZ9fWEGg3oLc4/de+JcONuEJhlh3J6f5R1TLkrY/EHHIHxWXDOzXvaxQCtedmyVXBwg8M+P8YCO/wZjw==} + engines: {node: '>=16.3.0'} + deprecated: < 22.8.2 is no longer supported - onnxruntime-node@1.14.0: - resolution: { integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w== } - os: [win32, darwin, linux] + pure-color@1.3.0: + resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - onnxruntime-web@1.14.0: - resolution: { integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw== } + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - open@8.4.2: - resolution: { integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== } - engines: { node: '>=12' } + pusher-js@8.4.0-rc2: + resolution: {integrity: sha512-d87GjOEEl9QgO5BWmViSqW0LOzPvybvX6WA9zLUstNdB57jVJuR27zHkRnrav2a3+zAMlHbP2Og8wug+rG8T+g==} - openai-chat-tokens@0.2.8: - resolution: { integrity: sha512-nW7QdFDIZlAYe6jsCT/VPJ/Lam3/w2DX9oxf/5wHpebBT49KI3TN43PPhYlq1klq2ajzXWKNOLY6U4FNZM7AoA== } + pyodide@0.25.0: + resolution: {integrity: sha512-RagtX3TfV2M0QAfThG2SMvwE31ikqAFDUXc5/4xhppEoVf4VbL7L0kbKOIdSNg7MbVsHELVxftk66WvT926GpA==} - openai@4.51.0: - resolution: { integrity: sha512-UKuWc3/qQyklqhHM8CbdXCv0Z0obap6T0ECdcO5oATQxAbKE5Ky3YCXFQY207z+eGG6ez4U9wvAcuMygxhmStg== } - hasBin: true + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - openapi-types@12.1.3: - resolution: { integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== } + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - openapi-typescript-fetch@1.1.3: - resolution: { integrity: sha512-smLZPck4OkKMNExcw8jMgrMOGgVGx2N/s6DbKL2ftNl77g5HfoGpZGFy79RBzU/EkaO0OZpwBnslfdBfh7ZcWg== } - engines: { node: '>= 12.0.0', npm: '>= 7.0.0' } + qs@6.10.4: + resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} + engines: {node: '>=0.6'} - openapi-typescript@6.7.6: - resolution: { integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw== } - hasBin: true + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} - opener@1.5.2: - resolution: { integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== } - hasBin: true + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} - openid-client@5.6.5: - resolution: { integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w== } + qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} - option-cache@3.5.0: - resolution: { integrity: sha512-Hr14410H8ajAHeUirXZtuE9drwy8e85l0CssHB/k7Y6nRkleKsGAzB/gwltUzsnIqr9Y+7ZQ+H16GYWAJH3PVg== } - engines: { node: '>=0.10.0' } + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} - option@0.2.4: - resolution: { integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A== } + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} - optionator@0.8.3: - resolution: { integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== } - engines: { node: '>= 0.8.0' } + qs@6.7.0: + resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} + engines: {node: '>=0.6'} - optionator@0.9.3: - resolution: { integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== } - engines: { node: '>= 0.8.0' } + query-string@8.2.0: + resolution: {integrity: sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g==} + engines: {node: '>=14.16'} - opts@2.0.2: - resolution: { integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== } + querystring@0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - ora@5.4.1: - resolution: { integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== } - engines: { node: '>=10' } + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - ordered-read-streams@0.3.0: - resolution: { integrity: sha512-xQvd8qvx9U1iYY9aVqPpoF5V9uaWJKV6ZGljkh/jkiNX0DiQsjbWvRumbh10QTMDE8DheaOEU8xi0szbrgjzcw== } + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - ordered-read-streams@1.0.1: - resolution: { integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw== } + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - os-homedir@1.0.2: - resolution: { integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== } - engines: { node: '>=0.10.0' } + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - os-locale@1.4.0: - resolution: { integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== } - engines: { node: '>=0.10.0' } + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} - os-tmpdir@1.0.2: - resolution: { integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== } - engines: { node: '>=0.10.0' } + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - ospath@1.2.2: - resolution: { integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== } + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} - ow@0.28.2: - resolution: { integrity: sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q== } - engines: { node: '>=12' } + rake-modified@1.0.8: + resolution: {integrity: sha512-rj/1t+EyI8Ly52eaCeSy5hoNpdNnDlNQ/+jll2DypR6nkuxotMbaupzwbuMSaXzuSL1I2pYVYy7oPus/Ls49ag==} - p-cancelable@2.1.1: - resolution: { integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== } - engines: { node: '>=8' } + random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} - p-cancelable@3.0.0: - resolution: { integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== } - engines: { node: '>=12.20' } + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - p-finally@1.0.0: - resolution: { integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== } - engines: { node: '>=4' } + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} - p-limit@2.3.0: - resolution: { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } - engines: { node: '>=6' } + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - p-limit@3.1.0: - resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } - engines: { node: '>=10' } + ranges-apply@7.0.16: + resolution: {integrity: sha512-4rGJHOyA7qatiMDg3vcETkc/TVBPU86/xZRTXff6o7a2neYLmj0EXUUAlhLVuiWAzTPHDPHOQxtk8EDrIF4ohg==} + engines: {node: '>=14.18.0'} - p-limit@4.0.0: - resolution: { integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + ranges-merge@9.0.15: + resolution: {integrity: sha512-hvt4hx0FKIaVfjd1oKx0poL57ljxdL2KHC6bXBrAdsx2iCsH+x7nO/5J0k2veM/isnOcFZKp0ZKkiCjCtzy74Q==} + engines: {node: '>=14.18.0'} - p-locate@3.0.0: - resolution: { integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== } - engines: { node: '>=6' } + ranges-push@7.0.15: + resolution: {integrity: sha512-gXpBYQ5Umf3uG6jkJnw5ddok2Xfo5p22rAJBLrqzNKa7qkj3q5AOCoxfRPXEHUVaJutfXc9K9eGXdIzdyQKPkw==} + engines: {node: '>=14.18.0'} - p-locate@4.1.0: - resolution: { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } - engines: { node: '>=8' } + ranges-sort@6.0.11: + resolution: {integrity: sha512-fhNEG0vGi7bESitNNqNBAfYPdl2efB+1paFlI8BQDCNkruERKuuhG8LkQClDIVqUJLkrmKuOSPQ3xZHqVnVo3Q==} + engines: {node: '>=14.18.0'} + + rate-limit-redis@4.2.0: + resolution: {integrity: sha512-wV450NQyKC24NmPosJb2131RoczLdfIJdKCReNwtVpm5998U8SgKrAZrIHaN/NfQgqOHaan8Uq++B4sa5REwjA==} + engines: {node: '>= 16'} + peerDependencies: + express-rate-limit: '>= 6' + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-app-polyfill@3.0.0: + resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==} + engines: {node: '>=14'} + + react-base16-styling@0.6.0: + resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} + + react-code-blocks@0.0.9-0: + resolution: {integrity: sha512-jdYJVZwGtsr6WIUaqILy5fkF1acf57YV5s0V3+w5o9v3omYnqBeO6EuZi1Vf2x1hahkYGEedsp46+ofdkYlqyw==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16' + + react-color@2.19.3: + resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} + peerDependencies: + react: '*' + + react-datepicker@4.25.0: + resolution: {integrity: sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg==} + peerDependencies: + react: ^16.9.0 || ^17 || ^18 + react-dom: ^16.9.0 || ^17 || ^18 + + react-dev-utils@12.0.1: + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true - p-locate@5.0.0: - resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } - engines: { node: '>=10' } + react-device-detect@1.17.0: + resolution: {integrity: sha512-bBblIStwpHmoS281JFIVqeimcN3LhpoP5YKDWzxQdBIUP8S2xPvHDgizLDhUq2ScguLfVPmwfF5y268EEQR60w==} + peerDependencies: + react: '>= 0.14.0 < 18.0.0' + react-dom: '>= 0.14.0 < 18.0.0' + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-draggable@4.4.6: + resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + + react-error-overlay@6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + + react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-frame-component@5.2.6: + resolution: {integrity: sha512-CwkEM5VSt6nFwZ1Op8hi3JB5rPseZlmnp5CGiismVTauE6S4Jsc4TNMlT0O7Cts4WgIC3ZBAQ2p1Mm9XgLbj+w==} + peerDependencies: + prop-types: ^15.5.9 + react: '>= 16.3' + react-dom: '>= 16.3' + + react-helmet-async@1.3.0: + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + + react-helmet-async@2.0.5: + resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + + react-hook-form@7.52.2: + resolution: {integrity: sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-inspector@6.0.2: + resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 || ^18.0.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react-json-view-lite@1.5.0: + resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + + react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + react-loadable-ssr-addon-v5-slorber@1.0.1: + resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + engines: {node: '>=10.13.0'} + peerDependencies: + react-loadable: '*' + webpack: '>=4.41.1 || 5.x' + + react-markdown@8.0.7: + resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + react-onclickoutside@6.13.0: + resolution: {integrity: sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==} + peerDependencies: + react: ^15.5.x || ^16.x || ^17.x || ^18.x + react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x + + react-perfect-scrollbar@1.5.8: + resolution: {integrity: sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==} + peerDependencies: + react: '>=16.3.3' + react-dom: '>=16.3.3' + + react-popper@2.3.0: + resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + + react-property@2.0.0: + resolution: {integrity: sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==} + + react-redux@8.1.3: + resolution: {integrity: sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true - p-locate@6.0.0: - resolution: { integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + react-refresh@0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-router-config@5.1.1: + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + + react-router-dom@5.3.4: + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + + react-router-dom@6.3.0: + resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@5.3.4: + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + + react-router@6.3.0: + resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + peerDependencies: + react: '>=16.8' + + react-scripts@5.0.1: + resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} + engines: {node: '>=14.0.0'} + hasBin: true + peerDependencies: + eslint: '*' + react: '>= 16' + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true - p-map@4.0.0: - resolution: { integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== } - engines: { node: '>=10' } + react-syntax-highlighter@12.2.1: + resolution: {integrity: sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA==} + peerDependencies: + react: '>= 0.14.0' + + react-syntax-highlighter@15.5.0: + resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} + peerDependencies: + react: '>= 0.14.0' + + react-textarea-autosize@8.5.3: + resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react-window@1.8.10: + resolution: {integrity: sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + reactcss@1.2.3: + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + peerDependencies: + react: '*' + + reactflow@11.10.4: + resolution: {integrity: sha512-0CApYhtYicXEDg/x2kvUHiUk26Qur8lAtTtiSlptNKuyEuGti6P1y5cS32YGaUoDMoCqkm/m+jcKkfMOvSCVRA==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-cmd-shim@3.0.1: + resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + read-package-json-fast@2.0.3: + resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} + engines: {node: '>=10'} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + read-package-json@6.0.4: + resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - p-queue@6.6.2: - resolution: { integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== } - engines: { node: '>=8' } + read-pkg-up@1.0.1: + resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} + engines: {node: '>=0.10.0'} - p-retry@4.6.2: - resolution: { integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== } - engines: { node: '>=8' } + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} - p-throttle@4.1.1: - resolution: { integrity: sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g== } - engines: { node: '>=10' } + read-pkg@1.1.0: + resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} + engines: {node: '>=0.10.0'} - p-timeout@3.2.0: - resolution: { integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== } - engines: { node: '>=8' } + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} - p-transform@1.3.0: - resolution: { integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg== } - engines: { node: '>=12.10.0' } + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - p-try@2.2.0: - resolution: { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } - engines: { node: '>=6' } + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} - pac-proxy-agent@7.0.1: - resolution: { integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== } - engines: { node: '>= 14' } + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - pac-resolver@7.0.1: - resolution: { integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== } - engines: { node: '>= 14' } + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - package-json@8.1.1: - resolution: { integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== } - engines: { node: '>=14.16' } + readable-web-to-node-stream@3.0.4: + resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} + engines: {node: '>=8'} - packet-reader@1.0.0: - resolution: { integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== } + readdir-scoped-modules@1.1.0: + resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} + deprecated: This functionality has been moved to @npmcli/fs - pacote@12.0.3: - resolution: { integrity: sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16 } - hasBin: true + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} - pacote@15.2.0: - resolution: { integrity: sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} - pad-right@0.2.2: - resolution: { integrity: sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g== } - engines: { node: '>=0.10.0' } + reading-time@1.5.0: + resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - paginationator@0.1.4: - resolution: { integrity: sha512-o46P8Z9DK0blcmY7F95SnsBWZ6bow3HAcLKXlgIc/SZE8og21qrxL14nAi6Wy8E0Iw06wA0yS5icSayXw8BU8A== } - engines: { node: '>=0.10.0' } + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - pako@1.0.11: - resolution: { integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== } + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} - papaparse@5.4.1: - resolution: { integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw== } + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} - param-case@3.0.4: - resolution: { integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== } + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} - parent-module@1.0.1: - resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } - engines: { node: '>=6' } + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} - parse-author@1.0.0: - resolution: { integrity: sha512-OrNKo0jTFjJNCT0UKOPtnUctvGJvKdfB5ild+r3xwg/TgU5k2CCZW4fU9uJdKJ3njVFw5InP/2gd+n2vEXKgLQ== } - engines: { node: '>=0.10.0' } + redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} - parse-conflict-json@2.0.2: - resolution: { integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} - parse-entities@1.2.2: - resolution: { integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== } + redis-info@3.1.0: + resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} - parse-entities@2.0.0: - resolution: { integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== } + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} - parse-entities@4.0.1: - resolution: { integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== } + redis@4.6.13: + resolution: {integrity: sha512-MHgkS4B+sPjCXpf+HfdetBwbRz6vCtsceTmw1pHNYJAsYxrfpOP6dz+piJWGos8wqG7qb3vj/Rrc5qOlmInUuA==} - parse-filepath@1.0.2: - resolution: { integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== } - engines: { node: '>=0.8' } + redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} - parse-git-config@1.1.1: - resolution: { integrity: sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ== } - engines: { node: '>=0.10.0' } + reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - parse-github-url@0.3.2: - resolution: { integrity: sha512-vawkgsrRR8wm/nqFTVQIl9G/VkRJK2VVo0ECPni20WRV+NOmHXGilnWwC/EjVqRqQ4oSIKwRKP1jW8CjlxlJ2Q== } - engines: { node: '>=0.10.0' } + reflect-metadata@0.2.1: + resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} + deprecated: This version has a critical bug in fallback handling. Please upgrade to reflect-metadata@0.2.2 or newer. - parse-glob@3.0.4: - resolution: { integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== } - engines: { node: '>=0.10.0' } + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} - parse-json@2.2.0: - resolution: { integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== } - engines: { node: '>=0.10.0' } + reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + engines: {node: '>= 0.4'} - parse-json@4.0.0: - resolution: { integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== } - engines: { node: '>=4' } + refractor@2.10.1: + resolution: {integrity: sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==} - parse-json@5.2.0: - resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== } - engines: { node: '>=8' } + refractor@3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} - parse-node-version@1.0.1: - resolution: { integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== } - engines: { node: '>= 0.10' } + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} - parse-numeric-range@1.3.0: - resolution: { integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== } + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} - parse-passwd@1.0.0: - resolution: { integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== } - engines: { node: '>=0.10.0' } + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - parse-srcset@1.0.2: - resolution: { integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q== } + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - parse5-htmlparser2-tree-adapter@6.0.1: - resolution: { integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== } + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: { integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== } + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - parse5@5.1.1: - resolution: { integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== } + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - parse5@6.0.1: - resolution: { integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== } + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} - parse5@7.1.2: - resolution: { integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== } + regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} - parseley@0.12.1: - resolution: { integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw== } + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} - parser-front-matter@1.6.4: - resolution: { integrity: sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g== } - engines: { node: '>=0.10.0' } + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} - parseurl@1.3.3: - resolution: { integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== } - engines: { node: '>= 0.8' } + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} - pascal-case@3.1.2: - resolution: { integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== } + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} - pascalcase@0.1.1: - resolution: { integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== } - engines: { node: '>=0.10.0' } + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} - passport-google-oauth20@2.0.0: - resolution: { integrity: sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== } - engines: { node: '>= 0.4.0' } + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} - passport-oauth2@1.8.0: - resolution: { integrity: sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA== } - engines: { node: '>= 0.4.0' } + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true - passport-strategy@1.0.0: - resolution: { integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== } - engines: { node: '>= 0.4.0' } + rehype-mathjax@4.0.3: + resolution: {integrity: sha512-QIwWH9U+r54nMQklVkT1qluxhKyzdPWz9dFwgel3BrseQsWZafRTDTUj8VR8/14nFuRIV2ChuCMz4zpACPoYvg==} - passport@0.7.0: - resolution: { integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== } - engines: { node: '>= 0.4.0' } + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - password-prompt@1.1.3: - resolution: { integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== } + reinterval@1.1.0: + resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} - path-browserify@1.0.1: - resolution: { integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== } + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} - path-dirname@1.0.2: - resolution: { integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== } + remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - path-exists@2.1.0: - resolution: { integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== } - engines: { node: '>=0.10.0' } + remark-emoji@4.0.1: + resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-exists@3.0.0: - resolution: { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } - engines: { node: '>=4' } + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - path-exists@4.0.0: - resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } - engines: { node: '>=8' } + remark-gfm@1.0.0: + resolution: {integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==} - path-exists@5.0.0: - resolution: { integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + remark-gfm@3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - path-is-absolute@1.0.1: - resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } - engines: { node: '>=0.10.0' } + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - path-is-inside@1.0.2: - resolution: { integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== } + remark-math@5.1.1: + resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} - path-key@1.0.0: - resolution: { integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g== } - engines: { node: '>=0.10.0' } + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} - path-key@3.1.1: - resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } - engines: { node: '>=8' } + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - path-key@4.0.0: - resolution: { integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== } - engines: { node: '>=12' } + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - path-parse@1.0.7: - resolution: { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } + remark-parse@9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} - path-root-regex@0.1.2: - resolution: { integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== } - engines: { node: '>=0.10.0' } + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - path-root@0.1.1: - resolution: { integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== } - engines: { node: '>=0.10.0' } + remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - path-scurry@1.10.1: - resolution: { integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== } - engines: { node: '>=16 || 14 >=14.17' } + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - path-to-regexp@0.1.7: - resolution: { integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== } + remove-bom-buffer@3.0.0: + resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} + engines: {node: '>=0.10.0'} - path-to-regexp@1.8.0: - resolution: { integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== } + remove-bom-stream@1.2.0: + resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} + engines: {node: '>= 0.10'} - path-to-regexp@2.2.1: - resolution: { integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== } + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - path-type@1.1.0: - resolution: { integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== } - engines: { node: '>=0.10.0' } + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - path-type@4.0.0: - resolution: { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } - engines: { node: '>=8' } + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} - path2d-polyfill@2.0.1: - resolution: { integrity: sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA== } - engines: { node: '>=8' } + repeating@2.0.1: + resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} + engines: {node: '>=0.10.0'} - pathe@1.1.2: - resolution: { integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== } + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} - pause-stream@0.0.11: - resolution: { integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== } + replace-homedir@1.0.0: + resolution: {integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==} + engines: {node: '>= 0.10'} - pause@0.0.1: - resolution: { integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== } + replicate@0.31.1: + resolution: {integrity: sha512-klO76pTPzzS9Xri6bWtAp5mNjgcvyvqpVHibhTyrx4pAK7rvXal8rNGspURGCwp8ToxDQNYGEV7l+3d+xiFiwQ==} + engines: {git: '>=2.11.0', node: '>=18.0.0', npm: '>=7.19.0', yarn: '>=1.7.0'} - pdf-parse@1.1.1: - resolution: { integrity: sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A== } - engines: { node: '>=6.8.1' } + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} - pdf2json@3.0.5: - resolution: { integrity: sha512-Un1yLbSlk/zfwrltgguskExIioXZlFSFwsyXU0cnBorLywbTbcdzmJJEebh+U2cFCtR7y8nDs5lPHAe7ldxjZg== } - engines: { node: '>=18.12.1', npm: '>=8.19.2' } - hasBin: true - bundledDependencies: - - '@xmldom/xmldom' + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - pdfjs-dist@3.11.174: - resolution: { integrity: sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA== } - engines: { node: '>=18' } + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - peberminta@0.9.0: - resolution: { integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ== } + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} - pend@1.2.0: - resolution: { integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== } + require-in-the-middle@7.5.2: + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} + engines: {node: '>=8.6.0'} - perfect-scrollbar@1.5.5: - resolution: { integrity: sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== } + require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - performance-now@2.1.0: - resolution: { integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== } + require-main-filename@1.0.1: + resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - periscopic@3.1.0: - resolution: { integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== } + require-package-name@2.0.1: + resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - pg-cloudflare@1.1.1: - resolution: { integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== } + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - pg-connection-string@2.6.2: - resolution: { integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== } + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} - pg-connection-string@2.6.4: - resolution: { integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== } + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - pg-int8@1.0.1: - resolution: { integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== } - engines: { node: '>=4.0.0' } + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} - pg-numeric@1.0.2: - resolution: { integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== } - engines: { node: '>=4' } + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} - pg-pool@3.6.1: - resolution: { integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== } - peerDependencies: - pg: '>=8.0' + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} - pg-pool@3.6.2: - resolution: { integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== } - peerDependencies: - pg: '>=8.0' + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} - pg-protocol@1.6.0: - resolution: { integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== } + resolve-options@1.1.0: + resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} + engines: {node: '>= 0.10'} - pg-protocol@1.6.1: - resolution: { integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== } + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - pg-types@2.2.0: - resolution: { integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== } - engines: { node: '>=4' } + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - pg-types@4.0.2: - resolution: { integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng== } - engines: { node: '>=10' } + resolve-url-loader@4.0.0: + resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==} + engines: {node: '>=8.9'} + peerDependencies: + rework: 1.0.1 + rework-visit: 1.0.0 + peerDependenciesMeta: + rework: + optional: true + rework-visit: + optional: true - pg@8.11.3: - resolution: { integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== } - engines: { node: '>= 8.0.0' } - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + 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'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + retry-axios@2.6.0: + resolution: {integrity: sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==} + engines: {node: '>=10.7.0'} + peerDependencies: + axios: 1.7.9 + + retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + + rollup-plugin-livereload@2.0.5: + resolution: {integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==} + engines: {node: '>=8.3'} - pg@8.11.5: - resolution: { integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw== } - engines: { node: '>= 8.0.0' } - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true + rollup-plugin-postcss@4.0.2: + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: 8.x + + rollup-plugin-serve@2.0.2: + resolution: {integrity: sha512-ALqyTbPhlf7FZ5RzlbDvMYvbKuCHWginJkTo6dMsbgji/a78IbsXox+pC83HENdkTRz8OXrTj+aShp3+3ratpg==} + + rollup-plugin-terser@7.0.2: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 - pgpass@1.0.5: - resolution: { integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== } + rollup-plugin-typescript-paths@1.4.0: + resolution: {integrity: sha512-6EgeLRjTVmymftEyCuYu91XzY5XMB5lR0YrJkeT0D7OG2RGSdbNL+C/hfPIdc/sjMa9Sl5NLsxIr6C/+/5EUpA==} + peerDependencies: + typescript: '>=3.4' + + rollup-plugin-uglify@6.0.4: + resolution: {integrity: sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==} + peerDependencies: + rollup: '>=0.66.0 <2' - pgvector@0.1.8: - resolution: { integrity: sha512-mD6aw+XYJrsuLl3Y8s8gHDDfOZQ9ERtfQPdhvjOrC7eOTM7b6sNkxeZxBhHwUdXMfHmyGWIbwU0QbmSnn7pPmg== } - engines: { node: '>= 12' } - - picocolors@0.2.1: - resolution: { integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== } - - picocolors@1.0.0: - resolution: { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== } - - picocolors@1.0.1: - resolution: { integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== } - - picomatch@2.3.1: - resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } - engines: { node: '>=8.6' } - - picomatch@3.0.1: - resolution: { integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== } - engines: { node: '>=10' } - - pidtree@0.6.0: - resolution: { integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== } - engines: { node: '>=0.10' } - hasBin: true - - pify@2.3.0: - resolution: { integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== } - engines: { node: '>=0.10.0' } - - pify@4.0.1: - resolution: { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } - engines: { node: '>=6' } - - pify@5.0.0: - resolution: { integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== } - engines: { node: '>=10' } - - pinkie-promise@2.0.1: - resolution: { integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== } - engines: { node: '>=0.10.0' } - - pinkie@2.0.4: - resolution: { integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== } - engines: { node: '>=0.10.0' } - - pirates@4.0.6: - resolution: { integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== } - engines: { node: '>= 6' } - - pkg-dir@4.2.0: - resolution: { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } - engines: { node: '>=8' } - - pkg-dir@7.0.0: - resolution: { integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== } - engines: { node: '>=14.16' } - - pkg-store@0.2.2: - resolution: { integrity: sha512-1JZVLbIRN6Dgsfk918EMZyL/T4NvJduSaT7n6ssHO3FV1FCrg6zjHJmuj3+Fb/Y5nBe3IBDoMYsY6Jf2IoRH0A== } - engines: { node: '>=0.10.0' } - - pkg-up@3.1.0: - resolution: { integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== } - engines: { node: '>=8' } - - platform@1.3.6: - resolution: { integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== } - - playwright-core@1.42.1: - resolution: { integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA== } - engines: { node: '>=16' } - hasBin: true - - playwright@1.42.1: - resolution: { integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg== } - engines: { node: '>=16' } - hasBin: true - - popmotion@9.3.6: - resolution: { integrity: sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw== } - - portkey-ai@0.1.16: - resolution: { integrity: sha512-EY4FRp6PZSD75Q1o1qc08DfPNTG9FnkUPN3Z1/lEvaq9iFpSO5UekcagUZaKSVhao311qjBjns+kF0rS9ht7iA== } - - posix-character-classes@0.1.1: - resolution: { integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== } - engines: { node: '>=0.10.0' } - - possible-typed-array-names@1.0.0: - resolution: { integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== } - engines: { node: '>= 0.4' } - - postcss-attribute-case-insensitive@5.0.2: - resolution: { integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-browser-comments@4.0.0: - resolution: { integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== } - engines: { node: '>=8' } - peerDependencies: - browserslist: '>=4' - postcss: '>=8' - - postcss-calc@8.2.4: - resolution: { integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== } - peerDependencies: - postcss: ^8.2.2 - - postcss-calc@9.0.1: - resolution: { integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.2.2 - - postcss-clamp@4.1.0: - resolution: { integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== } - engines: { node: '>=7.6.0' } - peerDependencies: - postcss: ^8.4.6 - - postcss-color-functional-notation@4.2.4: - resolution: { integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-color-hex-alpha@8.0.4: - resolution: { integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.4 - - postcss-color-rebeccapurple@7.1.1: - resolution: { integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-colormin@5.3.1: - resolution: { integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-colormin@6.1.0: - resolution: { integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@5.1.3: - resolution: { integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-convert-values@6.1.0: - resolution: { integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-custom-media@8.0.2: - resolution: { integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.3 - - postcss-custom-properties@12.1.11: - resolution: { integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-custom-selectors@6.0.3: - resolution: { integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.3 - - postcss-dir-pseudo-class@6.0.5: - resolution: { integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-discard-comments@5.1.2: - resolution: { integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-comments@6.0.2: - resolution: { integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@5.1.0: - resolution: { integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-duplicates@6.0.3: - resolution: { integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@5.1.1: - resolution: { integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-empty@6.0.3: - resolution: { integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@5.1.0: - resolution: { integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-overridden@6.0.2: - resolution: { integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-unused@6.0.5: - resolution: { integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-double-position-gradients@3.1.2: - resolution: { integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-env-function@4.0.6: - resolution: { integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.4 - - postcss-flexbugs-fixes@5.0.2: - resolution: { integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== } - peerDependencies: - postcss: ^8.1.4 - - postcss-focus-visible@6.0.4: - resolution: { integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.4 - - postcss-focus-within@5.0.4: - resolution: { integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.4 - - postcss-font-variant@5.0.0: - resolution: { integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== } - peerDependencies: - postcss: ^8.1.0 - - postcss-gap-properties@3.0.5: - resolution: { integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-image-set-function@4.0.7: - resolution: { integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-import@14.1.0: - resolution: { integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== } - engines: { node: '>=10.0.0' } - peerDependencies: - postcss: ^8.0.0 - - postcss-initial@4.0.1: - resolution: { integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== } - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: { integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== } - engines: { node: ^12 || ^14 || >= 16 } - peerDependencies: - postcss: ^8.4.21 - - postcss-lab-function@4.2.1: - resolution: { integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-load-config@3.1.4: - resolution: { integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== } - engines: { node: '>= 10' } - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-loader@6.2.1: - resolution: { integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== } - engines: { node: '>= 12.13.0' } - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - - postcss-loader@7.3.4: - resolution: { integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== } - engines: { node: '>= 14.15.0' } - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - - postcss-logical@5.0.4: - resolution: { integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.4 - - postcss-media-minmax@5.0.0: - resolution: { integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== } - engines: { node: '>=10.0.0' } - peerDependencies: - postcss: ^8.1.0 - - postcss-merge-idents@6.0.3: - resolution: { integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@5.1.7: - resolution: { integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-longhand@6.0.5: - resolution: { integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@5.1.4: - resolution: { integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-rules@6.1.1: - resolution: { integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@5.1.0: - resolution: { integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-font-values@6.1.0: - resolution: { integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@5.1.1: - resolution: { integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-gradients@6.0.3: - resolution: { integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@5.1.4: - resolution: { integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-params@6.1.0: - resolution: { integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@5.2.1: - resolution: { integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-selectors@6.0.4: - resolution: { integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-modules-extract-imports@3.0.0: - resolution: { integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.0.4: - resolution: { integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.1.1: - resolution: { integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: { integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@4.3.1: - resolution: { integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== } - peerDependencies: - postcss: ^8.0.0 - - postcss-nested@6.0.0: - resolution: { integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== } - engines: { node: '>=12.0' } - peerDependencies: - postcss: ^8.2.14 - - postcss-nesting@10.2.0: - resolution: { integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-normalize-charset@5.1.0: - resolution: { integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-charset@6.0.2: - resolution: { integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@5.1.0: - resolution: { integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-display-values@6.0.2: - resolution: { integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@5.1.1: - resolution: { integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-positions@6.0.2: - resolution: { integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@5.1.1: - resolution: { integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-repeat-style@6.0.2: - resolution: { integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@5.1.0: - resolution: { integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-string@6.0.2: - resolution: { integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@5.1.0: - resolution: { integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-timing-functions@6.0.2: - resolution: { integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@5.1.1: - resolution: { integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-unicode@6.1.0: - resolution: { integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@5.1.0: - resolution: { integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-url@6.0.2: - resolution: { integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@5.1.1: - resolution: { integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-whitespace@6.0.2: - resolution: { integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize@10.0.1: - resolution: { integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== } - engines: { node: '>= 12' } - peerDependencies: - browserslist: '>= 4' - postcss: '>= 8' - - postcss-opacity-percentage@1.1.3: - resolution: { integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-ordered-values@5.1.3: - resolution: { integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-ordered-values@6.0.2: - resolution: { integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-overflow-shorthand@3.0.4: - resolution: { integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-page-break@3.0.4: - resolution: { integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== } - peerDependencies: - postcss: ^8 - - postcss-place@7.0.5: - resolution: { integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-preset-env@7.8.3: - resolution: { integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-pseudo-class-any-link@7.1.6: - resolution: { integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-reduce-idents@6.0.3: - resolution: { integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@5.1.2: - resolution: { integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-initial@6.1.0: - resolution: { integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@5.1.0: - resolution: { integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-transforms@6.0.2: - resolution: { integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-replace-overflow-wrap@4.0.0: - resolution: { integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== } - peerDependencies: - postcss: ^8.0.3 - - postcss-selector-not@6.0.1: - resolution: { integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== } - engines: { node: ^12 || ^14 || >=16 } - peerDependencies: - postcss: ^8.2 - - postcss-selector-parser@6.0.10: - resolution: { integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== } - engines: { node: '>=4' } - - postcss-selector-parser@6.0.15: - resolution: { integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== } - engines: { node: '>=4' } - - postcss-selector-parser@6.1.2: - resolution: { integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== } - engines: { node: '>=4' } - - postcss-sort-media-queries@5.2.0: - resolution: { integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== } - engines: { node: '>=14.0.0' } - peerDependencies: - postcss: ^8.4.23 - - postcss-svgo@5.1.0: - resolution: { integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-svgo@6.0.3: - resolution: { integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== } - engines: { node: ^14 || ^16 || >= 18 } - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@5.1.1: - resolution: { integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - postcss-unique-selectors@6.0.4: - resolution: { integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: { integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== } - - postcss-zindex@6.0.2: - resolution: { integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss@7.0.39: - resolution: { integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== } - engines: { node: '>=6.0.0' } - - postcss@8.4.21: - resolution: { integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== } - engines: { node: ^10 || ^12 || >=14 } - - postcss@8.4.31: - resolution: { integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== } - engines: { node: ^10 || ^12 || >=14 } - - postcss@8.4.39: - resolution: { integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== } - engines: { node: ^10 || ^12 || >=14 } - - postgres-array@2.0.0: - resolution: { integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== } - engines: { node: '>=4' } - - postgres-array@3.0.2: - resolution: { integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== } - engines: { node: '>=12' } - - postgres-bytea@1.0.0: - resolution: { integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== } - engines: { node: '>=0.10.0' } - - postgres-bytea@3.0.0: - resolution: { integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== } - engines: { node: '>= 6' } - - postgres-date@1.0.7: - resolution: { integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== } - engines: { node: '>=0.10.0' } - - postgres-date@2.1.0: - resolution: { integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA== } - engines: { node: '>=12' } - - postgres-interval@1.2.0: - resolution: { integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== } - engines: { node: '>=0.10.0' } - - postgres-interval@3.0.0: - resolution: { integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== } - engines: { node: '>=12' } - - postgres-range@1.1.4: - resolution: { integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== } - - posthog-node@3.6.3: - resolution: { integrity: sha512-JB+ei0LkwE+rKHyW5z79Nd1jUaGxU6TvkfjFqY9vQaHxU5aU8dRl0UUaEmZdZbHwjp3WmXCBQQRNyimwbNQfCw== } - engines: { node: '>=15.0.0' } - - preact-render-to-string@5.2.6: - resolution: { integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw== } - peerDependencies: - preact: '>=10' - - preact@10.23.2: - resolution: { integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA== } - - prebuild-install@7.1.2: - resolution: { integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== } - engines: { node: '>=10' } - hasBin: true - - preferred-pm@3.1.3: - resolution: { integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w== } - engines: { node: '>=10' } - - prelude-ls@1.1.2: - resolution: { integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== } - engines: { node: '>= 0.8.0' } - - prelude-ls@1.2.1: - resolution: { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } - engines: { node: '>= 0.8.0' } - - preserve@0.2.0: - resolution: { integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== } - engines: { node: '>=0.10.0' } - - prettier-linter-helpers@1.0.0: - resolution: { integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== } - engines: { node: '>=6.0.0' } - - prettier@2.8.8: - resolution: { integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== } - engines: { node: '>=10.13.0' } - hasBin: true - - prettier@3.2.5: - resolution: { integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== } - engines: { node: '>=14' } - hasBin: true - - pretty-bytes@5.6.0: - resolution: { integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== } - engines: { node: '>=6' } - - pretty-bytes@6.1.1: - resolution: { integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== } - engines: { node: ^14.13.1 || >=16.0.0 } - - pretty-error@4.0.0: - resolution: { integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== } - - pretty-format@27.5.1: - resolution: { integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - pretty-format@28.1.3: - resolution: { integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== } - engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - - pretty-format@29.7.0: - resolution: { integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - pretty-format@3.8.0: - resolution: { integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== } - - pretty-hrtime@1.0.3: - resolution: { integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== } - engines: { node: '>= 0.8' } - - pretty-quick@3.3.1: - resolution: { integrity: sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg== } - engines: { node: '>=10.13' } - hasBin: true - peerDependencies: - prettier: ^2.0.0 - - pretty-time@0.2.0: - resolution: { integrity: sha512-BwYVCPtnSq3nIGDK2rgwZTN2ClhBQmnG8pudrXIfGBwuMutIBj/W7wm/jz1WCHl/Kk2Q5i1Am1uD2Q74oPyBCw== } - engines: { node: '>=0.10.0' } - - pretty-time@1.1.0: - resolution: { integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== } - engines: { node: '>=4' } - - prism-react-renderer@1.3.5: - resolution: { integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== } - peerDependencies: - react: '>=0.14.9' + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + + rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true - prism-react-renderer@2.4.0: - resolution: { integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw== } - peerDependencies: - react: '>=16.0.0' - - prisma-json-types-generator@3.0.4: - resolution: { integrity: sha512-W53OpjBdGZxCsYv7MlUX69d7TPA9lEsQbDf9ddF0J93FX5EvaIRDMexdFPe0KTxiuquGvZTDJgeNXb3gIqEhJw== } - engines: { node: '>=14.0' } - hasBin: true - peerDependencies: - prisma: ^5.1 - typescript: ^5.1 - - prisma@5.18.0: - resolution: { integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g== } - engines: { node: '>=16.13' } - hasBin: true - - prismjs@1.17.1: - resolution: { integrity: sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== } - - prismjs@1.27.0: - resolution: { integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== } - engines: { node: '>=6' } - - prismjs@1.29.0: - resolution: { integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== } - engines: { node: '>=6' } - - private@0.1.8: - resolution: { integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== } - engines: { node: '>= 0.6' } - - proc-log@1.0.0: - resolution: { integrity: sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg== } + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true - proc-log@3.0.0: - resolution: { integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + rollup@3.20.2: + resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true - process-nextick-args@2.0.1: - resolution: { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } + rollup@3.23.0: + resolution: {integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true - process@0.11.10: - resolution: { integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== } - engines: { node: '>= 0.6.0' } + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true - progress@2.0.3: - resolution: { integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== } - engines: { node: '>=0.4.0' } + rollup@4.13.0: + resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.1.0: + resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==} + engines: {node: '>= 18'} + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + rtl-detect@1.1.2: + resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} + + rtlcss@4.3.0: + resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} + engines: {node: '>=12.0.0'} + hasBin: true + + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + run-script-os@1.1.6: + resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} + hasBin: true + + rusha@0.8.14: + resolution: {integrity: sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + s3-streamlogger@1.11.0: + resolution: {integrity: sha512-53hpmOaS8YAEF7IWc/m2QdH0EyWXWtBQm0NbPYjBkMWklAc0sOt9vE2ypC4QU7tkEym3c/X/NYfs92fkfpRNrw==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + 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==} - project-name@0.2.6: - resolution: { integrity: sha512-ZOxqunIi7fnAX+E0tE+FLHv2pSEa7IgEbnVG2s4wPxWL+p2cUk9KRDZV4lNkpfyrVR6rfOUBxIbctbJDo/qOTA== } - engines: { node: '>=0.10.0' } - hasBin: true + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - promise-all-reject-late@1.0.1: - resolution: { integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== } + safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - promise-call-limit@1.0.2: - resolution: { integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== } + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} - promise-inflight@1.0.1: - resolution: { integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== } - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} - promise-retry@2.0.1: - resolution: { integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== } - engines: { node: '>=10' } + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} - promise.series@0.2.0: - resolution: { integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== } - engines: { node: '>=0.12' } + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - promise@7.3.1: - resolution: { integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== } + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} - promise@8.3.0: - resolution: { integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== } + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - prompts@2.4.2: - resolution: { integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== } - engines: { node: '>= 6' } + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - prop-types@15.8.1: - resolution: { integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== } + sanitize-html@2.12.1: + resolution: {integrity: sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==} - property-expr@2.0.6: - resolution: { integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== } + sanitize.css@13.0.0: + resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} - property-information@5.6.0: - resolution: { integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== } + sass-loader@12.6.0: + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true - property-information@6.4.1: - resolution: { integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== } + sass@1.71.1: + resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} + engines: {node: '>=14.0.0'} + hasBin: true - proto-list@1.2.4: - resolution: { integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== } + sax@1.2.1: + resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - proto3-json-serializer@2.0.2: - resolution: { integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ== } - engines: { node: '>=14.0.0' } + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - protobufjs@6.11.4: - resolution: { integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== } - hasBin: true + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} - protobufjs@7.2.4: - resolution: { integrity: sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== } - engines: { node: '>=12.0.0' } + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} - protobufjs@7.2.6: - resolution: { integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== } - engines: { node: '>=12.0.0' } + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - protobufjs@7.3.2: - resolution: { integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== } - engines: { node: '>=12.0.0' } + schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} - protoc-gen-ts@0.8.7: - resolution: { integrity: sha512-jr4VJey2J9LVYCV7EVyVe53g1VMw28cCmYJhBe5e3YX5wiyiDwgxWxeDf9oTqAe4P1bN/YGAkW2jhlH8LohwiQ== } - hasBin: true + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} - proxy-addr@2.0.7: - resolution: { integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== } - engines: { node: '>= 0.10' } + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} - proxy-agent@6.3.0: - resolution: { integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og== } - engines: { node: '>= 14' } + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} - proxy-from-env@1.0.0: - resolution: { integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== } + scoped-regex@2.1.0: + resolution: {integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==} + engines: {node: '>=8'} - proxy-from-env@1.1.0: - resolution: { integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== } + search-insights@2.17.1: + resolution: {integrity: sha512-HHFjYH/0AqXacETlIbe9EYc3UNlQYGNNTY0fZ/sWl6SweX+GDxq9NB5+RVoPLgEFuOtCz7M9dhYxqDnhbbF0eQ==} - ps-tree@1.2.0: - resolution: { integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== } - engines: { node: '>= 0.10' } - hasBin: true + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} - pseudomap@1.0.2: - resolution: { integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== } + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - psl@1.9.0: - resolution: { integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== } + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - pstree.remy@1.1.8: - resolution: { integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== } + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - pump@2.0.1: - resolution: { integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== } + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} - pump@3.0.0: - resolution: { integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== } + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - pumpify@1.5.1: - resolution: { integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== } + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} - punycode@1.3.2: - resolution: { integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== } + semver-greatest-satisfied-range@1.1.0: + resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} + engines: {node: '>= 0.10'} - punycode@2.3.1: - resolution: { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== } - engines: { node: '>=6' } + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true - pupa@3.1.0: - resolution: { integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== } - engines: { node: '>=12.20' } + send@0.17.1: + resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} + engines: {node: '>= 0.8.0'} - puppeteer-core@19.11.1: - resolution: { integrity: sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA== } - engines: { node: '>=14.14.0' } - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} - puppeteer-core@20.9.0: - resolution: { integrity: sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg== } - engines: { node: '>=16.3.0' } - peerDependencies: - typescript: '>= 4.7.4' - peerDependenciesMeta: - typescript: - optional: true + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} - puppeteer@19.11.1: - resolution: { integrity: sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g== } - deprecated: < 22.8.2 is no longer supported + send@1.1.0: + resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} + engines: {node: '>= 18'} - puppeteer@20.9.0: - resolution: { integrity: sha512-kAglT4VZ9fWEGg3oLc4/de+JcONuEJhlh3J6f5R1TLkrY/EHHIHxWXDOzXvaxQCtedmyVXBwg8M+P8YCO/wZjw== } - engines: { node: '>=16.3.0' } - deprecated: < 22.8.2 is no longer supported + seq-queue@0.0.5: + resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} - pure-color@1.3.0: - resolution: { integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== } + serialize-error-cjs@0.1.3: + resolution: {integrity: sha512-GXwbHkufrNZ87O7DUEvWhR8eBnOqiXtHsOXakkJliG7eLDmjh6gDlbJbMZFFbUx0J5sXKgwq4NFCs41dF5MhiA==} + deprecated: Rolling release, please update to 0.2.0 - pure-rand@6.1.0: - resolution: { integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== } + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} - pyodide@0.25.0: - resolution: { integrity: sha512-RagtX3TfV2M0QAfThG2SMvwE31ikqAFDUXc5/4xhppEoVf4VbL7L0kbKOIdSNg7MbVsHELVxftk66WvT926GpA== } + serialize-javascript@2.1.2: + resolution: {integrity: sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==} - q@1.5.1: - resolution: { integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== } - engines: { node: '>=0.6.0', teleport: '>=0.2.0' } - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - qs@6.10.4: - resolution: { integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g== } - engines: { node: '>=0.6' } + seroval@0.5.1: + resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==} + engines: {node: '>=10'} - qs@6.11.0: - resolution: { integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== } - engines: { node: '>=0.6' } + serpapi@1.1.1: + resolution: {integrity: sha512-t5Bqu/6VMJ9naX8K+qCgUStpZOaNQFvIM4AudhMJLS6sqQT/EHaYrhGidDZHVx8QvcEdY6y1wNlxizOCtvJtUQ==} - qs@6.11.2: - resolution: { integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== } - engines: { node: '>=0.6' } + serve-handler@6.1.5: + resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} - qs@6.12.1: - resolution: { integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== } - engines: { node: '>=0.6' } + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} - qs@6.5.3: - resolution: { integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== } - engines: { node: '>=0.6' } + serve-static@1.14.1: + resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} + engines: {node: '>= 0.8.0'} - query-string@8.2.0: - resolution: { integrity: sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g== } - engines: { node: '>=14.16' } + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} - querystring@0.2.0: - resolution: { integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== } - engines: { node: '>=0.4.x' } - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} - querystringify@2.2.0: - resolution: { integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== } + serve-static@2.1.0: + resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==} + engines: {node: '>= 18'} - question-cache@0.4.0: - resolution: { integrity: sha512-QgX1mI/ZNBbG8M5gYfZQG/qxZRggP2Fk+WOqE/FKylmNwi5aWy6o1JSaojYrHT5JUtRdyG+wwVJSlTfW7UBmog== } - engines: { node: '>=0.10.0' } + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - question-cache@0.5.1: - resolution: { integrity: sha512-v9F1LnlSQIUEAGFtrfVX/76lH4u4zyV34t94o6EkguPTKKfbvV6SLH8h3pn7LXGZLmAgD1PbmVOuKMY8ZWnuPg== } - engines: { node: '>=0.10.0' } - - question-store@0.11.1: - resolution: { integrity: sha512-rvyFpqLYQCO7FOnX+3qZ7b8K7omWkn9MWyj/7dknf7BaGZHo//fzBS2/0atmcvZfjT2mu1q64oiZIrsB7OqqGg== } - engines: { node: '>=0.10.0' } - - queue-microtask@1.2.3: - resolution: { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } - - queue-tick@1.0.1: - resolution: { integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== } - - queue@6.0.2: - resolution: { integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== } - - quick-lru@5.1.1: - resolution: { integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== } - engines: { node: '>=10' } - - radix3@1.1.2: - resolution: { integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== } - - raf@3.4.1: - resolution: { integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== } - - rake-modified@1.0.8: - resolution: { integrity: sha512-rj/1t+EyI8Ly52eaCeSy5hoNpdNnDlNQ/+jll2DypR6nkuxotMbaupzwbuMSaXzuSL1I2pYVYy7oPus/Ls49ag== } - - random-bytes@1.0.0: - resolution: { integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ== } - engines: { node: '>= 0.8' } - - randomatic@3.1.1: - resolution: { integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== } - engines: { node: '>= 0.10.0' } - - randombytes@2.1.0: - resolution: { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } - - range-parser@1.2.0: - resolution: { integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== } - engines: { node: '>= 0.6' } - - range-parser@1.2.1: - resolution: { integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== } - engines: { node: '>= 0.6' } - - ranges-apply@7.0.16: - resolution: { integrity: sha512-4rGJHOyA7qatiMDg3vcETkc/TVBPU86/xZRTXff6o7a2neYLmj0EXUUAlhLVuiWAzTPHDPHOQxtk8EDrIF4ohg== } - engines: { node: '>=14.18.0' } - - ranges-merge@9.0.15: - resolution: { integrity: sha512-hvt4hx0FKIaVfjd1oKx0poL57ljxdL2KHC6bXBrAdsx2iCsH+x7nO/5J0k2veM/isnOcFZKp0ZKkiCjCtzy74Q== } - engines: { node: '>=14.18.0' } - - ranges-push@7.0.15: - resolution: { integrity: sha512-gXpBYQ5Umf3uG6jkJnw5ddok2Xfo5p22rAJBLrqzNKa7qkj3q5AOCoxfRPXEHUVaJutfXc9K9eGXdIzdyQKPkw== } - engines: { node: '>=14.18.0' } - - ranges-sort@6.0.11: - resolution: { integrity: sha512-fhNEG0vGi7bESitNNqNBAfYPdl2efB+1paFlI8BQDCNkruERKuuhG8LkQClDIVqUJLkrmKuOSPQ3xZHqVnVo3Q== } - engines: { node: '>=14.18.0' } - - raw-body@2.5.2: - resolution: { integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== } - engines: { node: '>= 0.8' } - - rc@1.2.8: - resolution: { integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== } - hasBin: true - - react-app-polyfill@3.0.0: - resolution: { integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== } - engines: { node: '>=14' } - - react-base16-styling@0.6.0: - resolution: { integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== } - - react-code-blocks@0.0.9-0: - resolution: { integrity: sha512-jdYJVZwGtsr6WIUaqILy5fkF1acf57YV5s0V3+w5o9v3omYnqBeO6EuZi1Vf2x1hahkYGEedsp46+ofdkYlqyw== } - engines: { node: '>=12' } - peerDependencies: - react: '>=16' - - react-color@2.19.3: - resolution: { integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== } - peerDependencies: - react: '*' - - react-datepicker@4.25.0: - resolution: { integrity: sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg== } - peerDependencies: - react: ^16.9.0 || ^17 || ^18 - react-dom: ^16.9.0 || ^17 || ^18 - - react-dev-utils@12.0.1: - resolution: { integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== } - engines: { node: '>=14' } - peerDependencies: - typescript: '>=2.7' - webpack: '>=4' - peerDependenciesMeta: - typescript: - optional: true - - react-device-detect@1.17.0: - resolution: { integrity: sha512-bBblIStwpHmoS281JFIVqeimcN3LhpoP5YKDWzxQdBIUP8S2xPvHDgizLDhUq2ScguLfVPmwfF5y268EEQR60w== } - peerDependencies: - react: '>= 0.14.0 < 18.0.0' - react-dom: '>= 0.14.0 < 18.0.0' - - react-dom@18.2.0: - resolution: { integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== } - peerDependencies: - react: ^18.2.0 - - react-draggable@4.4.6: - resolution: { integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== } - peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' - - react-error-overlay@6.0.11: - resolution: { integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== } - - react-fast-compare@2.0.4: - resolution: { integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== } - - react-fast-compare@3.2.2: - resolution: { integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== } - - react-frame-component@5.2.6: - resolution: { integrity: sha512-CwkEM5VSt6nFwZ1Op8hi3JB5rPseZlmnp5CGiismVTauE6S4Jsc4TNMlT0O7Cts4WgIC3ZBAQ2p1Mm9XgLbj+w== } - peerDependencies: - prop-types: ^15.5.9 - react: '>= 16.3' - react-dom: '>= 16.3' - - react-helmet-async@1.3.0: - resolution: { integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== } - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-helmet-async@2.0.5: - resolution: { integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg== } - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-hook-form@7.52.2: - resolution: { integrity: sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A== } - engines: { node: '>=18.0.0' } - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - - react-inspector@6.0.2: - resolution: { integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== } - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - - react-is@16.13.1: - resolution: { integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== } - - react-is@17.0.2: - resolution: { integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== } - - react-is@18.2.0: - resolution: { integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== } - - react-json-view-lite@1.5.0: - resolution: { integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw== } - engines: { node: '>=14' } - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - - react-lifecycles-compat@3.0.4: - resolution: { integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== } - - react-loadable-ssr-addon-v5-slorber@1.0.1: - resolution: { integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== } - engines: { node: '>=10.13.0' } - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - - react-markdown@8.0.7: - resolution: { integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ== } - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - react-onclickoutside@6.13.0: - resolution: { integrity: sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A== } - peerDependencies: - react: ^15.5.x || ^16.x || ^17.x || ^18.x - react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x - - react-perfect-scrollbar@1.5.8: - resolution: { integrity: sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA== } - peerDependencies: - react: '>=16.3.3' - react-dom: '>=16.3.3' - - react-popper@2.3.0: - resolution: { integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== } - peerDependencies: - '@popperjs/core': ^2.0.0 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - - react-property@2.0.0: - resolution: { integrity: sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw== } - - react-redux@8.1.3: - resolution: { integrity: sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw== } - peerDependencies: - '@types/react': ^16.8 || ^17.0 || ^18.0 - '@types/react-dom': ^16.8 || ^17.0 || ^18.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - react-native: '>=0.59' - redux: ^4 || ^5.0.0-beta.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - react-dom: - optional: true - react-native: - optional: true - redux: - optional: true - - react-refresh@0.11.0: - resolution: { integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== } - engines: { node: '>=0.10.0' } - - react-refresh@0.14.0: - resolution: { integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== } - engines: { node: '>=0.10.0' } - - react-router-config@5.1.1: - resolution: { integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== } - peerDependencies: - react: '>=15' - react-router: '>=5' - - react-router-dom@5.3.4: - resolution: { integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== } - peerDependencies: - react: '>=15' - - react-router-dom@6.3.0: - resolution: { integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== } - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router@5.3.4: - resolution: { integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== } - peerDependencies: - react: '>=15' - - react-router@6.3.0: - resolution: { integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== } - peerDependencies: - react: '>=16.8' - - react-scripts@5.0.1: - resolution: { integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== } - engines: { node: '>=14.0.0' } - hasBin: true - peerDependencies: - eslint: '*' - react: '>= 16' - typescript: ^3.2.1 || ^4 - peerDependenciesMeta: - typescript: - optional: true - - react-syntax-highlighter@12.2.1: - resolution: { integrity: sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA== } - peerDependencies: - react: '>= 0.14.0' - - react-syntax-highlighter@15.5.0: - resolution: { integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== } - peerDependencies: - react: '>= 0.14.0' - - react-textarea-autosize@8.5.3: - resolution: { integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== } - engines: { node: '>=10' } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react-transition-group@4.4.5: - resolution: { integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== } - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' - - react-window@1.8.10: - resolution: { integrity: sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg== } - engines: { node: '>8.0.0' } - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - - react@18.2.0: - resolution: { integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== } - engines: { node: '>=0.10.0' } - - reactcss@1.2.3: - resolution: { integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== } - peerDependencies: - react: '*' - - reactflow@11.10.4: - resolution: { integrity: sha512-0CApYhtYicXEDg/x2kvUHiUk26Qur8lAtTtiSlptNKuyEuGti6P1y5cS32YGaUoDMoCqkm/m+jcKkfMOvSCVRA== } - peerDependencies: - react: '>=17' - react-dom: '>=17' - - read-cache@1.0.0: - resolution: { integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== } - - read-cmd-shim@3.0.1: - resolution: { integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - read-file@0.2.0: - resolution: { integrity: sha512-na/zgd5KplGlR+io+ygXQMIoDfX/Y0bNS5+P2TOXOTk5plquOVd0snudCd30hZJAsnVK2rxuxUP2z0CN+Aw1lQ== } - engines: { node: '>=0.8' } - - read-package-json-fast@2.0.3: - resolution: { integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== } - engines: { node: '>=10' } - - read-package-json-fast@3.0.2: - resolution: { integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - read-package-json@6.0.4: - resolution: { integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - - read-pkg-up@1.0.1: - resolution: { integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== } - engines: { node: '>=0.10.0' } - - read-pkg-up@7.0.1: - resolution: { integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== } - engines: { node: '>=8' } - - read-pkg@1.1.0: - resolution: { integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== } - engines: { node: '>=0.10.0' } - - read-pkg@5.2.0: - resolution: { integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== } - engines: { node: '>=8' } - - readable-stream@1.0.34: - resolution: { integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== } - - 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' } + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} - readable-stream@4.5.2: - resolution: { integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} - readdir-scoped-modules@1.1.0: - resolution: { integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== } - deprecated: This functionality has been moved to @npmcli/fs + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} - readdirp@2.2.1: - resolution: { integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== } - engines: { node: '>=0.10' } + set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} - readdirp@3.6.0: - resolution: { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } - engines: { node: '>=8.10.0' } + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - reading-time@1.5.0: - resolution: { integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== } + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - readline2@1.0.1: - resolution: { integrity: sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g== } + setprototypeof@1.1.1: + resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - readline@1.3.0: - resolution: { integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== } + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - rechoir@0.6.2: - resolution: { integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== } - engines: { node: '>= 0.10' } + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true - rechoir@0.8.0: - resolution: { integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== } - engines: { node: '>= 10.13.0' } + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} - recursive-readdir@2.2.3: - resolution: { integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== } - engines: { node: '>=6.0.0' } + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - redent@3.0.0: - resolution: { integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== } - engines: { node: '>=8' } + sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} - redeyed@2.1.1: - resolution: { integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== } + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} - redis-errors@1.2.0: - resolution: { integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== } - engines: { node: '>=4' } + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - redis-parser@3.0.0: - resolution: { integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== } - engines: { node: '>=4' } + shell-exec@1.0.2: + resolution: {integrity: sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==} - redis@4.6.13: - resolution: { integrity: sha512-MHgkS4B+sPjCXpf+HfdetBwbRz6vCtsceTmw1pHNYJAsYxrfpOP6dz+piJWGos8wqG7qb3vj/Rrc5qOlmInUuA== } + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - reduce-object@0.1.3: - resolution: { integrity: sha512-7js/WmWoI5NRe/mfxUimt0rmj04lfhJIa8SDyt+OKasagu+KjffnVxElTKuZs1fRjytlN46BrDoVK+IsBVovtw== } - engines: { node: '>=0.10.0' } + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true - redux@4.2.1: - resolution: { integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== } + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - reflect-metadata@0.1.14: - resolution: { integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== } + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} - reflect-metadata@0.2.1: - resolution: { integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw== } - deprecated: This version has a critical bug in fallback handling. Please upgrade to reflect-metadata@0.2.2 or newer. + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} - reflect.getprototypeof@1.0.5: - resolution: { integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== } - engines: { node: '>= 0.4' } + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} - refractor@2.10.1: - resolution: { integrity: sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw== } + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} - refractor@3.6.0: - resolution: { integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== } + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} - reftools@1.1.9: - resolution: { integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== } + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} - regenerate-unicode-properties@10.1.1: - resolution: { integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== } - engines: { node: '>=4' } + shx@0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true - regenerate@1.4.2: - resolution: { integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== } + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} - regenerator-runtime@0.11.1: - resolution: { integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== } + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} - regenerator-runtime@0.13.11: - resolution: { integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== } + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} - regenerator-runtime@0.14.1: - resolution: { integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== } + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} - regenerator-transform@0.15.2: - resolution: { integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== } + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} - regex-cache@0.4.4: - resolution: { integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== } - engines: { node: '>=0.10.0' } + sift@17.1.3: + resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==} - regex-not@1.0.2: - resolution: { integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== } - engines: { node: '>=0.10.0' } + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - regex-parser@2.3.0: - resolution: { integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== } + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - regexp.prototype.flags@1.5.2: - resolution: { integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== } - engines: { node: '>= 0.4' } + sigstore@1.9.0: + resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true - regexpp@3.2.0: - resolution: { integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== } - engines: { node: '>=8' } + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - regexpu-core@5.3.2: - resolution: { integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== } - engines: { node: '>=4' } + simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - registry-auth-token@5.0.2: - resolution: { integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== } - engines: { node: '>=14' } + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - registry-url@6.0.1: - resolution: { integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== } - engines: { node: '>=12' } + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - regjsparser@0.9.1: - resolution: { integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== } - hasBin: true + simple-update-notifier@1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} - rehype-mathjax@4.0.3: - resolution: { integrity: sha512-QIwWH9U+r54nMQklVkT1qluxhKyzdPWz9dFwgel3BrseQsWZafRTDTUj8VR8/14nFuRIV2ChuCMz4zpACPoYvg== } + simple-wcswidth@1.0.1: + resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} - rehype-raw@7.0.0: - resolution: { integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== } + sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} - reinterval@1.1.0: - resolution: { integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ== } + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} - relateurl@0.2.7: - resolution: { integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== } - engines: { node: '>= 0.10' } + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - relative@3.0.2: - resolution: { integrity: sha512-Q5W2qeYtY9GbiR8z1yHNZ1DGhyjb4AnLEjt8iE6XfcC1QIu+FAtj3HQaO0wH28H1mX6cqNLvAqWhP402dxJGyA== } - engines: { node: '>= 0.8.0' } + sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true - remark-directive@3.0.0: - resolution: { integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== } + sitemapper@3.2.9: + resolution: {integrity: sha512-dMNwfOWQBUIkGyu3lT/SvIyr57JO87tTrIIWtcYD46WbfnSIBmvpxIiehEy1ehGx0jbO23bhku+4mJXX2Av7FA==} + engines: {node: '>= 10.0.0'} - remark-emoji@4.0.1: - resolution: { integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} - remark-frontmatter@5.0.0: - resolution: { integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== } + slash@1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} - remark-gfm@1.0.0: - resolution: { integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA== } + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - remark-gfm@3.0.1: - resolution: { integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== } + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} - remark-gfm@4.0.0: - resolution: { integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== } + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} - remark-math@5.1.1: - resolution: { integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw== } + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} - remark-mdx@3.0.1: - resolution: { integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA== } + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} - remark-parse@10.0.2: - resolution: { integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw== } + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - remark-parse@11.0.0: - resolution: { integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== } + smob@0.0.6: + resolution: {integrity: sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==} - remark-parse@9.0.0: - resolution: { integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== } + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - remark-rehype@10.1.0: - resolution: { integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== } + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} - remark-rehype@11.1.0: - resolution: { integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== } + socket.io-adapter@2.5.4: + resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==} - remark-stringify@11.0.0: - resolution: { integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== } + socket.io-client@4.7.4: + resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + engines: {node: '>=10.0.0'} - remote-origin-url@0.5.3: - resolution: { integrity: sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg== } - engines: { node: '>= 0.8.0' } + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} - remove-bom-buffer@3.0.0: - resolution: { integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== } - engines: { node: '>=0.10.0' } + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} - remove-bom-stream@1.2.0: - resolution: { integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA== } - engines: { node: '>= 0.10' } + socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} - remove-trailing-separator@1.1.0: - resolution: { integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== } + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - renderkid@3.0.0: - resolution: { integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== } + socks-proxy-agent@6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} - repeat-element@1.1.4: - resolution: { integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== } - engines: { node: '>=0.10.0' } + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} - repeat-string@1.6.1: - resolution: { integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== } - engines: { node: '>=0.10' } + socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} - repeating@2.0.1: - resolution: { integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== } - engines: { node: '>=0.10.0' } + socks@2.8.1: + resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - replace-ext@0.0.1: - resolution: { integrity: sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ== } - engines: { node: '>= 0.4' } + solid-element@1.7.0: + resolution: {integrity: sha512-VUMNqunL3acgtpqbiI9bbUwOyXyz9cAHvGy1Zki1znx+gZJYFgjzckpjpTb2u/Gxud8LSYL+LRTgMGIHdUY4bg==} + peerDependencies: + solid-js: ^1.7.0 - replace-ext@1.0.1: - resolution: { integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== } - engines: { node: '>= 0.10' } + solid-js@1.7.1: + resolution: {integrity: sha512-G7wPaRsxY+Mr6GTVSHIqrpHoJNM5YHX6V/X03mPo9RmsuVZU6ZA2O+jVJty6mOyGME24WR30E55L0IQsxxO/vg==} - replace-homedir@1.0.0: - resolution: { integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg== } - engines: { node: '>= 0.10' } + sort-css-media-queries@2.2.0: + resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} + engines: {node: '>= 6.3.0'} - replicate@0.31.1: - resolution: { integrity: sha512-klO76pTPzzS9Xri6bWtAp5mNjgcvyvqpVHibhTyrx4pAK7rvXal8rNGspURGCwp8ToxDQNYGEV7l+3d+xiFiwQ== } - engines: { git: '>=2.11.0', node: '>=18.0.0', npm: '>=7.19.0', yarn: '>=1.7.0' } + sort-keys@4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} - repo-utils@0.3.7: - resolution: { integrity: sha512-NQmnug1GX04LoNb2bXGsCV3FzLDqmwf3qMmjToibrxI1CFV2uyE2XDdo9SYW8epfBK7wmw0ANhkmDtbGlrkyWQ== } - engines: { node: '>=0.10.0' } + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - request-progress@3.0.0: - resolution: { integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== } + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} - request@2.88.2: - resolution: { integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== } - engines: { node: '>= 6' } - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} - require-directory@2.1.1: - resolution: { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } - engines: { node: '>=0.10.0' } + source-map-loader@3.0.2: + resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 - require-from-string@2.0.2: - resolution: { integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== } - engines: { node: '>=0.10.0' } + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated - require-like@0.1.2: - resolution: { integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== } + source-map-support@0.4.18: + resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - require-main-filename@1.0.1: - resolution: { integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== } + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - require-package-name@2.0.1: - resolution: { integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== } + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - requires-port@1.0.0: - resolution: { integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== } + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated - reselect@4.1.8: - resolution: { integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== } + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} - resolve-alpn@1.2.1: - resolution: { integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== } + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - resolve-cwd@3.0.0: - resolution: { integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== } - engines: { node: '>=8' } + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} - resolve-dir@0.1.1: - resolution: { integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== } - engines: { node: '>=0.10.0' } + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} - resolve-dir@1.0.1: - resolution: { integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== } - engines: { node: '>=0.10.0' } + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead - resolve-file@0.2.2: - resolution: { integrity: sha512-3t2k4iUeMlX3PbjgZPcKzILg8HEtl0VW/lS8G+k4FCgj3kNn1uTOv6YJtm192rYMFpq9abzfJ2xd5W6ibOwVag== } - engines: { node: '>=0.10.0' } + space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - resolve-file@0.3.0: - resolution: { integrity: sha512-9RXicAgDvLD272hZ3HwJv9MJUGxCBRRwwSBRdOGWgcO03MtC9UTGC6XG1VbS4T5MvDrb+tVZx2RhZ90uk3uczg== } - engines: { node: '>=0.10.0' } + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - resolve-from@4.0.0: - resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } - engines: { node: '>=4' } + sparkles@1.0.1: + resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} + engines: {node: '>= 0.10'} - resolve-from@5.0.0: - resolution: { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } - engines: { node: '>=8' } + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - resolve-glob@1.0.0: - resolution: { integrity: sha512-wSW9pVGJRs89k0wEXhM7C6+va9998NsDhgc0Y+6Nv8hrHsu0hUS7Ug10J1EiVtU6N2tKlSNvx9wLihL8Ao22Lg== } - engines: { node: '>=0.10.0' } + spawn-command@0.0.2-1: + resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} - resolve-options@1.1.0: - resolution: { integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A== } - engines: { node: '>= 0.10' } + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - resolve-pathname@3.0.0: - resolution: { integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== } + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - resolve-pkg-maps@1.0.0: - resolution: { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - resolve-url-loader@4.0.0: - resolution: { integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== } - engines: { node: '>=8.9' } - peerDependencies: - rework: 1.0.1 - rework-visit: 1.0.0 - peerDependenciesMeta: - rework: - optional: true - rework-visit: - optional: true + spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} - resolve-url@0.2.1: - resolution: { integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== } - deprecated: https://github.com/lydell/resolve-url#deprecated + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - resolve.exports@1.1.1: - resolution: { integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== } - engines: { node: '>=10' } - - resolve.exports@2.0.2: - resolution: { integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== } - engines: { node: '>=10' } - - resolve@1.22.8: - resolution: { integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== } - hasBin: true - - resolve@2.0.0-next.5: - resolution: { integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== } - hasBin: true - - responselike@2.0.1: - resolution: { integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== } - - responselike@3.0.0: - resolution: { integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== } - engines: { node: '>=14.16' } - - restore-cursor@1.0.1: - resolution: { integrity: sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw== } - engines: { node: '>=0.10.0' } - - restore-cursor@3.1.0: - resolution: { integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== } - engines: { node: '>=8' } - - restore-cursor@4.0.0: - resolution: { integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - ret@0.1.15: - resolution: { integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== } - engines: { node: '>=0.12' } - - rethrow@0.2.3: - resolution: { integrity: sha512-vtB0AIP/FlRbR4stc8szvHXe+N4158/K1hRMZbFHljIiQAHru54M9LylbxNjBGHl9biuwQNVUdvRzVxv1QWAiA== } - engines: { node: '>=0.10.0' } - - retry-request@7.0.2: - resolution: { integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== } - engines: { node: '>=14' } - - retry@0.12.0: - resolution: { integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== } - engines: { node: '>= 4' } - - retry@0.13.1: - resolution: { integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== } - engines: { node: '>= 4' } - - reusify@1.0.4: - resolution: { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - - rfdc@1.3.1: - resolution: { integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== } - - right-align@0.1.3: - resolution: { integrity: sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg== } - engines: { node: '>=0.10.0' } - - rimraf@2.7.1: - resolution: { integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@5.0.5: - resolution: { integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== } - engines: { node: '>=14' } - hasBin: true - - rollup-plugin-livereload@2.0.5: - resolution: { integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA== } - engines: { node: '>=8.3' } - - rollup-plugin-postcss@4.0.2: - resolution: { integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== } - engines: { node: '>=10' } - peerDependencies: - postcss: 8.x - - rollup-plugin-serve@2.0.2: - resolution: { integrity: sha512-ALqyTbPhlf7FZ5RzlbDvMYvbKuCHWginJkTo6dMsbgji/a78IbsXox+pC83HENdkTRz8OXrTj+aShp3+3ratpg== } - - rollup-plugin-terser@7.0.2: - resolution: { integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== } - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} - rollup-plugin-typescript-paths@1.4.0: - resolution: { integrity: sha512-6EgeLRjTVmymftEyCuYu91XzY5XMB5lR0YrJkeT0D7OG2RGSdbNL+C/hfPIdc/sjMa9Sl5NLsxIr6C/+/5EUpA== } - peerDependencies: - typescript: '>=3.4' + speech-rule-engine@4.0.7: + resolution: {integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==} + hasBin: true - rollup-plugin-uglify@6.0.4: - resolution: { integrity: sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw== } - peerDependencies: - rollup: '>=0.66.0 <2' + split-ca@1.0.1: + resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} - rollup-pluginutils@2.8.2: - resolution: { integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== } + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} - rollup@2.78.0: - resolution: { integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg== } - engines: { node: '>=10.0.0' } - hasBin: true + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - rollup@2.79.1: - resolution: { integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== } - engines: { node: '>=10.0.0' } - hasBin: true + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} - rollup@3.20.2: - resolution: { integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg== } - engines: { node: '>=14.18.0', npm: '>=8.0.0' } - hasBin: true - - rollup@3.23.0: - resolution: { integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== } - engines: { node: '>=14.18.0', npm: '>=8.0.0' } - hasBin: true - - rollup@3.29.4: - resolution: { integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== } - engines: { node: '>=14.18.0', npm: '>=8.0.0' } - hasBin: true - - rollup@4.13.0: - resolution: { integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg== } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } - hasBin: true - - rrweb-cssom@0.6.0: - resolution: { integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== } - - rtl-detect@1.1.2: - resolution: { integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== } - - rtlcss@4.3.0: - resolution: { integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig== } - engines: { node: '>=12.0.0' } - hasBin: true - - run-applescript@5.0.0: - resolution: { integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== } - engines: { node: '>=12' } - - run-async@0.1.0: - resolution: { integrity: sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw== } - - run-async@2.4.1: - resolution: { integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== } - engines: { node: '>=0.12.0' } - - run-parallel@1.2.0: - resolution: { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } - - run-script-os@1.1.6: - resolution: { integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw== } - hasBin: true - - rusha@0.8.14: - resolution: { integrity: sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA== } - - rw@1.3.3: - resolution: { integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== } - - rx-lite@4.0.8: - resolution: { integrity: sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA== } - - rxjs@7.8.1: - resolution: { integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== } - - sade@1.8.1: - resolution: { integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== } - engines: { node: '>=6' } - - safe-array-concat@1.1.2: - resolution: { integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== } - 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== } + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - safe-identifier@0.4.2: - resolution: { integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== } + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - safe-regex-test@1.0.3: - resolution: { integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== } - engines: { node: '>= 0.4' } + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - safe-regex@1.1.0: - resolution: { integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== } + sqlite3@5.1.7: + resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} - safe-stable-stringify@2.4.3: - resolution: { integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== } - engines: { node: '>=10' } + sqlstring@2.3.3: + resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} + engines: {node: '>= 0.6'} - safer-buffer@2.1.2: - resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } + srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} - sanitize-html@2.12.1: - resolution: { integrity: sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA== } + srt-parser-2@1.2.3: + resolution: {integrity: sha512-dANP1AyJTI503H0/kXwRza+7QxDB3BqeFvEKTF4MI9lQcBe8JbRUQTKVIGzGABJCwBovEYavZ2Qsdm/s8XKz8A==} + hasBin: true - sanitize.css@13.0.0: - resolution: { integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== } + ssh2@1.16.0: + resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} + engines: {node: '>=10.16.0'} - sass-loader@12.6.0: - resolution: { integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== } - engines: { node: '>= 12.13.0' } - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true - sass@1.71.1: - resolution: { integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg== } - engines: { node: '>=14.0.0' } - hasBin: true + ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - sax@1.2.1: - resolution: { integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== } + ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} - sax@1.2.4: - resolution: { integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== } + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - saxes@5.0.1: - resolution: { integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== } - engines: { node: '>=10' } + sswr@2.1.0: + resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 - saxes@6.0.0: - resolution: { integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== } - engines: { node: '>=v12.22.7' } + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - scheduler@0.23.0: - resolution: { integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== } + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - schema-utils@2.7.0: - resolution: { integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== } - engines: { node: '>= 8.9.0' } + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} - schema-utils@2.7.1: - resolution: { integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== } - engines: { node: '>= 8.9.0' } + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - schema-utils@3.3.0: - resolution: { integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== } - engines: { node: '>= 10.13.0' } + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} - schema-utils@4.2.0: - resolution: { integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== } - engines: { node: '>= 12.13.0' } + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - scoped-regex@2.1.0: - resolution: { integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== } - engines: { node: '>=8' } + start-server-and-test@2.0.3: + resolution: {integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==} + engines: {node: '>=16'} + hasBin: true - search-insights@2.17.1: - resolution: { integrity: sha512-HHFjYH/0AqXacETlIbe9EYc3UNlQYGNNTY0fZ/sWl6SweX+GDxq9NB5+RVoPLgEFuOtCz7M9dhYxqDnhbbF0eQ== } + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - section-matter@1.0.0: - resolution: { integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== } - engines: { node: '>=4' } + static-eval@2.0.2: + resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} - secure-json-parse@2.7.0: - resolution: { integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== } + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} - selderee@0.11.0: - resolution: { integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA== } + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} - select-hose@2.0.0: - resolution: { integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== } + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - select@1.1.2: - resolution: { integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== } + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - selfsigned@2.4.1: - resolution: { integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== } - engines: { node: '>=10' } + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} - semver-diff@4.0.0: - resolution: { integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== } - engines: { node: '>=12' } - - semver-greatest-satisfied-range@1.1.0: - resolution: { integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ== } - engines: { node: '>= 0.10' } + stopwords-iso@1.1.0: + resolution: {integrity: sha512-I6GPS/E0zyieHehMRPQcqkiBMJKGgLta+1hREixhoLPqEA0AlVFiC43dl8uPpmkkeRdDMzYRWFWk5/l9x7nmNg==} + engines: {node: '>=0.10.0'} - semver@5.7.2: - resolution: { integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== } - hasBin: true + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - semver@6.3.1: - resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } - hasBin: true + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - semver@7.0.0: - resolution: { integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== } - hasBin: true + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} - semver@7.6.0: - resolution: { integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== } - engines: { node: '>=10' } - hasBin: true + stream-exhaust@1.0.2: + resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} - semver@7.7.1: - resolution: { integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== } - engines: { node: '>=10' } - hasBin: true + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - send@0.18.0: - resolution: { integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== } - engines: { node: '>= 0.8.0' } + stream-transform@3.3.2: + resolution: {integrity: sha512-v64PUnPy9Qw94NGuaEMo+9RHQe4jTBYf+NkTtqkCgeuiNo8NlL0LtLR7fkKWNVFtp3RhIm5Dlxkgm5uz7TDimQ==} - seq-queue@0.0.5: - resolution: { integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== } + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} - serialize-error-cjs@0.1.3: - resolution: { integrity: sha512-GXwbHkufrNZ87O7DUEvWhR8eBnOqiXtHsOXakkJliG7eLDmjh6gDlbJbMZFFbUx0J5sXKgwq4NFCs41dF5MhiA== } + streamx@2.16.1: + resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} - serialize-javascript@2.1.2: - resolution: { integrity: sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== } + strftime@0.10.3: + resolution: {integrity: sha512-DZrDUeIF73eKJ4/GgGuv8UHWcUQPYDYfDeQFj3jrx+JZl6GQE656MbHIpvbo4mEG9a5DgS8GRCc5DxJXD2udDQ==} + engines: {node: '>=0.2.0'} - serialize-javascript@4.0.0: - resolution: { integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== } + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} - serialize-javascript@6.0.2: - resolution: { integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== } + string-collapse-leading-whitespace@7.0.7: + resolution: {integrity: sha512-jF9eynJoE6ezTCdYI8Qb02/ij/DlU9ItG93Dty4SWfJeLFrotOr+wH9IRiWHTqO3mjCyqBWEiU3uSTIbxYbAEQ==} + engines: {node: '>=14.18.0'} - seroval@0.5.1: - resolution: { integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g== } - engines: { node: '>=10' } + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - serpapi@1.1.1: - resolution: { integrity: sha512-t5Bqu/6VMJ9naX8K+qCgUStpZOaNQFvIM4AudhMJLS6sqQT/EHaYrhGidDZHVx8QvcEdY6y1wNlxizOCtvJtUQ== } + string-left-right@6.0.17: + resolution: {integrity: sha512-nuyIV4D4ivnwT64E0TudmCRg52NfkumuEUilyoOrHb/Z2wEOF5I+9SI6P+veFKqWKZfGpAs6OqKe4nAjujARyw==} + engines: {node: '>=14.18.0'} - serve-handler@6.1.5: - resolution: { integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== } + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} - serve-index@1.9.1: - resolution: { integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== } - engines: { node: '>= 0.8.0' } + string-length@5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} - serve-static@1.15.0: - resolution: { integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== } - engines: { node: '>= 0.8.0' } + string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} - set-blocking@2.0.0: - resolution: { integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== } + string-strip-html@13.4.8: + resolution: {integrity: sha512-vlcRAtx5DN6zXGUx3EYGFg0/JOQWM65mqLgDaBHviQPP+ovUFzqZ30iQ+674JHWr9wNgnzFGxx9TGipPZMnZXg==} + engines: {node: '>=14.18.0'} - set-function-length@1.2.2: - resolution: { integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== } - engines: { node: '>= 0.4' } + string-trim-spaces-only@5.0.10: + resolution: {integrity: sha512-MhmjE5jNqb1Ylo+BARPRlsdChGLrnPpAUWrT1VOxo9WhWwKVUU6CbZTfjwKaQPYTGS/wsX/4Zek88FM2rEb5iA==} + engines: {node: '>=14.18.0'} - set-function-name@2.0.2: - resolution: { integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== } - engines: { node: '>= 0.4' } + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} - set-getter@0.1.1: - resolution: { integrity: sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== } - engines: { node: '>=0.10.0' } + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} - set-value@0.2.0: - resolution: { integrity: sha512-dJaeu7V8d1KwjePimg1oOpGp31cEw/uRcZlfL7wwemkr+A00ev/ZhikvSMiQ4hkf83d8JdY2AFoFmXsKzmHMSw== } - engines: { node: '>=0.10.0' } - deprecated: Critical bug fixed in v3.0.1, please upgrade to the latest version. + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} - set-value@0.3.3: - resolution: { integrity: sha512-aJPTd11HzK47w8xJMpyY4tBmFC6EidC8EG2fENxCJvPwLYzXLnNaesgo796y1fhSISSYAuah4Het+wDoPXK2tg== } - engines: { node: '>=0.10.0' } - deprecated: Critical bug fixed in v3.0.1, please upgrade to the latest version. + string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} - set-value@0.4.3: - resolution: { integrity: sha512-2Z0LRUUvYeF7gIFFep48ksPq0NR09e5oKoFXznaMGNcu+EZAfGnyL0K6xno2gCqX6dZYEZRjrcn04/gvZzcKhQ== } - engines: { node: '>=0.10.0' } - deprecated: Critical bug fixed in v3.0.1, please upgrade to the latest version. + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} - set-value@2.0.1: - resolution: { integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== } - engines: { node: '>=0.10.0' } + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - set-value@3.0.3: - resolution: { integrity: sha512-Xsn/XSatoVOGBbp5hs3UylFDs5Bi9i+ArpVJKdHPniZHoEgRniXTqHWrWrGQ0PbEClVT6WtfnBwR8CAHC9sveg== } - engines: { node: '>=6.0' } + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} - setimmediate@1.0.5: - resolution: { integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== } + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} - setprototypeof@1.1.0: - resolution: { integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== } + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - setprototypeof@1.2.0: - resolution: { integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== } + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} - sha.js@2.4.11: - resolution: { integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== } - hasBin: true + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - shallow-clone@0.1.2: - resolution: { integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw== } - engines: { node: '>=0.10.0' } + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} - shallow-clone@3.0.1: - resolution: { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } - engines: { node: '>=8' } + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - shallowequal@1.1.0: - resolution: { integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== } + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - sharp@0.32.6: - resolution: { integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== } - engines: { node: '>=14.15.0' } + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - shebang-command@2.0.0: - resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } - engines: { node: '>=8' } + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} - shebang-regex@3.0.0: - resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } - engines: { node: '>=8' } + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} - shell-exec@1.0.2: - resolution: { integrity: sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg== } + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: { integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== } + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} - shelljs@0.8.5: - resolution: { integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== } - engines: { node: '>=4' } - hasBin: true + strip-bom-buf@1.0.0: + resolution: {integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==} + engines: {node: '>=4'} - should-equal@2.0.0: - resolution: { integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== } + strip-bom-stream@2.0.0: + resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} + engines: {node: '>=0.10.0'} - should-format@3.0.3: - resolution: { integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== } + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} - should-type-adaptors@1.1.0: - resolution: { integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== } + strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} - should-type@1.4.0: - resolution: { integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== } + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} - should-util@1.0.1: - resolution: { integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== } + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} - should@13.2.3: - resolution: { integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== } + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} - shx@0.3.4: - resolution: { integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g== } - engines: { node: '>=6' } - hasBin: true + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} - side-channel@1.0.6: - resolution: { integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== } - engines: { node: '>= 0.4' } + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - sift@17.1.3: - resolution: { integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== } + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} - signal-exit@3.0.7: - resolution: { integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== } + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} - signal-exit@4.1.0: - resolution: { integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== } - engines: { node: '>=14' } + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} - sigstore@1.9.0: - resolution: { integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} - simple-concat@1.0.1: - resolution: { integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== } + stripe@12.18.0: + resolution: {integrity: sha512-cYjgBM2SY/dTm8Lr6eMyyONaHTZHA/QjHxFUIW5WH8FevSRIGAVtXEmBkUXF1fsqe7QvvRgQSGSJZmjDacegGg==} + engines: {node: '>=12.*'} - simple-get@3.1.1: - resolution: { integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== } + stripe@17.6.0: + resolution: {integrity: sha512-+HB6+SManp0gSRB0dlPmXO+io18krlAe0uimXhhIkL/RG/VIRigkfoM3QDJPkqbuSW0XsA6uzsivNCJU1ELEDA==} + engines: {node: '>=12.*'} - simple-get@4.0.1: - resolution: { integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== } + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - simple-swizzle@0.2.2: - resolution: { integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== } + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} - simple-update-notifier@1.1.0: - resolution: { integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== } - engines: { node: '>=8.10.0' } + strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} - sirv@1.0.19: - resolution: { integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== } - engines: { node: '>= 10' } + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - sirv@2.0.4: - resolution: { integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== } - engines: { node: '>= 10' } + style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} - sisteransi@1.0.5: - resolution: { integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== } + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 - sitemap@7.1.2: - resolution: { integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw== } - engines: { node: '>=12.0.0', npm: '>=5.6.0' } - hasBin: true + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + style-to-js@1.1.3: + resolution: {integrity: sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ==} - sitemapper@3.2.9: - resolution: { integrity: sha512-dMNwfOWQBUIkGyu3lT/SvIyr57JO87tTrIIWtcYD46WbfnSIBmvpxIiehEy1ehGx0jbO23bhku+4mJXX2Av7FA== } - engines: { node: '>= 10.0.0' } + style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - skin-tone@2.0.0: - resolution: { integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== } - engines: { node: '>=8' } + style-to-object@0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} - slash@1.0.0: - resolution: { integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== } - engines: { node: '>=0.10.0' } + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + style-to-object@1.0.7: + resolution: {integrity: sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==} - slash@3.0.0: - resolution: { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } - engines: { node: '>=8' } + style-value-types@4.1.4: + resolution: {integrity: sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg==} - slash@4.0.0: - resolution: { integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== } - engines: { node: '>=12' } + styled-components@5.3.11: + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' - slice-ansi@3.0.0: - resolution: { integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== } - engines: { node: '>=8' } + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true - slice-ansi@4.0.0: - resolution: { integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== } - engines: { node: '>=10' } + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + stylehacks@6.1.1: + resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + + 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-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte@4.2.18: + resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + engines: {node: '>=16'} + + sver-compat@1.5.0: + resolution: {integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==} + + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - slice-ansi@5.0.0: - resolution: { integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== } - engines: { node: '>=12' } + svgo@1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true - smart-buffer@4.2.0: - resolution: { integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== } - engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true - smob@0.0.6: - resolution: { integrity: sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw== } + swagger-jsdoc@6.2.8: + resolution: {integrity: sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==} + engines: {node: '>=12.0.0'} + hasBin: true + + swagger-parser@10.0.3: + resolution: {integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==} + engines: {node: '>=10'} + + swagger-ui-dist@5.20.1: + resolution: {integrity: sha512-qBPCis2w8nP4US7SvUxdJD3OwKcqiWeZmjN2VWhq2v+ESZEXOP/7n4DeiOiiZcGYTKMHAHUUrroHaTsjUWTEGw==} + + swagger-ui-express@5.0.1: + resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==} + engines: {node: '>= v0.10.32'} + peerDependencies: + express: '>=4.0.0 || >=5.0.0-beta' + + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + + swr@2.2.0: + resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + + swrev@4.0.0: + resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} + + swrv@1.0.4: + resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} + peerDependencies: + vue: '>=3.2.26 < 4' + + sylvester@0.0.12: + resolution: {integrity: sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw==} + engines: {node: '>=0.2.6'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tailwindcss@3.3.1: + resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@2.0.1: + resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + + tar-fs@3.0.5: + resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + + teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + 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 - snake-case@3.0.4: - resolution: { integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== } + terser@5.29.1: + resolution: {integrity: sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==} + engines: {node: '>=10'} + hasBin: true - snapdragon-node@2.1.1: - resolution: { integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== } - engines: { node: '>=0.10.0' } + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} - snapdragon-util@3.0.1: - resolution: { integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== } - engines: { node: '>=0.10.0' } + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - snapdragon@0.8.2: - resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } - engines: { node: '>=0.10.0' } + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - socket.io-adapter@2.5.4: - resolution: { integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== } + textextensions@5.16.0: + resolution: {integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw==} + engines: {node: '>=0.8'} - socket.io-client@4.7.4: - resolution: { integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg== } - engines: { node: '>=10.0.0' } + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} - socket.io-client@4.7.5: - resolution: { integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== } - engines: { node: '>=10.0.0' } + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - socket.io-parser@4.2.4: - resolution: { integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== } - engines: { node: '>=10.0.0' } + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 - socket.io@4.7.4: - resolution: { integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw== } - engines: { node: '>=10.2.0' } + three@0.168.0: + resolution: {integrity: sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw==} - sockjs@0.3.24: - resolution: { integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== } + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - socks-proxy-agent@6.2.1: - resolution: { integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== } - engines: { node: '>= 10' } + throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} - socks-proxy-agent@7.0.0: - resolution: { integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== } - engines: { node: '>= 10' } + through2-filter@3.0.0: + resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} - socks-proxy-agent@8.0.2: - resolution: { integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== } - engines: { node: '>= 14' } + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - socks@2.8.1: - resolution: { integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ== } - engines: { node: '>= 10.0.0', npm: '>= 3.0.0' } + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - solid-element@1.7.0: - resolution: { integrity: sha512-VUMNqunL3acgtpqbiI9bbUwOyXyz9cAHvGy1Zki1znx+gZJYFgjzckpjpTb2u/Gxud8LSYL+LRTgMGIHdUY4bg== } - peerDependencies: - solid-js: ^1.7.0 + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - solid-js@1.7.1: - resolution: { integrity: sha512-G7wPaRsxY+Mr6GTVSHIqrpHoJNM5YHX6V/X03mPo9RmsuVZU6ZA2O+jVJty6mOyGME24WR30E55L0IQsxxO/vg== } + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - sort-css-media-queries@2.2.0: - resolution: { integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== } - engines: { node: '>= 6.3.0' } + tiktoken@1.0.15: + resolution: {integrity: sha512-sCsrq/vMWUSEW29CJLNmPvWxlVp7yh2tlkAjpJltIKqp5CKf98ZNpdeHRmAlPVFlGEbswDc6SmI8vz64W/qErw==} - sort-keys@4.2.0: - resolution: { integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== } - engines: { node: '>=8' } + time-stamp@1.1.0: + resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} + engines: {node: '>=0.10.0'} - sort-object-arrays@0.1.1: - resolution: { integrity: sha512-yqoVMBF2wzCdE4f2zeYKq2dQHe1WjGIdAV1dYSkXOFB+M3Bo+Bp0u+NdZCOETM3OC1VXerlruTD6Ckgus1NsnA== } - engines: { node: '>=0.10.0' } + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - source-list-map@2.0.1: - resolution: { integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== } + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - source-map-js@1.0.2: - resolution: { integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== } - engines: { node: '>=0.10.0' } + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - source-map-js@1.2.0: - resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== } - engines: { node: '>=0.10.0' } + titleize@1.0.1: + resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} + engines: {node: '>=0.10.0'} - source-map-loader@3.0.2: - resolution: { integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^5.0.0 + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} - source-map-resolve@0.5.3: - resolution: { integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== } - deprecated: See https://github.com/lydell/source-map-resolve#deprecated + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} - source-map-support@0.4.18: - resolution: { integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== } + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - source-map-support@0.5.13: - resolution: { integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== } + to-absolute-glob@2.0.2: + resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: { integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== } + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - source-map-url@0.4.1: - resolution: { integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== } - deprecated: See https://github.com/lydell/source-map-url#deprecated + to-fast-properties@1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} - source-map@0.5.7: - resolution: { integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== } - engines: { node: '>=0.10.0' } + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} - source-map@0.6.1: - resolution: { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } - engines: { node: '>=0.10.0' } + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: { integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== } - engines: { node: '>= 8' } + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - source-map@0.8.0-beta.0: - resolution: { integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== } - engines: { node: '>= 8' } + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} - sourcemap-codec@1.4.8: - resolution: { integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== } - deprecated: Please use @jridgewell/sourcemap-codec instead + to-through@2.0.0: + resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} + engines: {node: '>= 0.10'} - space-separated-tokens@1.1.5: - resolution: { integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== } + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - space-separated-tokens@2.0.2: - resolution: { integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== } + toidentifier@1.0.0: + resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} + engines: {node: '>=0.6'} - sparkles@1.0.1: - resolution: { integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== } - engines: { node: '>= 0.10' } + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - sparse-bitfield@3.0.3: - resolution: { integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== } + token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} - spawn-command@0.0.2-1: - resolution: { integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== } + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - spdx-correct@3.2.0: - resolution: { integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== } + totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} - spdx-exceptions@2.5.0: - resolution: { integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== } + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} - spdx-expression-parse@3.0.1: - resolution: { integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== } + touch@3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true - spdx-license-ids@3.0.17: - resolution: { integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== } + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} - spdy-transport@3.0.0: - resolution: { integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== } + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} - spdy@4.0.2: - resolution: { integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== } - engines: { node: '>=6.0.0' } + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - speech-rule-engine@4.0.7: - resolution: { integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g== } - hasBin: true + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - split-on-first@3.0.0: - resolution: { integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA== } - engines: { node: '>=12' } + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} - split-string@1.0.1: - resolution: { integrity: sha512-ZuVODgxrpJnBD5LezfE484E2ArRF8HGgJqaiGBWvCbGS1iqynO45FQxBx7Ze4t45X9a994ejFD5kLhI6WtL1xA== } - engines: { node: '>=0.10.0' } + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' - split-string@3.1.0: - resolution: { integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== } - engines: { node: '>=0.10.0' } + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true - split2@3.2.2: - resolution: { integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== } + treeverse@1.0.4: + resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-right@1.0.1: + resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} + engines: {node: '>=0.10.0'} + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + troika-three-text@0.49.1: + resolution: {integrity: sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==} + peerDependencies: + three: '>=0.125.0' + + troika-three-utils@0.49.0: + resolution: {integrity: sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==} + peerDependencies: + three: '>=0.125.0' + + troika-worker-utils@0.49.0: + resolution: {integrity: sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==} + + trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.2.5: + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + 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 - split2@4.2.0: - resolution: { integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== } - engines: { node: '>= 10.x' } + ts-loader@9.5.1: + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + 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' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true - split@0.3.3: - resolution: { integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== } + ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + + ts-type@3.0.1: + resolution: {integrity: sha512-cleRydCkBGBFQ4KAvLH0ARIkciduS745prkGVVxPGvcRGhMMoSJUB7gNR1ByKhFTEYrYRg2CsMRGYnqp+6op+g==} + peerDependencies: + ts-toolbelt: ^9.6.0 + + tsc-watch@6.0.4: + resolution: {integrity: sha512-cHvbvhjO86w2aGlaHgSCeQRl+Aqw6X6XN4sQMPZKF88GoP30O+oTuh5lRIJr5pgFWrRpF1AgXnJJ2DoFEIPHyg==} + engines: {node: '>=12.12.0'} + hasBin: true + peerDependencies: + typescript: '*' + + tsconfck@3.0.3: + resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true - sprintf-js@1.0.3: - resolution: { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - sprintf-js@1.1.3: - resolution: { integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== } + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - sqlite3@5.1.7: - resolution: { integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog== } + tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - sqlstring@2.3.3: - resolution: { integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== } - engines: { node: '>= 0.6' } + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - src-stream@0.1.1: - resolution: { integrity: sha512-fczCn/BzNcH27V7unPzgCl+owTuC/Uv3UG9BQxGemRs6Fy1M2GFmYu1ZHQ2UjeYlGQqAmkModp949g235kYzcw== } - engines: { node: '>=0.10.0' } + tsup@6.7.0: + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true - srcset@4.0.0: - resolution: { integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== } - engines: { node: '>=12' } + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - srt-parser-2@1.2.3: - resolution: { integrity: sha512-dANP1AyJTI503H0/kXwRza+7QxDB3BqeFvEKTF4MI9lQcBe8JbRUQTKVIGzGABJCwBovEYavZ2Qsdm/s8XKz8A== } - hasBin: true + tsx@3.12.6: + resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} + hasBin: true - sshpk@1.18.0: - resolution: { integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== } - engines: { node: '>=0.10.0' } - hasBin: true + tuf-js@1.1.7: + resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ssri@10.0.5: - resolution: { integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - ssri@8.0.1: - resolution: { integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== } - engines: { node: '>= 8' } + turbo-darwin-64@1.10.16: + resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==} + cpu: [x64] + os: [darwin] - ssri@9.0.1: - resolution: { integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + turbo-darwin-arm64@1.10.16: + resolution: {integrity: sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@1.10.16: + resolution: {integrity: sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==} + cpu: [x64] + os: [linux] - sswr@2.1.0: - resolution: { integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ== } - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 + turbo-linux-arm64@1.10.16: + resolution: {integrity: sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==} + cpu: [arm64] + os: [linux] - stable@0.1.8: - resolution: { integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== } - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + turbo-windows-64@1.10.16: + resolution: {integrity: sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==} + cpu: [x64] + os: [win32] - stack-trace@0.0.10: - resolution: { integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== } + turbo-windows-arm64@1.10.16: + resolution: {integrity: sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==} + cpu: [arm64] + os: [win32] + + turbo@1.10.16: + resolution: {integrity: sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==} + hasBin: true + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - stack-utils@2.0.6: - resolution: { integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== } - engines: { node: '>=10' } + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - stackframe@1.3.4: - resolution: { integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== } + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} - stacktrace-parser@0.1.10: - resolution: { integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== } - engines: { node: '>=6' } + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} - standard-as-callback@2.1.0: - resolution: { integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== } + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} - start-server-and-test@2.0.3: - resolution: { integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg== } - engines: { node: '>=16' } - hasBin: true + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} - state-local@1.0.7: - resolution: { integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== } + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} - static-eval@2.0.2: - resolution: { integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== } + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + 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'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + type-fest@4.12.0: + resolution: {integrity: sha512-5Y2/pp2wtJk8o08G0CMkuFPCO354FGwk/vbidxrdhRGZfd0tFnb4Qb8anp9XxXriwBgVPjdWbKpGl4J9lJY2jQ==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type-is@2.0.0: + resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==} + engines: {node: '>= 0.6'} + + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typed-emitter@2.1.0: + resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} + + typedarray-dts@1.0.0: + resolution: {integrity: sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typeorm@0.3.20: + resolution: {integrity: sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==} + engines: {node: '>=16.13.0'} + hasBin: true + peerDependencies: + '@google-cloud/spanner': ^5.18.0 + '@sap/hana-client': ^2.12.25 + better-sqlite3: ^7.1.2 || ^8.0.0 || ^9.0.0 + hdb-pool: ^0.1.6 + ioredis: ^5.0.4 + mongodb: ^5.8.0 + mssql: ^9.1.1 || ^10.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 + 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 - static-extend@0.1.2: - resolution: { integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== } - engines: { node: '>=0.10.0' } + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true - statuses@1.5.0: - resolution: { integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== } - engines: { node: '>= 0.6' } + typescript@5.0.3: + resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} + engines: {node: '>=12.20'} + hasBin: true - statuses@2.0.1: - resolution: { integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== } - engines: { node: '>= 0.8' } + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true - std-env@3.7.0: - resolution: { integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== } + ua-parser-js@0.7.37: + resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} - stop-iteration-iterator@1.0.0: - resolution: { integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== } - engines: { node: '>= 0.4' } + ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - stopwords-iso@1.1.0: - resolution: { integrity: sha512-I6GPS/E0zyieHehMRPQcqkiBMJKGgLta+1hREixhoLPqEA0AlVFiC43dl8uPpmkkeRdDMzYRWFWk5/l9x7nmNg== } - engines: { node: '>=0.10.0' } + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - stream-combiner@0.0.4: - resolution: { integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== } + uglify-js@3.19.2: + resolution: {integrity: sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==} + engines: {node: '>=0.8.0'} + hasBin: true - stream-combiner@0.2.2: - resolution: { integrity: sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ== } + uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} - stream-events@1.0.5: - resolution: { integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== } + uid2@0.0.4: + resolution: {integrity: sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==} - stream-exhaust@1.0.2: - resolution: { integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== } + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - stream-shift@1.0.3: - resolution: { integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== } + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} - stream-transform@3.3.2: - resolution: { integrity: sha512-v64PUnPy9Qw94NGuaEMo+9RHQe4jTBYf+NkTtqkCgeuiNo8NlL0LtLR7fkKWNVFtp3RhIm5Dlxkgm5uz7TDimQ== } + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - streamsearch@1.1.0: - resolution: { integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== } - engines: { node: '>=10.0.0' } + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} - streamx@2.16.1: - resolution: { integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ== } + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - string-argv@0.3.2: - resolution: { integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== } - engines: { node: '>=0.6.19' } + unctx@2.3.1: + resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} - string-collapse-leading-whitespace@7.0.7: - resolution: { integrity: sha512-jF9eynJoE6ezTCdYI8Qb02/ij/DlU9ItG93Dty4SWfJeLFrotOr+wH9IRiWHTqO3mjCyqBWEiU3uSTIbxYbAEQ== } - engines: { node: '>=14.18.0' } + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - string-hash@1.1.3: - resolution: { integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== } + underscore@1.12.1: + resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} - string-left-right@6.0.17: - resolution: { integrity: sha512-nuyIV4D4ivnwT64E0TudmCRg52NfkumuEUilyoOrHb/Z2wEOF5I+9SI6P+veFKqWKZfGpAs6OqKe4nAjujARyw== } - engines: { node: '>=14.18.0' } + underscore@1.13.6: + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - string-length@4.0.2: - resolution: { integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== } - engines: { node: '>=10' } + undertaker-registry@1.0.1: + resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==} + engines: {node: '>= 0.10'} - string-length@5.0.1: - resolution: { integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== } - engines: { node: '>=12.20' } + undertaker@1.3.0: + resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} + engines: {node: '>= 0.10'} - string-natural-compare@3.0.1: - resolution: { integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== } + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - string-strip-html@13.4.8: - resolution: { integrity: sha512-vlcRAtx5DN6zXGUx3EYGFg0/JOQWM65mqLgDaBHviQPP+ovUFzqZ30iQ+674JHWr9wNgnzFGxx9TGipPZMnZXg== } - engines: { node: '>=14.18.0' } + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - string-trim-spaces-only@5.0.10: - resolution: { integrity: sha512-MhmjE5jNqb1Ylo+BARPRlsdChGLrnPpAUWrT1VOxo9WhWwKVUU6CbZTfjwKaQPYTGS/wsX/4Zek88FM2rEb5iA== } - engines: { node: '>=14.18.0' } + undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + engines: {node: '>=14.0'} - string-width@1.0.2: - resolution: { integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== } - engines: { node: '>=0.10.0' } + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} - string-width@4.2.3: - resolution: { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } - engines: { node: '>=8' } + unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - string-width@5.1.2: - resolution: { integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== } - engines: { node: '>=12' } + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} - string.prototype.matchall@4.0.10: - resolution: { integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== } + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} - string.prototype.trim@1.2.8: - resolution: { integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== } - engines: { node: '>= 0.4' } + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} - string.prototype.trimend@1.0.7: - resolution: { integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== } + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} - string.prototype.trimstart@1.0.7: - resolution: { integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== } + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} - string_decoder@0.10.31: - resolution: { integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== } + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - string_decoder@1.1.1: - resolution: { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - string_decoder@1.3.0: - resolution: { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== } + unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} - stringify-author@0.1.3: - resolution: { integrity: sha512-OxmcAnr4DESGl/ics9lAv30DdOBC2bdqswEAzTiOZSQRqVpWfnmlr3cpfxTmExf7phS5WxBJ1flD1e3ResNTBA== } - engines: { node: '>=0.10.0' } + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} - stringify-entities@4.0.4: - resolution: { integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== } + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - stringify-object@3.3.0: - resolution: { integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== } - engines: { node: '>=4' } + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - strip-ansi@3.0.1: - resolution: { integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== } - engines: { node: '>=0.10.0' } + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - strip-ansi@6.0.1: - resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } - engines: { node: '>=8' } + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - strip-ansi@7.1.0: - resolution: { integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== } - engines: { node: '>=12' } + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - strip-bom-buf@1.0.0: - resolution: { integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ== } - engines: { node: '>=4' } + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - strip-bom-buffer@0.1.1: - resolution: { integrity: sha512-dbIOX/cOLFgLH/2ofd7n78uPD3uPkXyt3P1IgaVoGiPYEdOnb7D1mawyhOTXyYWva1kCuRxJY5FkMsVKYlZRRg== } - engines: { node: '>=0.10.0' } + unique-stream@2.3.1: + resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} - strip-bom-stream@1.0.0: - resolution: { integrity: sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ== } - engines: { node: '>=0.10.0' } + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} - strip-bom-stream@2.0.0: - resolution: { integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w== } - engines: { node: '>=0.10.0' } + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} - strip-bom-string@0.1.2: - resolution: { integrity: sha512-3DgNqQFTfOwWgxn3cXsa6h/WRgFa7dVb6/7YqwfJlBpLSSQbiU1VhaBNRKmtLI59CHjc9awLp9yGJREu7AnaMQ== } - engines: { node: '>=0.10.0' } + unist-util-find-after@4.0.1: + resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} - strip-bom-string@1.0.0: - resolution: { integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== } - engines: { node: '>=0.10.0' } + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - strip-bom@2.0.0: - resolution: { integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== } - engines: { node: '>=0.10.0' } + unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - strip-bom@3.0.0: - resolution: { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } - engines: { node: '>=4' } + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - strip-bom@4.0.0: - resolution: { integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== } - engines: { node: '>=8' } + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - strip-color@0.1.0: - resolution: { integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA== } - engines: { node: '>=0.10.0' } + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - strip-comments@2.0.1: - resolution: { integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== } - engines: { node: '>=10' } - - strip-eof@1.0.0: - resolution: { integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== } - engines: { node: '>=0.10.0' } + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - strip-final-newline@2.0.0: - resolution: { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== } - engines: { node: '>=6' } + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - strip-final-newline@3.0.0: - resolution: { integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== } - engines: { node: '>=12' } - - strip-indent@3.0.0: - resolution: { integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== } - engines: { node: '>=8' } - - 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' } - - stripe@12.18.0: - resolution: { integrity: sha512-cYjgBM2SY/dTm8Lr6eMyyONaHTZHA/QjHxFUIW5WH8FevSRIGAVtXEmBkUXF1fsqe7QvvRgQSGSJZmjDacegGg== } - engines: { node: '>=12.*' } - - stripe@17.6.0: - resolution: { integrity: sha512-+HB6+SManp0gSRB0dlPmXO+io18krlAe0uimXhhIkL/RG/VIRigkfoM3QDJPkqbuSW0XsA6uzsivNCJU1ELEDA== } - engines: { node: '>=12.*' } - - strnum@1.0.5: - resolution: { integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== } - - stubs@3.0.0: - resolution: { integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== } - - style-inject@0.3.0: - resolution: { integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== } - - style-loader@3.3.4: - resolution: { integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^5.0.0 - - style-mod@4.1.2: - resolution: { integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw== } - - style-to-js@1.1.3: - resolution: { integrity: sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ== } - - style-to-object@0.3.0: - resolution: { integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== } - - style-to-object@0.4.1: - resolution: { integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw== } - - style-to-object@0.4.4: - resolution: { integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== } - - style-to-object@1.0.7: - resolution: { integrity: sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw== } - - style-value-types@4.1.4: - resolution: { integrity: sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg== } - - styled-components@5.3.11: - resolution: { integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== } - engines: { node: '>=10' } - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - react-is: '>= 16.8.0' - - styled-jsx@5.1.1: - resolution: { integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== } - engines: { node: '>= 12.0.0' } - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - stylehacks@5.1.1: - resolution: { integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - - stylehacks@6.1.1: - resolution: { integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== } - engines: { node: ^14 || ^16 || >=18.0 } - peerDependencies: - postcss: ^8.4.31 - - stylis@4.2.0: - resolution: { integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== } - - success-symbol@0.1.0: - resolution: { integrity: sha512-7S6uOTxPklNGxOSbDIg4KlVLBQw1UiGVyfCUYgYxrZUKRblUkmGj7r8xlfQoFudvqLv6Ap5gd76/IIFfI9JG2A== } - engines: { node: '>=0.10.0' } - - sucrase@3.35.0: - resolution: { integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== } - engines: { node: '>=16 || 14 >=14.17' } - hasBin: true - - supports-color@2.0.0: - resolution: { integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== } - engines: { node: '>=0.8.0' } - - supports-color@5.5.0: - resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } - engines: { node: '>=4' } - - supports-color@6.1.0: - resolution: { integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== } - engines: { node: '>=6' } - - 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-color@9.4.0: - resolution: { integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== } - engines: { node: '>=12' } - - supports-hyperlinks@2.3.0: - resolution: { integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== } - engines: { node: '>=8' } - - supports-preserve-symlinks-flag@1.0.0: - resolution: { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } - engines: { node: '>= 0.4' } - - svelte@4.2.18: - resolution: { integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA== } - engines: { node: '>=16' } - - sver-compat@1.5.0: - resolution: { integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg== } - - svg-parser@2.0.4: - resolution: { integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== } - - svgo@1.3.2: - resolution: { integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== } - engines: { node: '>=4.0.0' } - deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. - hasBin: true - - svgo@2.8.0: - resolution: { integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== } - engines: { node: '>=10.13.0' } - hasBin: true - - svgo@3.3.2: - resolution: { integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== } - engines: { node: '>=14.0.0' } - hasBin: true - - swagger2openapi@7.0.8: - resolution: { integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== } - hasBin: true - - swr@2.2.0: - resolution: { integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ== } - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 - - swrev@4.0.0: - resolution: { integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA== } - - swrv@1.0.4: - resolution: { integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g== } - peerDependencies: - vue: '>=3.2.26 < 4' - - sylvester@0.0.12: - resolution: { integrity: sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw== } - engines: { node: '>=0.2.6' } - - symbol-tree@3.2.4: - resolution: { integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== } - - synckit@0.9.1: - resolution: { integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== } - engines: { node: ^14.18.0 || >=16.0.0 } - - table@6.8.2: - resolution: { integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== } - engines: { node: '>=10.0.0' } - - tableize-object@0.1.0: - resolution: { integrity: sha512-seDB76zNqvGXG0W8gxUteRuq1fk1dvSxcRVbeYQ1a1QqMkbtqrGwvqTubfN6VCizzlb7NxOPM/j3z9JeBrbxYg== } - engines: { node: '>=0.10.0' } - - tailwindcss@3.3.1: - resolution: { integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g== } - engines: { node: '>=12.13.0' } - hasBin: true - peerDependencies: - postcss: ^8.0.9 - - tapable@1.1.3: - resolution: { integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== } - engines: { node: '>=6' } - - tapable@2.2.1: - resolution: { integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== } - engines: { node: '>=6' } - - tar-fs@2.1.1: - resolution: { integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== } - - tar-fs@3.0.4: - resolution: { integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== } - - tar-fs@3.0.5: - resolution: { integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg== } - - tar-stream@2.2.0: - resolution: { integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== } - engines: { node: '>=6' } + unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - tar-stream@3.1.7: - resolution: { integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== } + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - tar@6.2.0: - resolution: { integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== } - engines: { node: '>=10' } + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - teeny-request@9.0.0: - resolution: { integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== } - engines: { node: '>=14' } + unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - temp-dir@2.0.0: - resolution: { integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== } - engines: { node: '>=8' } + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - template-error@0.1.2: - resolution: { integrity: sha512-soS5m+iT4k/okmMyydvMjPlmyz3CowvMcOxfgoAqccmkyF81W3D+zMi4lhqbSIhTgLhKE/Bh8wUlXzr6F+ERCw== } - engines: { node: '>=0.10.0' } + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - templates@0.24.3: - resolution: { integrity: sha512-R5CUlz3atppbifPePB5Z2KGXCsB0Y87lQ/+ziizq/d3kyydDlNk40yX98RWLprNnKjTiwqeiuGjLJlPPJPYshg== } - engines: { node: '>=4.0.0' } + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - tempy@0.6.0: - resolution: { integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== } - engines: { node: '>=10' } + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - terminal-link@2.1.1: - resolution: { integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== } - engines: { node: '>=8' } + universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - terser-webpack-plugin@5.3.10: - resolution: { integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== } - 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 + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - terser@5.29.1: - resolution: { integrity: sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ== } - engines: { node: '>=10' } - hasBin: true + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} - test-exclude@6.0.0: - resolution: { integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== } - engines: { node: '>=8' } + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - text-hex@1.0.0: - resolution: { integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== } + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - text-table@0.2.0: - resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + unplugin@1.9.0: + resolution: {integrity: sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==} + engines: {node: '>=14.0.0'} - textextensions@5.16.0: - resolution: { integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw== } - engines: { node: '>=0.8' } + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} - thenify-all@1.6.0: - resolution: { integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== } - engines: { node: '>=0.8' } + unset-value@2.0.1: + resolution: {integrity: sha512-2hvrBfjUE00PkqN+q0XP6yRAOGrR06uSiUoIQGZkc7GxvQ9H7v8quUPNtZjMg4uux69i8HWpIjLPUKwCuRGyNg==} + engines: {node: '>=10'} - thenify@3.3.1: - resolution: { integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== } + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} - three@0.168.0: - resolution: { integrity: sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw== } + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} - throat@6.0.2: - resolution: { integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== } + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - throttleit@1.0.1: - resolution: { integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== } + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - through2-filter@2.0.0: - resolution: { integrity: sha512-miwWajb1B80NvIVKXFPN/o7+vJc4jYUvnZCwvhicRAoTxdD9wbcjri70j+BenCrN/JXEPKDjhpw4iY7yiNsCGg== } + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - through2-filter@3.0.0: - resolution: { integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== } + update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} - through2@0.6.5: - resolution: { integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg== } + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - through2@2.0.5: - resolution: { integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== } + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated - through2@4.0.2: - resolution: { integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== } + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - through@2.3.8: - resolution: { integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== } + url-loader@4.1.1: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true - thunky@1.1.0: - resolution: { integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== } + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - tiktoken@1.0.15: - resolution: { integrity: sha512-sCsrq/vMWUSEW29CJLNmPvWxlVp7yh2tlkAjpJltIKqp5CKf98ZNpdeHRmAlPVFlGEbswDc6SmI8vz64W/qErw== } + url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} - time-diff@0.3.1: - resolution: { integrity: sha512-8/LJTO3zKbhj6sQFeN3aoAA04GGjUgwKEquQVnKXkziHjEHadpIVIQ1rAjQgSVMnBRubJ/q5gMjK9WqXTzSykA== } - engines: { node: '>=0.10.0' } + url@0.10.3: + resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} - time-stamp@1.1.0: - resolution: { integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== } - engines: { node: '>=0.10.0' } + use-composed-ref@1.3.0: + resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 - tiny-emitter@2.1.0: - resolution: { integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== } + use-isomorphic-layout-effect@1.1.2: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - tiny-invariant@1.3.3: - resolution: { integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== } + use-latest@1.2.1: + resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - tiny-warning@1.0.3: - resolution: { integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== } + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 - tinycolor2@1.6.0: - resolution: { integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== } + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} - titleize@1.0.1: - resolution: { integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew== } - engines: { node: '>=0.10.0' } + utf-8-validate@6.0.4: + resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + engines: {node: '>=6.14.2'} - tmp@0.0.33: - resolution: { integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== } - engines: { node: '>=0.6.0' } + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} - tmp@0.2.3: - resolution: { integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== } - engines: { node: '>=14.14' } + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - tmpl@1.0.5: - resolution: { integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== } + util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} - to-absolute-glob@0.1.1: - resolution: { integrity: sha512-Vvl5x6zNf9iVG1QTWeknmWrKzZxaeKfIDRibrZCR3b2V/2NlFJuD2HV7P7AVjaKLZNqLPHqyr0jGrW0fTcxCPQ== } - engines: { node: '>=0.10.0' } + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - to-absolute-glob@2.0.2: - resolution: { integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA== } - engines: { node: '>=0.10.0' } + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - to-arraybuffer@1.0.1: - resolution: { integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== } + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} - to-choices@0.2.0: - resolution: { integrity: sha512-oPVwP4jpJZM4R3Yvfcod8/OjddMoi33amdFzwZktcHAjddmIEAzQ9DQsdPKUr/Q4hLxNMWPys4Pn1qJdLiR4Kg== } - engines: { node: '>=0.10.0' } + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} - to-fast-properties@1.0.3: - resolution: { integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== } - engines: { node: '>=0.10.0' } + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true - to-fast-properties@2.0.0: - resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } - engines: { node: '>=4' } + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true - to-file@0.2.0: - resolution: { integrity: sha512-xLyYVRKJQTwy2tKMOLD0M0yL+YSZVgMAzkaY9hh7GhzgBBHSIWARDkgPx8krPPm0mW5CgoIFsQEdKRFOyIRdqg== } - engines: { node: '>=0.10.0' } + uuid@8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true - to-object-path@0.2.0: - resolution: { integrity: sha512-6oMu4CTicplxUMOXBoS1W9YNjIclUzmWpWf02v+JnYMEGVX24rTCsYMHay85WA7Wq+9wZa2iJ+HAAX0yGOcxCQ== } - engines: { node: '>=0.10.0' } + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true - to-object-path@0.3.0: - resolution: { integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== } - engines: { node: '>=0.10.0' } + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true - to-regex-range@2.1.1: - resolution: { integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== } - engines: { node: '>=0.10.0' } + uuidv7@0.6.3: + resolution: {integrity: sha512-zV3eW2NlXTsun/aJ7AixxZjH/byQcH/r3J99MI0dDEkU2cJIBJxhEWUHDTpOaLPRNhebPZoeHuykYREkI9HafA==} + hasBin: true - to-regex-range@5.0.1: - resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } - engines: { node: '>=8.0' } + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true - to-regex@3.0.2: - resolution: { integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== } - engines: { node: '>=0.10.0' } + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - to-through@2.0.0: - resolution: { integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q== } - engines: { node: '>= 0.10' } + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - toggle-selection@1.0.6: - resolution: { integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== } + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} - toidentifier@1.0.1: - resolution: { integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== } - engines: { node: '>=0.6' } + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} - toposort@2.0.2: - resolution: { integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== } + v8flags@3.2.0: + resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} + engines: {node: '>= 0.10'} - totalist@1.1.0: - resolution: { integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== } - engines: { node: '>=6' } + vali-date@1.0.0: + resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==} + engines: {node: '>=0.10.0'} - totalist@3.0.1: - resolution: { integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== } - engines: { node: '>=6' } + validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} - touch@3.1.0: - resolution: { integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== } - hasBin: true - - tough-cookie@2.5.0: - resolution: { integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== } - engines: { node: '>=0.8' } - - tough-cookie@4.1.3: - resolution: { integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== } - engines: { node: '>=6' } - - tr46@0.0.3: - resolution: { integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== } - - tr46@1.0.1: - resolution: { integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== } - - tr46@2.1.0: - resolution: { integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== } - engines: { node: '>=8' } - - tr46@3.0.0: - resolution: { integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== } - engines: { node: '>=12' } - - tr46@4.1.1: - resolution: { integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== } - engines: { node: '>=14' } - - tree-kill@1.2.2: - resolution: { integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== } - hasBin: true - - treeverse@1.0.4: - resolution: { integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== } - - trim-leading-lines@0.1.1: - resolution: { integrity: sha512-ViFS8blDWJN4Jg10fyZ+sIAfkSSAn5NiTVywc3kKtMWK3DZjaV7FV86oX3i9KY6/gqYkdka/UNeM2/NMGttiyA== } - engines: { node: '>=0.10.0' } - - trim-lines@3.0.1: - resolution: { integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== } - - trim-right@1.0.1: - resolution: { integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== } - engines: { node: '>=0.10.0' } - - triple-beam@1.4.1: - resolution: { integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== } - engines: { node: '>= 14.0.0' } - - troika-three-text@0.49.1: - resolution: { integrity: sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig== } - peerDependencies: - three: '>=0.125.0' - - troika-three-utils@0.49.0: - resolution: { integrity: sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA== } - peerDependencies: - three: '>=0.125.0' - - troika-worker-utils@0.49.0: - resolution: { integrity: sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg== } - - trough@1.0.5: - resolution: { integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== } - - trough@2.2.0: - resolution: { integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== } - - tryer@1.0.1: - resolution: { integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== } - - ts-api-utils@1.3.0: - resolution: { integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== } - engines: { node: '>=16' } - peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: { integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== } - - ts-jest@29.2.5: - resolution: { integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== } - 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.1: - resolution: { integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== } - 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' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsc-watch@6.0.4: - resolution: { integrity: sha512-cHvbvhjO86w2aGlaHgSCeQRl+Aqw6X6XN4sQMPZKF88GoP30O+oTuh5lRIJr5pgFWrRpF1AgXnJJ2DoFEIPHyg== } - engines: { node: '>=12.12.0' } - hasBin: true - peerDependencies: - typescript: '*' - - tsconfck@3.0.3: - resolution: { integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA== } - engines: { node: ^18 || >=20 } - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfig-paths@3.15.0: - resolution: { integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== } - - tslib@1.14.1: - resolution: { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== } - - tslib@2.5.0: - resolution: { integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== } - - tslib@2.6.2: - resolution: { integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== } - - tsup@6.7.0: - resolution: { integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ== } - engines: { node: '>=14.18' } - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - tsutils@3.21.0: - resolution: { integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== } - engines: { node: '>= 6' } - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tsx@3.12.6: - resolution: { integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ== } - hasBin: true - - tuf-js@1.1.7: - resolution: { integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - tunnel-agent@0.6.0: - resolution: { integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== } - - turbo-darwin-64@1.10.16: - resolution: { integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg== } - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@1.10.16: - resolution: { integrity: sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw== } - cpu: [arm64] - os: [darwin] - - turbo-linux-64@1.10.16: - resolution: { integrity: sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg== } - cpu: [x64] - os: [linux] - - turbo-linux-arm64@1.10.16: - resolution: { integrity: sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw== } - cpu: [arm64] - os: [linux] - - turbo-windows-64@1.10.16: - resolution: { integrity: sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw== } - cpu: [x64] - os: [win32] - - turbo-windows-arm64@1.10.16: - resolution: { integrity: sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ== } - cpu: [arm64] - os: [win32] - - turbo@1.10.16: - resolution: { integrity: sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg== } - hasBin: true - - tweetnacl@0.14.5: - resolution: { integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== } - - type-check@0.3.2: - resolution: { integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== } - engines: { node: '>= 0.8.0' } - - type-check@0.4.0: - 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.16.0: - resolution: { integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== } - engines: { node: '>=10' } - - 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' } - - type-fest@0.6.0: - resolution: { integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== } - engines: { node: '>=8' } - - type-fest@0.7.1: - resolution: { integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== } - engines: { node: '>=8' } - - type-fest@0.8.1: - resolution: { integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== } - engines: { node: '>=8' } - - type-fest@1.4.0: - resolution: { integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== } - engines: { node: '>=10' } - - type-fest@2.19.0: - resolution: { integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== } - engines: { node: '>=12.20' } - - type-fest@3.13.1: - resolution: { integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== } - engines: { node: '>=14.16' } - - type-fest@4.12.0: - resolution: { integrity: sha512-5Y2/pp2wtJk8o08G0CMkuFPCO354FGwk/vbidxrdhRGZfd0tFnb4Qb8anp9XxXriwBgVPjdWbKpGl4J9lJY2jQ== } - engines: { node: '>=16' } - - type-is@1.6.18: - resolution: { integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== } - engines: { node: '>= 0.6' } - - type@2.7.2: - resolution: { integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== } - - typed-array-buffer@1.0.2: - resolution: { integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== } - engines: { node: '>= 0.4' } - - typed-array-byte-length@1.0.1: - resolution: { integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== } - engines: { node: '>= 0.4' } - - typed-array-byte-offset@1.0.2: - resolution: { integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== } - engines: { node: '>= 0.4' } - - typed-array-length@1.0.5: - resolution: { integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== } - engines: { node: '>= 0.4' } - - typed-emitter@2.1.0: - resolution: { integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA== } - - typedarray-to-buffer@3.1.5: - resolution: { integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== } - - typedarray@0.0.6: - resolution: { integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== } - - typeorm@0.3.20: - resolution: { integrity: sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q== } - engines: { node: '>=16.13.0' } - hasBin: true - peerDependencies: - '@google-cloud/spanner': ^5.18.0 - '@sap/hana-client': ^2.12.25 - better-sqlite3: ^7.1.2 || ^8.0.0 || ^9.0.0 - hdb-pool: ^0.1.6 - ioredis: ^5.0.4 - mongodb: ^5.8.0 - mssql: ^9.1.1 || ^10.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 - 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@4.9.5: - resolution: { integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== } - engines: { node: '>=4.2.0' } - hasBin: true - - typescript@5.0.3: - resolution: { integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA== } - engines: { node: '>=12.20' } - hasBin: true - - typescript@5.5.2: - resolution: { integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== } - engines: { node: '>=14.17' } - hasBin: true - - ua-parser-js@0.7.37: - resolution: { integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== } - - ua-parser-js@1.0.37: - resolution: { integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== } - - ufo@1.5.4: - resolution: { integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== } - - uglify-js@3.19.2: - resolution: { integrity: sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ== } - engines: { node: '>=0.8.0' } - hasBin: true - - uid-safe@2.1.5: - resolution: { integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== } - engines: { node: '>= 0.8' } - - uid2@0.0.4: - resolution: { integrity: sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== } - - unbox-primitive@1.0.2: - resolution: { integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== } - - unbzip2-stream@1.4.3: - resolution: { integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== } - - unc-path-regex@0.1.2: - resolution: { integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== } - engines: { node: '>=0.10.0' } - - uncrypto@0.1.3: - resolution: { integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== } - - unctx@2.3.1: - resolution: { integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A== } - - undefsafe@2.0.5: - resolution: { integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== } - - underscore@1.12.1: - resolution: { integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== } - - underscore@1.13.6: - resolution: { integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== } - - undertaker-registry@1.0.1: - resolution: { integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw== } - engines: { node: '>= 0.10' } - - undertaker@1.3.0: - resolution: { integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== } - engines: { node: '>= 0.10' } - - undici-types@5.26.5: - resolution: { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } - - undici@5.28.3: - resolution: { integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== } - engines: { node: '>=14.0' } + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - undici@5.28.4: - resolution: { integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== } - engines: { node: '>=14.0' } + validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - unenv@1.10.0: - resolution: { integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ== } + validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: { integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== } - engines: { node: '>=4' } + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} - unicode-emoji-modifier-base@1.0.0: - resolution: { integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== } - engines: { node: '>=4' } + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - unicode-match-property-ecmascript@2.0.0: - resolution: { integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== } - engines: { node: '>=4' } + value-or-function@3.0.0: + resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} + engines: {node: '>= 0.10'} - unicode-match-property-value-ecmascript@2.1.0: - resolution: { integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== } - engines: { node: '>=4' } + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: { integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== } - engines: { node: '>=4' } + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} - unified@10.1.2: - resolution: { integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== } + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - unified@11.0.5: - resolution: { integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== } + vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - unified@9.2.2: - resolution: { integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== } + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - union-value@0.2.4: - resolution: { integrity: sha512-Tv3cqdyY8yjW9ZcJ9WP7JdHS34natzylD0oNRLlYbWOfUdC4EQ0sf3fubnqrK2IErtlmobFmuS1pWvv88VghpA== } - engines: { node: '>=0.10.0' } + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - union-value@1.0.1: - resolution: { integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== } - engines: { node: '>=0.10.0' } + vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - unique-filename@1.1.1: - resolution: { integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== } + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - unique-filename@2.0.1: - resolution: { integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - unique-filename@3.0.0: - resolution: { integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + vinyl-file@3.0.0: + resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} + engines: {node: '>=4'} - unique-slug@2.0.2: - resolution: { integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== } + vinyl-fs@3.0.3: + resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} + engines: {node: '>= 0.10'} - unique-slug@3.0.0: - resolution: { integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + vinyl-sourcemap@1.1.0: + resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} + engines: {node: '>= 0.10'} - unique-slug@4.0.0: - resolution: { integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} - unique-stream@2.3.1: - resolution: { integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== } + vite-plugin-pwa@0.17.5: + resolution: {integrity: sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 - unique-string@2.0.0: - resolution: { integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== } - engines: { node: '>=8' } + vite-plugin-react-js-support@1.0.7: + resolution: {integrity: sha512-yo9513wqA1Ba9MbgqdBXJr4RB3A4mFAhUe867A2te2TEcN30nb0iDpmQvFH+NiiMZFp85fJGD6+ZOKZbOLZD4A==} - unique-string@3.0.0: - resolution: { integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== } - engines: { node: '>=12' } + vite-tsconfig-paths@4.3.1: + resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true - unist-util-find-after@4.0.1: - resolution: { integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw== } + vite@4.5.2: + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - unist-util-generated@2.0.1: - resolution: { integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== } + vite@5.1.6: + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - unist-util-is@4.1.0: - resolution: { integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== } + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - unist-util-is@5.2.1: - resolution: { integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== } + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. - unist-util-is@6.0.0: - resolution: { integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== } + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - unist-util-position-from-estree@2.0.0: - resolution: { integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== } + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} - unist-util-position@4.0.4: - resolution: { integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== } + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} - unist-util-position@5.0.0: - resolution: { integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== } + wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true - unist-util-stringify-position@2.0.3: - resolution: { integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== } + walk-up-path@1.0.0: + resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} - unist-util-stringify-position@3.0.3: - resolution: { integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== } + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - unist-util-stringify-position@4.0.0: - resolution: { integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== } + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} - unist-util-visit-parents@3.1.1: - resolution: { integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== } + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} - unist-util-visit-parents@5.1.3: - resolution: { integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== } + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - unist-util-visit-parents@6.0.1: - resolution: { integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== } + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - unist-util-visit@4.1.2: - resolution: { integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== } + weaviate-ts-client@1.6.0: + resolution: {integrity: sha512-1We0l8/uw6r8xnPsY8nSne1+/Ntd6o2JFq5LODqb63ac9v4QWDpT8dyPSRriUhif+IZ2Ttusw+w38361z72eaw==} + engines: {node: '>=16.0.0'} - unist-util-visit@5.0.0: - resolution: { integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== } + weaviate-ts-client@2.1.1: + resolution: {integrity: sha512-d8yc2KnIEIV1beHAU8mhrElT3BoROoXGDsLlqFX8QGx3G+gOiPTRMc7SLy4F17+LvaUaTD0XkHvWX++4iehnsg==} + engines: {node: '>=16.0.0'} - universal-user-agent@6.0.1: - resolution: { integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== } + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - universalify@0.1.2: - resolution: { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== } - engines: { node: '>= 4.0.0' } + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} - universalify@0.2.0: - resolution: { integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== } - engines: { node: '>= 4.0.0' } + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} - universalify@2.0.1: - resolution: { integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== } - engines: { node: '>= 10.0.0' } + web-streams-polyfill@4.1.0: + resolution: {integrity: sha512-A7Jxrg7+eV+eZR/CIdESDnRGFb6/bcKukGvJBB5snI6cw3is1c2qamkYstC1bY1p08TyMRlN9eTMkxmnKJBPBw==} + engines: {node: '>= 8'} - unpipe@1.0.0: - resolution: { integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== } - engines: { node: '>= 0.8' } + webgl-sdf-generator@1.1.1: + resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} - unplugin@1.9.0: - resolution: { integrity: sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw== } - engines: { node: '>=14.0.0' } + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - unquote@1.1.1: - resolution: { integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== } + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - unset-value@0.1.2: - resolution: { integrity: sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg== } - engines: { node: '>=0.10.0' } + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} - unset-value@1.0.0: - resolution: { integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== } - engines: { node: '>=0.10.0' } + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} - untildify@4.0.0: - resolution: { integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== } - engines: { node: '>=8' } + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} - upath@1.2.0: - resolution: { integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== } - engines: { node: '>=4' } + webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true - update-browserslist-db@1.0.13: - resolution: { integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + webpack-bundle-analyzer@4.7.0: + resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} + engines: {node: '>= 10.13.0'} + hasBin: true - update-browserslist-db@1.1.0: - resolution: { integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + webpack-cli@5.1.4: + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true - update-notifier@6.0.2: - resolution: { integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== } - engines: { node: '>=14.16' } + webpack-dev-middleware@7.4.2: + resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true - update@0.7.4: - resolution: { integrity: sha512-B7HArWh4T6TSmMffmxlbD9gZM0QdboQ8N/p5aHcyhGCuuVRHSk37pvuQlAvi1XBrQMrEX5WJUQyQR8+jy/x4iQ== } - engines: { node: '>=5.0' } - hasBin: true + webpack-dev-server@4.15.1: + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true - upper-case@1.1.3: - resolution: { integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== } + webpack-manifest-plugin@4.1.1: + resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^4.44.2 || ^5.47.0 + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + + webpack@5.90.3: + resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - uri-js@4.4.1: - resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + webpackbar@5.0.2: + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 - urix@0.1.0: - resolution: { integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== } - deprecated: Please see https://github.com/lydell/urix#deprecated + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} - url-join@4.0.1: - resolution: { integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== } + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} - url-loader@4.1.1: - resolution: { integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== } - engines: { node: '>= 10.13.0' } - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - - url-parse@1.5.10: - resolution: { integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== } - - url-template@2.0.8: - resolution: { integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== } - - url@0.10.3: - resolution: { integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== } - - use-composed-ref@1.3.0: - resolution: { integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - use-isomorphic-layout-effect@1.1.2: - resolution: { integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== } - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.2.1: - resolution: { integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== } - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.2.0: - resolution: { integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - use@1.1.2: - resolution: { integrity: sha512-25Uw2xiVk0m2ySqmnu2GjOIROlImdXMRcpI6Cq7sZeG/zFZgFkSeo2+QwKNWJncfZOVS55eACoinvJ3EtprOBw== } - engines: { node: '>=0.10.0' } - - use@2.0.2: - resolution: { integrity: sha512-RrhWfFWkNCz3djfSFZh7uSwu491QRhwNaHyAgB2sGl4kmmznb5ZUuuHpiWLVEsXOdpDakYK/x5+9o4lgg41UMw== } - engines: { node: '>=0.10.0' } - - use@3.1.1: - resolution: { integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== } - engines: { node: '>=0.10.0' } - - utf-8-validate@6.0.4: - resolution: { integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ== } - engines: { node: '>=6.14.2' } - - util-deprecate@1.0.2: - resolution: { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } - - util.promisify@1.0.1: - resolution: { integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== } - - util@0.12.5: - resolution: { integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== } + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - utila@0.4.0: - resolution: { integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== } + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} - utility-types@3.11.0: - resolution: { integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== } - engines: { node: '>= 4' } + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - utils-merge@1.0.1: - resolution: { integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== } - engines: { node: '>= 0.4.0' } + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - uuid@10.0.0: - resolution: { integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== } - hasBin: true + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} - uuid@3.4.0: - resolution: { integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== } - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} - uuid@8.0.0: - resolution: { integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== } - hasBin: true + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} - uuid@8.3.2: - resolution: { integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== } - hasBin: true + whatwg-url@13.0.0: + resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} + engines: {node: '>=16'} - uuid@9.0.1: - resolution: { integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== } - hasBin: true + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - uuidv7@0.6.3: - resolution: { integrity: sha512-zV3eW2NlXTsun/aJ7AixxZjH/byQcH/r3J99MI0dDEkU2cJIBJxhEWUHDTpOaLPRNhebPZoeHuykYREkI9HafA== } - hasBin: true + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - uvu@0.5.6: - resolution: { integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== } - engines: { node: '>=8' } - hasBin: true + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} - v8-compile-cache-lib@3.0.1: - resolution: { integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== } + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - v8-compile-cache@2.4.0: - resolution: { integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== } + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} - v8-to-istanbul@8.1.1: - resolution: { integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== } - engines: { node: '>=10.12.0' } + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} - v8-to-istanbul@9.3.0: - resolution: { integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== } - engines: { node: '>=10.12.0' } + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} - v8flags@3.2.0: - resolution: { integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== } - engines: { node: '>= 0.10' } + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - vali-date@1.0.0: - resolution: { integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg== } - engines: { node: '>=0.10.0' } + which-module@1.0.0: + resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - validate-html-nesting@1.2.2: - resolution: { integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg== } + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} - validate-npm-package-license@3.0.4: - resolution: { integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== } + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} - validate-npm-package-name@3.0.0: - resolution: { integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== } + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} - validate-npm-package-name@5.0.0: - resolution: { integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - value-equal@1.0.1: - resolution: { integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== } - - value-or-function@3.0.0: - resolution: { integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg== } - engines: { node: '>= 0.10' } - - vary@1.1.2: - resolution: { integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== } - engines: { node: '>= 0.8' } - - verror@1.10.0: - resolution: { integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== } - engines: { '0': node >=0.6.0 } - - vfile-location@5.0.2: - resolution: { integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== } - - vfile-message@2.0.4: - resolution: { integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== } - - vfile-message@3.1.4: - resolution: { integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== } - - vfile-message@4.0.2: - resolution: { integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== } - - vfile@4.2.1: - resolution: { integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== } - - vfile@5.3.7: - resolution: { integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== } - - vfile@6.0.1: - resolution: { integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== } - - vinyl-file@3.0.0: - resolution: { integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg== } - engines: { node: '>=4' } - - vinyl-fs@2.4.4: - resolution: { integrity: sha512-lxMlQW/Wxk/pwhooY3Ut0Q11OH5ZvZfV0Gg1c306fBNWznQ6ZeQaCdE7XX0O/PpGSqgAsHMBxwFgcGxiYW3hZg== } - engines: { node: '>=0.10' } - - vinyl-fs@3.0.3: - resolution: { integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== } - engines: { node: '>= 0.10' } - - vinyl-item@0.1.0: - resolution: { integrity: sha512-9L2HEcbtuTdKCLWDucRPObPoAxnUUCdAXg0QDf3aDPM3oFpb6C+yct/R31PA9EhLGeilNl8TF/inc3OwFSSEMg== } - engines: { node: '>=0.10.0' } - - vinyl-sourcemap@1.1.0: - resolution: { integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA== } - engines: { node: '>= 0.10' } - - vinyl-view@0.1.2: - resolution: { integrity: sha512-qIc2qnXgOXZrT1Q1ViR1VMTjuylAi3Y/LSYSYfwJ6ZG7Ar5miUfioSIBu30bsHTo5dSz4ReDNSUw3lelCtc5Jw== } - engines: { node: '>=0.10.0' } - - vinyl@1.2.0: - resolution: { integrity: sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ== } - engines: { node: '>= 0.9' } - - vinyl@2.2.1: - resolution: { integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== } - engines: { node: '>= 0.10' } - - vite-plugin-pwa@0.17.5: - resolution: { integrity: sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ== } - engines: { node: '>=16.0.0' } - peerDependencies: - vite: ^3.1.0 || ^4.0.0 || ^5.0.0 - workbox-build: ^7.0.0 - workbox-window: ^7.0.0 - - vite-plugin-react-js-support@1.0.7: - resolution: { integrity: sha512-yo9513wqA1Ba9MbgqdBXJr4RB3A4mFAhUe867A2te2TEcN30nb0iDpmQvFH+NiiMZFp85fJGD6+ZOKZbOLZD4A== } - - vite-tsconfig-paths@4.3.1: - resolution: { integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw== } - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite@4.5.2: - resolution: { integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w== } - engines: { node: ^14.18.0 || >=16.0.0 } - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.1.6: - resolution: { integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA== } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vm2@3.9.19: - resolution: { integrity: sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== } - engines: { node: '>=6.0' } - deprecated: The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm. - hasBin: true - - vue@3.4.31: - resolution: { integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ== } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - w3c-hr-time@1.0.2: - resolution: { integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== } - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - - w3c-keyname@2.2.8: - resolution: { integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== } - - w3c-xmlserializer@2.0.0: - resolution: { integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== } - engines: { node: '>=10' } - - w3c-xmlserializer@4.0.0: - resolution: { integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== } - engines: { node: '>=14' } - - wait-on@7.2.0: - resolution: { integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== } - engines: { node: '>=12.0.0' } - hasBin: true - - walk-up-path@1.0.0: - resolution: { integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== } - - walker@1.0.8: - resolution: { integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== } - - warning-symbol@0.1.0: - resolution: { integrity: sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw== } - engines: { node: '>=0.10.0' } - - warning@4.0.3: - resolution: { integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== } - - watchpack@2.4.0: - resolution: { integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== } - engines: { node: '>=10.13.0' } - - wbuf@1.7.3: - resolution: { integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== } - - wcwidth@1.0.1: - resolution: { integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== } - - weaviate-ts-client@1.6.0: - resolution: { integrity: sha512-1We0l8/uw6r8xnPsY8nSne1+/Ntd6o2JFq5LODqb63ac9v4QWDpT8dyPSRriUhif+IZ2Ttusw+w38361z72eaw== } - engines: { node: '>=16.0.0' } - - weaviate-ts-client@2.1.1: - resolution: { integrity: sha512-d8yc2KnIEIV1beHAU8mhrElT3BoROoXGDsLlqFX8QGx3G+gOiPTRMc7SLy4F17+LvaUaTD0XkHvWX++4iehnsg== } - engines: { node: '>=16.0.0' } - - web-namespaces@2.0.1: - resolution: { integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== } - - web-streams-polyfill@3.3.3: - resolution: { integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== } - engines: { node: '>= 8' } - - web-streams-polyfill@4.0.0-beta.3: - resolution: { integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== } - engines: { node: '>= 14' } - - webgl-sdf-generator@1.1.1: - resolution: { integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA== } - - webidl-conversions@3.0.1: - resolution: { integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== } - - webidl-conversions@4.0.2: - resolution: { integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== } - - webidl-conversions@5.0.0: - resolution: { integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== } - engines: { node: '>=8' } - - webidl-conversions@6.1.0: - resolution: { integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== } - engines: { node: '>=10.4' } - - webidl-conversions@7.0.0: - resolution: { integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== } - engines: { node: '>=12' } - - webpack-bundle-analyzer@4.10.2: - resolution: { integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== } - engines: { node: '>= 10.13.0' } - hasBin: true - - webpack-bundle-analyzer@4.7.0: - resolution: { integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== } - engines: { node: '>= 10.13.0' } - hasBin: true - - webpack-cli@5.1.4: - resolution: { integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== } - engines: { node: '>=14.15.0' } - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - - webpack-dev-middleware@5.3.3: - resolution: { integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - webpack-dev-server@4.15.1: - resolution: { integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== } - engines: { node: '>= 12.13.0' } - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-manifest-plugin@4.1.1: - resolution: { integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== } - engines: { node: '>=12.22.0' } - peerDependencies: - webpack: ^4.44.2 || ^5.47.0 - - webpack-merge@5.10.0: - resolution: { integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== } - engines: { node: '>=10.0.0' } - - webpack-node-externals@3.0.0: - resolution: { integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== } - engines: { node: '>=6' } - - webpack-sources@1.4.3: - resolution: { integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== } - - webpack-sources@2.3.1: - resolution: { integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== } - engines: { node: '>=10.13.0' } - - webpack-sources@3.2.3: - resolution: { integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== } - engines: { node: '>=10.13.0' } - - webpack-virtual-modules@0.6.1: - resolution: { integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== } - - webpack@5.90.3: - resolution: { integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== } - engines: { node: '>=10.13.0' } - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - webpackbar@5.0.2: - resolution: { integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== } - engines: { node: '>=12' } - peerDependencies: - webpack: 3 || 4 || 5 - - websocket-driver@0.7.4: - resolution: { integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== } - engines: { node: '>=0.8.0' } - - websocket-extensions@0.1.4: - resolution: { integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== } - engines: { node: '>=0.8.0' } - - whatwg-encoding@1.0.5: - resolution: { integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== } - - whatwg-encoding@2.0.0: - resolution: { integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== } - engines: { node: '>=12' } - - whatwg-fetch@3.6.20: - resolution: { integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== } - - whatwg-mimetype@2.3.0: - resolution: { integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== } - - whatwg-mimetype@3.0.0: - resolution: { integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== } - engines: { node: '>=12' } - - whatwg-url@11.0.0: - resolution: { integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== } - engines: { node: '>=12' } - - whatwg-url@12.0.1: - resolution: { integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== } - engines: { node: '>=14' } - - whatwg-url@13.0.0: - resolution: { integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== } - engines: { node: '>=16' } - - whatwg-url@5.0.0: - resolution: { integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== } - - whatwg-url@7.1.0: - resolution: { integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== } + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true - whatwg-url@8.7.0: - resolution: { integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== } - engines: { node: '>=10' } + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - which-boxed-primitive@1.0.2: - resolution: { integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== } + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true - which-builtin-type@1.1.3: - resolution: { integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== } - engines: { node: '>= 0.4' } + wicked-good-xpath@1.3.0: + resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==} - which-collection@1.0.2: - resolution: { integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== } - engines: { node: '>= 0.4' } + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - which-module@1.0.0: - resolution: { integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== } + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} - which-pm@2.0.0: - resolution: { integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== } - engines: { node: '>=8.15' } + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} - which-typed-array@1.1.15: - resolution: { integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== } - engines: { node: '>= 0.4' } + wikipedia@2.1.2: + resolution: {integrity: sha512-RAYaMpXC9/E873RaSEtlEa8dXK4e0p5k98GKOd210MtkE5emm6fcnwD+N6ZA4cuffjDWagvhaQKtp/mGp2BOVQ==} + engines: {node: '>=10'} - which@1.3.1: - resolution: { integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== } - hasBin: true + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - which@2.0.2: - resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } - engines: { node: '>= 8' } - hasBin: true + wink-nlp@2.3.0: + resolution: {integrity: sha512-NcMmlsJavRZgaV4dAjsOQPuXG4v3yLRRssEibfx41lhmwTTOCaQGW7czNC73bDKCq7q4vqGTjX3/MFhK3I76TA==} - which@3.0.1: - resolution: { integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true + winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} + engines: {node: '>= 12.0.0'} - wicked-good-xpath@1.3.0: - resolution: { integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw== } + winston@3.12.0: + resolution: {integrity: sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==} + engines: {node: '>= 12.0.0'} - wide-align@1.1.5: - resolution: { integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== } + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} - widest-line@3.1.0: - resolution: { integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== } - engines: { node: '>=8' } + wordnet-db@3.1.14: + resolution: {integrity: sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==} + engines: {node: '>=0.6.0'} - widest-line@4.0.1: - resolution: { integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== } - engines: { node: '>=12' } + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - wikipedia@2.1.2: - resolution: { integrity: sha512-RAYaMpXC9/E873RaSEtlEa8dXK4e0p5k98GKOd210MtkE5emm6fcnwD+N6ZA4cuffjDWagvhaQKtp/mGp2BOVQ== } - engines: { node: '>=10' } + workbox-background-sync@6.6.0: + resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} - wildcard@2.0.1: - resolution: { integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== } + workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} - wink-nlp@2.3.0: - resolution: { integrity: sha512-NcMmlsJavRZgaV4dAjsOQPuXG4v3yLRRssEibfx41lhmwTTOCaQGW7czNC73bDKCq7q4vqGTjX3/MFhK3I76TA== } + workbox-broadcast-update@6.6.0: + resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} - winston-transport@4.7.0: - resolution: { integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== } - engines: { node: '>= 12.0.0' } + workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} - winston@3.12.0: - resolution: { integrity: sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w== } - engines: { node: '>= 12.0.0' } + workbox-build@6.6.0: + resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} + engines: {node: '>=10.0.0'} - word-wrap@1.2.5: - resolution: { integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== } - engines: { node: '>=0.10.0' } + workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} + engines: {node: '>=16.0.0'} - wordnet-db@3.1.14: - resolution: { integrity: sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag== } - engines: { node: '>=0.6.0' } + workbox-cacheable-response@6.6.0: + resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} + deprecated: workbox-background-sync@6.6.0 - wordwrap@1.0.0: - resolution: { integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== } + workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} - workbox-background-sync@6.6.0: - resolution: { integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw== } + workbox-core@6.6.0: + resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} - workbox-background-sync@7.0.0: - resolution: { integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA== } + workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} - workbox-broadcast-update@6.6.0: - resolution: { integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q== } + workbox-expiration@6.6.0: + resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} - workbox-broadcast-update@7.0.0: - resolution: { integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ== } + workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} - workbox-build@6.6.0: - resolution: { integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ== } - engines: { node: '>=10.0.0' } + workbox-google-analytics@6.6.0: + resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} + deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained - workbox-build@7.0.0: - resolution: { integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg== } - engines: { node: '>=16.0.0' } + workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} + deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained - workbox-cacheable-response@6.6.0: - resolution: { integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw== } - deprecated: workbox-background-sync@6.6.0 + workbox-navigation-preload@6.6.0: + resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} - workbox-cacheable-response@7.0.0: - resolution: { integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g== } + workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} - workbox-core@6.6.0: - resolution: { integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ== } + workbox-precaching@6.6.0: + resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} - workbox-core@7.0.0: - resolution: { integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ== } + workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} - workbox-expiration@6.6.0: - resolution: { integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw== } + workbox-range-requests@6.6.0: + resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} - workbox-expiration@7.0.0: - resolution: { integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ== } + workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} - workbox-google-analytics@6.6.0: - resolution: { integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q== } - deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained + workbox-recipes@6.6.0: + resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} - workbox-google-analytics@7.0.0: - resolution: { integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg== } - deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained + workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} - workbox-navigation-preload@6.6.0: - resolution: { integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q== } + workbox-routing@6.6.0: + resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} - workbox-navigation-preload@7.0.0: - resolution: { integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA== } + workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} - workbox-precaching@6.6.0: - resolution: { integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw== } + workbox-strategies@6.6.0: + resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} - workbox-precaching@7.0.0: - resolution: { integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA== } + workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} - workbox-range-requests@6.6.0: - resolution: { integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw== } + workbox-streams@6.6.0: + resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} - workbox-range-requests@7.0.0: - resolution: { integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ== } + workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} - workbox-recipes@6.6.0: - resolution: { integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A== } + workbox-sw@6.6.0: + resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} - workbox-recipes@7.0.0: - resolution: { integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww== } + workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} - workbox-routing@6.6.0: - resolution: { integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw== } + workbox-webpack-plugin@6.6.0: + resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 - workbox-routing@7.0.0: - resolution: { integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA== } + workbox-window@6.6.0: + resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} - workbox-strategies@6.6.0: - resolution: { integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ== } + workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} - workbox-strategies@7.0.0: - resolution: { integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA== } + wrap-ansi@2.1.0: + resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} + engines: {node: '>=0.10.0'} - workbox-streams@6.6.0: - resolution: { integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg== } - - workbox-streams@7.0.0: - resolution: { integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ== } + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} - workbox-sw@6.6.0: - resolution: { integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ== } - - workbox-sw@7.0.0: - resolution: { integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA== } - - workbox-webpack-plugin@6.6.0: - resolution: { integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A== } - engines: { node: '>=10.0.0' } - peerDependencies: - webpack: ^4.4.0 || ^5.9.0 - - workbox-window@6.6.0: - resolution: { integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw== } - - workbox-window@7.0.0: - resolution: { integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA== } - - wrap-ansi@2.1.0: - resolution: { integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== } - engines: { node: '>=0.10.0' } - - 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@3.0.3: - resolution: { integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== } - - 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 } - - write-json@0.2.2: - resolution: { integrity: sha512-3HOXDnA8CgyaObzkxKPTHBw0feFlYMn9Mi8ZIrnoNJTTMABn+XOhmTsVlX/P/WeZuXEV9ApvQvR1fpZOOQ5FOg== } - engines: { node: '>=0.10.0' } - - write@0.2.1: - resolution: { integrity: sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA== } - engines: { node: '>=0.10.0' } - - ws@7.5.9: - resolution: { integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== } - engines: { node: '>=8.3.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.11.0: - resolution: { integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.13.0: - resolution: { integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.16.0: - resolution: { integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.0: - resolution: { integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xdg-basedir@5.1.0: - resolution: { integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== } - engines: { node: '>=12' } - - xdg-default-browser@2.1.0: - resolution: { integrity: sha512-HY4G725+IDQr16N8XOjAms5qJGArdJaWIuC7Q7A8UXIwj2mifqnPXephazyL7sIkQPvmEoPX3E0v2yFv6hQUNg== } - engines: { node: '>=4' } - - xml-js@1.6.11: - resolution: { integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== } - hasBin: true - - xml-name-validator@3.0.0: - resolution: { integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== } - - xml-name-validator@4.0.0: - resolution: { integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== } - engines: { node: '>=12' } - - xml2js@0.5.0: - resolution: { integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== } - engines: { node: '>=4.0.0' } - - xml2js@0.6.2: - resolution: { integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== } - engines: { node: '>=4.0.0' } - - xmlbuilder@10.1.1: - resolution: { integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg== } - engines: { node: '>=4.0' } - - xmlbuilder@11.0.1: - resolution: { integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== } - engines: { node: '>=4.0' } - - xmlchars@2.2.0: - resolution: { integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== } - - xmldom-sre@0.1.31: - resolution: { integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw== } - engines: { node: '>=0.1' } - - xmlhttprequest-ssl@2.0.0: - resolution: { integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== } - engines: { node: '>=0.4.0' } - - xtend@4.0.2: - resolution: { integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== } - engines: { node: '>=0.4' } - - y18n@3.2.2: - resolution: { integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== } - - y18n@5.0.8: - resolution: { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== } - engines: { node: '>=10' } - - yallist@2.1.2: - resolution: { integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== } - - yallist@3.1.1: - resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } - - yallist@4.0.0: - resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } - - yaml@1.10.2: - resolution: { integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== } - engines: { node: '>= 6' } - - yaml@2.3.1: - resolution: { integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== } - engines: { node: '>= 14' } - - yaml@2.4.1: - resolution: { integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== } - engines: { node: '>= 14' } - hasBin: true - - yargs-parser@2.4.1: - resolution: { integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== } - - yargs-parser@20.2.9: - resolution: { integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== } - engines: { node: '>=10' } - - yargs-parser@21.1.1: - resolution: { integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== } - engines: { node: '>=12' } - - yargs-parser@5.0.1: - resolution: { integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA== } - - yargs@16.2.0: - resolution: { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } - engines: { node: '>=10' } - - yargs@17.7.1: - resolution: { integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== } - engines: { node: '>=12' } - - yargs@17.7.2: - resolution: { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== } - engines: { node: '>=12' } - - yargs@7.1.2: - resolution: { integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA== } - - yauzl@2.10.0: - resolution: { integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== } - - yeoman-environment@3.19.3: - resolution: { integrity: sha512-/+ODrTUHtlDPRH9qIC0JREH8+7nsRcjDl3Bxn2Xo/rvAaVvixH5275jHwg0C85g4QsF4P6M2ojfScPPAl+pLAg== } - engines: { node: '>=12.10.0' } - hasBin: true - - yeoman-generator@5.10.0: - resolution: { integrity: sha512-iDUKykV7L4nDNzeYSedRmSeJ5eMYFucnKDi6KN1WNASXErgPepKqsQw55TgXPHnmpcyOh2Dd/LAZkyc+f0qaAw== } - engines: { node: '>=12.10.0' } - peerDependencies: - yeoman-environment: ^3.2.0 - peerDependenciesMeta: - yeoman-environment: - optional: true - - yn@3.1.1: - resolution: { integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== } - engines: { node: '>=6' } - - yocto-queue@0.1.0: - resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } - engines: { node: '>=10' } - - yocto-queue@1.1.1: - resolution: { integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== } - engines: { node: '>=12.20' } - - youtube-transcript@1.2.1: - resolution: { integrity: sha512-TvEGkBaajKw+B6y91ziLuBLsa5cawgowou+Bk0ciGpjELDfAzSzTGXaZmeSSkUeknCPpEr/WGApOHDwV7V+Y9Q== } - engines: { node: '>=18.0.0' } - - yup@0.32.11: - resolution: { integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== } - engines: { node: '>=10' } - - zod-to-json-schema@3.22.4: - resolution: { integrity: sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ== } - peerDependencies: - zod: ^3.22.4 - - zod-to-json-schema@3.22.5: - resolution: { integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q== } - peerDependencies: - zod: ^3.22.4 - - zod-to-json-schema@3.23.1: - resolution: { integrity: sha512-oT9INvydob1XV0v1d2IadrR74rLtDInLvDFfAa1CG0Pmg/vxATk7I2gSelfj271mbzeM4Da0uuDQE/Nkj3DWNw== } - peerDependencies: - zod: ^3.23.3 - - zod-validation-error@3.3.0: - resolution: { integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw== } - engines: { node: '>=18.0.0' } - peerDependencies: - zod: ^3.18.0 - - zod@3.22.4: - resolution: { integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== } - - zod@3.23.8: - resolution: { integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== } - - zustand@4.5.2: - resolution: { integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== } - engines: { node: '>=12.7.0' } - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - - zwitch@1.0.5: - resolution: { integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== } - - zwitch@2.0.4: - resolution: { integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== } - -onlyBuiltDependencies: - - faiss-node - - sqlite3 + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} -snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@adobe/css-tools@4.3.3': {} - - '@ai-sdk/provider-utils@0.0.14(zod@3.22.4)': - dependencies: - '@ai-sdk/provider': 0.0.10 - eventsource-parser: 1.1.2 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.22.4 - - '@ai-sdk/provider-utils@1.0.2(zod@3.22.4)': - dependencies: - '@ai-sdk/provider': 0.0.12 - eventsource-parser: 1.1.2 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.22.4 - - '@ai-sdk/provider@0.0.10': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@0.0.12': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@0.0.20(react@18.2.0)(zod@3.22.4)': - dependencies: - '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) - '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) - swr: 2.2.0(react@18.2.0) - optionalDependencies: - react: 18.2.0 - zod: 3.22.4 - - '@ai-sdk/solid@0.0.14(zod@3.22.4)': - dependencies: - '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) - transitivePeerDependencies: - - zod - - '@ai-sdk/svelte@0.0.15(svelte@4.2.18)(zod@3.22.4)': - dependencies: - '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) - '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) - sswr: 2.1.0(svelte@4.2.18) - optionalDependencies: - svelte: 4.2.18 - transitivePeerDependencies: - - zod - - '@ai-sdk/ui-utils@0.0.12(zod@3.22.4)': - dependencies: - '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.22.4 - - '@ai-sdk/vue@0.0.15(vue@3.4.31(typescript@5.5.2))(zod@3.22.4)': - dependencies: - '@ai-sdk/provider-utils': 0.0.14(zod@3.22.4) - '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) - swrv: 1.0.4(vue@3.4.31(typescript@5.5.2)) - optionalDependencies: - vue: 3.4.31(typescript@5.5.2) - transitivePeerDependencies: - - zod - - '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - - '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)': - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - search-insights: 2.17.1 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - '@algolia/client-search': 4.24.0 - algoliasearch: 4.24.0 - - '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': - dependencies: - '@algolia/client-search': 4.24.0 - algoliasearch: 4.24.0 - - '@algolia/cache-browser-local-storage@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/cache-common@4.24.0': {} - - '@algolia/cache-in-memory@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/client-account@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-analytics@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-common@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-personalization@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-search@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/events@4.0.1': {} - - '@algolia/logger-common@4.24.0': {} - - '@algolia/logger-console@4.24.0': - dependencies: - '@algolia/logger-common': 4.24.0 - - '@algolia/recommend@4.24.0': - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/requester-browser-xhr@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/requester-common@4.24.0': {} - - '@algolia/requester-node-http@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/transporter@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@anthropic-ai/sdk@0.20.9(encoding@0.1.13)': - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.11 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - '@anthropic-ai/sdk@0.21.1(encoding@0.1.13)': - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.11 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - '@anthropic-ai/sdk@0.5.10(encoding@0.1.13)': - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.11 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - digest-fetch: 1.3.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@apideck/better-ajv-errors@0.3.6(ajv@8.13.0)': - dependencies: - ajv: 8.13.0 - json-schema: 0.4.0 - jsonpointer: 5.0.1 - leven: 3.1.0 - - '@apify/consts@2.26.0': {} - - '@apify/log@2.5.0': - dependencies: - '@apify/consts': 2.26.0 - ansi-colors: 4.1.3 - - '@auth0/auth0-react@2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@auth0/auth0-spa-js': 2.1.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@auth0/auth0-spa-js@2.1.3': {} - - '@auth0/nextjs-auth0@3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))': - dependencies: - '@panva/hkdf': 1.2.1 - cookie: 0.6.0 - debug: 4.3.6(supports-color@5.5.0) - joi: 17.12.2 - jose: 4.15.9 - next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - oauth4webapi: 2.11.1 - openid-client: 5.6.5 - tslib: 2.6.2 - url-join: 4.0.1 - transitivePeerDependencies: - - supports-color - - '@aws-crypto/crc32@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 - tslib: 1.14.1 - - '@aws-crypto/crc32@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.609.0 - tslib: 2.6.2 - - '@aws-crypto/crc32c@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 - tslib: 1.14.1 - - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha1-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-locate-window': 3.495.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-locate-window': 3.495.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-locate-window': 3.495.0 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.609.0 - tslib: 2.6.2 - - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.6.2 - - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/client-bedrock-agent-runtime@3.625.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.624.0 - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/eventstream-serde-browser': 3.0.6 - '@smithy/eventstream-serde-config-resolver': 3.0.3 - '@smithy/eventstream-serde-node': 3.0.5 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-bedrock-runtime@3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-node': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/eventstream-serde-browser': 2.1.4 - '@smithy/eventstream-serde-config-resolver': 2.1.4 - '@smithy/eventstream-serde-node': 2.1.4 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-retry': 2.1.4 - '@smithy/util-stream': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-bedrock-runtime@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.624.0 - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/eventstream-serde-browser': 3.0.6 - '@smithy/eventstream-serde-config-resolver': 3.0.3 - '@smithy/eventstream-serde-node': 3.0.5 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-stream': 3.1.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-dynamodb@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.529.1 - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-endpoint-discovery': 3.525.0 - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/core': 1.3.7 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-endpoints': 1.1.5 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - '@smithy/util-waiter': 2.1.4 - tslib: 2.6.2 - uuid: 9.0.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-kendra@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.624.0 - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - uuid: 9.0.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.529.1 - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-bucket-endpoint': 3.525.0 - '@aws-sdk/middleware-expect-continue': 3.523.0 - '@aws-sdk/middleware-flexible-checksums': 3.523.0 - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-location-constraint': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-sdk-s3': 3.525.0 - '@aws-sdk/middleware-signing': 3.523.0 - '@aws-sdk/middleware-ssec': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/signature-v4-multi-region': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/xml-builder': 3.523.0 - '@smithy/config-resolver': 2.1.5 - '@smithy/core': 1.3.7 - '@smithy/eventstream-serde-browser': 2.1.4 - '@smithy/eventstream-serde-config-resolver': 2.1.4 - '@smithy/eventstream-serde-node': 2.1.4 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-blob-browser': 2.1.4 - '@smithy/hash-node': 2.1.4 - '@smithy/hash-stream-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/md5-js': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-endpoints': 1.1.5 - '@smithy/util-retry': 2.1.4 - '@smithy/util-stream': 2.1.4 - '@smithy/util-utf8': 2.2.0 - '@smithy/util-waiter': 2.1.4 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso-oidc@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.529.1 - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/core': 1.3.7 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-endpoints': 1.1.5 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.624.0 - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.529.1 - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/core': 1.3.7 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-endpoints': 1.1.5 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.624.0 - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/credential-provider-node': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-sdk-sts': 3.418.0 - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.529.1 - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/core': 1.3.7 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-endpoints': 1.1.5 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/core': 3.624.0 - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.620.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.3.2 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.14 - '@smithy/util-defaults-mode-node': 3.0.14 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.529.1': - dependencies: - '@smithy/core': 1.3.7 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - - '@aws-sdk/core@3.624.0': - dependencies: - '@smithy/core': 2.3.2 - '@smithy/node-config-provider': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/signature-v4': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - fast-xml-parser: 4.4.1 - tslib: 2.6.2 - - '@aws-sdk/core@3.629.0': - dependencies: - '@smithy/core': 2.3.2 - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/signature-v4': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - fast-xml-parser: 4.4.1 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.620.1': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/node-http-handler': 2.4.2 - '@smithy/property-provider': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/util-stream': 2.1.4 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.622.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.3 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/credential-provider-env': 3.418.0 - '@aws-sdk/credential-provider-process': 3.418.0 - '@aws-sdk/credential-provider-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/credential-provider-imds': 2.2.6 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-ini@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-env': 3.523.0 - '@aws-sdk/credential-provider-process': 3.523.0 - '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.523.0 - '@smithy/credential-provider-imds': 2.2.6 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/credential-provider-ini@3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-env': 3.620.1 - '@aws-sdk/credential-provider-http': 3.622.0 - '@aws-sdk/credential-provider-process': 3.620.1 - '@aws-sdk/credential-provider-sso': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))) - '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-node@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/credential-provider-env': 3.418.0 - '@aws-sdk/credential-provider-ini': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-process': 3.418.0 - '@aws-sdk/credential-provider-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/credential-provider-imds': 2.2.6 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/credential-provider-env': 3.523.0 - '@aws-sdk/credential-provider-http': 3.525.0 - '@aws-sdk/credential-provider-ini': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-process': 3.523.0 - '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.523.0 - '@smithy/credential-provider-imds': 2.2.6 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/credential-provider-env': 3.620.1 - '@aws-sdk/credential-provider-http': 3.622.0 - '@aws-sdk/credential-provider-ini': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-process': 3.620.1 - '@aws-sdk/credential-provider-sso': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))) - '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/credential-provider-process@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-process@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-process@3.620.1': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-sso@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/token-providers': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-sso@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sso': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/token-providers': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/credential-provider-sso@3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sso': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/token-providers': 3.614.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))) - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-web-identity@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))': - dependencies: - '@aws-sdk/client-sts': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/endpoint-cache@3.495.0': - dependencies: - mnemonist: 0.38.3 - tslib: 2.6.2 - - '@aws-sdk/middleware-bucket-endpoint@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-arn-parser': 3.495.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - '@smithy/util-config-provider': 2.2.1 - tslib: 2.6.2 - - '@aws-sdk/middleware-endpoint-discovery@3.525.0': - dependencies: - '@aws-sdk/endpoint-cache': 3.495.0 - '@aws-sdk/types': 3.523.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-expect-continue@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-flexible-checksums@3.523.0': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.523.0 - '@smithy/is-array-buffer': 2.1.1 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.620.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-location-constraint@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.609.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.620.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-sdk-s3@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-arn-parser': 3.495.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/util-config-provider': 2.2.1 - tslib: 2.6.2 - - '@aws-sdk/middleware-sdk-s3@3.629.0': - dependencies: - '@aws-sdk/core': 3.629.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/core': 2.3.2 - '@smithy/node-config-provider': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/signature-v4': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-stream': 3.1.3 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-sdk-sts@3.418.0': - dependencies: - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-signing@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/types': 2.11.0 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@aws-sdk/middleware-signing@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/types': 2.11.0 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@aws-sdk/middleware-ssec@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.620.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.614.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.418.0': - dependencies: - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - '@smithy/util-config-provider': 2.2.1 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - '@smithy/util-config-provider': 2.2.1 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.614.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 - - '@aws-sdk/s3-request-presigner@3.629.0': - dependencies: - '@aws-sdk/signature-v4-multi-region': 3.629.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-format-url': 3.609.0 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/signature-v4-crt@3.629.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@aws-sdk/signature-v4-multi-region': 3.629.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/querystring-parser': 3.0.3 - '@smithy/signature-v4': 4.1.0 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - tslib: 2.6.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - '@aws-sdk/signature-v4-multi-region@3.525.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/signature-v4-multi-region@3.629.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.629.0 - '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/signature-v4': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/token-providers@3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@smithy/config-resolver': 2.1.5 - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/hash-node': 2.1.4 - '@smithy/invalid-dependency': 2.1.4 - '@smithy/middleware-content-length': 2.1.4 - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/middleware-stack': 2.1.4 - '@smithy/node-config-provider': 2.2.5 - '@smithy/node-http-handler': 2.4.2 - '@smithy/property-provider': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-base64': 2.2.0 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.6 - '@smithy/util-defaults-mode-node': 2.2.6 - '@smithy/util-retry': 2.1.4 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/token-providers@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/client-sso-oidc': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.523.0 - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))': - dependencies: - '@aws-sdk/client-sso-oidc': 3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.418.0': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.523.0': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.609.0': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/util-arn-parser@3.495.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-arn-parser@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.525.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/types': 2.11.0 - '@smithy/util-endpoints': 1.1.5 - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.614.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/types': 3.3.0 - '@smithy/util-endpoints': 2.0.5 - tslib: 2.6.2 - - '@aws-sdk/util-format-url@3.609.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@aws-sdk/util-locate-window@3.495.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.418.0': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.11.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.523.0': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/types': 2.11.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.609.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/types': 3.3.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - optionalDependencies: - aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - '@aws-sdk/util-user-agent-node@3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/types': 3.523.0 - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - optionalDependencies: - aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - '@aws-sdk/util-user-agent-node@3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - optionalDependencies: - aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - '@aws-sdk/util-utf8-browser@3.259.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/xml-builder@3.523.0': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@babel/code-frame@7.12.11': - dependencies: - '@babel/highlight': 7.23.4 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 - - '@babel/compat-data@7.23.5': {} - - '@babel/compat-data@7.24.4': {} - - '@babel/core@7.24.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.8 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/eslint-parser@7.23.10(@babel/core@7.24.0)(eslint@8.57.0)': - dependencies: - '@babel/core': 7.24.0 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.25.6': - dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.6(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.6(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.6(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-member-expression-to-functions@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-member-expression-to-functions@7.24.8': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.18.6': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-optimise-call-expression@7.24.7': - dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-plugin-utils@7.24.0': {} - - '@babel/helper-plugin-utils@7.24.5': {} - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - - '@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-split-export-declaration@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-string-parser@7.24.1': {} - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.24.5': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helper-wrap-function@7.22.20': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - '@babel/helpers@7.24.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/parser@7.24.8': - dependencies: - '@babel/types': 7.24.5 - - '@babel/parser@7.25.6': - dependencies: - '@babel/types': 7.25.6 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.0) - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-proposal-decorators@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-decorators': 7.24.0(@babel/core@7.24.0) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-decorators@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 - - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.24.5 - - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - - '@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - - '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.0) - - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.5 - - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0) - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-runtime@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) - - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/preset-env@7.24.0(@babel/core@7.24.0)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.24.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.24.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) - babel-plugin-polyfill-corejs2: 0.4.9(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) - core-js-compat: 3.36.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.24.5(@babel/core@7.24.0)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.0) - core-js-compat: 3.37.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.5 - esutils: 2.0.3 - - '@babel/preset-react@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.24.0) - - '@babel/preset-react@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.24.0) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.18.6(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) - - '@babel/preset-typescript@7.21.4(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) - - '@babel/preset-typescript@7.24.7(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.0) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime-corejs3@7.25.6': - dependencies: - core-js-pure: 3.36.0 - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.24.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.5 - - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 - - '@babel/traverse@7.24.0(supports-color@5.5.0)': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.5 - debug: 4.3.6(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.25.6': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.6(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.5': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.6': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@bcoe/v8-coverage@0.2.3': {} - - '@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1)': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - '@lezer/common': 1.2.1 - - '@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.26.3 - '@lezer/common': 1.2.1 - - '@codemirror/commands@6.3.3': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - '@lezer/common': 1.2.1 - - '@codemirror/commands@6.5.0': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.26.3 - '@lezer/common': 1.2.1 - - '@codemirror/lang-javascript@6.2.2': - dependencies: - '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.1 - '@codemirror/lint': 6.5.0 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - '@lezer/common': 1.2.1 - '@lezer/javascript': 1.4.13 - - '@codemirror/lang-json@6.0.1': - dependencies: - '@codemirror/language': 6.10.1 - '@lezer/json': 1.0.2 - - '@codemirror/language@6.10.1': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.0 - style-mod: 4.1.2 - - '@codemirror/lint@6.5.0': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - crelt: 1.0.6 - - '@codemirror/search@6.5.6': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.26.3 - crelt: 1.0.6 - - '@codemirror/state@6.4.1': {} - - '@codemirror/theme-one-dark@6.1.2': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.26.3 - '@lezer/highlight': 1.2.0 - - '@codemirror/view@6.25.1': - dependencies: - '@codemirror/state': 6.4.1 - style-mod: 4.1.2 - w3c-keyname: 2.2.8 - - '@codemirror/view@6.26.3': - dependencies: - '@codemirror/state': 6.4.1 - style-mod: 4.1.2 - w3c-keyname: 2.2.8 - - '@colors/colors@1.5.0': - optional: true - - '@colors/colors@1.6.0': {} - - '@contentful/app-sdk@4.29.0': - dependencies: - contentful-management: 10.46.4 - transitivePeerDependencies: - - debug - - '@contentful/content-source-maps@0.6.1': - dependencies: - '@vercel/stega': 0.1.2 - json-pointer: 0.6.2 - - '@contentful/rich-text-from-markdown@15.18.8': - dependencies: - '@contentful/rich-text-types': 16.8.3 - lodash: 4.17.21 - remark-gfm: 1.0.0 - remark-parse: 9.0.0 - unified: 9.2.2 - transitivePeerDependencies: - - supports-color - - '@contentful/rich-text-plain-text-renderer@16.2.8': - dependencies: - '@contentful/rich-text-types': 16.8.3 - - '@contentful/rich-text-types@16.8.3': {} - - '@couchbase/couchbase-darwin-arm64-napi@4.3.1': - optional: true - - '@couchbase/couchbase-darwin-x64-napi@4.3.1': - optional: true - - '@couchbase/couchbase-linux-arm64-napi@4.3.1': - optional: true - - '@couchbase/couchbase-linux-x64-napi@4.3.1': - optional: true - - '@couchbase/couchbase-linuxmusl-x64-napi@4.3.1': - optional: true - - '@couchbase/couchbase-win32-x64-napi@4.3.1': - optional: true - - '@crawlee/types@3.8.1': - dependencies: - tslib: 2.6.2 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@csstools/normalize.css@12.1.1': {} - - '@csstools/postcss-cascade-layers@1.1.1(postcss@8.4.21)': - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - '@csstools/postcss-color-function@1.1.1(postcss@8.4.21)': - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-hwb-function@1.0.2(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-ic-unit@1.0.1(postcss@8.4.21)': - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.21)': - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - '@csstools/postcss-nested-calc@1.0.0(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-oklab-function@1.1.1(postcss@8.4.21)': - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - '@csstools/postcss-unset-value@1.0.2(postcss@8.4.21)': - dependencies: - postcss: 8.4.21 - - '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.15)': - dependencies: - postcss-selector-parser: 6.0.15 - - '@cypress/react18@2.0.1(@types/react-dom@18.2.21)(@types/react@18.2.65)(cypress@12.17.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@types/react-dom': 18.2.21 - cypress: 12.17.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - - '@cypress/request@2.88.12': - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - http-signature: 1.3.6 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - performance-now: 2.1.0 - qs: 6.10.4 - safe-buffer: 5.2.1 - tough-cookie: 4.1.3 - tunnel-agent: 0.6.0 - uuid: 8.3.2 - - '@cypress/request@3.0.1': - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - http-signature: 1.3.6 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - performance-now: 2.1.0 - qs: 6.10.4 - safe-buffer: 5.2.1 - tough-cookie: 4.1.3 - tunnel-agent: 0.6.0 - uuid: 8.3.2 - - '@cypress/xvfb@1.2.4(supports-color@8.1.1)': - dependencies: - debug: 3.2.7(supports-color@8.1.1) - lodash.once: 4.1.1 - transitivePeerDependencies: - - supports-color - - '@dabh/diagnostics@2.0.3': - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - - '@datastax/astra-db-ts@0.1.4': - dependencies: - axios: 1.6.2(debug@4.3.4) - bson: 6.4.0 - winston: 3.12.0 - transitivePeerDependencies: - - debug - - '@datastax/astra-db-ts@1.1.0': - dependencies: - bson-objectid: 2.0.4 - fetch-h2: 3.0.2 - object-hash: 3.0.0 - typed-emitter: 2.1.0 - uuidv7: 0.6.3 - - '@discoveryjs/json-ext@0.5.7': {} - - '@docsearch/css@3.6.1': {} - - '@docsearch/react@3.6.1(@algolia/client-search@4.24.0)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)': - dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - '@docsearch/css': 3.6.1 - algoliasearch: 4.24.0 - optionalDependencies: - '@types/react': 18.2.65 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - search-insights: 2.17.1 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.24.0) - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/preset-react': 7.24.7(@babel/core@7.24.0) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - '@babel/runtime-corejs3': 7.25.6 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@docusaurus/cssnano-preset': 3.5.2 - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@mdx-js/react': 3.0.1(@types/react@18.2.65)(react@18.2.0) - autoprefixer: 10.4.14(postcss@8.4.39) - babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3) - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.4 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.90.3) - core-js: 3.36.0 - css-loader: 6.10.0(webpack@5.90.3) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.90.3) - cssnano: 6.1.2(postcss@8.4.39) - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 2.2.0 - eval: 0.1.8 - file-loader: 6.2.0(webpack@5.90.3) - fs-extra: 11.2.0 - html-minifier-terser: 7.2.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(webpack@5.90.3) - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.8.1(webpack@5.90.3) - p-map: 4.0.0 - postcss: 8.4.39 - postcss-loader: 7.3.4(postcss@8.4.39)(typescript@5.5.2)(webpack@5.90.3) - prompts: 2.4.2 - react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3) - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.2.0))(webpack@5.90.3) - react-router: 5.3.4(react@18.2.0) - react-router-config: 5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) - rtl-detect: 1.1.2 - semver: 7.6.0 - serve-handler: 6.1.5 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.90.3) - tslib: 2.6.2 - update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) - webpack: 5.90.3 - webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.8) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3) - webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.90.3) - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/cssnano-preset@3.5.2': - dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-sort-media-queries: 5.2.0(postcss@8.4.39) - tslib: 2.6.2 - - '@docusaurus/logger@3.5.2': - dependencies: - chalk: 4.1.2 - tslib: 2.6.2 - - '@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@mdx-js/mdx': 3.0.1 - '@slorber/remark-comment': 1.0.0 - escape-html: 1.0.3 - estree-util-value-to-estree: 3.1.2 - file-loader: 6.2.0(webpack@5.90.3) - fs-extra: 11.2.0 - image-size: 1.1.1 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - rehype-raw: 7.0.0 - remark-directive: 3.0.0 - remark-emoji: 4.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.0 - stringify-object: 3.3.0 - tslib: 2.6.2 - unified: 11.0.5 - unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) - vfile: 6.0.1 - webpack: 5.90.3 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/module-type-aliases@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/history': 4.7.11 - '@types/react': 18.2.65 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 2.0.5(react@18.2.0) - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - cheerio: 1.0.0-rc.12 - feed: 4.2.2 - fs-extra: 11.2.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - reading-time: 1.5.0 - srcset: 4.0.0 - tslib: 2.6.2 - unist-util-visit: 5.0.0 - utility-types: 3.11.0 - webpack: 5.90.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 11.2.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - utility-types: 3.11.0 - webpack: 5.90.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - webpack: 5.90.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-json-view-lite: 1.5.0(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@types/gtag.js': 0.0.12 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - sitemap: 7.1.2 - tslib: 2.6.2 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/preset-classic@3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-classic': 3.5.2(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@algolia/client-search' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/react-loadable@6.0.0(react@18.2.0)': - dependencies: - '@types/react': 18.2.65 - react: 18.2.0 - - '@docusaurus/theme-classic@3.5.2(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@mdx-js/react': 3.0.1(@types/react@18.2.65)(react@18.2.0) - clsx: 2.1.0 - copy-text-to-clipboard: 3.2.0 - infima: 0.2.0-alpha.44 - lodash: 4.17.21 - nprogress: 0.2.0 - postcss: 8.4.39 - prism-react-renderer: 2.4.0(react@18.2.0) - prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) - rtlcss: 4.3.0 - tslib: 2.6.2 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': - dependencies: - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@types/history': 4.7.11 - '@types/react': 18.2.65 - '@types/react-router-config': 5.0.11 - clsx: 2.1.0 - parse-numeric-range: 1.3.0 - prism-react-renderer: 2.4.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2)': - dependencies: - '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1) - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) - '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - algoliasearch: 4.24.0 - algoliasearch-helper: 3.22.4(algoliasearch@4.24.0) - clsx: 2.1.0 - eta: 2.2.0 - fs-extra: 11.2.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/types' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/theme-translations@3.5.2': - dependencies: - fs-extra: 11.2.0 - tslib: 2.6.2 - - '@docusaurus/tsconfig@3.5.2': {} - - '@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@mdx-js/mdx': 3.0.1 - '@types/history': 4.7.11 - '@types/react': 18.2.65 - commander: 5.1.0 - joi: 17.12.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - utility-types: 3.11.0 - webpack: 5.90.3 - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/utils-common@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': - dependencies: - tslib: 2.6.2 - optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - - '@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2)': - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - fs-extra: 11.2.0 - joi: 17.12.2 - js-yaml: 4.1.0 - lodash: 4.17.21 - tslib: 2.6.2 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2)': - dependencies: - '@docusaurus/logger': 3.5.2 - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@svgr/webpack': 8.1.0(typescript@5.5.2) - escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.90.3) - fs-extra: 11.2.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - jiti: 1.21.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - micromatch: 4.0.5 - prompts: 2.4.2 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.6.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) - utility-types: 3.11.0 - webpack: 5.90.3 - optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - typescript - - uglify-js - - webpack-cli - - '@dqbd/tiktoken@1.0.13': {} - - '@e2b/code-interpreter@0.0.5(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - e2b: 0.16.1 - isomorphic-ws: 5.0.0(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@elastic/elasticsearch@8.12.2': - dependencies: - '@elastic/transport': 8.4.1 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - - '@elastic/transport@8.4.1': - dependencies: - debug: 4.3.4(supports-color@8.1.1) - hpagent: 1.2.0 - ms: 2.1.3 - secure-json-parse: 2.7.0 - tslib: 2.6.2 - undici: 5.28.3 - transitivePeerDependencies: - - supports-color - - '@emotion/babel-plugin@11.11.0': - dependencies: - '@babel/helper-module-imports': 7.24.3 - '@babel/runtime': 7.24.0 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - - '@emotion/cache@11.11.0': - dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - - '@emotion/hash@0.9.1': {} - - '@emotion/is-prop-valid@0.8.8': - dependencies: - '@emotion/memoize': 0.7.4 - optional: true - - '@emotion/is-prop-valid@1.2.2': - dependencies: - '@emotion/memoize': 0.8.1 - - '@emotion/memoize@0.7.4': - optional: true - - '@emotion/memoize@0.8.1': {} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - '@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - '@emotion/serialize@1.1.3': - dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.3 + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - '@emotion/sheet@1.2.2': {} + 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} - '@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.2 - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/serialize': 1.1.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@emotion/stylis@0.8.5': {} + ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@emotion/unitless@0.7.5': {} + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@emotion/unitless@0.8.1': {} + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': - dependencies: - react: 18.2.0 + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@emotion/utils@1.2.1': {} + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} - '@emotion/weak-memoize@0.3.1': {} + xdg-default-browser@2.1.0: + resolution: {integrity: sha512-HY4G725+IDQr16N8XOjAms5qJGArdJaWIuC7Q7A8UXIwj2mifqnPXephazyL7sIkQPvmEoPX3E0v2yFv6hQUNg==} + engines: {node: '>=4'} - '@esbuild-kit/cjs-loader@2.4.4': - dependencies: - '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.7.6 + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true - '@esbuild-kit/core-utils@3.3.2': - dependencies: - esbuild: 0.18.20 - source-map-support: 0.5.21 + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - '@esbuild-kit/esm-loader@2.6.5': - dependencies: - '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.7.6 + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} - '@esbuild/aix-ppc64@0.19.12': - optional: true + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} - '@esbuild/android-arm64@0.17.19': - optional: true + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} - '@esbuild/android-arm64@0.18.20': - optional: true + xmlbuilder@10.1.1: + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} + engines: {node: '>=4.0'} - '@esbuild/android-arm64@0.19.12': - optional: true + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} - '@esbuild/android-arm@0.17.19': - optional: true + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - '@esbuild/android-arm@0.18.20': - optional: true + xmldom-sre@0.1.31: + resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} + engines: {node: '>=0.1'} - '@esbuild/android-arm@0.19.12': - optional: true + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} - '@esbuild/android-x64@0.17.19': - optional: true + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - '@esbuild/android-x64@0.18.20': - optional: true + y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - '@esbuild/android-x64@0.19.12': - optional: true + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - '@esbuild/darwin-arm64@0.17.19': - optional: true + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - '@esbuild/darwin-arm64@0.18.20': - optional: true + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - '@esbuild/darwin-arm64@0.19.12': - optional: true + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - '@esbuild/darwin-x64@0.17.19': - optional: true + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} - '@esbuild/darwin-x64@0.18.20': - optional: true + yaml@2.0.0-1: + resolution: {integrity: sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==} + engines: {node: '>= 6'} - '@esbuild/darwin-x64@0.19.12': - optional: true + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} - '@esbuild/freebsd-arm64@0.17.19': - optional: true + yaml@2.4.1: + resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + engines: {node: '>= 14'} + hasBin: true - '@esbuild/freebsd-arm64@0.18.20': - optional: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} - '@esbuild/freebsd-arm64@0.19.12': - optional: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - '@esbuild/freebsd-x64@0.17.19': - optional: true + yargs-parser@5.0.1: + resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} - '@esbuild/freebsd-x64@0.18.20': - optional: true + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} - '@esbuild/freebsd-x64@0.19.12': - optional: true + yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} - '@esbuild/linux-arm64@0.17.19': - optional: true + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - '@esbuild/linux-arm64@0.18.20': - optional: true + yargs@7.1.2: + resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} - '@esbuild/linux-arm64@0.19.12': - optional: true + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - '@esbuild/linux-arm@0.17.19': - optional: true + yeoman-environment@3.19.3: + resolution: {integrity: sha512-/+ODrTUHtlDPRH9qIC0JREH8+7nsRcjDl3Bxn2Xo/rvAaVvixH5275jHwg0C85g4QsF4P6M2ojfScPPAl+pLAg==} + engines: {node: '>=12.10.0'} + hasBin: true - '@esbuild/linux-arm@0.18.20': + yeoman-generator@5.10.0: + resolution: {integrity: sha512-iDUKykV7L4nDNzeYSedRmSeJ5eMYFucnKDi6KN1WNASXErgPepKqsQw55TgXPHnmpcyOh2Dd/LAZkyc+f0qaAw==} + engines: {node: '>=12.10.0'} + peerDependencies: + yeoman-environment: ^3.2.0 + peerDependenciesMeta: + yeoman-environment: optional: true - '@esbuild/linux-arm@0.19.12': + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + youtube-transcript@1.2.1: + resolution: {integrity: sha512-TvEGkBaajKw+B6y91ziLuBLsa5cawgowou+Bk0ciGpjELDfAzSzTGXaZmeSSkUeknCPpEr/WGApOHDwV7V+Y9Q==} + engines: {node: '>=18.0.0'} + + yup@0.32.11: + resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==} + engines: {node: '>=10'} + + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + + zod-to-json-schema@3.22.4: + resolution: {integrity: sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ==} + peerDependencies: + zod: ^3.22.4 + + zod-to-json-schema@3.22.5: + resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} + peerDependencies: + zod: ^3.22.4 + + zod-to-json-schema@3.23.1: + resolution: {integrity: sha512-oT9INvydob1XV0v1d2IadrR74rLtDInLvDFfAa1CG0Pmg/vxATk7I2gSelfj271mbzeM4Da0uuDQE/Nkj3DWNw==} + peerDependencies: + zod: ^3.23.3 + + zod-to-json-schema@3.24.3: + resolution: {integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==} + peerDependencies: + zod: ^3.24.1 + + zod-validation-error@3.3.0: + resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + + zustand@4.5.2: + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': optional: true - - '@esbuild/linux-ia32@0.17.19': + immer: optional: true - - '@esbuild/linux-ia32@0.18.20': + react: optional: true - '@esbuild/linux-ia32@0.19.12': - optional: true + zwitch@1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - '@esbuild/linux-loong64@0.17.19': - optional: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - '@esbuild/linux-loong64@0.18.20': - optional: true +snapshots: - '@esbuild/linux-loong64@0.19.12': - optional: true + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@adobe/css-tools@4.3.3': {} + + '@ai-sdk/provider-utils@0.0.14(zod@3.22.4)': + dependencies: + '@ai-sdk/provider': 0.0.10 + eventsource-parser: 1.1.2 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.22.4 + + '@ai-sdk/provider-utils@1.0.2(zod@3.22.4)': + dependencies: + '@ai-sdk/provider': 0.0.12 + eventsource-parser: 1.1.2 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.22.4 + + '@ai-sdk/provider@0.0.10': + dependencies: + json-schema: 0.4.0 + + '@ai-sdk/provider@0.0.12': + dependencies: + json-schema: 0.4.0 + + '@ai-sdk/react@0.0.20(react@18.2.0)(zod@3.22.4)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) + '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) + swr: 2.2.0(react@18.2.0) + optionalDependencies: + react: 18.2.0 + zod: 3.22.4 + + '@ai-sdk/solid@0.0.14(zod@3.22.4)': + dependencies: + '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) + transitivePeerDependencies: + - zod + + '@ai-sdk/svelte@0.0.15(svelte@4.2.18)(zod@3.22.4)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) + '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) + sswr: 2.1.0(svelte@4.2.18) + optionalDependencies: + svelte: 4.2.18 + transitivePeerDependencies: + - zod + + '@ai-sdk/ui-utils@0.0.12(zod@3.22.4)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.22.4 + + '@ai-sdk/vue@0.0.15(vue@3.4.31(typescript@5.5.2))(zod@3.22.4)': + dependencies: + '@ai-sdk/provider-utils': 0.0.14(zod@3.22.4) + '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) + swrv: 1.0.4(vue@3.4.31(typescript@5.5.2)) + optionalDependencies: + vue: 3.4.31(typescript@5.5.2) + transitivePeerDependencies: + - zod + + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + search-insights: 2.17.1 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/cache-browser-local-storage@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/cache-common@4.24.0': {} + + '@algolia/cache-in-memory@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/client-account@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-analytics@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-common@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-personalization@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-search@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/events@4.0.1': {} + + '@algolia/logger-common@4.24.0': {} + + '@algolia/logger-console@4.24.0': + dependencies: + '@algolia/logger-common': 4.24.0 + + '@algolia/recommend@4.24.0': + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/requester-browser-xhr@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/requester-common@4.24.0': {} + + '@algolia/requester-node-http@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/transporter@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@anthropic-ai/sdk@0.20.9(encoding@0.1.13)': + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + '@anthropic-ai/sdk@0.27.3(encoding@0.1.13)': + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@anthropic-ai/sdk@0.37.0(encoding@0.1.13)': + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@anthropic-ai/sdk@0.5.10(encoding@0.1.13)': + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + digest-fetch: 1.3.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@apideck/better-ajv-errors@0.3.6(ajv@8.13.0)': + dependencies: + ajv: 8.13.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@apidevtools/json-schema-ref-parser@11.9.3': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@apidevtools/json-schema-ref-parser@9.1.2': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@apidevtools/swagger-parser@10.0.3(openapi-types@12.1.3)': + dependencies: + '@apidevtools/json-schema-ref-parser': 9.1.2 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + z-schema: 5.0.5 + + '@apify/consts@2.26.0': {} + + '@apify/log@2.5.0': + dependencies: + '@apify/consts': 2.26.0 + ansi-colors: 4.1.3 + + '@arizeai/openinference-core@1.0.0': + dependencies: + '@arizeai/openinference-semantic-conventions': 1.0.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@arizeai/openinference-instrumentation-langchain@2.0.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@arizeai/openinference-core': 1.0.0 + '@arizeai/openinference-semantic-conventions': 1.0.0 + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@arizeai/openinference-semantic-conventions@1.0.0': {} + + '@auth0/auth0-react@2.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@auth0/auth0-spa-js': 2.1.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@auth0/auth0-spa-js@2.1.3': {} + + '@auth0/nextjs-auth0@3.5.0(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))': + dependencies: + '@panva/hkdf': 1.2.1 + cookie: 0.6.0 + debug: 4.4.0(supports-color@5.5.0) + joi: 17.12.2 + jose: 4.15.9 + next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + oauth4webapi: 2.11.1 + openid-client: 5.6.5 + tslib: 2.6.2 + url-join: 4.0.1 + transitivePeerDependencies: + - supports-color + + '@auth0/nextjs-auth0@3.5.0(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))': + dependencies: + '@panva/hkdf': 1.2.1 + cookie: 0.6.0 + debug: 4.4.0(supports-color@5.5.0) + joi: 17.12.2 + jose: 4.15.9 + next: 14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + oauth4webapi: 2.11.1 + openid-client: 5.6.5 + tslib: 2.6.2 + url-join: 4.0.1 + transitivePeerDependencies: + - supports-color + + '@aws-crypto/crc32@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.523.0 + tslib: 1.14.1 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.734.0 + tslib: 2.6.2 + + '@aws-crypto/crc32c@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.523.0 + tslib: 1.14.1 + + '@aws-crypto/ie11-detection@3.0.0': + dependencies: + tslib: 1.14.1 + + '@aws-crypto/sha1-browser@3.0.0': + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-browser@3.0.0': + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@aws-crypto/sha256-js@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.523.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.609.0 + tslib: 2.6.2 + + '@aws-crypto/supports-web-crypto@3.0.0': + dependencies: + tslib: 1.14.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.6.2 + + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.609.0 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@aws-sdk/client-bedrock-agent-runtime@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/credential-provider-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/eventstream-serde-config-resolver': 4.0.1 + '@smithy/eventstream-serde-node': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-bedrock-runtime@3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-node': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@smithy/config-resolver': 2.1.5 + '@smithy/eventstream-serde-browser': 2.1.4 + '@smithy/eventstream-serde-config-resolver': 2.1.4 + '@smithy/eventstream-serde-node': 2.1.4 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-retry': 2.1.4 + '@smithy/util-stream': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-bedrock-runtime@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/credential-provider-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/eventstream-serde-config-resolver': 4.0.1 + '@smithy/eventstream-serde-node': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-stream': 4.1.2 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-dynamodb@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-endpoint-discovery': 3.525.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + '@smithy/util-waiter': 2.1.4 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-kendra@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/credential-provider-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-bucket-endpoint': 3.525.0 + '@aws-sdk/middleware-expect-continue': 3.523.0 + '@aws-sdk/middleware-flexible-checksums': 3.523.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-location-constraint': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-sdk-s3': 3.525.0 + '@aws-sdk/middleware-signing': 3.523.0 + '@aws-sdk/middleware-ssec': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/signature-v4-multi-region': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/xml-builder': 3.523.0 + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/eventstream-serde-browser': 2.1.4 + '@smithy/eventstream-serde-config-resolver': 2.1.4 + '@smithy/eventstream-serde-node': 2.1.4 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-blob-browser': 2.1.4 + '@smithy/hash-node': 2.1.4 + '@smithy/hash-stream-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/md5-js': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-retry': 2.1.4 + '@smithy/util-stream': 2.1.4 + '@smithy/util-utf8': 2.2.0 + '@smithy/util-waiter': 2.1.4 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-bucket-endpoint': 3.525.0 + '@aws-sdk/middleware-expect-continue': 3.523.0 + '@aws-sdk/middleware-flexible-checksums': 3.523.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-location-constraint': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-sdk-s3': 3.525.0 + '@aws-sdk/middleware-signing': 3.523.0 + '@aws-sdk/middleware-ssec': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/signature-v4-multi-region': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/xml-builder': 3.523.0 + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/eventstream-serde-browser': 2.1.4 + '@smithy/eventstream-serde-config-resolver': 2.1.4 + '@smithy/eventstream-serde-node': 2.1.4 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-blob-browser': 2.1.4 + '@smithy/hash-node': 2.1.4 + '@smithy/hash-stream-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/md5-js': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-retry': 2.1.4 + '@smithy/util-stream': 2.1.4 + '@smithy/util-utf8': 2.2.0 + '@smithy/util-waiter': 2.1.4 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-secrets-manager@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/credential-provider-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@smithy/config-resolver': 2.1.5 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.529.1 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-sdk-sts': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@smithy/config-resolver': 2.1.5 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.529.1 + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 2.1.5 + '@smithy/core': 1.3.7 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-endpoints': 1.1.5 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.529.1': + dependencies: + '@smithy/core': 1.3.7 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + + '@aws-sdk/core@3.629.0': + dependencies: + '@smithy/core': 2.3.2 + '@smithy/node-config-provider': 3.1.4 + '@smithy/property-provider': 3.1.3 + '@smithy/protocol-http': 4.1.0 + '@smithy/signature-v4': 4.1.0 + '@smithy/smithy-client': 3.1.12 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + fast-xml-parser: 4.4.1 + tslib: 2.6.2 + + '@aws-sdk/core@3.758.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/core': 3.1.5 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + fast-xml-parser: 4.4.1 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-env@3.758.0': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/node-http-handler': 2.4.2 + '@smithy/property-provider': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/util-stream': 2.1.4 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-http@3.758.0': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/types': 3.734.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.1.2 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-ini@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/credential-provider-env': 3.418.0 + '@aws-sdk/credential-provider-process': 3.418.0 + '@aws-sdk/credential-provider-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-web-identity': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-ini@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-ini@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-ini@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/credential-provider-env': 3.758.0 + '@aws-sdk/credential-provider-http': 3.758.0 + '@aws-sdk/credential-provider-process': 3.758.0 + '@aws-sdk/credential-provider-sso': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-web-identity': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/nested-clients': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.734.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/credential-provider-env': 3.418.0 + '@aws-sdk/credential-provider-ini': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-process': 3.418.0 + '@aws-sdk/credential-provider-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-web-identity': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-http': 3.525.0 + '@aws-sdk/credential-provider-ini': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-http': 3.525.0 + '@aws-sdk/credential-provider-ini': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-web-identity': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/credential-provider-env': 3.758.0 + '@aws-sdk/credential-provider-http': 3.758.0 + '@aws-sdk/credential-provider-ini': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-process': 3.758.0 + '@aws-sdk/credential-provider-sso': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/credential-provider-web-identity': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.734.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-process@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-process@3.758.0': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-sso@3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-sso': 3.421.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/token-providers': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-sso@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-sso': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/token-providers': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-sso@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-sso': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/token-providers': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-sso@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-sso': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/core': 3.758.0 + '@aws-sdk/token-providers': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/credential-provider-web-identity@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/nested-clients': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/endpoint-cache@3.495.0': + dependencies: + mnemonist: 0.38.3 + tslib: 2.6.2 + + '@aws-sdk/lib-storage@3.758.0(@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))': + dependencies: + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/abort-controller': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/smithy-client': 4.1.6 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-bucket-endpoint@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 + + '@aws-sdk/middleware-endpoint-discovery@3.525.0': + dependencies: + '@aws-sdk/endpoint-cache': 3.495.0 + '@aws-sdk/types': 3.523.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-expect-continue@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-flexible-checksums@3.523.0': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.523.0 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-host-header@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-host-header@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-host-header@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-location-constraint@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-logger@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-logger@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-logger@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-recursion-detection@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-recursion-detection@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-recursion-detection@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-s3@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-s3@3.629.0': + dependencies: + '@aws-sdk/core': 3.629.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/core': 2.3.2 + '@smithy/node-config-provider': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/signature-v4': 4.1.0 + '@smithy/smithy-client': 3.1.12 + '@smithy/types': 3.3.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-stream': 3.1.3 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-sts@3.418.0': + dependencies: + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-signing@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/types': 2.11.0 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@aws-sdk/middleware-signing@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/types': 2.11.0 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@aws-sdk/middleware-ssec@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-user-agent@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-user-agent@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-user-agent@3.758.0': + dependencies: + '@aws-sdk/core': 3.758.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@smithy/core': 3.1.5 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/nested-clients@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.758.0 + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.5 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-retry': 4.0.7 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.7 + '@smithy/util-defaults-mode-node': 4.0.7 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.418.0': + dependencies: + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@aws-sdk/region-config-resolver@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@aws-sdk/region-config-resolver@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + + '@aws-sdk/s3-request-presigner@3.629.0': + dependencies: + '@aws-sdk/signature-v4-multi-region': 3.629.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-format-url': 3.609.0 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@aws-sdk/signature-v4-crt@3.629.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + '@aws-sdk/signature-v4-multi-region': 3.629.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@smithy/querystring-parser': 3.0.3 + '@smithy/signature-v4': 4.1.0 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + tslib: 2.6.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@aws-sdk/signature-v4-multi-region@3.525.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/signature-v4-multi-region@3.629.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.629.0 + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.1.0 + '@smithy/signature-v4': 4.1.0 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@aws-sdk/token-providers@3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@smithy/config-resolver': 2.1.5 + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/hash-node': 2.1.4 + '@smithy/invalid-dependency': 2.1.4 + '@smithy/middleware-content-length': 2.1.4 + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/middleware-stack': 2.1.4 + '@smithy/node-config-provider': 2.2.5 + '@smithy/node-http-handler': 2.4.2 + '@smithy/property-provider': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-base64': 2.2.0 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.6 + '@smithy/util-defaults-mode-node': 2.2.6 + '@smithy/util-retry': 2.1.4 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/token-providers@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/token-providers@3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.529.1(@aws-sdk/credential-provider-node@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)))(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + + '@aws-sdk/token-providers@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/nested-clients': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.418.0': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/types@3.523.0': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/types@3.609.0': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@aws-sdk/types@3.734.0': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/util-arn-parser@3.495.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-arn-parser@3.568.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-endpoints@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + tslib: 2.6.2 + + '@aws-sdk/util-endpoints@3.525.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.11.0 + '@smithy/util-endpoints': 1.1.5 + tslib: 2.6.2 + + '@aws-sdk/util-endpoints@3.743.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + '@smithy/util-endpoints': 3.0.1 + tslib: 2.6.2 + + '@aws-sdk/util-format-url@3.609.0': + dependencies: + '@aws-sdk/types': 3.609.0 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@aws-sdk/util-locate-window@3.495.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-browser@3.418.0': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.11.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-browser@3.523.0': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.11.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-browser@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@aws-sdk/util-user-agent-node@3.418.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + optionalDependencies: + aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + '@aws-sdk/util-user-agent-node@3.525.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + optionalDependencies: + aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + '@aws-sdk/util-user-agent-node@3.614.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/types': 3.609.0 + '@smithy/node-config-provider': 3.1.4 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + optionalDependencies: + aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + '@aws-sdk/util-user-agent-node@3.758.0(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/middleware-user-agent': 3.758.0 + '@aws-sdk/types': 3.734.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + optionalDependencies: + aws-crt: 1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.6.2 + + '@aws-sdk/xml-builder@3.523.0': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@babel/code-frame@7.12.11': + dependencies: + '@babel/highlight': 7.23.4 + + '@babel/code-frame@7.23.5': + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.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.23.5': {} + + '@babel/compat-data@7.24.4': {} + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.24.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.26.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + convert-source-map: 2.0.0 + debug: 4.4.0(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.23.10(@babel/core@7.26.9)(eslint@8.57.0)': + dependencies: + '@babel/core': 7.26.9 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.0 + eslint-visitor-keys: 2.1.0 + semver: 7.7.1 + + '@babel/eslint-parser@7.23.10(@babel/core@7.26.9)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.26.9 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 7.7.1 + + '@babel/generator@7.23.6': + dependencies: + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/generator@7.26.9': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-compilation-targets@7.23.6': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 7.7.1 + + '@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: 7.7.1 + + '@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.26.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 7.7.1 + + '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + semver: 7.7.1 + + '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + semver: 7.7.1 + + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.26.9 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 7.7.1 + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 7.7.1 + + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-member-expression-to-functions@7.24.5': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/helper-module-transforms@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-plugin-utils@7.24.0': {} + + '@babel/helper-plugin-utils@7.24.5': {} + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + + '@babel/helper-replace-supers@7.22.20(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-replace-supers@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-split-export-declaration@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-string-parser@7.24.1': {} + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.24.5': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.22.20': + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/helpers@7.24.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/highlight@7.23.4': + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.24.8': + dependencies: + '@babel/types': 7.24.5 + + '@babel/parser@7.26.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.26.9) + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.0) + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.26.9) + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-proposal-decorators@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-decorators': 7.24.0(@babel/core@7.26.9) + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-decorators@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) + + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) + + '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.9) + + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.9) + + '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.9) + + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.9) + + '@babel/plugin-transform-classes@7.23.8(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.26.9) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 + + '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 + + '@babel/plugin-transform-classes@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.9) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 + + '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 + + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 + + '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.26.9) + + '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-literals@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) + + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) + + '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.24.5 + + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 + + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 + + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + + '@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.26.9) + + '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.0) + + '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.26.9) + + '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.26.9) + + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.9) + + '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + + '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + + '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) + + '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + + '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) + + '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.9) + + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.26.9) + '@babel/types': 7.24.5 + + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0) + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.9) + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-runtime@7.24.0(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.0) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-runtime@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.26.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.26.9) + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-spread@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.26.9) + + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/preset-env@7.24.0(@babel/core@7.26.9)': + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.26.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.26.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.26.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.26.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.9) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.26.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.26.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.9) + babel-plugin-polyfill-corejs2: 0.4.9(@babel/core@7.26.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.26.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.26.9) + core-js-compat: 3.36.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-env@7.24.5(@babel/core@7.24.0)': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.0) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.0) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.0) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.0) + core-js-compat: 3.37.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-env@7.24.5(@babel/core@7.26.9)': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.26.9) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.26.9) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.9) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.26.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.9) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.9) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.26.9) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.9) + core-js-compat: 3.37.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.5 + esutils: 2.0.3 + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.5 + esutils: 2.0.3 + + '@babel/preset-react@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.26.9) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.26.9) + + '@babel/preset-react@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.0) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.0) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.24.0) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-react@7.24.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.26.9) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.26.9) + + '@babel/preset-typescript@7.21.4(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.26.9) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.26.9) + + '@babel/preset-typescript@7.24.7(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.0) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime-corejs3@7.25.6': + dependencies: + core-js-pure: 3.36.0 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.24.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.24.0': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.5 + + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/traverse@7.24.0(supports-color@5.5.0)': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.5 + debug: 4.4.0(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.4.0(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + + '@babel/types@7.24.5': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@babel/types@7.26.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@baiducloud/qianfan@0.1.9(@babel/core@7.26.9)(encoding@0.1.13)': + dependencies: + '@babel/preset-react': 7.24.7(@babel/core@7.26.9) + '@rollup/plugin-inject': 5.0.5(rollup@3.29.4) + '@rollup/plugin-json': 6.1.0(rollup@3.29.4) + '@types/node-fetch': 2.6.11 + async-mutex: 0.5.0 + bottleneck: 2.19.5 + crypto-js: 4.2.0 + dotenv: 16.4.7 + express: 4.21.2 + node-fetch: 2.7.0(encoding@0.1.13) + rollup: 3.29.4 + typescript: 5.5.2 + web-streams-polyfill: 4.1.0 + transitivePeerDependencies: + - '@babel/core' + - encoding + - supports-color + + '@balena/dockerignore@1.0.2': {} + + '@bcoe/v8-coverage@0.2.3': {} + + '@browserbasehq/sdk@2.3.0(encoding@0.1.13)': + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@browserbasehq/stagehand@1.12.0(@playwright/test@1.50.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.5)(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(utf-8-validate@6.0.4)(zod@3.22.4)': + dependencies: + '@anthropic-ai/sdk': 0.27.3(encoding@0.1.13) + '@browserbasehq/sdk': 2.3.0(encoding@0.1.13) + '@playwright/test': 1.50.1 + deepmerge: 4.3.1 + dotenv: 16.4.5 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@cfworker/json-schema@4.1.1': {} + + '@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1)': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + '@lezer/common': 1.2.1 + + '@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.3 + '@lezer/common': 1.2.1 + + '@codemirror/commands@6.3.3': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + '@lezer/common': 1.2.1 + + '@codemirror/commands@6.5.0': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.3 + '@lezer/common': 1.2.1 + + '@codemirror/lang-javascript@6.2.2': + dependencies: + '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1) + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + '@lezer/common': 1.2.1 + '@lezer/javascript': 1.4.13 + + '@codemirror/lang-json@6.0.1': + dependencies: + '@codemirror/language': 6.10.1 + '@lezer/json': 1.0.2 + + '@codemirror/language@6.10.1': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + style-mod: 4.1.2 + + '@codemirror/lint@6.5.0': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + crelt: 1.0.6 + + '@codemirror/search@6.5.6': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.3 + crelt: 1.0.6 + + '@codemirror/state@6.4.1': {} + + '@codemirror/theme-one-dark@6.1.2': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.3 + '@lezer/highlight': 1.2.0 + + '@codemirror/view@6.25.1': + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@codemirror/view@6.26.3': + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@colors/colors@1.5.0': + optional: true + + '@colors/colors@1.6.0': {} + + '@contentful/app-sdk@4.29.0': + dependencies: + contentful-management: 10.46.4 + transitivePeerDependencies: + - debug + + '@contentful/content-source-maps@0.6.1': + dependencies: + '@vercel/stega': 0.1.2 + json-pointer: 0.6.2 + + '@contentful/rich-text-from-markdown@15.18.8': + dependencies: + '@contentful/rich-text-types': 16.8.3 + lodash: 4.17.21 + remark-gfm: 1.0.0 + remark-parse: 9.0.0 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + + '@contentful/rich-text-plain-text-renderer@16.2.8': + dependencies: + '@contentful/rich-text-types': 16.8.3 + + '@contentful/rich-text-types@16.8.3': {} + + '@couchbase/couchbase-darwin-arm64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-darwin-x64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-linux-arm64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-linux-x64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-linuxmusl-arm64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-linuxmusl-x64-napi@4.4.1': + optional: true + + '@couchbase/couchbase-win32-x64-napi@4.4.1': + optional: true + + '@crawlee/types@3.8.1': + dependencies: + tslib: 2.6.2 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@csstools/normalize.css@12.1.1': {} + + '@csstools/postcss-cascade-layers@1.1.1(postcss@8.4.21)': + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + '@csstools/postcss-color-function@1.1.1(postcss@8.4.21)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-hwb-function@1.0.2(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-ic-unit@1.0.1(postcss@8.4.21)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.21)': + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + '@csstools/postcss-nested-calc@1.0.0(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@1.1.1(postcss@8.4.21)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-unset-value@1.0.2(postcss@8.4.21)': + dependencies: + postcss: 8.4.21 + + '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@cypress/react18@2.0.1(@types/react-dom@18.2.21)(@types/react@18.2.65)(cypress@12.17.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@types/react-dom': 18.2.21 + cypress: 12.17.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 + + '@cypress/request@2.88.12': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.10.4 + safe-buffer: 5.2.1 + tough-cookie: 4.1.3 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + + '@cypress/request@3.0.1': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.10.4 + safe-buffer: 5.2.1 + tough-cookie: 4.1.3 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@datastax/astra-db-ts@1.5.0': + dependencies: + fetch-h2: 3.0.2 + safe-stable-stringify: 2.4.3 + typed-emitter: 2.1.0 + uuidv7: 0.6.3 + + '@discoveryjs/json-ext@0.5.7': {} + + '@docsearch/css@3.6.1': {} + + '@docsearch/react@3.6.1(@algolia/client-search@4.24.0)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)': + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.1 + algoliasearch: 4.24.0 + optionalDependencies: + '@types/react': 18.2.65 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + search-insights: 2.17.1 + transitivePeerDependencies: + - '@algolia/client-search' + + '@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@babel/core': 7.24.0 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.24.0) + '@babel/preset-env': 7.24.5(@babel/core@7.24.0) + '@babel/preset-react': 7.24.7(@babel/core@7.24.0) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.0) + '@babel/runtime': 7.24.0 + '@babel/runtime-corejs3': 7.25.6 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@docusaurus/cssnano-preset': 3.5.2 + '@docusaurus/logger': 3.5.2 + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@mdx-js/react': 3.0.1(@types/react@18.2.65)(react@18.2.0) + autoprefixer: 10.4.14(postcss@8.4.39) + babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + clean-css: 5.3.3 + cli-table3: 0.6.4 + combine-promises: 1.2.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.90.3) + core-js: 3.36.0 + css-loader: 6.10.0(webpack@5.90.3) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.90.3) + cssnano: 6.1.2(postcss@8.4.39) + del: 6.1.1 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + eval: 0.1.8 + file-loader: 6.2.0(webpack@5.90.3) + fs-extra: 11.2.0 + html-minifier-terser: 7.2.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.0(webpack@5.90.3) + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.8.1(webpack@5.90.3) + p-map: 4.0.0 + postcss: 8.4.39 + postcss-loader: 7.3.4(postcss@8.4.39)(typescript@5.5.2)(webpack@5.90.3) + prompts: 2.4.2 + react: 18.2.0 + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3) + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.2.0))(webpack@5.90.3) + react-router: 5.3.4(react@18.2.0) + react-router-config: 5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) + rtl-detect: 1.1.2 + semver: 7.7.1 + serve-handler: 6.1.5 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.10(webpack@5.90.3) + tslib: 2.6.2 + update-notifier: 6.0.2 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) + webpack: 5.90.3 + webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.8) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3) + webpack-merge: 5.10.0 + webpackbar: 5.0.2(webpack@5.90.3) + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/cssnano-preset@3.5.2': + dependencies: + cssnano-preset-advanced: 6.1.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-sort-media-queries: 5.2.0(postcss@8.4.39) + tslib: 2.6.2 + + '@docusaurus/logger@3.5.2': + dependencies: + chalk: 4.1.2 + tslib: 2.6.2 + + '@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/logger': 3.5.2 + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@mdx-js/mdx': 3.0.1 + '@slorber/remark-comment': 1.0.0 + escape-html: 1.0.3 + estree-util-value-to-estree: 3.1.2 + file-loader: 6.2.0(webpack@5.90.3) + fs-extra: 11.2.0 + image-size: 1.1.1 + mdast-util-mdx: 3.0.0 + mdast-util-to-string: 4.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehype-raw: 7.0.0 + remark-directive: 3.0.0 + remark-emoji: 4.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + stringify-object: 3.3.0 + tslib: 2.6.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) + vfile: 6.0.1 + webpack: 5.90.3 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/module-type-aliases@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/history': 4.7.11 + '@types/react': 18.2.65 + '@types/react-router-config': 5.0.11 + '@types/react-router-dom': 5.3.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 2.0.5(react@18.2.0) + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/logger': 3.5.2 + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 11.2.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + reading-time: 1.5.0 + srcset: 4.0.0 + tslib: 2.6.2 + unist-util-visit: 5.0.0 + utility-types: 3.11.0 + webpack: 5.90.3 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/logger': 3.5.2 + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.2.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + utility-types: 3.11.0 + webpack: 5.90.3 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + webpack: 5.90.3 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.5.0(react@18.2.0) + tslib: 2.6.2 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@types/gtag.js': 0.0.12 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/logger': 3.5.2 + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + sitemap: 7.1.2 + tslib: 2.6.2 + transitivePeerDependencies: + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/preset-classic@3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-classic': 3.5.2(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2) + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@algolia/client-search' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/react-loadable@6.0.0(react@18.2.0)': + dependencies: + '@types/react': 18.2.65 + react: 18.2.0 + + '@docusaurus/theme-classic@3.5.2(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-translations': 3.5.2 + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@mdx-js/react': 3.0.1(@types/react@18.2.65)(react@18.2.0) + clsx: 2.1.0 + copy-text-to-clipboard: 3.2.0 + infima: 0.2.0-alpha.44 + lodash: 4.17.21 + nprogress: 0.2.0 + postcss: 8.4.39 + prism-react-renderer: 2.4.0(react@18.2.0) + prismjs: 1.29.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) + rtlcss: 4.3.0 + tslib: 2.6.2 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2)': + dependencies: + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@types/history': 4.7.11 + '@types/react': 18.2.65 + '@types/react-router-config': 5.0.11 + clsx: 2.1.0 + parse-numeric-range: 1.3.0 + prism-react-renderer: 2.4.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1)(typescript@5.5.2)': + dependencies: + '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.17.1) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/logger': 3.5.2 + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0))(bufferutil@4.0.8)(eslint@8.57.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2))(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.2) + '@docusaurus/theme-translations': 3.5.2 + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + algoliasearch: 4.24.0 + algoliasearch-helper: 3.22.4(algoliasearch@4.24.0) + clsx: 2.1.0 + eta: 2.2.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/types' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@docusaurus/theme-translations@3.5.2': + dependencies: + fs-extra: 11.2.0 + tslib: 2.6.2 + + '@docusaurus/tsconfig@3.5.2': {} + + '@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@mdx-js/mdx': 3.0.1 + '@types/history': 4.7.11 + '@types/react': 18.2.65 + commander: 5.1.0 + joi: 17.12.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + utility-types: 3.11.0 + webpack: 5.90.3 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-common@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': + dependencies: + tslib: 2.6.2 + optionalDependencies: + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + '@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2)': + dependencies: + '@docusaurus/logger': 3.5.2 + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + fs-extra: 11.2.0 + joi: 17.12.2 + js-yaml: 4.1.0 + lodash: 4.17.21 + tslib: 2.6.2 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.5.2)': + dependencies: + '@docusaurus/logger': 3.5.2 + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@svgr/webpack': 8.1.0(typescript@5.5.2) + escape-string-regexp: 4.0.0 + file-loader: 6.2.0(webpack@5.90.3) + fs-extra: 11.2.0 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + jiti: 1.21.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.5 + prompts: 2.4.2 + resolve-pathname: 3.0.0 + shelljs: 0.8.5 + tslib: 2.6.2 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3) + utility-types: 3.11.0 + webpack: 5.90.3 + optionalDependencies: + '@docusaurus/types': 3.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@dqbd/tiktoken@1.0.13': {} + + '@e2b/code-interpreter@0.0.5(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + e2b: 0.16.1 + isomorphic-ws: 5.0.0(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@elastic/elasticsearch@8.12.2': + dependencies: + '@elastic/transport': 8.4.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + '@elastic/transport@8.4.1': + dependencies: + debug: 4.3.4(supports-color@8.1.1) + hpagent: 1.2.0 + ms: 2.1.3 + secure-json-parse: 2.7.0 + tslib: 2.6.2 + undici: 5.28.3 + transitivePeerDependencies: + - supports-color + + '@emotion/babel-plugin@11.11.0': + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@babel/runtime': 7.24.0 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + + '@emotion/cache@11.11.0': + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + + '@emotion/hash@0.9.1': {} + + '@emotion/is-prop-valid@0.8.8': + dependencies: + '@emotion/memoize': 0.7.4 + optional: true + + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.7.4': + optional: true + + '@emotion/memoize@0.8.1': {} + + '@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@emotion/serialize@1.1.3': + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + + '@emotion/sheet@1.2.2': {} + + '@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.2 + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@emotion/stylis@0.8.5': {} + + '@emotion/unitless@0.7.5': {} + + '@emotion/unitless@0.8.1': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@emotion/utils@1.2.1': {} + + '@emotion/weak-memoize@0.3.1': {} - '@esbuild/linux-mips64el@0.17.19': - optional: true + '@esbuild-kit/cjs-loader@2.4.4': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.6 - '@esbuild/linux-mips64el@0.18.20': - optional: true + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 - '@esbuild/linux-mips64el@0.19.12': - optional: true + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.6 - '@esbuild/linux-ppc64@0.17.19': - optional: true + '@esbuild/aix-ppc64@0.19.12': + optional: true - '@esbuild/linux-ppc64@0.18.20': - optional: true + '@esbuild/android-arm64@0.17.19': + optional: true - '@esbuild/linux-ppc64@0.19.12': - optional: true + '@esbuild/android-arm64@0.18.20': + optional: true - '@esbuild/linux-riscv64@0.17.19': - optional: true + '@esbuild/android-arm64@0.19.12': + optional: true - '@esbuild/linux-riscv64@0.18.20': - optional: true + '@esbuild/android-arm@0.17.19': + optional: true - '@esbuild/linux-riscv64@0.19.12': - optional: true + '@esbuild/android-arm@0.18.20': + optional: true - '@esbuild/linux-s390x@0.17.19': - optional: true + '@esbuild/android-arm@0.19.12': + optional: true - '@esbuild/linux-s390x@0.18.20': - optional: true + '@esbuild/android-x64@0.17.19': + optional: true - '@esbuild/linux-s390x@0.19.12': - optional: true + '@esbuild/android-x64@0.18.20': + optional: true - '@esbuild/linux-x64@0.17.19': - optional: true + '@esbuild/android-x64@0.19.12': + optional: true - '@esbuild/linux-x64@0.18.20': - optional: true + '@esbuild/darwin-arm64@0.17.19': + optional: true - '@esbuild/linux-x64@0.19.12': - optional: true + '@esbuild/darwin-arm64@0.18.20': + optional: true - '@esbuild/netbsd-x64@0.17.19': - optional: true + '@esbuild/darwin-arm64@0.19.12': + optional: true - '@esbuild/netbsd-x64@0.18.20': - optional: true + '@esbuild/darwin-x64@0.17.19': + optional: true - '@esbuild/netbsd-x64@0.19.12': - optional: true + '@esbuild/darwin-x64@0.18.20': + optional: true - '@esbuild/openbsd-x64@0.17.19': - optional: true + '@esbuild/darwin-x64@0.19.12': + optional: true - '@esbuild/openbsd-x64@0.18.20': - optional: true + '@esbuild/freebsd-arm64@0.17.19': + optional: true - '@esbuild/openbsd-x64@0.19.12': - optional: true + '@esbuild/freebsd-arm64@0.18.20': + optional: true - '@esbuild/sunos-x64@0.17.19': - optional: true + '@esbuild/freebsd-arm64@0.19.12': + optional: true - '@esbuild/sunos-x64@0.18.20': - optional: true + '@esbuild/freebsd-x64@0.17.19': + optional: true - '@esbuild/sunos-x64@0.19.12': - optional: true + '@esbuild/freebsd-x64@0.18.20': + optional: true - '@esbuild/win32-arm64@0.17.19': - optional: true + '@esbuild/freebsd-x64@0.19.12': + optional: true - '@esbuild/win32-arm64@0.18.20': - optional: true + '@esbuild/linux-arm64@0.17.19': + optional: true - '@esbuild/win32-arm64@0.19.12': - optional: true + '@esbuild/linux-arm64@0.18.20': + optional: true - '@esbuild/win32-ia32@0.17.19': - optional: true + '@esbuild/linux-arm64@0.19.12': + optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true + '@esbuild/linux-arm@0.17.19': + optional: true - '@esbuild/win32-ia32@0.19.12': - optional: true + '@esbuild/linux-arm@0.18.20': + optional: true - '@esbuild/win32-x64@0.17.19': - optional: true + '@esbuild/linux-arm@0.19.12': + optional: true - '@esbuild/win32-x64@0.18.20': - optional: true + '@esbuild/linux-ia32@0.17.19': + optional: true - '@esbuild/win32-x64@0.19.12': - optional: true + '@esbuild/linux-ia32@0.18.20': + optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.37.0)': - dependencies: - eslint: 8.37.0 - eslint-visitor-keys: 3.4.3 + '@esbuild/linux-ia32@0.19.12': + optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 + '@esbuild/linux-loong64@0.17.19': + optional: true - '@eslint-community/regexpp@4.10.0': {} + '@esbuild/linux-loong64@0.18.20': + optional: true - '@eslint/eslintrc@0.4.3': - dependencies: - ajv: 6.12.6 - debug: 4.3.6(supports-color@5.5.0) - espree: 7.3.1 - globals: 13.24.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-loong64@0.19.12': + optional: true - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.6(supports-color@5.5.0) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + '@esbuild/linux-mips64el@0.17.19': + optional: true - '@eslint/js@8.37.0': {} + '@esbuild/linux-mips64el@0.18.20': + optional: true - '@eslint/js@8.57.0': {} + '@esbuild/linux-mips64el@0.19.12': + optional: true - '@exodus/schemasafe@1.3.0': {} + '@esbuild/linux-ppc64@0.17.19': + optional: true - '@fastify/busboy@2.1.1': {} + '@esbuild/linux-ppc64@0.18.20': + optional: true - '@floating-ui/core@1.6.0': - dependencies: - '@floating-ui/utils': 0.2.1 + '@esbuild/linux-ppc64@0.19.12': + optional: true - '@floating-ui/dom@1.6.3': - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@esbuild/linux-riscv64@0.17.19': + optional: true - '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.6.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@esbuild/linux-riscv64@0.18.20': + optional: true - '@floating-ui/utils@0.2.1': {} + '@esbuild/linux-riscv64@0.19.12': + optional: true - '@gar/promisify@1.1.3': {} + '@esbuild/linux-s390x@0.17.19': + optional: true - '@getzep/zep-cloud@1.0.7(@langchain/core@0.2.18)(encoding@0.1.13)(langchain@0.2.11)': - dependencies: - form-data: 4.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - qs: 6.11.2 - url-join: 4.0.1 - zod: 3.23.8 - optionalDependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - langchain: 0.2.11(lcaakvik4gok2sgy65marre3ge) - transitivePeerDependencies: - - encoding - - '@getzep/zep-js@0.9.0': - dependencies: - '@supercharge/promise-pool': 3.1.1 - semver: 7.6.0 - typescript: 5.5.2 - - '@gomomento/generated-types@0.106.1(encoding@0.1.13)': - dependencies: - '@grpc/grpc-js': 1.10.0 - google-protobuf: 3.21.2 - grpc-tools: 1.12.4(encoding@0.1.13) - protoc-gen-ts: 0.8.7 - transitivePeerDependencies: - - encoding - - supports-color - - '@gomomento/sdk-core@1.68.1': - dependencies: - buffer: 6.0.3 - jwt-decode: 3.1.2 - - '@gomomento/sdk@1.68.1(encoding@0.1.13)': - dependencies: - '@gomomento/generated-types': 0.106.1(encoding@0.1.13) - '@gomomento/sdk-core': 1.68.1 - '@grpc/grpc-js': 1.10.0 - '@types/google-protobuf': 3.15.10 - google-protobuf: 3.21.2 - jwt-decode: 3.1.2 - transitivePeerDependencies: - - encoding - - supports-color - - '@google-ai/generativelanguage@2.6.0(encoding@0.1.13)': - dependencies: - google-gax: 4.3.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - '@google-cloud/vertexai@1.1.0(encoding@0.1.13)': - dependencies: - google-auth-library: 9.6.3(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - '@google/generative-ai@0.15.0': {} - - '@graphql-typed-document-node/core@3.2.0(graphql@16.8.1)': - dependencies: - graphql: 16.8.1 - - '@grpc/grpc-js@1.10.0': - dependencies: - '@grpc/proto-loader': 0.7.10 - '@types/node': 18.15.11 - - '@grpc/grpc-js@1.10.10': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/grpc-js@1.10.8': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/grpc-js@1.8.17': - dependencies: - '@grpc/proto-loader': 0.7.7 - '@types/node': 18.15.11 - - '@grpc/proto-loader@0.7.10': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.2.6 - yargs: 17.7.2 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.3.2 - yargs: 17.7.2 - - '@grpc/proto-loader@0.7.7': - dependencies: - '@types/long': 4.0.2 - lodash.camelcase: 4.3.0 - long: 4.0.0 - protobufjs: 7.2.4 - yargs: 17.7.2 - - '@hapi/hoek@9.3.0': {} - - '@hapi/topo@5.1.0': - dependencies: - '@hapi/hoek': 9.3.0 - - '@hookform/error-message@2.0.1(react-dom@18.2.0(react@18.2.0))(react-hook-form@7.52.2(react@18.2.0))(react@18.2.0)': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-hook-form: 7.52.2(react@18.2.0) - - '@httptoolkit/websocket-stream@6.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@types/ws': 8.5.10 - duplexify: 3.7.1 - inherits: 2.0.4 - isomorphic-ws: 4.0.1(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@huggingface/inference@1.8.0': {} - - '@huggingface/inference@2.6.4': {} - - '@huggingface/inference@2.7.0': - dependencies: - '@huggingface/tasks': 0.10.6 - - '@huggingface/jinja@0.2.2': {} - - '@huggingface/tasks@0.10.6': {} - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.6(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/config-array@0.5.0': - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.6(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@1.2.1': {} - - '@humanwhocodes/object-schema@2.0.2': {} - - '@icons/material@0.2.4(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@ioredis/commands@1.2.0': {} - - '@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 - - '@isaacs/string-locale-compare@1.1.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@27.5.1': - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - - '@jest/console@28.1.3': - dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.15.11 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.15.11 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2))': - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 27.5.1 - jest-config: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.5 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5))': - 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': 18.15.11 - 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - 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.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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': 18.15.11 - 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@27.5.1': - dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - jest-mock: 27.5.1 - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.15.11 - 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@27.5.1': - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.15.11 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.15.11 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@27.5.1': - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - - '@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@27.5.1': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - 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': 18.15.11 - 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@28.1.3': - dependencies: - '@sinclair/typebox': 0.24.51 - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@27.5.1': - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - - '@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@27.5.1': - dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-result@28.1.3': - dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@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@27.5.1': - dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color - - '@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@27.5.1': - dependencies: - '@babel/core': 7.24.0 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.24.0 - '@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.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@27.5.1': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 18.15.11 - '@types/yargs': 16.0.9 - chalk: 4.1.2 - - '@jest/types@28.1.3': - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 18.15.11 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - - '@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': 18.15.11 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@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.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@js-sdsl/ordered-map@4.4.2': {} - - '@ladle/react-context@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@ladle/react@2.5.1(@types/node@18.15.11)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(terser@5.29.1)(typescript@5.0.3)': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@babel/types': 7.24.5 - '@ladle/react-context': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)) - axe-core: 4.8.4 - boxen: 7.1.1 - chokidar: 3.6.0 - classnames: 2.5.1 - commander: 9.5.0 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - default-browser: 3.1.0 - express: 4.18.3 - get-port: 6.1.2 - globby: 13.2.2 - history: 5.3.0 - lodash.merge: 4.6.2 - open: 8.4.2 - prism-react-renderer: 1.3.5(react@18.2.0) - prop-types: 15.8.1 - query-string: 8.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-frame-component: 5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-inspector: 6.0.2(react@18.2.0) - vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) - vite-tsconfig-paths: 4.3.1(typescript@5.0.3)(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - - '@ladle/react@2.5.1(@types/node@20.12.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5)': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@babel/types': 7.24.5 - '@ladle/react-context': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@20.12.12)(sass@1.71.1)) - axe-core: 4.8.4 - boxen: 7.1.1 - chokidar: 3.6.0 - classnames: 2.5.1 - commander: 9.5.0 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - default-browser: 3.1.0 - express: 4.18.3 - get-port: 6.1.2 - globby: 13.2.2 - history: 5.3.0 - lodash.merge: 4.6.2 - open: 8.4.2 - prism-react-renderer: 1.3.5(react@18.2.0) - prop-types: 15.8.1 - query-string: 8.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-frame-component: 5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-inspector: 6.0.2(react@18.2.0) - vite: 4.5.2(@types/node@20.12.12)(sass@1.71.1) - vite-tsconfig-paths: 4.3.1(typescript@4.9.5)(vite@4.5.2(@types/node@20.12.12)(sass@1.71.1)) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - - '@langchain/anthropic@0.2.1(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@anthropic-ai/sdk': 0.21.1(encoding@0.1.13) - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - fast-xml-parser: 4.3.5 - zod: 3.22.4 - zod-to-json-schema: 3.22.5(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - openai - - '@langchain/aws@0.0.9(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@aws-sdk/client-bedrock-agent-runtime': 3.625.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-bedrock-runtime': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-kendra': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-node': 3.624.0(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - - langchain - - openai - - '@langchain/cohere@0.0.7(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - cohere-ai: 7.10.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - langchain - - openai - - '@langchain/community@0.2.17(yfqvvifhmjhb4q5hisu4akm3p4)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - '@langchain/openai': 0.1.3(encoding@0.1.13)(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde)) - binary-extensions: 2.2.0 - expr-eval: 2.0.2 - flat: 5.0.2 - js-yaml: 4.1.0 - langchain: 0.2.3(nphj44k7dsxncfcpdkfznsprde) - langsmith: 0.1.32(@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - uuid: 9.0.1 - zod: 3.22.4 - zod-to-json-schema: 3.22.5(zod@3.22.4) - optionalDependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-bedrock-agent-runtime': 3.625.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-bedrock-runtime': 3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-kendra': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@datastax/astra-db-ts': 0.1.4 - '@elastic/elasticsearch': 8.12.2 - '@getzep/zep-cloud': 1.0.7(@langchain/core@0.2.18)(encoding@0.1.13)(langchain@0.2.11) - '@getzep/zep-js': 0.9.0 - '@gomomento/sdk': 1.68.1(encoding@0.1.13) - '@gomomento/sdk-core': 1.68.1 - '@google-ai/generativelanguage': 2.6.0(encoding@0.1.13) - '@huggingface/inference': 2.6.4 - '@mendable/firecrawl-js': 0.0.28 - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@opensearch-project/opensearch': 1.2.0 - '@pinecone-database/pinecone': 2.2.2 - '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) - '@smithy/eventstream-codec': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/signature-v4': 2.1.4 - '@smithy/util-utf8': 2.2.0 - '@supabase/postgrest-js': 1.9.2 - '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@upstash/redis': 1.22.1(encoding@0.1.13) - '@upstash/vector': 1.1.5 - '@xenova/transformers': 2.17.1 - '@zilliz/milvus2-sdk-node': 2.3.5 - apify-client: 2.9.3 - assemblyai: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - cheerio: 1.0.0-rc.12 - chromadb: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: 7.10.0(encoding@0.1.13) - couchbase: 4.3.1 - crypto-js: 4.2.0 - d3-dsv: 2.0.0 - faiss-node: 0.5.1 - google-auth-library: 9.6.3(encoding@0.1.13) - html-to-text: 9.0.5 - ignore: 5.3.1 - ioredis: 5.3.2 - jsdom: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) - lodash: 4.17.21 - lunary: 0.6.16(openai@4.51.0(encoding@0.1.13))(react@18.2.0) - mammoth: 1.7.0 - mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - mysql2: 3.9.2 - notion-to-md: 3.1.1(encoding@0.1.13) - pdf-parse: 1.1.1 - pg: 8.11.3 - playwright: 1.42.1 - portkey-ai: 0.1.16 - puppeteer: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) - redis: 4.6.13 - replicate: 0.31.1 - srt-parser-2: 1.2.3 - typeorm: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youtube-transcript: 1.2.1 - transitivePeerDependencies: - - '@gomomento/sdk-web' - - axios - - encoding - - fast-xml-parser - - handlebars - - openai - - peggy - - pyodide - - '@langchain/core@0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - ansi-styles: 5.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - js-tiktoken: 1.0.12 - langsmith: 0.1.39(@langchain/core@0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - ml-distance: 4.0.1 - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - langchain - - openai - - '@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13))': - dependencies: - ansi-styles: 5.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - js-tiktoken: 1.0.12 - langsmith: 0.1.39(@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - ml-distance: 4.0.1 - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - langchain - - openai - - '@langchain/exa@0.0.5(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - exa-js: 1.0.12(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - langchain - - openai - - '@langchain/google-common@0.0.20(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(zod@3.22.4)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - uuid: 10.0.0 - zod-to-json-schema: 3.23.1(zod@3.22.4) - transitivePeerDependencies: - - langchain - - openai - - zod - - '@langchain/google-gauth@0.0.19(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(zod@3.22.4)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/google-common': 0.0.20(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - google-auth-library: 8.9.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - langchain - - openai - - supports-color - - zod - - '@langchain/google-genai@0.0.22(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4)': - dependencies: - '@google/generative-ai': 0.15.0 - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - zod-to-json-schema: 3.23.1(zod@3.22.4) - transitivePeerDependencies: - - langchain - - openai - - zod - - '@langchain/google-vertexai@0.0.19(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/google-gauth': 0.0.19(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - openai - - supports-color - - zod - - '@langchain/groq@0.0.8(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/openai': 0.0.30(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge)) - groq-sdk: 0.3.2(encoding@0.1.13) - zod: 3.22.4 - zod-to-json-schema: 3.22.5(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - openai - - '@langchain/langgraph@0.0.22(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - uuid: 9.0.1 - transitivePeerDependencies: - - langchain - - openai - - '@langchain/mistralai@0.0.26(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@mistralai/mistralai': 0.4.0(encoding@0.1.13) - uuid: 10.0.0 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - langchain - - openai - - '@langchain/mongodb@0.0.1(gcp-metadata@5.3.0(encoding@0.1.13))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(socks@2.8.1)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - gcp-metadata - - kerberos - - langchain - - mongodb-client-encryption - - openai - - snappy - - socks - - '@langchain/ollama@0.0.2(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - ollama: 0.5.6 - uuid: 10.0.0 - transitivePeerDependencies: - - langchain - - openai - - '@langchain/openai@0.0.30(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - openai: 4.51.0(encoding@0.1.13) - zod: 3.22.4 - zod-to-json-schema: 3.22.5(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - '@langchain/openai@0.0.30(encoding@0.1.13)(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - openai: 4.51.0(encoding@0.1.13) - zod: 3.22.4 - zod-to-json-schema: 3.22.5(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - '@langchain/openai@0.1.3(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - openai: 4.51.0(encoding@0.1.13) - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - langchain - - '@langchain/openai@0.1.3(encoding@0.1.13)(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - openai: 4.51.0(encoding@0.1.13) - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - encoding - - langchain - - '@langchain/pinecone@0.0.3(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@pinecone-database/pinecone': 2.2.2 - flat: 5.0.2 - uuid: 9.0.1 - transitivePeerDependencies: - - langchain - - openai - - '@langchain/qdrant@0.0.5(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))(typescript@5.5.2)': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) - uuid: 9.0.1 - transitivePeerDependencies: - - langchain - - openai - - typescript - - '@langchain/textsplitters@0.0.1(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - transitivePeerDependencies: - - langchain - - openai - - '@langchain/textsplitters@0.0.1(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - js-tiktoken: 1.0.12 - transitivePeerDependencies: - - langchain - - openai - - '@langchain/weaviate@0.0.1(encoding@0.1.13)(graphql@16.8.1)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13))': - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - uuid: 9.0.1 - weaviate-ts-client: 2.1.1(encoding@0.1.13)(graphql@16.8.1) - transitivePeerDependencies: - - encoding - - graphql - - langchain - - openai - - '@leichtgewicht/ip-codec@2.0.4': {} - - '@lezer/common@1.2.1': {} - - '@lezer/highlight@1.2.0': - dependencies: - '@lezer/common': 1.2.1 - - '@lezer/javascript@1.4.13': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.0 - - '@lezer/json@1.0.2': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.0 - - '@lezer/lr@1.4.0': - dependencies: - '@lezer/common': 1.2.1 - - '@llamaindex/cloud@0.0.5(node-fetch@2.7.0(encoding@0.1.13))': - dependencies: - '@types/qs': 6.9.12 - form-data: 4.0.0 - js-base64: 3.7.7 - qs: 6.12.1 - optionalDependencies: - node-fetch: 2.7.0(encoding@0.1.13) - - '@llamaindex/env@0.1.3(@aws-crypto/sha256-js@5.2.0)(pathe@1.1.2)': - dependencies: - '@types/lodash': 4.17.4 - '@types/node': 20.12.12 - optionalDependencies: - '@aws-crypto/sha256-js': 5.2.0 - pathe: 1.1.2 - - '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': - dependencies: - detect-libc: 2.0.2 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@mdx-js/mdx@3.0.1': - dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-build-jsx: 3.0.1 - estree-util-is-identifier-name: 3.0.0 - estree-util-to-js: 2.0.0 - estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 - markdown-extensions: 2.0.0 - periscopic: 3.1.0 - remark-mdx: 3.0.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - source-map: 0.7.4 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - - '@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.2.65 - react: 18.2.0 - - '@mendable/firecrawl-js@0.0.28': - dependencies: - axios: 1.7.2(debug@4.3.6) - dotenv: 16.4.5 - uuid: 9.0.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - transitivePeerDependencies: - - debug - - '@mistralai/mistralai@0.1.3(encoding@0.1.13)': - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@mistralai/mistralai@0.2.0(encoding@0.1.13)': - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@mistralai/mistralai@0.4.0(encoding@0.1.13)': - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@monaco-editor/loader@1.4.0(monaco-editor@0.50.0)': - dependencies: - monaco-editor: 0.50.0 - state-local: 1.0.7 - - '@monaco-editor/react@4.6.0(monaco-editor@0.50.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@monaco-editor/loader': 1.4.0(monaco-editor@0.50.0) - monaco-editor: 0.50.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@mongodb-js/saslprep@1.1.5': - dependencies: - sparse-bitfield: 3.0.3 - - '@mui/base@5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) - '@popperjs/core': 2.11.8 - clsx: 2.1.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/base@5.0.0-beta.40(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/types': 7.2.14(@types/react@18.2.65) - '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) - '@popperjs/core': 2.11.8 - clsx: 2.1.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/core-downloads-tracker@5.15.12': {} - - '@mui/icons-material@5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/lab@5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/base': 5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) - clsx: 2.1.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - - '@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/base': 5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.12 - '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) - '@types/react-transition-group': 4.4.10 - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - - '@mui/private-theming@5.15.12(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) - prop-types: 15.8.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/styled-engine@5.15.11(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@emotion/cache': 11.11.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - - '@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/private-theming': 5.15.12(@types/react@18.2.65)(react@18.2.0) - '@mui/styled-engine': 5.15.11(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.65) - '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) - clsx: 2.1.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.2.0 - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@types/react': 18.2.65 - - '@mui/types@7.2.13(@types/react@18.2.65)': - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/types@7.2.14(@types/react@18.2.65)': - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/utils@5.15.0(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@types/prop-types': 15.7.11 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/utils@5.16.0(@types/react@18.2.65)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@types/prop-types': 15.7.11 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 - - '@mui/x-data-grid@6.8.0(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - reselect: 4.1.8 - transitivePeerDependencies: - - '@types/react' - - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.18.0(prisma@5.18.0))(next-auth@4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': - dependencies: - '@prisma/client': 5.18.0(prisma@5.18.0) - next-auth: 4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - - '@next/bundle-analyzer@13.5.6(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@next/env@14.2.5': {} - - '@next/eslint-plugin-next@13.2.4': - dependencies: - glob: 7.1.7 - - '@next/eslint-plugin-next@13.5.6': - dependencies: - glob: 7.1.7 - - '@next/swc-darwin-arm64@14.2.5': - optional: true - - '@next/swc-darwin-x64@14.2.5': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.5': - optional: true - - '@next/swc-linux-arm64-musl@14.2.5': - optional: true - - '@next/swc-linux-x64-gnu@14.2.5': - optional: true - - '@next/swc-linux-x64-musl@14.2.5': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.5': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.5': - optional: true - - '@next/swc-win32-x64-msvc@14.2.5': - optional: true - - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@notionhq/client@2.2.14(encoding@0.1.13)': - dependencies: - '@types/node-fetch': 2.6.2 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@npmcli/arborist@4.3.1': - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/map-workspaces': 2.0.4 - '@npmcli/metavuln-calculator': 2.0.0 - '@npmcli/move-file': 1.1.2 - '@npmcli/name-from-folder': 1.0.1 - '@npmcli/node-gyp': 1.0.3 - '@npmcli/package-json': 1.0.1 - '@npmcli/run-script': 2.0.0 - bin-links: 3.0.3 - cacache: 15.3.0 - common-ancestor-path: 1.0.1 - json-parse-even-better-errors: 2.3.1 - json-stringify-nice: 1.1.4 - mkdirp: 1.0.4 - mkdirp-infer-owner: 2.0.0 - npm-install-checks: 4.0.0 - npm-package-arg: 8.1.5 - npm-pick-manifest: 6.1.1 - npm-registry-fetch: 12.0.2 - pacote: 12.0.3 - parse-conflict-json: 2.0.2 - proc-log: 1.0.0 - promise-all-reject-late: 1.0.1 - promise-call-limit: 1.0.2 - read-package-json-fast: 2.0.3 - readdir-scoped-modules: 1.1.0 - rimraf: 3.0.2 - semver: 7.6.0 - ssri: 8.0.1 - treeverse: 1.0.4 - walk-up-path: 1.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/fs@1.1.1': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - - '@npmcli/fs@3.1.0': - dependencies: - semver: 7.6.0 - - '@npmcli/git@2.1.0': - dependencies: - '@npmcli/promise-spawn': 1.3.2 - lru-cache: 6.0.0 - mkdirp: 1.0.4 - npm-pick-manifest: 6.1.1 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - '@npmcli/git@4.1.0': - dependencies: - '@npmcli/promise-spawn': 6.0.2 - lru-cache: 7.18.3 - npm-pick-manifest: 8.0.2 - proc-log: 3.0.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.0 - which: 3.0.1 - transitivePeerDependencies: - - bluebird - - '@npmcli/installed-package-contents@1.0.7': - dependencies: - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - - '@npmcli/installed-package-contents@2.0.2': - dependencies: - npm-bundled: 3.0.0 - npm-normalize-package-bin: 3.0.1 - - '@npmcli/map-workspaces@2.0.4': - dependencies: - '@npmcli/name-from-folder': 1.0.1 - glob: 8.1.0 - minimatch: 5.1.6 - read-package-json-fast: 2.0.3 - - '@npmcli/metavuln-calculator@2.0.0': - dependencies: - cacache: 15.3.0 - json-parse-even-better-errors: 2.3.1 - pacote: 12.0.3 - semver: 7.6.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/move-file@1.1.2': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@npmcli/name-from-folder@1.0.1': {} - - '@npmcli/node-gyp@1.0.3': {} - - '@npmcli/node-gyp@3.0.0': {} - - '@npmcli/package-json@1.0.1': - dependencies: - json-parse-even-better-errors: 2.3.1 - - '@npmcli/promise-spawn@1.3.2': - dependencies: - infer-owner: 1.0.4 - - '@npmcli/promise-spawn@6.0.2': - dependencies: - which: 3.0.1 - - '@npmcli/run-script@2.0.0': - dependencies: - '@npmcli/node-gyp': 1.0.3 - '@npmcli/promise-spawn': 1.3.2 - node-gyp: 8.4.1 - read-package-json-fast: 2.0.3 - transitivePeerDependencies: - - bluebird - - supports-color - - '@npmcli/run-script@6.0.2': - dependencies: - '@npmcli/node-gyp': 3.0.0 - '@npmcli/promise-spawn': 6.0.2 - node-gyp: 9.4.1 - read-package-json-fast: 3.0.2 - which: 3.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - '@oclif/core@2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)': - dependencies: - '@types/cli-progress': 3.11.5 - ansi-escapes: 4.3.2 - ansi-styles: 4.3.0 - cardinal: 2.1.1 - chalk: 4.1.2 - clean-stack: 3.0.1 - cli-progress: 3.12.0 - debug: 4.3.6(supports-color@8.1.1) - ejs: 3.1.9 - get-package-type: 0.1.0 - globby: 11.1.0 - hyperlinker: 1.0.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - js-yaml: 3.14.1 - natural-orderby: 2.0.3 - object-treeify: 1.1.33 - password-prompt: 1.1.3 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - supports-color: 8.1.1 - supports-hyperlinks: 2.3.0 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - tslib: 2.6.2 - widest-line: 3.1.0 - wordwrap: 1.0.0 - wrap-ansi: 7.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - typescript - - '@oclif/core@3.27.0': - dependencies: - '@types/cli-progress': 3.11.5 - ansi-escapes: 4.3.2 - ansi-styles: 4.3.0 - cardinal: 2.1.1 - chalk: 4.1.2 - clean-stack: 3.0.1 - cli-progress: 3.12.0 - color: 4.2.3 - debug: 4.3.6(supports-color@8.1.1) - ejs: 3.1.10 - get-package-type: 0.1.0 - globby: 11.1.0 - hyperlinker: 1.0.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - js-yaml: 3.14.1 - minimatch: 9.0.4 - natural-orderby: 2.0.3 - object-treeify: 1.1.33 - password-prompt: 1.1.3 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - supports-color: 8.1.1 - supports-hyperlinks: 2.3.0 - widest-line: 3.1.0 - wordwrap: 1.0.0 - wrap-ansi: 7.0.0 - - '@oclif/plugin-help@5.2.20(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)': - dependencies: - '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - typescript - - '@oclif/plugin-not-found@2.4.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)': - dependencies: - '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - chalk: 4.1.2 - fast-levenshtein: 3.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - typescript - - '@oclif/plugin-warn-if-update-available@2.1.1(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)': - dependencies: - '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - chalk: 4.1.2 - debug: 4.3.6(supports-color@5.5.0) - http-call: 5.3.0 - lodash.template: 4.5.0 - semver: 7.6.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - supports-color - - typescript - - '@octokit/auth-token@2.5.0': - dependencies: - '@octokit/types': 6.41.0 - - '@octokit/core@3.6.0(encoding@0.1.13)': - dependencies: - '@octokit/auth-token': 2.5.0 - '@octokit/graphql': 4.8.0(encoding@0.1.13) - '@octokit/request': 5.6.3(encoding@0.1.13) - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/endpoint@6.0.12': - dependencies: - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@4.8.0(encoding@0.1.13)': - dependencies: - '@octokit/request': 5.6.3(encoding@0.1.13) - '@octokit/types': 6.41.0 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/openapi-types@12.11.0': {} - - '@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/types': 6.41.0 - - '@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - - '@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0(encoding@0.1.13))': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - - '@octokit/request-error@2.1.0': - dependencies: - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request@5.6.3(encoding@0.1.13)': - dependencies: - '@octokit/endpoint': 6.0.12 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/rest@18.12.0(encoding@0.1.13)': - dependencies: - '@octokit/core': 3.6.0(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - - '@opensearch-project/opensearch@1.2.0': - dependencies: - aws4: 1.12.0 - debug: 4.3.4(supports-color@8.1.1) - hpagent: 0.1.2 - ms: 2.1.3 - secure-json-parse: 2.7.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/api@1.9.0': {} - - '@panva/hkdf@1.2.1': {} - - '@petamoriken/float16@3.8.7': {} - - '@pinecone-database/pinecone@0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5))': - dependencies: - '@types/node': 18.15.11 - axios: 1.6.2(debug@4.3.4) - dotenv: 16.4.5 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - debug - - '@pinecone-database/pinecone@2.2.2': - dependencies: - '@sinclair/typebox': 0.29.6 - ajv: 8.13.0 - cross-fetch: 3.1.8(encoding@0.1.13) - encoding: 0.1.13 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.11.0)(type-fest@4.12.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)))': - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.36.0 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.5.2 - loader-utils: 2.0.4 - react-refresh: 0.11.0 - schema-utils: 3.3.0 - source-map: 0.7.4 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - optionalDependencies: - type-fest: 4.12.0 - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - - '@pnpm/config.env-replace@1.1.0': {} - - '@pnpm/network.ca-file@1.0.2': - dependencies: - graceful-fs: 4.2.10 - - '@pnpm/npm-conf@2.3.1': - dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 - - '@polka/url@1.0.0-next.25': {} - - '@popperjs/core@2.11.8': {} - - '@prisma/client@5.18.0(prisma@5.18.0)': - optionalDependencies: - prisma: 5.18.0 - - '@prisma/debug@5.18.0': {} - - '@prisma/debug@5.9.1': {} - - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': {} - - '@prisma/engines@5.18.0': - dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/fetch-engine': 5.18.0 - '@prisma/get-platform': 5.18.0 - - '@prisma/fetch-engine@5.18.0': - dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/get-platform': 5.18.0 - - '@prisma/generator-helper@5.9.1': - dependencies: - '@prisma/debug': 5.9.1 - - '@prisma/get-platform@5.18.0': - dependencies: - '@prisma/debug': 5.18.0 - - '@prisma/nextjs-monorepo-workaround-plugin@5.18.0': {} - - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - - '@puppeteer/browsers@0.5.0(typescript@4.9.5)': - dependencies: - debug: 4.3.4(supports-color@8.1.1) - extract-zip: 2.0.1 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - proxy-from-env: 1.1.0 - tar-fs: 2.1.1 - unbzip2-stream: 1.4.3 - yargs: 17.7.1 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - '@puppeteer/browsers@1.4.6(typescript@5.5.2)': - dependencies: - debug: 4.3.4(supports-color@8.1.1) - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.3.0 - tar-fs: 3.0.4 - unbzip2-stream: 1.4.3 - yargs: 17.7.1 - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@qdrant/js-client-rest@1.9.0(typescript@4.9.5)': - dependencies: - '@qdrant/openapi-typescript-fetch': 1.2.6 - '@sevinf/maybe': 0.5.0 - typescript: 4.9.5 - undici: 5.28.4 - optional: true - - '@qdrant/js-client-rest@1.9.0(typescript@5.5.2)': - dependencies: - '@qdrant/openapi-typescript-fetch': 1.2.6 - '@sevinf/maybe': 0.5.0 - typescript: 5.5.2 - undici: 5.28.4 - - '@qdrant/openapi-typescript-fetch@1.2.6': {} - - '@reactflow/background@11.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - classcat: 5.0.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@reactflow/controls@11.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - classcat: 5.0.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@reactflow/core@11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@types/d3': 7.4.3 - '@types/d3-drag': 3.0.7 - '@types/d3-selection': 3.0.10 - '@types/d3-zoom': 3.0.8 - classcat: 5.0.4 - d3-drag: 3.0.0 - d3-selection: 3.0.0 - d3-zoom: 3.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@reactflow/minimap@11.7.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/d3-selection': 3.0.10 - '@types/d3-zoom': 3.0.8 - classcat: 5.0.4 - d3-selection: 3.0.0 - d3-zoom: 3.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@reactflow/node-resizer@2.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - classcat: 5.0.4 - d3-drag: 3.0.0 - d3-selection: 3.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@reactflow/node-toolbar@1.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - classcat: 5.0.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@redis/bloom@1.2.0(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - - '@redis/client@1.5.14': - dependencies: - cluster-key-slot: 1.1.2 - generic-pool: 3.9.0 - yallist: 4.0.0 - - '@redis/graph@1.1.1(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - - '@redis/json@1.0.6(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - - '@redis/search@1.1.6(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - - '@redis/time-series@1.0.5(@redis/client@1.5.14)': - dependencies: - '@redis/client': 1.5.14 - - '@rollup/plugin-babel@5.3.1(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@2.79.1)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 - optionalDependencies: - '@types/babel__core': 7.20.5 - - '@rollup/plugin-babel@6.0.3(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@3.20.2)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@rollup/pluginutils': 5.1.0(rollup@3.20.2) - optionalDependencies: - '@types/babel__core': 7.20.5 - rollup: 3.20.2 - - '@rollup/plugin-babel@6.0.3(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@3.23.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.3 - '@rollup/pluginutils': 5.1.0(rollup@3.23.0) - optionalDependencies: - '@types/babel__core': 7.20.5 - rollup: 3.23.0 - - '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.78.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.27.0 - optionalDependencies: - rollup: 2.78.0 - - '@rollup/plugin-commonjs@25.0.8(rollup@3.23.0)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.23.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.10 - optionalDependencies: - rollup: 3.23.0 - - '@rollup/plugin-json@6.1.0(rollup@3.23.0)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.23.0) - optionalDependencies: - rollup: 3.23.0 - - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - rollup: 2.79.1 - - '@rollup/plugin-node-resolve@15.0.1(rollup@3.20.2)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.20.2) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 3.20.2 - - '@rollup/plugin-node-resolve@15.0.1(rollup@3.23.0)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.23.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 3.23.0 - - '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - magic-string: 0.25.9 - rollup: 2.79.1 - - '@rollup/plugin-terser@0.4.0(rollup@3.20.2)': - dependencies: - serialize-javascript: 6.0.2 - smob: 0.0.6 - terser: 5.29.1 - optionalDependencies: - rollup: 3.20.2 - - '@rollup/plugin-terser@0.4.0(rollup@3.23.0)': - dependencies: - serialize-javascript: 6.0.2 - smob: 0.0.6 - terser: 5.29.1 - optionalDependencies: - rollup: 3.23.0 - - '@rollup/plugin-typescript@11.0.0(rollup@3.20.2)(tslib@2.5.0)(typescript@5.0.3)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.20.2) - resolve: 1.22.8 - typescript: 5.0.3 - optionalDependencies: - rollup: 3.20.2 - tslib: 2.5.0 - - '@rollup/plugin-typescript@11.0.0(rollup@3.23.0)(tslib@2.6.2)(typescript@5.0.3)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.23.0) - resolve: 1.22.8 - typescript: 5.0.3 - optionalDependencies: - rollup: 3.23.0 - tslib: 2.6.2 - - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 - - '@rollup/pluginutils@5.1.0(rollup@2.78.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 2.78.0 - - '@rollup/pluginutils@5.1.0(rollup@3.20.2)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.20.2 - - '@rollup/pluginutils@5.1.0(rollup@3.23.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.23.0 - - '@rollup/rollup-android-arm-eabi@4.13.0': - optional: true - - '@rollup/rollup-android-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-x64@4.13.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.13.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.13.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.13.0': - optional: true - - '@rushstack/eslint-patch@1.7.2': {} - - '@selderee/plugin-htmlparser2@0.11.0': - dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - - '@sentry-internal/feedback@7.118.0': - dependencies: - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry-internal/replay-canvas@7.118.0': - dependencies: - '@sentry/core': 7.118.0 - '@sentry/replay': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry-internal/tracing@7.118.0': - dependencies: - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry/browser@7.118.0': - dependencies: - '@sentry-internal/feedback': 7.118.0 - '@sentry-internal/replay-canvas': 7.118.0 - '@sentry-internal/tracing': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/integrations': 7.118.0 - '@sentry/replay': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry/cli@1.77.3(encoding@0.1.13)': - dependencies: - https-proxy-agent: 5.0.1 - mkdirp: 0.5.6 - node-fetch: 2.7.0(encoding@0.1.13) - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - transitivePeerDependencies: - - encoding - - supports-color + '@esbuild/linux-s390x@0.18.20': + optional: true - '@sentry/core@7.118.0': - dependencies: - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 + '@esbuild/linux-s390x@0.19.12': + optional: true - '@sentry/integrations@7.118.0': - dependencies: - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - localforage: 1.10.0 + '@esbuild/linux-x64@0.17.19': + optional: true - '@sentry/nextjs@7.118.0(encoding@0.1.13)(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react@18.2.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': - dependencies: - '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) - '@sentry/core': 7.118.0 - '@sentry/integrations': 7.118.0 - '@sentry/node': 7.118.0 - '@sentry/react': 7.118.0(react@18.2.0) - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - '@sentry/vercel-edge': 7.118.0 - '@sentry/webpack-plugin': 1.21.0(encoding@0.1.13) - chalk: 3.0.0 - next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - react: 18.2.0 - resolve: 1.22.8 - rollup: 2.78.0 - stacktrace-parser: 0.1.10 - optionalDependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/node@7.118.0': - dependencies: - '@sentry-internal/tracing': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/integrations': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry/react@7.118.0(react@18.2.0)': - dependencies: - '@sentry/browser': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - - '@sentry/replay@7.118.0': - dependencies: - '@sentry-internal/tracing': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry/types@7.118.0': {} - - '@sentry/utils@7.118.0': - dependencies: - '@sentry/types': 7.118.0 - - '@sentry/vercel-edge@7.118.0': - dependencies: - '@sentry-internal/tracing': 7.118.0 - '@sentry/core': 7.118.0 - '@sentry/integrations': 7.118.0 - '@sentry/types': 7.118.0 - '@sentry/utils': 7.118.0 - - '@sentry/webpack-plugin@1.21.0(encoding@0.1.13)': - dependencies: - '@sentry/cli': 1.77.3(encoding@0.1.13) - webpack-sources: 3.2.3 - transitivePeerDependencies: - - encoding - - supports-color - - '@sevinf/maybe@0.5.0': {} - - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - - '@sigstore/bundle@1.1.0': - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - - '@sigstore/protobuf-specs@0.2.1': {} - - '@sigstore/sign@1.0.0': - dependencies: - '@sigstore/bundle': 1.1.0 - '@sigstore/protobuf-specs': 0.2.1 - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@1.0.3': - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - tuf-js: 1.1.7 - transitivePeerDependencies: - - supports-color - - '@sinclair/typebox@0.24.51': {} - - '@sinclair/typebox@0.27.8': {} - - '@sinclair/typebox@0.29.6': {} - - '@sindresorhus/is@4.6.0': {} - - '@sindresorhus/is@5.6.0': {} - - '@sinonjs/commons@1.8.6': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@sinonjs/fake-timers@8.1.0': - dependencies: - '@sinonjs/commons': 1.8.6 - - '@slack/logger@3.0.0': - dependencies: - '@types/node': 18.15.11 - - '@slack/types@2.12.0': {} - - '@slack/web-api@6.12.0': - dependencies: - '@slack/logger': 3.0.0 - '@slack/types': 2.12.0 - '@types/is-stream': 1.1.0 - '@types/node': 18.15.11 - axios: 1.7.2(debug@4.3.6) - eventemitter3: 3.1.2 - form-data: 2.5.1 - is-electron: 2.2.2 - is-stream: 1.1.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - transitivePeerDependencies: - - debug - - '@slorber/remark-comment@1.0.0': - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - - '@smithy/abort-controller@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/abort-controller@3.1.1': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/chunked-blob-reader-native@2.1.2': - dependencies: - '@smithy/util-base64': 2.2.0 - tslib: 2.6.2 - - '@smithy/chunked-blob-reader@2.1.1': - dependencies: - tslib: 2.6.2 - - '@smithy/config-resolver@2.1.5': - dependencies: - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - '@smithy/util-config-provider': 2.2.1 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@smithy/config-resolver@3.0.5': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 - - '@smithy/core@1.3.7': - dependencies: - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-retry': 2.1.6 - '@smithy/middleware-serde': 2.2.1 - '@smithy/protocol-http': 3.2.2 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@smithy/core@2.3.2': - dependencies: - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.14 - '@smithy/middleware-serde': 3.0.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@2.2.6': - dependencies: - '@smithy/node-config-provider': 2.2.5 - '@smithy/property-provider': 2.1.4 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@3.2.0': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - tslib: 2.6.2 - - '@smithy/eventstream-codec@2.1.4': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.11.0 - '@smithy/util-hex-encoding': 2.1.1 - tslib: 2.6.2 - - '@smithy/eventstream-codec@3.1.2': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 3.3.0 - '@smithy/util-hex-encoding': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-browser@2.1.4': - dependencies: - '@smithy/eventstream-serde-universal': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-browser@3.0.6': - dependencies: - '@smithy/eventstream-serde-universal': 3.0.5 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-config-resolver@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-config-resolver@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-node@2.1.4': - dependencies: - '@smithy/eventstream-serde-universal': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-node@3.0.5': - dependencies: - '@smithy/eventstream-serde-universal': 3.0.5 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-universal@2.1.4': - dependencies: - '@smithy/eventstream-codec': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-universal@3.0.5': - dependencies: - '@smithy/eventstream-codec': 3.1.2 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/fetch-http-handler@2.4.4': - dependencies: - '@smithy/protocol-http': 3.2.2 - '@smithy/querystring-builder': 2.1.4 - '@smithy/types': 2.11.0 - '@smithy/util-base64': 2.2.0 - tslib: 2.6.2 - - '@smithy/fetch-http-handler@3.2.4': - dependencies: - '@smithy/protocol-http': 4.1.0 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 - '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 - - '@smithy/hash-blob-browser@2.1.4': - dependencies: - '@smithy/chunked-blob-reader': 2.1.1 - '@smithy/chunked-blob-reader-native': 2.1.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/hash-node@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - '@smithy/util-buffer-from': 2.1.1 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/hash-node@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/hash-stream-node@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/invalid-dependency@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/invalid-dependency@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/is-array-buffer@2.1.1': - dependencies: - tslib: 2.6.2 - - '@smithy/is-array-buffer@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/md5-js@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/middleware-content-length@2.1.4': - dependencies: - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/middleware-content-length@3.0.5': - dependencies: - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/middleware-endpoint@2.4.6': - dependencies: - '@smithy/middleware-serde': 2.2.1 - '@smithy/node-config-provider': 2.2.5 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - '@smithy/url-parser': 2.1.4 - '@smithy/util-middleware': 2.1.4 - tslib: 2.6.2 - - '@smithy/middleware-endpoint@3.1.0': - dependencies: - '@smithy/middleware-serde': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 - - '@smithy/middleware-retry@2.1.6': - dependencies: - '@smithy/node-config-provider': 2.2.5 - '@smithy/protocol-http': 3.2.2 - '@smithy/service-error-classification': 2.1.4 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-retry': 2.1.4 - tslib: 2.6.2 - uuid: 8.3.2 - - '@smithy/middleware-retry@3.0.14': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/service-error-classification': 3.0.3 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 - tslib: 2.6.2 - uuid: 9.0.1 - - '@smithy/middleware-serde@2.2.1': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/middleware-serde@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/middleware-stack@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/middleware-stack@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/node-config-provider@2.2.5': - dependencies: - '@smithy/property-provider': 2.1.4 - '@smithy/shared-ini-file-loader': 2.3.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/node-config-provider@3.1.4': - dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/node-http-handler@2.4.2': - dependencies: - '@smithy/abort-controller': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/querystring-builder': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/node-http-handler@3.1.4': - dependencies: - '@smithy/abort-controller': 3.1.1 - '@smithy/protocol-http': 4.1.0 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/property-provider@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/property-provider@3.1.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/protocol-http@3.2.2': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/protocol-http@4.1.0': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/querystring-builder@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - '@smithy/util-uri-escape': 2.1.1 - tslib: 2.6.2 - - '@smithy/querystring-builder@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.2 - - '@smithy/querystring-parser@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/querystring-parser@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/service-error-classification@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - - '@smithy/service-error-classification@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - - '@smithy/shared-ini-file-loader@2.3.5': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/shared-ini-file-loader@3.1.4': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/signature-v4@2.1.4': - dependencies: - '@smithy/eventstream-codec': 2.1.4 - '@smithy/is-array-buffer': 2.1.1 - '@smithy/types': 2.11.0 - '@smithy/util-hex-encoding': 2.1.1 - '@smithy/util-middleware': 2.1.4 - '@smithy/util-uri-escape': 2.1.1 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/signature-v4@4.1.0': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-uri-escape': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/smithy-client@2.4.4': - dependencies: - '@smithy/middleware-endpoint': 2.4.6 - '@smithy/middleware-stack': 2.1.4 - '@smithy/protocol-http': 3.2.2 - '@smithy/types': 2.11.0 - '@smithy/util-stream': 2.1.4 - tslib: 2.6.2 - - '@smithy/smithy-client@3.1.12': - dependencies: - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-stack': 3.0.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.3 - tslib: 2.6.2 - - '@smithy/types@2.11.0': - dependencies: - tslib: 2.6.2 - - '@smithy/types@3.3.0': - dependencies: - tslib: 2.6.2 - - '@smithy/url-parser@2.1.4': - dependencies: - '@smithy/querystring-parser': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/url-parser@3.0.3': - dependencies: - '@smithy/querystring-parser': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/util-base64@2.2.0': - dependencies: - '@smithy/util-buffer-from': 2.1.1 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/util-base64@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-body-length-browser@2.1.1': - dependencies: - tslib: 2.6.2 - - '@smithy/util-body-length-browser@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-body-length-node@2.2.1': - dependencies: - tslib: 2.6.2 - - '@smithy/util-body-length-node@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-buffer-from@2.1.1': - dependencies: - '@smithy/is-array-buffer': 2.1.1 - tslib: 2.6.2 - - '@smithy/util-buffer-from@3.0.0': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-config-provider@2.2.1': - dependencies: - tslib: 2.6.2 - - '@smithy/util-config-provider@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-defaults-mode-browser@2.1.6': - dependencies: - '@smithy/property-provider': 2.1.4 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@smithy/util-defaults-mode-browser@3.0.14': - dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@smithy/util-defaults-mode-node@2.2.6': - dependencies: - '@smithy/config-resolver': 2.1.5 - '@smithy/credential-provider-imds': 2.2.6 - '@smithy/node-config-provider': 2.2.5 - '@smithy/property-provider': 2.1.4 - '@smithy/smithy-client': 2.4.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/util-defaults-mode-node@3.0.14': - dependencies: - '@smithy/config-resolver': 3.0.5 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.12 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@1.1.5': - dependencies: - '@smithy/node-config-provider': 2.2.5 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@2.0.5': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/util-hex-encoding@2.1.1': - dependencies: - tslib: 2.6.2 - - '@smithy/util-hex-encoding@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-middleware@2.1.4': - dependencies: - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/util-middleware@3.0.3': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/util-retry@2.1.4': - dependencies: - '@smithy/service-error-classification': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@smithy/util-retry@3.0.3': - dependencies: - '@smithy/service-error-classification': 3.0.3 - '@smithy/types': 3.3.0 - tslib: 2.6.2 - - '@smithy/util-stream@2.1.4': - dependencies: - '@smithy/fetch-http-handler': 2.4.4 - '@smithy/node-http-handler': 2.4.2 - '@smithy/types': 2.11.0 - '@smithy/util-base64': 2.2.0 - '@smithy/util-buffer-from': 2.1.1 - '@smithy/util-hex-encoding': 2.1.1 - '@smithy/util-utf8': 2.2.0 - tslib: 2.6.2 - - '@smithy/util-stream@3.1.3': - dependencies: - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/types': 3.3.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-uri-escape@2.1.1': - dependencies: - tslib: 2.6.2 - - '@smithy/util-uri-escape@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-utf8@2.2.0': - dependencies: - '@smithy/util-buffer-from': 2.1.1 - tslib: 2.6.2 - - '@smithy/util-utf8@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-waiter@2.1.4': - dependencies: - '@smithy/abort-controller': 2.1.4 - '@smithy/types': 2.11.0 - tslib: 2.6.2 - - '@socket.io/component-emitter@3.1.0': {} - - '@sqltools/formatter@1.2.5': {} - - '@supabase/functions-js@2.1.5': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/gotrue-js@2.62.2': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/node-fetch@2.6.15': - dependencies: - whatwg-url: 5.0.0 - - '@supabase/postgrest-js@1.9.2': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/realtime-js@2.9.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@supabase/node-fetch': 2.6.15 - '@types/phoenix': 1.6.4 - '@types/ws': 8.5.10 - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supabase/storage-js@2.5.5': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/supabase-js@2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - '@supabase/functions-js': 2.1.5 - '@supabase/gotrue-js': 2.62.2 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.9.2 - '@supabase/realtime-js': 2.9.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@supabase/storage-js': 2.5.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supercharge/promise-pool@3.1.1': {} - - '@surma/rollup-plugin-off-main-thread@2.2.3': - dependencies: - ejs: 3.1.9 - json5: 2.2.3 - magic-string: 0.25.9 - string.prototype.matchall: 4.0.10 - - '@svgr/babel-plugin-add-jsx-attribute@5.4.0': {} - - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': {} - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': {} - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': {} - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-svg-dynamic-title@5.4.0': {} - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-svg-em-dimensions@5.4.0': {} - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-transform-react-native-svg@5.4.0': {} - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-plugin-transform-svg-component@5.5.0': {} - - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - - '@svgr/babel-preset@5.5.0': - dependencies: - '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 - '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 - '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 - '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 - '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 - '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 - '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 - '@svgr/babel-plugin-transform-svg-component': 5.5.0 - - '@svgr/babel-preset@8.1.0(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.0) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.0) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.0) - - '@svgr/core@5.5.0': - dependencies: - '@svgr/plugin-jsx': 5.5.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - - '@svgr/core@8.1.0(typescript@4.9.5)': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.0) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@4.9.5) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/core@8.1.0(typescript@5.5.2)': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.0) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.5.2) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/hast-util-to-babel-ast@5.5.0': - dependencies: - '@babel/types': 7.24.5 - - '@svgr/hast-util-to-babel-ast@8.0.0': - dependencies: - '@babel/types': 7.25.6 - entities: 4.5.0 - - '@svgr/plugin-jsx@5.5.0': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-preset': 5.5.0 - '@svgr/hast-util-to-babel-ast': 5.5.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.0) - '@svgr/core': 8.1.0(typescript@4.9.5) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))': - dependencies: - '@babel/core': 7.24.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.0) - '@svgr/core': 8.1.0(typescript@5.5.2) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@svgr/plugin-svgo@5.5.0': - dependencies: - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 1.3.2 - - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5)': - dependencies: - '@svgr/core': 8.1.0(typescript@4.9.5) - cosmiconfig: 8.3.6(typescript@4.9.5) - deepmerge: 4.3.1 - svgo: 3.3.2 - transitivePeerDependencies: - - typescript - - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2)': - dependencies: - '@svgr/core': 8.1.0(typescript@5.5.2) - cosmiconfig: 8.3.6(typescript@5.5.2) - deepmerge: 4.3.1 - svgo: 3.3.2 - transitivePeerDependencies: - - typescript - - '@svgr/webpack@5.5.0': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@svgr/core': 5.5.0 - '@svgr/plugin-jsx': 5.5.0 - '@svgr/plugin-svgo': 5.5.0 - loader-utils: 2.0.4 - transitivePeerDependencies: - - supports-color - - '@svgr/webpack@8.1.0(typescript@4.9.5)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.24.0) - '@svgr/core': 8.1.0(typescript@4.9.5) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/webpack@8.1.0(typescript@5.5.2)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.24.0) - '@svgr/core': 8.1.0(typescript@5.5.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2) - transitivePeerDependencies: - - supports-color - - typescript - - '@swc/core-darwin-arm64@1.4.6': - optional: true - - '@swc/core-darwin-x64@1.4.6': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.4.6': - optional: true - - '@swc/core-linux-arm64-gnu@1.4.6': - optional: true - - '@swc/core-linux-arm64-musl@1.4.6': - optional: true - - '@swc/core-linux-x64-gnu@1.4.6': - optional: true - - '@swc/core-linux-x64-musl@1.4.6': - optional: true - - '@swc/core-win32-arm64-msvc@1.4.6': - optional: true - - '@swc/core-win32-ia32-msvc@1.4.6': - optional: true - - '@swc/core-win32-x64-msvc@1.4.6': - optional: true - - '@swc/core@1.4.6(@swc/helpers@0.5.5)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.5 - optionalDependencies: - '@swc/core-darwin-arm64': 1.4.6 - '@swc/core-darwin-x64': 1.4.6 - '@swc/core-linux-arm-gnueabihf': 1.4.6 - '@swc/core-linux-arm64-gnu': 1.4.6 - '@swc/core-linux-arm64-musl': 1.4.6 - '@swc/core-linux-x64-gnu': 1.4.6 - '@swc/core-linux-x64-musl': 1.4.6 - '@swc/core-win32-arm64-msvc': 1.4.6 - '@swc/core-win32-ia32-msvc': 1.4.6 - '@swc/core-win32-x64-msvc': 1.4.6 - '@swc/helpers': 0.5.5 - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.5': - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.6.2 - - '@swc/types@0.1.5': {} - - '@szmarczak/http-timer@4.0.6': - dependencies: - defer-to-connect: 2.0.1 - - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 + '@esbuild/linux-x64@0.18.20': + optional: true - '@tabler/icons-react@3.3.0(react@18.2.0)': - dependencies: - '@tabler/icons': 3.3.0 - react: 18.2.0 + '@esbuild/linux-x64@0.19.12': + optional: true - '@tabler/icons@3.3.0': {} + '@esbuild/netbsd-x64@0.17.19': + optional: true - '@tailwindcss/typography@0.5.14(tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)))': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + '@esbuild/netbsd-x64@0.18.20': + optional: true - '@testing-library/dom@9.3.4': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.24.0 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 + '@esbuild/netbsd-x64@0.19.12': + optional: true - '@testing-library/jest-dom@5.17.0': - dependencies: - '@adobe/css-tools': 4.3.3 - '@babel/runtime': 7.24.0 - '@types/testing-library__jest-dom': 5.14.9 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - lodash: 4.17.21 - redent: 3.0.0 + '@esbuild/openbsd-x64@0.17.19': + optional: true - '@testing-library/react@14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@esbuild/openbsd-x64@0.18.20': + optional: true - '@testing-library/user-event@12.8.3(@testing-library/dom@9.3.4)': - dependencies: - '@babel/runtime': 7.24.0 - '@testing-library/dom': 9.3.4 - - '@textea/json-viewer@2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - copy-to-clipboard: 3.3.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - '@tootallnate/once@1.1.2': {} - - '@tootallnate/once@2.0.0': {} - - '@tootallnate/quickjs-emscripten@0.23.0': {} - - '@trysound/sax@0.2.0': {} - - '@ts-stack/markdown@1.5.0': - dependencies: - tslib: 2.6.2 - - '@tsconfig/node10@1.0.9': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@tufjs/canonical-json@1.0.0': {} - - '@tufjs/models@1.0.4': - dependencies: - '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.4 - - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.5 + '@esbuild/openbsd-x64@0.19.12': + optional: true - '@types/aria-query@5.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.5 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@esbuild/sunos-x64@0.17.19': + optional: true - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.24.5 + '@esbuild/sunos-x64@0.18.20': + optional: true - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.5 + '@esbuild/sunos-x64@0.19.12': + optional: true - '@types/babel__traverse@7.20.5': - dependencies: - '@babel/types': 7.24.5 + '@esbuild/win32-arm64@0.17.19': + optional: true - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 18.15.11 + '@esbuild/win32-arm64@0.18.20': + optional: true - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 18.15.11 + '@esbuild/win32-arm64@0.19.12': + optional: true - '@types/cacheable-request@6.0.3': - dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 18.15.11 - '@types/responselike': 1.0.3 + '@esbuild/win32-ia32@0.17.19': + optional: true - '@types/caseless@0.12.5': {} + '@esbuild/win32-ia32@0.18.20': + optional: true - '@types/chrome@0.0.232': - dependencies: - '@types/filesystem': 0.0.36 - '@types/har-format': 1.2.15 + '@esbuild/win32-ia32@0.19.12': + optional: true - '@types/cli-progress@3.11.5': - dependencies: - '@types/node': 18.15.11 + '@esbuild/win32-x64@0.17.19': + optional: true - '@types/connect-history-api-fallback@1.5.4': - dependencies: - '@types/express-serve-static-core': 4.17.43 - '@types/node': 18.15.11 + '@esbuild/win32-x64@0.18.20': + optional: true - '@types/connect@3.4.38': - dependencies: - '@types/node': 18.15.11 + '@esbuild/win32-x64@0.19.12': + optional: true - '@types/content-disposition@0.5.8': {} + '@eslint-community/eslint-utils@4.4.0(eslint@8.37.0)': + dependencies: + eslint: 8.37.0 + eslint-visitor-keys: 3.4.3 - '@types/cookie@0.4.1': {} + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 - '@types/cors@2.8.17': - dependencies: - '@types/node': 18.15.11 + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 - '@types/crypto-js@4.2.2': {} + '@eslint-community/regexpp@4.10.0': {} + + '@eslint/eslintrc@0.4.3': + dependencies: + ajv: 6.12.6 + debug: 4.3.6(supports-color@8.1.1) + espree: 7.3.1 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.0(supports-color@5.5.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.37.0': {} + + '@eslint/js@8.57.0': {} + + '@eslint/js@8.57.1': {} + + '@exodus/schemasafe@1.3.0': {} + + '@fastify/busboy@2.1.1': {} + + '@floating-ui/core@1.6.0': + dependencies: + '@floating-ui/utils': 0.2.1 + + '@floating-ui/dom@1.6.3': + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + + '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.6.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/utils@0.2.1': {} + + '@flowiseai/nodevm@3.9.25': + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + + '@gar/promisify@1.1.3': {} + + '@getzep/zep-cloud@1.0.7(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u))': + dependencies: + form-data: 4.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + qs: 6.11.2 + url-join: 4.0.1 + zod: 3.24.2 + optionalDependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + langchain: 0.3.19(nvjv7vdhktnobjkcg4sxcelb3u) + transitivePeerDependencies: + - encoding + + '@getzep/zep-js@0.9.0': + dependencies: + '@supercharge/promise-pool': 3.1.1 + semver: 7.7.1 + typescript: 5.5.2 + + '@gomomento/generated-types@0.106.1(encoding@0.1.13)': + dependencies: + '@grpc/grpc-js': 1.10.10 + google-protobuf: 3.21.2 + grpc-tools: 1.12.4(encoding@0.1.13) + protoc-gen-ts: 0.8.7 + transitivePeerDependencies: + - encoding + - supports-color + + '@gomomento/sdk-core@1.68.1': + dependencies: + buffer: 6.0.3 + jwt-decode: 3.1.2 + + '@gomomento/sdk@1.68.1(encoding@0.1.13)': + dependencies: + '@gomomento/generated-types': 0.106.1(encoding@0.1.13) + '@gomomento/sdk-core': 1.68.1 + '@grpc/grpc-js': 1.10.10 + '@types/google-protobuf': 3.15.10 + google-protobuf: 3.21.2 + jwt-decode: 3.1.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@google-ai/generativelanguage@2.6.0(encoding@0.1.13)': + dependencies: + google-gax: 4.3.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@google-cloud/vertexai@1.1.0(encoding@0.1.13)': + dependencies: + google-auth-library: 9.6.3(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@google/generative-ai@0.22.0': {} + + '@graphql-typed-document-node/core@3.2.0(graphql@16.8.1)': + dependencies: + graphql: 16.8.1 + + '@grpc/grpc-js@1.10.10': + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.13': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.4.0 + yargs: 17.7.2 + + '@grpc/proto-loader@0.7.7': + dependencies: + '@types/long': 4.0.2 + lodash.camelcase: 4.3.0 + long: 4.0.0 + protobufjs: 7.4.0 + yargs: 17.7.2 + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@hookform/error-message@2.0.1(react-dom@18.2.0(react@18.2.0))(react-hook-form@7.52.2(react@18.2.0))(react@18.2.0)': + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hook-form: 7.52.2(react@18.2.0) + + '@httptoolkit/websocket-stream@6.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + '@types/ws': 8.5.10 + duplexify: 3.7.1 + inherits: 2.0.4 + isomorphic-ws: 4.0.1(ws@8.18.1(bufferutil@4.0.8)) + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xtend: 4.0.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@huggingface/inference@1.8.0': {} + + '@huggingface/inference@2.6.4': {} + + '@huggingface/inference@2.7.0': + dependencies: + '@huggingface/tasks': 0.10.6 + + '@huggingface/jinja@0.2.2': {} + + '@huggingface/tasks@0.10.6': {} + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.4.0(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.5.0': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.6(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@1.2.1': {} + + '@humanwhocodes/object-schema@2.0.2': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@ibm-cloud/watsonx-ai@1.5.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@types/node': 18.15.11 + extend: 3.0.2 + ibm-cloud-sdk-core: 5.1.4 + transitivePeerDependencies: + - '@langchain/core' + - supports-color + + '@icons/material@0.2.4(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@ioredis/commands@1.2.0': {} + + '@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 + + '@isaacs/string-locale-compare@1.1.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@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/console@28.1.3': + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2))': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.5 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5))': + 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': 18.15.11 + 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + 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.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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': 18.15.11 + 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + jest-mock: 27.5.1 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + 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@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 18.15.11 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.15.11 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@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@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + 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': 18.15.11 + 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@28.1.3': + dependencies: + '@sinclair/typebox': 0.24.51 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@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@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-result@28.1.3': + dependencies: + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@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@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@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@27.5.1': + dependencies: + '@babel/core': 7.26.9 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.9 + '@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.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.15.11 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jest/types@28.1.3': + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.15.11 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + + '@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': 18.15.11 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@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.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@jsdevtools/ono@7.1.3': {} + + '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': + dependencies: + tslib: 2.6.2 + + '@jsonjoy.com/json-pack@1.1.1(tslib@2.6.2)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) + '@jsonjoy.com/util': 1.5.0(tslib@2.6.2) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.6.2) + tslib: 2.6.2 + + '@jsonjoy.com/util@1.5.0(tslib@2.6.2)': + dependencies: + tslib: 2.6.2 + + '@ladle/react-context@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@ladle/react@2.5.1(@types/node@18.15.11)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(terser@5.29.1)(typescript@5.0.3)': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/core': 7.26.9 + '@babel/generator': 7.23.6 + '@babel/parser': 7.24.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.9) + '@babel/preset-env': 7.24.5(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': 7.21.4(@babel/core@7.26.9) + '@babel/runtime': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@babel/types': 7.24.5 + '@ladle/react-context': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)) + axe-core: 4.8.4 + boxen: 7.1.1 + chokidar: 3.6.0 + classnames: 2.5.1 + commander: 9.5.0 + cross-spawn: 7.0.6 + debug: 4.3.4(supports-color@8.1.1) + default-browser: 3.1.0 + express: 4.21.2 + get-port: 6.1.2 + globby: 13.2.2 + history: 5.3.0 + lodash.merge: 4.6.2 + open: 8.4.2 + prism-react-renderer: 1.3.5(react@18.2.0) + prop-types: 15.8.1 + query-string: 8.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-frame-component: 5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-inspector: 6.0.2(react@18.2.0) + vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) + vite-tsconfig-paths: 4.3.1(typescript@5.0.3)(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + + '@ladle/react@2.5.1(@types/node@22.13.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5)': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/core': 7.26.9 + '@babel/generator': 7.23.6 + '@babel/parser': 7.24.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.9) + '@babel/preset-env': 7.24.5(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': 7.21.4(@babel/core@7.26.9) + '@babel/runtime': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@babel/types': 7.24.5 + '@ladle/react-context': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@22.13.9)(sass@1.71.1)) + axe-core: 4.8.4 + boxen: 7.1.1 + chokidar: 3.6.0 + classnames: 2.5.1 + commander: 9.5.0 + cross-spawn: 7.0.6 + debug: 4.3.4(supports-color@8.1.1) + default-browser: 3.1.0 + express: 4.21.2 + get-port: 6.1.2 + globby: 13.2.2 + history: 5.3.0 + lodash.merge: 4.6.2 + open: 8.4.2 + prism-react-renderer: 1.3.5(react@18.2.0) + prop-types: 15.8.1 + query-string: 8.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-frame-component: 5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-inspector: 6.0.2(react@18.2.0) + vite: 4.5.2(@types/node@22.13.9)(sass@1.71.1) + vite-tsconfig-paths: 4.3.1(typescript@4.9.5)(vite@4.5.2(@types/node@22.13.9)(sass@1.71.1)) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + + '@langchain/anthropic@0.3.14(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)': + dependencies: + '@anthropic-ai/sdk': 0.37.0(encoding@0.1.13) + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + fast-xml-parser: 4.5.3 + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - encoding + + '@langchain/aws@0.1.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@aws-sdk/client-bedrock-agent-runtime': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-bedrock-runtime': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-kendra': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-node': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)) + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + transitivePeerDependencies: + - aws-crt + + '@langchain/baidu-qianfan@0.1.0(@babel/core@7.26.9)(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@baiducloud/qianfan': 0.1.9(@babel/core@7.26.9)(encoding@0.1.13) + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - '@babel/core' + - encoding + - supports-color + - ws + + '@langchain/cohere@0.0.7(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: 7.10.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - openai + + '@langchain/community@0.3.34(bdtjpertst2vaqrg7c7dviav3q)': + dependencies: + '@browserbasehq/stagehand': 1.12.0(@playwright/test@1.50.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.5)(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(utf-8-validate@6.0.4)(zod@3.22.4) + '@ibm-cloud/watsonx-ai': 1.5.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/openai': 0.4.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + binary-extensions: 2.2.0 + expr-eval: 2.0.2 + flat: 5.0.2 + ibm-cloud-sdk-core: 5.1.4 + js-yaml: 4.1.0 + langchain: 0.3.19(nvjv7vdhktnobjkcg4sxcelb3u) + langsmith: 0.3.12(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + uuid: 10.0.0 + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + optionalDependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-bedrock-agent-runtime': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-bedrock-runtime': 3.422.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-kendra': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@browserbasehq/sdk': 2.3.0(encoding@0.1.13) + '@datastax/astra-db-ts': 1.5.0 + '@elastic/elasticsearch': 8.12.2 + '@getzep/zep-cloud': 1.0.7(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u)) + '@getzep/zep-js': 0.9.0 + '@gomomento/sdk': 1.68.1(encoding@0.1.13) + '@gomomento/sdk-core': 1.68.1 + '@google-ai/generativelanguage': 2.6.0(encoding@0.1.13) + '@huggingface/inference': 2.6.4 + '@mendable/firecrawl-js': 0.0.28 + '@notionhq/client': 2.2.14(encoding@0.1.13) + '@opensearch-project/opensearch': 1.2.0 + '@pinecone-database/pinecone': 4.0.0 + '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) + '@smithy/eventstream-codec': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/signature-v4': 2.1.4 + '@smithy/util-utf8': 2.2.0 + '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@upstash/redis': 1.22.1(encoding@0.1.13) + '@upstash/vector': 1.1.5 + '@zilliz/milvus2-sdk-node': 2.3.5 + apify-client: 2.9.3 + assemblyai: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) + cheerio: 1.0.0-rc.12 + chromadb: 1.10.5(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.14)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: 7.10.0(encoding@0.1.13) + crypto-js: 4.2.0 + d3-dsv: 2.0.0 + epub2: 3.0.2(ts-toolbelt@9.6.0) + fast-xml-parser: 4.5.3 + google-auth-library: 9.6.3(encoding@0.1.13) + googleapis: 144.0.0(encoding@0.1.13) + html-to-text: 9.0.5 + ignore: 5.3.1 + ioredis: 5.3.2 + jsdom: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) + jsonwebtoken: 9.0.2 + lodash: 4.17.21 + lunary: 0.7.15(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0) + mammoth: 1.7.0 + mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + mysql2: 3.13.0 + neo4j-driver: 5.28.1 + notion-to-md: 3.1.1(encoding@0.1.13) + pdf-parse: 1.1.1 + pg: 8.11.3 + playwright: 1.42.1 + portkey-ai: 0.1.16 + puppeteer: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) + pyodide: 0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + redis: 4.6.13 + replicate: 0.31.1 + srt-parser-2: 1.2.3 + typeorm: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cerebras' + - '@langchain/cohere' + - '@langchain/deepseek' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/google-vertexai-web' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - '@langchain/xai' + - axios + - encoding + - handlebars + - peggy + + '@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@cfworker/json-schema': 4.1.1 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.12 + langsmith: 0.3.12(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - openai + + '@langchain/exa@0.0.5(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + exa-js: 1.0.12(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - openai + + '@langchain/google-common@0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(zod@3.22.4)': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + uuid: 10.0.0 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - zod + + '@langchain/google-gauth@0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(zod@3.22.4)': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/google-common': 0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(zod@3.22.4) + google-auth-library: 9.15.1(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + - zod + + '@langchain/google-genai@0.1.9(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(zod@3.22.4)': + dependencies: + '@google/generative-ai': 0.22.0 + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - zod + + '@langchain/google-vertexai@0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(zod@3.22.4)': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/google-gauth': 0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(zod@3.22.4) + transitivePeerDependencies: + - encoding + - supports-color + - zod + + '@langchain/groq@0.1.2(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + groq-sdk: 0.5.0(encoding@0.1.13) + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - encoding + - ws + + '@langchain/langgraph@0.0.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + uuid: 9.0.1 + transitivePeerDependencies: + - openai + + '@langchain/mistralai@0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@mistralai/mistralai': 1.5.0(zod@3.24.2) + uuid: 10.0.0 + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + + '@langchain/mongodb@0.0.1(gcp-metadata@5.3.0(encoding@0.1.13))(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(socks@2.8.1)': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - openai + - snappy + - socks + + '@langchain/ollama@0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + ollama: 0.5.14 + uuid: 10.0.0 + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + + '@langchain/openai@0.3.17(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + js-tiktoken: 1.0.12 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - encoding + - ws + + '@langchain/openai@0.4.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + js-tiktoken: 1.0.12 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + transitivePeerDependencies: + - encoding + - ws + + '@langchain/pinecone@0.1.3(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@pinecone-database/pinecone': 4.0.0 + flat: 5.0.2 + uuid: 10.0.0 + + '@langchain/qdrant@0.0.5(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(typescript@5.5.2)': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) + uuid: 9.0.1 + transitivePeerDependencies: + - openai + - typescript + + '@langchain/textsplitters@0.0.1(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + js-tiktoken: 1.0.12 + transitivePeerDependencies: + - openai + + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + js-tiktoken: 1.0.12 + + '@langchain/weaviate@0.0.1(encoding@0.1.13)(graphql@16.8.1)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + uuid: 9.0.1 + weaviate-ts-client: 2.1.1(encoding@0.1.13)(graphql@16.8.1) + transitivePeerDependencies: + - encoding + - graphql + - openai + + '@langchain/xai@0.0.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + transitivePeerDependencies: + - encoding + - ws + + '@leichtgewicht/ip-codec@2.0.4': {} + + '@lezer/common@1.2.1': {} + + '@lezer/highlight@1.2.0': + dependencies: + '@lezer/common': 1.2.1 + + '@lezer/javascript@1.4.13': + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + + '@lezer/json@1.0.2': + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + + '@lezer/lr@1.4.0': + dependencies: + '@lezer/common': 1.2.1 + + '@llamaindex/cloud@0.0.5(node-fetch@2.7.0(encoding@0.1.13))': + dependencies: + '@types/qs': 6.9.12 + form-data: 4.0.2 + js-base64: 3.7.7 + qs: 6.12.1 + optionalDependencies: + node-fetch: 2.7.0(encoding@0.1.13) + + '@llamaindex/env@0.1.3(@aws-crypto/sha256-js@5.2.0)(pathe@1.1.2)': + dependencies: + '@types/lodash': 4.17.16 + '@types/node': 20.12.12 + optionalDependencies: + '@aws-crypto/sha256-js': 5.2.0 + pathe: 1.1.2 + + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0(encoding@0.1.13) + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@mdx-js/mdx@3.0.1': + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.2.65 + react: 18.2.0 + + '@mendable/firecrawl-js@0.0.28': + dependencies: + axios: 1.7.9(debug@4.3.4) + dotenv: 16.4.5 + uuid: 9.0.1 + zod: 3.24.2 + zod-to-json-schema: 3.23.1(zod@3.24.2) + transitivePeerDependencies: + - debug + + '@microsoft/fetch-event-source@2.0.1': {} + + '@mistralai/mistralai@0.1.3(encoding@0.1.13)': + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@mistralai/mistralai@0.2.0(encoding@0.1.13)': + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@mistralai/mistralai@1.5.0(zod@3.24.2)': + dependencies: + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + + '@modelcontextprotocol/sdk@1.0.1': + dependencies: + content-type: 1.0.5 + raw-body: 3.0.0 + zod: 3.24.2 + + '@modelcontextprotocol/sdk@1.6.1': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + eventsource: 3.0.5 + express: 5.0.1 + express-rate-limit: 7.5.0(express@5.0.1) + pkce-challenge: 4.1.0 + raw-body: 3.0.0 + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + transitivePeerDependencies: + - supports-color + + '@modelcontextprotocol/server-brave-search@0.6.2': + dependencies: + '@modelcontextprotocol/sdk': 1.0.1 + + '@modelcontextprotocol/server-github@2025.1.23': + dependencies: + '@modelcontextprotocol/sdk': 1.0.1 + '@types/node': 22.13.9 + '@types/node-fetch': 2.6.12 + node-fetch: 3.3.2 + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + + '@modelcontextprotocol/server-postgres@0.6.2': + dependencies: + '@modelcontextprotocol/sdk': 1.0.1 + pg: 8.13.3 + transitivePeerDependencies: + - pg-native + + '@modelcontextprotocol/server-slack@2025.1.17': + dependencies: + '@modelcontextprotocol/sdk': 1.0.1 + + '@monaco-editor/loader@1.4.0(monaco-editor@0.50.0)': + dependencies: + monaco-editor: 0.50.0 + state-local: 1.0.7 + + '@monaco-editor/react@4.6.0(monaco-editor@0.50.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@monaco-editor/loader': 1.4.0(monaco-editor@0.50.0) + monaco-editor: 0.50.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@mongodb-js/saslprep@1.1.5': + dependencies: + sparse-bitfield: 3.0.3 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@mui/base@5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) + '@popperjs/core': 2.11.8 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/base@5.0.0-beta.40(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.65) + '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) + '@popperjs/core': 2.11.8 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/core-downloads-tracker@5.15.12': {} + + '@mui/icons-material@5.0.3(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/lab@5.0.0-alpha.156(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/base': 5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + + '@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/base': 5.0.0-beta.27(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.12 + '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) + '@types/react-transition-group': 4.4.10 + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + + '@mui/private-theming@5.15.12(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/styled-engine@5.15.11(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@emotion/cache': 11.11.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + + '@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/private-theming': 5.15.12(@types/react@18.2.65)(react@18.2.0) + '@mui/styled-engine': 5.15.11(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.65) + '@mui/utils': 5.16.0(@types/react@18.2.65)(react@18.2.0) + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@types/react': 18.2.65 + + '@mui/types@7.2.13(@types/react@18.2.65)': + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/types@7.2.14(@types/react@18.2.65)': + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/utils@5.15.0(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@types/prop-types': 15.7.11 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/utils@5.16.0(@types/react@18.2.65)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@types/prop-types': 15.7.11 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 + + '@mui/x-data-grid@6.8.0(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@mui/system@5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/system': 5.15.12(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/utils': 5.15.0(@types/react@18.2.65)(react@18.2.0) + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + reselect: 4.1.8 + transitivePeerDependencies: + - '@types/react' + + '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.18.0(prisma@5.18.0))(next-auth@4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': + dependencies: + '@prisma/client': 5.18.0(prisma@5.18.0) + next-auth: 4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + '@next/bundle-analyzer@13.5.6(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@next/env@14.2.5': {} + + '@next/eslint-plugin-next@13.2.4': + dependencies: + glob: 7.1.7 + + '@next/eslint-plugin-next@13.5.6': + dependencies: + glob: 7.1.7 + + '@next/swc-darwin-arm64@14.2.5': + optional: true + + '@next/swc-darwin-x64@14.2.5': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.5': + optional: true + + '@next/swc-linux-arm64-musl@14.2.5': + optional: true + + '@next/swc-linux-x64-gnu@14.2.5': + optional: true + + '@next/swc-linux-x64-musl@14.2.5': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.5': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.5': + optional: true + + '@next/swc-win32-x64-msvc@14.2.5': + optional: true + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@notionhq/client@2.2.14(encoding@0.1.13)': + dependencies: + '@types/node-fetch': 2.6.2 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@npmcli/arborist@4.3.1': + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/map-workspaces': 2.0.4 + '@npmcli/metavuln-calculator': 2.0.0 + '@npmcli/move-file': 1.1.2 + '@npmcli/name-from-folder': 1.0.1 + '@npmcli/node-gyp': 1.0.3 + '@npmcli/package-json': 1.0.1 + '@npmcli/run-script': 2.0.0 + bin-links: 3.0.3 + cacache: 15.3.0 + common-ancestor-path: 1.0.1 + json-parse-even-better-errors: 2.3.1 + json-stringify-nice: 1.1.4 + mkdirp: 1.0.4 + mkdirp-infer-owner: 2.0.0 + npm-install-checks: 4.0.0 + npm-package-arg: 8.1.5 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + pacote: 12.0.3 + parse-conflict-json: 2.0.2 + proc-log: 1.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 1.0.2 + read-package-json-fast: 2.0.3 + readdir-scoped-modules: 1.1.0 + rimraf: 3.0.2 + semver: 7.7.1 + ssri: 8.0.1 + treeverse: 1.0.4 + walk-up-path: 1.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/fs@1.1.1': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.7.1 + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.7.1 + + '@npmcli/fs@3.1.0': + dependencies: + semver: 7.7.1 + + '@npmcli/git@2.1.0': + dependencies: + '@npmcli/promise-spawn': 1.3.2 + lru-cache: 6.0.0 + mkdirp: 1.0.4 + npm-pick-manifest: 6.1.1 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.7.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + + '@npmcli/git@4.1.0': + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.7.1 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/installed-package-contents@1.0.7': + dependencies: + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + '@npmcli/installed-package-contents@2.0.2': + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + + '@npmcli/map-workspaces@2.0.4': + dependencies: + '@npmcli/name-from-folder': 1.0.1 + glob: 8.1.0 + minimatch: 5.1.6 + read-package-json-fast: 2.0.3 + + '@npmcli/metavuln-calculator@2.0.0': + dependencies: + cacache: 15.3.0 + json-parse-even-better-errors: 2.3.1 + pacote: 12.0.3 + semver: 7.7.1 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/move-file@1.1.2': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@npmcli/name-from-folder@1.0.1': {} + + '@npmcli/node-gyp@1.0.3': {} + + '@npmcli/node-gyp@3.0.0': {} + + '@npmcli/package-json@1.0.1': + dependencies: + json-parse-even-better-errors: 2.3.1 + + '@npmcli/promise-spawn@1.3.2': + dependencies: + infer-owner: 1.0.4 + + '@npmcli/promise-spawn@6.0.2': + dependencies: + which: 3.0.1 + + '@npmcli/run-script@2.0.0': + dependencies: + '@npmcli/node-gyp': 1.0.3 + '@npmcli/promise-spawn': 1.3.2 + node-gyp: 8.4.1 + read-package-json-fast: 2.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/run-script@6.0.2': + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.4.1 + read-package-json-fast: 3.0.2 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + '@oclif/core@2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)': + dependencies: + '@types/cli-progress': 3.11.5 + ansi-escapes: 4.3.2 + ansi-styles: 4.3.0 + cardinal: 2.1.1 + chalk: 4.1.2 + clean-stack: 3.0.1 + cli-progress: 3.12.0 + debug: 4.4.0(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + globby: 11.1.0 + hyperlinker: 1.0.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + js-yaml: 3.14.1 + natural-orderby: 2.0.3 + object-treeify: 1.1.33 + password-prompt: 1.1.3 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + supports-color: 8.1.1 + supports-hyperlinks: 2.3.0 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + tslib: 2.6.2 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + + '@oclif/core@4.0.7': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.0(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + globby: 11.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.2 + minimatch: 9.0.4 + string-width: 4.2.3 + supports-color: 8.1.1 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + + '@oclif/plugin-help@5.2.20(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)': + dependencies: + '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + + '@oclif/plugin-not-found@2.4.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)': + dependencies: + '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + chalk: 4.1.2 + fast-levenshtein: 3.0.0 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + + '@oclif/plugin-warn-if-update-available@2.1.1(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)': + dependencies: + '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + chalk: 4.1.2 + debug: 4.4.0(supports-color@5.5.0) + http-call: 5.3.0 + lodash.template: 4.5.0 + semver: 7.7.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + + '@octokit/auth-token@2.5.0': + dependencies: + '@octokit/types': 6.41.0 + + '@octokit/core@3.6.0(encoding@0.1.13)': + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0(encoding@0.1.13) + '@octokit/request': 5.6.3(encoding@0.1.13) + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/endpoint@6.0.12': + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + + '@octokit/graphql@4.8.0(encoding@0.1.13)': + dependencies: + '@octokit/request': 5.6.3(encoding@0.1.13) + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/openapi-types@12.11.0': {} + + '@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/types': 6.41.0 + + '@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + + '@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + + '@octokit/request-error@2.1.0': + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request@5.6.3(encoding@0.1.13)': + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/rest@18.12.0(encoding@0.1.13)': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0(encoding@0.1.13)) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0(encoding@0.1.13)) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0(encoding@0.1.13)) + transitivePeerDependencies: + - encoding + + '@octokit/types@6.41.0': + dependencies: + '@octokit/openapi-types': 12.11.0 + + '@opensearch-project/opensearch@1.2.0': + dependencies: + aws4: 1.12.0 + debug: 4.3.4(supports-color@8.1.1) + hpagent: 0.1.2 + ms: 2.1.3 + secure-json-parse: 2.7.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/api-logs@0.54.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.54.2': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/auto-instrumentations-node@0.52.1(@opentelemetry/api@1.9.0)(encoding@0.1.13)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-aws-lambda': 0.47.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-aws-sdk': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-bunyan': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-cassandra-driver': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-cucumber': 0.10.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.13.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dns': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-grpc': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-memcached': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.42.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-net': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pino': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-restify': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-router': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-socket.io': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.7.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-winston': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-alibaba-cloud': 0.29.7(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-aws': 1.12.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-azure': 0.2.12(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-container': 0.5.3(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-gcp': 0.29.13(@opentelemetry/api@1.9.0)(encoding@0.1.13) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - encoding + - supports-color + + '@opentelemetry/context-async-hooks@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/exporter-logs-otlp-grpc@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.2(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-http@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.2(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-proto@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-grpc@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-http@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-proto@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-proto@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-proto@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-zipkin@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-aws-lambda@0.47.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/aws-lambda': 8.10.143 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-aws-sdk@0.46.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/propagation-utils': 0.30.16(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-bunyan@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@types/bunyan': 1.8.9 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-cassandra-driver@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-cucumber@0.10.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-dataloader@0.13.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-dns@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-fastify@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-fs@0.16.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-generic-pool@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-grpc@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-hapi@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-http@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + forwarded-parse: 2.1.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-ioredis@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-koa@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-lru-memoizer@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-memcached@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/memcached': 2.2.10 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongoose@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql2@0.42.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/mysql': 2.15.26 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-nestjs-core@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-net@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-pg@0.47.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-pino@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-redis-4@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-redis@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-restify@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-router@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-socket.io@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-undici@0.7.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-winston@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.7.1 + require-in-the-middle: 7.5.2 + semver: 7.7.1 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.13.1 + require-in-the-middle: 7.5.2 + semver: 7.7.1 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/otlp-exporter-base@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-exporter-base@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.2(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-transformer@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + protobufjs: 7.4.0 + + '@opentelemetry/otlp-transformer@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + protobufjs: 7.4.0 + + '@opentelemetry/propagation-utils@0.30.16(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/propagator-b3@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/redis-common@0.36.2': {} + + '@opentelemetry/resource-detector-alibaba-cloud@0.29.7(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-aws@1.12.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-azure@0.2.12(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-container@0.5.3(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-gcp@0.29.13(@opentelemetry/api@1.9.0)(encoding@0.1.13)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + gcp-metadata: 6.1.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@opentelemetry/resources@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/sdk-logs@0.54.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-logs@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-node@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/sdk-trace-node@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + semver: 7.7.1 + + '@opentelemetry/semantic-conventions@1.27.0': {} + + '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@panva/hkdf@1.2.1': {} + + '@petamoriken/float16@3.8.7': {} + + '@pinecone-database/pinecone@0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5))': + dependencies: + '@types/node': 18.15.11 + axios: 1.7.9(debug@4.3.4) + dotenv: 16.4.7 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - debug + + '@pinecone-database/pinecone@2.2.2': + dependencies: + '@sinclair/typebox': 0.29.6 + ajv: 8.13.0 + cross-fetch: 3.1.8(encoding@0.1.13) + encoding: 0.1.13 + + '@pinecone-database/pinecone@4.0.0': + dependencies: + encoding: 0.1.13 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@playwright/test@1.50.1': + dependencies: + playwright: 1.50.1 + + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.11.0)(type-fest@4.12.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)))': + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.36.0 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + optionalDependencies: + type-fest: 4.12.0 + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@polka/url@1.0.0-next.25': {} + + '@popperjs/core@2.11.8': {} + + '@prisma/client@5.18.0(prisma@5.18.0)': + optionalDependencies: + prisma: 5.18.0 + + '@prisma/debug@5.18.0': {} + + '@prisma/debug@5.9.1': {} + + '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': {} + + '@prisma/engines@5.18.0': + dependencies: + '@prisma/debug': 5.18.0 + '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 + '@prisma/fetch-engine': 5.18.0 + '@prisma/get-platform': 5.18.0 + + '@prisma/fetch-engine@5.18.0': + dependencies: + '@prisma/debug': 5.18.0 + '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 + '@prisma/get-platform': 5.18.0 + + '@prisma/generator-helper@5.9.1': + dependencies: + '@prisma/debug': 5.9.1 + + '@prisma/get-platform@5.18.0': + dependencies: + '@prisma/debug': 5.18.0 + + '@prisma/nextjs-monorepo-workaround-plugin@5.18.0': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@puppeteer/browsers@0.5.0(typescript@4.9.5)': + dependencies: + debug: 4.3.4(supports-color@8.1.1) + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + progress: 2.0.3 + proxy-from-env: 1.1.0 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + yargs: 17.7.1 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@puppeteer/browsers@1.4.6(typescript@5.5.2)': + dependencies: + debug: 4.3.4(supports-color@8.1.1) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.3.0 + tar-fs: 3.0.4 + unbzip2-stream: 1.4.3 + yargs: 17.7.1 + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@qdrant/js-client-rest@1.9.0(typescript@4.9.5)': + dependencies: + '@qdrant/openapi-typescript-fetch': 1.2.6 + '@sevinf/maybe': 0.5.0 + typescript: 4.9.5 + undici: 5.28.4 + optional: true + + '@qdrant/js-client-rest@1.9.0(typescript@5.5.2)': + dependencies: + '@qdrant/openapi-typescript-fetch': 1.2.6 + '@sevinf/maybe': 0.5.0 + typescript: 5.5.2 + undici: 5.28.4 + + '@qdrant/openapi-typescript-fetch@1.2.6': {} + + '@reactflow/background@11.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/controls@11.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/core@11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@types/d3': 7.4.3 + '@types/d3-drag': 3.0.7 + '@types/d3-selection': 3.0.10 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.4 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/minimap@11.7.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/d3-selection': 3.0.10 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.4 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/node-resizer@2.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + classcat: 5.0.4 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/node-toolbar@1.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@redis/bloom@1.2.0(@redis/client@1.5.14)': + dependencies: + '@redis/client': 1.5.14 + + '@redis/client@1.5.14': + dependencies: + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + + '@redis/graph@1.1.1(@redis/client@1.5.14)': + dependencies: + '@redis/client': 1.5.14 + + '@redis/json@1.0.6(@redis/client@1.5.14)': + dependencies: + '@redis/client': 1.5.14 + + '@redis/search@1.1.6(@redis/client@1.5.14)': + dependencies: + '@redis/client': 1.5.14 + + '@redis/time-series@1.0.5(@redis/client@1.5.14)': + dependencies: + '@redis/client': 1.5.14 + + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@2.79.1)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + optionalDependencies: + '@types/babel__core': 7.20.5 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-babel@6.0.3(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.20.2)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.24.3 + '@rollup/pluginutils': 5.1.0(rollup@3.20.2) + optionalDependencies: + '@types/babel__core': 7.20.5 + rollup: 3.20.2 + + '@rollup/plugin-babel@6.0.3(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.23.0)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.24.3 + '@rollup/pluginutils': 5.1.0(rollup@3.23.0) + optionalDependencies: + '@types/babel__core': 7.20.5 + rollup: 3.23.0 + + '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@2.78.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + optionalDependencies: + rollup: 2.78.0 + + '@rollup/plugin-commonjs@25.0.8(rollup@3.23.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.23.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 3.23.0 + + '@rollup/plugin-inject@5.0.5(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + estree-walker: 2.0.2 + magic-string: 0.30.10 + optionalDependencies: + rollup: 3.29.4 + + '@rollup/plugin-json@6.1.0(rollup@3.23.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.23.0) + optionalDependencies: + rollup: 3.23.0 + + '@rollup/plugin-json@6.1.0(rollup@3.29.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + optionalDependencies: + rollup: 3.29.4 + + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 + + '@rollup/plugin-node-resolve@15.0.1(rollup@3.20.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.20.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 3.20.2 + + '@rollup/plugin-node-resolve@15.0.1(rollup@3.23.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.23.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 3.23.0 + + '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.9 + rollup: 2.79.1 + + '@rollup/plugin-terser@0.4.0(rollup@3.20.2)': + dependencies: + serialize-javascript: 6.0.2 + smob: 0.0.6 + terser: 5.29.1 + optionalDependencies: + rollup: 3.20.2 + + '@rollup/plugin-terser@0.4.0(rollup@3.23.0)': + dependencies: + serialize-javascript: 6.0.2 + smob: 0.0.6 + terser: 5.29.1 + optionalDependencies: + rollup: 3.23.0 + + '@rollup/plugin-typescript@11.0.0(rollup@3.20.2)(tslib@2.5.0)(typescript@5.0.3)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.20.2) + resolve: 1.22.8 + typescript: 5.0.3 + optionalDependencies: + rollup: 3.20.2 + tslib: 2.5.0 + + '@rollup/plugin-typescript@11.0.0(rollup@3.23.0)(tslib@2.6.2)(typescript@5.0.3)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.23.0) + resolve: 1.22.8 + typescript: 5.0.3 + optionalDependencies: + rollup: 3.23.0 + tslib: 2.6.2 + + '@rollup/pluginutils@3.1.0(rollup@2.79.1)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + + '@rollup/pluginutils@5.1.0(rollup@2.78.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 2.78.0 + + '@rollup/pluginutils@5.1.0(rollup@3.20.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.20.2 + + '@rollup/pluginutils@5.1.0(rollup@3.23.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.23.0 + + '@rollup/pluginutils@5.1.0(rollup@3.29.4)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.29.4 + + '@rollup/rollup-android-arm-eabi@4.13.0': + optional: true + + '@rollup/rollup-android-arm64@4.13.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.13.0': + optional: true + + '@rollup/rollup-darwin-x64@4.13.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.13.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.13.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.13.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.13.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.13.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.13.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.13.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.13.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.13.0': + optional: true + + '@rushstack/eslint-patch@1.7.2': {} + + '@scarf/scarf@1.4.0': {} + + '@selderee/plugin-htmlparser2@0.11.0': + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + + '@sentry-internal/feedback@7.118.0': + dependencies: + '@sentry/core': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry-internal/replay-canvas@7.118.0': + dependencies: + '@sentry/core': 7.118.0 + '@sentry/replay': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry-internal/tracing@7.118.0': + dependencies: + '@sentry/core': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/browser@7.118.0': + dependencies: + '@sentry-internal/feedback': 7.118.0 + '@sentry-internal/replay-canvas': 7.118.0 + '@sentry-internal/tracing': 7.118.0 + '@sentry/core': 7.118.0 + '@sentry/integrations': 7.118.0 + '@sentry/replay': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/cli@1.77.3(encoding@0.1.13)': + dependencies: + https-proxy-agent: 5.0.1 + mkdirp: 0.5.6 + node-fetch: 2.7.0(encoding@0.1.13) + progress: 2.0.3 + proxy-from-env: 1.1.0 + which: 2.0.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/core@7.118.0': + dependencies: + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/integrations@7.118.0': + dependencies: + '@sentry/core': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + localforage: 1.10.0 + + '@sentry/nextjs@7.118.0(encoding@0.1.13)(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react@18.2.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + dependencies: + '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) + '@sentry/core': 7.118.0 + '@sentry/integrations': 7.118.0 + '@sentry/node': 7.118.0 + '@sentry/react': 7.118.0(react@18.2.0) + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + '@sentry/vercel-edge': 7.118.0 + '@sentry/webpack-plugin': 1.21.0(encoding@0.1.13) + chalk: 3.0.0 + next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + react: 18.2.0 + resolve: 1.22.8 + rollup: 2.78.0 + stacktrace-parser: 0.1.10 + optionalDependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/node@7.118.0': + dependencies: + '@sentry-internal/tracing': 7.118.0 + '@sentry/core': 7.118.0 + '@sentry/integrations': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/react@7.118.0(react@18.2.0)': + dependencies: + '@sentry/browser': 7.118.0 + '@sentry/core': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + + '@sentry/replay@7.118.0': + dependencies: + '@sentry-internal/tracing': 7.118.0 + '@sentry/core': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/types@7.118.0': {} + + '@sentry/utils@7.118.0': + dependencies: + '@sentry/types': 7.118.0 + + '@sentry/vercel-edge@7.118.0': + dependencies: + '@sentry-internal/tracing': 7.118.0 + '@sentry/core': 7.118.0 + '@sentry/integrations': 7.118.0 + '@sentry/types': 7.118.0 + '@sentry/utils': 7.118.0 + + '@sentry/webpack-plugin@1.21.0(encoding@0.1.13)': + dependencies: + '@sentry/cli': 1.77.3(encoding@0.1.13) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - encoding + - supports-color + + '@sevinf/maybe@0.5.0': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sigstore/bundle@1.1.0': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + + '@sigstore/protobuf-specs@0.2.1': {} + + '@sigstore/sign@1.0.0': + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@1.0.3': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 1.1.7 + transitivePeerDependencies: + - supports-color + + '@sinclair/typebox@0.24.51': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinclair/typebox@0.29.6': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/is@5.6.0': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@slack/logger@3.0.0': + dependencies: + '@types/node': 18.15.11 + + '@slack/types@2.12.0': {} + + '@slack/web-api@6.12.0': + dependencies: + '@slack/logger': 3.0.0 + '@slack/types': 2.12.0 + '@types/is-stream': 1.1.0 + '@types/node': 18.15.11 + axios: 1.7.9(debug@4.3.4) + eventemitter3: 3.1.2 + form-data: 2.5.1 + is-electron: 2.2.2 + is-stream: 1.1.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + transitivePeerDependencies: + - debug + + '@slorber/remark-comment@1.0.0': + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + + '@smithy/abort-controller@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/abort-controller@3.1.1': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/abort-controller@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader-native@2.1.2': + dependencies: + '@smithy/util-base64': 2.2.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/config-resolver@2.1.5': + dependencies: + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@smithy/config-resolver@4.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + + '@smithy/core@1.3.7': + dependencies: + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-retry': 2.1.6 + '@smithy/middleware-serde': 2.2.1 + '@smithy/protocol-http': 3.2.2 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@smithy/core@2.3.2': + dependencies: + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 + '@smithy/middleware-serde': 3.0.3 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.2 + + '@smithy/core@3.1.5': + dependencies: + '@smithy/middleware-serde': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.1.2 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + + '@smithy/credential-provider-imds@2.2.6': + dependencies: + '@smithy/node-config-provider': 2.2.5 + '@smithy/property-provider': 2.1.4 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + tslib: 2.6.2 + + '@smithy/credential-provider-imds@4.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + tslib: 2.6.2 + + '@smithy/eventstream-codec@2.1.4': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.11.0 + '@smithy/util-hex-encoding': 2.1.1 + tslib: 2.6.2 + + '@smithy/eventstream-codec@4.0.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@2.1.4': + dependencies: + '@smithy/eventstream-serde-universal': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@4.0.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@2.1.4': + dependencies: + '@smithy/eventstream-serde-universal': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@4.0.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@2.1.4': + dependencies: + '@smithy/eventstream-codec': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@4.0.1': + dependencies: + '@smithy/eventstream-codec': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@2.4.4': + dependencies: + '@smithy/protocol-http': 3.2.2 + '@smithy/querystring-builder': 2.1.4 + '@smithy/types': 2.11.0 + '@smithy/util-base64': 2.2.0 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@3.2.4': + dependencies: + '@smithy/protocol-http': 4.1.0 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@5.0.1': + dependencies: + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 + tslib: 2.6.2 + + '@smithy/hash-blob-browser@2.1.4': + dependencies: + '@smithy/chunked-blob-reader': 2.1.1 + '@smithy/chunked-blob-reader-native': 2.1.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/hash-node@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/hash-node@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + + '@smithy/hash-stream-node@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/invalid-dependency@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/invalid-dependency@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/is-array-buffer@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/md5-js@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/middleware-content-length@2.1.4': + dependencies: + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/middleware-content-length@4.0.1': + dependencies: + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@2.4.6': + dependencies: + '@smithy/middleware-serde': 2.2.1 + '@smithy/node-config-provider': 2.2.5 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + '@smithy/url-parser': 2.1.4 + '@smithy/util-middleware': 2.1.4 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@3.1.0': + dependencies: + '@smithy/middleware-serde': 3.0.3 + '@smithy/node-config-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.4 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-middleware': 3.0.3 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@4.0.6': + dependencies: + '@smithy/core': 3.1.5 + '@smithy/middleware-serde': 4.0.2 + '@smithy/node-config-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + + '@smithy/middleware-retry@2.1.6': + dependencies: + '@smithy/node-config-provider': 2.2.5 + '@smithy/protocol-http': 3.2.2 + '@smithy/service-error-classification': 2.1.4 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-retry': 2.1.4 + tslib: 2.6.2 + uuid: 8.3.2 + + '@smithy/middleware-retry@3.0.14': + dependencies: + '@smithy/node-config-provider': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/service-error-classification': 3.0.3 + '@smithy/smithy-client': 3.1.12 + '@smithy/types': 3.3.0 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.3 + tslib: 2.6.2 + uuid: 9.0.1 + + '@smithy/middleware-retry@4.0.7': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/service-error-classification': 4.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + tslib: 2.6.2 + uuid: 9.0.1 + + '@smithy/middleware-serde@2.2.1': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/middleware-serde@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/middleware-serde@4.0.2': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/middleware-stack@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/middleware-stack@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/middleware-stack@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/node-config-provider@2.2.5': + dependencies: + '@smithy/property-provider': 2.1.4 + '@smithy/shared-ini-file-loader': 2.3.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/node-config-provider@3.1.4': + dependencies: + '@smithy/property-provider': 3.1.3 + '@smithy/shared-ini-file-loader': 3.1.4 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/node-config-provider@4.0.1': + dependencies: + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/node-http-handler@2.4.2': + dependencies: + '@smithy/abort-controller': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/querystring-builder': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/node-http-handler@3.1.4': + dependencies: + '@smithy/abort-controller': 3.1.1 + '@smithy/protocol-http': 4.1.0 + '@smithy/querystring-builder': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/node-http-handler@4.0.3': + dependencies: + '@smithy/abort-controller': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/property-provider@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/property-provider@3.1.3': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/property-provider@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/protocol-http@3.2.2': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/protocol-http@4.1.0': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/protocol-http@5.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/querystring-builder@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + '@smithy/util-uri-escape': 2.1.1 + tslib: 2.6.2 + + '@smithy/querystring-builder@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.2 + + '@smithy/querystring-builder@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.6.2 + + '@smithy/querystring-parser@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/querystring-parser@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/querystring-parser@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/service-error-classification@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + + '@smithy/service-error-classification@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + + '@smithy/service-error-classification@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + + '@smithy/shared-ini-file-loader@2.3.5': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/shared-ini-file-loader@3.1.4': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/shared-ini-file-loader@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/signature-v4@2.1.4': + dependencies: + '@smithy/eventstream-codec': 2.1.4 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/types': 2.11.0 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-middleware': 2.1.4 + '@smithy/util-uri-escape': 2.1.1 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/signature-v4@4.1.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.0 + '@smithy/types': 3.3.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/signature-v4@5.0.1': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + + '@smithy/smithy-client@2.4.4': + dependencies: + '@smithy/middleware-endpoint': 2.4.6 + '@smithy/middleware-stack': 2.1.4 + '@smithy/protocol-http': 3.2.2 + '@smithy/types': 2.11.0 + '@smithy/util-stream': 2.1.4 + tslib: 2.6.2 + + '@smithy/smithy-client@3.1.12': + dependencies: + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-stack': 3.0.3 + '@smithy/protocol-http': 4.1.0 + '@smithy/types': 3.3.0 + '@smithy/util-stream': 3.1.3 + tslib: 2.6.2 + + '@smithy/smithy-client@4.1.6': + dependencies: + '@smithy/core': 3.1.5 + '@smithy/middleware-endpoint': 4.0.6 + '@smithy/middleware-stack': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.1.2 + tslib: 2.6.2 + + '@smithy/types@2.11.0': + dependencies: + tslib: 2.6.2 + + '@smithy/types@3.3.0': + dependencies: + tslib: 2.6.2 + + '@smithy/types@4.1.0': + dependencies: + tslib: 2.6.2 + + '@smithy/url-parser@2.1.4': + dependencies: + '@smithy/querystring-parser': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/url-parser@3.0.3': + dependencies: + '@smithy/querystring-parser': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/url-parser@4.0.1': + dependencies: + '@smithy/querystring-parser': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/util-base64@2.2.0': + dependencies: + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + + '@smithy/util-body-length-browser@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-node@2.2.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-buffer-from@2.1.1': + dependencies: + '@smithy/is-array-buffer': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.6.2 + + '@smithy/util-config-provider@2.2.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-defaults-mode-browser@2.1.6': + dependencies: + '@smithy/property-provider': 2.1.4 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-browser@4.0.7': + dependencies: + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-node@2.2.6': + dependencies: + '@smithy/config-resolver': 2.1.5 + '@smithy/credential-provider-imds': 2.2.6 + '@smithy/node-config-provider': 2.2.5 + '@smithy/property-provider': 2.1.4 + '@smithy/smithy-client': 2.4.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-node@4.0.7': + dependencies: + '@smithy/config-resolver': 4.0.1 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.6 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/util-endpoints@1.1.5': + dependencies: + '@smithy/node-config-provider': 2.2.5 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/util-endpoints@3.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/util-hex-encoding@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-middleware@2.1.4': + dependencies: + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/util-middleware@3.0.3': + dependencies: + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/util-middleware@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/util-retry@2.1.4': + dependencies: + '@smithy/service-error-classification': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@smithy/util-retry@3.0.3': + dependencies: + '@smithy/service-error-classification': 3.0.3 + '@smithy/types': 3.3.0 + tslib: 2.6.2 + + '@smithy/util-retry@4.0.1': + dependencies: + '@smithy/service-error-classification': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@smithy/util-stream@2.1.4': + dependencies: + '@smithy/fetch-http-handler': 2.4.4 + '@smithy/node-http-handler': 2.4.2 + '@smithy/types': 2.11.0 + '@smithy/util-base64': 2.2.0 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-utf8': 2.2.0 + tslib: 2.6.2 + + '@smithy/util-stream@3.1.3': + dependencies: + '@smithy/fetch-http-handler': 3.2.4 + '@smithy/node-http-handler': 3.1.4 + '@smithy/types': 3.3.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-stream@4.1.2': + dependencies: + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.3 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + + '@smithy/util-uri-escape@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/util-utf8@2.2.0': + dependencies: + '@smithy/util-buffer-from': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.2 + + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.6.2 + + '@smithy/util-waiter@2.1.4': + dependencies: + '@smithy/abort-controller': 2.1.4 + '@smithy/types': 2.11.0 + tslib: 2.6.2 + + '@socket.io/component-emitter@3.1.0': {} + + '@sqltools/formatter@1.2.5': {} + + '@stripe/agent-toolkit@0.1.21(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(ai@3.2.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4))': + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + ai: 3.2.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4) + stripe: 17.6.0 + zod: 3.24.2 + + '@supabase/functions-js@2.1.5': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/gotrue-js@2.62.2': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/node-fetch@2.6.15': + dependencies: + whatwg-url: 5.0.0 + + '@supabase/postgrest-js@1.9.2': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/realtime-js@2.9.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + '@supabase/node-fetch': 2.6.15 + '@types/phoenix': 1.6.4 + '@types/ws': 8.5.10 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supabase/storage-js@2.5.5': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/supabase-js@2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4)': + dependencies: + '@supabase/functions-js': 2.1.5 + '@supabase/gotrue-js': 2.62.2 + '@supabase/node-fetch': 2.6.15 + '@supabase/postgrest-js': 1.9.2 + '@supabase/realtime-js': 2.9.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@supabase/storage-js': 2.5.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supercharge/promise-pool@3.1.1': {} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.12 + + '@svgr/babel-plugin-add-jsx-attribute@5.4.0': {} + + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': {} + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': {} + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': {} + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-svg-dynamic-title@5.4.0': {} + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-svg-em-dimensions@5.4.0': {} + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-transform-react-native-svg@5.4.0': {} + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-plugin-transform-svg-component@5.5.0': {} + + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@svgr/babel-preset@5.5.0': + dependencies: + '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 + '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 + '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 + '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 + '@svgr/babel-plugin-transform-svg-component': 5.5.0 + + '@svgr/babel-preset@8.1.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.9) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.9) + + '@svgr/core@5.5.0': + dependencies: + '@svgr/plugin-jsx': 5.5.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + + '@svgr/core@8.1.0(typescript@4.9.5)': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@4.9.5) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/core@8.1.0(typescript@5.5.2)': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.5.2) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/hast-util-to-babel-ast@5.5.0': + dependencies: + '@babel/types': 7.26.9 + + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.25.6 + entities: 4.5.0 + + '@svgr/plugin-jsx@5.5.0': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-preset': 5.5.0 + '@svgr/hast-util-to-babel-ast': 5.5.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) + '@svgr/core': 8.1.0(typescript@4.9.5) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))': + dependencies: + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) + '@svgr/core': 8.1.0(typescript@5.5.2) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@5.5.0': + dependencies: + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 1.3.2 + + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5)': + dependencies: + '@svgr/core': 8.1.0(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@4.9.5) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2)': + dependencies: + '@svgr/core': 8.1.0(typescript@5.5.2) + cosmiconfig: 8.3.6(typescript@5.5.2) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + + '@svgr/webpack@5.5.0': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.26.9) + '@babel/preset-env': 7.24.0(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@svgr/core': 5.5.0 + '@svgr/plugin-jsx': 5.5.0 + '@svgr/plugin-svgo': 5.5.0 + loader-utils: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/webpack@8.1.0(typescript@4.9.5)': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.26.9) + '@babel/preset-env': 7.24.5(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': 7.21.4(@babel/core@7.26.9) + '@svgr/core': 8.1.0(typescript@4.9.5) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@4.9.5))(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/webpack@8.1.0(typescript@5.5.2)': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.26.9) + '@babel/preset-env': 7.24.5(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': 7.21.4(@babel/core@7.26.9) + '@svgr/core': 8.1.0(typescript@5.5.2) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2) + transitivePeerDependencies: + - supports-color + - typescript + + '@swc/core-darwin-arm64@1.4.6': + optional: true + + '@swc/core-darwin-x64@1.4.6': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.4.6': + optional: true + + '@swc/core-linux-arm64-gnu@1.4.6': + optional: true + + '@swc/core-linux-arm64-musl@1.4.6': + optional: true + + '@swc/core-linux-x64-gnu@1.4.6': + optional: true + + '@swc/core-linux-x64-musl@1.4.6': + optional: true + + '@swc/core-win32-arm64-msvc@1.4.6': + optional: true + + '@swc/core-win32-ia32-msvc@1.4.6': + optional: true + + '@swc/core-win32-x64-msvc@1.4.6': + optional: true + + '@swc/core@1.4.6(@swc/helpers@0.5.5)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.5 + optionalDependencies: + '@swc/core-darwin-arm64': 1.4.6 + '@swc/core-darwin-x64': 1.4.6 + '@swc/core-linux-arm-gnueabihf': 1.4.6 + '@swc/core-linux-arm64-gnu': 1.4.6 + '@swc/core-linux-arm64-musl': 1.4.6 + '@swc/core-linux-x64-gnu': 1.4.6 + '@swc/core-linux-x64-musl': 1.4.6 + '@swc/core-win32-arm64-msvc': 1.4.6 + '@swc/core-win32-ia32-msvc': 1.4.6 + '@swc/core-win32-x64-msvc': 1.4.6 + '@swc/helpers': 0.5.5 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.5': + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.2 + + '@swc/types@0.1.5': {} + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@tabler/icons-react@3.3.0(react@18.2.0)': + dependencies: + '@tabler/icons': 3.3.0 + react: 18.2.0 + + '@tabler/icons@3.3.0': {} + + '@tailwindcss/typography@0.5.16(tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)))': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + + '@testing-library/dom@9.3.4': + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.24.0 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@5.17.0': + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.24.0 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/user-event@12.8.3(@testing-library/dom@9.3.4)': + dependencies: + '@babel/runtime': 7.24.0 + '@testing-library/dom': 9.3.4 + + '@textea/json-viewer@2.14.1(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + copy-to-clipboard: 3.3.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@tokenizer/token@0.3.0': {} + + '@tootallnate/once@1.1.2': {} + + '@tootallnate/once@2.0.0': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@trysound/sax@0.2.0': {} + + '@ts-stack/markdown@1.5.0': + dependencies: + tslib: 2.6.2 + + '@tsconfig/node10@1.0.9': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@tufjs/canonical-json@1.0.0': {} + + '@tufjs/models@1.0.4': + dependencies: + '@tufjs/canonical-json': 1.0.0 + minimatch: 9.0.4 + + '@types/acorn@4.0.6': + dependencies: + '@types/estree': 1.0.5 + + '@types/aria-query@5.0.4': {} - '@types/d3-array@3.2.1': {} + '@types/aws-lambda@8.10.143': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.24.8 + '@babel/types': 7.24.5 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 - '@types/d3-axis@3.0.6': - dependencies: - '@types/d3-selection': 3.0.10 + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.24.5 - '@types/d3-brush@3.0.6': - dependencies: - '@types/d3-selection': 3.0.10 + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.24.8 + '@babel/types': 7.24.5 - '@types/d3-chord@3.0.6': {} + '@types/babel__traverse@7.20.5': + dependencies: + '@babel/types': 7.24.5 - '@types/d3-color@3.1.3': {} + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.15.11 - '@types/d3-contour@3.0.6': - dependencies: - '@types/d3-array': 3.2.1 - '@types/geojson': 7946.0.14 + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 18.15.11 - '@types/d3-delaunay@6.0.4': {} + '@types/bunyan@1.8.9': + dependencies: + '@types/node': 18.15.11 - '@types/d3-dispatch@3.0.6': {} + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 18.15.11 + '@types/responselike': 1.0.3 - '@types/d3-drag@3.0.7': - dependencies: - '@types/d3-selection': 3.0.10 + '@types/caseless@0.12.5': {} - '@types/d3-dsv@3.0.7': {} + '@types/chrome@0.0.232': + dependencies: + '@types/filesystem': 0.0.36 + '@types/har-format': 1.2.15 - '@types/d3-ease@3.0.2': {} + '@types/cli-progress@3.11.5': + dependencies: + '@types/node': 18.15.11 - '@types/d3-fetch@3.0.7': - dependencies: - '@types/d3-dsv': 3.0.7 + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 4.17.43 + '@types/node': 18.15.11 - '@types/d3-force@3.0.9': {} + '@types/connect@3.4.36': + dependencies: + '@types/node': 18.15.11 - '@types/d3-format@3.0.4': {} + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.15.11 - '@types/d3-geo@3.1.0': - dependencies: - '@types/geojson': 7946.0.14 + '@types/content-disposition@0.5.8': {} - '@types/d3-hierarchy@3.1.6': {} + '@types/cookie@0.4.1': {} - '@types/d3-interpolate@3.0.4': - dependencies: - '@types/d3-color': 3.1.3 + '@types/cors@2.8.17': + dependencies: + '@types/node': 18.15.11 - '@types/d3-path@3.1.0': {} + '@types/crypto-js@4.2.2': {} - '@types/d3-polygon@3.0.2': {} + '@types/d3-array@3.2.1': {} - '@types/d3-quadtree@3.0.6': {} + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.10 - '@types/d3-random@3.0.3': {} + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.10 - '@types/d3-scale-chromatic@3.0.3': {} + '@types/d3-chord@3.0.6': {} - '@types/d3-scale@4.0.8': - dependencies: - '@types/d3-time': 3.0.3 + '@types/d3-color@3.1.3': {} - '@types/d3-selection@3.0.10': {} + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.14 - '@types/d3-shape@3.1.6': - dependencies: - '@types/d3-path': 3.1.0 + '@types/d3-delaunay@6.0.4': {} - '@types/d3-time-format@4.0.3': {} + '@types/d3-dispatch@3.0.6': {} - '@types/d3-time@3.0.3': {} + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.10 - '@types/d3-timer@3.0.2': {} + '@types/d3-dsv@3.0.7': {} - '@types/d3-transition@3.0.8': - dependencies: - '@types/d3-selection': 3.0.10 + '@types/d3-ease@3.0.2': {} - '@types/d3-zoom@3.0.8': - dependencies: - '@types/d3-interpolate': 3.0.4 - '@types/d3-selection': 3.0.10 + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 - '@types/d3@7.4.3': - dependencies: - '@types/d3-array': 3.2.1 - '@types/d3-axis': 3.0.6 - '@types/d3-brush': 3.0.6 - '@types/d3-chord': 3.0.6 - '@types/d3-color': 3.1.3 - '@types/d3-contour': 3.0.6 - '@types/d3-delaunay': 6.0.4 - '@types/d3-dispatch': 3.0.6 - '@types/d3-drag': 3.0.7 - '@types/d3-dsv': 3.0.7 - '@types/d3-ease': 3.0.2 - '@types/d3-fetch': 3.0.7 - '@types/d3-force': 3.0.9 - '@types/d3-format': 3.0.4 - '@types/d3-geo': 3.1.0 - '@types/d3-hierarchy': 3.1.6 - '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.1.0 - '@types/d3-polygon': 3.0.2 - '@types/d3-quadtree': 3.0.6 - '@types/d3-random': 3.0.3 - '@types/d3-scale': 4.0.8 - '@types/d3-scale-chromatic': 3.0.3 - '@types/d3-selection': 3.0.10 - '@types/d3-shape': 3.1.6 - '@types/d3-time': 3.0.3 - '@types/d3-time-format': 4.0.3 - '@types/d3-timer': 3.0.2 - '@types/d3-transition': 3.0.8 - '@types/d3-zoom': 3.0.8 + '@types/d3-force@3.0.9': {} - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 + '@types/d3-format@3.0.4': {} - '@types/diff-match-patch@1.0.36': {} + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.14 - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 8.56.5 - '@types/estree': 1.0.5 + '@types/d3-hierarchy@3.1.6': {} - '@types/eslint@8.56.5': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.5 + '@types/d3-path@3.1.0': {} - '@types/estree@0.0.39': {} + '@types/d3-polygon@3.0.2': {} - '@types/estree@1.0.5': {} + '@types/d3-quadtree@3.0.6': {} - '@types/expect@1.20.4': {} + '@types/d3-random@3.0.3': {} - '@types/express-serve-static-core@4.17.43': - dependencies: - '@types/node': 18.15.11 - '@types/qs': 6.9.12 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/d3-scale-chromatic@3.0.3': {} - '@types/express-session@1.18.1': - dependencies: - '@types/express': 4.17.21 + '@types/d3-scale@4.0.8': + dependencies: + '@types/d3-time': 3.0.3 - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.12 - '@types/serve-static': 1.15.5 + '@types/d3-selection@3.0.10': {} - '@types/filesystem@0.0.36': - dependencies: - '@types/filewriter': 0.0.33 + '@types/d3-shape@3.1.6': + dependencies: + '@types/d3-path': 3.1.0 - '@types/filewriter@0.0.33': {} + '@types/d3-time-format@4.0.3': {} - '@types/geojson@7946.0.14': {} + '@types/d3-time@3.0.3': {} - '@types/glob-stream@8.0.2': - dependencies: - '@types/node': 18.15.11 - '@types/picomatch': 2.3.3 - '@types/streamx': 2.9.5 + '@types/d3-timer@3.0.2': {} - '@types/google-protobuf@3.15.10': {} + '@types/d3-transition@3.0.8': + dependencies: + '@types/d3-selection': 3.0.10 - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 18.15.11 + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.10 - '@types/gtag.js@0.0.12': {} + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.9 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.6 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.0 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.3 + '@types/d3-selection': 3.0.10 + '@types/d3-shape': 3.1.6 + '@types/d3-time': 3.0.3 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.8 + '@types/d3-zoom': 3.0.8 - '@types/gulp@4.0.9': - dependencies: - '@types/undertaker': 1.2.11 - '@types/vinyl-fs': 3.0.5 - chokidar: 3.6.0 + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 - '@types/har-format@1.2.15': {} + '@types/diff-match-patch@1.0.36': {} - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.10 + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 8.56.5 + '@types/estree': 1.0.5 - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.2 + '@types/eslint@8.56.5': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 - '@types/history@4.7.11': {} + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.5 - '@types/hoist-non-react-statics@3.3.5': - dependencies: - '@types/react': 18.2.65 - hoist-non-react-statics: 3.3.2 + '@types/estree@0.0.39': {} - '@types/html-minifier-terser@6.1.0': {} + '@types/estree@1.0.5': {} - '@types/http-cache-semantics@4.0.4': {} + '@types/expect@1.20.4': {} - '@types/http-errors@2.0.4': {} + '@types/express-serve-static-core@4.17.43': + dependencies: + '@types/node': 18.15.11 + '@types/qs': 6.9.12 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 - '@types/http-proxy@1.17.14': - dependencies: - '@types/node': 18.15.11 + '@types/express-session@1.18.1': + dependencies: + '@types/express': 4.17.21 - '@types/is-stream@1.1.0': - dependencies: - '@types/node': 18.15.11 + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.12 + '@types/serve-static': 1.15.5 - '@types/istanbul-lib-coverage@2.0.6': {} + '@types/filesystem@0.0.36': + dependencies: + '@types/filewriter': 0.0.33 - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 + '@types/filewriter@0.0.33': {} - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 + '@types/geojson@7946.0.14': {} - '@types/jest@29.5.12': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + '@types/glob-stream@8.0.2': + dependencies: + '@types/node': 18.15.11 + '@types/picomatch': 2.3.3 + '@types/streamx': 2.9.5 - '@types/js-cookie@3.0.6': {} + '@types/google-protobuf@3.15.10': {} - '@types/js-yaml@4.0.9': {} + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 18.15.11 - '@types/jsdom@21.1.6': - dependencies: - '@types/node': 18.15.11 - '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 + '@types/gtag.js@0.0.12': {} - '@types/json-patch@0.0.30': {} + '@types/gulp@4.0.9': + dependencies: + '@types/undertaker': 1.2.11 + '@types/vinyl-fs': 3.0.5 + chokidar: 3.6.0 - '@types/json-schema@7.0.15': {} + '@types/har-format@1.2.15': {} - '@types/json5@0.0.29': {} + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.10 - '@types/katex@0.16.7': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 - '@types/keyv@3.1.4': - dependencies: - '@types/node': 18.15.11 + '@types/history@4.7.11': {} - '@types/lodash-es@4.17.12': - dependencies: - '@types/lodash': 4.17.4 + '@types/hoist-non-react-statics@3.3.5': + dependencies: + '@types/react': 18.2.65 + hoist-non-react-statics: 3.3.2 - '@types/lodash@4.14.202': {} + '@types/html-minifier-terser@6.1.0': {} - '@types/lodash@4.17.4': {} + '@types/http-cache-semantics@4.0.4': {} - '@types/long@4.0.2': {} + '@types/http-errors@2.0.4': {} - '@types/mathjax@0.0.37': {} + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 18.15.11 - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.10 + '@types/is-stream@1.1.0': + dependencies: + '@types/node': 18.15.11 - '@types/mdast@4.0.3': - dependencies: - '@types/unist': 3.0.2 + '@types/istanbul-lib-coverage@2.0.6': {} - '@types/mdx@2.0.13': {} + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 - '@types/mime@1.3.5': {} + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 - '@types/mime@3.0.4': {} + '@types/jest@29.5.12': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 - '@types/minimatch@3.0.5': {} + '@types/js-cookie@3.0.6': {} - '@types/ms@0.7.34': {} + '@types/js-yaml@4.0.9': {} - '@types/multer@1.4.11': - dependencies: - '@types/express': 4.17.21 + '@types/jsdom@21.1.6': + dependencies: + '@types/node': 18.15.11 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 - '@types/node-fetch@2.6.11': - dependencies: - '@types/node': 18.15.11 - form-data: 4.0.0 + '@types/json-patch@0.0.30': {} - '@types/node-fetch@2.6.2': - dependencies: - '@types/node': 18.15.11 - form-data: 3.0.1 + '@types/json-schema@7.0.15': {} - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 18.15.11 + '@types/json5@0.0.29': {} - '@types/node@14.18.63': {} + '@types/katex@0.16.7': {} - '@types/node@15.14.9': {} + '@types/keyv@3.1.4': + dependencies: + '@types/node': 18.15.11 - '@types/node@16.18.105': {} + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.16 - '@types/node@17.0.45': {} + '@types/lodash@4.14.202': {} - '@types/node@18.15.11': {} + '@types/lodash@4.17.16': {} - '@types/node@20.12.12': - dependencies: - undici-types: 5.26.5 + '@types/lodash@4.17.4': {} - '@types/normalize-package-data@2.4.4': {} + '@types/long@4.0.2': {} - '@types/oauth@0.9.6': - dependencies: - '@types/node': 18.15.11 + '@types/mathjax@0.0.37': {} - '@types/object-hash@3.0.6': {} + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.10 - '@types/papaparse@5.3.14': - dependencies: - '@types/node': 18.15.11 + '@types/mdast@4.0.3': + dependencies: + '@types/unist': 3.0.2 - '@types/parse-json@4.0.2': {} + '@types/mdx@2.0.13': {} - '@types/passport-google-oauth20@2.0.16': - dependencies: - '@types/express': 4.17.21 - '@types/passport': 1.0.17 - '@types/passport-oauth2': 1.4.17 + '@types/memcached@2.2.10': + dependencies: + '@types/node': 18.15.11 - '@types/passport-oauth2@1.4.17': - dependencies: - '@types/express': 4.17.21 - '@types/oauth': 0.9.6 - '@types/passport': 1.0.17 + '@types/mime@1.3.5': {} - '@types/passport@1.0.17': - dependencies: - '@types/express': 4.17.21 + '@types/mime@3.0.4': {} - '@types/pdf-parse@1.1.4': {} + '@types/minimatch@3.0.5': {} - '@types/pg@8.11.2': - dependencies: - '@types/node': 18.15.11 - pg-protocol: 1.6.0 - pg-types: 4.0.2 + '@types/ms@0.7.34': {} - '@types/pg@8.11.6': - dependencies: - '@types/node': 18.15.11 - pg-protocol: 1.6.1 - pg-types: 4.0.2 + '@types/multer-s3@3.0.3(aws-crt@1.21.3(bufferutil@4.0.8))': + dependencies: + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@types/multer': 1.4.11 + '@types/node': 18.15.11 + transitivePeerDependencies: + - aws-crt - '@types/phoenix@1.6.4': {} + '@types/multer@1.4.11': + dependencies: + '@types/express': 4.17.21 - '@types/picomatch@2.3.3': {} + '@types/mysql@2.15.26': + dependencies: + '@types/node': 18.15.11 - '@types/prettier@2.7.3': {} + '@types/node-fetch@2.6.11': + dependencies: + '@types/node': 18.15.11 + form-data: 4.0.2 - '@types/prismjs@1.26.4': {} + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 18.15.11 + form-data: 4.0.2 - '@types/prop-types@15.7.11': {} + '@types/node-fetch@2.6.2': + dependencies: + '@types/node': 18.15.11 + form-data: 3.0.1 - '@types/q@1.5.8': {} + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 18.15.11 - '@types/qs@6.9.12': {} + '@types/node@14.18.63': {} - '@types/range-parser@1.2.7': {} + '@types/node@15.14.9': {} - '@types/react-dom@18.2.21': - dependencies: - '@types/react': 18.2.65 + '@types/node@16.18.105': {} - '@types/react-router-config@5.0.11': - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.65 - '@types/react-router': 5.1.20 + '@types/node@17.0.45': {} - '@types/react-router-dom@5.3.3': - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.65 - '@types/react-router': 5.1.20 + '@types/node@18.15.11': {} - '@types/react-router@5.1.20': - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.65 + '@types/node@20.12.12': + dependencies: + undici-types: 5.26.5 - '@types/react-syntax-highlighter@15.5.13': - dependencies: - '@types/react': 18.2.65 + '@types/node@22.13.9': + dependencies: + undici-types: 6.20.0 - '@types/react-transition-group@4.4.10': - dependencies: - '@types/react': 18.2.65 + '@types/normalize-package-data@2.4.4': {} - '@types/react-window@1.8.8': - dependencies: - '@types/react': 18.2.65 + '@types/oauth@0.9.6': + dependencies: + '@types/node': 18.15.11 - '@types/react@18.0.32': - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 + '@types/object-hash@3.0.6': {} - '@types/react@18.2.65': - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 + '@types/papaparse@5.3.15': + dependencies: + '@types/node': 18.15.11 - '@types/request@2.48.12': - dependencies: - '@types/caseless': 0.12.5 - '@types/node': 18.15.11 - '@types/tough-cookie': 4.0.5 - form-data: 2.5.1 + '@types/parse-json@4.0.2': {} - '@types/resolve@1.17.1': - dependencies: - '@types/node': 18.15.11 + '@types/passport-google-oauth20@2.0.16': + dependencies: + '@types/express': 4.17.21 + '@types/passport': 1.0.17 + '@types/passport-oauth2': 1.4.17 - '@types/resolve@1.20.2': {} + '@types/passport-oauth2@1.4.17': + dependencies: + '@types/express': 4.17.21 + '@types/oauth': 0.9.6 + '@types/passport': 1.0.17 - '@types/responselike@1.0.3': - dependencies: - '@types/node': 18.15.11 + '@types/passport@1.0.17': + dependencies: + '@types/express': 4.17.21 - '@types/retry@0.12.0': {} + '@types/pdf-parse@1.1.4': {} - '@types/sanitize-html@2.11.0': - dependencies: - htmlparser2: 8.0.2 + '@types/pg-pool@2.0.6': + dependencies: + '@types/pg': 8.11.6 - '@types/sax@1.2.7': - dependencies: - '@types/node': 18.15.11 + '@types/pg@8.11.2': + dependencies: + '@types/node': 18.15.11 + pg-protocol: 1.6.0 + pg-types: 4.0.2 - '@types/scheduler@0.16.8': {} + '@types/pg@8.11.6': + dependencies: + '@types/node': 18.15.11 + pg-protocol: 1.6.1 + pg-types: 4.0.2 - '@types/semver@7.5.8': {} + '@types/pg@8.6.1': + dependencies: + '@types/node': 18.15.11 + pg-protocol: 1.6.1 + pg-types: 2.2.0 - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 18.15.11 + '@types/phoenix@1.6.4': {} - '@types/serve-index@1.9.4': - dependencies: - '@types/express': 4.17.21 + '@types/picomatch@2.3.3': {} - '@types/serve-static@1.15.5': - dependencies: - '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 18.15.11 + '@types/prettier@2.7.3': {} - '@types/sinonjs__fake-timers@8.1.1': {} + '@types/prismjs@1.26.4': {} - '@types/sizzle@2.3.8': {} + '@types/prop-types@15.7.11': {} - '@types/sockjs@0.3.36': - dependencies: - '@types/node': 18.15.11 + '@types/q@1.5.8': {} - '@types/stack-utils@2.0.3': {} - - '@types/streamx@2.9.5': - dependencies: - '@types/node': 18.15.11 - - '@types/swagger2openapi@7.0.4': - dependencies: - '@types/node': 18.15.11 - openapi-types: 12.1.3 - - '@types/testing-library__jest-dom@5.14.9': - dependencies: - '@types/jest': 29.5.12 - - '@types/tough-cookie@4.0.5': {} - - '@types/triple-beam@1.3.5': {} - - '@types/trusted-types@2.0.7': {} - - '@types/undertaker-registry@1.0.4': {} - - '@types/undertaker@1.2.11': - dependencies: - '@types/node': 18.15.11 - '@types/undertaker-registry': 1.0.4 - async-done: 1.3.2 - - '@types/unist@2.0.10': {} - - '@types/unist@3.0.2': {} - - '@types/use-sync-external-store@0.0.3': {} - - '@types/uuid@8.3.4': {} - - '@types/uuid@9.0.8': {} - - '@types/vinyl-fs@3.0.5': - dependencies: - '@types/glob-stream': 8.0.2 - '@types/node': 18.15.11 - '@types/vinyl': 2.0.11 - - '@types/vinyl@2.0.11': - dependencies: - '@types/expect': 1.20.4 - '@types/node': 18.15.11 - - '@types/webidl-conversions@7.0.3': {} - - '@types/whatwg-url@11.0.4': - dependencies: - '@types/webidl-conversions': 7.0.3 - - '@types/ws@8.5.10': - dependencies: - '@types/node': 18.15.11 - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@16.0.9': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@types/yargs@17.0.32': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 18.15.11 - optional: true - - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint@8.37.0)(typescript@5.0.3)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.37.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare-lite: 1.4.0 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.0.3) - optionalDependencies: - typescript: 5.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare-lite: 1.4.0 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5)': - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.37.0 - optionalDependencies: - typescript: 5.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/type-utils@5.62.0(eslint@8.37.0)(typescript@5.0.3)': - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - debug: 4.3.6(supports-color@5.5.0) - eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.3) - optionalDependencies: - typescript: 5.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.6(supports-color@5.5.0) - eslint: 8.57.0 - tsutils: 3.21.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/types@7.13.1': {} - - '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@4.9.5) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.3)': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.0.3) - optionalDependencies: - typescript: 5.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2)': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2)': - dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@5.62.0(eslint@8.37.0)(typescript@5.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) - eslint: 8.37.0 - eslint-scope: 5.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) - eslint: 8.57.0 - eslint-scope: 5.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.13.1': - dependencies: - '@typescript-eslint/types': 7.13.1 - eslint-visitor-keys: 3.4.3 - - '@uiw/codemirror-extensions-basic-setup@4.21.24(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': - dependencies: - '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1) - '@codemirror/commands': 6.3.3 - '@codemirror/language': 6.10.1 - '@codemirror/lint': 6.5.0 - '@codemirror/search': 6.5.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - - '@uiw/codemirror-theme-sublime@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': - dependencies: - '@uiw/codemirror-themes': 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-vscode@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': - dependencies: - '@uiw/codemirror-themes': 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-themes@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': - dependencies: - '@codemirror/language': 6.10.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.25.1 - - '@uiw/react-codemirror@4.21.24(@babel/runtime@7.24.0)(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.25.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@codemirror/commands': 6.3.3 - '@codemirror/state': 6.4.1 - '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.25.1 - '@uiw/codemirror-extensions-basic-setup': 4.21.24(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) - codemirror: 6.0.1(@lezer/common@1.2.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/lint' - - '@codemirror/search' - - '@ungap/structured-clone@1.2.0': {} - - '@upstash/redis@1.22.1(encoding@0.1.13)': - dependencies: - isomorphic-fetch: 3.0.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@upstash/vector@1.1.5': {} - - '@vercel/stega@0.1.2': {} - - '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1))': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) - magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) - transitivePeerDependencies: - - supports-color - - '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@20.12.12)(sass@1.71.1))': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) - magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 4.5.2(@types/node@20.12.12)(sass@1.71.1) - transitivePeerDependencies: - - supports-color - - '@vitejs/plugin-react@4.2.1(vite@5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1))': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.0 - vite: 5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1) - transitivePeerDependencies: - - supports-color - - '@vue/compiler-core@3.4.31': - dependencies: - '@babel/parser': 7.25.6 - '@vue/shared': 3.4.31 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - - '@vue/compiler-dom@3.4.31': - dependencies: - '@vue/compiler-core': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/compiler-sfc@3.4.31': - dependencies: - '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.4.31 - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.39 - source-map-js: 1.2.0 - - '@vue/compiler-ssr@3.4.31': - dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/reactivity@3.4.31': - dependencies: - '@vue/shared': 3.4.31 - - '@vue/runtime-core@3.4.31': - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/runtime-dom@3.4.31': - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/runtime-core': 3.4.31 - '@vue/shared': 3.4.31 - csstype: 3.1.3 - - '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.2))': - dependencies: - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - vue: 3.4.31(typescript@5.5.2) - - '@vue/shared@3.4.31': {} - - '@webassemblyjs/ast@1.11.6': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - - '@webassemblyjs/helper-api-error@1.11.6': {} - - '@webassemblyjs/helper-buffer@1.11.6': {} - - '@webassemblyjs/helper-numbers@1.11.6': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - - '@webassemblyjs/helper-wasm-section@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - - '@webassemblyjs/ieee754@1.11.6': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.6': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/wasm-edit@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 - - '@webassemblyjs/wasm-gen@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-opt@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - - '@webassemblyjs/wasm-parser@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wast-printer@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': - dependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.90.3) - - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': - dependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.90.3) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': - dependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.90.3) - - '@xenova/transformers@2.17.1': - dependencies: - '@huggingface/jinja': 0.2.2 - onnxruntime-web: 1.14.0 - sharp: 0.32.6 - optionalDependencies: - onnxruntime-node: 1.14.0 - - '@xmldom/xmldom@0.8.10': {} - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@zilliz/milvus2-sdk-node@2.3.5': - dependencies: - '@grpc/grpc-js': 1.8.17 - '@grpc/proto-loader': 0.7.7 - dayjs: 1.11.10 - lru-cache: 9.1.2 - protobufjs: 7.2.4 - winston: 3.12.0 - - '@zilliz/milvus2-sdk-node@2.4.2': - dependencies: - '@grpc/grpc-js': 1.10.8 - '@grpc/proto-loader': 0.7.13 - '@petamoriken/float16': 3.8.7 - dayjs: 1.11.10 - generic-pool: 3.9.0 - lru-cache: 9.1.2 - protobufjs: 7.2.6 - winston: 3.12.0 - - aai-embed-react@1.0.8(@types/node@20.12.12)(aai-embed@packages+embed)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5): - dependencies: - '@ladle/react': 2.5.1(@types/node@20.12.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5) - aai-embed: link:packages/embed - react: 18.2.0 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - react-dom - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - - abab@2.0.6: {} - - abbrev@1.1.1: {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - abortcontroller-polyfill@1.7.5: {} - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-globals@6.0.0: - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - - acorn-globals@7.0.1: - dependencies: - acorn: 8.11.3 - acorn-walk: 8.3.2 - - acorn-import-assertions@1.9.0(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-jsx@5.3.2(acorn@7.4.1): - dependencies: - acorn: 7.4.1 - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-walk@7.2.0: {} - - acorn-walk@8.3.2: {} - - acorn@7.4.1: {} - - acorn@8.11.3: {} - - add@2.0.6: {} - - address@1.2.2: {} - - adjust-sourcemap-loader@4.0.0: - dependencies: - loader-utils: 2.0.4 - regex-parser: 2.3.0 - - afinn-165-financialmarketnews@3.0.0: {} - - afinn-165@1.0.4: {} - - agent-base@6.0.2: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - agent-base@7.1.0: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ai@3.2.22(openai@4.51.0(encoding@0.1.13))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4): - dependencies: - '@ai-sdk/provider': 0.0.12 - '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) - '@ai-sdk/react': 0.0.20(react@18.2.0)(zod@3.22.4) - '@ai-sdk/solid': 0.0.14(zod@3.22.4) - '@ai-sdk/svelte': 0.0.15(svelte@4.2.18)(zod@3.22.4) - '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) - '@ai-sdk/vue': 0.0.15(vue@3.4.31(typescript@5.5.2))(zod@3.22.4) - '@opentelemetry/api': 1.9.0 - eventsource-parser: 1.1.2 - json-schema: 0.4.0 - jsondiffpatch: 0.6.0 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - sswr: 2.1.0(svelte@4.2.18) - zod-to-json-schema: 3.22.5(zod@3.22.4) - optionalDependencies: - openai: 4.51.0(encoding@0.1.13) - react: 18.2.0 - svelte: 4.2.18 - zod: 3.22.4 - transitivePeerDependencies: - - solid-js - - vue - - airtable@0.11.6(encoding@0.1.13): - dependencies: - '@types/node': 14.18.63 - abort-controller: 3.0.0 - abortcontroller-polyfill: 1.7.5 - lodash: 4.17.21 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - ajv-formats@2.1.1(ajv@8.13.0): - optionalDependencies: - ajv: 8.13.0 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@5.1.0(ajv@8.13.0): - dependencies: - ajv: 8.13.0 - fast-deep-equal: 3.1.3 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.13.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - algoliasearch-helper@3.22.4(algoliasearch@4.24.0): - dependencies: - '@algolia/events': 4.0.1 - algoliasearch: 4.24.0 - - algoliasearch@4.24.0: - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-account': 4.24.0 - '@algolia/client-analytics': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-personalization': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/recommend': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - align-text@0.1.4: - dependencies: - kind-of: 3.2.2 - longest: 1.0.1 - repeat-string: 1.6.1 - - already@2.2.1: {} - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-bgblack@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgblue@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgcyan@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bggreen@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgmagenta@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgred@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgwhite@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bgyellow@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-black@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-blue@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-bold@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-colors@0.1.0: - dependencies: - ansi-bgblack: 0.1.1 - ansi-bgblue: 0.1.1 - ansi-bgcyan: 0.1.1 - ansi-bggreen: 0.1.1 - ansi-bgmagenta: 0.1.1 - ansi-bgred: 0.1.1 - ansi-bgwhite: 0.1.1 - ansi-bgyellow: 0.1.1 - ansi-black: 0.1.1 - ansi-blue: 0.1.1 - ansi-bold: 0.1.1 - ansi-cyan: 0.1.1 - ansi-dim: 0.1.1 - ansi-gray: 0.1.1 - ansi-green: 0.1.1 - ansi-grey: 0.1.1 - ansi-hidden: 0.1.1 - ansi-inverse: 0.1.1 - ansi-italic: 0.1.1 - ansi-magenta: 0.1.1 - ansi-red: 0.1.1 - ansi-reset: 0.1.1 - ansi-strikethrough: 0.1.1 - ansi-underline: 0.1.1 - ansi-white: 0.1.1 - ansi-yellow: 0.1.1 - lazy-cache: 0.2.7 - - ansi-colors@0.2.0: - dependencies: - ansi-bgblack: 0.1.1 - ansi-bgblue: 0.1.1 - ansi-bgcyan: 0.1.1 - ansi-bggreen: 0.1.1 - ansi-bgmagenta: 0.1.1 - ansi-bgred: 0.1.1 - ansi-bgwhite: 0.1.1 - ansi-bgyellow: 0.1.1 - ansi-black: 0.1.1 - ansi-blue: 0.1.1 - ansi-bold: 0.1.1 - ansi-cyan: 0.1.1 - ansi-dim: 0.1.1 - ansi-gray: 0.1.1 - ansi-green: 0.1.1 - ansi-grey: 0.1.1 - ansi-hidden: 0.1.1 - ansi-inverse: 0.1.1 - ansi-italic: 0.1.1 - ansi-magenta: 0.1.1 - ansi-red: 0.1.1 - ansi-reset: 0.1.1 - ansi-strikethrough: 0.1.1 - ansi-underline: 0.1.1 - ansi-white: 0.1.1 - ansi-yellow: 0.1.1 - lazy-cache: 2.0.2 - - ansi-colors@1.1.0: - dependencies: - ansi-wrap: 0.1.0 - - ansi-colors@4.1.3: {} - - ansi-cyan@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-dim@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-escapes@1.4.0: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@5.0.0: - dependencies: - type-fest: 1.4.0 - - ansi-gray@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-green@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-grey@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-hidden@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-html-community@0.0.8: {} - - ansi-inverse@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-italic@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-magenta@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-red@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-regex@2.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-reset@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-strikethrough@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - - ansi-styles@2.2.1: {} + '@types/qs@6.9.12': {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 + '@types/range-parser@1.2.7': {} - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 + '@types/react-dom@18.2.21': + dependencies: + '@types/react': 18.2.65 - ansi-styles@5.2.0: {} + '@types/react-router-config@5.0.11': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.65 + '@types/react-router': 5.1.20 - ansi-styles@6.2.1: {} + '@types/react-router-dom@5.3.3': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.65 + '@types/react-router': 5.1.20 - ansi-underline@0.1.1: - dependencies: - ansi-wrap: 0.1.0 + '@types/react-router@5.1.20': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.65 - ansi-white@0.1.1: - dependencies: - ansi-wrap: 0.1.0 + '@types/react-syntax-highlighter@15.5.13': + dependencies: + '@types/react': 18.2.65 - ansi-wrap@0.1.0: {} + '@types/react-transition-group@4.4.10': + dependencies: + '@types/react': 18.2.65 - ansi-yellow@0.1.1: - dependencies: - ansi-wrap: 0.1.0 + '@types/react-window@1.8.8': + dependencies: + '@types/react': 18.2.65 - ansicolors@0.3.2: {} + '@types/react@18.0.32': + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 - any-promise@1.3.0: {} + '@types/react@18.2.65': + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 - anymatch@2.0.0: - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color + '@types/request@2.48.12': + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 18.15.11 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.1 - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + '@types/resolve@1.17.1': + dependencies: + '@types/node': 18.15.11 - apify-client@2.9.3: - dependencies: - '@apify/consts': 2.26.0 - '@apify/log': 2.5.0 - '@crawlee/types': 3.8.1 - agentkeepalive: 4.5.0 - async-retry: 1.3.3 - axios: 1.7.2(debug@4.3.6) - content-type: 1.0.5 - ow: 0.28.2 - tslib: 2.6.2 - type-fest: 4.12.0 - transitivePeerDependencies: - - debug + '@types/resolve@1.20.2': {} - app-root-path@3.1.0: {} + '@types/responselike@1.0.3': + dependencies: + '@types/node': 18.15.11 - apparatus@0.0.10: - dependencies: - sylvester: 0.0.12 + '@types/retry@0.12.0': {} - append-buffer@1.0.2: - dependencies: - buffer-equal: 1.0.1 + '@types/sanitize-html@2.11.0': + dependencies: + htmlparser2: 8.0.2 - append-field@1.0.0: {} + '@types/sax@1.2.7': + dependencies: + '@types/node': 18.15.11 - aproba@2.0.0: {} + '@types/scheduler@0.16.8': {} - arch@2.2.0: {} + '@types/semver@7.5.8': {} - archy@1.0.0: {} + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.15.11 - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 + '@types/serve-static@1.15.5': + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 18.15.11 - arg@4.1.3: {} + '@types/shimmer@1.2.0': {} - arg@5.0.2: {} + '@types/sinonjs__fake-timers@8.1.1': {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 + '@types/sizzle@2.3.8': {} - argparse@2.0.1: {} + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 18.15.11 - aria-query@5.1.3: - dependencies: - deep-equal: 2.2.3 + '@types/stack-utils@2.0.3': {} - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 + '@types/streamx@2.9.5': + dependencies: + '@types/node': 18.15.11 - arr-diff@2.0.0: - dependencies: - arr-flatten: 1.1.0 + '@types/swagger-jsdoc@6.0.4': {} - arr-diff@4.0.0: {} + '@types/swagger-ui-express@4.1.8': + dependencies: + '@types/express': 4.17.21 + '@types/serve-static': 1.15.5 - arr-filter@1.1.2: - dependencies: - make-iterator: 1.0.1 + '@types/swagger2openapi@7.0.4': + dependencies: + '@types/node': 18.15.11 + openapi-types: 12.1.3 - arr-flatten@1.1.0: {} + '@types/tedious@4.0.14': + dependencies: + '@types/node': 18.15.11 + + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 29.5.12 + + '@types/tough-cookie@4.0.5': {} + + '@types/triple-beam@1.3.5': {} + + '@types/trusted-types@2.0.7': {} + + '@types/undertaker-registry@1.0.4': {} + + '@types/undertaker@1.2.11': + dependencies: + '@types/node': 18.15.11 + '@types/undertaker-registry': 1.0.4 + async-done: 1.3.2 + + '@types/unist@2.0.10': {} + + '@types/unist@3.0.2': {} + + '@types/use-sync-external-store@0.0.3': {} + + '@types/uuid@10.0.0': {} + + '@types/uuid@8.3.4': {} + + '@types/uuid@9.0.8': {} + + '@types/vinyl-fs@3.0.5': + dependencies: + '@types/glob-stream': 8.0.2 + '@types/node': 18.15.11 + '@types/vinyl': 2.0.11 + + '@types/vinyl@2.0.11': + dependencies: + '@types/expect': 1.20.4 + '@types/node': 18.15.11 + + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@11.0.4': + dependencies: + '@types/webidl-conversions': 7.0.3 + + '@types/ws@8.5.10': + dependencies: + '@types/node': 18.15.11 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.32': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 18.15.11 + optional: true + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint@8.37.0)(typescript@5.0.3)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.37.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.0.3) + optionalDependencies: + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.4.0(supports-color@5.5.0) + eslint: 7.32.0 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.37.0 + optionalDependencies: + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.0 + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.1 + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.37.0)(typescript@5.0.3)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.37.0 + tsutils: 3.21.0(typescript@5.0.3) + optionalDependencies: + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.0 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + debug: 4.4.0(supports-color@5.5.0) + eslint: 8.57.1 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/types@7.13.1': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.1 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.3)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.0.3) + optionalDependencies: + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.7.1 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.37.0)(typescript@5.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.3) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.5.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.13.1': + dependencies: + '@typescript-eslint/types': 7.13.1 + eslint-visitor-keys: 3.4.3 + + '@uiw/codemirror-extensions-basic-setup@4.21.24(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': + dependencies: + '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1) + '@codemirror/commands': 6.3.3 + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + + '@uiw/codemirror-theme-sublime@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': + dependencies: + '@uiw/codemirror-themes': 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + + '@uiw/codemirror-theme-vscode@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': + dependencies: + '@uiw/codemirror-themes': 4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + + '@uiw/codemirror-themes@4.21.24(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)': + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.25.1 + + '@uiw/react-codemirror@4.21.24(@babel/runtime@7.24.0)(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.25.1)(codemirror@6.0.1(@lezer/common@1.2.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.0 + '@codemirror/commands': 6.3.3 + '@codemirror/state': 6.4.1 + '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/view': 6.25.1 + '@uiw/codemirror-extensions-basic-setup': 4.21.24(@codemirror/autocomplete@6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1))(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1) + codemirror: 6.0.1(@lezer/common@1.2.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + + '@ungap/structured-clone@1.2.0': {} + + '@upstash/redis@1.22.1(encoding@0.1.13)': + dependencies: + isomorphic-fetch: 3.0.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@upstash/vector@1.1.5': {} + + '@vercel/stega@0.1.2': {} + + '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1))': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.26.9) + magic-string: 0.27.0 + react-refresh: 0.14.0 + vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@22.13.9)(sass@1.71.1))': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.26.9) + magic-string: 0.27.0 + react-refresh: 0.14.0 + vite: 4.5.2(@types/node@22.13.9)(sass@1.71.1) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.2.1(vite@5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1))': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.26.9) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1) + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.4.31': + dependencies: + '@babel/parser': 7.26.9 + '@vue/shared': 3.4.31 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.31': + dependencies: + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/compiler-sfc@3.4.31': + dependencies: + '@babel/parser': 7.26.9 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.39 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.4.31': + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/reactivity@3.4.31': + dependencies: + '@vue/shared': 3.4.31 + + '@vue/runtime-core@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/runtime-dom@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.2))': + dependencies: + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.2) + + '@vue/shared@3.4.31': {} + + '@webassemblyjs/ast@1.11.6': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.11.6': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + + '@webassemblyjs/wasm-gen@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + + '@webassemblyjs/wasm-parser@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.11.6': + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + dependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.3) + + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + dependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.3) + + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + dependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.3) + + '@xenova/transformers@2.17.1': + dependencies: + '@huggingface/jinja': 0.2.2 + onnxruntime-web: 1.14.0 + sharp: 0.32.6 + optionalDependencies: + onnxruntime-node: 1.14.0 + + '@xmldom/xmldom@0.8.10': {} + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + '@zilliz/milvus2-sdk-node@2.3.5': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@grpc/proto-loader': 0.7.7 + dayjs: 1.11.10 + lru-cache: 9.1.2 + protobufjs: 7.4.0 + winston: 3.12.0 + + '@zilliz/milvus2-sdk-node@2.4.2': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@grpc/proto-loader': 0.7.13 + '@petamoriken/float16': 3.8.7 + dayjs: 1.11.10 + generic-pool: 3.9.0 + lru-cache: 9.1.2 + protobufjs: 7.4.0 + winston: 3.12.0 + + aai-embed-react@1.0.8(@types/node@22.13.9)(aai-embed@packages+embed)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5): + dependencies: + '@ladle/react': 2.5.1(@types/node@22.13.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1)(typescript@4.9.5) + aai-embed: link:packages/embed + react: 18.2.0 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - react-dom + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + + abab@2.0.6: {} + + abbrev@1.1.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + abortcontroller-polyfill@1.7.5: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.0 + negotiator: 1.0.0 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-globals@7.0.1: + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + + acorn-import-assertions@1.9.0(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn-import-attributes@1.9.5(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-jsx@5.3.2(acorn@7.4.1): + dependencies: + acorn: 7.4.1 + + acorn-jsx@5.3.2(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn-walk@7.2.0: {} + + acorn-walk@8.3.2: {} + + acorn@7.4.1: {} + + acorn@8.11.3: {} + + acorn@8.14.1: {} + + add@2.0.6: {} + + address@1.2.2: {} + + adjust-sourcemap-loader@4.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + + adm-zip@0.5.16: {} + + afinn-165-financialmarketnews@3.0.0: {} + + afinn-165@1.0.4: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.0: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ai@3.2.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4): + dependencies: + '@ai-sdk/provider': 0.0.12 + '@ai-sdk/provider-utils': 1.0.2(zod@3.22.4) + '@ai-sdk/react': 0.0.20(react@18.2.0)(zod@3.22.4) + '@ai-sdk/solid': 0.0.14(zod@3.22.4) + '@ai-sdk/svelte': 0.0.15(svelte@4.2.18)(zod@3.22.4) + '@ai-sdk/ui-utils': 0.0.12(zod@3.22.4) + '@ai-sdk/vue': 0.0.15(vue@3.4.31(typescript@5.5.2))(zod@3.22.4) + '@opentelemetry/api': 1.9.0 + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + sswr: 2.1.0(svelte@4.2.18) + zod-to-json-schema: 3.22.5(zod@3.22.4) + optionalDependencies: + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + react: 18.2.0 + svelte: 4.2.18 + zod: 3.22.4 + transitivePeerDependencies: + - solid-js + - vue + + airtable@0.11.6(encoding@0.1.13): + dependencies: + '@types/node': 14.18.63 + abort-controller: 3.0.0 + abortcontroller-polyfill: 1.7.5 + lodash: 4.17.21 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + ajv-formats@2.1.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.13.0): + dependencies: + ajv: 8.13.0 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + algoliasearch-helper@3.22.4(algoliasearch@4.24.0): + dependencies: + '@algolia/events': 4.0.1 + algoliasearch: 4.24.0 + + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + already@2.2.1: {} + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@1.1.0: + dependencies: + ansi-wrap: 0.1.0 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-gray@0.1.1: + dependencies: + ansi-wrap: 0.1.0 + + ansi-html-community@0.0.8: {} + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 - arr-map@2.0.2: - dependencies: - make-iterator: 1.0.1 - - arr-pluck@0.1.0: - dependencies: - arr-map: 2.0.2 - - arr-union@3.1.0: {} - - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-differ@3.0.0: {} - - array-each@1.0.1: {} - - array-flatten@1.1.1: {} - - array-includes@3.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-initial@1.1.0: - dependencies: - array-slice: 1.1.0 - is-number: 4.0.0 - - array-keyed-map@2.1.3: {} - - array-last@1.3.0: - dependencies: - is-number: 4.0.0 - - array-slice@1.1.0: {} - - array-sort@0.1.4: - dependencies: - default-compare: 1.0.0 - get-value: 2.0.6 - kind-of: 5.1.0 - - array-sort@1.0.0: - dependencies: - default-compare: 1.0.0 - get-value: 2.0.6 - kind-of: 5.1.0 - - array-union@2.1.0: {} - - array-unique@0.2.1: {} - - array-unique@0.3.2: {} - - array.prototype.filter@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - - array.prototype.findlast@1.2.4: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - array.prototype.findlastindex@1.2.4: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 - - array.prototype.reduce@1.0.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 - - array.prototype.tosorted@1.1.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - arrayify-compact@0.2.0: - dependencies: - arr-flatten: 1.1.0 - - arrify@2.0.1: {} - - asap@2.0.6: {} - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - - assemble-core@0.25.0: - dependencies: - assemble-fs: 0.6.0 - assemble-render-file: 0.7.2 - assemble-streams: 0.6.0 - base-task: 0.6.2 - define-property: 0.2.5 - lazy-cache: 2.0.2 - templates: 0.24.3 - transitivePeerDependencies: - - supports-color - - assemble-fs@0.6.0: - dependencies: - assemble-handle: 0.1.4 - extend-shallow: 2.0.1 - is-valid-app: 0.2.1 - lazy-cache: 2.0.2 - stream-combiner: 0.2.2 - through2: 2.0.5 - vinyl-fs: 2.4.4 - transitivePeerDependencies: - - supports-color - - assemble-handle@0.1.4: - dependencies: - through2: 2.0.5 - - assemble-loader@0.6.1: - dependencies: - extend-shallow: 2.0.1 - file-contents: 0.2.4 - fs-exists-sync: 0.1.0 - has-glob: 0.1.1 - is-registered: 0.1.5 - is-valid-glob: 0.3.0 - is-valid-instance: 0.1.0 - isobject: 2.1.0 - lazy-cache: 2.0.2 - load-templates: 0.11.4 - - assemble-render-file@0.7.2: - dependencies: - debug: 2.6.9 - is-valid-app: 0.1.2 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - through2: 2.0.5 - transitivePeerDependencies: - - supports-color - - assemble-streams@0.6.0: - dependencies: - assemble-handle: 0.1.4 - is-registered: 0.1.5 - is-valid-instance: 0.1.0 - lazy-cache: 2.0.2 - match-file: 0.2.2 - src-stream: 0.1.1 - through2: 2.0.5 - - assemblyai@4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - assemblyai@4.4.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - assert-plus@1.0.0: {} - - assign-deep@0.4.8: - dependencies: - assign-symbols: 0.1.1 - is-primitive: 2.0.0 - kind-of: 5.1.0 - - assign-symbols@0.1.1: {} - - assign-symbols@1.0.0: {} - - ast-types-flow@0.0.8: {} - - ast-types@0.13.4: - dependencies: - tslib: 2.6.2 - - astral-regex@2.0.0: {} - - astring@1.9.0: {} - - async-array-reduce@0.2.1: {} - - async-done@0.4.0: - dependencies: - end-of-stream: 0.1.5 - next-tick: 0.2.2 - once: 1.4.0 - stream-exhaust: 1.0.2 - - async-done@1.3.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - process-nextick-args: 2.0.1 - stream-exhaust: 1.0.2 - - async-each-series@1.1.0: {} - - async-each@1.0.6: {} - - async-helpers@0.3.17: - dependencies: - co: 4.6.0 - kind-of: 6.0.3 - - async-mutex@0.4.1: - dependencies: - tslib: 2.6.2 - - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - - async-settle@0.2.1: - dependencies: - async-done: 0.4.0 - - async-settle@1.0.0: - dependencies: - async-done: 1.3.2 - - async@1.5.2: {} - - async@3.2.5: {} - - asynciterator.prototype@1.0.0: - dependencies: - has-symbols: 1.0.3 - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atlassian-jwt@2.0.3: - dependencies: - jsuri: 1.3.1 - lodash: 4.17.21 - - atob@2.1.2: {} - - autoprefixer@10.4.14(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.14(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.20(postcss@8.4.39): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001658 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@aws-sdk/util-utf8-browser': 3.259.0 - '@httptoolkit/websocket-stream': 6.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) - axios: 1.7.2(debug@4.3.6) - buffer: 6.0.3 - crypto-js: 4.2.0 - mqtt: 4.3.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - process: 0.11.10 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - aws-sdk@2.1575.0: - dependencies: - buffer: 4.9.2 - events: 1.1.1 - ieee754: 1.1.13 - jmespath: 0.16.0 - querystring: 0.2.0 - sax: 1.2.1 - url: 0.10.3 - util: 0.12.5 - uuid: 8.0.0 - xml2js: 0.6.2 - - aws-sign2@0.7.0: {} - - aws4@1.12.0: {} - - axe-core@4.7.0: {} - - axe-core@4.8.4: {} - - axios@1.6.2(debug@4.3.4): - dependencies: - follow-redirects: 1.15.5(debug@4.3.4) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.6.8: - dependencies: - follow-redirects: 1.15.6(debug@4.3.6) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.2(debug@4.3.6): - dependencies: - follow-redirects: 1.15.6(debug@4.3.6) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axobject-query@3.2.1: - dependencies: - dequal: 2.0.3 - - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 - - b4a@1.6.6: {} - - babel-code-frame@6.26.0: - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - - babel-core@6.26.3: - dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - babel-helpers: 6.24.1 - babel-messages: 6.23.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - convert-source-map: 1.9.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.21 - minimatch: 3.1.2 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - babel-generator@6.26.1: - dependencies: - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - detect-indent: 4.0.0 - jsesc: 1.3.0 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - - babel-helpers@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-jest@27.5.1(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.24.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-jest@29.7.0(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@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.24.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-loader@8.3.0(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@babel/core': 7.24.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3): - dependencies: - '@babel/core': 7.24.0 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.90.3 - - babel-messages@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-dynamic-import-node@2.3.3: - dependencies: - object.assign: 4.1.5 - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.24.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 - - babel-plugin-jest-hoist@27.5.1: - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 - - babel-plugin-jsx-dom-expressions@0.36.18(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.5 - html-entities: 2.3.3 - validate-html-nesting: 1.2.2 - - babel-plugin-lodash@3.3.4: - dependencies: - '@babel/helper-module-imports': 7.24.3 - '@babel/types': 7.24.5 - glob: 7.2.3 - lodash: 4.17.21 - require-package-name: 2.0.1 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.24.0 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - babel-plugin-named-asset-import@0.3.8(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.0): - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs2@0.4.9(@babel/core@7.24.0): - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.0(@babel/core@7.24.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) - core-js-compat: 3.37.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) - core-js-compat: 3.36.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - babel-plugin-styled-components@2.1.4(@babel/core@7.24.0)(styled-components@5.3.11(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)): - dependencies: - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - lodash: 4.17.21 - picomatch: 2.3.1 - styled-components: 5.3.11(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-transform-react-remove-prop-types@0.4.24: {} - - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - - babel-preset-jest@27.5.1(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) - - babel-preset-jest@29.6.3(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) - - babel-preset-react-app@10.0.1: - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-decorators': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.24.0) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.24.0) - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-react': 7.18.6(@babel/core@7.24.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - babel-plugin-macros: 3.1.0 - babel-plugin-transform-react-remove-prop-types: 0.4.24 - transitivePeerDependencies: - - supports-color - - babel-preset-solid@1.7.1(@babel/core@7.24.0): - dependencies: - '@babel/core': 7.24.0 - babel-plugin-jsx-dom-expressions: 0.36.18(@babel/core@7.24.0) - - babel-register@6.26.0: - dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.6.12 - home-or-tmp: 2.0.0 - lodash: 4.17.21 - mkdirp: 0.5.6 - source-map-support: 0.4.18 - transitivePeerDependencies: - - supports-color - - babel-runtime@6.26.0: - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - - babel-template@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-traverse@6.26.0: - dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-types@6.26.0: - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - - babylon@6.18.0: {} - - bach@0.5.0: - dependencies: - async-done: 1.3.2 - async-settle: 0.2.1 - lodash.filter: 4.6.0 - lodash.flatten: 4.4.0 - lodash.foreach: 4.5.0 - lodash.initial: 4.1.1 - lodash.last: 3.0.0 - lodash.map: 4.6.0 - now-and-later: 0.0.6 - - bach@1.2.0: - dependencies: - arr-filter: 1.1.2 - arr-flatten: 1.1.0 - arr-map: 2.0.2 - array-each: 1.0.1 - array-initial: 1.1.0 - array-last: 1.3.0 - async-done: 1.3.2 - async-settle: 1.0.0 - now-and-later: 2.0.1 - - bail@1.0.5: {} - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - bare-events@2.2.1: - optional: true - - bare-fs@2.2.1: - dependencies: - bare-events: 2.2.1 - bare-os: 2.2.0 - bare-path: 2.1.0 - streamx: 2.16.1 - optional: true - - bare-os@2.2.0: - optional: true - - bare-path@2.1.0: - dependencies: - bare-os: 2.2.0 - optional: true - - base-64@0.1.0: {} - - base-64@1.0.0: {} - - base-argv@0.4.5: - dependencies: - arr-diff: 2.0.0 - arr-union: 3.1.0 - debug: 2.6.9 - define-property: 0.2.5 - expand-args: 0.4.3 - extend-shallow: 2.0.1 - lazy-cache: 1.0.4 - transitivePeerDependencies: - - supports-color - - base-cli-process@0.1.19: - dependencies: - arr-union: 3.1.0 - arrayify-compact: 0.2.0 - base-cli: 0.5.0 - base-cli-schema: 0.1.19 - base-config-process: 0.1.9 - base-cwd: 0.3.4 - base-option: 0.8.4 - base-pkg: 0.2.5 - debug: 2.6.9 - export-files: 2.1.1 - fs-exists-sync: 0.1.0 - is-valid-app: 0.2.1 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - log-utils: 0.2.1 - merge-deep: 3.0.3 - mixin-deep: 1.3.2 - object.pick: 1.3.0 - pad-right: 0.2.2 - union-value: 1.0.1 - transitivePeerDependencies: - - supports-color - - base-cli-schema@0.1.19: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.2.1 - debug: 2.6.9 - define-property: 0.2.5 - export-files: 2.1.1 - extend-shallow: 2.0.1 - falsey: 0.3.2 - fs-exists-sync: 0.1.0 - has-glob: 0.1.1 - has-value: 0.3.1 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - map-schema: 0.2.4 - merge-deep: 3.0.3 - mixin-deep: 1.3.2 - resolve: 1.22.8 - tableize-object: 0.1.0 - transitivePeerDependencies: - - supports-color - - base-cli@0.5.0: - dependencies: - base-argv: 0.4.5 - base-config: 0.5.2 - transitivePeerDependencies: - - supports-color - - base-compose@0.2.1: - dependencies: - copy-task: 0.1.0 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - - base-config-process@0.1.9: - dependencies: - base-config: 0.5.2 - base-config-schema: 0.1.24 - base-cwd: 0.3.4 - base-option: 0.8.4 - debug: 2.6.9 - export-files: 2.1.1 - is-valid-app: 0.2.1 - lazy-cache: 2.0.2 - micromatch: 2.3.11 - mixin-deep: 1.3.2 - transitivePeerDependencies: - - supports-color - - base-config-schema@0.1.24: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - base-pkg: 0.2.5 - camel-case: 3.0.0 - debug: 2.6.9 - define-property: 1.0.0 - export-files: 2.1.1 - extend-shallow: 2.0.1 - has-glob: 1.0.0 - has-value: 0.3.1 - inflection: 1.13.4 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - load-templates: 1.0.2 - map-schema: 0.2.4 - matched: 0.4.4 - mixin-deep: 1.3.2 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - base-config@0.5.2: - dependencies: - isobject: 2.1.0 - lazy-cache: 1.0.4 - map-config: 0.5.0 - resolve-dir: 0.1.1 - - base-cwd@0.3.4: - dependencies: - empty-dir: 0.2.1 - find-pkg: 0.1.2 - is-valid-app: 0.2.1 - transitivePeerDependencies: - - supports-color - - base-data@0.6.2: - dependencies: - arr-flatten: 1.1.0 - cache-base: 1.0.1 - extend-shallow: 2.0.1 - get-value: 2.0.6 - has-glob: 1.0.0 - has-value: 1.0.0 - is-registered: 0.1.5 - is-valid-app: 0.3.0 - kind-of: 5.1.0 - lazy-cache: 2.0.2 - merge-value: 1.0.0 - mixin-deep: 1.3.2 - read-file: 0.2.0 - resolve-glob: 1.0.0 - set-value: 2.0.1 - union-value: 1.0.1 - transitivePeerDependencies: - - supports-color - - base-engines@0.2.1: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - engine-cache: 0.19.4 - is-valid-app: 0.1.2 - lazy-cache: 2.0.2 - transitivePeerDependencies: - - supports-color - - base-env@0.3.1: - dependencies: - base-namespace: 0.2.0 - contains-path: 0.1.0 - debug: 2.6.9 - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - global-modules: 0.2.3 - is-absolute: 0.2.6 - is-valid-app: 0.1.2 - is-valid-instance: 0.1.0 - kind-of: 3.2.2 - os-homedir: 1.0.2 - resolve-file: 0.3.0 - transitivePeerDependencies: - - supports-color - - base-generators@0.4.6: - dependencies: - async-each-series: 1.1.0 - base-compose: 0.2.1 - base-cwd: 0.3.4 - base-data: 0.6.2 - base-env: 0.3.1 - base-option: 0.8.4 - base-pkg: 0.2.5 - base-plugins: 0.4.13 - base-task: 0.6.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - global-modules: 0.2.3 - is-valid-app: 0.2.1 - is-valid-instance: 0.2.0 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - transitivePeerDependencies: - - supports-color - - base-helpers@0.1.1: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - is-valid-app: 0.1.2 - lazy-cache: 2.0.2 - load-helpers: 0.2.11 - transitivePeerDependencies: - - supports-color - - base-namespace@0.2.0: - dependencies: - is-valid-app: 0.1.2 - transitivePeerDependencies: - - supports-color - - base-option@0.8.4: - dependencies: - define-property: 0.2.5 - get-value: 2.0.6 - is-valid-app: 0.2.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - option-cache: 3.5.0 - set-value: 0.3.3 - transitivePeerDependencies: - - supports-color - - base-pkg@0.2.5: - dependencies: - cache-base: 1.0.1 - debug: 2.6.9 - define-property: 1.0.0 - expand-pkg: 0.1.9 - extend-shallow: 2.0.1 - is-valid-app: 0.3.0 - log-utils: 0.2.1 - pkg-store: 0.2.2 - transitivePeerDependencies: - - supports-color - - base-plugins@0.4.13: - dependencies: - define-property: 0.2.5 - is-registered: 0.1.5 - isobject: 2.1.0 - - base-questions@0.7.4: - dependencies: - base-store: 0.4.4 - clone-deep: 0.2.4 - debug: 2.6.9 - define-property: 0.2.5 - is-valid-app: 0.2.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - question-store: 0.11.1 - transitivePeerDependencies: - - supports-color - - base-routes@0.2.2: - dependencies: - debug: 2.6.9 - en-route: 0.7.5 - is-valid-app: 0.2.1 - lazy-cache: 2.0.2 - template-error: 0.1.2 - transitivePeerDependencies: - - supports-color - - base-runtimes@0.2.0: - dependencies: - extend-shallow: 2.0.1 - is-valid-app: 0.2.1 - lazy-cache: 2.0.2 - log-utils: 0.1.5 - micromatch: 2.3.11 - time-diff: 0.3.1 - transitivePeerDependencies: - - supports-color - - base-store@0.4.4: - dependencies: - data-store: 0.16.1 - debug: 2.6.9 - extend-shallow: 2.0.1 - is-registered: 0.1.5 - is-valid-instance: 0.1.0 - lazy-cache: 2.0.2 - project-name: 0.2.6 - transitivePeerDependencies: - - supports-color - - base-task@0.6.2: - dependencies: - composer: 0.13.0 - is-valid-app: 0.1.2 - transitivePeerDependencies: - - supports-color - - base16@1.0.0: {} - - base64-js@1.5.1: {} - - base64id@2.0.0: {} - - base64url@3.0.1: {} - - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - base@0.8.1: - dependencies: - arr-union: 3.1.0 - cache-base: 0.8.5 - class-utils: 0.3.6 - component-emitter: 1.3.1 - debug: 2.6.9 - define-property: 0.2.5 - lazy-cache: 1.0.4 - mixin-deep: 1.3.2 - transitivePeerDependencies: - - supports-color - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - - basic-ftp@5.0.5: {} - - batch@0.6.1: {} - - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - - before-after-hook@2.2.3: {} - - bfj@7.1.0: - dependencies: - bluebird: 3.7.2 - check-types: 11.2.3 - hoopy: 0.1.4 - jsonpath: 1.1.1 - tryer: 1.0.1 - - bidi-js@1.0.3: - dependencies: - require-from-string: 2.0.2 - - big-integer@1.6.52: {} - - big.js@5.2.2: {} - - bignumber.js@9.1.2: {} - - bin-links@3.0.3: - dependencies: - cmd-shim: 5.0.0 - mkdirp-infer-owner: 2.0.0 - npm-normalize-package-bin: 2.0.0 - read-cmd-shim: 3.0.1 - rimraf: 3.0.2 - write-file-atomic: 4.0.2 - - binary-extensions@1.13.1: {} - - binary-extensions@2.2.0: {} - - binary-search@1.3.6: {} - - binaryextensions@4.19.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - blob-util@2.0.2: {} - - bluebird@3.4.7: {} - - bluebird@3.7.2: {} - - body-parser@1.20.2: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - bonjour-service@1.2.1: - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - - boolbase@1.0.0: {} - - bowser@2.11.0: {} - - boxen@6.2.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - - boxen@7.1.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.52 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@1.8.5: - dependencies: - expand-range: 1.8.2 - preserve: 0.2.0 - repeat-element: 1.1.4 - - braces@2.3.2: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - browser-process-hrtime@1.0.0: {} - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001597 - electron-to-chromium: 1.4.701 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.17 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - bson-objectid@2.0.4: {} - - bson@6.4.0: {} - - bson@6.7.0: {} - - buffer-crc32@0.2.13: {} - - buffer-equal-constant-time@1.0.1: {} - - buffer-equal@1.0.1: {} - - buffer-from@1.1.2: {} - - buffer-writer@2.0.0: {} - - buffer@4.9.2: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - - 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 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.1 - - builtin-modules@3.3.0: {} - - builtins@1.0.3: {} - - builtins@5.0.1: - dependencies: - semver: 7.6.0 - - bundle-name@3.0.0: - dependencies: - run-applescript: 5.0.0 - - bundle-require@4.2.1(esbuild@0.17.19): - dependencies: - esbuild: 0.17.19 - load-tsconfig: 0.2.5 - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - bytes@3.0.0: {} - - bytes@3.1.2: {} - - cac@6.7.14: {} - - cacache@15.3.0: - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.0 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - - cacache@16.1.3: - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.0 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - - cacache@17.1.4: - dependencies: - '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.3 - glob: 10.3.10 - lru-cache: 7.18.3 - minipass: 7.0.4 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.5 - tar: 6.2.0 - unique-filename: 3.0.0 - - cache-base@0.8.5: - dependencies: - collection-visit: 0.2.3 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 0.3.1 - isobject: 3.0.1 - lazy-cache: 2.0.2 - set-value: 0.4.3 - to-object-path: 0.3.0 - union-value: 0.2.4 - unset-value: 0.1.2 - - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - - cacheable-lookup@5.0.4: {} - - 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-request@7.0.4: - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - - cachedir@2.4.0: {} - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - call-me-maybe@1.0.2: {} - - callguard@2.0.0: {} - - callsites@3.1.0: {} - - camel-case@3.0.0: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 - camelcase-css@2.0.1: {} + ansi-styles@5.2.0: {} - camelcase@3.0.0: {} + ansi-styles@6.2.1: {} - camelcase@4.1.0: {} + ansi-wrap@0.1.0: {} - camelcase@5.3.1: {} + ansicolors@0.3.2: {} - camelcase@6.3.0: {} + ansis@3.17.0: {} - camelcase@7.0.1: {} + any-promise@1.3.0: {} - camelize@1.0.1: {} + anymatch@2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color - caniuse-api@3.0.0: - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 - caniuse-lite@1.0.30001597: {} + apify-client@2.9.3: + dependencies: + '@apify/consts': 2.26.0 + '@apify/log': 2.5.0 + '@crawlee/types': 3.8.1 + agentkeepalive: 4.5.0 + async-retry: 1.3.3 + axios: 1.7.9(debug@4.3.4) + content-type: 1.0.5 + ow: 0.28.2 + tslib: 2.6.2 + type-fest: 4.12.0 + transitivePeerDependencies: + - debug - caniuse-lite@1.0.30001658: {} + app-root-path@3.1.0: {} - canonicalize@1.0.8: {} + apparatus@0.0.10: + dependencies: + sylvester: 0.0.12 - canvas@2.11.2(encoding@0.1.13): - dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) - nan: 2.19.0 - simple-get: 3.1.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true + append-buffer@1.0.2: + dependencies: + buffer-equal: 1.0.1 - cardinal@2.1.1: - dependencies: - ansicolors: 0.3.2 - redeyed: 2.1.1 + append-field@1.0.0: {} - case-sensitive-paths-webpack-plugin@2.4.0: {} + aproba@2.0.0: {} - caseless@0.12.0: {} + arch@2.2.0: {} - ccount@1.1.0: {} + archy@1.0.0: {} - ccount@2.0.1: {} + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + arg@4.1.3: {} - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + arg@5.0.2: {} - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 - chalk@5.3.0: {} + argparse@2.0.1: {} - char-regex@1.0.2: {} + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 - char-regex@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 - character-entities-html4@2.1.0: {} + arr-diff@4.0.0: {} - character-entities-legacy@1.1.4: {} + arr-filter@1.1.2: + dependencies: + make-iterator: 1.0.1 - character-entities-legacy@3.0.0: {} - - character-entities@1.2.4: {} - - character-entities@2.0.2: {} - - character-reference-invalid@1.1.4: {} - - character-reference-invalid@2.0.1: {} - - chardet@0.7.0: {} - - charenc@0.0.2: {} - - check-more-types@2.24.0: {} - - check-types@11.2.3: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - - chokidar@2.1.8: - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - 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 - - chownr@1.1.4: {} - - chownr@2.0.0: {} - - chromadb@1.7.3(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)): - dependencies: - cliui: 8.0.1 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - optionalDependencies: - '@google/generative-ai': 0.15.0 - cohere-ai: 7.10.0(encoding@0.1.13) - openai: 4.51.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - chromadb@1.8.1(@google/generative-ai@0.15.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)): - dependencies: - cliui: 8.0.1 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - optionalDependencies: - '@google/generative-ai': 0.15.0 - cohere-ai: 6.2.2 - openai: 4.51.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - chromadb@1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)): - dependencies: - cliui: 8.0.1 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - optionalDependencies: - '@google/generative-ai': 0.15.0 - cohere-ai: 7.10.0(encoding@0.1.13) - openai: 4.51.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - chrome-trace-event@1.0.3: {} - - chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): - dependencies: - devtools-protocol: 0.0.1147663 - mitt: 3.0.0 - - chromium-bidi@0.4.7(devtools-protocol@0.0.1107588): - dependencies: - devtools-protocol: 0.0.1107588 - mitt: 3.0.0 - - ci-info@3.9.0: {} - - cjs-module-lexer@1.2.3: {} - - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - - classcat@5.0.4: {} - - classnames@2.5.1: {} - - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - - clean-stack@2.2.0: {} - - clean-stack@3.0.1: - dependencies: - escape-string-regexp: 4.0.0 - - cli-boxes@3.0.0: {} - - cli-cursor@1.0.2: - dependencies: - restore-cursor: 1.0.1 - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-highlight@2.1.11: - dependencies: - chalk: 4.1.2 - highlight.js: 10.7.3 - mz: 2.7.0 - parse5: 5.1.1 - parse5-htmlparser2-tree-adapter: 6.0.1 - yargs: 16.2.0 - - cli-progress@3.12.0: - dependencies: - string-width: 4.2.3 - - cli-spinners@2.9.2: {} - - cli-table3@0.6.4: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-table@0.3.11: - dependencies: - colors: 1.0.3 - - cli-truncate@2.1.0: - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - - cli-truncate@3.1.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - - cli-width@1.1.1: {} - - cli-width@3.0.0: {} - - client-only@0.0.1: {} - - clipboard@2.0.11: - dependencies: - good-listener: 1.2.2 - select: 1.1.2 - tiny-emitter: 2.1.0 - optional: true + arr-flatten@1.1.0: {} - cliui@3.2.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-buffer@1.0.0: {} - - clone-deep@0.2.4: - dependencies: - for-own: 0.1.5 - is-plain-object: 2.0.4 - kind-of: 3.2.2 - lazy-cache: 1.0.4 - shallow-clone: 0.1.2 - - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - - clone-response@1.0.3: - dependencies: - mimic-response: 1.0.1 - - clone-stats@0.0.1: {} - - clone-stats@1.0.0: {} - - clone@1.0.4: {} - - clone@2.1.2: {} - - cloneable-readable@1.1.3: - dependencies: - inherits: 2.0.4 - process-nextick-args: 2.0.1 - readable-stream: 2.3.8 - - clsx@1.2.1: {} - - clsx@2.1.0: {} - - cluster-key-slot@1.1.2: {} - - cmake-js@7.3.0: - dependencies: - axios: 1.7.2(debug@4.3.6) - debug: 4.3.6(supports-color@5.5.0) - fs-extra: 11.2.0 - lodash.isplainobject: 4.0.6 - memory-stream: 1.0.0 - node-api-headers: 1.1.0 - npmlog: 6.0.2 - rc: 1.2.8 - semver: 7.6.0 - tar: 6.2.0 - url-join: 4.0.1 - which: 2.0.2 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - optional: true - - cmd-shim@5.0.0: - dependencies: - mkdirp-infer-owner: 2.0.0 - - co@4.6.0: {} - - coa@2.0.2: - dependencies: - '@types/q': 1.5.8 - chalk: 2.4.2 - q: 1.5.1 - - code-point-at@1.1.0: {} - - code-red@1.0.4: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.5 - acorn: 8.11.3 - estree-walker: 3.0.3 - periscopic: 3.1.0 - - codemirror@6.0.1(@lezer/common@1.2.1): - dependencies: - '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1) - '@codemirror/commands': 6.5.0 - '@codemirror/language': 6.10.1 - '@codemirror/lint': 6.5.0 - '@codemirror/search': 6.5.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.26.3 - transitivePeerDependencies: - - '@lezer/common' + arr-map@2.0.2: + dependencies: + make-iterator: 1.0.1 + + arr-union@3.1.0: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.8 + is-array-buffer: 3.0.4 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + + array-differ@3.0.0: {} + + array-each@1.0.1: {} + + array-flatten@1.1.1: {} + + array-hyper-unique@2.1.6: + dependencies: + deep-eql: 4.0.0 + lodash: 4.17.21 + + array-includes@3.1.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-includes@3.1.8: + 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 + + array-initial@1.1.0: + dependencies: + array-slice: 1.1.0 + is-number: 4.0.0 + + array-keyed-map@2.1.3: {} + + array-last@1.3.0: + dependencies: + is-number: 4.0.0 + + array-slice@1.1.0: {} + + array-sort@1.0.0: + dependencies: + default-compare: 1.0.0 + get-value: 2.0.6 + kind-of: 5.1.0 + + array-union@2.1.0: {} + + array-unique@0.3.2: {} + + array.prototype.filter@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + + array.prototype.findlast@1.2.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlast@1.2.5: + 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.0.2 + + array.prototype.findlastindex@1.2.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.0.2 + + array.prototype.reduce@1.0.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.1.1 + + array.prototype.toreversed@1.1.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + 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.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + arraybuffer.prototype.slice@1.0.4: + 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 + + arrify@2.0.1: {} + + asap@2.0.6: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assemblyai@4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + assemblyai@4.4.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + assert-plus@1.0.0: {} + + assign-symbols@1.0.0: {} + + ast-types-flow@0.0.8: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.6.2 + + astral-regex@2.0.0: {} + + astring@1.9.0: {} + + async-done@1.3.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + process-nextick-args: 2.0.1 + stream-exhaust: 1.0.2 + + async-each@1.0.6: {} + + async-mutex@0.4.1: + dependencies: + tslib: 2.6.2 + + async-mutex@0.5.0: + dependencies: + tslib: 2.6.2 + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + async-settle@1.0.0: + dependencies: + async-done: 1.3.2 + + async@3.2.5: {} + + asynciterator.prototype@1.0.0: + dependencies: + has-symbols: 1.0.3 + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atlassian-jwt@2.0.3: + dependencies: + jsuri: 1.3.1 + lodash: 4.17.21 + + atob@2.1.2: {} + + autoprefixer@10.4.14(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001597 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + autoprefixer@10.4.14(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001597 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + autoprefixer@10.4.20(postcss@8.4.39): + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001658 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + '@aws-sdk/util-utf8-browser': 3.259.0 + '@httptoolkit/websocket-stream': 6.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + axios: 1.7.9(debug@4.3.4) + buffer: 6.0.3 + crypto-js: 4.2.0 + mqtt: 4.3.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) + process: 0.11.10 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + aws-sdk@2.1575.0: + dependencies: + buffer: 4.9.2 + events: 1.1.1 + ieee754: 1.1.13 + jmespath: 0.16.0 + querystring: 0.2.0 + sax: 1.2.1 + url: 0.10.3 + util: 0.12.5 + uuid: 8.0.0 + xml2js: 0.6.2 + + aws-sign2@0.7.0: {} + + aws-ssl-profiles@1.1.2: {} + + aws4@1.12.0: {} + + axe-core@4.7.0: {} + + axe-core@4.8.4: {} + + axios@1.7.9(debug@4.3.4): + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.7.9(debug@4.4.0): + dependencies: + follow-redirects: 1.15.6(debug@4.4.0) + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@3.2.1: + dependencies: + dequal: 2.0.3 + + axobject-query@4.0.0: + dependencies: + dequal: 2.0.3 + + b4a@1.6.6: {} + + babel-code-frame@6.26.0: + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + + babel-core@6.26.3: + dependencies: + babel-code-frame: 6.26.0 + babel-generator: 6.26.1 + babel-helpers: 6.24.1 + babel-messages: 6.23.0 + babel-register: 6.26.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + convert-source-map: 1.9.0 + debug: 2.6.9 + json5: 2.2.3 + lodash: 4.17.21 + minimatch: 3.1.2 + path-is-absolute: 1.0.1 + private: 0.1.8 + slash: 1.0.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + + babel-generator@6.26.1: + dependencies: + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + detect-indent: 4.0.0 + jsesc: 1.3.0 + lodash: 4.17.21 + source-map: 0.5.7 + trim-right: 1.0.1 + + babel-helpers@6.24.1: + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + + babel-jest@27.5.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.26.9) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@29.7.0(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@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.9) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-loader@8.3.0(@babel/core@7.26.9)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@babel/core': 7.26.9 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3): + dependencies: + '@babel/core': 7.24.0 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.90.3 + + babel-messages@6.23.0: + dependencies: + babel-runtime: 6.26.0 + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.5 + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.24.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 + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 + + babel-plugin-jsx-dom-expressions@0.36.18(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.26.9) + '@babel/types': 7.24.5 + html-entities: 2.3.3 + validate-html-nesting: 1.2.2 + + babel-plugin-lodash@3.3.4: + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@babel/types': 7.24.5 + glob: 7.2.3 + lodash: 4.17.21 + require-package-name: 2.0.1 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.24.0 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + + babel-plugin-named-asset-import@0.3.8(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.0): + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.9): + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.9) + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs2@0.4.9(@babel/core@7.26.9): + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.0(@babel/core@7.26.9) + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.0): + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) + core-js-compat: 3.37.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.9) + core-js-compat: 3.37.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + core-js-compat: 3.36.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.26.9) + core-js-compat: 3.36.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.0): + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + babel-plugin-styled-components@2.1.4(@babel/core@7.26.9)(styled-components@5.3.11(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)): + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.26.9) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + + babel-plugin-transform-react-remove-prop-types@0.4.24: {} + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.9) + + babel-preset-jest@27.5.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.9) + + babel-preset-jest@29.6.3(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.9) + + babel-preset-react-app@10.0.1: + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-proposal-decorators': 7.24.0(@babel/core@7.26.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.9) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.9) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.26.9) + '@babel/preset-env': 7.24.0(@babel/core@7.26.9) + '@babel/preset-react': 7.18.6(@babel/core@7.26.9) + '@babel/preset-typescript': 7.21.4(@babel/core@7.26.9) + '@babel/runtime': 7.24.0 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + + babel-preset-solid@1.7.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + babel-plugin-jsx-dom-expressions: 0.36.18(@babel/core@7.26.9) + + babel-register@6.26.0: + dependencies: + babel-core: 6.26.3 + babel-runtime: 6.26.0 + core-js: 2.6.12 + home-or-tmp: 2.0.0 + lodash: 4.17.21 + mkdirp: 0.5.6 + source-map-support: 0.4.18 + transitivePeerDependencies: + - supports-color + + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + babel-template@6.26.0: + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-traverse@6.26.0: + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-types@6.26.0: + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + + babylon@6.18.0: {} + + bach@1.2.0: + dependencies: + arr-filter: 1.1.2 + arr-flatten: 1.1.0 + arr-map: 2.0.2 + array-each: 1.0.1 + array-initial: 1.1.0 + array-last: 1.3.0 + async-done: 1.3.2 + async-settle: 1.0.0 + now-and-later: 2.0.1 + + bail@1.0.5: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + bare-events@2.2.1: + optional: true + + bare-fs@2.2.1: + dependencies: + bare-events: 2.2.1 + bare-os: 2.2.0 + bare-path: 2.1.0 + streamx: 2.16.1 + optional: true + + bare-os@2.2.0: + optional: true + + bare-path@2.1.0: + dependencies: + bare-os: 2.2.0 + optional: true + + base-64@0.1.0: {} + + base-64@1.0.0: {} + + base16@1.0.0: {} + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + base64url@3.0.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + basic-ftp@5.0.5: {} + + batch@0.6.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + before-after-hook@2.2.3: {} + + bfj@7.1.0: + dependencies: + bluebird: 3.7.2 + check-types: 11.2.3 + hoopy: 0.1.4 + jsonpath: 1.1.1 + tryer: 1.0.1 + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + big-integer@1.6.52: {} + + big.js@5.2.2: {} - codsen-utils@1.6.4: - dependencies: - rfdc: 1.3.1 + bignumber.js@9.1.2: {} - cohere-ai@6.2.2: {} + bin-links@3.0.3: + dependencies: + cmd-shim: 5.0.0 + mkdirp-infer-owner: 2.0.0 + npm-normalize-package-bin: 2.0.0 + read-cmd-shim: 3.0.1 + rimraf: 3.0.2 + write-file-atomic: 4.0.2 - cohere-ai@7.10.0(encoding@0.1.13): - dependencies: - form-data: 4.0.0 - form-data-encoder: 4.0.2 - formdata-node: 6.0.3 - js-base64: 3.7.2 - node-fetch: 2.7.0(encoding@0.1.13) - qs: 6.11.2 - url-join: 4.0.1 - transitivePeerDependencies: - - encoding + binary-extensions@1.13.1: {} - collapse-white-space@2.1.0: {} + binary-extensions@2.2.0: {} - collect-v8-coverage@1.0.2: {} + binary-search@1.3.6: {} - collection-map@1.0.0: - dependencies: - arr-map: 2.0.2 - for-own: 1.0.0 - make-iterator: 1.0.1 + binaryextensions@4.19.0: {} - collection-visit@0.2.3: - dependencies: - lazy-cache: 2.0.2 - map-visit: 0.1.5 - object-visit: 0.3.4 + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 + bintrees@1.0.2: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blob-util@2.0.2: {} + + bluebird@3.4.7: {} + + bluebird@3.7.2: {} - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 + body-parser@2.0.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 3.1.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.5.2 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 3.0.0 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color - color-name@1.1.3: {} + bonjour-service@1.2.1: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 - color-name@1.1.4: {} + boolbase@1.0.0: {} + + boolean@3.2.0: {} + + bottleneck@2.19.5: {} + + bowser@2.11.0: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 + boxen@6.2.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 - color-support@1.1.3: {} + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 - color@3.2.1: - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 - colord@2.9.3: {} + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001597 + electron-to-chromium: 1.4.701 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001658 + electron-to-chromium: 1.5.17 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001701 + electron-to-chromium: 1.5.109 + 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 + + bson@6.4.0: {} + + bson@6.7.0: {} + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-equal@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer-writer@2.0.0: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + 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 + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.1 + + buildcheck@0.0.6: + optional: true + + builtin-modules@3.3.0: {} + + builtins@1.0.3: {} + + builtins@5.0.1: + dependencies: + semver: 7.7.1 + + bull-board@2.1.3: + dependencies: + '@types/express': 4.17.21 + '@types/express-serve-static-core': 4.17.43 + ejs: 3.1.6 + express: 4.17.1 + redis-info: 3.1.0 + transitivePeerDependencies: + - supports-color + + bullmq@5.41.7: + dependencies: + cron-parser: 4.9.0 + ioredis: 5.6.0 + msgpackr: 1.11.2 + node-abort-controller: 3.1.1 + semver: 7.7.1 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + bundle-require@4.2.1(esbuild@0.17.19): + dependencies: + esbuild: 0.17.19 + load-tsconfig: 0.2.5 + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + cacache@15.3.0: + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.0 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.0 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + cacache@17.1.4: + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 7.18.3 + minipass: 7.0.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 4.1.0 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 2.0.1 + + cacheable-lookup@5.0.4: {} + + 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-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + cachedir@2.4.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.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.3: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + call-me-maybe@1.0.2: {} + + callguard@2.0.0: {} + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 - colorette@2.0.20: {} + camelcase-css@2.0.1: {} - colors@1.0.3: {} - - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 + camelcase@3.0.0: {} - combine-promises@1.2.0: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - comma-separated-tokens@1.0.8: {} + camelcase@4.1.0: {} - comma-separated-tokens@2.0.3: {} - - commander@10.0.1: {} - - commander@11.0.0: {} + camelcase@5.3.1: {} - commander@2.20.3: {} + camelcase@6.3.0: {} - commander@4.1.1: {} + camelcase@7.0.1: {} - commander@5.1.0: {} + camelize@1.0.1: {} - commander@6.2.1: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001597 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 - commander@7.1.0: {} + caniuse-lite@1.0.30001597: {} - commander@7.2.0: {} - - commander@8.3.0: {} - - commander@9.2.0: {} - - commander@9.5.0: {} - - commist@1.1.0: - dependencies: - leven: 2.1.0 - minimist: 1.2.8 + caniuse-lite@1.0.30001658: {} - common-ancestor-path@1.0.1: {} + caniuse-lite@1.0.30001701: {} - common-config@0.1.1: - dependencies: - composer: 0.13.0 - data-store: 0.16.1 - get-value: 2.0.6 - lazy-cache: 2.0.2 - log-utils: 0.2.1 - object.pick: 1.3.0 - omit-empty: 0.4.1 - question-cache: 0.4.0 - set-value: 3.0.3 - strip-color: 0.1.0 - tableize-object: 0.1.0 - text-table: 0.2.0 - yargs-parser: 2.4.1 - transitivePeerDependencies: - - supports-color + canonicalize@1.0.8: {} - common-path-prefix@3.0.0: {} + canvas@2.11.2(encoding@0.1.13): + dependencies: + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) + nan: 2.19.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + optional: true - common-tags@1.8.2: {} + cardinal@2.1.1: + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 - commondir@1.0.1: {} + case-sensitive-paths-webpack-plugin@2.4.0: {} - component-emitter@1.3.1: {} + caseless@0.12.0: {} - component-register@0.8.3: {} + ccount@1.1.0: {} - composer@0.13.0: - dependencies: - array-unique: 0.2.1 - bach: 0.5.0 - co: 4.6.0 - component-emitter: 1.3.1 - define-property: 0.2.5 - extend-shallow: 2.0.1 - is-generator: 1.0.3 - is-glob: 2.0.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - micromatch: 2.3.11 - nanoseconds: 0.1.0 - - compressible@2.0.18: - dependencies: - mime-db: 1.52.0 - - compression@1.7.4: - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - - concurrently@7.6.0: - dependencies: - chalk: 4.1.2 - date-fns: 2.30.0 - lodash: 4.17.21 - rxjs: 7.8.1 - shell-quote: 1.8.1 - spawn-command: 0.0.2-1 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.2 - - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - - configstore@6.0.0: - dependencies: - dot-prop: 6.0.1 - graceful-fs: 4.2.11 - unique-string: 3.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 5.1.0 - - confusing-browser-globals@1.0.11: {} - - connect-history-api-fallback@2.0.0: {} - - consola@2.15.3: {} - - consola@3.2.3: {} - - console-control-strings@1.1.0: {} - - contains-path@0.1.0: {} - - content-disposition@0.5.2: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - contentful-management@10.46.4: - dependencies: - '@contentful/rich-text-types': 16.8.3 - '@types/json-patch': 0.0.30 - axios: 1.6.2(debug@4.3.4) - contentful-sdk-core: 8.3.1 - fast-copy: 3.0.2 - lodash.isplainobject: 4.0.6 - type-fest: 4.12.0 - transitivePeerDependencies: - - debug - - contentful-management@11.31.1: - dependencies: - '@contentful/rich-text-types': 16.8.3 - axios: 1.7.2(debug@4.3.6) - contentful-sdk-core: 8.3.1 - fast-copy: 3.0.2 - transitivePeerDependencies: - - debug - - contentful-resolve-response@1.9.0: - dependencies: - fast-copy: 2.1.7 - - contentful-sdk-core@8.3.1: - dependencies: - fast-copy: 2.1.7 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - p-throttle: 4.1.1 - qs: 6.12.1 - - contentful@10.13.2: - dependencies: - '@contentful/content-source-maps': 0.6.1 - '@contentful/rich-text-types': 16.8.3 - axios: 1.6.8 - contentful-resolve-response: 1.9.0 - contentful-sdk-core: 8.3.1 - json-stringify-safe: 5.0.1 - type-fest: 4.12.0 - transitivePeerDependencies: - - debug - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - cookie-es@1.2.2: {} - - cookie-signature@1.0.6: {} - - cookie-signature@1.0.7: {} - - cookie@0.4.2: {} - - cookie@0.5.0: {} - - cookie@0.6.0: {} - - cookie@0.7.2: {} - - copy-descriptor@0.1.1: {} - - copy-props@2.0.5: - dependencies: - each-props: 1.3.2 - is-plain-object: 5.0.0 - - copy-task@0.1.0: {} - - copy-text-to-clipboard@3.2.0: {} - - copy-to-clipboard@3.3.3: - dependencies: - toggle-selection: 1.0.6 - - copy-webpack-plugin@11.0.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - - copy-webpack-plugin@11.0.0(webpack@5.90.3): - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.90.3 - - core-js-compat@3.36.0: - dependencies: - browserslist: 4.23.0 - - core-js-compat@3.37.0: - dependencies: - browserslist: 4.23.0 - - core-js-pure@3.36.0: {} - - core-js@2.6.12: {} - - core-js@3.36.0: {} - - core-util-is@1.0.2: {} - - core-util-is@1.0.3: {} - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.1.3: - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - - cosmiconfig@8.2.0: - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - - cosmiconfig@8.3.6(typescript@4.9.5): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 4.9.5 - - cosmiconfig@8.3.6(typescript@5.5.2): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.5.2 - - couchbase@4.3.1: - dependencies: - cmake-js: 7.3.0 - node-addon-api: 7.1.0 - optionalDependencies: - '@couchbase/couchbase-darwin-arm64-napi': 4.3.1 - '@couchbase/couchbase-darwin-x64-napi': 4.3.1 - '@couchbase/couchbase-linux-arm64-napi': 4.3.1 - '@couchbase/couchbase-linux-x64-napi': 4.3.1 - '@couchbase/couchbase-linuxmusl-x64-napi': 4.3.1 - '@couchbase/couchbase-win32-x64-napi': 4.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - create-jest@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): - 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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: {} - - crelt@1.0.6: {} - - cross-fetch@3.1.5(encoding@0.1.13): - dependencies: - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-fetch@3.1.8(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-fetch@4.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-spawn-async@2.2.5: - dependencies: - lru-cache: 4.1.5 - which: 1.3.1 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crossws@0.2.4: {} - - crypt@0.0.2: {} - - crypto-js@4.2.0: {} - - crypto-random-string@2.0.0: {} - - crypto-random-string@4.0.0: - dependencies: - type-fest: 1.4.0 - - css-blank-pseudo@3.0.3(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - css-color-keywords@1.0.0: {} - - css-declaration-sorter@6.4.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - css-declaration-sorter@7.2.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - css-has-pseudo@3.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - css-loader@6.10.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.39) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.39) - postcss-modules-scope: 3.1.1(postcss@8.4.39) - postcss-modules-values: 4.0.0(postcss@8.4.39) - postcss-value-parser: 4.2.0 - semver: 7.6.0 - optionalDependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - css-loader@6.10.0(webpack@5.90.3): - dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.39) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.39) - postcss-modules-scope: 3.1.1(postcss@8.4.39) - postcss-modules-values: 4.0.0(postcss@8.4.39) - postcss-value-parser: 4.2.0 - semver: 7.6.0 - optionalDependencies: - webpack: 5.90.3 - - css-minimizer-webpack-plugin@3.4.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - cssnano: 5.1.15(postcss@8.4.21) - jest-worker: 27.5.1 - postcss: 8.4.21 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - source-map: 0.6.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.90.3): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - cssnano: 6.1.2(postcss@8.4.39) - jest-worker: 29.7.0 - postcss: 8.4.39 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.90.3 - optionalDependencies: - clean-css: 5.3.3 - - css-prefers-color-scheme@6.0.3(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - css-select-base-adapter@0.1.1: {} - - css-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 3.4.2 - domutils: 1.7.0 - nth-check: 1.0.2 - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-to-react-native@3.2.0: - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - - css-tree@1.0.0-alpha.37: - dependencies: - mdn-data: 2.0.4 - source-map: 0.6.1 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.0 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.0 - - css-what@3.4.2: {} - - css-what@6.1.0: {} - - css.escape@1.5.1: {} - - cssdb@7.11.2: {} - - cssesc@3.0.0: {} - - cssnano-preset-advanced@6.1.2(postcss@8.4.39): - dependencies: - autoprefixer: 10.4.20(postcss@8.4.39) - browserslist: 4.23.0 - cssnano-preset-default: 6.1.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-discard-unused: 6.0.5(postcss@8.4.39) - postcss-merge-idents: 6.0.3(postcss@8.4.39) - postcss-reduce-idents: 6.0.3(postcss@8.4.39) - postcss-zindex: 6.0.2(postcss@8.4.39) - - cssnano-preset-default@5.2.14(postcss@8.4.21): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.21) - cssnano-utils: 3.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-calc: 8.2.4(postcss@8.4.21) - postcss-colormin: 5.3.1(postcss@8.4.21) - postcss-convert-values: 5.1.3(postcss@8.4.21) - postcss-discard-comments: 5.1.2(postcss@8.4.21) - postcss-discard-duplicates: 5.1.0(postcss@8.4.21) - postcss-discard-empty: 5.1.1(postcss@8.4.21) - postcss-discard-overridden: 5.1.0(postcss@8.4.21) - postcss-merge-longhand: 5.1.7(postcss@8.4.21) - postcss-merge-rules: 5.1.4(postcss@8.4.21) - postcss-minify-font-values: 5.1.0(postcss@8.4.21) - postcss-minify-gradients: 5.1.1(postcss@8.4.21) - postcss-minify-params: 5.1.4(postcss@8.4.21) - postcss-minify-selectors: 5.2.1(postcss@8.4.21) - postcss-normalize-charset: 5.1.0(postcss@8.4.21) - postcss-normalize-display-values: 5.1.0(postcss@8.4.21) - postcss-normalize-positions: 5.1.1(postcss@8.4.21) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.21) - postcss-normalize-string: 5.1.0(postcss@8.4.21) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.21) - postcss-normalize-unicode: 5.1.1(postcss@8.4.21) - postcss-normalize-url: 5.1.0(postcss@8.4.21) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.21) - postcss-ordered-values: 5.1.3(postcss@8.4.21) - postcss-reduce-initial: 5.1.2(postcss@8.4.21) - postcss-reduce-transforms: 5.1.0(postcss@8.4.21) - postcss-svgo: 5.1.0(postcss@8.4.21) - postcss-unique-selectors: 5.1.1(postcss@8.4.21) - - cssnano-preset-default@6.1.2(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - css-declaration-sorter: 7.2.0(postcss@8.4.39) - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-calc: 9.0.1(postcss@8.4.39) - postcss-colormin: 6.1.0(postcss@8.4.39) - postcss-convert-values: 6.1.0(postcss@8.4.39) - postcss-discard-comments: 6.0.2(postcss@8.4.39) - postcss-discard-duplicates: 6.0.3(postcss@8.4.39) - postcss-discard-empty: 6.0.3(postcss@8.4.39) - postcss-discard-overridden: 6.0.2(postcss@8.4.39) - postcss-merge-longhand: 6.0.5(postcss@8.4.39) - postcss-merge-rules: 6.1.1(postcss@8.4.39) - postcss-minify-font-values: 6.1.0(postcss@8.4.39) - postcss-minify-gradients: 6.0.3(postcss@8.4.39) - postcss-minify-params: 6.1.0(postcss@8.4.39) - postcss-minify-selectors: 6.0.4(postcss@8.4.39) - postcss-normalize-charset: 6.0.2(postcss@8.4.39) - postcss-normalize-display-values: 6.0.2(postcss@8.4.39) - postcss-normalize-positions: 6.0.2(postcss@8.4.39) - postcss-normalize-repeat-style: 6.0.2(postcss@8.4.39) - postcss-normalize-string: 6.0.2(postcss@8.4.39) - postcss-normalize-timing-functions: 6.0.2(postcss@8.4.39) - postcss-normalize-unicode: 6.1.0(postcss@8.4.39) - postcss-normalize-url: 6.0.2(postcss@8.4.39) - postcss-normalize-whitespace: 6.0.2(postcss@8.4.39) - postcss-ordered-values: 6.0.2(postcss@8.4.39) - postcss-reduce-initial: 6.1.0(postcss@8.4.39) - postcss-reduce-transforms: 6.0.2(postcss@8.4.39) - postcss-svgo: 6.0.3(postcss@8.4.39) - postcss-unique-selectors: 6.0.4(postcss@8.4.39) - - cssnano-utils@3.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - cssnano-utils@4.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - cssnano@5.1.15(postcss@8.4.21): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.21) - lilconfig: 2.1.0 - postcss: 8.4.21 - yaml: 1.10.2 - - cssnano@6.1.2(postcss@8.4.39): - dependencies: - cssnano-preset-default: 6.1.2(postcss@8.4.39) - lilconfig: 3.1.2 - postcss: 8.4.39 - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - cssom@0.3.8: {} - - cssom@0.4.4: {} - - cssom@0.5.0: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - - cssstyle@3.0.0: - dependencies: - rrweb-cssom: 0.6.0 - - csstype@3.1.3: {} - - csv-generate@4.4.1: {} - - csv-parse@5.5.6: {} - - csv-parser@3.0.0: - dependencies: - minimist: 1.2.8 - - csv-stringify@6.5.1: {} - - csv@6.3.10: - dependencies: - csv-generate: 4.4.1 - csv-parse: 5.5.6 - csv-stringify: 6.5.1 - stream-transform: 3.3.2 - - cwd@0.10.0: - dependencies: - find-pkg: 0.1.2 - fs-exists-sync: 0.1.0 - - cwd@0.9.1: - dependencies: - find-pkg: 0.1.2 - - cypress@12.17.4: - dependencies: - '@cypress/request': 2.88.12 - '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 16.18.105 - '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.8 - arch: 2.2.0 - blob-util: 2.0.2 - bluebird: 3.7.2 - buffer: 5.7.1 - cachedir: 2.4.0 - chalk: 4.1.2 - check-more-types: 2.24.0 - cli-cursor: 3.1.0 - cli-table3: 0.6.4 - commander: 6.2.1 - common-tags: 1.8.2 - dayjs: 1.11.10 - debug: 4.3.6(supports-color@8.1.1) - enquirer: 2.4.1 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: 4.1.1 - extract-zip: 2.0.1(supports-color@8.1.1) - figures: 3.2.0 - fs-extra: 9.1.0 - getos: 3.2.1 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.4.1) - lodash: 4.17.21 - log-symbols: 4.1.0 - minimist: 1.2.8 - ospath: 1.2.2 - pretty-bytes: 5.6.0 - process: 0.11.10 - proxy-from-env: 1.0.0 - request-progress: 3.0.0 - semver: 7.6.0 - supports-color: 8.1.1 - tmp: 0.2.3 - untildify: 4.0.0 - yauzl: 2.10.0 - - cypress@13.13.0: - dependencies: - '@cypress/request': 3.0.1 - '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.8 - arch: 2.2.0 - blob-util: 2.0.2 - bluebird: 3.7.2 - buffer: 5.7.1 - cachedir: 2.4.0 - chalk: 4.1.2 - check-more-types: 2.24.0 - cli-cursor: 3.1.0 - cli-table3: 0.6.4 - commander: 6.2.1 - common-tags: 1.8.2 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.4.1 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: 4.1.1 - extract-zip: 2.0.1(supports-color@8.1.1) - figures: 3.2.0 - fs-extra: 9.1.0 - getos: 3.2.1 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.4.1) - lodash: 4.17.21 - log-symbols: 4.1.0 - minimist: 1.2.8 - ospath: 1.2.2 - pretty-bytes: 5.6.0 - process: 0.11.10 - proxy-from-env: 1.0.0 - request-progress: 3.0.0 - semver: 7.6.0 - supports-color: 8.1.1 - tmp: 0.2.3 - untildify: 4.0.0 - yauzl: 2.10.0 - - d3-color@3.1.0: {} - - d3-dispatch@3.0.1: {} - - d3-drag@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - - d3-dsv@2.0.0: - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - - d3-ease@3.0.1: {} - - d3-interpolate@3.0.1: - dependencies: - d3-color: 3.1.0 - - d3-selection@3.0.0: {} - - d3-timer@3.0.1: {} - - d3-transition@3.0.1(d3-selection@3.0.0): - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - - d3-zoom@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.2 - - damerau-levenshtein@1.0.8: {} - - dargs@7.0.0: {} - - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - - data-store@0.16.1: - dependencies: - cache-base: 0.8.5 - clone-deep: 0.2.4 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - graceful-fs: 4.2.11 - has-own-deep: 0.1.4 - lazy-cache: 2.0.2 - mkdirp: 0.5.6 - project-name: 0.2.6 - resolve-dir: 0.1.1 - rimraf: 2.7.1 - union-value: 0.2.4 - transitivePeerDependencies: - - supports-color - - data-uri-to-buffer@4.0.1: {} - - data-uri-to-buffer@6.0.2: {} - - data-urls@2.0.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - - data-urls@4.0.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - - dataloader@2.2.2: {} - - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.24.0 - - dateformat@4.6.3: {} - - dayjs@1.11.10: {} - - debounce@1.2.1: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7(supports-color@5.5.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 - - debug@3.2.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.4(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.6(supports-color@5.5.0): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 5.5.0 - - debug@4.3.6(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debuglog@1.0.1: {} - - decamelize@1.2.0: {} - - decimal.js@10.4.3: {} - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - decode-uri-component@0.2.2: {} - - decode-uri-component@0.4.1: {} - - decompress-response@4.2.1: - dependencies: - mimic-response: 2.1.0 - optional: true - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - dedent@0.7.0: {} - - dedent@1.5.3(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - - deep-bind@0.3.0: - dependencies: - mixin-deep: 1.3.2 - - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 + ccount@2.0.1: {} - deep-extend@0.6.0: {} + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 - deep-is@0.1.4: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 - deepmerge@2.2.1: {} + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 - deepmerge@4.3.1: {} + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 + chalk@5.3.0: {} + + char-regex@1.0.2: {} + + char-regex@2.0.1: {} - default-browser@3.1.0: - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 5.1.1 - xdg-default-browser: 2.1.0 + character-entities-html4@2.1.0: {} - default-compare@1.0.0: - dependencies: - kind-of: 5.1.0 + character-entities-legacy@1.1.4: {} + + character-entities-legacy@3.0.0: {} + + character-entities@1.2.4: {} + + character-entities@2.0.2: {} + + character-reference-invalid@1.1.4: {} + + character-reference-invalid@2.0.1: {} + + chardet@0.7.0: {} + + charenc@0.0.2: {} + + check-more-types@2.24.0: {} + + check-types@11.2.3: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0-rc.12: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + + chokidar@2.1.8: + dependencies: + anymatch: 2.0.0 + async-each: 1.0.6 + braces: 3.0.3 + glob-parent: 6.0.2 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 6.0.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 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + chromadb@1.10.5(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.14)(openai@4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2)): + dependencies: + cliui: 8.0.1 + isomorphic-fetch: 3.0.0(encoding@0.1.13) + optionalDependencies: + '@google/generative-ai': 0.22.0 + cohere-ai: 7.10.0(encoding@0.1.13) + ollama: 0.5.14 + openai: 4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2) + transitivePeerDependencies: + - encoding + optional: true + + chromadb@1.10.5(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.14)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)): + dependencies: + cliui: 8.0.1 + isomorphic-fetch: 3.0.0(encoding@0.1.13) + optionalDependencies: + '@google/generative-ai': 0.22.0 + cohere-ai: 7.10.0(encoding@0.1.13) + ollama: 0.5.14 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + transitivePeerDependencies: + - encoding + + chromadb@1.7.3(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)): + dependencies: + cliui: 8.0.1 + isomorphic-fetch: 3.0.0(encoding@0.1.13) + optionalDependencies: + '@google/generative-ai': 0.22.0 + cohere-ai: 7.10.0(encoding@0.1.13) + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + transitivePeerDependencies: + - encoding + + chromadb@1.8.1(@google/generative-ai@0.22.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)): + dependencies: + cliui: 8.0.1 + isomorphic-fetch: 3.0.0(encoding@0.1.13) + optionalDependencies: + '@google/generative-ai': 0.22.0 + cohere-ai: 6.2.2 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + transitivePeerDependencies: + - encoding + + chrome-trace-event@1.0.3: {} + + chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): + dependencies: + devtools-protocol: 0.0.1147663 + mitt: 3.0.0 + + chromium-bidi@0.4.7(devtools-protocol@0.0.1107588): + dependencies: + devtools-protocol: 0.0.1107588 + mitt: 3.0.0 + + ci-info@3.9.0: {} + + cjs-module-lexer@1.2.3: {} + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + classcat@5.0.4: {} + + classnames@2.5.1: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + clean-stack@3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + + cli-boxes@3.0.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + + cli-spinners@2.9.2: {} + + cli-table3@0.6.4: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cli-width@3.0.0: {} + + client-only@0.0.1: {} + + cliui@3.2.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + wrap-ansi: 2.1.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-buffer@1.0.0: {} + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone-stats@1.0.0: {} + + clone@1.0.4: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + clsx@1.2.1: {} + + clsx@2.1.0: {} + + cluster-key-slot@1.1.2: {} + + cmake-js@7.3.0: + dependencies: + axios: 1.7.9(debug@4.4.0) + debug: 4.4.0(supports-color@5.5.0) + fs-extra: 11.2.0 + lodash.isplainobject: 4.0.6 + memory-stream: 1.0.0 + node-api-headers: 1.1.0 + npmlog: 6.0.2 + rc: 1.2.8 + semver: 7.7.1 + tar: 6.2.0 + url-join: 4.0.1 + which: 2.0.2 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + cmd-shim@5.0.0: + dependencies: + mkdirp-infer-owner: 2.0.0 + + co@4.6.0: {} + + coa@2.0.2: + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + + code-point-at@1.1.0: {} + + code-red@1.0.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.14.1 + estree-walker: 3.0.3 + periscopic: 3.1.0 + + codemirror@6.0.1(@lezer/common@1.2.1): + dependencies: + '@codemirror/autocomplete': 6.14.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1) + '@codemirror/commands': 6.5.0 + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.3 + transitivePeerDependencies: + - '@lezer/common' - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 + codsen-utils@1.6.4: + dependencies: + rfdc: 1.3.1 - default-resolution@2.0.0: {} + cohere-ai@6.2.2: {} - defaults-deep@0.2.4: - dependencies: - for-own: 0.1.5 - is-extendable: 0.1.1 - lazy-cache: 0.2.7 + cohere-ai@7.10.0(encoding@0.1.13): + dependencies: + form-data: 4.0.0 + form-data-encoder: 4.0.2 + formdata-node: 6.0.3 + js-base64: 3.7.2 + node-fetch: 2.7.0(encoding@0.1.13) + qs: 6.11.2 + url-join: 4.0.1 + transitivePeerDependencies: + - encoding - defaults@1.0.4: - dependencies: - clone: 1.0.4 + collapse-white-space@2.1.0: {} - defer-to-connect@2.0.1: {} + collect-v8-coverage@1.0.2: {} - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 + collection-map@1.0.0: + dependencies: + arr-map: 2.0.2 + for-own: 1.0.0 + make-iterator: 1.0.1 - define-lazy-prop@2.0.0: {} + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.7 + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.3 + color-name@1.1.3: {} - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 + color-name@1.1.4: {} - defu@6.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 + color-support@1.1.3: {} - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 - delayed-stream@1.0.0: {} + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 - delegate@3.2.0: - optional: true + colord@2.9.3: {} - delegates@1.0.0: {} + colorette@2.0.20: {} - delimiter-regex@1.3.1: - dependencies: - extend-shallow: 1.1.4 + colors@1.0.3: {} - delimiter-regex@2.0.0: - dependencies: - extend-shallow: 1.1.4 - isobject: 2.1.0 + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 - denque@2.1.0: {} + combine-promises@1.2.0: {} - depd@1.1.2: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 - depd@2.0.0: {} + comma-separated-tokens@1.0.8: {} - deprecation@2.3.1: {} + comma-separated-tokens@2.0.3: {} - dequal@2.0.3: {} + commander@10.0.1: {} - destr@2.0.3: {} + commander@11.0.0: {} - destroy@1.2.0: {} + commander@2.20.3: {} - detect-file@1.0.0: {} + commander@4.1.1: {} - detect-indent@4.0.0: - dependencies: - repeating: 2.0.1 + commander@5.1.0: {} - detect-libc@2.0.2: {} + commander@6.2.0: {} - detect-newline@3.1.0: {} + commander@6.2.1: {} - detect-node@2.1.0: {} + commander@7.1.0: {} - detect-port-alt@1.1.6: - dependencies: - address: 1.2.2 - debug: 2.6.9 - transitivePeerDependencies: - - supports-color + commander@7.2.0: {} - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + commander@8.3.0: {} - device-detector-js@3.0.3: {} + commander@9.2.0: {} - devlop@1.1.0: - dependencies: - dequal: 2.0.3 + commander@9.5.0: {} - devtools-protocol@0.0.1107588: {} + commist@1.1.0: + dependencies: + leven: 2.1.0 + minimist: 1.2.8 - devtools-protocol@0.0.1147663: {} + common-ancestor-path@1.0.1: {} - dezalgo@1.0.4: - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 + common-path-prefix@3.0.0: {} - didyoumean@1.2.2: {} + common-tags@1.8.2: {} - diff-match-patch@1.0.5: {} + commondir@1.0.1: {} - diff-sequences@27.5.1: {} + component-emitter@1.3.1: {} - diff-sequences@29.6.3: {} + component-register@0.8.3: {} - diff@4.0.2: {} + composio-core@0.4.8: + dependencies: + pusher-js: 8.4.0-rc2 - diff@5.2.0: {} + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 - digest-fetch@1.3.0: - dependencies: - base-64: 0.1.0 - md5: 2.3.0 + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color - dingbat-to-unicode@1.0.1: {} + concat-map@0.0.1: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 - dlv@1.1.3: {} + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.4 + concat-with-sourcemaps@1.1.0: + dependencies: + source-map: 0.6.1 - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 + concurrently@7.6.0: + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.1 + shell-quote: 1.8.1 + spawn-command: 0.0.2-1 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 - dom-accessibility-api@0.5.16: {} + configstore@6.0.0: + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 + confusing-browser-globals@1.0.11: {} - dom-helpers@5.2.1: - dependencies: - '@babel/runtime': 7.24.0 - csstype: 3.1.3 + connect-history-api-fallback@2.0.0: {} - dom-serializer@0.2.2: - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 + consola@2.15.3: {} - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 + consola@3.2.3: {} - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 + console-control-strings@1.1.0: {} - domelementtype@1.3.1: {} + console-table-printer@2.12.1: + dependencies: + simple-wcswidth: 1.0.1 - domelementtype@2.3.0: {} + content-disposition@0.5.2: {} - domexception@2.0.1: - dependencies: - webidl-conversions: 5.0.0 + content-disposition@0.5.3: + dependencies: + safe-buffer: 5.1.2 + + 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: {} + + contentful-management@10.46.4: + dependencies: + '@contentful/rich-text-types': 16.8.3 + '@types/json-patch': 0.0.30 + axios: 1.7.9(debug@4.3.4) + contentful-sdk-core: 8.3.1 + fast-copy: 3.0.2 + lodash.isplainobject: 4.0.6 + type-fest: 4.12.0 + transitivePeerDependencies: + - debug + + contentful-management@11.31.1: + dependencies: + '@contentful/rich-text-types': 16.8.3 + axios: 1.7.9(debug@4.3.4) + contentful-sdk-core: 8.3.1 + fast-copy: 3.0.2 + transitivePeerDependencies: + - debug + + contentful-resolve-response@1.9.0: + dependencies: + fast-copy: 2.1.7 - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 + contentful-sdk-core@8.3.1: + dependencies: + fast-copy: 2.1.7 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + p-throttle: 4.1.1 + qs: 6.12.1 + + contentful@10.13.2: + dependencies: + '@contentful/content-source-maps': 0.6.1 + '@contentful/rich-text-types': 16.8.3 + axios: 1.7.9(debug@4.3.4) + contentful-resolve-response: 1.9.0 + contentful-sdk-core: 8.3.1 + json-stringify-safe: 5.0.1 + type-fest: 4.12.0 + transitivePeerDependencies: + - debug + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-es@1.2.2: {} + + cookie-signature@1.0.6: {} + + cookie-signature@1.0.7: {} + + cookie-signature@1.2.2: {} + + cookie@0.4.0: {} + + cookie@0.4.2: {} + + cookie@0.5.0: {} + + cookie@0.6.0: {} + + cookie@0.7.1: {} + + cookie@0.7.2: {} + + copy-descriptor@0.1.1: {} + + copy-props@2.0.5: + dependencies: + each-props: 1.3.2 + is-plain-object: 5.0.0 + + copy-text-to-clipboard@3.2.0: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + copy-webpack-plugin@11.0.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + + copy-webpack-plugin@11.0.0(webpack@5.90.3): + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.3 + + core-js-compat@3.36.0: + dependencies: + browserslist: 4.23.0 + + core-js-compat@3.37.0: + dependencies: + browserslist: 4.23.0 + + core-js-pure@3.36.0: {} + + core-js@2.6.12: {} + + core-js@3.36.0: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@6.0.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.1.3: + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + + cosmiconfig@8.2.0: + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + + cosmiconfig@8.3.6(typescript@4.9.5): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 4.9.5 + + cosmiconfig@8.3.6(typescript@5.5.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.2 + + couchbase@4.4.1: + dependencies: + cmake-js: 7.3.0 + node-addon-api: 8.3.1 + optionalDependencies: + '@couchbase/couchbase-darwin-arm64-napi': 4.4.1 + '@couchbase/couchbase-darwin-x64-napi': 4.4.1 + '@couchbase/couchbase-linux-arm64-napi': 4.4.1 + '@couchbase/couchbase-linux-x64-napi': 4.4.1 + '@couchbase/couchbase-linuxmusl-arm64-napi': 4.4.1 + '@couchbase/couchbase-linuxmusl-x64-napi': 4.4.1 + '@couchbase/couchbase-win32-x64-napi': 4.4.1 + transitivePeerDependencies: + - supports-color + + cpu-features@0.0.10: + dependencies: + buildcheck: 0.0.6 + nan: 2.22.2 + optional: true + + create-jest@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): + 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@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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: {} + + crelt@1.0.6: {} + + crlf-normalize@1.0.20(ts-toolbelt@9.6.0): + dependencies: + ts-type: 3.0.1(ts-toolbelt@9.6.0) + transitivePeerDependencies: + - ts-toolbelt + + cron-parser@4.9.0: + dependencies: + luxon: 3.5.0 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-fetch@3.1.5(encoding@0.1.13): + dependencies: + node-fetch: 2.6.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + cross-fetch@3.1.8(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + cross-fetch@4.0.0(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + cross-spawn-async@2.2.5: + dependencies: + lru-cache: 4.1.5 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.2.4: {} + + crypt@0.0.2: {} + + crypto-js@4.2.0: {} + + crypto-random-string@2.0.0: {} + + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + + css-blank-pseudo@3.0.3(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + css-color-keywords@1.0.0: {} + + css-declaration-sorter@6.4.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + css-declaration-sorter@7.2.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + css-has-pseudo@3.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + css-loader@6.10.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.39) + postcss-modules-scope: 3.1.1(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) + postcss-value-parser: 4.2.0 + semver: 7.7.1 + optionalDependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + css-loader@6.10.0(webpack@5.90.3): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.39) + postcss-modules-scope: 3.1.1(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) + postcss-value-parser: 4.2.0 + semver: 7.7.1 + optionalDependencies: + webpack: 5.90.3 + + css-minimizer-webpack-plugin@3.4.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + cssnano: 5.1.15(postcss@8.4.21) + jest-worker: 27.5.1 + postcss: 8.4.21 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + source-map: 0.6.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.90.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + cssnano: 6.1.2(postcss@8.4.39) + jest-worker: 29.7.0 + postcss: 8.4.39 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.3 + optionalDependencies: + clean-css: 5.3.3 + + css-prefers-color-scheme@6.0.3(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + css-select-base-adapter@0.1.1: {} + + css-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 2.1.1 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-tree@1.0.0-alpha.37: + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + + css-what@3.4.2: {} + + css-what@6.1.0: {} + + css.escape@1.5.1: {} + + cssdb@7.11.2: {} + + cssesc@3.0.0: {} + + cssnano-preset-advanced@6.1.2(postcss@8.4.39): + dependencies: + autoprefixer: 10.4.20(postcss@8.4.39) + browserslist: 4.23.0 + cssnano-preset-default: 6.1.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-discard-unused: 6.0.5(postcss@8.4.39) + postcss-merge-idents: 6.0.3(postcss@8.4.39) + postcss-reduce-idents: 6.0.3(postcss@8.4.39) + postcss-zindex: 6.0.2(postcss@8.4.39) + + cssnano-preset-default@5.2.14(postcss@8.4.21): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.21) + cssnano-utils: 3.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-calc: 8.2.4(postcss@8.4.21) + postcss-colormin: 5.3.1(postcss@8.4.21) + postcss-convert-values: 5.1.3(postcss@8.4.21) + postcss-discard-comments: 5.1.2(postcss@8.4.21) + postcss-discard-duplicates: 5.1.0(postcss@8.4.21) + postcss-discard-empty: 5.1.1(postcss@8.4.21) + postcss-discard-overridden: 5.1.0(postcss@8.4.21) + postcss-merge-longhand: 5.1.7(postcss@8.4.21) + postcss-merge-rules: 5.1.4(postcss@8.4.21) + postcss-minify-font-values: 5.1.0(postcss@8.4.21) + postcss-minify-gradients: 5.1.1(postcss@8.4.21) + postcss-minify-params: 5.1.4(postcss@8.4.21) + postcss-minify-selectors: 5.2.1(postcss@8.4.21) + postcss-normalize-charset: 5.1.0(postcss@8.4.21) + postcss-normalize-display-values: 5.1.0(postcss@8.4.21) + postcss-normalize-positions: 5.1.1(postcss@8.4.21) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.21) + postcss-normalize-string: 5.1.0(postcss@8.4.21) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.21) + postcss-normalize-unicode: 5.1.1(postcss@8.4.21) + postcss-normalize-url: 5.1.0(postcss@8.4.21) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.21) + postcss-ordered-values: 5.1.3(postcss@8.4.21) + postcss-reduce-initial: 5.1.2(postcss@8.4.21) + postcss-reduce-transforms: 5.1.0(postcss@8.4.21) + postcss-svgo: 5.1.0(postcss@8.4.21) + postcss-unique-selectors: 5.1.1(postcss@8.4.21) + + cssnano-preset-default@6.1.2(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + css-declaration-sorter: 7.2.0(postcss@8.4.39) + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-calc: 9.0.1(postcss@8.4.39) + postcss-colormin: 6.1.0(postcss@8.4.39) + postcss-convert-values: 6.1.0(postcss@8.4.39) + postcss-discard-comments: 6.0.2(postcss@8.4.39) + postcss-discard-duplicates: 6.0.3(postcss@8.4.39) + postcss-discard-empty: 6.0.3(postcss@8.4.39) + postcss-discard-overridden: 6.0.2(postcss@8.4.39) + postcss-merge-longhand: 6.0.5(postcss@8.4.39) + postcss-merge-rules: 6.1.1(postcss@8.4.39) + postcss-minify-font-values: 6.1.0(postcss@8.4.39) + postcss-minify-gradients: 6.0.3(postcss@8.4.39) + postcss-minify-params: 6.1.0(postcss@8.4.39) + postcss-minify-selectors: 6.0.4(postcss@8.4.39) + postcss-normalize-charset: 6.0.2(postcss@8.4.39) + postcss-normalize-display-values: 6.0.2(postcss@8.4.39) + postcss-normalize-positions: 6.0.2(postcss@8.4.39) + postcss-normalize-repeat-style: 6.0.2(postcss@8.4.39) + postcss-normalize-string: 6.0.2(postcss@8.4.39) + postcss-normalize-timing-functions: 6.0.2(postcss@8.4.39) + postcss-normalize-unicode: 6.1.0(postcss@8.4.39) + postcss-normalize-url: 6.0.2(postcss@8.4.39) + postcss-normalize-whitespace: 6.0.2(postcss@8.4.39) + postcss-ordered-values: 6.0.2(postcss@8.4.39) + postcss-reduce-initial: 6.1.0(postcss@8.4.39) + postcss-reduce-transforms: 6.0.2(postcss@8.4.39) + postcss-svgo: 6.0.3(postcss@8.4.39) + postcss-unique-selectors: 6.0.4(postcss@8.4.39) + + cssnano-utils@3.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + cssnano-utils@4.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + cssnano@5.1.15(postcss@8.4.21): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.21) + lilconfig: 2.1.0 + postcss: 8.4.21 + yaml: 1.10.2 + + cssnano@6.1.2(postcss@8.4.39): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.4.39) + lilconfig: 3.1.2 + postcss: 8.4.39 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@3.0.0: + dependencies: + rrweb-cssom: 0.6.0 + + csstype@3.1.3: {} + + csv-generate@4.4.1: {} + + csv-parse@5.5.6: {} + + csv-parser@3.0.0: + dependencies: + minimist: 1.2.8 + + csv-stringify@6.5.1: {} + + csv@6.3.10: + dependencies: + csv-generate: 4.4.1 + csv-parse: 5.5.6 + csv-stringify: 6.5.1 + stream-transform: 3.3.2 + + cypress@12.17.4: + dependencies: + '@cypress/request': 2.88.12 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/node': 16.18.105 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.8 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.4 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.10 + debug: 4.3.6(supports-color@8.1.1) + enquirer: 2.4.1 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0(enquirer@2.4.1) + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.7.1 + supports-color: 8.1.1 + tmp: 0.2.3 + untildify: 4.0.0 + yauzl: 2.10.0 + + cypress@13.13.0: + dependencies: + '@cypress/request': 3.0.1 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.8 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.4 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0(enquirer@2.4.1) + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.7.1 + supports-color: 8.1.1 + tmp: 0.2.3 + untildify: 4.0.0 + yauzl: 2.10.0 + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@2.0.0: + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-selection@3.0.0: {} + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.2 + + damerau-levenshtein@1.0.8: {} + + dargs@7.0.0: {} + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-uri-to-buffer@4.0.1: {} + + data-uri-to-buffer@6.0.2: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + data-urls@4.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dataloader@2.2.2: {} + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.24.0 + + dateformat@4.6.3: {} + + dayjs@1.11.10: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.1.0: + dependencies: + ms: 2.0.0 + + debug@3.2.7(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + debug@3.2.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.3.4(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.3.6(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.4.0(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + debug@4.4.0(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + debuglog@1.0.1: {} + + decamelize@1.2.0: {} + + decimal.js@10.4.3: {} + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + decode-uri-component@0.2.2: {} + + decode-uri-component@0.4.1: {} + + decompress-response@4.2.1: + dependencies: + mimic-response: 2.1.0 + optional: true + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@0.7.0: {} + + dedent@1.5.3(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deep-eql@4.0.0: + dependencies: + type-detect: 4.1.0 + + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.8 + es-get-iterator: 1.1.3 + get-intrinsic: 1.3.0 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.4 + side-channel: 1.1.0 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 + deep-extend@0.6.0: {} - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 + deep-is@0.1.4: {} - domutils@1.7.0: - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 + deepmerge@2.2.1: {} - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 + deepmerge@4.3.1: {} - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 + default-browser@3.1.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 5.1.1 + xdg-default-browser: 2.1.0 - dot-prop@6.0.1: - dependencies: - is-obj: 2.0.0 + default-compare@1.0.0: + dependencies: + kind-of: 5.1.0 - dotenv-cli@7.4.2: - dependencies: - cross-spawn: 7.0.3 - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - minimist: 1.2.8 + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 - dotenv-expand@10.0.0: {} + default-resolution@2.0.0: {} - dotenv-expand@5.1.0: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 - dotenv@10.0.0: {} + defer-to-connect@2.0.1: {} - dotenv@16.0.3: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 - dotenv@16.4.5: {} + define-lazy-prop@2.0.0: {} - duck@0.1.12: - dependencies: - underscore: 1.13.6 + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 - duplexer@0.1.2: {} + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 - 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 + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 - e2b@0.16.1: - dependencies: - isomorphic-ws: 5.0.0(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - normalize-path: 3.0.0 - openapi-typescript-fetch: 1.1.3 - path-browserify: 1.0.1 - platform: 1.3.6 - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + defu@6.1.4: {} - each-props@1.3.2: - dependencies: - is-plain-object: 2.0.4 - object.defaults: 1.1.0 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 - eastasianwidth@0.2.0: {} - - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - ee-first@1.1.1: {} - - ejs@3.1.10: - dependencies: - jake: 10.8.7 - - ejs@3.1.9: - dependencies: - jake: 10.8.7 - - electron-to-chromium@1.4.701: {} - - electron-to-chromium@1.5.17: {} - - emittery@0.10.2: {} - - emittery@0.13.1: {} - - emittery@0.8.1: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - emojilib@2.4.0: {} - - emojis-list@3.0.0: {} - - emoticon@4.1.0: {} - - empty-dir@0.2.1: - dependencies: - fs-exists-sync: 0.1.0 - - en-route@0.7.5: - dependencies: - arr-flatten: 1.1.0 - debug: 2.6.9 - extend-shallow: 2.0.1 - kind-of: 3.2.2 - lazy-cache: 1.0.4 - path-to-regexp: 1.8.0 - transitivePeerDependencies: - - supports-color - - enabled@2.0.0: {} - - encodeurl@1.0.2: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - - end-of-stream@0.1.5: - dependencies: - once: 1.3.3 - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - engine-base@0.1.3: - dependencies: - component-emitter: 1.3.1 - delimiter-regex: 2.0.0 - engine: 0.1.12 - engine-utils: 0.1.1 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - object.omit: 2.0.1 - object.pick: 1.3.0 - - engine-cache@0.19.4: - dependencies: - async-helpers: 0.3.17 - extend-shallow: 2.0.1 - helper-cache: 0.7.2 - isobject: 3.0.1 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - - engine-utils@0.1.1: {} - - engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6(supports-color@5.5.0) - engine.io-parser: 5.2.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xmlhttprequest-ssl: 2.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.2: {} - - engine.io@6.5.4(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@types/cookie': 0.4.1 - '@types/cors': 2.8.17 - '@types/node': 18.15.11 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.4.2 - cors: 2.8.5 - debug: 4.3.6(supports-color@5.5.0) - engine.io-parser: 5.2.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine@0.1.12: - dependencies: - assign-deep: 0.4.8 - collection-visit: 0.2.3 - get-value: 1.3.1 - kind-of: 2.0.1 - lazy-cache: 0.2.7 - object.omit: 2.0.1 - set-value: 0.2.0 - - enhanced-resolve@5.16.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - entities@2.2.0: {} - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - envinfo@7.13.0: {} - - err-code@2.0.3: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - - error-symbol@0.1.0: {} - - error@10.4.0: {} - - es-abstract@1.22.5: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-array-method-boxes-properly@1.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - - es-iterator-helpers@1.0.17: - dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - - es-module-lexer@1.4.1: {} - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-promise@3.3.1: {} - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - es6-weak-map@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - escalade@3.1.2: {} - - escape-goat@4.0.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - escodegen@1.14.3: - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - - 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-next@13.2.4(eslint@8.37.0)(typescript@5.0.3): - dependencies: - '@next/eslint-plugin-next': 13.2.4 - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.37.0) - eslint-plugin-react: 7.34.0(eslint@8.37.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) - optionalDependencies: - typescript: 5.0.3 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - - eslint-config-next@13.5.6(eslint@7.32.0)(typescript@4.9.5): - dependencies: - '@next/eslint-plugin-next': 13.5.6 - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@7.32.0) - eslint-plugin-react: 7.34.0(eslint@7.32.0) - eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - - eslint-config-prettier@8.10.0(eslint@7.32.0): - dependencies: - eslint: 7.32.0 - - eslint-config-prettier@8.10.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-config-prettier@9.1.0(eslint@8.37.0): - dependencies: - eslint: 8.37.0 - - eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2): - dependencies: - '@babel/core': 7.24.0 - '@babel/eslint-parser': 7.23.10(@babel/core@7.24.0)(eslint@8.57.0) - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - babel-preset-react-app: 10.0.1 - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.0(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - eslint-plugin-testing-library: 5.11.1(eslint@8.57.0)(typescript@5.5.2) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - '@babel/plugin-syntax-flow' - - '@babel/plugin-transform-react-jsx' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color - - eslint-config-turbo@1.13.4(eslint@7.32.0): - dependencies: - eslint: 7.32.0 - eslint-plugin-turbo: 1.13.4(eslint@7.32.0) - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7(supports-color@5.5.0) - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0): - dependencies: - debug: 4.3.6(supports-color@5.5.0) - enhanced-resolve: 5.16.0 - eslint: 7.32.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0))(eslint@7.32.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.6 - is-core-module: 2.13.1 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0): - dependencies: - debug: 4.3.6(supports-color@5.5.0) - enhanced-resolve: 5.16.0 - eslint: 8.37.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.6 - is-core-module: 2.13.1 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0))(eslint@7.32.0): - dependencies: - debug: 3.2.7(supports-color@5.5.0) - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0): - dependencies: - debug: 3.2.7(supports-color@5.5.0) - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@7.32.0): - dependencies: - debug: 3.2.7(supports-color@5.5.0) - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - dependencies: - debug: 3.2.7(supports-color@5.5.0) - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(eslint@8.57.0): - dependencies: - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.0) - eslint: 8.57.0 - lodash: 4.17.21 - string-natural-compare: 3.0.1 - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@5.5.0) - doctrine: 2.1.0 - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@5.5.0) - doctrine: 2.1.0 - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@7.32.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@5.5.0) - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2): - dependencies: - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-jsx-a11y@6.8.0(eslint@7.32.0): - dependencies: - '@babel/runtime': 7.24.0 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 - eslint: 7.32.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - - eslint-plugin-jsx-a11y@6.8.0(eslint@8.37.0): - dependencies: - '@babel/runtime': 7.24.0 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 - eslint: 8.37.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - dependencies: - '@babel/runtime': 7.24.0 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - - eslint-plugin-markdown@3.0.1(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - - eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): - dependencies: - eslint: 8.57.0 - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) - - eslint-plugin-prettier@5.2.1(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.37.0))(eslint@8.37.0)(prettier@3.2.5): - dependencies: - eslint: 8.37.0 - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.1 - optionalDependencies: - '@types/eslint': 8.56.5 - eslint-config-prettier: 9.1.0(eslint@8.37.0) - - eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): - dependencies: - eslint: 7.32.0 - - eslint-plugin-react-hooks@4.6.0(eslint@8.37.0): - dependencies: - eslint: 8.37.0 - - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-plugin-react@7.34.0(eslint@7.32.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.17 - eslint: 7.32.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 - - eslint-plugin-react@7.34.0(eslint@8.37.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.17 - eslint: 8.37.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 - - eslint-plugin-react@7.34.0(eslint@8.57.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.17 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 - - eslint-plugin-solid@0.12.0(eslint@8.37.0)(typescript@5.0.3): - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) - eslint: 8.37.0 - is-html: 2.0.0 - jsx-ast-utils: 3.3.5 - kebab-case: 1.0.2 - known-css-properties: 0.24.0 - style-to-object: 0.3.0 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-testing-library@5.11.1(eslint@8.57.0)(typescript@5.5.2): - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-turbo@1.13.4(eslint@7.32.0): - dependencies: - dotenv: 16.0.3 - eslint: 7.32.0 - - eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-rule-composer: 0.3.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) - - eslint-rule-composer@0.3.0: {} - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-visitor-keys@1.3.0: {} - - eslint-visitor-keys@2.1.0: {} - - eslint-visitor-keys@3.4.3: {} - - eslint-webpack-plugin@3.2.0(eslint@8.57.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@types/eslint': 8.56.5 - eslint: 8.57.0 - jest-worker: 28.1.3 - micromatch: 4.0.5 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - eslint@7.32.0: - dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.6(supports-color@5.5.0) - doctrine: 3.0.0 - enquirer: 2.4.1 - escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.24.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.6.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.2 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color - - eslint@8.37.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.37.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - grapheme-splitter: 1.0.4 - ignore: 5.3.1 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.2 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - eslint@8.57.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - esm@3.2.25: {} - - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.2 - - espree@7.3.1: - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 - - espree@9.6.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - - esprima@1.2.2: {} - - esprima@4.0.1: {} - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.5 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.4 - - estree-util-value-to-estree@3.1.2: - dependencies: - '@types/estree': 1.0.5 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.2 - - estree-walker@0.6.1: {} - - estree-walker@1.0.1: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - - esutils@2.0.3: {} - - eta@2.2.0: {} - - etag@1.8.1: {} - - eval@0.1.8: - dependencies: - '@types/node': 18.15.11 - require-like: 0.1.2 - - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - - event-stream@3.3.4: - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - - event-target-shim@5.0.1: {} - - eventemitter2@6.4.7: {} - - eventemitter3@3.1.2: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - events@1.1.1: {} - - events@3.3.0: {} - - eventsource-parser@1.1.2: {} - - exa-js@1.0.12(encoding@0.1.13): - dependencies: - cross-fetch: 4.0.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - execa@0.2.2: - dependencies: - cross-spawn-async: 2.2.5 - npm-run-path: 1.0.0 - object-assign: 4.1.1 - path-key: 1.0.0 - strip-eof: 1.0.0 - - execa@4.1.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@7.2.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - - executable@4.1.1: - dependencies: - pify: 2.3.0 - - exit-hook@1.1.1: {} - - exit@0.1.2: {} - - expand-args@0.4.3: - dependencies: - expand-object: 0.4.2 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - minimist: 1.2.8 - mixin-deep: 1.3.2 - omit-empty: 0.4.1 - set-value: 0.3.3 - - expand-brackets@0.1.5: - dependencies: - is-posix-bracket: 0.1.1 - - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - expand-object@0.4.2: - dependencies: - get-stdin: 5.0.1 - is-number: 2.1.0 - minimist: 1.2.8 - set-value: 0.3.3 - - expand-pkg@0.1.9: - dependencies: - component-emitter: 1.3.1 - debug: 2.6.9 - defaults-deep: 0.2.4 - export-files: 2.1.1 - get-value: 2.0.6 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - load-pkg: 3.0.1 - mixin-deep: 1.3.2 - normalize-pkg: 0.3.20 - omit-empty: 0.4.1 - parse-author: 1.0.0 - parse-git-config: 1.1.1 - repo-utils: 0.3.7 - transitivePeerDependencies: - - supports-color - - expand-range@1.8.2: - dependencies: - fill-range: 2.2.4 - - expand-template@2.0.3: {} - - expand-tilde@1.2.2: - dependencies: - os-homedir: 1.0.2 - - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - - expect@27.5.1: - dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - - 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 - - exponential-backoff@3.1.1: {} - - export-files@2.1.1: - dependencies: - lazy-cache: 1.0.4 - - expr-eval@2.0.2: {} - - express-basic-auth@1.2.1: - dependencies: - basic-auth: 2.0.1 - - express-oauth2-jwt-bearer@1.6.0: - dependencies: - jose: 4.15.9 - - express-rate-limit@6.11.2(express@4.18.3): - dependencies: - express: 4.18.3 - - express-session@1.18.1: - dependencies: - cookie: 0.7.2 - cookie-signature: 1.0.7 - debug: 2.6.9 - depd: 2.0.0 - on-headers: 1.0.2 - parseurl: 1.3.3 - safe-buffer: 5.2.1 - uid-safe: 2.1.5 - transitivePeerDependencies: - - supports-color - - express@4.18.3: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.2 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - ext@1.7.0: - dependencies: - type: 2.7.2 - - extend-shallow@1.1.4: - dependencies: - kind-of: 1.1.0 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - extglob@0.3.2: - dependencies: - is-extglob: 1.0.0 - - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - extract-files@9.0.0: {} - - extract-zip@2.0.1: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - extract-zip@2.0.1(supports-color@8.1.1): - dependencies: - debug: 4.3.6(supports-color@8.1.1) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - extsprintf@1.3.0: {} - - faiss-node@0.5.1: - dependencies: - bindings: 1.5.0 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 - - falsey@0.3.2: - dependencies: - kind-of: 5.1.0 - - fancy-log@1.3.3: - dependencies: - ansi-gray: 0.1.1 - color-support: 1.1.3 - parse-node-version: 1.0.1 - time-stamp: 1.1.0 - - fast-copy@2.1.7: {} - - fast-copy@3.0.2: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-fifo@1.3.2: {} - - fast-glob@3.3.2: - 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.5 - - fast-json-patch@3.1.1: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@1.1.4: {} - - fast-levenshtein@2.0.6: {} - - fast-levenshtein@3.0.0: - dependencies: - fastest-levenshtein: 1.0.16 - - fast-safe-stringify@2.1.1: {} - - fast-text-encoding@1.0.6: {} - - fast-url-parser@1.1.3: - dependencies: - punycode: 1.3.2 - - fast-xml-parser@4.2.5: - dependencies: - strnum: 1.0.5 - - fast-xml-parser@4.3.5: - dependencies: - strnum: 1.0.5 - - fast-xml-parser@4.4.1: - dependencies: - strnum: 1.0.5 - - fastest-levenshtein@1.0.16: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fault@1.0.4: - dependencies: - format: 0.2.2 - - fault@2.0.1: - dependencies: - format: 0.2.2 - - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fbemitter@3.0.0(encoding@0.1.13): - dependencies: - fbjs: 3.0.5(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - fbjs-css-vars@1.0.2: {} - - fbjs@3.0.5(encoding@0.1.13): - dependencies: - cross-fetch: 3.1.8(encoding@0.1.13) - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - fecha@4.2.3: {} - - feed@4.2.2: - dependencies: - xml-js: 1.6.11 - - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - fetch-h2@3.0.2: - dependencies: - '@types/tough-cookie': 4.0.5 - already: 2.2.1 - callguard: 2.0.0 - get-stream: 6.0.1 - through2: 4.0.2 - to-arraybuffer: 1.0.1 - tough-cookie: 4.1.3 - - figures@1.7.0: - dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-contents@0.2.4: - dependencies: - extend-shallow: 2.0.1 - file-stat: 0.1.3 - graceful-fs: 4.2.11 - is-buffer: 1.1.6 - is-utf8: 0.2.1 - lazy-cache: 0.2.7 - through2: 2.0.5 - - file-contents@1.0.1: - dependencies: - define-property: 0.2.5 - extend-shallow: 2.0.1 - is-buffer: 1.1.6 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - strip-bom-buffer: 0.1.1 - strip-bom-string: 0.1.2 - through2: 2.0.5 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - file-is-binary@1.0.0: - dependencies: - is-binary-buffer: 1.0.0 - isobject: 3.0.1 - - file-loader@6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - - file-loader@6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - file-loader@6.2.0(webpack@5.90.3): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.90.3 - - file-name@0.1.0: {} - - file-stat@0.1.3: - dependencies: - graceful-fs: 4.2.11 - lazy-cache: 0.2.7 - through2: 2.0.5 - - file-uri-to-path@1.0.0: {} - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - filename-regex@2.0.1: {} - - filesize@8.0.7: {} - - fill-range@2.2.4: - dependencies: - is-number: 2.1.0 - isobject: 2.1.0 - randomatic: 3.1.1 - repeat-element: 1.1.4 - repeat-string: 1.6.1 - - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - filter-obj@5.1.0: {} - - finalhandler@1.2.0: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - - find-file-up@0.1.3: - dependencies: - fs-exists-sync: 0.1.0 - resolve-dir: 0.1.1 - - find-pkg@0.1.2: - dependencies: - find-file-up: 0.1.3 - - find-root@1.1.0: {} - - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - 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-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - - find-yarn-workspace-root@2.0.0: - dependencies: - micromatch: 4.0.5 - - findup-sync@2.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 3.1.0 - micromatch: 3.1.10 - resolve-dir: 1.0.1 - transitivePeerDependencies: - - supports-color - - findup-sync@3.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 3.1.10 - resolve-dir: 1.0.1 - transitivePeerDependencies: - - supports-color - - fined@1.2.0: - dependencies: - expand-tilde: 2.0.2 - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - object.pick: 1.3.0 - parse-filepath: 1.0.2 - - first-chunk-stream@1.0.0: {} - - first-chunk-stream@2.0.0: - dependencies: - readable-stream: 2.3.8 - - flagged-respawn@1.0.1: {} - - flagsmith@4.0.3: {} - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flat@5.0.2: {} - - flatbuffers@1.12.0: {} - - flatted@3.3.1: {} - - flowise-react-json-view@1.21.7(@types/react@18.2.65)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - flux: 4.0.4(encoding@0.1.13)(react@18.2.0) - react: 18.2.0 - react-base16-styling: 0.6.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.3(@types/react@18.2.65)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - encoding - - flush-write-stream@1.1.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - flux@4.0.4(encoding@0.1.13)(react@18.2.0): - dependencies: - fbemitter: 3.0.0(encoding@0.1.13) - fbjs: 3.0.5(encoding@0.1.13) - react: 18.2.0 - transitivePeerDependencies: - - encoding - - fn.name@1.1.0: {} - - follow-redirects@1.15.5(debug@4.3.4): - optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) - - follow-redirects@1.15.6(debug@4.3.6): - optionalDependencies: - debug: 4.3.6(supports-color@5.5.0) - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - for-in@0.1.8: {} - - for-in@1.0.2: {} - - for-own@0.1.5: - dependencies: - for-in: 1.0.2 - - for-own@1.0.0: - dependencies: - for-in: 1.0.2 - - foreach@2.0.6: {} - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - forever-agent@0.6.1: {} - - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@babel/code-frame': 7.23.5 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.6.0 - tapable: 1.1.3 - typescript: 5.5.2 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - optionalDependencies: - eslint: 8.57.0 - - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3): - dependencies: - '@babel/code-frame': 7.23.5 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.6.0 - tapable: 1.1.3 - typescript: 5.5.2 - webpack: 5.90.3 - optionalDependencies: - eslint: 8.57.0 - - form-data-encoder@1.7.2: {} - - form-data-encoder@2.1.4: {} - - form-data-encoder@4.0.2: {} - - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@2.5.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@3.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - format@0.2.2: {} - - formdata-node@4.4.1: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - - formdata-node@6.0.3: {} - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - formik@2.4.5(react@18.2.0): - dependencies: - '@types/hoist-non-react-statics': 3.3.5 - deepmerge: 2.2.1 - hoist-non-react-statics: 3.3.2 - lodash: 4.17.21 - lodash-es: 4.17.21 - react: 18.2.0 - react-fast-compare: 2.0.4 - tiny-warning: 1.0.3 - tslib: 2.6.2 - - forwarded@0.2.0: {} - - fraction.js@4.3.7: {} - - fragment-cache@0.2.1: - dependencies: - map-cache: 0.2.2 - - framer-motion@10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - framer-motion@4.1.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - framesync: 5.3.0 - hey-listen: 1.0.8 - popmotion: 9.3.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - style-value-types: 4.1.4 - tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - - framesync@5.3.0: - dependencies: - tslib: 2.6.2 - - fresh@0.5.2: {} - - from@0.1.7: {} - - fs-constants@1.0.0: {} - - fs-exists-sync@0.1.0: {} - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@2.1.2: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 2.4.0 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.0.4 - - fs-mkdirp-stream@1.0.0: - dependencies: - graceful-fs: 4.2.11 - through2: 2.0.5 - - fs-monkey@1.0.5: {} - - fs-promise@2.0.3: - dependencies: - any-promise: 1.3.0 - fs-extra: 2.1.2 - mz: 2.7.0 - thenify-all: 1.6.0 - - fs.realpath@1.0.0: {} - - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.19.0 - optional: true - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - functions-have-names: 1.2.3 - - functional-red-black-tree@1.0.1: {} - - functions-have-names@1.2.3: {} - - fuse.js@7.0.0: {} - - gauge@3.0.2: - dependencies: - 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 - - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gaxios@5.1.3(encoding@0.1.13): - dependencies: - extend: 3.0.2 - https-proxy-agent: 5.0.1 - is-stream: 2.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - gaxios@6.3.0(encoding@0.1.13): - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.4 - is-stream: 2.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - gcp-metadata@5.3.0(encoding@0.1.13): - dependencies: - gaxios: 5.1.3(encoding@0.1.13) - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - gcp-metadata@6.1.0(encoding@0.1.13): - dependencies: - gaxios: 6.3.0(encoding@0.1.13) - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - generate-function@2.3.1: - dependencies: - is-property: 1.0.2 - - generic-names@4.0.0: - dependencies: - loader-utils: 3.2.1 - - generic-pool@3.9.0: {} - - gensync@1.0.0-beta.2: {} - - get-caller-file@1.0.3: {} - - get-caller-file@2.0.5: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-own-enumerable-property-symbols@3.0.2: {} - - get-package-type@0.1.0: {} - - get-port@6.1.2: {} - - get-stdin@5.0.1: {} - - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - - get-stream@6.0.1: {} - - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - get-them-args@1.3.2: {} - - get-tsconfig@4.7.6: - dependencies: - resolve-pkg-maps: 1.0.0 - - get-uri@6.0.3: - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) - fs-extra: 11.2.0 - transitivePeerDependencies: - - supports-color - - get-value@1.3.1: - dependencies: - arr-flatten: 1.1.0 - is-extendable: 0.1.1 - lazy-cache: 0.2.7 - noncharacters: 1.1.0 - - get-value@2.0.6: {} - - get-view@0.1.3: - dependencies: - isobject: 3.0.1 - match-file: 0.2.2 - - getos@3.2.1: - dependencies: - async: 3.2.5 - - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 - - git-config-path@1.0.1: - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - homedir-polyfill: 1.0.3 - - git-repo-name@0.6.0: - dependencies: - cwd: 0.9.1 - file-name: 0.1.0 - lazy-cache: 1.0.4 - remote-origin-url: 0.5.3 - - github-from-package@0.0.0: {} - - github-slugger@1.5.0: {} - - github-username@6.0.0(encoding@0.1.13): - dependencies: - '@octokit/rest': 18.12.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - glob-base@0.3.0: - dependencies: - glob-parent: 2.0.0 - is-glob: 2.0.1 - - glob-parent@2.0.0: - dependencies: - is-glob: 2.0.1 - - glob-parent@3.1.0: - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-stream@5.3.5: - dependencies: - extend: 3.0.2 - glob: 5.0.15 - glob-parent: 3.1.0 - micromatch: 2.3.11 - ordered-read-streams: 0.3.0 - through2: 0.6.5 - to-absolute-glob: 0.1.1 - unique-stream: 2.3.1 - - glob-stream@6.1.0: - dependencies: - extend: 3.0.2 - glob: 7.2.3 - glob-parent: 3.1.0 - is-negated-glob: 1.0.0 - ordered-read-streams: 1.0.1 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-trailing-separator: 1.1.0 - to-absolute-glob: 2.0.2 - unique-stream: 2.3.1 - - glob-to-regexp@0.4.1: {} - - glob-watcher@5.0.5: - dependencies: - anymatch: 2.0.0 - async-done: 1.3.2 - chokidar: 2.1.8 - is-negated-glob: 1.0.0 - just-debounce: 1.1.0 - normalize-path: 3.0.0 - object.defaults: 1.1.0 - transitivePeerDependencies: - - supports-color - - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - - glob@5.0.15: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - global-dirs@3.0.1: - dependencies: - ini: 2.0.0 - - global-modules@0.2.3: - dependencies: - global-prefix: 0.1.5 - is-windows: 0.2.0 - - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@0.1.5: - dependencies: - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 0.2.0 - which: 1.3.1 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - - globals@11.12.0: {} - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@9.18.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - - globrex@0.1.2: {} - - glogg@1.0.2: - dependencies: - sparkles: 1.0.1 - - good-listener@1.2.2: - dependencies: - delegate: 3.2.0 - optional: true - - google-auth-library@8.9.0(encoding@0.1.13): - dependencies: - arrify: 2.0.1 - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - fast-text-encoding: 1.0.6 - gaxios: 5.1.3(encoding@0.1.13) - gcp-metadata: 5.3.0(encoding@0.1.13) - gtoken: 6.1.2(encoding@0.1.13) - jws: 4.0.0 - lru-cache: 6.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - google-auth-library@9.15.0(encoding@0.1.13): - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.3.0(encoding@0.1.13) - gcp-metadata: 6.1.0(encoding@0.1.13) - gtoken: 7.1.0(encoding@0.1.13) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - google-auth-library@9.6.3(encoding@0.1.13): - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.3.0(encoding@0.1.13) - gcp-metadata: 6.1.0(encoding@0.1.13) - gtoken: 7.1.0(encoding@0.1.13) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - google-gax@4.3.7(encoding@0.1.13): - dependencies: - '@grpc/grpc-js': 1.10.10 - '@grpc/proto-loader': 0.7.13 - '@types/long': 4.0.2 - abort-controller: 3.0.0 - duplexify: 4.1.3 - google-auth-library: 9.6.3(encoding@0.1.13) - node-fetch: 2.7.0(encoding@0.1.13) - object-hash: 3.0.0 - proto3-json-serializer: 2.0.2 - protobufjs: 7.3.2 - retry-request: 7.0.2(encoding@0.1.13) - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - google-p12-pem@4.0.1: - dependencies: - node-forge: 1.3.1 - - google-protobuf@3.21.2: {} - - googleapis-common@7.2.0(encoding@0.1.13): - dependencies: - extend: 3.0.2 - gaxios: 6.3.0(encoding@0.1.13) - google-auth-library: 9.15.0(encoding@0.1.13) - qs: 6.12.1 - url-template: 2.0.8 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - googleapis@144.0.0(encoding@0.1.13): - dependencies: - google-auth-library: 9.6.3(encoding@0.1.13) - googleapis-common: 7.2.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - got@11.8.6: - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - - got@12.6.1: - 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 - - gpt-3-encoder@1.1.4: {} - - gpt-tokens@1.3.8: - dependencies: - decimal.js: 10.4.3 - js-tiktoken: 1.0.12 - openai-chat-tokens: 0.2.8 - - gpt3-tokenizer@1.1.5: - dependencies: - array-keyed-map: 2.1.3 - - graceful-fs@4.2.10: {} - - graceful-fs@4.2.11: {} - - grapheme-splitter@1.0.4: {} - - graphemer@1.4.0: {} - - graphql-request@5.2.0(encoding@0.1.13)(graphql@16.8.1): - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - cross-fetch: 3.1.8(encoding@0.1.13) - extract-files: 9.0.0 - form-data: 3.0.1 - graphql: 16.8.1 - transitivePeerDependencies: - - encoding - - graphql@16.8.1: {} - - gray-matter@3.1.1: - dependencies: - extend-shallow: 2.0.1 - js-yaml: 3.14.1 - kind-of: 5.1.0 - strip-bom-string: 1.0.0 - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - groq-sdk@0.3.2(encoding@0.1.13): - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.11 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - digest-fetch: 1.3.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - group-array@0.3.4: - dependencies: - arr-flatten: 1.1.0 - for-own: 0.1.5 - get-value: 2.0.6 - kind-of: 3.2.2 - split-string: 1.0.1 - union-value: 1.0.1 - - grouped-queue@2.0.0: {} - - grpc-tools@1.12.4(encoding@0.1.13): - dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - gtoken@6.1.2(encoding@0.1.13): - dependencies: - gaxios: 5.1.3(encoding@0.1.13) - google-p12-pem: 4.0.1 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - gtoken@7.1.0(encoding@0.1.13): - dependencies: - gaxios: 6.3.0(encoding@0.1.13) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - guid-typescript@1.0.9: {} - - gulp-choose-files@0.1.3: - dependencies: - extend-shallow: 2.0.1 - question-cache: 0.5.1 - through2: 2.0.5 - transitivePeerDependencies: - - supports-color - - gulp-cli@2.3.0: - dependencies: - ansi-colors: 1.1.0 - archy: 1.0.0 - array-sort: 1.0.0 - color-support: 1.1.3 - concat-stream: 1.6.2 - copy-props: 2.0.5 - fancy-log: 1.3.3 - gulplog: 1.0.0 - interpret: 1.4.0 - isobject: 3.0.1 - liftoff: 3.1.0 - matchdep: 2.0.0 - mute-stdout: 1.0.1 - pretty-hrtime: 1.0.3 - replace-homedir: 1.0.0 - semver-greatest-satisfied-range: 1.1.0 - v8flags: 3.2.0 - yargs: 7.1.2 - transitivePeerDependencies: - - supports-color - - gulp-sourcemaps@1.6.0: - dependencies: - convert-source-map: 1.9.0 - graceful-fs: 4.2.11 - strip-bom: 2.0.0 - through2: 2.0.5 - vinyl: 1.2.0 - - gulp@4.0.2: - dependencies: - glob-watcher: 5.0.5 - gulp-cli: 2.3.0 - undertaker: 1.3.0 - vinyl-fs: 3.0.3 - transitivePeerDependencies: - - supports-color - - gulplog@1.0.0: - dependencies: - glogg: 1.0.2 - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - h3@1.12.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.2.4 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.3 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - transitivePeerDependencies: - - uWebSockets.js - - handle-thing@2.0.1: {} - - 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.2 - - har-schema@2.0.0: {} - - har-validator@5.1.5: - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - - harmony-reflect@1.6.2: {} - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.0.2: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-glob@0.1.1: - dependencies: - is-glob: 2.0.1 - - has-glob@1.0.0: - dependencies: - is-glob: 3.1.0 - - has-own-deep@0.1.4: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: {} - - has-value@0.3.1: - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - - has-value@1.0.0: - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - - has-values@0.1.4: {} - - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - - has-yarn@3.0.0: {} - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-from-dom@4.2.0: - dependencies: - hastscript: 7.2.0 - web-namespaces: 2.0.1 - - hast-util-from-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.4.1 - vfile: 6.0.1 - vfile-location: 5.0.2 - web-namespaces: 2.0.1 - - hast-util-is-element@2.1.3: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - - hast-util-parse-selector@2.2.5: {} - - hast-util-parse-selector@3.1.1: - dependencies: - '@types/hast': 2.3.10 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-raw@9.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - parse5: 7.1.2 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-estree@3.1.0: - dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - - hast-util-to-jsx-runtime@2.3.0: - dependencies: - '@types/estree': 1.0.5 - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.7 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-text@3.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 - - hast-util-whitespace@2.0.1: {} - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@5.1.2: - dependencies: - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - - hastscript@6.0.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - - hastscript@7.2.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.4.1 - space-separated-tokens: 2.0.2 - - he@1.2.0: {} - - help-me@3.0.0: - dependencies: - glob: 7.2.3 - readable-stream: 3.6.2 - - helper-cache@0.7.2: - dependencies: - extend-shallow: 2.0.1 - lazy-cache: 0.2.7 - lodash.bind: 3.1.0 - - hey-listen@1.0.8: {} - - highlight.js@10.7.3: {} - - highlight.js@9.15.10: {} - - history@4.10.1: - dependencies: - '@babel/runtime': 7.24.0 - loose-envify: 1.4.0 - resolve-pathname: 3.0.0 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - value-equal: 1.0.1 - - history@5.3.0: - dependencies: - '@babel/runtime': 7.24.0 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - home-or-tmp@2.0.0: - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hoopy@0.1.4: {} - - hosted-git-info@2.8.9: {} - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - hosted-git-info@6.1.1: - dependencies: - lru-cache: 7.18.3 - - hpack.js@2.1.6: - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - - hpagent@0.1.2: {} - - hpagent@1.2.0: {} - - html-dom-parser@3.1.7: - dependencies: - domhandler: 5.0.3 - htmlparser2: 8.0.2 - - html-encoding-sniffer@2.0.1: - dependencies: - whatwg-encoding: 1.0.5 - - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - - html-entities@2.3.3: {} - - html-entities@2.5.2: {} - - html-escaper@2.0.2: {} - - html-minifier-terser@6.1.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.29.1 - - html-minifier-terser@7.2.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 10.0.1 - entities: 4.5.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.29.1 - - html-react-parser@3.0.16(react@18.2.0): - dependencies: - domhandler: 5.0.3 - html-dom-parser: 3.1.7 - react: 18.2.0 - react-property: 2.0.0 - style-to-js: 1.1.3 - - html-tags@3.3.1: {} - - html-to-text@9.0.5: - dependencies: - '@selderee/plugin-htmlparser2': 0.11.0 - deepmerge: 4.3.1 - dom-serializer: 2.0.0 - htmlparser2: 8.0.2 - selderee: 0.11.0 - - html-void-elements@3.0.0: {} - - html-webpack-plugin@5.6.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - optionalDependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - html-webpack-plugin@5.6.0(webpack@5.90.3): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - optionalDependencies: - webpack: 5.90.3 - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} - - http-call@5.3.0: - dependencies: - content-type: 1.0.5 - debug: 4.3.6(supports-color@5.5.0) - is-retry-allowed: 1.2.0 - is-stream: 2.0.1 - parse-json: 4.0.0 - tunnel-agent: 0.6.0 - transitivePeerDependencies: - - supports-color - - http-deceiver@1.2.7: {} - - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-parser-js@0.5.8: {} - - http-proxy-agent@4.0.1: - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.0 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - http-proxy-middleware@2.0.6(@types/express@4.17.21): - dependencies: - '@types/http-proxy': 1.17.14 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.5 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.6) - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - - http-signature@1.3.6: - dependencies: - assert-plus: 1.0.0 - jsprim: 2.0.2 - sshpk: 1.18.0 - - http-status-codes@2.3.0: {} - - http2-client@1.3.5: {} - - http2-wrapper@1.0.3: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - 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.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + del@6.1.1: + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 - https-proxy-agent@7.0.4: - dependencies: - agent-base: 7.1.0 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color + delayed-stream@1.0.0: {} - human-signals@1.1.1: {} + delegates@1.0.0: {} - human-signals@2.1.0: {} + denque@2.1.0: {} - human-signals@4.3.1: {} + depd@1.1.2: {} - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 + depd@2.0.0: {} - husky@8.0.3: {} + deprecation@2.3.1: {} - hyperlinker@1.0.0: {} + dequal@2.0.3: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 + destr@2.0.3: {} - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 + destroy@1.0.4: {} - icss-replace-symbols@1.1.0: {} + destroy@1.2.0: {} - icss-utils@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 + detect-file@1.0.0: {} - icss-utils@5.1.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 + detect-indent@4.0.0: + dependencies: + repeating: 2.0.1 - idb@7.1.1: {} + detect-libc@2.0.2: {} - identity-obj-proxy@3.0.0: - dependencies: - harmony-reflect: 1.6.2 + detect-newline@3.1.0: {} - ieee754@1.1.13: {} + detect-node@2.1.0: {} - ieee754@1.2.1: {} + detect-port-alt@1.1.6: + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color - ignore-by-default@1.0.1: {} + detect-port@1.6.1: + dependencies: + address: 1.2.2 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color - ignore-walk@4.0.1: - dependencies: - minimatch: 3.1.2 + device-detector-js@3.0.3: {} - ignore-walk@6.0.4: - dependencies: - minimatch: 9.0.4 + devlop@1.1.0: + dependencies: + dequal: 2.0.3 - ignore@4.0.6: {} + devtools-protocol@0.0.1107588: {} - ignore@5.3.1: {} + devtools-protocol@0.0.1147663: {} - image-size@1.1.1: - dependencies: - queue: 6.0.2 + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 - immediate@3.0.6: {} + didyoumean@1.2.2: {} - immer@9.0.21: {} + diff-match-patch@1.0.5: {} - immutable@4.3.5: {} + diff-sequences@27.5.1: {} - import-cwd@3.0.0: - dependencies: - import-from: 3.0.0 + diff-sequences@29.6.3: {} - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 + diff@4.0.2: {} - import-from@3.0.0: - dependencies: - resolve-from: 5.0.0 + diff@5.2.0: {} - import-lazy@4.0.0: {} + digest-fetch@1.3.0: + dependencies: + base-64: 0.1.0 + md5: 2.3.0 - import-local@3.1.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 + dingbat-to-unicode@1.0.1: {} - imurmurhash@0.1.4: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 - indent-string@4.0.0: {} + dlv@1.1.3: {} - infer-owner@1.0.4: {} + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 - infima@0.2.0-alpha.44: {} + docker-modem@5.0.6: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + readable-stream: 3.6.2 + split-ca: 1.0.1 + ssh2: 1.16.0 + transitivePeerDependencies: + - supports-color - inflection@1.13.4: {} + dockerode@4.0.4: + dependencies: + '@balena/dockerignore': 1.0.2 + '@grpc/grpc-js': 1.10.10 + '@grpc/proto-loader': 0.7.13 + docker-modem: 5.0.6 + protobufjs: 7.4.0 + tar-fs: 2.0.1 + uuid: 10.0.0 + transitivePeerDependencies: + - supports-color - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 - info-symbol@0.1.0: {} + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 - infobox-parser@3.6.4: - dependencies: - camelcase: 4.1.0 - - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ini@1.3.8: {} - - ini@2.0.0: {} - - inline-style-parser@0.1.1: {} - - inline-style-parser@0.2.3: {} - - inngest@1.10.1(encoding@0.1.13)(typescript@4.9.5): - dependencies: - buffer: 6.0.3 - canonicalize: 1.0.8 - chalk: 4.1.2 - cross-fetch: 3.1.8(encoding@0.1.13) - h3: 1.12.0 - hash.js: 1.1.7 - json-stringify-safe: 5.0.1 - ms: 2.1.3 - queue-microtask: 1.2.3 - serialize-error-cjs: 0.1.3 - type-fest: 3.13.1 - typescript: 4.9.5 - zod: 3.23.8 - transitivePeerDependencies: - - encoding - - uWebSockets.js - - inquirer2@0.1.1: - dependencies: - ansi-escapes: 1.4.0 - ansi-regex: 2.1.1 - arr-flatten: 1.1.0 - arr-pluck: 0.1.0 - array-unique: 0.2.1 - chalk: 1.1.3 - cli-cursor: 1.0.2 - cli-width: 1.1.1 - extend-shallow: 2.0.1 - figures: 1.7.0 - is-number: 2.1.0 - is-plain-object: 2.0.4 - lazy-cache: 1.0.4 - lodash.where: 3.1.0 - readline2: 1.0.1 - run-async: 0.1.0 - rx-lite: 4.0.8 - strip-color: 0.1.0 - through2: 2.0.5 - - inquirer@8.2.6: - 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.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - - interpret@1.4.0: {} - - interpret@3.1.1: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - invert-kv@1.0.0: {} - - ioredis@5.3.2: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - ipaddr.js@1.9.1: {} - - ipaddr.js@2.1.0: {} - - iron-webcrypto@1.2.1: {} - - is-absolute@0.2.6: - dependencies: - is-relative: 0.2.1 - is-windows: 0.2.0 - - is-absolute@1.0.0: - dependencies: - is-relative: 1.0.0 - is-windows: 1.0.2 - - is-accessor-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 - - is-alphabetical@1.0.4: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-answer@0.1.1: - dependencies: - has-values: 0.1.4 - is-primitive: 2.0.0 - omit-empty: 0.4.1 + dom-accessibility-api@0.5.16: {} - is-any-array@2.0.1: {} + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.24.0 + csstype: 3.1.3 - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 - is-arrayish@0.2.1: {} + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 - is-arrayish@0.3.2: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + + dot-prop@6.0.1: + dependencies: + is-obj: 2.0.0 + + dotenv-cli@8.0.0: + dependencies: + cross-spawn: 7.0.6 + dotenv: 16.4.7 + dotenv-expand: 10.0.0 + minimist: 1.2.8 - is-async-function@2.0.0: - dependencies: - has-tostringtag: 1.0.2 + dotenv-expand@10.0.0: {} - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 + dotenv-expand@5.1.0: {} - is-binary-buffer@1.0.0: - dependencies: - is-buffer: 1.1.6 + dotenv@10.0.0: {} - is-binary-path@1.0.1: - dependencies: - binary-extensions: 1.13.1 + dotenv@16.0.3: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 + dotenv@16.4.5: {} - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 + dotenv@16.4.7: {} - is-buffer@1.1.6: {} + duck@0.1.12: + dependencies: + underscore: 1.13.6 - is-buffer@2.0.5: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 - is-builtin-module@3.2.1: - dependencies: - builtin-modules: 3.3.0 + duplexer@0.1.2: {} - is-callable@1.2.7: {} + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 - is-ci@3.0.1: - dependencies: - ci-info: 3.9.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 - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 + e2b@0.16.1: + dependencies: + isomorphic-ws: 5.0.0(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + normalize-path: 3.0.0 + openapi-typescript-fetch: 1.1.3 + path-browserify: 1.0.1 + platform: 1.3.6 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 - is-data-descriptor@1.0.1: - dependencies: - hasown: 2.0.2 + each-props@1.3.2: + dependencies: + is-plain-object: 2.0.4 + object.defaults: 1.1.0 - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 + eastasianwidth@0.2.0: {} - is-decimal@1.0.4: {} + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 - is-decimal@2.0.1: {} + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 - is-descriptor@0.1.7: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 + ee-first@1.1.1: {} - is-descriptor@1.0.3: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 + ejs@3.1.10: + dependencies: + jake: 10.8.7 - is-docker@2.2.1: {} + ejs@3.1.6: + dependencies: + jake: 10.8.7 - is-dotfile@1.0.3: {} + electron-to-chromium@1.4.701: {} - is-electron@2.2.2: {} + electron-to-chromium@1.5.109: {} - is-equal-shallow@0.1.3: - dependencies: - is-primitive: 2.0.0 + electron-to-chromium@1.5.17: {} - is-extendable@0.1.1: {} + emittery@0.10.2: {} - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 + emittery@0.13.1: {} - is-extglob@1.0.0: {} + emittery@0.8.1: {} - is-extglob@2.1.1: {} + emoji-regex@8.0.0: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.7 + emoji-regex@9.2.2: {} - is-finite@1.1.0: {} + emojilib@2.4.0: {} - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 + emojis-list@3.0.0: {} - is-fullwidth-code-point@3.0.0: {} + emoticon@4.1.0: {} - is-fullwidth-code-point@4.0.0: {} + enabled@2.0.0: {} - is-generator-fn@2.1.0: {} + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.6(supports-color@8.1.1) + engine.io-parser: 5.2.2 + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.2: {} + + engine.io@6.5.4(bufferutil@4.0.8): + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 18.15.11 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.6(supports-color@8.1.1) + engine.io-parser: 5.2.2 + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.16.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + envinfo@7.13.0: {} + + epub2@3.0.2(ts-toolbelt@9.6.0): + dependencies: + adm-zip: 0.5.16 + array-hyper-unique: 2.1.6 + bluebird: 3.7.2 + crlf-normalize: 1.0.20(ts-toolbelt@9.6.0) + tslib: 2.6.2 + xml2js: 0.6.2 + transitivePeerDependencies: + - ts-toolbelt + + err-code@2.0.3: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + error@10.4.0: {} + + es-abstract@1.22.5: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-abstract@1.23.9: + 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.3 + 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 + + es-array-method-boxes-properly@1.0.0: {} + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.3.0 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.1.1 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + + es-iterator-helpers@1.0.17: + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + 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.4.1: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-error@4.1.1: {} + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-promise@3.3.1: {} + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + escalade@3.1.2: {} + + escalade@3.2.0: {} + + escape-goat@4.0.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@1.14.3: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + 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-next@13.2.4(eslint@8.37.0)(typescript@5.0.3): + dependencies: + '@next/eslint-plugin-next': 13.2.4 + '@rushstack/eslint-patch': 1.7.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.37.0) + eslint-plugin-react: 7.37.4(eslint@8.37.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) + optionalDependencies: + typescript: 5.0.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + + eslint-config-next@13.5.6(eslint@7.32.0)(typescript@4.9.5): + dependencies: + '@next/eslint-plugin-next': 13.5.6 + '@rushstack/eslint-patch': 1.7.2 + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@7.32.0) + eslint-plugin-react: 7.34.0(eslint@7.32.0) + eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + + eslint-config-prettier@8.10.0(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + + eslint-config-prettier@8.10.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-config-prettier@9.1.0(eslint@8.37.0): + dependencies: + eslint: 8.37.0 + + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.0)(typescript@5.5.2): + dependencies: + '@babel/core': 7.26.9 + '@babel/eslint-parser': 7.23.10(@babel/core@7.26.9)(eslint@8.57.0) + '@rushstack/eslint-patch': 1.7.2 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.57.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.37.4(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.57.0)(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.1)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.2): + dependencies: + '@babel/core': 7.26.9 + '@babel/eslint-parser': 7.23.10(@babel/core@7.26.9)(eslint@8.57.1) + '@rushstack/eslint-patch': 1.7.2 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.57.1 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.2) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) + eslint-plugin-react: 7.37.4(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) + eslint-plugin-testing-library: 5.11.1(eslint@8.57.1)(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + + eslint-config-turbo@1.13.4(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + eslint-plugin-turbo: 1.13.4(eslint@7.32.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7(supports-color@5.5.0) + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0): + dependencies: + debug: 4.3.6(supports-color@8.1.1) + enhanced-resolve: 5.16.0 + eslint: 7.32.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0))(eslint@7.32.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.6 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0): + dependencies: + debug: 4.3.6(supports-color@8.1.1) + enhanced-resolve: 5.16.0 + eslint: 8.37.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.6 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0))(eslint@7.32.0): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@7.32.0): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.0): + dependencies: + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.9) + eslint: 8.57.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + + eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.1): + dependencies: + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.9) + eslint: 8.57.1 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.37.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.37.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.37.0))(eslint@8.37.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 7.7.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@7.32.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@7.32.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 7.7.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 7.7.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1): + dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 7.7.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + eslint: 8.57.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.2): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + eslint: 8.57.1 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2) + jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsx-a11y@6.8.0(eslint@7.32.0): + dependencies: + '@babel/runtime': 7.24.0 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.17 + eslint: 7.32.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + + eslint-plugin-jsx-a11y@6.8.0(eslint@8.37.0): + dependencies: + '@babel/runtime': 7.24.0 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.17 + eslint: 8.37.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + dependencies: + '@babel/runtime': 7.24.0 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.17 + eslint: 8.57.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1): + dependencies: + '@babel/runtime': 7.24.0 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.17 + eslint: 8.57.1 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + + eslint-plugin-markdown@3.0.1(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + + eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): + dependencies: + eslint: 8.57.0 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + optionalDependencies: + eslint-config-prettier: 8.10.0(eslint@8.57.0) + + eslint-plugin-prettier@5.2.3(@types/eslint@8.56.5)(eslint-config-prettier@9.1.0(eslint@8.37.0))(eslint@8.37.0)(prettier@3.5.3): + dependencies: + eslint: 8.37.0 + prettier: 3.5.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 + optionalDependencies: + '@types/eslint': 8.56.5 + eslint-config-prettier: 9.1.0(eslint@8.37.0) + + eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + + eslint-plugin-react-hooks@4.6.0(eslint@8.37.0): + dependencies: + eslint: 8.37.0 + + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-plugin-react-hooks@4.6.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.34.0(eslint@7.32.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlast: 1.2.4 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.17 + eslint: 7.32.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 7.7.1 + string.prototype.matchall: 4.0.10 + + eslint-plugin-react@7.34.0(eslint@8.57.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlast: 1.2.4 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.17 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 7.7.1 + string.prototype.matchall: 4.0.10 + + eslint-plugin-react@7.37.4(eslint@8.37.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: 8.37.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: 7.7.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-react@7.37.4(eslint@8.57.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: 8.57.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: 7.7.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-react@7.37.4(eslint@8.57.1): + 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: 8.57.1 + 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: 7.7.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-solid@0.12.0(eslint@8.37.0)(typescript@5.0.3): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.37.0)(typescript@5.0.3) + eslint: 8.37.0 + is-html: 2.0.0 + jsx-ast-utils: 3.3.5 + kebab-case: 1.0.2 + known-css-properties: 0.24.0 + style-to-object: 0.3.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-testing-library@5.11.1(eslint@8.57.0)(typescript@5.5.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-testing-library@5.11.1(eslint@8.57.1)(typescript@5.5.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.2) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-turbo@1.13.4(eslint@7.32.0): + dependencies: + dotenv: 16.0.3 + eslint: 7.32.0 + + eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + eslint-rule-composer: 0.3.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + + eslint-rule-composer@0.3.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-utils@2.1.0: + dependencies: + eslint-visitor-keys: 1.3.0 + + eslint-visitor-keys@1.3.0: {} + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint-webpack-plugin@3.2.0(eslint@8.57.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@types/eslint': 8.56.5 + eslint: 8.57.1 + jest-worker: 28.1.3 + micromatch: 4.0.5 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + eslint@7.32.0: + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.6(supports-color@8.1.1) + doctrine: 3.0.0 + enquirer: 2.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.7.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.2 + text-table: 0.2.0 + v8-compile-cache: 2.4.0 + transitivePeerDependencies: + - supports-color + + eslint@8.37.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.37.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + grapheme-splitter: 1.0.4 + ignore: 5.3.1 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.2 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esm@3.2.25: {} + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + + espree@7.3.1: + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + + espree@9.6.1: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + + esprima@1.2.2: {} + + esprima@4.0.1: {} + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.5 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + + estree-util-value-to-estree@3.1.2: + dependencies: + '@types/estree': 1.0.5 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + + estree-walker@0.6.1: {} + + estree-walker@1.0.1: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + eta@2.2.0: {} + + etag@1.8.1: {} + + eval@0.1.8: + dependencies: + '@types/node': 18.15.11 + require-like: 0.1.2 + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + event-target-shim@5.0.1: {} + + eventemitter2@6.4.7: {} + + eventemitter3@3.1.2: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + events@1.1.1: {} + + events@3.3.0: {} + + eventsource-parser@1.1.2: {} + + eventsource-parser@3.0.0: {} + + eventsource@3.0.5: + dependencies: + eventsource-parser: 3.0.0 + + exa-js@1.0.12(encoding@0.1.13): + dependencies: + cross-fetch: 4.0.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + execa@0.2.2: + dependencies: + cross-spawn-async: 2.2.5 + npm-run-path: 1.0.0 + object-assign: 4.1.1 + path-key: 1.0.0 + strip-eof: 1.0.0 + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + executable@4.1.1: + dependencies: + pify: 2.3.0 + + exit@0.1.2: {} + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-template@2.0.3: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + 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 + + exponential-backoff@3.1.1: {} + + expr-eval@2.0.2: {} + + express-basic-auth@1.2.1: + dependencies: + basic-auth: 2.0.1 + + express-oauth2-jwt-bearer@1.6.0: + dependencies: + jose: 4.15.9 + + express-rate-limit@6.11.2(express@4.18.3): + dependencies: + express: 4.18.3 + + express-rate-limit@7.5.0(express@5.0.1): + dependencies: + express: 5.0.1 + + express-session@1.18.1: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + on-headers: 1.0.2 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color + + express@4.17.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 2.0.2 + content-disposition: 0.5.3 + content-type: 1.0.5 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1 + serve-static: 1.14.1 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + express@4.18.3: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 2.0.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 2.0.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + express@5.0.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.0.2 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.2.2 + debug: 4.3.6(supports-color@8.1.1) + 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@1.7.0: + dependencies: + type: 2.7.2 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + extract-files@9.0.0: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extract-zip@2.0.1(supports-color@8.1.1): + dependencies: + debug: 4.4.0(supports-color@8.1.1) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extsprintf@1.3.0: {} + + faiss-node@0.5.1: + dependencies: + bindings: 1.5.0 + node-addon-api: 6.1.0 + prebuild-install: 7.1.2 + + fancy-log@1.3.3: + dependencies: + ansi-gray: 0.1.1 + color-support: 1.1.3 + parse-node-version: 1.0.1 + time-stamp: 1.1.0 + + fast-copy@2.1.7: {} + + fast-copy@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 6.0.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fast-json-patch@3.1.1: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@1.1.4: {} + + fast-levenshtein@2.0.6: {} + + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + + fast-safe-stringify@2.1.1: {} + + fast-text-encoding@1.0.6: + optional: true + + fast-url-parser@1.1.3: + dependencies: + punycode: 1.3.2 + + fast-xml-parser@4.2.5: + dependencies: + strnum: 1.0.5 + + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.1.2 + + fast-xml-parser@4.5.3: + dependencies: + strnum: 1.1.2 + + fastest-levenshtein@1.0.16: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fault@1.0.4: + dependencies: + format: 0.2.2 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbemitter@3.0.0(encoding@0.1.13): + dependencies: + fbjs: 3.0.5(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + fbjs-css-vars@1.0.2: {} + + fbjs@3.0.5(encoding@0.1.13): + dependencies: + cross-fetch: 3.1.8(encoding@0.1.13) + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.37 + transitivePeerDependencies: + - encoding + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fecha@4.2.3: {} + + feed@4.2.2: + dependencies: + xml-js: 1.6.11 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + fetch-h2@3.0.2: + dependencies: + '@types/tough-cookie': 4.0.5 + already: 2.2.1 + callguard: 2.0.0 + get-stream: 6.0.1 + through2: 4.0.2 + to-arraybuffer: 1.0.1 + tough-cookie: 4.1.3 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-loader@6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + + file-loader@6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + file-loader@6.2.0(webpack@5.90.3): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.90.3 + + file-type@16.5.4: + dependencies: + readable-web-to-node-stream: 3.0.4 + strtok3: 6.3.0 + token-types: 4.2.1 + + file-type@3.9.0: {} + + file-uri-to-path@1.0.0: {} + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filesize@8.0.7: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@5.1.0: {} + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@2.1.0: + dependencies: + debug: 4.4.0(supports-color@5.5.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-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-cache-dir@4.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + + find-root@1.1.0: {} + + find-up@1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + 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-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + + find-yarn-workspace-root@2.0.0: + dependencies: + micromatch: 4.0.5 + + findup-sync@2.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 3.1.0 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + findup-sync@3.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + fined@1.2.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + first-chunk-stream@2.0.0: + dependencies: + readable-stream: 2.3.8 + + flagged-respawn@1.0.1: {} + + flagsmith@4.0.3: {} + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat@5.0.2: {} + + flatbuffers@1.12.0: {} + + flatted@3.3.1: {} + + flowise-react-json-view@1.21.7(@types/react@18.2.65)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + flux: 4.0.4(encoding@0.1.13)(react@18.2.0) + react: 18.2.0 + react-base16-styling: 0.6.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + react-textarea-autosize: 8.5.3(@types/react@18.2.65)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - encoding + + flush-write-stream@1.1.1: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + flux@4.0.4(encoding@0.1.13)(react@18.2.0): + dependencies: + fbemitter: 3.0.0(encoding@0.1.13) + fbjs: 3.0.5(encoding@0.1.13) + react: 18.2.0 + transitivePeerDependencies: + - encoding + + fn.name@1.1.0: {} + + follow-redirects@1.15.6(debug@4.3.4): + optionalDependencies: + debug: 4.3.4(supports-color@8.1.1) + + follow-redirects@1.15.6(debug@4.4.0): + optionalDependencies: + debug: 4.4.0(supports-color@5.5.0) + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreach@2.0.6: {} + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@babel/code-frame': 7.23.5 + '@types/json-schema': 7.0.15 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.7.1 + tapable: 1.1.3 + typescript: 5.5.2 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + optionalDependencies: + eslint: 8.57.1 + + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3): + dependencies: + '@babel/code-frame': 7.23.5 + '@types/json-schema': 7.0.15 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.7.1 + tapable: 1.1.3 + typescript: 5.5.2 + webpack: 5.90.3 + optionalDependencies: + eslint: 8.57.1 + + form-data-encoder@1.7.2: {} + + form-data-encoder@2.1.4: {} + + form-data-encoder@4.0.2: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@2.5.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + 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 + + format@0.2.2: {} + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + formdata-node@6.0.3: {} + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + formik@2.4.5(react@18.2.0): + dependencies: + '@types/hoist-non-react-statics': 3.3.5 + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.2.0 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 2.6.2 + + forwarded-parse@2.1.2: {} + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + framer-motion@10.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + framer-motion@4.1.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + framesync: 5.3.0 + hey-listen: 1.0.8 + popmotion: 9.3.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + style-value-types: 4.1.4 + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + + framesync@5.3.0: + dependencies: + tslib: 2.6.2 + + fresh@0.5.2: {} + + fresh@2.0.0: {} + + from@0.1.7: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@2.1.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.0.4 + + fs-mkdirp-stream@1.0.0: + dependencies: + graceful-fs: 4.2.11 + through2: 2.0.5 + + fs-monkey@1.0.5: {} + + fs-promise@2.0.3: + dependencies: + any-promise: 1.3.0 + fs-extra: 2.1.2 + mz: 2.7.0 + thenify-all: 1.6.0 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.19.0 + optional: true + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + functions-have-names: 1.2.3 + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functional-red-black-tree@1.0.1: {} + + functions-have-names@1.2.3: {} + + fuse.js@7.0.0: {} + + gauge@3.0.2: + dependencies: + 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 + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gaxios@5.1.3(encoding@0.1.13): + dependencies: + extend: 3.0.2 + https-proxy-agent: 5.0.1 + is-stream: 2.0.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + optional: true + + gaxios@6.3.0(encoding@0.1.13): + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.4 + is-stream: 2.0.1 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + gcp-metadata@5.3.0(encoding@0.1.13): + dependencies: + gaxios: 5.1.3(encoding@0.1.13) + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + + gcp-metadata@6.1.0(encoding@0.1.13): + dependencies: + gaxios: 6.3.0(encoding@0.1.13) + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + + generic-names@4.0.0: + dependencies: + loader-utils: 3.2.1 + + generic-pool@3.9.0: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@1.0.3: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-own-enumerable-property-symbols@3.0.2: {} + + get-package-type@0.1.0: {} + + get-port@6.1.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + + get-stream@6.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.8 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-them-args@1.3.2: {} + + get-tsconfig@4.7.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-uri@6.0.3: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + + get-value@2.0.6: {} + + get-value@3.0.1: + dependencies: + isobject: 3.0.1 + + getos@3.2.1: + dependencies: + async: 3.2.5 + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + github-from-package@0.0.0: {} + + github-slugger@1.5.0: {} + + github-username@6.0.0(encoding@0.1.13): + dependencies: + '@octokit/rest': 18.12.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-stream@6.1.0: + dependencies: + extend: 3.0.2 + glob: 7.2.3 + glob-parent: 6.0.2 + is-negated-glob: 1.0.0 + ordered-read-streams: 1.0.1 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-trailing-separator: 1.1.0 + to-absolute-glob: 2.0.2 + unique-stream: 2.3.1 + + glob-to-regexp@0.4.1: {} + + glob-watcher@5.0.5: + dependencies: + anymatch: 2.0.0 + async-done: 1.3.2 + chokidar: 2.1.8 + is-negated-glob: 1.0.0 + just-debounce: 1.1.0 + normalize-path: 3.0.0 + object.defaults: 1.1.0 + transitivePeerDependencies: + - supports-color + + glob@10.3.10: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + + glob@7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.1 + serialize-error: 7.0.1 + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@9.18.0: {} + + globalthis@1.0.3: + dependencies: + define-properties: 1.2.1 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + + globrex@0.1.2: {} + + glogg@1.0.2: + dependencies: + sparkles: 1.0.1 + + google-auth-library@8.9.0(encoding@0.1.13): + dependencies: + arrify: 2.0.1 + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + fast-text-encoding: 1.0.6 + gaxios: 5.1.3(encoding@0.1.13) + gcp-metadata: 5.3.0(encoding@0.1.13) + gtoken: 6.1.2(encoding@0.1.13) + jws: 4.0.0 + lru-cache: 6.0.0 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + + google-auth-library@9.15.0(encoding@0.1.13): + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.3.0(encoding@0.1.13) + gcp-metadata: 6.1.0(encoding@0.1.13) + gtoken: 7.1.0(encoding@0.1.13) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + google-auth-library@9.15.1(encoding@0.1.13): + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.3.0(encoding@0.1.13) + gcp-metadata: 6.1.0(encoding@0.1.13) + gtoken: 7.1.0(encoding@0.1.13) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + google-auth-library@9.6.3(encoding@0.1.13): + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.3.0(encoding@0.1.13) + gcp-metadata: 6.1.0(encoding@0.1.13) + gtoken: 7.1.0(encoding@0.1.13) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + google-gax@4.3.7(encoding@0.1.13): + dependencies: + '@grpc/grpc-js': 1.10.10 + '@grpc/proto-loader': 0.7.13 + '@types/long': 4.0.2 + abort-controller: 3.0.0 + duplexify: 4.1.3 + google-auth-library: 9.6.3(encoding@0.1.13) + node-fetch: 2.7.0(encoding@0.1.13) + object-hash: 3.0.0 + proto3-json-serializer: 2.0.2 + protobufjs: 7.4.0 + retry-request: 7.0.2(encoding@0.1.13) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + google-p12-pem@4.0.1: + dependencies: + node-forge: 1.3.1 + optional: true + + google-protobuf@3.21.2: {} + + googleapis-common@7.2.0(encoding@0.1.13): + dependencies: + extend: 3.0.2 + gaxios: 6.3.0(encoding@0.1.13) + google-auth-library: 9.15.0(encoding@0.1.13) + qs: 6.13.0 + url-template: 2.0.8 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + googleapis@144.0.0(encoding@0.1.13): + dependencies: + google-auth-library: 9.6.3(encoding@0.1.13) + googleapis-common: 7.2.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + + gopd@1.2.0: {} + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + got@12.6.1: + 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 + + gpt-3-encoder@1.1.4: {} + + gpt-tokens@1.3.8: + dependencies: + decimal.js: 10.4.3 + js-tiktoken: 1.0.12 + openai-chat-tokens: 0.2.8 + + gpt3-tokenizer@1.1.5: + dependencies: + array-keyed-map: 2.1.3 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + grapheme-splitter@1.0.4: {} + + graphemer@1.4.0: {} + + graphql-request@5.2.0(encoding@0.1.13)(graphql@16.8.1): + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-fetch: 3.1.8(encoding@0.1.13) + extract-files: 9.0.0 + form-data: 3.0.1 + graphql: 16.8.1 + transitivePeerDependencies: + - encoding + + graphql@16.8.1: {} + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + groq-sdk@0.5.0(encoding@0.1.13): + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + grouped-queue@2.0.0: {} + + grpc-tools@1.12.4(encoding@0.1.13): + dependencies: + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + gtoken@6.1.2(encoding@0.1.13): + dependencies: + gaxios: 5.1.3(encoding@0.1.13) + google-p12-pem: 4.0.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + + gtoken@7.1.0(encoding@0.1.13): + dependencies: + gaxios: 6.3.0(encoding@0.1.13) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + guid-typescript@1.0.9: {} + + gulp-cli@2.3.0: + dependencies: + ansi-colors: 1.1.0 + archy: 1.0.0 + array-sort: 1.0.0 + color-support: 1.1.3 + concat-stream: 1.6.2 + copy-props: 2.0.5 + fancy-log: 1.3.3 + gulplog: 1.0.0 + interpret: 1.4.0 + isobject: 3.0.1 + liftoff: 3.1.0 + matchdep: 2.0.0 + mute-stdout: 1.0.1 + pretty-hrtime: 1.0.3 + replace-homedir: 1.0.0 + semver-greatest-satisfied-range: 1.1.0 + v8flags: 3.2.0 + yargs: 7.1.2 + transitivePeerDependencies: + - supports-color + + gulp@4.0.2: + dependencies: + glob-watcher: 5.0.5 + gulp-cli: 2.3.0 + undertaker: 1.3.0 + vinyl-fs: 3.0.3 + transitivePeerDependencies: + - supports-color + + gulplog@1.0.0: + dependencies: + glogg: 1.0.2 + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + h3@1.12.0: + dependencies: + cookie-es: 1.2.2 + crossws: 0.2.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + ohash: 1.1.3 + radix3: 1.1.2 + ufo: 1.5.4 + uncrypto: 0.1.3 + unenv: 1.10.0 + transitivePeerDependencies: + - uWebSockets.js + + handle-thing@2.0.1: {} + + 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.2 + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + harmony-reflect@1.6.2: {} + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.0.3: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-unicode@2.0.1: {} + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-value@2.0.2: + dependencies: + get-value: 3.0.1 + has-values: 2.0.1 + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + has-values@2.0.1: + dependencies: + kind-of: 6.0.3 + + has-yarn@3.0.0: {} + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-from-dom@4.2.0: + dependencies: + hastscript: 7.2.0 + web-namespaces: 2.0.1 + + hast-util-from-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.4.1 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + + hast-util-is-element@2.1.3: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + + hast-util-parse-selector@2.2.5: {} + + hast-util-parse-selector@3.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.0: + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-jsx-runtime@2.3.0: + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.7 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@3.1.2: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + hast-util-is-element: 2.1.3 + unist-util-find-after: 4.0.1 + + hast-util-whitespace@2.0.1: {} + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@5.1.2: + dependencies: + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + + hastscript@6.0.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + + hastscript@7.2.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + + he@1.2.0: {} + + help-me@3.0.0: + dependencies: + glob: 7.2.3 + readable-stream: 3.6.2 + + hey-listen@1.0.8: {} + + highlight.js@10.7.3: {} + + highlight.js@9.15.10: {} + + history@4.10.1: + dependencies: + '@babel/runtime': 7.24.0 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + history@5.3.0: + dependencies: + '@babel/runtime': 7.24.0 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + home-or-tmp@2.0.0: + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hoopy@0.1.4: {} + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@6.1.1: + dependencies: + lru-cache: 7.18.3 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + hpagent@0.1.2: {} + + hpagent@1.2.0: {} + + html-comment-regex@1.1.2: {} + + html-dom-parser@3.1.7: + dependencies: + domhandler: 5.0.3 + htmlparser2: 8.0.2 + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-entities@2.3.3: {} + + html-entities@2.5.2: {} + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.29.1 + + html-minifier-terser@7.2.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 10.0.1 + entities: 4.5.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.29.1 + + html-react-parser@3.0.16(react@18.2.0): + dependencies: + domhandler: 5.0.3 + html-dom-parser: 3.1.7 + react: 18.2.0 + react-property: 2.0.0 + style-to-js: 1.1.3 + + html-tags@3.3.1: {} + + html-to-text@9.0.5: + dependencies: + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + + html-void-elements@3.0.0: {} + + html-webpack-plugin@5.6.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + html-webpack-plugin@5.6.0(webpack@5.90.3): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + webpack: 5.90.3 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-cache-semantics@4.1.1: {} + + http-call@5.3.0: + dependencies: + content-type: 1.0.5 + debug: 4.4.0(supports-color@5.5.0) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.7.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.8: {} + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@3.0.3: + dependencies: + '@types/http-proxy': 1.17.16 + debug: 4.4.0(supports-color@5.5.0) + http-proxy: 1.18.1(debug@4.4.0) + is-glob: 4.0.3 + is-plain-object: 5.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1(debug@4.4.0): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6(debug@4.4.0) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + http-signature@1.3.6: + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + + http-status-codes@2.3.0: {} + + http2-client@1.3.5: {} + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + 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(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.4: + dependencies: + agent-base: 7.1.0 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + human-signals@1.1.1: {} + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + husky@8.0.3: {} + + hyperdyperid@1.2.0: {} + + hyperlinker@1.0.0: {} + + ibm-cloud-sdk-core@5.1.4: + dependencies: + '@types/debug': 4.1.12 + '@types/node': 22.13.9 + '@types/tough-cookie': 4.0.5 + axios: 1.7.9(debug@4.4.0) + camelcase: 6.3.0 + debug: 4.4.0(supports-color@5.5.0) + dotenv: 16.4.7 + extend: 3.0.2 + file-type: 16.5.4 + form-data: 4.0.0 + isstream: 0.1.2 + jsonwebtoken: 9.0.2 + mime-types: 2.1.35 + retry-axios: 2.6.0(axios@1.7.9(debug@4.4.0)) + tough-cookie: 4.1.3 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 + iconv-lite@0.5.2: + dependencies: + safer-buffer: 2.1.2 - is-generator@1.0.3: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 - is-glob@2.0.1: - dependencies: - is-extglob: 1.0.0 + icss-replace-symbols@1.1.0: {} - is-glob@3.1.0: - dependencies: - is-extglob: 2.1.1 + icss-utils@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 + icss-utils@5.1.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 - is-gzip@2.0.0: {} + idb@7.1.1: {} - is-hexadecimal@1.0.4: {} + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 - is-hexadecimal@2.0.1: {} + ieee754@1.1.13: {} - is-html@2.0.0: - dependencies: - html-tags: 3.3.1 + ieee754@1.2.1: {} - is-installed-globally@0.4.0: - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 + ignore-by-default@1.0.1: {} - is-interactive@1.0.0: {} + ignore-walk@4.0.1: + dependencies: + minimatch: 3.1.2 - is-lambda@1.0.1: {} + ignore-walk@6.0.4: + dependencies: + minimatch: 9.0.4 - is-map@2.0.3: {} + ignore@4.0.6: {} - is-module@1.0.0: {} + ignore@5.3.1: {} - is-negated-glob@1.0.0: {} + image-size@1.1.1: + dependencies: + queue: 6.0.2 - is-negative-zero@2.0.3: {} + immediate@3.0.6: {} + + immer@9.0.21: {} + + immutable@4.3.5: {} - is-npm@6.0.0: {} + import-cwd@3.0.0: + dependencies: + import-from: 3.0.0 + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-from@3.0.0: + dependencies: + resolve-from: 5.0.0 + + import-in-the-middle@1.13.1: + dependencies: + acorn: 8.14.1 + acorn-import-attributes: 1.9.5(acorn@8.14.1) + cjs-module-lexer: 1.2.3 + module-details-from-path: 1.0.3 + + import-in-the-middle@1.7.1: + dependencies: + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + cjs-module-lexer: 1.2.3 + module-details-from-path: 1.0.3 + + import-lazy@4.0.0: {} + + import-local@3.1.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + infer-owner@1.0.4: {} + + infima@0.2.0-alpha.44: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + infobox-parser@3.6.4: + dependencies: + camelcase: 4.1.0 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + inline-style-parser@0.1.1: {} + + inline-style-parser@0.2.3: {} + + inngest@1.10.1(encoding@0.1.13)(typescript@4.9.5): + dependencies: + buffer: 6.0.3 + canonicalize: 1.0.8 + chalk: 4.1.2 + cross-fetch: 3.1.8(encoding@0.1.13) + h3: 1.12.0 + hash.js: 1.1.7 + json-stringify-safe: 5.0.1 + ms: 2.1.3 + queue-microtask: 1.2.3 + serialize-error-cjs: 0.1.3 + type-fest: 3.13.1 + typescript: 4.9.5 + zod: 3.22.4 + transitivePeerDependencies: + - encoding + - uWebSockets.js + + inquirer@8.2.6: + 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.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + interpret@1.4.0: {} + + interpret@3.1.1: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + invert-kv@1.0.0: {} + + ioredis@5.3.2: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4(supports-color@8.1.1) + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ioredis@5.6.0: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.4.0(supports-color@5.5.0) + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.1.0: {} + + iron-webcrypto@1.2.1: {} + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-alphabetical@1.0.4: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-any-array@2.0.1: {} + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.8 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.3.0 - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 + is-arrayish@0.2.1: {} - is-number@2.1.0: - dependencies: - kind-of: 3.2.2 + is-arrayish@0.3.2: {} - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 - is-number@4.0.0: {} + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 - is-number@7.0.0: {} + is-bigint@1.1.0: + dependencies: + has-bigints: 1.0.2 - is-obj@1.0.1: {} + is-binary-path@1.0.1: + dependencies: + binary-extensions: 1.13.1 - is-obj@2.0.0: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 - is-path-cwd@2.2.0: {} + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.8 + has-tostringtag: 1.0.2 - is-path-inside@3.0.3: {} + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 - is-plain-obj@2.1.0: {} + is-buffer@1.1.6: {} - is-plain-obj@3.0.0: {} + is-buffer@2.0.5: {} - is-plain-obj@4.1.0: {} + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 + is-callable@1.2.7: {} - is-plain-object@5.0.0: {} + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 - is-posix-bracket@0.1.1: {} + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 - is-potential-custom-element-name@1.0.1: {} + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 - is-primitive@2.0.0: {} + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 - is-property@1.0.2: {} + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.5 + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 - is-reference@3.0.2: - dependencies: - '@types/estree': 1.0.5 + is-decimal@1.0.4: {} - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} - is-regexp@1.0.0: {} + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 - is-registered@0.1.5: - dependencies: - define-property: 0.2.5 - isobject: 2.1.0 + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 - is-relative@0.2.1: - dependencies: - is-unc-path: 0.1.2 + is-docker@2.2.1: {} - is-relative@1.0.0: - dependencies: - is-unc-path: 1.0.0 + is-electron@2.2.2: {} - is-retry-allowed@1.2.0: {} + is-extendable@0.1.1: {} - is-root@2.1.0: {} + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 - is-scoped@2.1.0: - dependencies: - scoped-regex: 2.1.0 + is-extglob@2.1.1: {} - is-set@2.0.3: {} + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.8 - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 - is-stream@1.1.0: {} + is-finite@1.1.0: {} - is-stream@2.0.1: {} + is-fullwidth-code-point@1.0.0: + dependencies: + number-is-nan: 1.0.1 - is-stream@3.0.0: {} + is-fullwidth-code-point@3.0.0: {} - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 + is-fullwidth-code-point@4.0.0: {} - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 + is-generator-fn@2.1.0: {} - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 - is-typedarray@1.0.0: {} + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 - is-unc-path@0.1.2: - dependencies: - unc-path-regex: 0.1.2 + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 - is-unc-path@1.0.0: - dependencies: - unc-path-regex: 0.1.2 + is-gzip@2.0.0: {} - is-unicode-supported@0.1.0: {} + is-hexadecimal@1.0.4: {} - is-utf8@0.2.1: {} + is-hexadecimal@2.0.1: {} - is-valid-app@0.1.2: - dependencies: - debug: 2.6.9 - is-registered: 0.1.5 - is-valid-instance: 0.1.0 - lazy-cache: 2.0.2 - transitivePeerDependencies: - - supports-color + is-html@2.0.0: + dependencies: + html-tags: 3.3.1 - is-valid-app@0.2.1: - dependencies: - debug: 2.6.9 - is-registered: 0.1.5 - is-valid-instance: 0.2.0 - lazy-cache: 2.0.2 - transitivePeerDependencies: - - supports-color + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 - is-valid-app@0.3.0: - dependencies: - debug: 2.6.9 - is-registered: 0.1.5 - is-valid-instance: 0.3.0 - lazy-cache: 2.0.2 - transitivePeerDependencies: - - supports-color + is-interactive@1.0.0: {} - is-valid-glob@0.3.0: {} + is-lambda@1.0.1: {} - is-valid-glob@1.0.0: {} + is-map@2.0.3: {} - is-valid-instance@0.1.0: - dependencies: - isobject: 2.1.0 - pascalcase: 0.1.1 + is-module@1.0.0: {} - is-valid-instance@0.2.0: - dependencies: - isobject: 2.1.0 - pascalcase: 0.1.1 + is-negated-glob@1.0.0: {} - is-valid-instance@0.3.0: - dependencies: - isobject: 3.0.1 - pascalcase: 0.1.1 + is-negative-zero@2.0.3: {} - is-weakmap@2.0.2: {} + is-npm@6.0.0: {} - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 - is-weakset@2.0.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 - is-whitespace@0.3.0: {} + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 - is-windows@0.2.0: {} + is-number@4.0.0: {} - is-windows@1.0.2: {} + is-number@7.0.0: {} - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 + is-obj@1.0.1: {} - is-yarn-global@0.4.1: {} - - isarray@0.0.1: {} - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isbinaryfile@4.0.10: {} - - isbinaryfile@5.0.2: {} - - isexe@2.0.0: {} - - isobject@1.0.2: {} - - isobject@2.1.0: - dependencies: - isarray: 1.0.0 - - isobject@3.0.1: {} - - isomorphic-fetch@3.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - whatwg-fetch: 3.6.20 - transitivePeerDependencies: - - encoding - - isomorphic-ws@4.0.1(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): - dependencies: - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - isomorphic-ws@5.0.0(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): - dependencies: - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - isomorphic-ws@5.0.0(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): - dependencies: - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - - isstream@0.1.2: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.24.0 - '@babel/parser': 7.24.8 - '@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.24.0 - '@babel/parser': 7.24.8 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 - 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.3.6(supports-color@5.5.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 - - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 - set-function-name: 2.0.2 - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jake@10.8.7: - dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - javascript-stringify@2.1.0: {} - - jest-changed-files@27.5.1: - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.2 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - - jest-circus@29.7.0(babel-plugin-macros@3.1.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': 18.15.11 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3(babel-plugin-macros@3.1.0) - 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@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - jest-cli@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - 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-cli@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@babel/core': 7.24.0 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.24.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 27.5.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-config@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): - dependencies: - '@babel/core': 7.24.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.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.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.15.11 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@babel/core': 7.24.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.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.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.15.11 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@babel/core': 7.24.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.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.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.12.12 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@27.5.1: - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - - 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@27.5.1: - dependencies: - detect-newline: 3.1.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@27.5.1: - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - - 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-jsdom@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-environment-node@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - jest-mock: 27.5.1 - jest-util: 27.5.1 - - 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': 18.15.11 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@27.5.1: {} - - jest-get-type@29.6.3: {} - - jest-haste-map@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.9 - '@types/node': 18.15.11 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 18.15.11 - 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.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-jasmine2@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - - jest-leak-detector@27.5.1: - dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@27.5.1: - dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - - 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@27.5.1: - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-message-util@28.1.3: - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.15.11 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): - optionalDependencies: - jest-resolve: 27.5.1 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@27.5.1: {} - - jest-regex-util@28.0.2: {} - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@27.5.1: - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@27.5.1: - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.8 - resolve.exports: 1.1.1 - slash: 3.0.0 - - 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.8 - resolve.exports: 2.0.2 - slash: 3.0.0 - - jest-runner@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.11 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - 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': 18.15.11 - 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@27.5.1: - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - 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': 18.15.11 - chalk: 4.1.2 - cjs-module-lexer: 1.2.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-serializer@27.5.1: - dependencies: - '@types/node': 18.15.11 - graceful-fs: 4.2.11 - - jest-snapshot@27.5.1: - dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@babel/types': 7.24.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.5 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.11 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.5 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) - 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.6.0 - transitivePeerDependencies: - - supports-color - - jest-util@27.5.1: - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-util@28.1.3: - dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.15.11 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.15.11 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@27.5.1: - dependencies: - '@jest/types': 27.5.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.5.1 - leven: 3.1.0 - pretty-format: 27.5.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-watch-typeahead@1.1.0(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2))): - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - jest-regex-util: 28.0.2 - jest-watcher: 28.1.3 - slash: 4.0.0 - string-length: 5.0.1 - strip-ansi: 7.1.0 - - jest-watcher@27.5.1: - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 - - jest-watcher@28.1.3: - dependencies: - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.3 - string-length: 4.0.2 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.15.11 - 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@24.9.0: - dependencies: - merge-stream: 2.0.0 - supports-color: 6.1.0 - - jest-worker@26.6.2: - dependencies: - '@types/node': 18.15.11 - merge-stream: 2.0.0 - supports-color: 7.2.0 - - jest-worker@27.5.1: - dependencies: - '@types/node': 18.15.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@28.1.3: - dependencies: - '@types/node': 18.15.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 18.15.11 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - import-local: 3.1.0 - jest-cli: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - - jest@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jira.js@2.20.1: - dependencies: - atlassian-jwt: 2.0.3 - axios: 1.6.2(debug@4.3.4) - form-data: 4.0.0 - oauth: 0.10.0 - tslib: 2.6.2 - transitivePeerDependencies: - - debug - - jiti@1.21.0: {} - - jmespath@0.16.0: {} - - joi@17.12.2: - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - - jose@4.15.9: {} - - jose@5.6.3: {} - - joycon@3.1.1: {} - - js-base64@3.7.2: {} - - js-base64@3.7.7: {} - - js-cookie@3.0.5: {} - - js-sdsl@4.3.0: {} - - js-sdsl@4.4.2: {} - - js-tiktoken@1.0.12: - dependencies: - base64-js: 1.5.1 - - js-tokens@3.0.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@0.1.1: {} - - jsbn@1.1.0: {} - - jsdom@16.7.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): - dependencies: - abab: 2.0.6 - acorn: 8.11.3 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.1.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xml-name-validator: 3.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsdom@20.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): - dependencies: - abab: 2.0.6 - acorn: 8.11.3 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xml-name-validator: 4.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsdom@22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4): - dependencies: - abab: 2.0.6 - cssstyle: 3.0.0 - data-urls: 4.0.0 - decimal.js: 10.4.3 - domexception: 4.0.0 - form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - rrweb-cssom: 0.6.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xml-name-validator: 4.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsesc@0.5.0: {} - - jsesc@1.3.0: {} - - jsesc@2.5.2: {} - - json-bigint@1.0.0: - dependencies: - bignumber.js: 9.1.2 - - json-buffer@3.0.1: {} - - json-parse-better-errors@1.0.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json-parse-even-better-errors@3.0.1: {} - - json-pointer@0.6.2: - dependencies: - foreach: 2.0.6 - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-schema@0.4.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stringify-nice@1.1.4: {} - - json-stringify-safe@5.0.1: {} - - json5@0.5.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - json5@2.2.3: {} - - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.3.0 - diff-match-patch: 1.0.5 - - jsonfile@2.4.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 + is-obj@2.0.0: {} - jsonparse@1.3.1: {} + is-path-cwd@2.2.0: {} - jsonpath@1.1.1: - dependencies: - esprima: 1.2.2 - static-eval: 2.0.2 - underscore: 1.12.1 + is-path-inside@3.0.3: {} - jsonpointer@5.0.1: {} + is-plain-obj@2.1.0: {} - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 + is-plain-obj@4.1.0: {} - jsprim@2.0.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 - jsuri@1.3.1: {} + is-plain-object@5.0.0: {} - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.1.7 + is-potential-custom-element-name@1.0.1: {} - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 + is-primitive@3.0.1: {} - just-debounce@1.1.0: {} + is-promise@4.0.0: {} - just-diff-apply@5.5.0: {} + is-property@1.0.2: {} - just-diff@5.2.0: {} - - jwa@2.0.0: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@4.0.0: - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - - jwt-decode@3.1.2: {} - - kareem@2.6.3: {} - - katex@0.16.9: - dependencies: - commander: 8.3.0 - - kebab-case@1.0.2: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kill-port@2.0.1: - dependencies: - get-them-args: 1.3.2 - shell-exec: 1.0.2 - - kind-of@1.1.0: {} - - kind-of@2.0.1: - dependencies: - is-buffer: 1.1.6 - - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - - kind-of@5.1.0: {} - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - kleur@4.1.5: {} - - klona@2.0.6: {} - - known-css-properties@0.24.0: {} - - kuler@2.0.0: {} - - langchain@0.0.116(mkn4eugug2vxe57dfily4idgsy): - dependencies: - '@anthropic-ai/sdk': 0.5.10(encoding@0.1.13) - ansi-styles: 5.2.0 - binary-extensions: 2.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - expr-eval: 2.0.2 - flat: 5.0.2 - js-tiktoken: 1.0.12 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langsmith: 0.0.70 - ml-distance: 4.0.1 - object-hash: 3.0.0 - openai: 4.51.0(encoding@0.1.13) - openapi-types: 12.1.3 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - yaml: 2.4.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-kendra': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@elastic/elasticsearch': 8.12.2 - '@gomomento/sdk': 1.68.1(encoding@0.1.13) - '@huggingface/inference': 1.8.0 - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@opensearch-project/opensearch': 1.2.0 - '@pinecone-database/pinecone': 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) - '@qdrant/js-client-rest': 1.9.0(typescript@4.9.5) - '@supabase/postgrest-js': 1.9.2 - '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@upstash/redis': 1.22.1(encoding@0.1.13) - '@zilliz/milvus2-sdk-node': 2.4.2 - apify-client: 2.9.3 - axios: 1.6.2(debug@4.3.4) - cheerio: 1.0.0-rc.12 - chromadb: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: 7.10.0(encoding@0.1.13) - d3-dsv: 2.0.0 - google-auth-library: 8.9.0(encoding@0.1.13) - html-to-text: 9.0.5 - ignore: 5.3.1 - ioredis: 5.3.2 - mammoth: 1.7.2 - mysql2: 3.9.2 - notion-to-md: 3.1.1(encoding@0.1.13) - pdf-parse: 1.1.1 - pg: 8.11.5 - playwright: 1.42.1 - puppeteer: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) - redis: 4.6.13 - srt-parser-2: 1.2.3 - typeorm: 0.3.20(ioredis@5.3.2)(mysql2@3.9.2)(pg@8.11.5)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - transitivePeerDependencies: - - encoding - - langchain@0.0.116(x2dtq5tq5z47zk6vqilicnfvfy): - dependencies: - '@anthropic-ai/sdk': 0.5.10(encoding@0.1.13) - ansi-styles: 5.2.0 - binary-extensions: 2.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - expr-eval: 2.0.2 - flat: 5.0.2 - js-tiktoken: 1.0.12 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langsmith: 0.0.70 - ml-distance: 4.0.1 - object-hash: 3.0.0 - openai: 4.51.0(encoding@0.1.13) - openapi-types: 12.1.3 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - yaml: 2.4.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-kendra': 3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@elastic/elasticsearch': 8.12.2 - '@gomomento/sdk': 1.68.1(encoding@0.1.13) - '@huggingface/inference': 1.8.0 - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@opensearch-project/opensearch': 1.2.0 - '@pinecone-database/pinecone': 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) - '@qdrant/js-client-rest': 1.9.0(typescript@4.9.5) - '@supabase/postgrest-js': 1.9.2 - '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@upstash/redis': 1.22.1(encoding@0.1.13) - '@zilliz/milvus2-sdk-node': 2.4.2 - apify-client: 2.9.3 - axios: 1.6.2(debug@4.3.4) - cheerio: 1.0.0-rc.12 - chromadb: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: 6.2.2 - d3-dsv: 2.0.0 - google-auth-library: 8.9.0(encoding@0.1.13) - html-to-text: 9.0.5 - ignore: 5.3.1 - ioredis: 5.3.2 - mammoth: 1.9.0 - mysql2: 3.9.2 - notion-to-md: 3.1.1(encoding@0.1.13) - pdf-parse: 1.1.1 - pg: 8.11.5 - playwright: 1.42.1 - puppeteer: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) - redis: 4.6.13 - srt-parser-2: 1.2.3 - typeorm: 0.3.20(ioredis@5.3.2)(mysql2@3.9.2)(pg@8.11.5)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) - weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - transitivePeerDependencies: - - encoding - - langchain@0.2.11(lcaakvik4gok2sgy65marre3ge): - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - '@langchain/openai': 0.1.3(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge)) - '@langchain/textsplitters': 0.0.1(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - binary-extensions: 2.2.0 - js-tiktoken: 1.0.12 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langchainhub: 0.0.8 - langsmith: 0.1.32(@langchain/core@0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - ml-distance: 4.0.1 - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 10.0.0 - yaml: 2.4.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@gomomento/sdk': 1.68.1(encoding@0.1.13) - '@gomomento/sdk-core': 1.68.1 - '@langchain/anthropic': 0.2.1(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/aws': 0.0.9(@aws-sdk/client-sso-oidc@3.624.0(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@aws-sdk/client-sts@3.624.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/cohere': 0.0.7(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/community': 0.2.17(yfqvvifhmjhb4q5hisu4akm3p4) - '@langchain/google-genai': 0.0.22(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - '@langchain/google-vertexai': 0.0.19(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13))(zod@3.22.4) - '@langchain/groq': 0.0.8(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/mistralai': 0.0.26(encoding@0.1.13)(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@langchain/ollama': 0.0.2(langchain@0.2.11)(openai@4.51.0(encoding@0.1.13)) - '@mendable/firecrawl-js': 0.0.28 - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@pinecone-database/pinecone': 2.2.2 - '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - apify-client: 2.9.3 - assemblyai: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - axios: 1.6.2(debug@4.3.4) - cheerio: 1.0.0-rc.12 - chromadb: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - couchbase: 4.3.1 - d3-dsv: 2.0.0 - faiss-node: 0.5.1 - fast-xml-parser: 4.4.1 - handlebars: 4.7.8 - html-to-text: 9.0.5 - ignore: 5.3.1 - ioredis: 5.3.2 - jsdom: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) - mammoth: 1.7.0 - mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - notion-to-md: 3.1.1(encoding@0.1.13) - pdf-parse: 1.1.1 - playwright: 1.42.1 - puppeteer: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) - pyodide: 0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - redis: 4.6.13 - srt-parser-2: 1.2.3 - typeorm: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youtube-transcript: 1.2.1 - transitivePeerDependencies: - - encoding - - openai - - langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde): - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - '@langchain/openai': 0.0.30(encoding@0.1.13)(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde)) - '@langchain/textsplitters': 0.0.1(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - binary-extensions: 2.2.0 - js-tiktoken: 1.0.12 - js-yaml: 4.1.0 - jsonpointer: 5.0.1 - langchainhub: 0.0.11 - langsmith: 0.1.32(@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - ml-distance: 4.0.1 - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 9.0.1 - yaml: 2.4.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@aws-sdk/credential-provider-node': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - '@gomomento/sdk': 1.68.1(encoding@0.1.13) - '@gomomento/sdk-core': 1.68.1 - '@mendable/firecrawl-js': 0.0.28 - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@pinecone-database/pinecone': 2.2.2 - '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - apify-client: 2.9.3 - assemblyai: 4.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - axios: 1.6.2(debug@4.3.4) - cheerio: 1.0.0-rc.12 - chromadb: 1.8.1(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - couchbase: 4.3.1 - d3-dsv: 2.0.0 - faiss-node: 0.5.1 - fast-xml-parser: 4.4.1 - handlebars: 4.7.8 - html-to-text: 9.0.5 - ignore: 5.3.1 - ioredis: 5.3.2 - jsdom: 22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4) - mammoth: 1.7.0 - mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - notion-to-md: 3.1.1(encoding@0.1.13) - pdf-parse: 1.1.1 - playwright: 1.42.1 - puppeteer: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) - pyodide: 0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - redis: 4.6.13 - srt-parser-2: 1.2.3 - typeorm: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youtube-transcript: 1.2.1 - transitivePeerDependencies: - - encoding - - openai - - langchainhub@0.0.11: {} - - langchainhub@0.0.8: {} - - langfuse-core@3.3.4: - dependencies: - mustache: 4.2.0 - - langfuse-core@3.35.2: - dependencies: - mustache: 4.2.0 - - langfuse-langchain@3.3.4(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge)): - dependencies: - langchain: 0.2.11(lcaakvik4gok2sgy65marre3ge) - langfuse: 3.3.4 - langfuse-core: 3.3.4 - - langfuse@3.3.4: - dependencies: - langfuse-core: 3.3.4 - - langfuse@3.32.0: - dependencies: - langfuse-core: 3.35.2 - - langsmith@0.0.70: - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - - langsmith@0.1.32(@langchain/core@0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)): - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - optionalDependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - langchain: 0.2.11(lcaakvik4gok2sgy65marre3ge) - openai: 4.51.0(encoding@0.1.13) - - langsmith@0.1.32(@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)): - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - optionalDependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - langchain: 0.2.3(nphj44k7dsxncfcpdkfznsprde) - openai: 4.51.0(encoding@0.1.13) - - langsmith@0.1.39(@langchain/core@0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)): - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - optionalDependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - langchain: 0.2.11(lcaakvik4gok2sgy65marre3ge) - openai: 4.51.0(encoding@0.1.13) - - langsmith@0.1.39(@langchain/core@0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)))(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)): - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - optionalDependencies: - '@langchain/core': 0.2.18(langchain@0.2.3(nphj44k7dsxncfcpdkfznsprde))(openai@4.51.0(encoding@0.1.13)) - langchain: 0.2.3(nphj44k7dsxncfcpdkfznsprde) - openai: 4.51.0(encoding@0.1.13) - - langsmith@0.1.6: - dependencies: - '@types/uuid': 9.0.8 - commander: 10.0.1 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 9.0.1 - - language-subtag-registry@0.3.22: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.22 - - langwatch@0.1.1(encoding@0.1.13)(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2)): - dependencies: - '@langchain/core': 0.2.18(langchain@0.2.11(lcaakvik4gok2sgy65marre3ge))(openai@4.51.0(encoding@0.1.13)) - ai: 3.2.22(openai@4.51.0(encoding@0.1.13))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4) - javascript-stringify: 2.1.0 - llm-cost: 1.0.4 - nanoid: 5.0.7 - openai: 4.51.0(encoding@0.1.13) - zod: 3.22.4 - zod-validation-error: 3.3.0(zod@3.22.4) - transitivePeerDependencies: - - encoding - - langchain - - react - - solid-js - - svelte - - vue - - last-run@1.1.1: - dependencies: - default-resolution: 2.0.0 - es6-weak-map: 2.0.3 - - latest-version@7.0.0: - dependencies: - package-json: 8.1.1 - - launch-editor@2.6.1: - dependencies: - picocolors: 1.0.1 - shell-quote: 1.8.1 - - layouts@0.11.0: - dependencies: - delimiter-regex: 1.3.1 - falsey: 0.3.2 - get-view: 0.1.3 - lazy-cache: 1.0.4 - - lazy-ass@1.6.0: {} - - lazy-cache@0.2.7: {} - - lazy-cache@1.0.4: {} - - lazy-cache@2.0.2: - dependencies: - set-getter: 0.1.1 - - lazystream@1.0.1: - dependencies: - readable-stream: 2.3.8 - - lcid@1.0.0: - dependencies: - invert-kv: 1.0.0 - - leac@0.6.0: {} - - lead@1.0.0: - dependencies: - flush-write-stream: 1.1.1 - - leven@2.1.0: {} - - leven@3.1.0: {} - - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lie@3.1.1: - dependencies: - immediate: 3.0.6 - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - - liftoff@3.1.0: - dependencies: - extend: 3.0.2 - findup-sync: 3.0.0 - fined: 1.2.0 - flagged-respawn: 1.0.1 - is-plain-object: 2.0.4 - object.map: 1.0.1 - rechoir: 0.6.2 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - lilconfig@2.1.0: {} - - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - linkifyjs@4.1.3: {} - - lint-staged@13.3.0(enquirer@2.4.1): - dependencies: - chalk: 5.3.0 - commander: 11.0.0 - debug: 4.3.4(supports-color@8.1.1) - execa: 7.2.0 - lilconfig: 2.1.0 - listr2: 6.6.1(enquirer@2.4.1) - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - - listr2@3.14.0(enquirer@2.4.1): - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.1 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - optionalDependencies: - enquirer: 2.4.1 - - listr2@6.6.1(enquirer@2.4.1): - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 - rfdc: 1.3.1 - wrap-ansi: 8.1.0 - optionalDependencies: - enquirer: 2.4.1 - - livereload-js@3.4.1: {} - - livereload@0.9.3(bufferutil@4.0.8): - dependencies: - chokidar: 3.6.0 - livereload-js: 3.4.1 - opts: 2.0.2 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - llamaindex@0.3.13(@notionhq/client@2.2.14(encoding@0.1.13))(bufferutil@4.0.8)(encoding@0.1.13)(gcp-metadata@5.3.0(encoding@0.1.13))(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.1)(typescript@5.5.2)(utf-8-validate@6.0.4): - dependencies: - '@anthropic-ai/sdk': 0.20.9(encoding@0.1.13) - '@aws-crypto/sha256-js': 5.2.0 - '@datastax/astra-db-ts': 1.1.0 - '@google-cloud/vertexai': 1.1.0(encoding@0.1.13) - '@google/generative-ai': 0.15.0 - '@grpc/grpc-js': 1.10.8 - '@huggingface/inference': 2.7.0 - '@llamaindex/cloud': 0.0.5(node-fetch@2.7.0(encoding@0.1.13)) - '@llamaindex/env': 0.1.3(@aws-crypto/sha256-js@5.2.0)(pathe@1.1.2) - '@mistralai/mistralai': 0.2.0(encoding@0.1.13) - '@notionhq/client': 2.2.14(encoding@0.1.13) - '@pinecone-database/pinecone': 2.2.2 - '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) - '@types/lodash': 4.17.4 - '@types/papaparse': 5.3.14 - '@types/pg': 8.11.6 - '@xenova/transformers': 2.17.1 - '@zilliz/milvus2-sdk-node': 2.4.2 - ajv: 8.13.0 - assemblyai: 4.4.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - chromadb: 1.7.3(@google/generative-ai@0.15.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.51.0(encoding@0.1.13)) - cohere-ai: 7.10.0(encoding@0.1.13) - js-tiktoken: 1.0.12 - lodash: 4.17.21 - magic-bytes.js: 1.10.0 - mammoth: 1.7.2 - md-utils-ts: 2.0.0 - mongodb: 6.6.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - notion-md-crawler: 1.0.0(encoding@0.1.13) - openai: 4.51.0(encoding@0.1.13) - papaparse: 5.4.1 - pathe: 1.1.2 - pdf2json: 3.0.5 - pg: 8.11.5 - pgvector: 0.1.8 - portkey-ai: 0.1.16 - rake-modified: 1.0.8 - string-strip-html: 13.4.8 - wikipedia: 2.1.2 - wink-nlp: 2.3.0 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - bufferutil - - debug - - encoding - - gcp-metadata - - kerberos - - mongodb-client-encryption - - node-fetch - - pg-native - - snappy - - socks - - supports-color - - typescript - - utf-8-validate - - llm-cost@1.0.4: - dependencies: - tiktoken: 1.0.15 - - load-helpers@0.2.11: - dependencies: - extend-shallow: 2.0.1 - is-valid-glob: 0.3.0 - lazy-cache: 2.0.2 - matched: 0.4.4 - resolve-dir: 0.1.1 - - load-json-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - - load-pkg@3.0.1: - dependencies: - find-pkg: 0.1.2 - - load-templates@0.11.4: - dependencies: - define-property: 0.2.5 - extend-shallow: 2.0.1 - glob-parent: 2.0.0 - has-glob: 0.1.1 - is-valid-glob: 0.3.0 - lazy-cache: 2.0.2 - matched: 0.4.4 - to-file: 0.2.0 - - load-templates@1.0.2: - dependencies: - extend-shallow: 2.0.1 - file-contents: 1.0.1 - glob-parent: 3.1.0 - is-glob: 3.1.0 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - matched: 0.4.4 - vinyl: 2.2.1 - - load-tsconfig@0.2.5: {} - - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - - loader-runner@4.3.0: {} - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - loader-utils@3.2.1: {} - - localforage@1.10.0: - dependencies: - lie: 3.1.1 - - locate-character@3.0.0: {} - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 + is-regex@1.1.4: + dependencies: + call-bind: 1.0.8 + has-tostringtag: 1.0.2 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 - lodash-es@4.17.21: {} + is-regexp@1.0.0: {} - lodash._arrayfilter@3.0.0: {} + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 - lodash._basecallback@3.3.1: - dependencies: - lodash._baseisequal: 3.0.7 - lodash._bindcallback: 3.0.1 - lodash.isarray: 3.0.4 - lodash.pairs: 3.0.1 + is-retry-allowed@1.2.0: {} - lodash._baseeach@3.0.4: - dependencies: - lodash.keys: 3.1.2 + is-root@2.1.0: {} - lodash._basefilter@3.0.0: - dependencies: - lodash._baseeach: 3.0.4 + is-scoped@2.1.0: + dependencies: + scoped-regex: 2.1.0 - lodash._baseisequal@3.0.7: - dependencies: - lodash.isarray: 3.0.4 - lodash.istypedarray: 3.0.6 - lodash.keys: 3.1.2 + is-set@2.0.3: {} - lodash._baseismatch@3.1.3: - dependencies: - lodash._baseisequal: 3.0.7 + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.8 - lodash._basematches@3.2.0: - dependencies: - lodash._baseismatch: 3.1.3 - lodash.pairs: 3.0.1 + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 - lodash._bindcallback@3.0.1: {} + is-stream@1.1.0: {} - lodash._createwrapper@3.2.0: - dependencies: - lodash._root: 3.0.1 + is-stream@2.0.1: {} - lodash._getnative@3.9.1: {} + is-stream@3.0.0: {} - lodash._reinterpolate@3.0.0: {} + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 - lodash._replaceholders@3.0.0: {} + is-string@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 - lodash._root@3.0.1: {} + is-symbol@1.0.4: + dependencies: + has-symbols: 1.1.0 - lodash.assign@4.2.0: {} + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 - lodash.bind@3.1.0: - dependencies: - lodash._createwrapper: 3.2.0 - lodash._replaceholders: 3.0.0 - lodash.restparam: 3.6.1 + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 - lodash.camelcase@4.3.0: {} + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 - lodash.castarray@4.4.0: {} + is-typedarray@1.0.0: {} - lodash.curry@4.1.1: {} + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 - lodash.debounce@4.0.8: {} + is-unicode-supported@0.1.0: {} - lodash.defaults@4.2.0: {} + is-utf8@0.2.1: {} - lodash.filter@4.6.0: {} + is-valid-glob@1.0.0: {} - lodash.flatten@4.4.0: {} + is-weakmap@2.0.2: {} - lodash.flow@3.5.0: {} + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.8 - lodash.foreach@4.5.0: {} + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.3 - lodash.initial@4.1.1: {} + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 - lodash.isarguments@3.1.0: {} + is-windows@1.0.2: {} - lodash.isarray@3.0.4: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 - lodash.isequal@4.5.0: {} + is-yarn-global@0.4.1: {} - lodash.isplainobject@4.0.6: {} + isarray@1.0.0: {} - lodash.isstring@4.0.1: {} + isarray@2.0.5: {} - lodash.istypedarray@3.0.6: {} + isbinaryfile@4.0.10: {} - lodash.keys@3.1.2: - dependencies: - lodash._getnative: 3.9.1 - lodash.isarguments: 3.1.0 - lodash.isarray: 3.0.4 + isbinaryfile@5.0.2: {} - lodash.last@3.0.0: {} + isexe@2.0.0: {} - lodash.map@4.6.0: {} + isobject@3.0.1: {} - lodash.memoize@4.1.2: {} + isobject@4.0.0: {} - lodash.merge@4.6.2: {} + isomorphic-fetch@3.0.0(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + + isomorphic-ws@4.0.1(ws@8.18.1(bufferutil@4.0.8)): + dependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + isomorphic-ws@5.0.0(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)): + dependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + + isstream@0.1.2: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.9 + '@babel/parser': 7.26.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.9 + '@babel/parser': 7.24.8 + '@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(supports-color@5.5.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 + + iterator.prototype@1.1.2: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.5 + set-function-name: 2.0.2 + + iterator.prototype@1.1.5: + 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 + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.8.7: + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + javascript-stringify@2.1.0: {} + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-circus@29.7.0(babel-plugin-macros@3.1.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': 18.15.11 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3(babel-plugin-macros@3.1.0) + 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@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@jest/core': 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-cli@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + 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-cli@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@babel/core': 7.26.9 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.26.9) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-config@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.26.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.9) + 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(babel-plugin-macros@3.1.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.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.15.11 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@babel/core': 7.26.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.9) + 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(babel-plugin-macros@3.1.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.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.15.11 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@babel/core': 7.26.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.9) + 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(babel-plugin-macros@3.1.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.5 + 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.9 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + 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@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + 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-jsdom@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + 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': 18.15.11 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@27.5.1: {} + + jest-get-type@29.6.3: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.15.11 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.15.11 + 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.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + 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@27.5.1: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@28.1.3: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@27.5.1: {} + + jest-regex-util@28.0.2: {} + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.8 + resolve.exports: 1.1.1 + slash: 3.0.0 + + 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.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + + jest-runner@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + 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': 18.15.11 + 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@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + 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': 18.15.11 + chalk: 4.1.2 + cjs-module-lexer: 1.2.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-serializer@27.5.1: + dependencies: + '@types/node': 18.15.11 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.26.9 + '@babel/generator': 7.26.9 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.26.9) + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.5 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.9) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.9 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.26.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.26.9) + '@babel/types': 7.24.5 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.9) + 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@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-util@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.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-watch-typeahead@1.1.0(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2))): + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + jest-regex-util: 28.0.2 + jest-watcher: 28.1.3 + slash: 4.0.0 + string-length: 5.0.1 + strip-ansi: 7.1.0 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-watcher@28.1.3: + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.15.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + 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@24.9.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + + jest-worker@26.6.2: + dependencies: + '@types/node': 18.15.11 + merge-stream: 2.0.0 + supports-color: 7.2.0 + + jest-worker@27.5.1: + dependencies: + '@types/node': 18.15.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@28.1.3: + dependencies: + '@types/node': 18.15.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 18.15.11 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@jest/core': 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + import-local: 3.1.0 + jest-cli: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest@29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.15.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jira.js@2.20.1: + dependencies: + atlassian-jwt: 2.0.3 + axios: 1.7.9(debug@4.3.4) + form-data: 4.0.2 + oauth: 0.10.0 + tslib: 2.6.2 + transitivePeerDependencies: + - debug + + jiti@1.21.0: {} + + jmespath@0.16.0: {} + + joi@17.12.2: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + jose@4.15.9: {} + + jose@5.6.3: {} + + joycon@3.1.1: {} + + js-base64@3.7.2: {} + + js-base64@3.7.7: {} + + js-cookie@3.0.5: {} + + js-sdsl@4.3.0: {} + + js-sdsl@4.4.2: {} + + js-tiktoken@1.0.12: + dependencies: + base64-js: 1.5.1 + + js-tokens@3.0.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@0.1.1: {} + + jsbn@1.1.0: {} + + jsdom@16.7.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xml-name-validator: 3.0.0 + optionalDependencies: + canvas: 2.11.2(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@20.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xml-name-validator: 4.0.0 + optionalDependencies: + canvas: 2.11.2(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@22.1.0(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.4): + dependencies: + abab: 2.0.6 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xml-name-validator: 4.0.0 + optionalDependencies: + canvas: 2.11.2(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@0.5.0: {} + + jsesc@1.3.0: {} + + jsesc@2.5.2: {} + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.1.2 + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.1: {} + + json-pointer@0.6.2: + dependencies: + foreach: 2.0.6 + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-nice@1.1.4: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsondiffpatch@0.6.0: + dependencies: + '@types/diff-match-patch': 1.0.36 + chalk: 5.3.0 + diff-match-patch: 1.0.5 + + jsonfile@2.4.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonpath@1.1.1: + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + + jsonpointer@5.0.1: {} + + jsonrepair@3.12.0: {} + + jsonwebtoken@9.0.2: + dependencies: + 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 - lodash.once@4.1.1: {} + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 - lodash.pairs@3.0.1: - dependencies: - lodash.keys: 3.1.2 + jsprim@2.0.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 - lodash.restparam@3.6.1: {} + jsuri@1.3.1: {} - lodash.sortby@4.7.0: {} + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 - lodash.template@4.5.0: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + just-debounce@1.1.0: {} + + just-diff-apply@5.5.0: {} + + just-diff@5.2.0: {} + + 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 + + jwt-decode@3.1.2: {} + + kareem@2.6.3: {} + + katex@0.16.9: + dependencies: + commander: 8.3.0 + + kebab-case@1.0.2: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kill-port@2.0.1: + dependencies: + get-them-args: 1.3.2 + shell-exec: 1.0.2 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@5.1.0: {} + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + klona@2.0.6: {} + + known-css-properties@0.24.0: {} + + kuler@2.0.0: {} + + langchain@0.0.116(5dn44eiqldwg2hwusf4ivyprcq): + dependencies: + '@anthropic-ai/sdk': 0.5.10(encoding@0.1.13) + ansi-styles: 5.2.0 + binary-extensions: 2.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + expr-eval: 2.0.2 + flat: 5.0.2 + js-tiktoken: 1.0.12 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.0.70 + ml-distance: 4.0.1 + object-hash: 3.0.0 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + openapi-types: 12.1.3 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + yaml: 2.4.1 + zod: 3.22.4 + zod-to-json-schema: 3.23.1(zod@3.22.4) + optionalDependencies: + '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-kendra': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@elastic/elasticsearch': 8.12.2 + '@gomomento/sdk': 1.68.1(encoding@0.1.13) + '@huggingface/inference': 1.8.0 + '@notionhq/client': 2.2.14(encoding@0.1.13) + '@opensearch-project/opensearch': 1.2.0 + '@pinecone-database/pinecone': 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) + '@qdrant/js-client-rest': 1.9.0(typescript@4.9.5) + '@supabase/postgrest-js': 1.9.2 + '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@upstash/redis': 1.22.1(encoding@0.1.13) + '@zilliz/milvus2-sdk-node': 2.4.2 + apify-client: 2.9.3 + axios: 1.7.9(debug@4.3.4) + cheerio: 1.0.0-rc.12 + chromadb: 1.8.1(@google/generative-ai@0.22.0)(cohere-ai@6.2.2)(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: 6.2.2 + d3-dsv: 2.0.0 + epub2: 3.0.2(ts-toolbelt@9.6.0) + google-auth-library: 8.9.0(encoding@0.1.13) + html-to-text: 9.0.5 + ignore: 5.3.1 + ioredis: 5.3.2 + mammoth: 1.9.0 + mysql2: 3.13.0 + notion-to-md: 3.1.1(encoding@0.1.13) + pdf-parse: 1.1.1 + pg: 8.13.3 + playwright: 1.50.1 + puppeteer: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) + redis: 4.6.13 + srt-parser-2: 1.2.3 + typeorm: 0.3.20(ioredis@5.3.2)(mysql2@3.13.0)(pg@8.13.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) + transitivePeerDependencies: + - encoding + - ws + + langchain@0.0.116(ka7k7qt46crpouvsnraaloshyy): + dependencies: + '@anthropic-ai/sdk': 0.5.10(encoding@0.1.13) + ansi-styles: 5.2.0 + binary-extensions: 2.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + expr-eval: 2.0.2 + flat: 5.0.2 + js-tiktoken: 1.0.12 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.0.70 + ml-distance: 4.0.1 + object-hash: 3.0.0 + openai: 4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + openapi-types: 12.1.3 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + yaml: 2.4.1 + zod: 3.22.4 + zod-to-json-schema: 3.23.1(zod@3.22.4) + optionalDependencies: + '@aws-sdk/client-dynamodb': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-kendra': 3.758.0(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@elastic/elasticsearch': 8.12.2 + '@gomomento/sdk': 1.68.1(encoding@0.1.13) + '@huggingface/inference': 1.8.0 + '@notionhq/client': 2.2.14(encoding@0.1.13) + '@opensearch-project/opensearch': 1.2.0 + '@pinecone-database/pinecone': 0.0.5(@swc/core@1.4.6(@swc/helpers@0.5.5)) + '@qdrant/js-client-rest': 1.9.0(typescript@4.9.5) + '@supabase/postgrest-js': 1.9.2 + '@supabase/supabase-js': 2.39.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) + '@upstash/redis': 1.22.1(encoding@0.1.13) + '@zilliz/milvus2-sdk-node': 2.4.2 + apify-client: 2.9.3 + axios: 1.7.9(debug@4.3.4) + cheerio: 1.0.0-rc.12 + chromadb: 1.10.5(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.14)(openai@4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2)) + cohere-ai: 7.10.0(encoding@0.1.13) + d3-dsv: 2.0.0 + epub2: 3.0.2(ts-toolbelt@9.6.0) + google-auth-library: 8.9.0(encoding@0.1.13) + html-to-text: 9.0.5 + ignore: 5.3.1 + ioredis: 5.3.2 + mammoth: 1.7.2 + mysql2: 3.13.0 + notion-to-md: 3.1.1(encoding@0.1.13) + pdf-parse: 1.1.1 + pg: 8.13.3 + playwright: 1.50.1 + puppeteer: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) + redis: 4.6.13 + srt-parser-2: 1.2.3 + typeorm: 0.3.20(ioredis@5.3.2)(mysql2@3.13.0)(pg@8.13.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)) + weaviate-ts-client: 1.6.0(encoding@0.1.13)(graphql@16.8.1) + transitivePeerDependencies: + - encoding + - ws + + langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u): + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/openai': 0.4.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/textsplitters': 0.0.1(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + js-tiktoken: 1.0.12 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.3.12(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + openapi-types: 12.1.3 + p-retry: 4.6.2 + uuid: 10.0.0 + yaml: 2.4.1 + zod: 3.22.4 + zod-to-json-schema: 3.24.3(zod@3.22.4) + optionalDependencies: + '@langchain/anthropic': 0.3.14(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13) + '@langchain/aws': 0.1.4(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(aws-crt@1.21.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/cohere': 0.0.7(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + '@langchain/google-genai': 0.1.9(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(zod@3.22.4) + '@langchain/google-vertexai': 0.2.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(zod@3.22.4) + '@langchain/groq': 0.1.2(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@langchain/mistralai': 0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/ollama': 0.2.0(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))) + '@langchain/xai': 0.0.1(@langchain/core@0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + axios: 1.7.9(debug@4.3.4) + cheerio: 1.0.0-rc.12 + handlebars: 4.7.8 + typeorm: 0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + transitivePeerDependencies: + - encoding + - openai + - ws + + langchainhub@0.0.11: {} + + langfuse-core@3.32.0: + dependencies: + mustache: 4.2.0 + + langfuse-langchain@3.32.0(langchain@0.3.19(nvjv7vdhktnobjkcg4sxcelb3u)): + dependencies: + langchain: 0.3.19(nvjv7vdhktnobjkcg4sxcelb3u) + langfuse: 3.32.0 + langfuse-core: 3.32.0 + + langfuse@3.3.4: + dependencies: + langfuse-core: 3.32.0 + + langfuse@3.32.0: + dependencies: + langfuse-core: 3.32.0 + + langsmith@0.0.70: + dependencies: + '@types/uuid': 9.0.8 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + + langsmith@0.1.6: + dependencies: + '@types/uuid': 9.0.8 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + + langsmith@0.3.12(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)): + dependencies: + '@types/uuid': 10.0.0 + chalk: 4.1.2 + console-table-printer: 2.12.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.7.1 + uuid: 10.0.0 + optionalDependencies: + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + + language-subtag-registry@0.3.22: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.22 + + langwatch@0.1.1(encoding@0.1.13)(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)): + dependencies: + '@langchain/core': 0.3.37(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + ai: 3.2.22(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.2))(zod@3.22.4) + javascript-stringify: 2.1.0 + llm-cost: 1.0.4 + nanoid: 5.0.7 + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + zod: 3.22.4 + zod-validation-error: 3.3.0(zod@3.22.4) + transitivePeerDependencies: + - encoding + - react + - solid-js + - svelte + - vue + - ws + + last-run@1.1.1: + dependencies: + default-resolution: 2.0.0 + es6-weak-map: 2.0.3 + + latest-version@7.0.0: + dependencies: + package-json: 8.1.1 + + launch-editor@2.6.1: + dependencies: + picocolors: 1.0.1 + shell-quote: 1.8.1 + + lazy-ass@1.6.0: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + lcid@1.0.0: + dependencies: + invert-kv: 1.0.0 + + leac@0.6.0: {} + + lead@1.0.0: + dependencies: + flush-write-stream: 1.1.1 + + leven@2.1.0: {} + + leven@3.1.0: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + liftoff@3.1.0: + dependencies: + extend: 3.0.2 + findup-sync: 3.0.0 + fined: 1.2.0 + flagged-respawn: 1.0.1 + is-plain-object: 2.0.4 + object.map: 1.0.1 + rechoir: 0.6.2 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + linkifyjs@4.1.3: {} + + lint-staged@13.3.0(enquirer@2.4.1): + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1(enquirer@2.4.1) + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + + listr2@3.14.0(enquirer@2.4.1): + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.1 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + optionalDependencies: + enquirer: 2.4.1 + + listr2@6.6.1(enquirer@2.4.1): + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.1 + wrap-ansi: 8.1.0 + optionalDependencies: + enquirer: 2.4.1 + + livereload-js@3.4.1: {} + + livereload@0.9.3(bufferutil@4.0.8): + dependencies: + chokidar: 3.6.0 + livereload-js: 3.4.1 + opts: 2.0.2 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + llamaindex@0.3.13(@notionhq/client@2.2.14(encoding@0.1.13))(bufferutil@4.0.8)(encoding@0.1.13)(gcp-metadata@5.3.0(encoding@0.1.13))(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.1)(typescript@5.5.2)(utf-8-validate@6.0.4)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4): + dependencies: + '@anthropic-ai/sdk': 0.20.9(encoding@0.1.13) + '@aws-crypto/sha256-js': 5.2.0 + '@datastax/astra-db-ts': 1.5.0 + '@google-cloud/vertexai': 1.1.0(encoding@0.1.13) + '@google/generative-ai': 0.22.0 + '@grpc/grpc-js': 1.10.10 + '@huggingface/inference': 2.7.0 + '@llamaindex/cloud': 0.0.5(node-fetch@2.7.0(encoding@0.1.13)) + '@llamaindex/env': 0.1.3(@aws-crypto/sha256-js@5.2.0)(pathe@1.1.2) + '@mistralai/mistralai': 0.2.0(encoding@0.1.13) + '@notionhq/client': 2.2.14(encoding@0.1.13) + '@pinecone-database/pinecone': 2.2.2 + '@qdrant/js-client-rest': 1.9.0(typescript@5.5.2) + '@types/lodash': 4.17.4 + '@types/papaparse': 5.3.15 + '@types/pg': 8.11.6 + '@xenova/transformers': 2.17.1 + '@zilliz/milvus2-sdk-node': 2.4.2 + ajv: 8.13.0 + assemblyai: 4.4.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + chromadb: 1.7.3(@google/generative-ai@0.22.0)(cohere-ai@7.10.0(encoding@0.1.13))(encoding@0.1.13)(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4)) + cohere-ai: 7.10.0(encoding@0.1.13) + js-tiktoken: 1.0.12 + lodash: 4.17.21 + magic-bytes.js: 1.10.0 + mammoth: 1.7.2 + md-utils-ts: 2.0.0 + mongodb: 6.6.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + notion-md-crawler: 1.0.0(encoding@0.1.13) + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + papaparse: 5.4.1 + pathe: 1.1.2 + pdf2json: 3.0.5 + pg: 8.11.5 + pgvector: 0.1.8 + portkey-ai: 0.1.16 + rake-modified: 1.0.8 + string-strip-html: 13.4.8 + wikipedia: 2.1.2 + wink-nlp: 2.3.0 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - bufferutil + - debug + - encoding + - gcp-metadata + - kerberos + - mongodb-client-encryption + - node-fetch + - pg-native + - snappy + - socks + - supports-color + - typescript + - utf-8-validate + - ws + - zod + + llm-cost@1.0.4: + dependencies: + tiktoken: 1.0.15 + + load-json-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + + load-tsconfig@0.2.5: {} + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@3.2.1: {} + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-character@3.0.0: {} + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 - lodash.templatesettings@4.2.0: - dependencies: - lodash._reinterpolate: 3.0.0 + lodash-es@4.17.21: {} - lodash.truncate@4.4.2: {} + lodash._reinterpolate@3.0.0: {} - lodash.uniq@4.5.0: {} + lodash.camelcase@4.3.0: {} - lodash.where@3.1.0: - dependencies: - lodash._arrayfilter: 3.0.0 - lodash._basecallback: 3.3.1 - lodash._basefilter: 3.0.0 - lodash._basematches: 3.2.0 - lodash.isarray: 3.0.4 + lodash.castarray@4.4.0: {} - lodash@4.17.21: {} + lodash.curry@4.1.1: {} - log-ok@0.1.1: - dependencies: - ansi-green: 0.1.1 - success-symbol: 0.1.0 + lodash.debounce@4.0.8: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 + lodash.defaults@4.2.0: {} - log-update@4.0.0: - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + lodash.flow@3.5.0: {} - log-update@5.0.1: - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 + lodash.get@4.4.2: {} - log-utils@0.1.5: - dependencies: - ansi-colors: 0.1.0 - error-symbol: 0.1.0 - info-symbol: 0.1.0 - log-ok: 0.1.1 - success-symbol: 0.1.0 - time-stamp: 1.1.0 - warning-symbol: 0.1.0 + lodash.includes@4.3.0: {} - log-utils@0.2.1: - dependencies: - ansi-colors: 0.2.0 - error-symbol: 0.1.0 - info-symbol: 0.1.0 - log-ok: 0.1.1 - success-symbol: 0.1.0 - time-stamp: 1.1.0 - warning-symbol: 0.1.0 + lodash.isarguments@3.1.0: {} - logform@2.6.0: - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.4.3 - triple-beam: 1.4.1 + lodash.isboolean@3.0.3: {} - long@4.0.0: {} + lodash.isequal@4.5.0: {} - long@5.2.3: {} + lodash.isinteger@4.0.4: {} - longest-streak@2.0.4: {} + lodash.isnumber@3.0.3: {} - longest-streak@3.1.0: {} + lodash.isplainobject@4.0.6: {} - longest@1.0.1: {} + lodash.isstring@4.0.1: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lop@0.4.1: - dependencies: - duck: 0.1.12 - option: 0.2.4 - underscore: 1.13.6 - - lop@0.4.2: - dependencies: - duck: 0.1.12 - option: 0.2.4 - underscore: 1.13.6 - - lower-case@1.1.4: {} - - lower-case@2.0.2: - dependencies: - tslib: 2.6.2 - - lowercase-keys@2.0.0: {} - - lowercase-keys@3.0.0: {} - - lowlight@1.12.1: - dependencies: - fault: 1.0.4 - highlight.js: 9.15.10 - - lowlight@1.20.0: - dependencies: - fault: 1.0.4 - highlight.js: 10.7.3 - - lru-cache@10.2.0: {} - - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - - lru-cache@8.0.5: {} - - lru-cache@9.1.2: {} - - lunary@0.6.16(openai@4.51.0(encoding@0.1.13))(react@18.2.0): - dependencies: - unctx: 2.3.1 - update: 0.7.4 - optionalDependencies: - openai: 4.51.0(encoding@0.1.13) - react: 18.2.0 - transitivePeerDependencies: - - supports-color - - lz-string@1.5.0: {} - - magic-bytes.js@1.10.0: {} - - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.8: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-dir@4.0.0: - dependencies: - semver: 7.6.0 - - make-error@1.3.6: {} - - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.5.0 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - make-fetch-happen@11.1.1: - dependencies: - agentkeepalive: 4.5.0 - cacache: 17.1.4 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 5.0.0 - minipass-fetch: 3.0.4 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 10.0.5 - transitivePeerDependencies: - - supports-color - - make-fetch-happen@9.1.0: - dependencies: - agentkeepalive: 4.5.0 - cacache: 15.3.0 - http-cache-semantics: 4.1.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 1.4.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1 - ssri: 8.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - make-iterator@1.0.1: - dependencies: - kind-of: 6.0.3 - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - - mammoth@1.7.0: - dependencies: - '@xmldom/xmldom': 0.8.10 - argparse: 1.0.10 - base64-js: 1.5.1 - bluebird: 3.4.7 - dingbat-to-unicode: 1.0.1 - jszip: 3.10.1 - lop: 0.4.1 - path-is-absolute: 1.0.1 - underscore: 1.13.6 - xmlbuilder: 10.1.1 - - mammoth@1.7.2: - dependencies: - '@xmldom/xmldom': 0.8.10 - argparse: 1.0.10 - base64-js: 1.5.1 - bluebird: 3.4.7 - dingbat-to-unicode: 1.0.1 - jszip: 3.10.1 - lop: 0.4.1 - path-is-absolute: 1.0.1 - underscore: 1.13.6 - xmlbuilder: 10.1.1 - - mammoth@1.9.0: - dependencies: - '@xmldom/xmldom': 0.8.10 - argparse: 1.0.10 - base64-js: 1.5.1 - bluebird: 3.4.7 - dingbat-to-unicode: 1.0.1 - jszip: 3.10.1 - lop: 0.4.2 - path-is-absolute: 1.0.1 - underscore: 1.13.6 - xmlbuilder: 10.1.1 - - map-cache@0.2.2: {} - - map-config@0.5.0: - dependencies: - array-unique: 0.2.1 - async: 1.5.2 - - map-schema@0.2.4: - dependencies: - arr-union: 3.1.0 - collection-visit: 0.2.3 - component-emitter: 1.3.1 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - get-value: 2.0.6 - is-primitive: 2.0.0 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - log-utils: 0.2.1 - longest: 1.0.1 - mixin-deep: 1.3.2 - object.omit: 2.0.1 - object.pick: 1.3.0 - omit-empty: 0.4.1 - pad-right: 0.2.2 - set-value: 0.4.3 - sort-object-arrays: 0.1.1 - union-value: 0.2.4 - transitivePeerDependencies: - - supports-color - - map-stream@0.1.0: {} - - map-visit@0.1.5: - dependencies: - lazy-cache: 2.0.2 - object-visit: 0.3.4 - - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - - markdown-extensions@2.0.0: {} - - markdown-table@2.0.0: - dependencies: - repeat-string: 1.6.1 - - markdown-table@3.0.3: {} - - match-file@0.2.2: - dependencies: - is-glob: 3.1.0 - isobject: 3.0.1 - micromatch: 2.3.11 - - matchdep@2.0.0: - dependencies: - findup-sync: 2.0.0 - micromatch: 3.1.10 - resolve: 1.22.8 - stack-trace: 0.0.10 - transitivePeerDependencies: - - supports-color - - matched@0.4.4: - dependencies: - arr-union: 3.1.0 - async-array-reduce: 0.2.1 - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - glob: 7.2.3 - has-glob: 0.1.1 - is-valid-glob: 0.3.0 - lazy-cache: 2.0.2 - resolve-dir: 0.1.1 - - matched@1.0.2: - dependencies: - arr-union: 3.1.0 - async-array-reduce: 0.2.1 - glob: 7.2.3 - has-glob: 1.0.0 - is-valid-glob: 1.0.0 - resolve-dir: 1.0.1 - - material-colors@1.2.6: {} - - math-random@1.0.4: {} - - mathjax-full@3.2.2: - dependencies: - esm: 3.2.25 - mhchemparser: 4.2.1 - mj-context-menu: 0.6.1 - speech-rule-engine: 4.0.7 - - md-utils-ts@2.0.0: {} - - md5@2.3.0: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - unist-util-visit: 4.1.2 - - mdast-util-directive@3.0.0: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-find-and-replace@1.1.1: - dependencies: - escape-string-regexp: 4.0.0 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - - mdast-util-find-and-replace@2.2.2: - dependencies: - '@types/mdast': 3.0.15 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - mdast-util-find-and-replace@3.0.1: - dependencies: - '@types/mdast': 4.0.3 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@0.8.5: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string: 2.0.0 - micromark: 2.11.4 - parse-entities: 2.0.0 - unist-util-stringify-position: 2.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - mdast-util-from-markdown@2.0.1: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-frontmatter@2.0.1: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-extension-frontmatter: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@0.1.3: - dependencies: - ccount: 1.1.0 - mdast-util-find-and-replace: 1.1.1 - micromark: 2.11.4 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@1.0.3: - dependencies: - '@types/mdast': 3.0.15 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 - - mdast-util-gfm-footnote@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 - - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@0.2.3: - dependencies: - mdast-util-to-markdown: 0.6.5 - - mdast-util-gfm-strikethrough@1.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@0.1.6: - dependencies: - markdown-table: 2.0.0 - mdast-util-to-markdown: 0.6.5 - - mdast-util-gfm-table@1.0.7: - dependencies: - '@types/mdast': 3.0.15 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@0.1.6: - dependencies: - mdast-util-to-markdown: 0.6.5 - - mdast-util-gfm-task-list-item@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@0.1.2: - dependencies: - mdast-util-gfm-autolink-literal: 0.1.3 - mdast-util-gfm-strikethrough: 0.2.3 - mdast-util-gfm-table: 0.1.6 - mdast-util-gfm-task-list-item: 0.1.6 - mdast-util-to-markdown: 0.6.5 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@2.0.2: - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-math@2.0.2: - dependencies: - '@types/mdast': 3.0.15 - longest-streak: 3.1.0 - mdast-util-to-markdown: 1.5.0 - - mdast-util-mdx-expression@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.1.3: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.3 - unist-util-is: 6.0.0 - - mdast-util-to-hast@12.3.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - - mdast-util-to-hast@13.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - - mdast-util-to-markdown@0.6.5: - dependencies: - '@types/unist': 2.0.10 - longest-streak: 2.0.4 - mdast-util-to-string: 2.0.0 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - zwitch: 1.0.5 - - mdast-util-to-markdown@1.5.0: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - - mdast-util-to-markdown@2.1.0: - dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@2.0.0: {} - - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.3 - - mdn-data@2.0.14: {} - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - mdn-data@2.0.4: {} - - media-typer@0.3.0: {} - - mem-fs-editor@9.7.0(mem-fs@2.3.0): - dependencies: - binaryextensions: 4.19.0 - commondir: 1.0.1 - deep-extend: 0.6.0 - ejs: 3.1.9 - globby: 11.1.0 - isbinaryfile: 5.0.2 - minimatch: 7.4.6 - multimatch: 5.0.0 - normalize-path: 3.0.0 - textextensions: 5.16.0 - optionalDependencies: - mem-fs: 2.3.0 - - mem-fs@2.3.0: - dependencies: - '@types/node': 15.14.9 - '@types/vinyl': 2.0.11 - vinyl: 2.2.1 - vinyl-file: 3.0.0 - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.5 - - memjs@1.3.2: {} - - memoize-one@5.2.1: {} - - memory-pager@1.5.0: {} - - memory-stream@1.0.0: - dependencies: - readable-stream: 3.6.2 - optional: true - - merge-deep@3.0.3: - dependencies: - arr-union: 3.1.0 - clone-deep: 0.2.4 - kind-of: 3.2.2 - - merge-descriptors@1.0.1: {} - - merge-stream@0.1.8: - dependencies: - through2: 0.6.5 - - merge-stream@1.0.1: - dependencies: - readable-stream: 2.3.8 - - merge-stream@2.0.0: {} - - merge-value@1.0.0: - dependencies: - get-value: 2.0.6 - is-extendable: 1.0.1 - mixin-deep: 1.3.2 - set-value: 2.0.1 - - merge2@1.4.1: {} - - methods@1.1.2: {} - - mhchemparser@4.2.1: {} - - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-core-commonmark@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-directive@3.0.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - parse-entities: 4.0.1 - - micromark-extension-frontmatter@2.0.0: - dependencies: - fault: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@0.5.7: - dependencies: - micromark: 2.11.4 - transitivePeerDependencies: - - supports-color - - micromark-extension-gfm-autolink-literal@1.0.5: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@1.1.2: - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-strikethrough@0.6.5: - dependencies: - micromark: 2.11.4 - transitivePeerDependencies: - - supports-color - - micromark-extension-gfm-strikethrough@1.0.7: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-table@0.4.3: - dependencies: - micromark: 2.11.4 - transitivePeerDependencies: - - supports-color - - micromark-extension-gfm-table@1.0.7: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-table@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-tagfilter@0.3.0: {} - - micromark-extension-gfm-tagfilter@1.0.2: - dependencies: - micromark-util-types: 1.1.0 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-gfm-task-list-item@0.3.3: - dependencies: - micromark: 2.11.4 - transitivePeerDependencies: - - supports-color - - micromark-extension-gfm-task-list-item@1.0.5: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm@0.3.3: - dependencies: - micromark: 2.11.4 - micromark-extension-gfm-autolink-literal: 0.5.7 - micromark-extension-gfm-strikethrough: 0.6.5 - micromark-extension-gfm-table: 0.4.3 - micromark-extension-gfm-tagfilter: 0.3.0 - micromark-extension-gfm-task-list-item: 0.3.3 - transitivePeerDependencies: - - supports-color - - micromark-extension-gfm@2.0.3: - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-math@2.1.2: - dependencies: - '@types/katex': 0.16.7 - katex: 0.16.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-mdx-expression@3.0.0: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-mdx-jsx@3.0.1: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-destination@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-destination@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-factory-label@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-mdx-expression@2.0.2: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - - micromark-factory-space@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-title@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-whitespace@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-chunked@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-classify-character@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-combine-extensions@2.0.0: - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-decode-numeric-character-reference@2.0.1: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-decode-string@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - - micromark-util-encode@1.1.0: {} - - micromark-util-encode@2.0.0: {} - - micromark-util-events-to-acorn@2.0.2: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 - '@types/unist': 3.0.2 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - - micromark-util-html-tag-name@1.2.0: {} - - micromark-util-html-tag-name@2.0.0: {} - - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-normalize-identifier@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - - micromark-util-resolve-all@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-util-subtokenize@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-symbol@1.1.0: {} - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@1.1.0: {} - - micromark-util-types@2.0.0: {} - - micromark@2.11.4: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - parse-entities: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@5.5.0) - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - micromark@4.0.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@5.5.0) - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromatch@2.3.11: - dependencies: - arr-diff: 2.0.0 - array-unique: 0.2.1 - braces: 1.8.5 - expand-brackets: 0.1.5 - extglob: 0.3.2 - filename-regex: 2.0.1 - is-extglob: 1.0.0 - is-glob: 2.0.1 - kind-of: 3.2.2 - normalize-path: 2.1.1 - object.omit: 2.0.1 - parse-glob: 3.0.4 - regex-cache: 0.4.4 - - micromatch@3.1.10: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime-db@1.33.0: {} - - mime-db@1.52.0: {} - - mime-types@2.1.18: - dependencies: - mime-db: 1.33.0 - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mime@3.0.0: {} - - mime@4.0.4: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-response@1.0.1: {} - - mimic-response@2.1.0: - optional: true - - mimic-response@3.1.0: {} - - mimic-response@4.0.0: {} - - min-indent@1.0.1: {} - - mini-css-extract-plugin@2.8.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - mini-css-extract-plugin@2.8.1(webpack@5.90.3): - dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.90.3 - - minimalistic-assert@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@7.4.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 + lodash.memoize@4.1.2: {} - minimist@1.2.8: {} + lodash.merge@4.6.2: {} - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 + lodash.mergewith@4.6.2: {} - minipass-fetch@1.4.1: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 + lodash.once@4.1.1: {} - minipass-fetch@2.1.2: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 + lodash.sortby@4.7.0: {} - minipass-fetch@3.0.4: - dependencies: - minipass: 7.0.4 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 + lodash.template@4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 + lodash.templatesettings@4.2.0: + dependencies: + lodash._reinterpolate: 3.0.0 - minipass-json-stream@1.0.1: - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 + lodash.truncate@4.4.2: {} - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 + lodash.uniq@4.5.0: {} - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 + lodash@4.17.21: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 - minipass@5.0.0: {} + log-update@4.0.0: + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 - minipass@7.0.4: {} + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mitt@3.0.0: {} - - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - - mixin-object@2.0.1: - dependencies: - for-in: 0.1.8 - is-extendable: 0.1.1 - - mj-context-menu@0.6.1: {} - - mkdirp-classic@0.5.3: {} - - mkdirp-infer-owner@2.0.0: - dependencies: - chownr: 2.0.0 - infer-owner: 1.0.4 - mkdirp: 1.0.4 - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mkdirp@2.1.6: {} - - ml-array-mean@1.1.6: - dependencies: - ml-array-sum: 1.1.6 - - ml-array-sum@1.1.6: - dependencies: - is-any-array: 2.0.1 - - ml-distance-euclidean@2.0.0: {} - - ml-distance@4.0.1: - dependencies: - ml-array-mean: 1.1.6 - ml-distance-euclidean: 2.0.0 - ml-tree-similarity: 1.0.0 - - ml-tree-similarity@1.0.0: - dependencies: - binary-search: 1.3.6 - num-sort: 2.1.0 - - mnemonist@0.38.3: - dependencies: - obliterator: 1.6.1 - - moment-timezone@0.5.45: - dependencies: - moment: 2.30.1 - - moment@2.30.1: {} - - monaco-editor@0.50.0: {} - - mongodb-connection-string-url@3.0.0: - dependencies: - '@types/whatwg-url': 11.0.4 - whatwg-url: 13.0.0 - - mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): - dependencies: - '@mongodb-js/saslprep': 1.1.5 - bson: 6.4.0 - mongodb-connection-string-url: 3.0.0 - optionalDependencies: - gcp-metadata: 5.3.0(encoding@0.1.13) - socks: 2.8.1 - - mongodb@6.6.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): - dependencies: - '@mongodb-js/saslprep': 1.1.5 - bson: 6.7.0 - mongodb-connection-string-url: 3.0.0 - optionalDependencies: - gcp-metadata: 5.3.0(encoding@0.1.13) - socks: 2.8.1 - - mongodb@6.7.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): - dependencies: - '@mongodb-js/saslprep': 1.1.5 - bson: 6.7.0 - mongodb-connection-string-url: 3.0.0 - optionalDependencies: - gcp-metadata: 5.3.0(encoding@0.1.13) - socks: 2.8.1 - - mongoose@8.5.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): - dependencies: - bson: 6.7.0 - kareem: 2.6.3 - mongodb: 6.7.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - mpath: 0.9.0 - mquery: 5.0.0 - ms: 2.1.3 - sift: 17.1.3 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - gcp-metadata - - kerberos - - mongodb-client-encryption - - snappy - - socks - - supports-color - - mpath@0.9.0: {} - - mqtt-packet@6.10.0: - dependencies: - bl: 4.1.0 - debug: 4.3.6(supports-color@5.5.0) - process-nextick-args: 2.0.1 - transitivePeerDependencies: - - supports-color - - mqtt@4.3.8(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - commist: 1.1.0 - concat-stream: 2.0.0 - debug: 4.3.6(supports-color@5.5.0) - duplexify: 4.1.3 - help-me: 3.0.0 - inherits: 2.0.4 - lru-cache: 6.0.0 - minimist: 1.2.8 - mqtt-packet: 6.10.0 - number-allocator: 1.0.14 - pump: 3.0.0 - readable-stream: 3.6.2 - reinterval: 1.1.0 - rfdc: 1.3.1 - split2: 3.2.2 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - mquery@5.0.0: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - mri@1.2.0: {} - - mrmime@1.0.1: {} - - mrmime@2.0.0: {} - - ms@2.0.0: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - 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 - - multicast-dns@7.2.5: - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - - multimatch@5.0.0: - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - - mustache@4.2.0: {} - - mute-stdout@1.0.1: {} - - mute-stream@0.0.5: {} - - mute-stream@0.0.8: {} - - mysql2@3.9.2: - dependencies: - denque: 2.1.0 - generate-function: 2.3.1 - iconv-lite: 0.6.3 - long: 5.2.3 - lru-cache: 8.0.5 - named-placeholders: 1.1.3 - seq-queue: 0.0.5 - sqlstring: 2.3.3 - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - named-placeholders@1.1.3: - dependencies: - lru-cache: 7.18.3 - - nan@2.19.0: - optional: true - - nanoclone@0.2.1: {} - - nanoid@3.3.6: {} - - nanoid@3.3.7: {} - - nanoid@5.0.7: {} - - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - nanoseconds@0.1.0: {} - - napi-build-utils@1.0.2: {} - - natural-compare-lite@1.4.0: {} - - natural-compare@1.4.0: {} - - natural-orderby@2.0.3: {} - - natural@6.12.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): - dependencies: - afinn-165: 1.0.4 - afinn-165-financialmarketnews: 3.0.0 - apparatus: 0.0.10 - dotenv: 16.4.5 - memjs: 1.3.2 - mongoose: 8.5.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - pg: 8.11.5 - redis: 4.6.13 - safe-stable-stringify: 2.4.3 - stopwords-iso: 1.1.0 - sylvester: 0.0.12 - underscore: 1.13.6 - uuid: 9.0.1 - wordnet-db: 3.1.14 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - gcp-metadata - - kerberos - - mongodb-client-encryption - - pg-native - - snappy - - socks - - supports-color - - negotiator@0.6.3: {} - - neo-async@2.6.2: {} - - netmask@2.0.2: {} - - next-auth@4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - '@panva/hkdf': 1.2.1 - cookie: 0.5.0 - jose: 4.15.9 - next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) - oauth: 0.9.15 - openid-client: 5.6.5 - preact: 10.23.2 - preact-render-to-string: 5.2.6(preact@10.23.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - uuid: 8.3.2 - - next-tick@0.2.2: {} - - next-tick@1.1.0: {} - - next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1): - dependencies: - '@next/env': 14.2.5 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001597 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.0)(babel-plugin-macros@3.1.0)(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.5 - '@next/swc-darwin-x64': 14.2.5 - '@next/swc-linux-arm64-gnu': 14.2.5 - '@next/swc-linux-arm64-musl': 14.2.5 - '@next/swc-linux-x64-gnu': 14.2.5 - '@next/swc-linux-x64-musl': 14.2.5 - '@next/swc-win32-arm64-msvc': 14.2.5 - '@next/swc-win32-ia32-msvc': 14.2.5 - '@next/swc-win32-x64-msvc': 14.2.5 - '@opentelemetry/api': 1.9.0 - sass: 1.71.1 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - no-case@2.3.2: - dependencies: - lower-case: 1.1.4 - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - - node-abi@3.56.0: - dependencies: - semver: 7.6.0 - - node-addon-api@6.1.0: {} - - node-addon-api@7.1.0: {} - - node-api-headers@1.1.0: - optional: true - - node-cleanup@2.1.2: {} - - node-domexception@1.0.0: {} - - node-emoji@2.1.3: - dependencies: - '@sindresorhus/is': 4.6.0 - char-regex: 1.0.2 - emojilib: 2.4.0 - skin-tone: 2.0.0 - - node-ensure@0.0.0: {} - - node-fetch-h2@2.3.0: - dependencies: - http2-client: 1.3.5 - - node-fetch-native@1.6.4: {} - - node-fetch@2.6.7(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - node-forge@1.3.1: {} - - node-gyp-build@4.8.1: {} - - node-gyp@8.4.1: - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 9.1.0 - nopt: 5.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - node-gyp@9.4.1: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - node-html-markdown@1.3.0: - dependencies: - node-html-parser: 6.1.12 - - node-html-parser@6.1.12: - dependencies: - css-select: 5.1.0 - he: 1.2.0 - - node-int64@0.4.0: {} - - node-readfiles@0.2.0: - dependencies: - es6-promise: 3.3.1 - - node-releases@2.0.14: {} - - node-releases@2.0.18: {} - - nodemon@2.0.22: - dependencies: - chokidar: 3.6.0 - debug: 3.2.7(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 5.7.2 - simple-update-notifier: 1.1.0 - supports-color: 5.5.0 - touch: 3.1.0 - undefsafe: 2.0.5 - - noncharacters@1.1.0: {} - - nopt@1.0.10: - dependencies: - abbrev: 1.1.1 - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - - nopt@6.0.0: - dependencies: - abbrev: 1.1.1 - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.0 - validate-npm-package-license: 3.0.4 - - normalize-package-data@5.0.0: - dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.13.1 - semver: 7.6.0 - validate-npm-package-license: 3.0.4 - - normalize-path@2.1.1: - dependencies: - remove-trailing-separator: 1.1.0 - - normalize-path@3.0.0: {} - - normalize-pkg@0.3.20: - dependencies: - arr-union: 3.1.0 - array-unique: 0.3.2 - component-emitter: 1.3.1 - export-files: 2.1.1 - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - get-value: 2.0.6 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - map-schema: 0.2.4 - minimist: 1.2.8 - mixin-deep: 1.3.2 - omit-empty: 0.4.1 - parse-git-config: 1.1.1 - repo-utils: 0.3.7 - semver: 5.7.2 - stringify-author: 0.1.3 - write-json: 0.2.2 - transitivePeerDependencies: - - supports-color - - normalize-range@0.1.2: {} - - normalize-url@6.1.0: {} - - normalize-url@8.0.1: {} - - notion-md-crawler@1.0.0(encoding@0.1.13): - dependencies: - '@notionhq/client': 2.2.14(encoding@0.1.13) - md-utils-ts: 2.0.0 - transitivePeerDependencies: - - encoding - - notion-to-md@3.1.1(encoding@0.1.13): - dependencies: - markdown-table: 2.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - notistack@2.0.8(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - clsx: 1.2.1 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) - - now-and-later@0.0.6: - dependencies: - once: 1.4.0 - - now-and-later@2.0.1: - dependencies: - once: 1.4.0 - - npm-bundled@1.1.2: - dependencies: - npm-normalize-package-bin: 1.0.1 - - npm-bundled@3.0.0: - dependencies: - npm-normalize-package-bin: 3.0.1 - - npm-install-checks@4.0.0: - dependencies: - semver: 7.6.0 - - npm-install-checks@6.3.0: - dependencies: - semver: 7.6.0 - - npm-normalize-package-bin@1.0.1: {} - - npm-normalize-package-bin@2.0.0: {} - - npm-normalize-package-bin@3.0.1: {} - - npm-package-arg@10.1.0: - dependencies: - hosted-git-info: 6.1.1 - proc-log: 3.0.0 - semver: 7.6.0 - validate-npm-package-name: 5.0.0 - - npm-package-arg@8.1.5: - dependencies: - hosted-git-info: 4.1.0 - semver: 7.6.0 - validate-npm-package-name: 3.0.0 - - npm-packlist@3.0.0: - dependencies: - glob: 7.2.3 - ignore-walk: 4.0.1 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - - npm-packlist@7.0.4: - dependencies: - ignore-walk: 6.0.4 - - npm-pick-manifest@6.1.1: - dependencies: - npm-install-checks: 4.0.0 - npm-normalize-package-bin: 1.0.1 - npm-package-arg: 8.1.5 - semver: 7.6.0 - - npm-pick-manifest@8.0.2: - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 10.1.0 - semver: 7.6.0 - - npm-registry-fetch@12.0.2: - dependencies: - make-fetch-happen: 10.2.1 - minipass: 3.3.6 - minipass-fetch: 1.4.1 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 8.1.5 - transitivePeerDependencies: - - bluebird - - supports-color - - npm-registry-fetch@14.0.5: - dependencies: - make-fetch-happen: 11.1.1 - minipass: 5.0.0 - minipass-fetch: 3.0.4 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 10.1.0 - proc-log: 3.0.0 - transitivePeerDependencies: - - supports-color - - npm-run-path@1.0.0: - dependencies: - path-key: 1.0.0 - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - 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 - - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - - nprogress@0.2.0: {} - - nth-check@1.0.2: - dependencies: - boolbase: 1.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - num-sort@2.1.0: {} - - number-allocator@1.0.14: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - js-sdsl: 4.3.0 - transitivePeerDependencies: - - supports-color - - number-is-nan@1.0.1: {} - - nwsapi@2.2.7: {} - - oas-kit-common@1.0.8: - dependencies: - fast-safe-stringify: 2.1.1 - - oas-linter@3.2.2: - dependencies: - '@exodus/schemasafe': 1.3.0 - should: 13.2.3 - yaml: 1.10.2 - - oas-resolver@2.5.6: - dependencies: - node-fetch-h2: 2.3.0 - oas-kit-common: 1.0.8 - reftools: 1.1.9 - yaml: 1.10.2 - yargs: 17.7.2 - - oas-schema-walker@1.1.5: {} - - oas-validator@5.0.8: - dependencies: - call-me-maybe: 1.0.2 - oas-kit-common: 1.0.8 - oas-linter: 3.2.2 - oas-resolver: 2.5.6 - oas-schema-walker: 1.1.5 - reftools: 1.1.9 - should: 13.2.3 - yaml: 1.10.2 - - oauth-sign@0.9.0: {} - - oauth4webapi@2.11.1: {} - - oauth@0.10.0: {} - - oauth@0.9.15: {} - - object-assign@4.1.1: {} - - object-copy@0.1.0: - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - - object-hash@2.2.0: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.1: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object-treeify@1.1.33: {} - - object-visit@0.3.4: - dependencies: - isobject: 2.1.0 - - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.defaults@1.1.0: - dependencies: - array-each: 1.0.1 - array-slice: 1.1.0 - for-own: 1.0.0 - isobject: 3.0.1 - - object.entries@1.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - object.fromentries@2.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - object.getownpropertydescriptors@2.1.7: - dependencies: - array.prototype.reduce: 1.0.6 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - safe-array-concat: 1.1.2 - - object.groupby@1.0.2: - dependencies: - array.prototype.filter: 1.0.3 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - - object.hasown@1.1.3: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.5 - - object.map@1.0.1: - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - - object.omit@2.0.1: - dependencies: - for-own: 0.1.5 - is-extendable: 0.1.1 - - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - - object.reduce@1.0.1: - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - - object.values@1.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - obliterator@1.6.1: {} - - obuf@1.1.2: {} - - oclif@3.17.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(encoding@0.1.13)(mem-fs@2.3.0)(typescript@5.5.2): - dependencies: - '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - '@oclif/plugin-help': 5.2.20(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - '@oclif/plugin-not-found': 2.4.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - '@oclif/plugin-warn-if-update-available': 2.1.1(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - async-retry: 1.3.3 - aws-sdk: 2.1575.0 - concurrently: 7.6.0 - debug: 4.3.4(supports-color@8.1.1) - find-yarn-workspace-root: 2.0.0 - fs-extra: 8.1.0 - github-slugger: 1.5.0 - got: 11.8.6 - lodash: 4.17.21 - normalize-package-data: 3.0.3 - semver: 7.6.0 - shelljs: 0.8.5 - tslib: 2.6.2 - yeoman-environment: 3.19.3 - yeoman-generator: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - bluebird - - encoding - - mem-fs - - supports-color - - typescript - - ohash@1.1.3: {} - - oidc-token-hash@5.0.3: {} - - ollama@0.5.6: - dependencies: - whatwg-fetch: 3.6.20 - - omit-empty@0.3.6: - dependencies: - has-values: 0.1.4 - is-date-object: 1.0.5 - isobject: 2.1.0 - reduce-object: 0.1.3 - - omit-empty@0.4.1: - dependencies: - has-values: 0.1.4 - kind-of: 3.2.2 - reduce-object: 0.1.3 - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.0.2: {} - - once@1.3.3: - dependencies: - wrappy: 1.0.2 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - one-time@1.0.0: - dependencies: - fn.name: 1.1.0 - - onetime@1.1.0: {} - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - onnx-proto@4.0.4: - dependencies: - protobufjs: 6.11.4 - - onnxruntime-common@1.14.0: {} - - onnxruntime-node@1.14.0: - dependencies: - onnxruntime-common: 1.14.0 - optional: true - - onnxruntime-web@1.14.0: - dependencies: - flatbuffers: 1.12.0 - guid-typescript: 1.0.9 - long: 4.0.0 - onnx-proto: 4.0.4 - onnxruntime-common: 1.14.0 - platform: 1.3.6 - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openai-chat-tokens@0.2.8: - dependencies: - js-tiktoken: 1.0.12 - - openai@4.51.0(encoding@0.1.13): - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.11 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - openapi-types@12.1.3: {} - - openapi-typescript-fetch@1.1.3: {} - - openapi-typescript@6.7.6: - dependencies: - ansi-colors: 4.1.3 - fast-glob: 3.3.2 - js-yaml: 4.1.0 - supports-color: 9.4.0 - undici: 5.28.4 - yargs-parser: 21.1.1 - - opener@1.5.2: {} - - openid-client@5.6.5: - dependencies: - jose: 4.15.9 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - - option-cache@3.5.0: - dependencies: - arr-flatten: 1.1.0 - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 0.3.1 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - set-value: 0.4.3 - to-object-path: 0.3.0 - - option@0.2.4: {} - - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - opts@2.0.2: {} - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - ordered-read-streams@0.3.0: - dependencies: - is-stream: 1.1.0 - readable-stream: 2.3.8 - - ordered-read-streams@1.0.1: - dependencies: - readable-stream: 2.3.8 - - os-homedir@1.0.2: {} - - os-locale@1.4.0: - dependencies: - lcid: 1.0.0 - - os-tmpdir@1.0.2: {} - - ospath@1.2.2: {} - - ow@0.28.2: - dependencies: - '@sindresorhus/is': 4.6.0 - callsites: 3.1.0 - dot-prop: 6.0.1 - lodash.isequal: 4.5.0 - vali-date: 1.0.0 - - p-cancelable@2.1.1: {} - - p-cancelable@3.0.0: {} - - p-finally@1.0.0: {} - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-retry@4.6.2: - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - - p-throttle@4.1.1: {} - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-transform@1.3.0: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - p-queue: 6.6.2 - transitivePeerDependencies: - - supports-color - - p-try@2.2.0: {} - - pac-proxy-agent@7.0.1: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 - debug: 4.3.6(supports-color@5.5.0) - get-uri: 6.0.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - - package-json@8.1.1: - dependencies: - got: 12.6.1 - registry-auth-token: 5.0.2 - registry-url: 6.0.1 - semver: 7.6.0 - - packet-reader@1.0.0: {} - - pacote@12.0.3: - dependencies: - '@npmcli/git': 2.1.0 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/promise-spawn': 1.3.2 - '@npmcli/run-script': 2.0.0 - cacache: 15.3.0 - chownr: 2.0.0 - fs-minipass: 2.1.0 - infer-owner: 1.0.4 - minipass: 3.3.6 - mkdirp: 1.0.4 - npm-package-arg: 8.1.5 - npm-packlist: 3.0.0 - npm-pick-manifest: 6.1.1 - npm-registry-fetch: 12.0.2 - promise-retry: 2.0.1 - read-package-json-fast: 2.0.3 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.0 - transitivePeerDependencies: - - bluebird - - supports-color - - pacote@15.2.0: - dependencies: - '@npmcli/git': 4.1.0 - '@npmcli/installed-package-contents': 2.0.2 - '@npmcli/promise-spawn': 6.0.2 - '@npmcli/run-script': 6.0.2 - cacache: 17.1.4 - fs-minipass: 3.0.3 - minipass: 5.0.0 - npm-package-arg: 10.1.0 - npm-packlist: 7.0.4 - npm-pick-manifest: 8.0.2 - npm-registry-fetch: 14.0.5 - proc-log: 3.0.0 - promise-retry: 2.0.1 - read-package-json: 6.0.4 - read-package-json-fast: 3.0.2 - sigstore: 1.9.0 - ssri: 10.0.5 - tar: 6.2.0 - transitivePeerDependencies: - - bluebird - - supports-color - - pad-right@0.2.2: - dependencies: - repeat-string: 1.6.1 - - paginationator@0.1.4: {} - - pako@1.0.11: {} - - papaparse@5.4.1: {} - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-author@1.0.0: {} - - parse-conflict-json@2.0.2: - dependencies: - json-parse-even-better-errors: 2.3.1 - just-diff: 5.2.0 - just-diff-apply: 5.5.0 - - parse-entities@1.2.2: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-entities@4.0.1: - dependencies: - '@types/unist': 2.0.10 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-filepath@1.0.2: - dependencies: - is-absolute: 1.0.0 - map-cache: 0.2.2 - path-root: 0.1.1 - - parse-git-config@1.1.1: - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - git-config-path: 1.0.1 - ini: 1.3.8 - - parse-github-url@0.3.2: {} - - parse-glob@3.0.4: - dependencies: - glob-base: 0.3.0 - is-dotfile: 1.0.3 - is-extglob: 1.0.0 - is-glob: 2.0.1 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 + logform@2.6.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 - parse-node-version@1.0.1: {} + long@4.0.0: {} - parse-numeric-range@1.3.0: {} + long@5.2.3: {} - parse-passwd@1.0.0: {} + longest-streak@2.0.4: {} - parse-srcset@1.0.2: {} + longest-streak@3.1.0: {} - parse5-htmlparser2-tree-adapter@6.0.1: - dependencies: - parse5: 6.0.1 + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 + lop@0.4.1: + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.6 - parse5@5.1.1: {} + lop@0.4.2: + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.6 - parse5@6.0.1: {} + lower-case@2.0.2: + dependencies: + tslib: 2.6.2 - parse5@7.1.2: - dependencies: - entities: 4.5.0 + lowercase-keys@2.0.0: {} - parseley@0.12.1: - dependencies: - leac: 0.6.0 - peberminta: 0.9.0 + lowercase-keys@3.0.0: {} - parser-front-matter@1.6.4: - dependencies: - extend-shallow: 2.0.1 - file-is-binary: 1.0.0 - gray-matter: 3.1.1 - isobject: 3.0.1 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - trim-leading-lines: 0.1.1 + lowlight@1.12.1: + dependencies: + fault: 1.0.4 + highlight.js: 9.15.10 + + lowlight@1.20.0: + dependencies: + fault: 1.0.4 + highlight.js: 10.7.3 + + lru-cache@10.2.0: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + lru-cache@9.1.2: {} + + lru.min@1.1.1: {} + + lunary@0.7.15(openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4))(react@18.2.0): + dependencies: + unctx: 2.3.1 + optionalDependencies: + openai: 4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4) + react: 18.2.0 + + luxon@3.5.0: {} + + lz-string@1.5.0: {} + + magic-bytes.js@1.10.0: {} + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@3.1.0: + dependencies: + semver: 7.7.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + make-error@1.3.6: {} + + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + make-fetch-happen@11.1.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 17.1.4 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + + make-fetch-happen@9.1.0: + dependencies: + agentkeepalive: 4.5.0 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + mammoth@1.7.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.1 + path-is-absolute: 1.0.1 + underscore: 1.13.6 + xmlbuilder: 10.1.1 + + mammoth@1.7.2: + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.1 + path-is-absolute: 1.0.1 + underscore: 1.13.6 + xmlbuilder: 10.1.1 + + mammoth@1.9.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.2 + path-is-absolute: 1.0.1 + underscore: 1.13.6 + xmlbuilder: 10.1.1 + + map-cache@0.2.2: {} + + map-stream@0.1.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-extensions@2.0.0: {} + + markdown-table@2.0.0: + dependencies: + repeat-string: 1.6.1 + + markdown-table@3.0.3: {} + + matchdep@2.0.0: + dependencies: + findup-sync: 2.0.0 + micromatch: 3.1.10 + resolve: 1.22.8 + stack-trace: 0.0.10 + transitivePeerDependencies: + - supports-color + + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + + material-colors@1.2.6: {} + + math-intrinsics@1.1.0: {} + + mathjax-full@3.2.2: + dependencies: + esm: 3.2.25 + mhchemparser: 4.2.1 + mj-context-menu: 0.6.1 + speech-rule-engine: 4.0.7 + + md-utils-ts@2.0.0: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdast-util-definitions@5.1.2: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + unist-util-visit: 4.1.2 + + mdast-util-directive@3.0.0: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@1.1.1: + dependencies: + escape-string-regexp: 4.0.0 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + + mdast-util-find-and-replace@2.2.2: + dependencies: + '@types/mdast': 3.0.15 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@0.8.5: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-from-markdown@1.3.1: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@0.1.3: + dependencies: + ccount: 1.1.0 + mdast-util-find-and-replace: 1.1.1 + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.2.0 + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + + mdast-util-gfm-footnote@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.1.0 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@0.2.3: + dependencies: + mdast-util-to-markdown: 0.6.5 + + mdast-util-gfm-strikethrough@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@0.1.6: + dependencies: + markdown-table: 2.0.0 + mdast-util-to-markdown: 0.6.5 + + mdast-util-gfm-table@1.0.7: + dependencies: + '@types/mdast': 3.0.15 + markdown-table: 3.0.3 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@0.1.6: + dependencies: + mdast-util-to-markdown: 0.6.5 + + mdast-util-gfm-task-list-item@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@0.1.2: + dependencies: + mdast-util-gfm-autolink-literal: 0.1.3 + mdast-util-gfm-strikethrough: 0.2.3 + mdast-util-gfm-table: 0.1.6 + mdast-util-gfm-task-list-item: 0.1.6 + mdast-util-to-markdown: 0.6.5 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@2.0.2: + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-math@2.0.2: + dependencies: + '@types/mdast': 3.0.15 + longest-streak: 3.1.0 + mdast-util-to-markdown: 1.5.0 + + mdast-util-mdx-expression@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.3: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + + mdast-util-to-hast@12.3.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + + mdast-util-to-hast@13.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + + mdast-util-to-markdown@0.6.5: + dependencies: + '@types/unist': 2.0.10 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + + mdast-util-to-markdown@1.5.0: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@2.0.0: {} + + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.3 + + mdn-data@2.0.14: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.0.4: {} + + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + + meilisearch@0.41.0(encoding@0.1.13): + dependencies: + cross-fetch: 3.1.8(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + mem-fs-editor@9.7.0(mem-fs@2.3.0): + dependencies: + binaryextensions: 4.19.0 + commondir: 1.0.1 + deep-extend: 0.6.0 + ejs: 3.1.10 + globby: 11.1.0 + isbinaryfile: 5.0.2 + minimatch: 7.4.6 + multimatch: 5.0.0 + normalize-path: 3.0.0 + textextensions: 5.16.0 + optionalDependencies: + mem-fs: 2.3.0 + + mem-fs@2.3.0: + dependencies: + '@types/node': 15.14.9 + '@types/vinyl': 2.0.11 + vinyl: 2.2.1 + vinyl-file: 3.0.0 + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.5 + + memfs@4.17.0: + dependencies: + '@jsonjoy.com/json-pack': 1.1.1(tslib@2.6.2) + '@jsonjoy.com/util': 1.5.0(tslib@2.6.2) + tree-dump: 1.0.2(tslib@2.6.2) + tslib: 2.6.2 + + memjs@1.3.2: {} + + memoize-one@5.2.1: {} + + memory-pager@1.5.0: {} + + memory-stream@1.0.0: + dependencies: + readable-stream: 3.6.2 + + merge-descriptors@1.0.1: {} + + merge-descriptors@1.0.3: {} + + merge-descriptors@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + mhchemparser@4.2.1: {} + + micromark-core-commonmark@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-directive@3.0.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@0.5.7: + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + + micromark-extension-gfm-autolink-literal@1.0.5: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@1.1.2: + dependencies: + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@0.6.5: + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + + micromark-extension-gfm-strikethrough@1.0.7: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@0.4.3: + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + + micromark-extension-gfm-table@1.0.7: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@0.3.0: {} + + micromark-extension-gfm-tagfilter@1.0.2: + dependencies: + micromark-util-types: 1.1.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@0.3.3: + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + + micromark-extension-gfm-task-list-item@1.0.5: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@0.3.3: + dependencies: + micromark: 2.11.4 + micromark-extension-gfm-autolink-literal: 0.5.7 + micromark-extension-gfm-strikethrough: 0.6.5 + micromark-extension-gfm-table: 0.4.3 + micromark-extension-gfm-tagfilter: 0.3.0 + micromark-extension-gfm-task-list-item: 0.3.3 + transitivePeerDependencies: + - supports-color + + micromark-extension-gfm@2.0.3: + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 + micromark-extension-gfm-tagfilter: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-math@2.1.2: + dependencies: + '@types/katex': 0.16.7 + katex: 0.16.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-mdx-expression@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-jsx@3.0.1: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-mdx-expression@2.0.2: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-factory-space@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@1.2.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@1.1.0: {} + + micromark-util-encode@2.0.0: {} + + micromark-util-events-to-acorn@2.0.2: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-util-html-tag-name@1.2.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@1.1.0: + dependencies: + micromark-util-types: 1.1.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@1.2.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@1.1.0: {} + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@1.1.0: {} + + micromark-util-types@2.0.0: {} + + micromark@2.11.4: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromark@3.2.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 3.0.3 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.5: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.33.0: {} + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.0: + dependencies: + mime-db: 1.53.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mime@4.0.4: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-response@1.0.1: {} + + mimic-response@2.1.0: + optional: true + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + min-indent@1.0.1: {} + + mini-css-extract-plugin@2.8.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + mini-css-extract-plugin@2.8.1(webpack@5.90.3): + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.90.3 + + minimalistic-assert@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@7.4.6: + dependencies: + brace-expansion: 2.0.1 - parseurl@1.3.3: {} + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 - pascalcase@0.1.1: {} + minimist@1.2.8: {} - passport-google-oauth20@2.0.0: - dependencies: - passport-oauth2: 1.8.0 + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 - passport-oauth2@1.8.0: - dependencies: - base64url: 3.0.1 - oauth: 0.10.0 - passport-strategy: 1.0.0 - uid2: 0.0.4 - utils-merge: 1.0.1 + minipass-fetch@1.4.1: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 - passport-strategy@1.0.0: {} + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 - passport@0.7.0: - dependencies: - passport-strategy: 1.0.0 - pause: 0.0.1 - utils-merge: 1.0.1 + minipass-fetch@3.0.4: + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 - password-prompt@1.1.3: - dependencies: - ansi-escapes: 4.3.2 - cross-spawn: 7.0.3 + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 - path-browserify@1.0.1: {} + minipass-json-stream@1.0.1: + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 - path-dirname@1.0.2: {} + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 - path-exists@3.0.0: {} + minipass@3.3.6: + dependencies: + yallist: 4.0.0 - path-exists@4.0.0: {} + minipass@5.0.0: {} - path-exists@5.0.0: {} + minipass@7.0.4: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mitt@3.0.0: {} + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mj-context-menu@0.6.1: {} + + mkdirp-classic@0.5.3: {} + + mkdirp-infer-owner@2.0.0: + dependencies: + chownr: 2.0.0 + infer-owner: 1.0.4 + mkdirp: 1.0.4 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mkdirp@2.1.6: {} + + ml-array-mean@1.1.6: + dependencies: + ml-array-sum: 1.1.6 + + ml-array-sum@1.1.6: + dependencies: + is-any-array: 2.0.1 + + ml-distance-euclidean@2.0.0: {} + + ml-distance@4.0.1: + dependencies: + ml-array-mean: 1.1.6 + ml-distance-euclidean: 2.0.0 + ml-tree-similarity: 1.0.0 + + ml-tree-similarity@1.0.0: + dependencies: + binary-search: 1.3.6 + num-sort: 2.1.0 + + mnemonist@0.38.3: + dependencies: + obliterator: 1.6.1 + + module-details-from-path@1.0.3: {} + + moment-timezone@0.5.45: + dependencies: + moment: 2.30.1 + + moment@2.30.1: {} + + monaco-editor@0.50.0: {} + + mongodb-connection-string-url@3.0.0: + dependencies: + '@types/whatwg-url': 11.0.4 + whatwg-url: 13.0.0 + + mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): + dependencies: + '@mongodb-js/saslprep': 1.1.5 + bson: 6.4.0 + mongodb-connection-string-url: 3.0.0 + optionalDependencies: + gcp-metadata: 5.3.0(encoding@0.1.13) + socks: 2.8.1 + + mongodb@6.6.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): + dependencies: + '@mongodb-js/saslprep': 1.1.5 + bson: 6.7.0 + mongodb-connection-string-url: 3.0.0 + optionalDependencies: + gcp-metadata: 5.3.0(encoding@0.1.13) + socks: 2.8.1 + + mongodb@6.7.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): + dependencies: + '@mongodb-js/saslprep': 1.1.5 + bson: 6.7.0 + mongodb-connection-string-url: 3.0.0 + optionalDependencies: + gcp-metadata: 5.3.0(encoding@0.1.13) + socks: 2.8.1 + + mongoose@8.5.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): + dependencies: + bson: 6.7.0 + kareem: 2.6.3 + mongodb: 6.7.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + mpath: 0.9.0 + mquery: 5.0.0 + ms: 2.1.3 + sift: 17.1.3 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + - supports-color + + mpath@0.9.0: {} + + mqtt-packet@6.10.0: + dependencies: + bl: 4.1.0 + debug: 4.4.0(supports-color@5.5.0) + process-nextick-args: 2.0.1 + transitivePeerDependencies: + - supports-color + + mqtt@4.3.8(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + commist: 1.1.0 + concat-stream: 2.0.0 + debug: 4.4.0(supports-color@5.5.0) + duplexify: 4.1.3 + help-me: 3.0.0 + inherits: 2.0.4 + lru-cache: 6.0.0 + minimist: 1.2.8 + mqtt-packet: 6.10.0 + number-allocator: 1.0.14 + pump: 3.0.0 + readable-stream: 3.6.2 + reinterval: 1.1.0 + rfdc: 1.3.1 + split2: 3.2.2 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + xtend: 4.0.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + mquery@5.0.0: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + mri@1.2.0: {} + + mrmime@1.0.1: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.1: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.2: + optionalDependencies: + msgpackr-extract: 3.0.3 + + multer-s3@3.0.1(@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))): + dependencies: + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + '@aws-sdk/lib-storage': 3.758.0(@aws-sdk/client-s3@3.529.1(aws-crt@1.21.3(bufferutil@4.0.8))) + file-type: 3.9.0 + html-comment-regex: 1.1.2 + run-parallel: 1.2.0 + + 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 + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + multimatch@5.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + + mustache@4.2.0: {} + + mute-stdout@1.0.1: {} + + mute-stream@0.0.8: {} + + mysql2@3.13.0: + dependencies: + aws-ssl-profiles: 1.1.2 + denque: 2.1.0 + generate-function: 2.3.1 + iconv-lite: 0.6.3 + long: 5.2.3 + lru.min: 1.1.1 + named-placeholders: 1.1.3 + seq-queue: 0.0.5 + sqlstring: 2.3.3 + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + named-placeholders@1.1.3: + dependencies: + lru-cache: 7.18.3 + + nan@2.19.0: + optional: true + + nan@2.22.2: + optional: true + + nanoclone@0.2.1: {} + + nanoid@3.3.6: {} + + nanoid@3.3.7: {} + + nanoid@5.0.7: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + napi-build-utils@1.0.2: {} + + natural-compare-lite@1.4.0: {} + + natural-compare@1.4.0: {} + + natural-orderby@2.0.3: {} + + natural@6.12.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1): + dependencies: + afinn-165: 1.0.4 + afinn-165-financialmarketnews: 3.0.0 + apparatus: 0.0.10 + dotenv: 16.4.7 + memjs: 1.3.2 + mongoose: 8.5.2(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + pg: 8.11.5 + redis: 4.6.13 + safe-stable-stringify: 2.4.3 + stopwords-iso: 1.1.0 + sylvester: 0.0.12 + underscore: 1.13.6 + uuid: 9.0.1 + wordnet-db: 3.1.14 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - pg-native + - snappy + - socks + - supports-color + + negotiator@0.6.3: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + neo4j-driver-bolt-connection@5.28.1: + dependencies: + buffer: 6.0.3 + neo4j-driver-core: 5.28.1 + string_decoder: 1.3.0 + + neo4j-driver-core@5.28.1: {} + + neo4j-driver@5.28.1: + dependencies: + neo4j-driver-bolt-connection: 5.28.1 + neo4j-driver-core: 5.28.1 + rxjs: 7.8.1 + + netmask@2.0.2: {} + + next-auth@4.24.7(next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + '@panva/hkdf': 1.2.1 + cookie: 0.5.0 + jose: 4.15.9 + next: 14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + oauth: 0.9.15 + openid-client: 5.6.5 + preact: 10.23.2 + preact-render-to-string: 5.2.6(preact@10.23.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uuid: 8.3.2 + + next-auth@4.24.7(next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + '@panva/hkdf': 1.2.1 + cookie: 0.5.0 + jose: 4.15.9 + next: 14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1) + oauth: 0.9.15 + openid-client: 5.6.5 + preact: 10.23.2 + preact-render-to-string: 5.2.6(preact@10.23.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uuid: 8.3.2 + + next-tick@1.1.0: {} + + next@14.2.5(@babel/core@7.24.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1): + dependencies: + '@next/env': 14.2.5 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001597 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.0)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 + '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.50.1 + sass: 1.71.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + next@14.2.5(@babel/core@7.26.9)(@opentelemetry/api@1.9.0)(@playwright/test@1.50.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.71.1): + dependencies: + '@next/env': 14.2.5 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001597 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.26.9)(babel-plugin-macros@3.1.0)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 + '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.50.1 + sass: 1.71.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + nim-container-manager@1.0.4: + dependencies: + dockerode: 4.0.4 + express: 4.21.2 + transitivePeerDependencies: + - supports-color + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + + node-abi@3.56.0: + dependencies: + semver: 7.7.1 + + node-abort-controller@3.1.1: {} + + node-addon-api@6.1.0: {} + + node-addon-api@7.1.0: {} + + node-addon-api@8.3.1: {} + + node-api-headers@1.1.0: {} + + node-cleanup@2.1.2: {} + + node-domexception@1.0.0: {} + + node-emoji@2.1.3: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + + node-ensure@0.0.0: {} + + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + + node-fetch-native@1.6.4: {} + + node-fetch@2.6.7(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-forge@1.3.1: {} + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.2 + optional: true + + node-gyp-build@4.8.1: {} + + node-gyp@8.4.1: + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 9.1.0 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.0 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.0 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-html-markdown@1.3.0: + dependencies: + node-html-parser: 6.1.12 + + node-html-parser@6.1.12: + dependencies: + css-select: 5.1.0 + he: 1.2.0 + + node-int64@0.4.0: {} + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + + node-releases@2.0.14: {} + + node-releases@2.0.18: {} + + node-releases@2.0.19: {} + + nodemon@2.0.22: + dependencies: + chokidar: 3.6.0 + debug: 3.2.7(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.1 + simple-update-notifier: 1.1.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + + nopt@1.0.10: + dependencies: + abbrev: 1.1.1 + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.1 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-package-data@5.0.0: + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.13.1 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@6.1.0: {} + + normalize-url@8.0.1: {} + + notion-md-crawler@1.0.0(encoding@0.1.13): + dependencies: + '@notionhq/client': 2.2.14(encoding@0.1.13) + md-utils-ts: 2.0.0 + transitivePeerDependencies: + - encoding + + notion-to-md@3.1.1(encoding@0.1.13): + dependencies: + markdown-table: 2.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + notistack@2.0.8(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@mui/material@5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@mui/material': 5.15.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + clsx: 1.2.1 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.2.65)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.2.65)(react@18.2.0))(@types/react@18.2.65)(react@18.2.0) + + now-and-later@2.0.1: + dependencies: + once: 1.4.0 + + npm-bundled@1.1.2: + dependencies: + npm-normalize-package-bin: 1.0.1 + + npm-bundled@3.0.0: + dependencies: + npm-normalize-package-bin: 3.0.1 + + npm-install-checks@4.0.0: + dependencies: + semver: 7.7.1 + + npm-install-checks@6.3.0: + dependencies: + semver: 7.7.1 + + npm-normalize-package-bin@1.0.1: {} + + npm-normalize-package-bin@2.0.0: {} + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@10.1.0: + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.7.1 + validate-npm-package-name: 5.0.0 + + npm-package-arg@8.1.5: + dependencies: + hosted-git-info: 4.1.0 + semver: 7.7.1 + validate-npm-package-name: 3.0.0 + + npm-packlist@3.0.0: + dependencies: + glob: 7.2.3 + ignore-walk: 4.0.1 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + npm-packlist@7.0.4: + dependencies: + ignore-walk: 6.0.4 + + npm-pick-manifest@6.1.1: + dependencies: + npm-install-checks: 4.0.0 + npm-normalize-package-bin: 1.0.1 + npm-package-arg: 8.1.5 + semver: 7.7.1 + + npm-pick-manifest@8.0.2: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 + semver: 7.7.1 + + npm-registry-fetch@12.0.2: + dependencies: + make-fetch-happen: 10.2.1 + minipass: 3.3.6 + minipass-fetch: 1.4.1 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 8.1.5 + transitivePeerDependencies: + - bluebird + - supports-color + + npm-registry-fetch@14.0.5: + dependencies: + make-fetch-happen: 11.1.1 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + + npm-run-path@1.0.0: + dependencies: + path-key: 1.0.0 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + 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 + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + num-sort@2.1.0: {} + + number-allocator@1.0.14: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + js-sdsl: 4.3.0 + transitivePeerDependencies: + - supports-color + + number-is-nan@1.0.1: {} + + nwsapi@2.2.7: {} + + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + + oauth-sign@0.9.0: {} + + oauth4webapi@2.11.1: {} + + oauth@0.10.0: {} + + oauth@0.9.15: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-hash@2.2.0: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.1: {} + + object-inspect@1.13.4: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object-treeify@1.1.33: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.entries@1.1.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + 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.getownpropertydescriptors@2.1.7: + dependencies: + array.prototype.reduce: 1.0.6 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + safe-array-concat: 1.1.3 + + object.groupby@1.0.2: + dependencies: + array.prototype.filter: 1.0.3 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + + object.hasown@1.1.3: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.5 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.reduce@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.values@1.1.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obliterator@1.6.1: {} + + obuf@1.1.2: {} + + oclif@3.17.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(encoding@0.1.13)(mem-fs@2.3.0)(typescript@5.5.2): + dependencies: + '@oclif/core': 2.15.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + '@oclif/plugin-help': 5.2.20(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + '@oclif/plugin-not-found': 2.4.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + '@oclif/plugin-warn-if-update-available': 2.1.1(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + async-retry: 1.3.3 + aws-sdk: 2.1575.0 + concurrently: 7.6.0 + debug: 4.3.4(supports-color@8.1.1) + find-yarn-workspace-root: 2.0.0 + fs-extra: 8.1.0 + github-slugger: 1.5.0 + got: 11.8.6 + lodash: 4.17.21 + normalize-package-data: 3.0.3 + semver: 7.7.1 + shelljs: 0.8.5 + tslib: 2.6.2 + yeoman-environment: 3.19.3 + yeoman-generator: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bluebird + - encoding + - mem-fs + - supports-color + - typescript + + ohash@1.1.3: {} + + oidc-token-hash@5.0.3: {} + + ollama@0.5.14: + dependencies: + whatwg-fetch: 3.6.20 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onnx-proto@4.0.4: + dependencies: + protobufjs: 7.4.0 + + onnxruntime-common@1.14.0: {} + + onnxruntime-node@1.14.0: + dependencies: + onnxruntime-common: 1.14.0 + optional: true + + onnxruntime-web@1.14.0: + dependencies: + flatbuffers: 1.12.0 + guid-typescript: 1.0.9 + long: 4.0.0 + onnx-proto: 4.0.4 + onnxruntime-common: 1.14.0 + platform: 1.3.6 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openai-chat-tokens@0.2.8: + dependencies: + js-tiktoken: 1.0.12 + + openai@4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4): + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + zod: 3.22.4 + transitivePeerDependencies: + - encoding + + openai@4.82.0(encoding@0.1.13)(ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2): + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + zod: 3.24.2 + transitivePeerDependencies: + - encoding + + openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.22.4): + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + zod: 3.22.4 + transitivePeerDependencies: + - encoding + + openai@4.82.0(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(zod@3.24.2): + dependencies: + '@types/node': 18.15.11 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + zod: 3.24.2 + transitivePeerDependencies: + - encoding + + openapi-types@12.1.3: {} + + openapi-typescript-fetch@1.1.3: {} + + openapi-typescript@6.7.6: + dependencies: + ansi-colors: 4.1.3 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + supports-color: 9.4.0 + undici: 5.28.4 + yargs-parser: 21.1.1 + + opener@1.5.2: {} + + openid-client@5.6.5: + dependencies: + jose: 4.15.9 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.0.3 + + option@0.2.4: {} + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + opts@2.0.2: {} + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ordered-read-streams@1.0.1: + dependencies: + readable-stream: 2.3.8 + + os-homedir@1.0.2: {} + + os-locale@1.4.0: + dependencies: + lcid: 1.0.0 + + os-tmpdir@1.0.2: {} + + ospath@1.2.2: {} + + ow@0.28.2: + dependencies: + '@sindresorhus/is': 4.6.0 + callsites: 3.1.0 + dot-prop: 6.0.1 + lodash.isequal: 4.5.0 + vali-date: 1.0.0 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-cancelable@2.1.1: {} + + p-cancelable@3.0.0: {} + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-throttle@4.1.1: {} + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-transform@1.3.0: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + p-queue: 6.6.2 + transitivePeerDependencies: + - supports-color + + p-try@2.2.0: {} + + pac-proxy-agent@7.0.1: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.0 + debug: 4.4.0(supports-color@5.5.0) + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json@8.1.1: + dependencies: + got: 12.6.1 + registry-auth-token: 5.0.2 + registry-url: 6.0.1 + semver: 7.7.1 + + packet-reader@1.0.0: {} + + pacote@12.0.3: + dependencies: + '@npmcli/git': 2.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/promise-spawn': 1.3.2 + '@npmcli/run-script': 2.0.0 + cacache: 15.3.0 + chownr: 2.0.0 + fs-minipass: 2.1.0 + infer-owner: 1.0.4 + minipass: 3.3.6 + mkdirp: 1.0.4 + npm-package-arg: 8.1.5 + npm-packlist: 3.0.0 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + promise-retry: 2.0.1 + read-package-json-fast: 2.0.3 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + + pacote@15.2.0: + dependencies: + '@npmcli/git': 4.1.0 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 6.0.2 + '@npmcli/run-script': 6.0.2 + cacache: 17.1.4 + fs-minipass: 3.0.3 + minipass: 5.0.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-pick-manifest: 8.0.2 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + + pako@1.0.11: {} + + papaparse@5.4.1: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-conflict-json@2.0.2: + dependencies: + json-parse-even-better-errors: 2.3.1 + just-diff: 5.2.0 + just-diff-apply: 5.5.0 + + parse-entities@1.2.2: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + + parse-entities@2.0.0: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + + parse-entities@4.0.1: + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse-numeric-range@1.3.0: {} + + parse-passwd@1.0.0: {} + + parse-srcset@1.0.2: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5-htmlparser2-tree-adapter@7.0.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 - path-is-absolute@1.0.1: {} + parse5@5.1.1: {} - path-is-inside@1.0.2: {} + parse5@6.0.1: {} - path-key@1.0.0: {} + parse5@7.1.2: + dependencies: + entities: 4.5.0 - path-key@3.1.1: {} + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 - path-key@4.0.0: {} + parseurl@1.3.3: {} - path-parse@1.0.7: {} + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 - path-root-regex@0.1.2: {} + pascalcase@0.1.1: {} - path-root@0.1.1: - dependencies: - path-root-regex: 0.1.2 + passport-google-oauth20@2.0.0: + dependencies: + passport-oauth2: 1.8.0 - path-scurry@1.10.1: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + passport-oauth2@1.8.0: + dependencies: + base64url: 3.0.1 + oauth: 0.10.0 + passport-strategy: 1.0.0 + uid2: 0.0.4 + utils-merge: 1.0.1 - path-to-regexp@0.1.7: {} + passport-strategy@1.0.0: {} - path-to-regexp@1.8.0: - dependencies: - isarray: 0.0.1 + passport@0.7.0: + dependencies: + passport-strategy: 1.0.0 + pause: 0.0.1 + utils-merge: 1.0.1 - path-to-regexp@2.2.1: {} + password-prompt@1.1.3: + dependencies: + ansi-escapes: 4.3.2 + cross-spawn: 7.0.6 - path-type@1.1.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 + path-browserify@1.0.1: {} - path-type@4.0.0: {} + path-exists@2.1.0: + dependencies: + pinkie-promise: 2.0.1 - path2d-polyfill@2.0.1: - optional: true + path-exists@3.0.0: {} - pathe@1.1.2: {} + path-exists@4.0.0: {} - pause-stream@0.0.11: - dependencies: - through: 2.3.8 + path-exists@5.0.0: {} - pause@0.0.1: {} + path-is-absolute@1.0.1: {} - pdf-parse@1.1.1: - dependencies: - debug: 3.2.7(supports-color@5.5.0) - node-ensure: 0.0.0 - transitivePeerDependencies: - - supports-color + path-is-inside@1.0.2: {} - pdf2json@3.0.5: {} + path-key@1.0.0: {} - pdfjs-dist@3.11.174(encoding@0.1.13): - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - path2d-polyfill: 2.0.1 - transitivePeerDependencies: - - encoding - - supports-color + path-key@3.1.1: {} - peberminta@0.9.0: {} + path-key@4.0.0: {} - pend@1.2.0: {} + path-parse@1.0.7: {} - perfect-scrollbar@1.5.5: {} + path-root-regex@0.1.2: {} - performance-now@2.1.0: {} + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 + path-scurry@1.10.1: + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 - pg-cloudflare@1.1.1: - optional: true + path-to-regexp@0.1.12: {} - pg-connection-string@2.6.2: {} + path-type@1.1.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + pinkie-promise: 2.0.1 - pg-connection-string@2.6.4: {} + path-type@4.0.0: {} - pg-int8@1.0.1: {} + path2d-polyfill@2.0.1: + optional: true - pg-numeric@1.0.2: {} + pathe@1.1.2: {} - pg-pool@3.6.1(pg@8.11.3): - dependencies: - pg: 8.11.3 + pause-stream@0.0.11: + dependencies: + through: 2.3.8 - pg-pool@3.6.2(pg@8.11.5): - dependencies: - pg: 8.11.5 + pause@0.0.1: {} - pg-protocol@1.6.0: {} + pdf-parse@1.1.1: + dependencies: + debug: 3.2.7(supports-color@5.5.0) + node-ensure: 0.0.0 + transitivePeerDependencies: + - supports-color - pg-protocol@1.6.1: {} + pdf2json@3.0.5: {} - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 + pdfjs-dist@3.11.174(encoding@0.1.13): + optionalDependencies: + canvas: 2.11.2(encoding@0.1.13) + path2d-polyfill: 2.0.1 + transitivePeerDependencies: + - encoding + - supports-color - pg-types@4.0.2: - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.2 - postgres-bytea: 3.0.0 - postgres-date: 2.1.0 - postgres-interval: 3.0.0 - postgres-range: 1.1.4 + peberminta@0.9.0: {} - pg@8.11.3: - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 + peek-readable@4.1.0: {} - pg@8.11.5: - dependencies: - pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) - pg-protocol: 1.6.1 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 + pend@1.2.0: {} - pgpass@1.0.5: - dependencies: - split2: 4.2.0 + perfect-scrollbar@1.5.5: {} - pgvector@0.1.8: {} + performance-now@2.1.0: {} - picocolors@0.2.1: {} + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 - picocolors@1.0.0: {} + pg-cloudflare@1.1.1: + optional: true - picocolors@1.0.1: {} + pg-connection-string@2.6.2: {} - picomatch@2.3.1: {} + pg-connection-string@2.6.4: {} - picomatch@3.0.1: {} + pg-connection-string@2.7.0: {} - pidtree@0.6.0: {} + pg-int8@1.0.1: {} - pify@2.3.0: {} + pg-numeric@1.0.2: {} - pify@4.0.1: {} + pg-pool@3.6.1(pg@8.11.3): + dependencies: + pg: 8.11.3 - pify@5.0.0: {} + pg-pool@3.6.2(pg@8.11.5): + dependencies: + pg: 8.11.5 - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 + pg-pool@3.7.1(pg@8.13.3): + dependencies: + pg: 8.13.3 - pinkie@2.0.4: {} + pg-protocol@1.6.0: {} - pirates@4.0.6: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 + pg-protocol@1.6.1: {} - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - - pkg-store@0.2.2: - dependencies: - cache-base: 0.8.5 - kind-of: 3.2.2 - lazy-cache: 1.0.4 - union-value: 0.2.4 - write-json: 0.2.2 - - pkg-up@3.1.0: - dependencies: - find-up: 3.0.0 - - platform@1.3.6: {} - - playwright-core@1.42.1: {} - - playwright@1.42.1: - dependencies: - playwright-core: 1.42.1 - optionalDependencies: - fsevents: 2.3.2 - - popmotion@9.3.6: - dependencies: - framesync: 5.3.0 - hey-listen: 1.0.8 - style-value-types: 4.1.4 - tslib: 2.6.2 - - portkey-ai@0.1.16: - dependencies: - agentkeepalive: 4.5.0 - - posix-character-classes@0.1.1: {} - - possible-typed-array-names@1.0.0: {} - - postcss-attribute-case-insensitive@5.0.2(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-browser-comments@4.0.0(browserslist@4.23.0)(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.21 - - postcss-calc@8.2.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - - postcss-calc@9.0.1(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 + pg-protocol@1.7.1: {} - postcss-clamp@4.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 - postcss-color-functional-notation@4.2.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-color-hex-alpha@8.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-color-rebeccapurple@7.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-colormin@5.3.1(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-colormin@6.1.0(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-convert-values@5.1.3(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-convert-values@6.1.0(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-custom-media@8.0.2(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-custom-properties@12.1.11(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-custom-selectors@6.0.3(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-dir-pseudo-class@6.0.5(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-discard-comments@5.1.2(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-discard-comments@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-discard-duplicates@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-discard-duplicates@6.0.3(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-discard-empty@5.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-discard-empty@6.0.3(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-discard-overridden@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-discard-overridden@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-discard-unused@6.0.5(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.2 - - postcss-double-position-gradients@3.1.2(postcss@8.4.21): - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-env-function@4.0.6(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-flexbugs-fixes@5.0.2(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-focus-visible@6.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-focus-within@5.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-font-variant@5.0.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-gap-properties@3.0.5(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-image-set-function@4.0.7(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-import@14.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-initial@4.0.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-js@4.0.1(postcss@8.4.21): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.21 - - postcss-lab-function@4.2.1(postcss@8.4.21): - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.21 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3) - - postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.21 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - - postcss-load-config@3.1.4(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5)): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.39 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5) - - postcss-loader@6.2.1(postcss@8.4.21)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - cosmiconfig: 7.1.0 - klona: 2.0.6 - postcss: 8.4.21 - semver: 7.6.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - postcss-loader@7.3.4(postcss@8.4.39)(typescript@5.5.2)(webpack@5.90.3): - dependencies: - cosmiconfig: 8.3.6(typescript@5.5.2) - jiti: 1.21.0 - postcss: 8.4.39 - semver: 7.6.0 - webpack: 5.90.3 - transitivePeerDependencies: - - typescript - - postcss-logical@5.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-media-minmax@5.0.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-merge-idents@6.0.3(postcss@8.4.39): - dependencies: - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-merge-longhand@5.1.7(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.21) - - postcss-merge-longhand@6.0.5(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - stylehacks: 6.1.1(postcss@8.4.39) - - postcss-merge-rules@5.1.4(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-merge-rules@6.1.1(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-minify-font-values@6.1.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@5.1.1(postcss@8.4.21): - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@6.0.3(postcss@8.4.39): - dependencies: - colord: 2.9.3 - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-minify-params@5.1.4(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-minify-params@6.1.0(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@5.2.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-minify-selectors@6.0.4(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.2 - - postcss-modules-extract-imports@3.0.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-modules-extract-imports@3.0.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-modules-local-by-default@4.0.4(postcss@8.4.21): - dependencies: - icss-utils: 5.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - - postcss-modules-local-by-default@4.0.4(postcss@8.4.39): - dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-modules-scope@3.1.1(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.0.15 - - postcss-modules-values@4.0.0(postcss@8.4.21): - dependencies: - icss-utils: 5.1.0(postcss@8.4.21) - postcss: 8.4.21 - - postcss-modules-values@4.0.0(postcss@8.4.39): - dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 - - postcss-modules@4.3.1(postcss@8.4.21): - dependencies: - generic-names: 4.0.0 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - postcss: 8.4.21 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.21) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.21) - postcss-modules-scope: 3.1.1(postcss@8.4.21) - postcss-modules-values: 4.0.0(postcss@8.4.21) - string-hash: 1.1.3 - - postcss-nested@6.0.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-nesting@10.2.0(postcss@8.4.21): - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-normalize-charset@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-normalize-charset@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss-normalize-display-values@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-display-values@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@5.1.1(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@6.1.0(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@5.1.0(postcss@8.4.21): - dependencies: - normalize-url: 6.1.0 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-normalize@10.0.1(browserslist@4.23.0)(postcss@8.4.21): - dependencies: - '@csstools/normalize.css': 12.1.1 - browserslist: 4.23.0 - postcss: 8.4.21 - postcss-browser-comments: 4.0.0(browserslist@4.23.0)(postcss@8.4.21) - sanitize.css: 13.0.0 - - postcss-opacity-percentage@1.1.3(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-ordered-values@5.1.3(postcss@8.4.21): - dependencies: - cssnano-utils: 3.1.0(postcss@8.4.21) - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@6.0.2(postcss@8.4.39): - dependencies: - cssnano-utils: 4.0.2(postcss@8.4.39) - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-overflow-shorthand@3.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-page-break@3.0.4(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-place@7.0.5(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-preset-env@7.8.3(postcss@8.4.21): - dependencies: - '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.21) - '@csstools/postcss-color-function': 1.1.1(postcss@8.4.21) - '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.21) - '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.21) - '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.21) - '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.21) - '@csstools/postcss-nested-calc': 1.0.0(postcss@8.4.21) - '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.21) - '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.21) - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) - '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.21) - '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.4.21) - '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.21) - '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.21) - autoprefixer: 10.4.14(postcss@8.4.21) - browserslist: 4.23.0 - css-blank-pseudo: 3.0.3(postcss@8.4.21) - css-has-pseudo: 3.0.4(postcss@8.4.21) - css-prefers-color-scheme: 6.0.3(postcss@8.4.21) - cssdb: 7.11.2 - postcss: 8.4.21 - postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.21) - postcss-clamp: 4.1.0(postcss@8.4.21) - postcss-color-functional-notation: 4.2.4(postcss@8.4.21) - postcss-color-hex-alpha: 8.0.4(postcss@8.4.21) - postcss-color-rebeccapurple: 7.1.1(postcss@8.4.21) - postcss-custom-media: 8.0.2(postcss@8.4.21) - postcss-custom-properties: 12.1.11(postcss@8.4.21) - postcss-custom-selectors: 6.0.3(postcss@8.4.21) - postcss-dir-pseudo-class: 6.0.5(postcss@8.4.21) - postcss-double-position-gradients: 3.1.2(postcss@8.4.21) - postcss-env-function: 4.0.6(postcss@8.4.21) - postcss-focus-visible: 6.0.4(postcss@8.4.21) - postcss-focus-within: 5.0.4(postcss@8.4.21) - postcss-font-variant: 5.0.0(postcss@8.4.21) - postcss-gap-properties: 3.0.5(postcss@8.4.21) - postcss-image-set-function: 4.0.7(postcss@8.4.21) - postcss-initial: 4.0.1(postcss@8.4.21) - postcss-lab-function: 4.2.1(postcss@8.4.21) - postcss-logical: 5.0.4(postcss@8.4.21) - postcss-media-minmax: 5.0.0(postcss@8.4.21) - postcss-nesting: 10.2.0(postcss@8.4.21) - postcss-opacity-percentage: 1.1.3(postcss@8.4.21) - postcss-overflow-shorthand: 3.0.4(postcss@8.4.21) - postcss-page-break: 3.0.4(postcss@8.4.21) - postcss-place: 7.0.5(postcss@8.4.21) - postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.21) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.21) - postcss-selector-not: 6.0.1(postcss@8.4.21) - postcss-value-parser: 4.2.0 - - postcss-pseudo-class-any-link@7.1.6(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-reduce-idents@6.0.3(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@5.1.2(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.21 - - postcss-reduce-initial@6.1.0(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.39 - - postcss-reduce-transforms@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - - postcss-reduce-transforms@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - - postcss-selector-not@6.0.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.0.15: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-sort-media-queries@5.2.0(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - sort-css-media-queries: 2.2.0 - - postcss-svgo@5.1.0(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - - postcss-svgo@6.0.3(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@5.1.1(postcss@8.4.21): - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - postcss-unique-selectors@6.0.4(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss-zindex@6.0.2(postcss@8.4.39): - dependencies: - postcss: 8.4.39 - - postcss@7.0.39: - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - - postcss@8.4.21: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.39: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postgres-array@2.0.0: {} - - postgres-array@3.0.2: {} - - postgres-bytea@1.0.0: {} - - postgres-bytea@3.0.0: - dependencies: - obuf: 1.1.2 - - postgres-date@1.0.7: {} - - postgres-date@2.1.0: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - postgres-interval@3.0.0: {} - - postgres-range@1.1.4: {} - - posthog-node@3.6.3: - dependencies: - axios: 1.6.2(debug@4.3.4) - rusha: 0.8.14 - transitivePeerDependencies: - - debug - - preact-render-to-string@5.2.6(preact@10.23.2): - dependencies: - preact: 10.23.2 - pretty-format: 3.8.0 - - preact@10.23.2: {} - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.56.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - - preferred-pm@3.1.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - - prelude-ls@1.1.2: {} - - prelude-ls@1.2.1: {} - - preserve@0.2.0: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@2.8.8: {} + pg-types@4.0.2: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 - prettier@3.2.5: {} + pg@8.11.3: + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.6.2 + pg-pool: 3.6.1(pg@8.11.3) + pg-protocol: 1.6.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 - pretty-bytes@5.6.0: {} + pg@8.11.5: + dependencies: + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.11.5) + pg-protocol: 1.6.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 - pretty-bytes@6.1.1: {} + pg@8.13.3: + dependencies: + pg-connection-string: 2.7.0 + pg-pool: 3.7.1(pg@8.13.3) + pg-protocol: 1.7.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 - pretty-error@4.0.0: - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 + pgpass@1.0.5: + dependencies: + split2: 4.2.0 - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 + pgvector@0.1.8: {} - pretty-format@28.1.3: - dependencies: - '@jest/schemas': 28.1.3 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 18.2.0 + picocolors@0.2.1: {} - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 + picocolors@1.0.0: {} - pretty-format@3.8.0: {} + picocolors@1.0.1: {} - pretty-hrtime@1.0.3: {} + picocolors@1.1.1: {} - pretty-quick@3.3.1(prettier@2.8.8): - dependencies: - execa: 4.1.0 - find-up: 4.1.0 - ignore: 5.3.1 - mri: 1.2.0 - picocolors: 1.0.0 - picomatch: 3.0.1 - prettier: 2.8.8 - tslib: 2.6.2 + picomatch@2.3.1: {} - pretty-quick@3.3.1(prettier@3.2.5): - dependencies: - execa: 4.1.0 - find-up: 4.1.0 - ignore: 5.3.1 - mri: 1.2.0 - picocolors: 1.0.0 - picomatch: 3.0.1 - prettier: 3.2.5 - tslib: 2.6.2 + picomatch@3.0.1: {} - pretty-time@0.2.0: - dependencies: - is-number: 2.1.0 - nanoseconds: 0.1.0 + pidtree@0.6.0: {} - pretty-time@1.1.0: {} + pify@2.3.0: {} - prism-react-renderer@1.3.5(react@18.2.0): - dependencies: - react: 18.2.0 - - prism-react-renderer@2.4.0(react@18.2.0): - dependencies: - '@types/prismjs': 1.26.4 - clsx: 2.1.0 - react: 18.2.0 - - prisma-json-types-generator@3.0.4(prisma@5.18.0)(typescript@4.9.5): - dependencies: - '@prisma/generator-helper': 5.9.1 - prisma: 5.18.0 - tslib: 2.6.2 - typescript: 4.9.5 - - prisma@5.18.0: - dependencies: - '@prisma/engines': 5.18.0 - - prismjs@1.17.1: - optionalDependencies: - clipboard: 2.0.11 - - prismjs@1.27.0: {} - - prismjs@1.29.0: {} - - private@0.1.8: {} - - proc-log@1.0.0: {} - - proc-log@3.0.0: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - progress@2.0.3: {} - - project-name@0.2.6: - dependencies: - find-pkg: 0.1.2 - git-repo-name: 0.6.0 - minimist: 1.2.8 - - promise-all-reject-late@1.0.1: {} - - promise-call-limit@1.0.2: {} - - promise-inflight@1.0.1: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - promise.series@0.2.0: {} - - promise@7.3.1: - dependencies: - asap: 2.0.6 - - promise@8.3.0: - dependencies: - asap: 2.0.6 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-expr@2.0.6: {} - - property-information@5.6.0: - dependencies: - xtend: 4.0.2 - - property-information@6.4.1: {} - - proto-list@1.2.4: {} - - proto3-json-serializer@2.0.2: - dependencies: - protobufjs: 7.3.2 - - protobufjs@6.11.4: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 18.15.11 - long: 4.0.0 - - protobufjs@7.2.4: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 18.15.11 - long: 5.2.3 - - protobufjs@7.2.6: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 18.15.11 - long: 5.2.3 - - protobufjs@7.3.2: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 18.15.11 - long: 5.2.3 - - protoc-gen-ts@0.8.7: {} - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-agent@6.3.0: - dependencies: - agent-base: 7.1.0 - debug: 4.3.6(supports-color@5.5.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - - proxy-from-env@1.0.0: {} - - proxy-from-env@1.1.0: {} - - ps-tree@1.2.0: - dependencies: - event-stream: 3.3.4 - - pseudomap@1.0.2: {} - - psl@1.9.0: {} - - pstree.remy@1.1.8: {} - - pump@2.0.1: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - - punycode@1.3.2: {} - - punycode@2.3.1: {} - - pupa@3.1.0: - dependencies: - escape-goat: 4.0.0 - - puppeteer-core@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4): - dependencies: - '@puppeteer/browsers': 0.5.0(typescript@4.9.5) - chromium-bidi: 0.4.7(devtools-protocol@0.0.1107588) - cross-fetch: 3.1.5(encoding@0.1.13) - debug: 4.3.4(supports-color@8.1.1) - devtools-protocol: 0.0.1107588 - extract-zip: 2.0.1 - https-proxy-agent: 5.0.1 - proxy-from-env: 1.1.0 - tar-fs: 2.1.1 - unbzip2-stream: 1.4.3 - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - puppeteer-core@20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4): - dependencies: - '@puppeteer/browsers': 1.4.6(typescript@5.5.2) - chromium-bidi: 0.4.16(devtools-protocol@0.0.1147663) - cross-fetch: 4.0.0(encoding@0.1.13) - debug: 4.3.4(supports-color@8.1.1) - devtools-protocol: 0.0.1147663 - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - puppeteer@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4): - dependencies: - '@puppeteer/browsers': 0.5.0(typescript@4.9.5) - cosmiconfig: 8.1.3 - https-proxy-agent: 5.0.1 - progress: 2.0.3 - proxy-from-env: 1.1.0 - puppeteer-core: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - - puppeteer@20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4): - dependencies: - '@puppeteer/browsers': 1.4.6(typescript@5.5.2) - cosmiconfig: 8.2.0 - puppeteer-core: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - - pure-color@1.3.0: {} - - pure-rand@6.1.0: {} - - pyodide@0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - base-64: 1.0.0 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - q@1.5.1: {} - - qs@6.10.4: - dependencies: - side-channel: 1.0.6 - - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - - qs@6.11.2: - dependencies: - side-channel: 1.0.6 - - qs@6.12.1: - dependencies: - side-channel: 1.0.6 - - qs@6.5.3: {} - - query-string@8.2.0: - dependencies: - decode-uri-component: 0.4.1 - filter-obj: 5.1.0 - split-on-first: 3.0.0 - - querystring@0.2.0: {} - - querystringify@2.2.0: {} - - question-cache@0.4.0: - dependencies: - arr-flatten: 1.1.0 - arr-union: 3.1.0 - async: 1.5.2 - debug: 2.6.9 - define-property: 0.2.5 - get-value: 2.0.6 - has-value: 0.3.1 - inquirer2: 0.1.1 - is-answer: 0.1.1 - isobject: 2.1.0 - lazy-cache: 1.0.4 - mixin-deep: 1.3.2 - omit-empty: 0.3.6 - option-cache: 3.5.0 - os-homedir: 1.0.2 - project-name: 0.2.6 - set-value: 0.3.3 - to-choices: 0.2.0 - use: 1.1.2 - transitivePeerDependencies: - - supports-color - - question-cache@0.5.1: - dependencies: - arr-flatten: 1.1.0 - arr-union: 3.1.0 - async-each-series: 1.1.0 - debug: 2.6.9 - define-property: 0.2.5 - get-value: 2.0.6 - has-value: 0.3.1 - inquirer2: 0.1.1 - is-answer: 0.1.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - omit-empty: 0.4.1 - option-cache: 3.5.0 - os-homedir: 1.0.2 - project-name: 0.2.6 - set-value: 0.3.3 - to-choices: 0.2.0 - use: 2.0.2 - transitivePeerDependencies: - - supports-color - - question-store@0.11.1: - dependencies: - common-config: 0.1.1 - data-store: 0.16.1 - debug: 2.6.9 - is-answer: 0.1.1 - lazy-cache: 2.0.2 - project-name: 0.2.6 - question-cache: 0.5.1 - transitivePeerDependencies: - - supports-color - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: {} - - queue@6.0.2: - dependencies: - inherits: 2.0.4 - - quick-lru@5.1.1: {} - - radix3@1.1.2: {} - - raf@3.4.1: - dependencies: - performance-now: 2.1.0 - - rake-modified@1.0.8: - dependencies: - fs-promise: 2.0.3 - lodash: 4.17.21 - - random-bytes@1.0.0: {} - - randomatic@3.1.1: - dependencies: - is-number: 4.0.0 - kind-of: 6.0.3 - math-random: 1.0.4 - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - range-parser@1.2.0: {} - - range-parser@1.2.1: {} - - ranges-apply@7.0.16: - dependencies: - ranges-merge: 9.0.15 - tiny-invariant: 1.3.3 - - ranges-merge@9.0.15: - dependencies: - ranges-push: 7.0.15 - ranges-sort: 6.0.11 - - ranges-push@7.0.15: - dependencies: - codsen-utils: 1.6.4 - ranges-sort: 6.0.11 - string-collapse-leading-whitespace: 7.0.7 - string-trim-spaces-only: 5.0.10 - - ranges-sort@6.0.11: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - react-app-polyfill@3.0.0: - dependencies: - core-js: 3.36.0 - object-assign: 4.1.1 - promise: 8.3.0 - raf: 3.4.1 - regenerator-runtime: 0.13.11 - whatwg-fetch: 3.6.20 - - react-base16-styling@0.6.0: - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - - react-code-blocks@0.0.9-0(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - react-syntax-highlighter: 12.2.1(react@18.2.0) - styled-components: 5.3.11(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@babel/core' - - react-dom - - react-is - - react-color@2.19.3(react@18.2.0): - dependencies: - '@icons/material': 0.2.4(react@18.2.0) - lodash: 4.17.21 - lodash-es: 4.17.21 - material-colors: 1.2.6 - prop-types: 15.8.1 - react: 18.2.0 - reactcss: 1.2.3(react@18.2.0) - tinycolor2: 1.6.0 - - react-datepicker@4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@popperjs/core': 2.11.8 - classnames: 2.5.1 - date-fns: 2.30.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-onclickoutside: 6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - - react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@babel/code-frame': 7.23.5 - address: 1.2.2 - browserslist: 4.23.0 - chalk: 4.1.2 - cross-spawn: 7.0.3 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.21 - is-root: 2.1.0 - loader-utils: 3.2.1 - open: 8.4.2 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.3 - shell-quote: 1.8.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3): - dependencies: - '@babel/code-frame': 7.23.5 - address: 1.2.2 - browserslist: 4.23.0 - chalk: 4.1.2 - cross-spawn: 7.0.3 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3) - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.21 - is-root: 2.1.0 - loader-utils: 3.2.1 - open: 8.4.2 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.3 - shell-quote: 1.8.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - webpack: 5.90.3 - optionalDependencies: - typescript: 5.5.2 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - react-device-detect@1.17.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ua-parser-js: 0.7.37 - - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - react-draggable@4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-error-overlay@6.0.11: {} - - react-fast-compare@2.0.4: {} - - react-fast-compare@3.2.2: {} - - react-frame-component@5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-helmet-async@1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - - react-helmet-async@2.0.5(react@18.2.0): - dependencies: - invariant: 2.2.4 - react: 18.2.0 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - - react-hook-form@7.52.2(react@18.2.0): - dependencies: - react: 18.2.0 - - react-inspector@6.0.2(react@18.2.0): - dependencies: - react: 18.2.0 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react-is@18.2.0: {} - - react-json-view-lite@1.5.0(react@18.2.0): - dependencies: - react: 18.2.0 - - react-lifecycles-compat@3.0.4: {} - - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.2.0))(webpack@5.90.3): - dependencies: - '@babel/runtime': 7.24.0 - react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' - webpack: 5.90.3 - - react-markdown@8.0.7(@types/react@18.2.65)(react@18.2.0): - dependencies: - '@types/hast': 2.3.10 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.65 - '@types/unist': 2.0.10 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 2.0.1 - prop-types: 15.8.1 - property-information: 6.4.1 - react: 18.2.0 - react-is: 18.2.0 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unified: 10.1.2 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color - - react-onclickoutside@6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-perfect-scrollbar@1.5.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - perfect-scrollbar: 1.5.5 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@popperjs/core': 2.11.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - warning: 4.0.3 - - react-property@2.0.0: {} - - react-redux@8.1.3(@types/react-dom@18.2.21)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1): - dependencies: - '@babel/runtime': 7.24.0 - '@types/hoist-non-react-statics': 3.3.5 - '@types/use-sync-external-store': 0.0.3 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-is: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - '@types/react-dom': 18.2.21 - react-dom: 18.2.0(react@18.2.0) - redux: 4.2.1 - - react-refresh@0.11.0: {} - - react-refresh@0.14.0: {} - - react-router-config@5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - react-router: 5.3.4(react@18.2.0) - - react-router-dom@5.3.4(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - history: 4.10.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.2.0 - react-router: 5.3.4(react@18.2.0) - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - - react-router-dom@6.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - history: 5.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.3.0(react@18.2.0) - - react-router@5.3.4(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - history: 4.10.1 - hoist-non-react-statics: 3.3.2 - loose-envify: 1.4.0 - path-to-regexp: 1.8.0 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 16.13.1 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - - react-router@6.3.0(react@18.2.0): - dependencies: - history: 5.3.0 - react: 18.2.0 - - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2))(type-fest@4.12.0)(typescript@5.5.2): - dependencies: - '@babel/core': 7.24.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.11.0)(type-fest@4.12.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - '@svgr/webpack': 5.5.0 - babel-jest: 27.5.1(@babel/core@7.24.0) - babel-loader: 8.3.0(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - babel-plugin-named-asset-import: 0.3.8(@babel/core@7.24.0) - babel-preset-react-app: 10.0.1 - bfj: 7.1.0 - browserslist: 4.23.0 - camelcase: 6.3.0 - case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.10.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - css-minimizer-webpack-plugin: 3.4.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - dotenv: 10.0.0 - dotenv-expand: 5.1.0 - eslint: 8.57.0 - eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.0))(eslint@8.57.0)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2) - eslint-webpack-plugin: 3.2.0(eslint@8.57.0)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - file-loader: 6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - fs-extra: 10.1.0 - html-webpack-plugin: 5.6.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - identity-obj-proxy: 3.0.0 - jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - jest-resolve: 27.5.1 - jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2))) - mini-css-extract-plugin: 2.8.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - postcss: 8.4.21 - postcss-flexbugs-fixes: 5.0.2(postcss@8.4.21) - postcss-loader: 6.2.1(postcss@8.4.21)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - postcss-normalize: 10.0.1(browserslist@4.23.0)(postcss@8.4.21) - postcss-preset-env: 7.8.3(postcss@8.4.21) - prompts: 2.4.2 - react: 18.2.0 - react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - react-refresh: 0.11.0 - resolve: 1.22.8 - resolve-url-loader: 4.0.0 - sass-loader: 12.6.0(sass@1.71.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - semver: 7.6.0 - source-map-loader: 3.0.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - style-loader: 3.3.4(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - webpack-manifest-plugin: 4.1.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - optionalDependencies: - fsevents: 2.3.3 - typescript: 5.5.2 - transitivePeerDependencies: - - '@babel/plugin-syntax-flow' - - '@babel/plugin-transform-react-jsx' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@types/babel__core' - - '@types/webpack' - - bufferutil - - canvas - - clean-css - - csso - - debug - - esbuild - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - fibers - - node-notifier - - node-sass - - rework - - rework-visit - - sass - - sass-embedded - - sockjs-client - - supports-color - - ts-node - - type-fest - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-hot-middleware - - webpack-plugin-serve - - react-syntax-highlighter@12.2.1(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - highlight.js: 9.15.10 - lowlight: 1.12.1 - prismjs: 1.29.0 - react: 18.2.0 - refractor: 2.10.1 - - react-syntax-highlighter@15.5.0(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - highlight.js: 10.7.3 - lowlight: 1.20.0 - prismjs: 1.29.0 - react: 18.2.0 - refractor: 3.6.0 - - react-textarea-autosize@8.5.3(@types/react@18.2.65)(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.65)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-window@1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - memoize-one: 5.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - reactcss@1.2.3(react@18.2.0): - dependencies: - lodash: 4.17.21 - react: 18.2.0 - - reactflow@11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@reactflow/background': 11.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@reactflow/controls': 11.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@reactflow/minimap': 11.7.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@reactflow/node-resizer': 2.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@reactflow/node-toolbar': 1.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - read-cmd-shim@3.0.1: {} - - read-file@0.2.0: {} - - read-package-json-fast@2.0.3: - dependencies: - json-parse-even-better-errors: 2.3.1 - npm-normalize-package-bin: 1.0.1 - - read-package-json-fast@3.0.2: - dependencies: - json-parse-even-better-errors: 3.0.1 - npm-normalize-package-bin: 3.0.1 - - read-package-json@6.0.4: - dependencies: - glob: 10.3.10 - json-parse-even-better-errors: 3.0.1 - normalize-package-data: 5.0.0 - npm-normalize-package-bin: 3.0.1 - - read-pkg-up@1.0.1: - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - readable-stream@1.0.34: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - 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: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdir-scoped-modules@1.1.0: - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.11 - once: 1.4.0 - - readdirp@2.2.1: - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10 - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - reading-time@1.5.0: {} - - readline2@1.0.1: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - mute-stream: 0.0.5 - - readline@1.3.0: {} - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - rechoir@0.8.0: - dependencies: - resolve: 1.22.8 - - recursive-readdir@2.2.3: - dependencies: - minimatch: 3.1.2 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - redeyed@2.1.1: - dependencies: - esprima: 4.0.1 - - redis-errors@1.2.0: {} - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - - redis@4.6.13: - dependencies: - '@redis/bloom': 1.2.0(@redis/client@1.5.14) - '@redis/client': 1.5.14 - '@redis/graph': 1.1.1(@redis/client@1.5.14) - '@redis/json': 1.0.6(@redis/client@1.5.14) - '@redis/search': 1.1.6(@redis/client@1.5.14) - '@redis/time-series': 1.0.5(@redis/client@1.5.14) - - reduce-object@0.1.3: - dependencies: - for-own: 0.1.5 - - redux@4.2.1: - dependencies: - '@babel/runtime': 7.24.0 - - reflect-metadata@0.1.14: {} - - reflect-metadata@0.2.1: {} - - reflect.getprototypeof@1.0.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - - refractor@2.10.1: - dependencies: - hastscript: 5.1.2 - parse-entities: 1.2.2 - prismjs: 1.17.1 - - refractor@3.6.0: - dependencies: - hastscript: 6.0.0 - parse-entities: 2.0.0 - prismjs: 1.27.0 - - reftools@1.1.9: {} - - regenerate-unicode-properties@10.1.1: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.11.1: {} - - regenerator-runtime@0.13.11: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.24.0 - - regex-cache@0.4.4: - dependencies: - is-equal-shallow: 0.1.3 - - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - - regex-parser@2.3.0: {} - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpp@3.2.0: {} - - regexpu-core@5.3.2: - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - - registry-auth-token@5.0.2: - dependencies: - '@pnpm/npm-conf': 2.3.1 - - registry-url@6.0.1: - dependencies: - rc: 1.2.8 - - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - - rehype-mathjax@4.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): - dependencies: - '@types/hast': 2.3.10 - '@types/mathjax': 0.0.37 - hast-util-from-dom: 4.2.0 - hast-util-to-text: 3.1.2 - jsdom: 20.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) - mathjax-full: 3.2.2 - unified: 10.1.2 - unist-util-visit: 4.1.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 - vfile: 6.0.1 - - reinterval@1.1.0: {} - - relateurl@0.2.7: {} - - relative@3.0.2: - dependencies: - isobject: 2.1.0 - - remark-directive@3.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.1 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-emoji@4.0.1: - dependencies: - '@types/mdast': 4.0.3 - emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.1 - node-emoji: 2.1.3 - unified: 11.0.5 - - remark-frontmatter@5.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-frontmatter: 2.0.1 - micromark-extension-frontmatter: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-gfm@1.0.0: - dependencies: - mdast-util-gfm: 0.1.2 - micromark-extension-gfm: 0.3.3 - transitivePeerDependencies: - - supports-color - - remark-gfm@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-math@5.1.1: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-math: 2.0.2 - micromark-extension-math: 2.1.2 - unified: 10.1.2 - - remark-mdx@3.0.1: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@10.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.1 - micromark-util-types: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-parse@9.0.0: - dependencies: - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@10.1.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - - remark-rehype@11.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 - unified: 11.0.5 - vfile: 6.0.1 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.3 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.5 - - remote-origin-url@0.5.3: - dependencies: - parse-git-config: 1.1.1 - - remove-bom-buffer@3.0.0: - dependencies: - is-buffer: 1.1.6 - is-utf8: 0.2.1 - - remove-bom-stream@1.2.0: - dependencies: - remove-bom-buffer: 3.0.0 - safe-buffer: 5.2.1 - through2: 2.0.5 - - remove-trailing-separator@1.1.0: {} - - renderkid@3.0.0: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - - repeat-element@1.1.4: {} - - repeat-string@1.6.1: {} - - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - - replace-ext@0.0.1: {} - - replace-ext@1.0.1: {} - - replace-homedir@1.0.0: - dependencies: - homedir-polyfill: 1.0.3 - is-absolute: 1.0.0 - remove-trailing-separator: 1.1.0 - - replicate@0.31.1: - optionalDependencies: - readable-stream: 4.5.2 - - repo-utils@0.3.7: - dependencies: - extend-shallow: 2.0.1 - get-value: 2.0.6 - git-config-path: 1.0.1 - is-absolute: 0.2.6 - kind-of: 3.2.2 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - omit-empty: 0.4.1 - parse-author: 1.0.0 - parse-git-config: 1.1.1 - parse-github-url: 0.3.2 - project-name: 0.2.6 - - request-progress@3.0.0: - dependencies: - throttleit: 1.0.1 - - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - require-like@0.1.2: {} - - require-main-filename@1.0.1: {} - - require-package-name@2.0.1: {} - - requires-port@1.0.0: {} - - reselect@4.1.8: {} - - resolve-alpn@1.2.1: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - - resolve-dir@0.1.1: - dependencies: - expand-tilde: 1.2.2 - global-modules: 0.2.3 - - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - - resolve-file@0.2.2: - dependencies: - cwd: 0.10.0 - expand-tilde: 2.0.2 - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - global-modules: 0.2.3 - homedir-polyfill: 1.0.3 - lazy-cache: 2.0.2 - resolve: 1.22.8 - - resolve-file@0.3.0: - dependencies: - cwd: 0.10.0 - expand-tilde: 2.0.2 - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - homedir-polyfill: 1.0.3 - lazy-cache: 2.0.2 - resolve: 1.22.8 - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-glob@1.0.0: - dependencies: - extend-shallow: 2.0.1 - is-valid-glob: 1.0.0 - matched: 1.0.2 - relative: 3.0.2 - resolve-dir: 1.0.1 - - resolve-options@1.1.0: - dependencies: - value-or-function: 3.0.0 - - resolve-pathname@3.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve-url-loader@4.0.0: - dependencies: - adjust-sourcemap-loader: 4.0.0 - convert-source-map: 1.9.0 - loader-utils: 2.0.4 - postcss: 7.0.39 - source-map: 0.6.1 - - resolve-url@0.2.1: {} - - resolve.exports@1.1.1: {} - - resolve.exports@2.0.2: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@2.0.1: - dependencies: - lowercase-keys: 2.0.0 - - responselike@3.0.0: - dependencies: - lowercase-keys: 3.0.0 - - restore-cursor@1.0.1: - dependencies: - exit-hook: 1.1.1 - onetime: 1.1.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - ret@0.1.15: {} - - rethrow@0.2.3: - dependencies: - ansi-bgred: 0.1.1 - ansi-red: 0.1.1 - ansi-yellow: 0.1.1 - extend-shallow: 1.1.4 - lazy-cache: 0.2.7 - right-align: 0.1.3 - - retry-request@7.0.2(encoding@0.1.13): - dependencies: - '@types/request': 2.48.12 - extend: 3.0.2 - teeny-request: 9.0.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - retry@0.12.0: {} - - retry@0.13.1: {} - - reusify@1.0.4: {} - - rfdc@1.3.1: {} - - right-align@0.1.3: - dependencies: - align-text: 0.1.4 - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rimraf@5.0.5: - dependencies: - glob: 10.3.10 - - rollup-plugin-livereload@2.0.5(bufferutil@4.0.8): - dependencies: - livereload: 0.9.3(bufferutil@4.0.8) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - rollup-plugin-postcss@4.0.2(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): - dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.4.21) - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 8.4.21 - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) - postcss-modules: 4.3.1(postcss@8.4.21) - promise.series: 0.2.0 - resolve: 1.22.8 - rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - transitivePeerDependencies: - - ts-node - - rollup-plugin-serve@2.0.2: - dependencies: - mime: 4.0.4 - opener: 1.5.2 - - rollup-plugin-terser@7.0.2(rollup@2.79.1): - dependencies: - '@babel/code-frame': 7.23.5 - jest-worker: 26.6.2 - rollup: 2.79.1 - serialize-javascript: 4.0.0 - terser: 5.29.1 - - rollup-plugin-typescript-paths@1.4.0(typescript@5.0.3): - dependencies: - typescript: 5.0.3 - - rollup-plugin-uglify@6.0.4(rollup@3.23.0): - dependencies: - '@babel/code-frame': 7.23.5 - jest-worker: 24.9.0 - rollup: 3.23.0 - serialize-javascript: 2.1.2 - uglify-js: 3.19.2 - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - - rollup@2.78.0: - optionalDependencies: - fsevents: 2.3.3 - - rollup@2.79.1: - optionalDependencies: - fsevents: 2.3.3 - - rollup@3.20.2: - optionalDependencies: - fsevents: 2.3.3 - - rollup@3.23.0: - optionalDependencies: - fsevents: 2.3.3 - - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.13.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 - fsevents: 2.3.3 - - rrweb-cssom@0.6.0: {} - - rtl-detect@1.1.2: {} - - rtlcss@4.3.0: - dependencies: - escalade: 3.1.2 - picocolors: 1.0.1 - postcss: 8.4.21 - strip-json-comments: 3.1.1 - - run-applescript@5.0.0: - dependencies: - execa: 5.1.1 - - run-async@0.1.0: - dependencies: - once: 1.4.0 - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - run-script-os@1.1.6: {} - - rusha@0.8.14: {} - - rw@1.3.3: {} - - rx-lite@4.0.8: {} - - rxjs@7.8.1: - dependencies: - tslib: 2.6.2 - - sade@1.8.1: - dependencies: - mri: 1.2.0 - - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-identifier@0.4.2: {} + pify@4.0.1: {} - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 + pify@5.0.0: {} - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pirates@4.0.6: {} + + pkce-challenge@4.1.0: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + platform@1.3.6: {} + + playwright-core@1.42.1: {} + + playwright-core@1.50.1: {} + + playwright@1.42.1: + dependencies: + playwright-core: 1.42.1 + optionalDependencies: + fsevents: 2.3.2 + + playwright@1.50.1: + dependencies: + playwright-core: 1.50.1 + optionalDependencies: + fsevents: 2.3.2 + + popmotion@9.3.6: + dependencies: + framesync: 5.3.0 + hey-listen: 1.0.8 + style-value-types: 4.1.4 + tslib: 2.6.2 + + portkey-ai@0.1.16: + dependencies: + agentkeepalive: 4.5.0 + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.0.0: {} + + postcss-attribute-case-insensitive@5.0.2(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-browser-comments@4.0.0(browserslist@4.23.0)(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.21 - safe-stable-stringify@2.4.3: {} - - safer-buffer@2.1.2: {} + postcss-calc@8.2.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 - sanitize-html@2.12.1: - dependencies: - deepmerge: 4.3.1 - escape-string-regexp: 4.0.0 - htmlparser2: 8.0.2 - is-plain-object: 5.0.0 - parse-srcset: 1.0.2 - postcss: 8.4.21 + postcss-calc@9.0.1(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 - sanitize.css@13.0.0: {} + postcss-clamp@4.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 - sass-loader@12.6.0(sass@1.71.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - klona: 2.0.6 - neo-async: 2.6.2 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - optionalDependencies: - sass: 1.71.1 + postcss-color-functional-notation@4.2.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-color-hex-alpha@8.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@7.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-colormin@6.1.0(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-convert-values@6.1.0(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-custom-media@8.0.2(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-custom-properties@12.1.11(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@6.0.3(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-dir-pseudo-class@6.0.5(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-discard-comments@5.1.2(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-discard-comments@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-discard-duplicates@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-discard-duplicates@6.0.3(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-discard-empty@5.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-discard-empty@6.0.3(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-discard-overridden@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-discard-overridden@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-discard-unused@6.0.5(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + postcss-double-position-gradients@3.1.2(postcss@8.4.21): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-env-function@4.0.6(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-flexbugs-fixes@5.0.2(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-focus-visible@6.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-focus-within@5.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-font-variant@5.0.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-gap-properties@3.0.5(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-image-set-function@4.0.7(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-import@14.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-initial@4.0.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-js@4.0.1(postcss@8.4.21): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + + postcss-lab-function@4.2.1(postcss@8.4.21): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.21 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3) + + postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.21 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + + postcss-load-config@3.1.4(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.39 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5) + + postcss-loader@6.2.1(postcss@8.4.21)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.4.21 + semver: 7.7.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + postcss-loader@7.3.4(postcss@8.4.39)(typescript@5.5.2)(webpack@5.90.3): + dependencies: + cosmiconfig: 8.3.6(typescript@5.5.2) + jiti: 1.21.0 + postcss: 8.4.39 + semver: 7.7.1 + webpack: 5.90.3 + transitivePeerDependencies: + - typescript + + postcss-logical@5.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-media-minmax@5.0.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-merge-idents@6.0.3(postcss@8.4.39): + dependencies: + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-merge-longhand@5.1.7(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.21) + + postcss-merge-longhand@6.0.5(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.4.39) + + postcss-merge-rules@5.1.4(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-merge-rules@6.1.1(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-minify-font-values@6.1.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.4.21): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@6.0.3(postcss@8.4.39): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + cssnano-utils: 3.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-minify-params@6.1.0(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-minify-selectors@6.0.4(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.0.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-modules-extract-imports@3.0.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-modules-local-by-default@4.0.4(postcss@8.4.21): + dependencies: + icss-utils: 5.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-modules-local-by-default@4.0.4(postcss@8.4.39): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-modules-scope@3.1.1(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + postcss-modules-values@4.0.0(postcss@8.4.21): + dependencies: + icss-utils: 5.1.0(postcss@8.4.21) + postcss: 8.4.21 + + postcss-modules-values@4.0.0(postcss@8.4.39): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + + postcss-modules@4.3.1(postcss@8.4.21): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.21 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.21) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.21) + postcss-modules-scope: 3.1.1(postcss@8.4.21) + postcss-modules-values: 4.0.0(postcss@8.4.21) + string-hash: 1.1.3 + + postcss-nested@6.0.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.15 + + postcss-nesting@10.2.0(postcss@8.4.21): + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-normalize-charset@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-normalize-display-values@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-display-values@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@6.1.0(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.4.21): + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-normalize@10.0.1(browserslist@4.23.0)(postcss@8.4.21): + dependencies: + '@csstools/normalize.css': 12.1.1 + browserslist: 4.23.0 + postcss: 8.4.21 + postcss-browser-comments: 4.0.0(browserslist@4.23.0)(postcss@8.4.21) + sanitize.css: 13.0.0 + + postcss-opacity-percentage@1.1.3(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-ordered-values@5.1.3(postcss@8.4.21): + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@6.0.2(postcss@8.4.39): + dependencies: + cssnano-utils: 4.0.2(postcss@8.4.39) + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-overflow-shorthand@3.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-place@7.0.5(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-preset-env@7.8.3(postcss@8.4.21): + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.21) + '@csstools/postcss-color-function': 1.1.1(postcss@8.4.21) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.21) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.21) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.21) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.21) + '@csstools/postcss-nested-calc': 1.0.0(postcss@8.4.21) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.21) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.21) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.21) + '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.4.21) + '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.21) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.21) + autoprefixer: 10.4.14(postcss@8.4.21) + browserslist: 4.23.0 + css-blank-pseudo: 3.0.3(postcss@8.4.21) + css-has-pseudo: 3.0.4(postcss@8.4.21) + css-prefers-color-scheme: 6.0.3(postcss@8.4.21) + cssdb: 7.11.2 + postcss: 8.4.21 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.21) + postcss-clamp: 4.1.0(postcss@8.4.21) + postcss-color-functional-notation: 4.2.4(postcss@8.4.21) + postcss-color-hex-alpha: 8.0.4(postcss@8.4.21) + postcss-color-rebeccapurple: 7.1.1(postcss@8.4.21) + postcss-custom-media: 8.0.2(postcss@8.4.21) + postcss-custom-properties: 12.1.11(postcss@8.4.21) + postcss-custom-selectors: 6.0.3(postcss@8.4.21) + postcss-dir-pseudo-class: 6.0.5(postcss@8.4.21) + postcss-double-position-gradients: 3.1.2(postcss@8.4.21) + postcss-env-function: 4.0.6(postcss@8.4.21) + postcss-focus-visible: 6.0.4(postcss@8.4.21) + postcss-focus-within: 5.0.4(postcss@8.4.21) + postcss-font-variant: 5.0.0(postcss@8.4.21) + postcss-gap-properties: 3.0.5(postcss@8.4.21) + postcss-image-set-function: 4.0.7(postcss@8.4.21) + postcss-initial: 4.0.1(postcss@8.4.21) + postcss-lab-function: 4.2.1(postcss@8.4.21) + postcss-logical: 5.0.4(postcss@8.4.21) + postcss-media-minmax: 5.0.0(postcss@8.4.21) + postcss-nesting: 10.2.0(postcss@8.4.21) + postcss-opacity-percentage: 1.1.3(postcss@8.4.21) + postcss-overflow-shorthand: 3.0.4(postcss@8.4.21) + postcss-page-break: 3.0.4(postcss@8.4.21) + postcss-place: 7.0.5(postcss@8.4.21) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.21) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.21) + postcss-selector-not: 6.0.1(postcss@8.4.21) + postcss-value-parser: 4.2.0 + + postcss-pseudo-class-any-link@7.1.6(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-reduce-idents@6.0.3(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@5.1.2(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + postcss: 8.4.21 + + postcss-reduce-initial@6.1.0(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + postcss: 8.4.39 + + postcss-reduce-transforms@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + postcss-reduce-transforms@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + + postcss-replace-overflow-wrap@4.0.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + + postcss-selector-not@6.0.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.0.15: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sort-media-queries@5.2.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + sort-css-media-queries: 2.2.0 + + postcss-svgo@5.1.0(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-svgo@6.0.3(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@5.1.1(postcss@8.4.21): + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + postcss-unique-selectors@6.0.4(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + postcss-value-parser@4.2.0: {} + + postcss-zindex@6.0.2(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.4.21: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postcss@8.4.31: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postcss@8.4.39: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postgres-array@2.0.0: {} + + postgres-array@3.0.2: {} + + postgres-bytea@1.0.0: {} + + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@3.0.0: {} + + postgres-range@1.1.4: {} + + posthog-node@3.6.3: + dependencies: + axios: 1.7.9(debug@4.3.4) + rusha: 0.8.14 + transitivePeerDependencies: + - debug + + preact-render-to-string@5.2.6(preact@10.23.2): + dependencies: + preact: 10.23.2 + pretty-format: 3.8.0 + + preact@10.23.2: {} + + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.56.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + + preferred-pm@3.1.3: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 - sass@1.71.1: - dependencies: - chokidar: 3.6.0 - immutable: 4.3.5 - source-map-js: 1.0.2 + prettier@2.8.8: {} - sax@1.2.1: {} + prettier@3.5.3: {} - sax@1.2.4: {} + pretty-bytes@5.6.0: {} - saxes@5.0.1: - dependencies: - xmlchars: 2.2.0 + pretty-bytes@6.1.1: {} - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 - scheduler@0.23.0: - dependencies: - loose-envify: 1.4.0 + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 - schema-utils@2.7.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + pretty-format@28.1.3: + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 - schema-utils@2.7.1: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.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) + pretty-format@3.8.0: {} - schema-utils@4.2.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.13.0 - ajv-formats: 2.1.1(ajv@8.13.0) - ajv-keywords: 5.1.0(ajv@8.13.0) - - scoped-regex@2.1.0: {} - - search-insights@2.17.1: {} - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - secure-json-parse@2.7.0: {} - - selderee@0.11.0: - dependencies: - parseley: 0.12.1 - - select-hose@2.0.0: {} - - select@1.1.2: - optional: true - - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - - semver-diff@4.0.0: - dependencies: - semver: 7.6.0 - - semver-greatest-satisfied-range@1.1.0: - dependencies: - sver-compat: 1.5.0 - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.0.0: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.7.1: {} - - send@0.18.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - seq-queue@0.0.5: {} - - serialize-error-cjs@0.1.3: {} - - serialize-javascript@2.1.2: {} - - serialize-javascript@4.0.0: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - seroval@0.5.1: {} - - serpapi@1.1.1: - dependencies: - undici: 5.28.4 - - serve-handler@6.1.5: - dependencies: - bytes: 3.0.0 - content-disposition: 0.5.2 - fast-url-parser: 1.1.3 - mime-types: 2.1.18 - minimatch: 3.1.2 - path-is-inside: 1.0.2 - path-to-regexp: 2.2.1 - range-parser: 1.2.0 - - serve-index@1.9.1: - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - - serve-static@1.15.0: - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - - set-blocking@2.0.0: {} - - 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.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - set-function-name@2.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 - - set-getter@0.1.1: - dependencies: - to-object-path: 0.3.0 - - set-value@0.2.0: - dependencies: - isobject: 1.0.2 - noncharacters: 1.1.0 - - set-value@0.3.3: - dependencies: - extend-shallow: 2.0.1 - isobject: 2.1.0 - to-object-path: 0.2.0 - - set-value@0.4.3: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - to-object-path: 0.3.0 - - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - - set-value@3.0.3: - dependencies: - is-plain-object: 2.0.4 - - setimmediate@1.0.5: {} - - setprototypeof@1.1.0: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - shallow-clone@0.1.2: - dependencies: - is-extendable: 0.1.1 - kind-of: 2.0.1 - lazy-cache: 0.2.7 - mixin-object: 2.0.1 - - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - - shallowequal@1.1.0: {} - - sharp@0.32.6: - dependencies: - color: 4.2.3 - detect-libc: 2.0.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 - semver: 7.6.0 - simple-get: 4.0.1 - tar-fs: 3.0.5 - tunnel-agent: 0.6.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shell-exec@1.0.2: {} - - shell-quote@1.8.1: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - should-equal@2.0.0: - dependencies: - should-type: 1.4.0 - - should-format@3.0.3: - dependencies: - should-type: 1.4.0 - should-type-adaptors: 1.1.0 - - should-type-adaptors@1.1.0: - dependencies: - should-type: 1.4.0 - should-util: 1.0.1 - - should-type@1.4.0: {} - - should-util@1.0.1: {} - - should@13.2.3: - dependencies: - should-equal: 2.0.0 - should-format: 3.0.3 - should-type: 1.4.0 - should-type-adaptors: 1.1.0 - should-util: 1.0.1 - - shx@0.3.4: - dependencies: - minimist: 1.2.8 - shelljs: 0.8.5 - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - sift@17.1.3: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sigstore@1.9.0: - dependencies: - '@sigstore/bundle': 1.1.0 - '@sigstore/protobuf-specs': 0.2.1 - '@sigstore/sign': 1.0.0 - '@sigstore/tuf': 1.0.3 - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - - simple-concat@1.0.1: {} - - simple-get@3.1.1: - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - simple-update-notifier@1.1.0: - dependencies: - semver: 7.0.0 - - sirv@1.0.19: - dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 1.0.1 - totalist: 1.1.0 - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 - totalist: 3.0.1 - - sisteransi@1.0.5: {} - - sitemap@7.1.2: - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.2.4 - - sitemapper@3.2.9: - dependencies: - got: 11.8.6 - is-gzip: 2.0.0 - p-limit: 3.1.0 - xml2js: 0.5.0 - - skin-tone@2.0.0: - dependencies: - unicode-emoji-modifier-base: 1.0.0 - - slash@1.0.0: {} - - slash@3.0.0: {} - - slash@4.0.0: {} - - slice-ansi@3.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - smart-buffer@4.2.0: {} - - smob@0.0.6: {} - - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - - snapdragon-node@2.1.1: - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 - - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - - socket.io-adapter@2.5.4(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - debug: 4.3.6(supports-color@5.5.0) - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-client@4.7.4(bufferutil@4.0.8): - dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) - engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6(supports-color@5.5.0) - engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-parser@4.2.4: - dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - socket.io@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.4(supports-color@8.1.1) - engine.io: 6.5.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) - socket.io-adapter: 2.5.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - - socks-proxy-agent@6.2.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) - socks: 2.8.1 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) - socks: 2.8.1 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@8.0.2: - dependencies: - agent-base: 7.1.0 - debug: 4.3.6(supports-color@5.5.0) - socks: 2.8.1 - transitivePeerDependencies: - - supports-color - - socks@2.8.1: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - solid-element@1.7.0(solid-js@1.7.1): - dependencies: - component-register: 0.8.3 - solid-js: 1.7.1 - - solid-js@1.7.1: - dependencies: - csstype: 3.1.3 - seroval: 0.5.1 - - sort-css-media-queries@2.2.0: {} - - sort-keys@4.2.0: - dependencies: - is-plain-obj: 2.1.0 - - sort-object-arrays@0.1.1: - dependencies: - kind-of: 3.2.2 - - source-list-map@2.0.1: {} - - source-map-js@1.0.2: {} - - source-map-js@1.2.0: {} - - source-map-loader@3.0.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - abab: 2.0.6 - iconv-lite: 0.6.3 - source-map-js: 1.2.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - - source-map-support@0.4.18: - dependencies: - source-map: 0.5.7 - - 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-url@0.4.1: {} - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - source-map@0.7.4: {} - - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - - sourcemap-codec@1.4.8: {} - - space-separated-tokens@1.1.5: {} - - space-separated-tokens@2.0.2: {} - - sparkles@1.0.1: {} - - sparse-bitfield@3.0.3: - dependencies: - memory-pager: 1.5.0 - - spawn-command@0.0.2-1: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 - - spdx-license-ids@3.0.17: {} + pretty-hrtime@1.0.3: {} - spdy-transport@3.0.0: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color + pretty-quick@3.3.1(prettier@2.8.8): + dependencies: + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.3.1 + mri: 1.2.0 + picocolors: 1.0.0 + picomatch: 3.0.1 + prettier: 2.8.8 + tslib: 2.6.2 - spdy@4.0.2: - dependencies: - debug: 4.3.6(supports-color@5.5.0) - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color + pretty-quick@3.3.1(prettier@3.5.3): + dependencies: + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.3.1 + mri: 1.2.0 + picocolors: 1.0.0 + picomatch: 3.0.1 + prettier: 3.5.3 + tslib: 2.6.2 + + pretty-time@1.1.0: {} + + prism-react-renderer@1.3.5(react@18.2.0): + dependencies: + react: 18.2.0 + + prism-react-renderer@2.4.0(react@18.2.0): + dependencies: + '@types/prismjs': 1.26.4 + clsx: 2.1.0 + react: 18.2.0 + + prisma-json-types-generator@3.0.4(prisma@5.18.0)(typescript@4.9.5): + dependencies: + '@prisma/generator-helper': 5.9.1 + prisma: 5.18.0 + tslib: 2.6.2 + typescript: 4.9.5 + + prisma@5.18.0: + dependencies: + '@prisma/engines': 5.18.0 + + prismjs@1.29.0: {} + + private@0.1.8: {} - speech-rule-engine@4.0.7: - dependencies: - commander: 9.2.0 - wicked-good-xpath: 1.3.0 - xmldom-sre: 0.1.31 + proc-log@1.0.0: {} + + proc-log@3.0.0: {} - split-on-first@3.0.0: {} - - split-string@1.0.1: - dependencies: - extend-shallow: 2.0.1 - - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - - split2@3.2.2: - dependencies: - readable-stream: 3.6.2 - - split2@4.2.0: {} - - split@0.3.3: - dependencies: - through: 2.3.8 + process-nextick-args@2.0.1: {} - sprintf-js@1.0.3: {} + process@0.11.10: {} - sprintf-js@1.1.3: {} + progress@2.0.3: {} - sqlite3@5.1.7: - dependencies: - bindings: 1.5.0 - node-addon-api: 7.1.0 - prebuild-install: 7.1.2 - tar: 6.2.0 - optionalDependencies: - node-gyp: 8.4.1 - transitivePeerDependencies: - - bluebird - - supports-color + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 - sqlstring@2.3.3: {} + promise-all-reject-late@1.0.1: {} - src-stream@0.1.1: - dependencies: - duplexify: 3.7.1 - merge-stream: 0.1.8 - through2: 2.0.5 + promise-call-limit@1.0.2: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + promise.series@0.2.0: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-expr@2.0.6: {} + + property-information@5.6.0: + dependencies: + xtend: 4.0.2 + + property-information@6.4.1: {} + + proto-list@1.2.4: {} + + proto3-json-serializer@2.0.2: + dependencies: + protobufjs: 7.4.0 + + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 18.15.11 + long: 5.2.3 + + protoc-gen-ts@0.8.7: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-agent@6.3.0: + dependencies: + agent-base: 7.1.0 + debug: 4.4.0(supports-color@5.5.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.1 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.0.0: {} + + proxy-from-env@1.1.0: {} + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + pseudomap@1.0.2: {} + + psl@1.9.0: {} + + pstree.remy@1.1.8: {} + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode@1.3.2: {} + + punycode@2.3.1: {} + + pupa@3.1.0: + dependencies: + escape-goat: 4.0.0 + + puppeteer-core@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4): + dependencies: + '@puppeteer/browsers': 0.5.0(typescript@4.9.5) + chromium-bidi: 0.4.7(devtools-protocol@0.0.1107588) + cross-fetch: 3.1.5(encoding@0.1.13) + debug: 4.3.4(supports-color@8.1.1) + devtools-protocol: 0.0.1107588 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + proxy-from-env: 1.1.0 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + puppeteer-core@20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4): + dependencies: + '@puppeteer/browsers': 1.4.6(typescript@5.5.2) + chromium-bidi: 0.4.16(devtools-protocol@0.0.1147663) + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.4(supports-color@8.1.1) + devtools-protocol: 0.0.1147663 + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + puppeteer@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4): + dependencies: + '@puppeteer/browsers': 0.5.0(typescript@4.9.5) + cosmiconfig: 8.1.3 + https-proxy-agent: 5.0.1 + progress: 2.0.3 + proxy-from-env: 1.1.0 + puppeteer-core: 19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.9.5)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + + puppeteer@20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4): + dependencies: + '@puppeteer/browsers': 1.4.6(typescript@5.5.2) + cosmiconfig: 8.2.0 + puppeteer-core: 20.9.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.2)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + + pure-color@1.3.0: {} + + pure-rand@6.1.0: {} + + pusher-js@8.4.0-rc2: + dependencies: + tweetnacl: 1.0.3 + + pyodide@0.25.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + base-64: 1.0.0 + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + q@1.5.1: {} + + qs@6.10.4: + dependencies: + side-channel: 1.1.0 + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + qs@6.11.2: + dependencies: + side-channel: 1.0.6 + + qs@6.12.1: + dependencies: + side-channel: 1.1.0 + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.5.3: {} + + qs@6.7.0: {} + + query-string@8.2.0: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + querystring@0.2.0: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + queue@6.0.2: + dependencies: + inherits: 2.0.4 + + quick-lru@5.1.1: {} + + radix3@1.1.2: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + rake-modified@1.0.8: + dependencies: + fs-promise: 2.0.3 + lodash: 4.17.21 + + random-bytes@1.0.0: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.0: {} + + range-parser@1.2.1: {} + + ranges-apply@7.0.16: + dependencies: + ranges-merge: 9.0.15 + tiny-invariant: 1.3.3 + + ranges-merge@9.0.15: + dependencies: + ranges-push: 7.0.15 + ranges-sort: 6.0.11 + + ranges-push@7.0.15: + dependencies: + codsen-utils: 1.6.4 + ranges-sort: 6.0.11 + string-collapse-leading-whitespace: 7.0.7 + string-trim-spaces-only: 5.0.10 + + ranges-sort@6.0.11: {} + + rate-limit-redis@4.2.0(express-rate-limit@6.11.2(express@4.18.3)): + dependencies: + express-rate-limit: 6.11.2(express@4.18.3) + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-app-polyfill@3.0.0: + dependencies: + core-js: 3.36.0 + object-assign: 4.1.1 + promise: 8.3.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + whatwg-fetch: 3.6.20 + + react-base16-styling@0.6.0: + dependencies: + base16: 1.0.0 + lodash.curry: 4.1.1 + lodash.flow: 3.5.0 + pure-color: 1.3.0 + + react-code-blocks@0.0.9-0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + react: 18.2.0 + react-syntax-highlighter: 12.2.1(react@18.2.0) + styled-components: 5.3.11(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0) + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - react-dom + - react-is + + react-color@2.19.3(react@18.2.0): + dependencies: + '@icons/material': 0.2.4(react@18.2.0) + lodash: 4.17.21 + lodash-es: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 18.2.0 + reactcss: 1.2.3(react@18.2.0) + tinycolor2: 1.6.0 + + react-datepicker@4.25.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@popperjs/core': 2.11.8 + classnames: 2.5.1 + date-fns: 2.30.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-onclickoutside: 6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@babel/code-frame': 7.23.5 + address: 1.2.2 + browserslist: 4.23.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + + react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3): + dependencies: + '@babel/code-frame': 7.23.5 + address: 1.2.2 + browserslist: 4.23.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + webpack: 5.90.3 + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + + react-device-detect@1.17.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + ua-parser-js: 0.7.37 + + react-dom@18.2.0(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + react-draggable@4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-error-overlay@6.0.11: {} + + react-fast-compare@2.0.4: {} + + react-fast-compare@3.2.2: {} + + react-frame-component@5.2.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-helmet-async@1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + + react-helmet-async@2.0.5(react@18.2.0): + dependencies: + invariant: 2.2.4 + react: 18.2.0 + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + + react-hook-form@7.52.2(react@18.2.0): + dependencies: + react: 18.2.0 + + react-inspector@6.0.2(react@18.2.0): + dependencies: + react: 18.2.0 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.2.0: {} + + react-json-view-lite@1.5.0(react@18.2.0): + dependencies: + react: 18.2.0 + + react-lifecycles-compat@3.0.4: {} + + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.2.0))(webpack@5.90.3): + dependencies: + '@babel/runtime': 7.24.0 + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' + webpack: 5.90.3 + + react-markdown@8.0.7(@types/react@18.2.65)(react@18.2.0): + dependencies: + '@types/hast': 2.3.10 + '@types/prop-types': 15.7.11 + '@types/react': 18.2.65 + '@types/unist': 2.0.10 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 2.0.1 + prop-types: 15.8.1 + property-information: 6.4.1 + react: 18.2.0 + react-is: 18.2.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + + react-onclickoutside@6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-perfect-scrollbar@1.5.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + perfect-scrollbar: 1.5.5 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@popperjs/core': 2.11.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-fast-compare: 3.2.2 + warning: 4.0.3 + + react-property@2.0.0: {} + + react-redux@8.1.3(@types/react-dom@18.2.21)(@types/react@18.2.65)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.24.0 + '@types/hoist-non-react-statics': 3.3.5 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 + '@types/react-dom': 18.2.21 + react-dom: 18.2.0(react@18.2.0) + redux: 4.2.1 + + react-refresh@0.11.0: {} + + react-refresh@0.14.0: {} + + react-router-config@5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + react: 18.2.0 + react-router: 5.3.4(react@18.2.0) + + react-router-dom@5.3.4(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-router: 5.3.4(react@18.2.0) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router-dom@6.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + history: 5.3.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.3.0(react@18.2.0) + + react-router@5.3.4(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 0.1.12 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router@6.3.0(react@18.2.0): + dependencies: + history: 5.3.0 + react: 18.2.0 + + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(eslint@8.57.1)(react@18.2.0)(sass@1.71.1)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2))(type-fest@4.12.0)(typescript@5.5.2): + dependencies: + '@babel/core': 7.26.9 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.11.0)(type-fest@4.12.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + '@svgr/webpack': 5.5.0 + babel-jest: 27.5.1(@babel/core@7.26.9) + babel-loader: 8.3.0(@babel/core@7.26.9)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.26.9) + babel-preset-react-app: 10.0.1 + bfj: 7.1.0 + browserslist: 4.23.0 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + css-loader: 6.10.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + css-minimizer-webpack-plugin: 3.4.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + dotenv: 10.0.0 + dotenv-expand: 5.1.0 + eslint: 8.57.1 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.26.9))(@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.9))(eslint@8.57.1)(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.2) + eslint-webpack-plugin: 3.2.0(eslint@8.57.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + file-loader: 6.2.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + fs-extra: 10.1.0 + html-webpack-plugin: 5.6.0(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + identity-obj-proxy: 3.0.0 + jest: 27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + jest-resolve: 27.5.1 + jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2))) + mini-css-extract-plugin: 2.8.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + postcss: 8.4.21 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.21) + postcss-loader: 6.2.1(postcss@8.4.21)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + postcss-normalize: 10.0.1(browserslist@4.23.0)(postcss@8.4.21) + postcss-preset-env: 7.8.3(postcss@8.4.21) + prompts: 2.4.2 + react: 18.2.0 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.5.2)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + react-refresh: 0.11.0 + resolve: 1.22.8 + resolve-url-loader: 4.0.0 + sass-loader: 12.6.0(sass@1.71.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + semver: 7.7.1 + source-map-loader: 3.0.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + style-loader: 3.3.4(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + webpack-manifest-plugin: 4.1.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + optionalDependencies: + fsevents: 2.3.3 + typescript: 5.5.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@types/babel__core' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-notifier + - node-sass + - rework + - rework-visit + - sass + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve + + react-syntax-highlighter@12.2.1(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + highlight.js: 9.15.10 + lowlight: 1.12.1 + prismjs: 1.29.0 + react: 18.2.0 + refractor: 2.10.1 + + react-syntax-highlighter@15.5.0(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.29.0 + react: 18.2.0 + refractor: 3.6.0 + + react-textarea-autosize@8.5.3(@types/react@18.2.65)(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + react: 18.2.0 + use-composed-ref: 1.3.0(react@18.2.0) + use-latest: 1.2.1(@types/react@18.2.65)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + + react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-window@1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.0 + memoize-one: 5.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + reactcss@1.2.3(react@18.2.0): + dependencies: + lodash: 4.17.21 + react: 18.2.0 + + reactflow@11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@reactflow/background': 11.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactflow/controls': 11.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactflow/core': 11.10.4(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactflow/minimap': 11.7.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactflow/node-resizer': 2.2.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactflow/node-toolbar': 1.3.9(@types/react@18.2.65)(immer@9.0.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-cmd-shim@3.0.1: {} + + read-package-json-fast@2.0.3: + dependencies: + json-parse-even-better-errors: 2.3.1 + npm-normalize-package-bin: 1.0.1 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + + read-package-json@6.0.4: + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.1 + + read-pkg-up@1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.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: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-web-to-node-stream@3.0.4: + dependencies: + readable-stream: 4.7.0 + + readdir-scoped-modules@1.1.0: + dependencies: + debuglog: 1.0.1 + dezalgo: 1.0.4 + graceful-fs: 4.2.11 + once: 1.4.0 + + readdirp@2.2.1: + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reading-time@1.5.0: {} + + readline@1.3.0: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + rechoir@0.8.0: + dependencies: + resolve: 1.22.8 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + redeyed@2.1.1: + dependencies: + esprima: 4.0.1 + + redis-errors@1.2.0: {} + + redis-info@3.1.0: + dependencies: + lodash: 4.17.21 + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + redis@4.6.13: + dependencies: + '@redis/bloom': 1.2.0(@redis/client@1.5.14) + '@redis/client': 1.5.14 + '@redis/graph': 1.1.1(@redis/client@1.5.14) + '@redis/json': 1.0.6(@redis/client@1.5.14) + '@redis/search': 1.1.6(@redis/client@1.5.14) + '@redis/time-series': 1.0.5(@redis/client@1.5.14) + + redux@4.2.1: + dependencies: + '@babel/runtime': 7.24.0 + + reflect-metadata@0.1.14: {} + + reflect-metadata@0.2.1: {} + + reflect.getprototypeof@1.0.10: + 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 + + reflect.getprototypeof@1.0.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + + refractor@2.10.1: + dependencies: + hastscript: 5.1.2 + parse-entities: 1.2.2 + prismjs: 1.29.0 + + refractor@3.6.0: + dependencies: + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.29.0 + + reftools@1.1.9: {} + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.24.0 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regex-parser@2.3.0: {} + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + regexp.prototype.flags@1.5.4: + 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 + + regexpp@3.2.0: {} + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + registry-auth-token@5.0.2: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + + rehype-mathjax@4.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)): + dependencies: + '@types/hast': 2.3.10 + '@types/mathjax': 0.0.37 + hast-util-from-dom: 4.2.0 + hast-util-to-text: 3.1.2 + jsdom: 20.0.3(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13)) + mathjax-full: 3.2.2 + unified: 10.1.2 + unist-util-visit: 4.1.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.0.2 + vfile: 6.0.1 + + reinterval@1.1.0: {} + + relateurl@0.2.7: {} + + remark-directive@3.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.1 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-emoji@4.0.1: + dependencies: + '@types/mdast': 4.0.3 + emoticon: 4.1.0 + mdast-util-find-and-replace: 3.0.1 + node-emoji: 2.1.3 + unified: 11.0.5 + + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@1.0.0: + dependencies: + mdast-util-gfm: 0.1.2 + micromark-extension-gfm: 0.3.3 + transitivePeerDependencies: + - supports-color + + remark-gfm@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-gfm: 2.0.2 + micromark-extension-gfm: 2.0.3 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-math@5.1.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-math: 2.0.2 + micromark-extension-math: 2.1.2 + unified: 10.1.2 + + remark-mdx@3.0.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@10.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@9.0.0: + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@10.1.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + + remark-rehype@11.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 + unified: 11.0.5 + vfile: 6.0.1 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 + + remove-bom-buffer@3.0.0: + dependencies: + is-buffer: 1.1.6 + is-utf8: 0.2.1 + + remove-bom-stream@1.2.0: + dependencies: + remove-bom-buffer: 3.0.0 + safe-buffer: 5.2.1 + through2: 2.0.5 + + remove-trailing-separator@1.1.0: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + repeat-string@1.6.1: {} + + repeating@2.0.1: + dependencies: + is-finite: 1.1.0 + + replace-ext@1.0.1: {} + + replace-homedir@1.0.0: + dependencies: + homedir-polyfill: 1.0.3 + is-absolute: 1.0.0 + remove-trailing-separator: 1.1.0 + + replicate@0.31.1: + optionalDependencies: + readable-stream: 4.5.2 + + request-progress@3.0.0: + dependencies: + throttleit: 1.0.1 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-in-the-middle@7.5.2: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + module-details-from-path: 1.0.3 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + require-like@0.1.2: {} + + require-main-filename@1.0.1: {} + + require-package-name@2.0.1: {} + + requires-port@1.0.0: {} + + reselect@4.1.8: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-options@1.1.0: + dependencies: + value-or-function: 3.0.0 + + resolve-pathname@3.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve-url-loader@4.0.0: + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 7.0.39 + source-map: 0.6.1 + + resolve-url@0.2.1: {} + + resolve.exports@1.1.1: {} + + resolve.exports@2.0.2: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + retry-axios@2.6.0(axios@1.7.9(debug@4.4.0)): + dependencies: + axios: 1.7.9(debug@4.4.0) + + retry-request@7.0.2(encoding@0.1.13): + dependencies: + '@types/request': 2.48.12 + extend: 3.0.2 + teeny-request: 9.0.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + retry@0.12.0: {} + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rfdc@1.3.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.5: + dependencies: + glob: 10.3.10 + + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + + rollup-plugin-livereload@2.0.5(bufferutil@4.0.8): + dependencies: + livereload: 0.9.3(bufferutil@4.0.8) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + rollup-plugin-postcss@4.0.2(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.4.21) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.4.21 + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + postcss-modules: 4.3.1(postcss@8.4.21) + promise.series: 0.2.0 + resolve: 1.22.8 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + + rollup-plugin-serve@2.0.2: + dependencies: + mime: 4.0.4 + opener: 1.5.2 + + rollup-plugin-terser@7.0.2(rollup@2.79.1): + dependencies: + '@babel/code-frame': 7.26.2 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.29.1 + + rollup-plugin-typescript-paths@1.4.0(typescript@5.0.3): + dependencies: + typescript: 5.0.3 + + rollup-plugin-uglify@6.0.4(rollup@3.23.0): + dependencies: + '@babel/code-frame': 7.23.5 + jest-worker: 24.9.0 + rollup: 3.23.0 + serialize-javascript: 2.1.2 + uglify-js: 3.19.2 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + + rollup@2.78.0: + optionalDependencies: + fsevents: 2.3.3 + + rollup@2.79.1: + optionalDependencies: + fsevents: 2.3.3 + + rollup@3.20.2: + optionalDependencies: + fsevents: 2.3.3 + + rollup@3.23.0: + optionalDependencies: + fsevents: 2.3.3 + + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.13.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.0 + '@rollup/rollup-android-arm64': 4.13.0 + '@rollup/rollup-darwin-arm64': 4.13.0 + '@rollup/rollup-darwin-x64': 4.13.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 + '@rollup/rollup-linux-arm64-gnu': 4.13.0 + '@rollup/rollup-linux-arm64-musl': 4.13.0 + '@rollup/rollup-linux-riscv64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-musl': 4.13.0 + '@rollup/rollup-win32-arm64-msvc': 4.13.0 + '@rollup/rollup-win32-ia32-msvc': 4.13.0 + '@rollup/rollup-win32-x64-msvc': 4.13.0 + fsevents: 2.3.3 + + router@2.1.0: + dependencies: + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + + rrweb-cssom@0.6.0: {} + + rtl-detect@1.1.2: {} + + rtlcss@4.3.0: + dependencies: + escalade: 3.1.2 + picocolors: 1.0.1 + postcss: 8.4.21 + strip-json-comments: 3.1.1 + + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + run-script-os@1.1.6: {} + + rusha@0.8.14: {} + + rw@1.3.3: {} + + rxjs@7.8.1: + dependencies: + tslib: 2.6.2 + + s3-streamlogger@1.11.0(aws-crt@1.21.3(bufferutil@4.0.8)): + dependencies: + '@aws-sdk/client-s3': 3.529.1(aws-crt@1.21.3(bufferutil@4.0.8)) + strftime: 0.10.3 + transitivePeerDependencies: + - aws-crt + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + 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-identifier@0.4.2: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.8 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safe-stable-stringify@2.4.3: {} + + safer-buffer@2.1.2: {} + + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 - srcset@4.0.0: {} + sanitize-html@2.12.1: + dependencies: + deepmerge: 4.3.1 + escape-string-regexp: 4.0.0 + htmlparser2: 8.0.2 + is-plain-object: 5.0.0 + parse-srcset: 1.0.2 + postcss: 8.4.21 + + sanitize.css@13.0.0: {} + + sass-loader@12.6.0(sass@1.71.1)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + optionalDependencies: + sass: 1.71.1 + + sass@1.71.1: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.0.2 + + sax@1.2.1: {} + + sax@1.2.4: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.23.0: + dependencies: + loose-envify: 1.4.0 + + schema-utils@2.7.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + 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.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) + ajv-keywords: 5.1.0(ajv@8.13.0) + + scoped-regex@2.1.0: {} + + search-insights@2.17.1: {} + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + secure-json-parse@2.7.0: {} + + selderee@0.11.0: + dependencies: + parseley: 0.12.1 + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver-compare@1.0.0: {} + + semver-diff@4.0.0: + dependencies: + semver: 7.7.1 + + semver-greatest-satisfied-range@1.1.0: + dependencies: + sver-compat: 1.5.0 + + semver@7.7.1: {} + + send@0.17.1: + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + send@1.1.0: + dependencies: + debug: 4.4.0(supports-color@5.5.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 + + seq-queue@0.0.5: {} + + serialize-error-cjs@0.1.3: {} + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + + serialize-javascript@2.1.2: {} + + serialize-javascript@4.0.0: + dependencies: + randombytes: 2.1.0 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + seroval@0.5.1: {} + + serpapi@1.1.1: + dependencies: + undici: 5.28.4 + + serve-handler@6.1.5: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 0.1.12 + range-parser: 1.2.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.14.1: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + serve-static@2.1.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.1.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + 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.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.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 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + set-value@4.1.0: + dependencies: + is-plain-object: 2.0.4 + is-primitive: 3.0.1 + + setimmediate@1.0.5: {} + + setprototypeof@1.1.0: {} + + setprototypeof@1.1.1: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shallowequal@1.1.0: {} + + sharp@0.32.6: + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.2 + semver: 7.7.1 + simple-get: 4.0.1 + tar-fs: 3.0.5 + tunnel-agent: 0.6.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-exec@1.0.2: {} + + shell-quote@1.8.1: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shimmer@1.2.1: {} + + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + + shx@0.3.4: + dependencies: + minimist: 1.2.8 + shelljs: 0.8.5 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + sift@17.1.3: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sigstore@1.9.0: + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 1.0.0 + '@sigstore/tuf': 1.0.3 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + simple-concat@1.0.1: {} + + simple-get@3.1.1: + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + simple-update-notifier@1.1.0: + dependencies: + semver: 7.7.1 + + simple-wcswidth@1.0.1: {} + + sirv@1.0.19: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 1.0.1 + totalist: 1.1.0 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + sitemap@7.1.2: + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.2.4 + + sitemapper@3.2.9: + dependencies: + got: 11.8.6 + is-gzip: 2.0.0 + p-limit: 3.1.0 + xml2js: 0.5.0 + + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + + slash@1.0.0: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + smart-buffer@4.2.0: {} + + smob@0.0.6: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + socket.io-adapter@2.5.4(bufferutil@4.0.8): + dependencies: + debug: 4.3.6(supports-color@8.1.1) + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.7.4(bufferutil@4.0.8): + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@8.1.1) + engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.6(supports-color@8.1.1) + engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + socket.io@4.7.4(bufferutil@4.0.8): + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4(supports-color@8.1.1) + engine.io: 6.5.4(bufferutil@4.0.8) + socket.io-adapter: 2.5.4(bufferutil@4.0.8) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + socks-proxy-agent@6.2.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + + socks-proxy-agent@8.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.4.0(supports-color@5.5.0) + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + + socks@2.8.1: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + solid-element@1.7.0(solid-js@1.7.1): + dependencies: + component-register: 0.8.3 + solid-js: 1.7.1 + + solid-js@1.7.1: + dependencies: + csstype: 3.1.3 + seroval: 0.5.1 + + sort-css-media-queries@2.2.0: {} + + sort-keys@4.2.0: + dependencies: + is-plain-obj: 2.1.0 + + source-list-map@2.0.1: {} + + source-map-js@1.0.2: {} + + source-map-js@1.2.0: {} + + source-map-loader@3.0.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.2.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.4.18: + dependencies: + source-map: 0.5.7 + + 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-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + sourcemap-codec@1.4.8: {} + + space-separated-tokens@1.1.5: {} + + space-separated-tokens@2.0.2: {} + + sparkles@1.0.1: {} + + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + spawn-command@0.0.2-1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.17 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + + spdx-license-ids@3.0.17: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color - srt-parser-2@1.2.3: {} + spdy@4.0.2: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - - ssri@10.0.5: - dependencies: - minipass: 7.0.4 + speech-rule-engine@4.0.7: + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + + split-ca@1.0.1: {} + + split-on-first@3.0.0: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split2@4.2.0: {} + + split@0.3.3: + dependencies: + through: 2.3.8 + + sprintf-js@1.0.3: {} - ssri@8.0.1: - dependencies: - minipass: 3.3.6 + sprintf-js@1.1.3: {} - ssri@9.0.1: - dependencies: - minipass: 3.3.6 - - sswr@2.1.0(svelte@4.2.18): - dependencies: - svelte: 4.2.18 - swrev: 4.0.0 - - stable@0.1.8: {} + sqlite3@5.1.7: + dependencies: + bindings: 1.5.0 + node-addon-api: 7.1.0 + prebuild-install: 7.1.2 + tar: 6.2.0 + optionalDependencies: + node-gyp: 8.4.1 + transitivePeerDependencies: + - bluebird + - supports-color - stack-trace@0.0.10: {} + sqlstring@2.3.3: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 + srcset@4.0.0: {} - stackframe@1.3.4: {} + srt-parser-2@1.2.3: {} - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 + ssh2@1.16.0: + dependencies: + asn1: 0.2.6 + bcrypt-pbkdf: 1.0.2 + optionalDependencies: + cpu-features: 0.0.10 + nan: 2.22.2 - standard-as-callback@2.1.0: {} + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 - start-server-and-test@2.0.3: - dependencies: - arg: 5.0.2 - bluebird: 3.7.2 - check-more-types: 2.24.0 - debug: 4.3.4(supports-color@8.1.1) - execa: 5.1.1 - lazy-ass: 1.6.0 - ps-tree: 1.2.0 - wait-on: 7.2.0(debug@4.3.4) - transitivePeerDependencies: - - supports-color + ssri@10.0.5: + dependencies: + minipass: 7.0.4 - state-local@1.0.7: {} + ssri@8.0.1: + dependencies: + minipass: 3.3.6 - static-eval@2.0.2: - dependencies: - escodegen: 1.14.3 + ssri@9.0.1: + dependencies: + minipass: 3.3.6 - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - - statuses@1.5.0: {} - - statuses@2.0.1: {} - - std-env@3.7.0: {} - - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 - - stopwords-iso@1.1.0: {} - - stream-combiner@0.0.4: - dependencies: - duplexer: 0.1.2 - - stream-combiner@0.2.2: - dependencies: - duplexer: 0.1.2 - through: 2.3.8 - - stream-events@1.0.5: - dependencies: - stubs: 3.0.0 - - stream-exhaust@1.0.2: {} - - stream-shift@1.0.3: {} - - stream-transform@3.3.2: {} - - streamsearch@1.1.0: {} - - streamx@2.16.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - optionalDependencies: - bare-events: 2.2.1 - - string-argv@0.3.2: {} - - string-collapse-leading-whitespace@7.0.7: {} - - string-hash@1.1.3: {} - - string-left-right@6.0.17: - dependencies: - codsen-utils: 1.6.4 - rfdc: 1.3.1 - - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - - string-length@5.0.1: - dependencies: - char-regex: 2.0.1 - strip-ansi: 7.1.0 - - string-natural-compare@3.0.1: {} - - string-strip-html@13.4.8: - dependencies: - '@types/lodash-es': 4.17.12 - codsen-utils: 1.6.4 - html-entities: 2.5.2 - lodash-es: 4.17.21 - ranges-apply: 7.0.16 - ranges-push: 7.0.15 - string-left-right: 6.0.17 - - string-trim-spaces-only@5.0.10: {} - - string-width@1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.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 + sswr@2.1.0(svelte@4.2.18): + dependencies: + svelte: 4.2.18 + swrev: 4.0.0 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + stable@0.1.8: {} + + stack-trace@0.0.10: {} - string.prototype.matchall@4.0.10: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 - string.prototype.trim@1.2.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 + stackframe@1.3.4: {} - string.prototype.trimend@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 + stacktrace-parser@0.1.10: + dependencies: + type-fest: 0.7.1 - string.prototype.trimstart@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 + standard-as-callback@2.1.0: {} - string_decoder@0.10.31: {} + start-server-and-test@2.0.3: + dependencies: + arg: 5.0.2 + bluebird: 3.7.2 + check-more-types: 2.24.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 5.1.1 + lazy-ass: 1.6.0 + ps-tree: 1.2.0 + wait-on: 7.2.0(debug@4.3.4) + transitivePeerDependencies: + - supports-color - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 + state-local@1.0.7: {} - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 + static-eval@2.0.2: + dependencies: + escodegen: 1.14.3 - stringify-author@0.1.3: {} + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.1.0 + + stopwords-iso@1.1.0: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + stream-events@1.0.5: + dependencies: + stubs: 3.0.0 + + stream-exhaust@1.0.2: {} + + stream-shift@1.0.3: {} + + stream-transform@3.3.2: {} + + streamsearch@1.1.0: {} + + streamx@2.16.1: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + optionalDependencies: + bare-events: 2.2.1 + + strftime@0.10.3: {} + + string-argv@0.3.2: {} + + string-collapse-leading-whitespace@7.0.7: {} + + string-hash@1.1.3: {} + + string-left-right@6.0.17: + dependencies: + codsen-utils: 1.6.4 + rfdc: 1.3.1 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-length@5.0.1: + dependencies: + char-regex: 2.0.1 + strip-ansi: 7.1.0 + + string-natural-compare@3.0.1: {} + + string-strip-html@13.4.8: + dependencies: + '@types/lodash-es': 4.17.12 + codsen-utils: 1.6.4 + html-entities: 2.5.2 + lodash-es: 4.17.21 + ranges-apply: 7.0.16 + ranges-push: 7.0.15 + string-left-right: 6.0.17 + + string-trim-spaces-only@5.0.10: {} + + string-width@1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.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-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.10: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + 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 + + string.prototype.repeat@1.0.0: + 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.3 + 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.trim@1.2.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + string.prototype.trimend@1.0.7: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.7: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.22.5 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom-buf@1.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom-stream@2.0.0: + dependencies: + first-chunk-stream: 2.0.0 + strip-bom: 2.0.0 + + strip-bom-string@1.0.0: {} + + strip-bom@2.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-comments@2.0.1: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + stripe@12.18.0: + dependencies: + '@types/node': 18.15.11 + qs: 6.12.1 + + stripe@17.6.0: + dependencies: + '@types/node': 18.15.11 + qs: 6.12.1 + + strnum@1.0.5: {} + + strnum@1.1.2: {} + + strtok3@6.3.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + + stubs@3.0.0: {} + + style-inject@0.3.0: {} + + style-loader@3.3.4(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + style-mod@4.1.2: {} + + style-to-js@1.1.3: + dependencies: + style-to-object: 0.4.1 + + style-to-object@0.3.0: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@0.4.1: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@0.4.4: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@1.0.7: + dependencies: + inline-style-parser: 0.2.3 + + style-value-types@4.1.4: + dependencies: + hey-listen: 1.0.8 + tslib: 2.6.2 + + styled-components@5.3.11(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0): + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@babel/traverse': 7.24.0(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.2 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.26.9)(styled-components@5.3.11(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + + styled-jsx@5.1.1(@babel/core@7.24.0)(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.24.0 + + styled-jsx@5.1.1(@babel/core@7.26.9)(babel-plugin-macros@3.1.0)(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.26.9 + babel-plugin-macros: 3.1.0 + + stylehacks@5.1.1(postcss@8.4.21): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.21 + postcss-selector-parser: 6.1.2 + + stylehacks@6.1.1(postcss@8.4.39): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.39 + postcss-selector-parser: 6.1.2 + + stylis@4.2.0: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@6.1.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svelte@4.2.18: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.14.1 + aria-query: 5.3.0 + axobject-query: 4.0.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.10 + periscopic: 3.1.0 + + sver-compat@1.5.0: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + svg-parser@2.0.4: {} + + svgo@1.3.2: + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.2.1 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.1 + + swagger-jsdoc@6.2.8(openapi-types@12.1.3): + dependencies: + commander: 6.2.0 + doctrine: 3.0.0 + glob: 7.1.6 + lodash.mergewith: 4.6.2 + swagger-parser: 10.0.3(openapi-types@12.1.3) + yaml: 2.0.0-1 + transitivePeerDependencies: + - openapi-types + + swagger-parser@10.0.3(openapi-types@12.1.3): + dependencies: + '@apidevtools/swagger-parser': 10.0.3(openapi-types@12.1.3) + transitivePeerDependencies: + - openapi-types + + swagger-ui-dist@5.20.1: + dependencies: + '@scarf/scarf': 1.4.0 + + swagger-ui-express@5.0.1(express@5.0.1): + dependencies: + express: 5.0.1 + swagger-ui-dist: 5.20.1 + + swagger2openapi@7.0.8(encoding@0.1.13): + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0(encoding@0.1.13) + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + + swr@2.2.0(react@18.2.0): + dependencies: + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + + swrev@4.0.0: {} + + swrv@1.0.4(vue@3.4.31(typescript@5.5.2)): + dependencies: + vue: 3.4.31(typescript@5.5.2) + + sylvester@0.0.12: {} + + symbol-tree@3.2.4: {} + + synckit@0.9.1: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + + table@6.8.2: + dependencies: + ajv: 8.13.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): + dependencies: + arg: 5.0.2 + chokidar: 3.6.0 + color-name: 1.1.4 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + arg: 5.0.2 + chokidar: 3.6.0 + color-name: 1.1.4 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@1.1.3: {} + + tapable@2.2.1: {} + + tar-fs@2.0.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + tar-fs@3.0.4: + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.7 + + tar-fs@3.0.5: + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.2.1 + bare-path: 2.1.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.16.1 + + tar@6.2.0: + 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 + + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + + teeny-request@9.0.0(encoding@0.1.13): + dependencies: + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0(encoding@0.1.13) + stream-events: 1.0.5 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + temp-dir@2.0.0: {} + + tempy@0.6.0: + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser-webpack-plugin@5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.29.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + + terser-webpack-plugin@5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.29.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + + terser-webpack-plugin@5.3.10(webpack@5.90.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.29.1 + webpack: 5.90.3 + + terser@5.29.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + 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-hex@1.0.0: {} + + text-table@0.2.0: {} + + textextensions@5.16.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 - stringify-object@3.3.0: - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 + thingies@1.21.0(tslib@2.6.2): + dependencies: + tslib: 2.6.2 - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 + three@0.168.0: {} - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 + throat@6.0.2: {} - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 + throttleit@1.0.1: {} - strip-bom-buf@1.0.0: - dependencies: - is-utf8: 0.2.1 - - strip-bom-buffer@0.1.1: - dependencies: - is-buffer: 1.1.6 - is-utf8: 0.2.1 - - strip-bom-stream@1.0.0: - dependencies: - first-chunk-stream: 1.0.0 - strip-bom: 2.0.0 - - strip-bom-stream@2.0.0: - dependencies: - first-chunk-stream: 2.0.0 - strip-bom: 2.0.0 - - strip-bom-string@0.1.2: {} - - strip-bom-string@1.0.0: {} - - strip-bom@2.0.0: - dependencies: - is-utf8: 0.2.1 - - strip-bom@3.0.0: {} - - strip-bom@4.0.0: {} - - strip-color@0.1.0: {} - - strip-comments@2.0.1: {} - - strip-eof@1.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - stripe@12.18.0: - dependencies: - '@types/node': 18.15.11 - qs: 6.12.1 + through2-filter@3.0.0: + dependencies: + through2: 2.0.5 + xtend: 4.0.2 - stripe@17.6.0: - dependencies: - '@types/node': 18.15.11 - qs: 6.12.1 + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 - strnum@1.0.5: {} + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 - stubs@3.0.0: {} + through@2.3.8: {} - style-inject@0.3.0: {} + thunky@1.1.0: {} - style-loader@3.3.4(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + tiktoken@1.0.15: {} - style-mod@4.1.2: {} + time-stamp@1.1.0: {} - style-to-js@1.1.3: - dependencies: - style-to-object: 0.4.1 + tiny-invariant@1.3.3: {} - style-to-object@0.3.0: - dependencies: - inline-style-parser: 0.1.1 + tiny-warning@1.0.3: {} - style-to-object@0.4.1: - dependencies: - inline-style-parser: 0.1.1 - - style-to-object@0.4.4: - dependencies: - inline-style-parser: 0.1.1 - - style-to-object@1.0.7: - dependencies: - inline-style-parser: 0.2.3 - - style-value-types@4.1.4: - dependencies: - hey-listen: 1.0.8 - tslib: 2.6.2 - - styled-components@5.3.11(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0): - dependencies: - '@babel/helper-module-imports': 7.24.3 - '@babel/traverse': 7.24.0(supports-color@5.5.0) - '@emotion/is-prop-valid': 1.2.2 - '@emotion/stylis': 0.8.5 - '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.4(@babel/core@7.24.0)(styled-components@5.3.11(@babel/core@7.24.0)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)) - css-to-react-native: 3.2.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - shallowequal: 1.1.0 - supports-color: 5.5.0 - transitivePeerDependencies: - - '@babel/core' - - styled-jsx@5.1.1(@babel/core@7.24.0)(babel-plugin-macros@3.1.0)(react@18.2.0): - dependencies: - client-only: 0.0.1 - react: 18.2.0 - optionalDependencies: - '@babel/core': 7.24.0 - babel-plugin-macros: 3.1.0 - - stylehacks@5.1.1(postcss@8.4.21): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.21 - postcss-selector-parser: 6.0.15 - - stylehacks@6.1.1(postcss@8.4.39): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.39 - postcss-selector-parser: 6.1.2 - - stylis@4.2.0: {} - - success-symbol@0.1.0: {} - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.10 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@2.0.0: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@6.1.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-color@9.4.0: {} - - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svelte@4.2.18: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.10 - periscopic: 3.1.0 - - sver-compat@1.5.0: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - - svg-parser@2.0.4: {} - - svgo@1.3.2: - dependencies: - chalk: 2.4.2 - coa: 2.0.2 - css-select: 2.1.0 - css-select-base-adapter: 0.1.1 - css-tree: 1.0.0-alpha.37 - csso: 4.2.0 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - object.values: 1.1.7 - sax: 1.2.4 - stable: 0.1.8 - unquote: 1.1.1 - util.promisify: 1.0.1 - - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.1 - stable: 0.1.8 - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.0.1 - - swagger2openapi@7.0.8(encoding@0.1.13): - dependencies: - call-me-maybe: 1.0.2 - node-fetch: 2.7.0(encoding@0.1.13) - node-fetch-h2: 2.3.0 - node-readfiles: 0.2.0 - oas-kit-common: 1.0.8 - oas-resolver: 2.5.6 - oas-schema-walker: 1.1.5 - oas-validator: 5.0.8 - reftools: 1.1.9 - yaml: 1.10.2 - yargs: 17.7.2 - transitivePeerDependencies: - - encoding - - swr@2.2.0(react@18.2.0): - dependencies: - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - - swrev@4.0.0: {} - - swrv@1.0.4(vue@3.4.31(typescript@5.5.2)): - dependencies: - vue: 3.4.31(typescript@5.5.2) - - sylvester@0.0.12: {} - - symbol-tree@3.2.4: {} - - synckit@0.9.1: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.2 - - table@6.8.2: - dependencies: - ajv: 8.13.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - tableize-object@0.1.0: - dependencies: - isobject: 2.1.0 - - tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)): - dependencies: - arg: 5.0.2 - chokidar: 3.6.0 - color-name: 1.1.4 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.21 - postcss-import: 14.1.0(postcss@8.4.21) - postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3)) - postcss-nested: 6.0.0(postcss@8.4.21) - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - arg: 5.0.2 - chokidar: 3.6.0 - color-name: 1.1.4 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.21 - postcss-import: 14.1.0(postcss@8.4.21) - postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)) - postcss-nested: 6.0.0(postcss@8.4.21) - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tapable@1.1.3: {} - - tapable@2.2.1: {} - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - - tar-fs@3.0.4: - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.7 - - tar-fs@3.0.5: - dependencies: - pump: 3.0.0 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.2.1 - bare-path: 2.1.0 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.16.1 - - tar@6.2.0: - 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 - - teeny-request@9.0.0(encoding@0.1.13): - dependencies: - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - stream-events: 1.0.5 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - temp-dir@2.0.0: {} - - template-error@0.1.2: - dependencies: - engine: 0.1.12 - kind-of: 2.0.1 - lazy-cache: 0.2.7 - rethrow: 0.2.3 - - templates@0.24.3: - dependencies: - array-sort: 0.1.4 - async-each: 1.0.6 - base: 0.11.2 - base-data: 0.6.2 - base-engines: 0.2.1 - base-helpers: 0.1.1 - base-option: 0.8.4 - base-plugins: 0.4.13 - base-routes: 0.2.2 - debug: 2.6.9 - deep-bind: 0.3.0 - define-property: 0.2.5 - engine-base: 0.1.3 - export-files: 2.1.1 - extend-shallow: 2.0.1 - falsey: 0.3.2 - get-value: 2.0.6 - get-view: 0.1.3 - group-array: 0.3.4 - has-glob: 0.1.1 - has-value: 0.3.1 - inflection: 1.13.4 - is-valid-app: 0.2.1 - layouts: 0.11.0 - lazy-cache: 2.0.2 - match-file: 0.2.2 - mixin-deep: 1.3.2 - paginationator: 0.1.4 - pascalcase: 0.1.1 - set-value: 0.3.3 - template-error: 0.1.2 - vinyl-item: 0.1.0 - vinyl-view: 0.1.2 - transitivePeerDependencies: - - supports-color - - tempy@0.6.0: - dependencies: - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - - terminal-link@2.1.1: - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - - terser-webpack-plugin@5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.29.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - - terser-webpack-plugin@5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.29.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - - terser-webpack-plugin@5.3.10(webpack@5.90.3): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.29.1 - webpack: 5.90.3 - - terser@5.29.1: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - 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-hex@1.0.0: {} - - text-table@0.2.0: {} - - textextensions@5.16.0: {} - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - three@0.168.0: {} - - throat@6.0.2: {} - - throttleit@1.0.1: {} - - through2-filter@2.0.0: - dependencies: - through2: 2.0.5 - xtend: 4.0.2 - - through2-filter@3.0.0: - dependencies: - through2: 2.0.5 - xtend: 4.0.2 - - through2@0.6.5: - dependencies: - readable-stream: 1.0.34 - xtend: 4.0.2 - - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - - through2@4.0.2: - dependencies: - readable-stream: 3.6.2 + tinycolor2@1.6.0: {} - through@2.3.8: {} + titleize@1.0.1: {} - thunky@1.1.0: {} + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 - tiktoken@1.0.15: {} + tmp@0.2.3: {} - time-diff@0.3.1: - dependencies: - extend-shallow: 2.0.1 - is-number: 2.1.0 - log-utils: 0.1.5 - pretty-time: 0.2.0 + tmpl@1.0.5: {} - time-stamp@1.1.0: {} + to-absolute-glob@2.0.2: + dependencies: + is-absolute: 1.0.0 + is-negated-glob: 1.0.0 - tiny-emitter@2.1.0: - optional: true + to-arraybuffer@1.0.1: {} - tiny-invariant@1.3.3: {} + to-fast-properties@1.0.3: {} - tiny-warning@1.0.3: {} + to-fast-properties@2.0.0: {} - tinycolor2@1.6.0: {} + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 - titleize@1.0.1: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 - tmp@0.2.3: {} + to-through@2.0.0: + dependencies: + through2: 2.0.5 - tmpl@1.0.5: {} + toggle-selection@1.0.6: {} - to-absolute-glob@0.1.1: - dependencies: - extend-shallow: 2.0.1 + toidentifier@1.0.0: {} - to-absolute-glob@2.0.2: - dependencies: - is-absolute: 1.0.0 - is-negated-glob: 1.0.0 + toidentifier@1.0.1: {} - to-arraybuffer@1.0.1: {} + token-types@4.2.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 - to-choices@0.2.0: - dependencies: - ansi-gray: 0.1.1 - mixin-deep: 1.3.2 + toposort@2.0.2: {} - to-fast-properties@1.0.3: {} + totalist@1.1.0: {} - to-fast-properties@2.0.0: {} + totalist@3.0.1: {} - to-file@0.2.0: - dependencies: - define-property: 0.2.5 - extend-shallow: 2.0.1 - file-contents: 0.2.4 - glob-parent: 2.0.0 - is-valid-glob: 0.3.0 - isobject: 2.1.0 - lazy-cache: 2.0.2 - vinyl: 1.2.0 + touch@3.1.0: + dependencies: + nopt: 1.0.10 - to-object-path@0.2.0: - dependencies: - arr-flatten: 1.1.0 - is-arguments: 1.1.1 + tough-cookie@2.5.0: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 + tough-cookie@4.1.3: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 + tr46@0.0.3: {} - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 + tr46@1.0.1: + dependencies: + punycode: 2.3.1 - to-regex@3.0.2: - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 + tr46@2.1.0: + dependencies: + punycode: 2.3.1 - to-through@2.0.0: - dependencies: - through2: 2.0.5 + tr46@3.0.0: + dependencies: + punycode: 2.3.1 - toggle-selection@1.0.6: {} + tr46@4.1.1: + dependencies: + punycode: 2.3.1 - toidentifier@1.0.1: {} + tree-dump@1.0.2(tslib@2.6.2): + dependencies: + tslib: 2.6.2 + + tree-kill@1.2.2: {} + + treeverse@1.0.4: {} + + trim-lines@3.0.1: {} + + trim-right@1.0.1: {} + + triple-beam@1.4.1: {} + + troika-three-text@0.49.1(three@0.168.0): + dependencies: + bidi-js: 1.0.3 + three: 0.168.0 + troika-three-utils: 0.49.0(three@0.168.0) + troika-worker-utils: 0.49.0 + webgl-sdf-generator: 1.1.1 + + troika-three-utils@0.49.0(three@0.168.0): + dependencies: + three: 0.168.0 + + troika-worker-utils@0.49.0: {} + + trough@1.0.5: {} + + trough@2.2.0: {} + + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + + tryer@1.0.1: {} + + ts-api-utils@1.3.0(typescript@5.5.2): + dependencies: + typescript: 5.5.2 + + ts-interface-checker@0.1.13: {} + + ts-jest@29.2.5(@babel/core@7.26.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.9))(jest@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)))(typescript@5.5.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.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.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.5.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.26.9 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.9) + + ts-loader@9.5.1(typescript@4.9.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.16.0 + micromatch: 4.0.5 + semver: 7.7.1 + source-map: 0.7.4 + typescript: 4.9.5 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + + ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.15.11 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + + ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.15.11 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.0.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + optional: true + + ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.13.9 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + optional: true + + ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.13.9 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + + ts-toolbelt@9.6.0: {} + + ts-type@3.0.1(ts-toolbelt@9.6.0): + dependencies: + '@types/node': 18.15.11 + ts-toolbelt: 9.6.0 + tslib: 2.6.2 + typedarray-dts: 1.0.0 + + tsc-watch@6.0.4(typescript@5.5.2): + dependencies: + cross-spawn: 7.0.6 + node-cleanup: 2.1.2 + ps-tree: 1.2.0 + string-argv: 0.3.2 + typescript: 5.5.2 + + tsconfck@3.0.3(typescript@4.9.5): + optionalDependencies: + typescript: 4.9.5 + + tsconfck@3.0.3(typescript@5.0.3): + optionalDependencies: + typescript: 5.0.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.5.0: {} + + tslib@2.6.2: {} + + tsup@6.7.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5))(typescript@4.9.5): + dependencies: + bundle-require: 4.2.1(esbuild@0.17.19) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.3.6(supports-color@8.1.1) + esbuild: 0.17.19 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@4.9.5)) + resolve-from: 5.0.0 + rollup: 3.23.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.4.6(@swc/helpers@0.5.5) + postcss: 8.4.39 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + - ts-node + + tsutils@3.21.0(typescript@4.9.5): + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + + tsutils@3.21.0(typescript@5.0.3): + dependencies: + tslib: 1.14.1 + typescript: 5.0.3 + + tsutils@3.21.0(typescript@5.5.2): + dependencies: + tslib: 1.14.1 + typescript: 5.5.2 + + tsx@3.12.6: + dependencies: + '@esbuild-kit/cjs-loader': 2.4.4 + '@esbuild-kit/core-utils': 3.3.2 + '@esbuild-kit/esm-loader': 2.6.5 + optionalDependencies: + fsevents: 2.3.3 + + tuf-js@1.1.7: + dependencies: + '@tufjs/models': 1.0.4 + debug: 4.4.0(supports-color@5.5.0) + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + turbo-darwin-64@1.10.16: + optional: true + + turbo-darwin-arm64@1.10.16: + optional: true + + turbo-linux-64@1.10.16: + optional: true + + turbo-linux-arm64@1.10.16: + optional: true + + turbo-windows-64@1.10.16: + optional: true + + turbo-windows-arm64@1.10.16: + optional: true + + turbo@1.10.16: + optionalDependencies: + turbo-darwin-64: 1.10.16 + turbo-darwin-arm64: 1.10.16 + turbo-linux-64: 1.10.16 + turbo-linux-arm64: 1.10.16 + turbo-windows-64: 1.10.16 + turbo-windows-arm64: 1.10.16 + + tweetnacl@0.14.5: {} + + tweetnacl@1.0.3: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-detect@4.1.0: {} + + type-fest@0.13.1: {} + + type-fest@0.16.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.7.1: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + + type-fest@3.13.1: {} + + type-fest@4.12.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type-is@2.0.0: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.0 + + type@2.7.2: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.8 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.5: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.10 + + typed-emitter@2.1.0: + optionalDependencies: + rxjs: 7.8.1 + + typedarray-dts@1.0.0: {} + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typedarray@0.0.6: {} + + typeorm@0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + dotenv: 16.4.5 + glob: 10.3.10 + mkdirp: 2.1.6 + reflect-metadata: 0.2.1 + sha.js: 2.4.11 + tslib: 2.6.2 + uuid: 9.0.1 + yargs: 17.7.2 + optionalDependencies: + ioredis: 5.3.2 + mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) + mysql2: 3.13.0 + pg: 8.11.3 + redis: 4.6.13 + sqlite3: 5.1.7 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - supports-color + + typeorm@0.3.20(ioredis@5.3.2)(mysql2@3.13.0)(pg@8.13.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + dotenv: 16.4.5 + glob: 10.3.10 + mkdirp: 2.1.6 + reflect-metadata: 0.2.1 + sha.js: 2.4.11 + tslib: 2.6.2 + uuid: 9.0.1 + yargs: 17.7.2 + optionalDependencies: + ioredis: 5.3.2 + mysql2: 3.13.0 + pg: 8.13.3 + redis: 4.6.13 + sqlite3: 5.1.7 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + + typeorm@0.3.20(ioredis@5.6.0)(mysql2@3.13.0)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2)): + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + dotenv: 16.4.5 + glob: 10.3.10 + mkdirp: 2.1.6 + reflect-metadata: 0.2.1 + sha.js: 2.4.11 + tslib: 2.6.2 + uuid: 9.0.1 + yargs: 17.7.2 + optionalDependencies: + ioredis: 5.6.0 + mysql2: 3.13.0 + pg: 8.11.3 + redis: 4.6.13 + sqlite3: 5.1.7 + ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.5.2) + transitivePeerDependencies: + - supports-color + + typescript@4.9.5: {} + + typescript@5.0.3: {} + + typescript@5.5.2: {} + + ua-parser-js@0.7.37: {} + + ua-parser-js@1.0.37: {} + + ufo@1.5.4: {} + + uglify-js@3.19.2: {} + + uid-safe@2.1.5: + dependencies: + random-bytes: 1.0.0 + + uid2@0.0.4: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.8 + has-bigints: 1.0.2 + has-symbols: 1.1.0 + which-boxed-primitive: 1.0.2 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.3 + has-bigints: 1.0.2 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + unc-path-regex@0.1.2: {} + + uncrypto@0.1.3: {} + + unctx@2.3.1: + dependencies: + acorn: 8.11.3 + estree-walker: 3.0.3 + magic-string: 0.30.10 + unplugin: 1.9.0 + + undefsafe@2.0.5: {} + + underscore@1.12.1: {} + + underscore@1.13.6: {} + + undertaker-registry@1.0.1: {} + + undertaker@1.3.0: + dependencies: + arr-flatten: 1.1.0 + arr-map: 2.0.2 + bach: 1.2.0 + collection-map: 1.0.0 + es6-weak-map: 2.0.3 + fast-levenshtein: 1.1.4 + last-run: 1.1.1 + object.defaults: 1.1.0 + object.reduce: 1.0.1 + undertaker-registry: 1.0.1 + + undici-types@5.26.5: {} + + undici-types@6.20.0: {} + + undici@5.28.3: + dependencies: + '@fastify/busboy': 2.1.1 + + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + unenv@1.10.0: + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + + unicode-canonical-property-names-ecmascript@2.0.0: {} + + unicode-emoji-modifier-base@1.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 - toposort@2.0.2: {} + unicode-match-property-value-ecmascript@2.1.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + + unified@9.2.2: + dependencies: + '@types/unist': 2.0.10 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 4.1.0 + + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + unique-stream@2.3.1: + dependencies: + json-stable-stringify-without-jsonify: 1.0.1 + through2-filter: 3.0.0 + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + + unist-util-find-after@4.0.1: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + + unist-util-generated@2.0.1: {} + + unist-util-is@4.1.0: {} + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.10 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.10 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-stringify-position@2.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-visit-parents@3.1.1: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 4.1.0 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universal-user-agent@6.0.1: {} + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin@1.9.0: + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + + unquote@1.1.1: {} + + unset-value@2.0.1: + dependencies: + has-value: 2.0.2 + isobject: 4.0.0 + + untildify@4.0.0: {} + + upath@1.2.0: {} + + update-browserslist-db@1.0.13(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.1.1 + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@6.0.2: + dependencies: + boxen: 7.1.1 + chalk: 5.3.0 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.7.1 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 - totalist@1.1.0: {} + urix@0.1.0: {} - totalist@3.0.1: {} + url-join@4.0.1: {} + + url-loader@4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3): + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.90.3 + optionalDependencies: + file-loader: 6.2.0(webpack@5.90.3) + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 - touch@3.1.0: - dependencies: - nopt: 1.0.10 + url-template@2.0.8: {} - tough-cookie@2.5.0: - dependencies: - psl: 1.9.0 - punycode: 2.3.1 + url@0.10.3: + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 - tough-cookie@4.1.3: - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - tr46@0.0.3: {} - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tr46@2.1.0: - dependencies: - punycode: 2.3.1 - - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - - tr46@4.1.1: - dependencies: - punycode: 2.3.1 - - tree-kill@1.2.2: {} - - treeverse@1.0.4: {} - - trim-leading-lines@0.1.1: - dependencies: - is-whitespace: 0.3.0 - - trim-lines@3.0.1: {} - - trim-right@1.0.1: {} - - triple-beam@1.4.1: {} - - troika-three-text@0.49.1(three@0.168.0): - dependencies: - bidi-js: 1.0.3 - three: 0.168.0 - troika-three-utils: 0.49.0(three@0.168.0) - troika-worker-utils: 0.49.0 - webgl-sdf-generator: 1.1.1 - - troika-three-utils@0.49.0(three@0.168.0): - dependencies: - three: 0.168.0 - - troika-worker-utils@0.49.0: {} - - trough@1.0.5: {} - - trough@2.2.0: {} - - tryer@1.0.1: {} - - ts-api-utils@1.3.0(typescript@5.5.2): - dependencies: - typescript: 5.5.2 - - ts-interface-checker@0.1.13: {} - - ts-jest@29.2.5(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)))(typescript@5.5.2): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.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.5.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.24.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.0) - - ts-loader@9.5.1(typescript@4.9.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.16.0 - micromatch: 4.0.5 - semver: 7.6.0 - source-map: 0.7.4 - typescript: 4.9.5 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - - ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.15.11 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - - ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@5.0.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.15.11 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.0.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - optional: true - - ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.12 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - optional: true - - ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.12 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.5.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - - tsc-watch@6.0.4(typescript@5.5.2): - dependencies: - cross-spawn: 7.0.3 - node-cleanup: 2.1.2 - ps-tree: 1.2.0 - string-argv: 0.3.2 - typescript: 5.5.2 - - tsconfck@3.0.3(typescript@4.9.5): - optionalDependencies: - typescript: 4.9.5 - - tsconfck@3.0.3(typescript@5.0.3): - optionalDependencies: - typescript: 5.0.3 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@1.14.1: {} - - tslib@2.5.0: {} - - tslib@2.6.2: {} - - tsup@6.7.0(@swc/core@1.4.6(@swc/helpers@0.5.5))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5))(typescript@4.9.5): - dependencies: - bundle-require: 4.2.1(esbuild@0.17.19) - cac: 6.7.14 - chokidar: 3.6.0 - debug: 4.3.6(supports-color@5.5.0) - esbuild: 0.17.19 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 3.1.4(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@4.9.5)) - resolve-from: 5.0.0 - rollup: 3.23.0 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tree-kill: 1.2.2 - optionalDependencies: - '@swc/core': 1.4.6(@swc/helpers@0.5.5) - postcss: 8.4.39 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - ts-node - - tsutils@3.21.0(typescript@4.9.5): - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - - tsutils@3.21.0(typescript@5.0.3): - dependencies: - tslib: 1.14.1 - typescript: 5.0.3 - - tsutils@3.21.0(typescript@5.5.2): - dependencies: - tslib: 1.14.1 - typescript: 5.5.2 - - tsx@3.12.6: - dependencies: - '@esbuild-kit/cjs-loader': 2.4.4 - '@esbuild-kit/core-utils': 3.3.2 - '@esbuild-kit/esm-loader': 2.6.5 - optionalDependencies: - fsevents: 2.3.3 - - tuf-js@1.1.7: - dependencies: - '@tufjs/models': 1.0.4 - debug: 4.3.6(supports-color@5.5.0) - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - turbo-darwin-64@1.10.16: - optional: true - - turbo-darwin-arm64@1.10.16: - optional: true + use-composed-ref@1.3.0(react@18.2.0): + dependencies: + react: 18.2.0 - turbo-linux-64@1.10.16: - optional: true + use-isomorphic-layout-effect@1.1.2(@types/react@18.2.65)(react@18.2.0): + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.65 - turbo-linux-arm64@1.10.16: - optional: true + use-latest@1.2.1(@types/react@18.2.65)(react@18.2.0): + dependencies: + react: 18.2.0 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.65)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 - turbo-windows-64@1.10.16: - optional: true + use-sync-external-store@1.2.0(react@18.2.0): + dependencies: + react: 18.2.0 - turbo-windows-arm64@1.10.16: - optional: true + use@3.1.1: {} - turbo@1.10.16: - optionalDependencies: - turbo-darwin-64: 1.10.16 - turbo-darwin-arm64: 1.10.16 - turbo-linux-64: 1.10.16 - turbo-linux-arm64: 1.10.16 - turbo-windows-64: 1.10.16 - turbo-windows-arm64: 1.10.16 - - tweetnacl@0.14.5: {} - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.16.0: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.6.0: {} - - type-fest@0.7.1: {} - - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - - type-fest@2.19.0: {} - - type-fest@3.13.1: {} - - type-fest@4.12.0: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - type@2.7.2: {} - - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.5: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 + utf-8-validate@6.0.4: + dependencies: + node-gyp-build: 4.8.1 - typed-emitter@2.1.0: - optionalDependencies: - rxjs: 7.8.1 + utf8-byte-length@1.0.5: {} - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray@0.0.6: {} - - typeorm@0.3.20(ioredis@5.3.2)(mongodb@6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1))(mysql2@3.9.2)(pg@8.11.3)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2)): - dependencies: - '@sqltools/formatter': 1.2.5 - app-root-path: 3.1.0 - buffer: 6.0.3 - chalk: 4.1.2 - cli-highlight: 2.1.11 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) - dotenv: 16.4.5 - glob: 10.3.10 - mkdirp: 2.1.6 - reflect-metadata: 0.2.1 - sha.js: 2.4.11 - tslib: 2.6.2 - uuid: 9.0.1 - yargs: 17.7.2 - optionalDependencies: - ioredis: 5.3.2 - mongodb: 6.3.0(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.1) - mysql2: 3.9.2 - pg: 8.11.3 - redis: 4.6.13 - sqlite3: 5.1.7 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@20.12.12)(typescript@5.5.2) - transitivePeerDependencies: - - supports-color - - typeorm@0.3.20(ioredis@5.3.2)(mysql2@3.9.2)(pg@8.11.5)(redis@4.6.13)(sqlite3@5.1.7)(ts-node@10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5)): - dependencies: - '@sqltools/formatter': 1.2.5 - app-root-path: 3.1.0 - buffer: 6.0.3 - chalk: 4.1.2 - cli-highlight: 2.1.11 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) - dotenv: 16.4.5 - glob: 10.3.10 - mkdirp: 2.1.6 - reflect-metadata: 0.2.1 - sha.js: 2.4.11 - tslib: 2.6.2 - uuid: 9.0.1 - yargs: 17.7.2 - optionalDependencies: - ioredis: 5.3.2 - mysql2: 3.9.2 - pg: 8.11.5 - redis: 4.6.13 - sqlite3: 5.1.7 - ts-node: 10.9.2(@swc/core@1.4.6(@swc/helpers@0.5.5))(@types/node@18.15.11)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - - typescript@4.9.5: {} - - typescript@5.0.3: {} - - typescript@5.5.2: {} - - ua-parser-js@0.7.37: {} - - ua-parser-js@1.0.37: {} - - ufo@1.5.4: {} - - uglify-js@3.19.2: {} - - uid-safe@2.1.5: - dependencies: - random-bytes: 1.0.0 - - uid2@0.0.4: {} - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - - unc-path-regex@0.1.2: {} - - uncrypto@0.1.3: {} - - unctx@2.3.1: - dependencies: - acorn: 8.11.3 - estree-walker: 3.0.3 - magic-string: 0.30.8 - unplugin: 1.9.0 - - undefsafe@2.0.5: {} - - underscore@1.12.1: {} - - underscore@1.13.6: {} - - undertaker-registry@1.0.1: {} - - undertaker@1.3.0: - dependencies: - arr-flatten: 1.1.0 - arr-map: 2.0.2 - bach: 1.2.0 - collection-map: 1.0.0 - es6-weak-map: 2.0.3 - fast-levenshtein: 1.1.4 - last-run: 1.1.1 - object.defaults: 1.1.0 - object.reduce: 1.0.1 - undertaker-registry: 1.0.1 - - undici-types@5.26.5: {} - - undici@5.28.3: - dependencies: - '@fastify/busboy': 2.1.1 - - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 - - unenv@1.10.0: - dependencies: - consola: 3.2.3 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-emoji-modifier-base@1.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unified@10.1.2: - dependencies: - '@types/unist': 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.1 - - unified@9.2.2: - dependencies: - '@types/unist': 2.0.10 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - - union-value@0.2.4: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 0.4.3 - - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - - unique-filename@1.1.1: - dependencies: - unique-slug: 2.0.2 - - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 - - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-slug@2.0.2: - dependencies: - imurmurhash: 0.1.4 - - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - - unique-stream@2.3.1: - dependencies: - json-stable-stringify-without-jsonify: 1.0.1 - through2-filter: 3.0.0 - - unique-string@2.0.0: - dependencies: - crypto-random-string: 2.0.0 - - unique-string@3.0.0: - dependencies: - crypto-random-string: 4.0.0 - - unist-util-find-after@4.0.1: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - - unist-util-generated@2.0.1: {} - - unist-util-is@4.1.0: {} - - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.10 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.10 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.10 - - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.10 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-visit-parents@3.1.1: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 4.1.0 - - unist-util-visit-parents@5.1.3: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universal-user-agent@6.0.1: {} - - universalify@0.1.2: {} - - universalify@0.2.0: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - unplugin@1.9.0: - dependencies: - acorn: 8.11.3 - chokidar: 3.6.0 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.6.1 - - unquote@1.1.1: {} - - unset-value@0.1.2: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - - unset-value@1.0.0: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - - untildify@4.0.0: {} - - upath@1.2.0: {} - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.1 - - update-browserslist-db@1.1.0(browserslist@4.23.3): - dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 - - update-notifier@6.0.2: - dependencies: - boxen: 7.1.1 - chalk: 5.3.0 - configstore: 6.0.0 - has-yarn: 3.0.0 - import-lazy: 4.0.0 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - is-npm: 6.0.0 - is-yarn-global: 0.4.1 - latest-version: 7.0.0 - pupa: 3.1.0 - semver: 7.6.0 - semver-diff: 4.0.0 - xdg-basedir: 5.1.0 - - update@0.7.4: - dependencies: - arr-union: 3.1.0 - assemble-core: 0.25.0 - assemble-loader: 0.6.1 - base-cli-process: 0.1.19 - base-config-process: 0.1.9 - base-generators: 0.4.6 - base-questions: 0.7.4 - base-runtimes: 0.2.0 - base-store: 0.4.4 - common-config: 0.1.1 - data-store: 0.16.1 - export-files: 2.1.1 - extend-shallow: 2.0.1 - find-pkg: 0.1.2 - fs-exists-sync: 0.1.0 - global-modules: 0.2.3 - gulp-choose-files: 0.1.3 - is-valid-app: 0.2.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - log-utils: 0.2.1 - parser-front-matter: 1.6.4 - resolve-dir: 0.1.1 - resolve-file: 0.2.2 - set-blocking: 2.0.0 - strip-color: 0.1.0 - text-table: 0.2.0 - through2: 2.0.5 - yargs-parser: 2.4.1 - transitivePeerDependencies: - - supports-color - - upper-case@1.1.3: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - urix@0.1.0: {} - - url-join@4.0.1: {} - - url-loader@4.1.1(file-loader@6.2.0(webpack@5.90.3))(webpack@5.90.3): - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.90.3 - optionalDependencies: - file-loader: 6.2.0(webpack@5.90.3) - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - url-template@2.0.8: {} - - url@0.10.3: - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - - use-composed-ref@1.3.0(react@18.2.0): - dependencies: - react: 18.2.0 - - use-isomorphic-layout-effect@1.1.2(@types/react@18.2.65)(react@18.2.0): - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.65 - - use-latest@1.2.1(@types/react@18.2.65)(react@18.2.0): - dependencies: - react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.65)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - - use-sync-external-store@1.2.0(react@18.2.0): - dependencies: - react: 18.2.0 - - use@1.1.2: - dependencies: - define-property: 0.2.5 - isobject: 2.1.0 - - use@2.0.2: - dependencies: - define-property: 0.2.5 - isobject: 3.0.1 - lazy-cache: 2.0.2 - - use@3.1.1: {} - - utf-8-validate@6.0.4: - dependencies: - node-gyp-build: 4.8.1 - - util-deprecate@1.0.2: {} - - util.promisify@1.0.1: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.5 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.7 - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - utila@0.4.0: {} - - utility-types@3.11.0: {} - - utils-merge@1.0.1: {} - - uuid@10.0.0: {} + util-deprecate@1.0.2: {} - uuid@3.4.0: {} + util.promisify@1.0.1: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + has-symbols: 1.1.0 + object.getownpropertydescriptors: 2.1.7 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utila@0.4.0: {} + + utility-types@3.11.0: {} + + utils-merge@1.0.1: {} + + uuid@10.0.0: {} + + uuid@3.4.0: {} + + uuid@8.0.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} - uuid@8.0.0: {} + uuidv7@0.6.3: {} - uuid@8.3.2: {} + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 - uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} - uuidv7@0.6.3: {} - - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - - v8-compile-cache-lib@3.0.1: {} - - v8-compile-cache@2.4.0: {} - - v8-to-istanbul@8.1.1: - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 - source-map: 0.7.4 - - 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 - - v8flags@3.2.0: - dependencies: - homedir-polyfill: 1.0.3 - - vali-date@1.0.0: {} - - validate-html-nesting@1.2.2: {} - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - validate-npm-package-name@3.0.0: - dependencies: - builtins: 1.0.3 - - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.0.1 - - value-equal@1.0.1: {} - - value-or-function@3.0.0: {} - - vary@1.1.2: {} - - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - - vfile-location@5.0.2: - dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 - - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 2.0.3 - - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 3.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - - vfile@4.2.1: - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - - vfile@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - - vinyl-file@3.0.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - strip-bom-buf: 1.0.0 - strip-bom-stream: 2.0.0 - vinyl: 2.2.1 - - vinyl-fs@2.4.4: - dependencies: - duplexify: 3.7.1 - glob-stream: 5.3.5 - graceful-fs: 4.2.11 - gulp-sourcemaps: 1.6.0 - is-valid-glob: 0.3.0 - lazystream: 1.0.1 - lodash.isequal: 4.5.0 - merge-stream: 1.0.1 - mkdirp: 0.5.6 - object-assign: 4.1.1 - readable-stream: 2.3.8 - strip-bom: 2.0.0 - strip-bom-stream: 1.0.0 - through2: 2.0.5 - through2-filter: 2.0.0 - vali-date: 1.0.0 - vinyl: 1.2.0 - - vinyl-fs@3.0.3: - dependencies: - fs-mkdirp-stream: 1.0.0 - glob-stream: 6.1.0 - graceful-fs: 4.2.11 - is-valid-glob: 1.0.0 - lazystream: 1.0.1 - lead: 1.0.0 - object.assign: 4.1.5 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-bom-buffer: 3.0.0 - remove-bom-stream: 1.2.0 - resolve-options: 1.1.0 - through2: 2.0.5 - to-through: 2.0.0 - value-or-function: 3.0.0 - vinyl: 2.2.1 - vinyl-sourcemap: 1.1.0 - - vinyl-item@0.1.0: - dependencies: - base: 0.8.1 - base-option: 0.8.4 - base-plugins: 0.4.13 - clone: 1.0.4 - clone-stats: 1.0.0 - define-property: 0.2.5 - extend-shallow: 2.0.1 - isobject: 2.1.0 - lazy-cache: 2.0.2 - vinyl: 1.2.0 - transitivePeerDependencies: - - supports-color - - vinyl-sourcemap@1.1.0: - dependencies: - append-buffer: 1.0.2 - convert-source-map: 1.9.0 - graceful-fs: 4.2.11 - normalize-path: 2.1.1 - now-and-later: 2.0.1 - remove-bom-buffer: 3.0.0 - vinyl: 2.2.1 - - vinyl-view@0.1.2: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - engine-base: 0.1.3 - isobject: 2.1.0 - lazy-cache: 2.0.2 - mixin-deep: 1.3.2 - vinyl-item: 0.1.0 - transitivePeerDependencies: - - supports-color - - vinyl@1.2.0: - dependencies: - clone: 1.0.4 - clone-stats: 0.0.1 - replace-ext: 0.0.1 - - vinyl@2.2.1: - dependencies: - clone: 2.1.2 - clone-buffer: 1.0.0 - clone-stats: 1.0.0 - cloneable-readable: 1.1.3 - remove-trailing-separator: 1.1.0 - replace-ext: 1.0.1 - - vite-plugin-pwa@0.17.5(vite@5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0): - dependencies: - debug: 4.3.4(supports-color@8.1.1) - fast-glob: 3.3.2 - pretty-bytes: 6.1.1 - vite: 5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1) - workbox-build: 7.0.0(@types/babel__core@7.20.5) - workbox-window: 7.0.0 - transitivePeerDependencies: - - supports-color - - vite-plugin-react-js-support@1.0.7: - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - transitivePeerDependencies: - - supports-color - - vite-tsconfig-paths@4.3.1(typescript@4.9.5)(vite@4.5.2(@types/node@20.12.12)(sass@1.71.1)): - dependencies: - debug: 4.3.6(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@4.9.5) - optionalDependencies: - vite: 4.5.2(@types/node@20.12.12)(sass@1.71.1) - transitivePeerDependencies: - - supports-color - - typescript - - vite-tsconfig-paths@4.3.1(typescript@5.0.3)(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)): - dependencies: - debug: 4.3.6(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.0.3) - optionalDependencies: - vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) - transitivePeerDependencies: - - supports-color - - typescript - - vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.39 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 18.15.11 - fsevents: 2.3.3 - sass: 1.71.1 - terser: 5.29.1 - - vite@4.5.2(@types/node@20.12.12)(sass@1.71.1): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.39 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 20.12.12 - fsevents: 2.3.3 - sass: 1.71.1 - - vite@5.1.6(@types/node@20.12.12)(sass@1.71.1)(terser@5.29.1): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.39 - rollup: 4.13.0 - optionalDependencies: - '@types/node': 20.12.12 - fsevents: 2.3.3 - sass: 1.71.1 - terser: 5.29.1 - - vm2@3.9.19: - dependencies: - acorn: 8.11.3 - acorn-walk: 8.3.2 - - vue@3.4.31(typescript@5.5.2): - dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-sfc': 3.4.31 - '@vue/runtime-dom': 3.4.31 - '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.2)) - '@vue/shared': 3.4.31 - optionalDependencies: - typescript: 5.5.2 - - w3c-hr-time@1.0.2: - dependencies: - browser-process-hrtime: 1.0.0 - - w3c-keyname@2.2.8: {} - - w3c-xmlserializer@2.0.0: - dependencies: - xml-name-validator: 3.0.0 - - w3c-xmlserializer@4.0.0: - dependencies: - xml-name-validator: 4.0.0 - - wait-on@7.2.0(debug@4.3.4): - dependencies: - axios: 1.6.2(debug@4.3.4) - joi: 17.12.2 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - - walk-up-path@1.0.0: {} - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - warning-symbol@0.1.0: {} - - warning@4.0.3: - dependencies: - loose-envify: 1.4.0 - - watchpack@2.4.0: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wbuf@1.7.3: - dependencies: - minimalistic-assert: 1.0.1 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - weaviate-ts-client@1.6.0(encoding@0.1.13)(graphql@16.8.1): - dependencies: - graphql-request: 5.2.0(encoding@0.1.13)(graphql@16.8.1) - isomorphic-fetch: 3.0.0(encoding@0.1.13) - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - graphql - - weaviate-ts-client@2.1.1(encoding@0.1.13)(graphql@16.8.1): - dependencies: - graphql-request: 5.2.0(encoding@0.1.13)(graphql@16.8.1) - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - graphql - - web-namespaces@2.0.1: {} - - web-streams-polyfill@3.3.3: {} - - web-streams-polyfill@4.0.0-beta.3: {} - - webgl-sdf-generator@1.1.1: {} - - webidl-conversions@3.0.1: {} - - webidl-conversions@4.0.2: {} - - webidl-conversions@5.0.0: {} - - webidl-conversions@6.1.0: {} - - webidl-conversions@7.0.0: {} - - webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 - commander: 7.2.0 - debounce: 1.2.1 - escape-string-regexp: 4.0.0 - gzip-size: 6.0.0 - html-escaper: 2.0.2 - opener: 1.5.2 - picocolors: 1.0.1 - sirv: 2.0.4 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-bundle-analyzer@4.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - acorn: 8.11.3 - acorn-walk: 8.3.2 - chalk: 4.1.2 - commander: 7.2.0 - gzip-size: 6.0.0 - lodash: 4.17.21 - opener: 1.5.2 - sirv: 1.0.19 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-cli@5.1.4(webpack@5.90.3): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.3 - envinfo: 7.13.0 - fastest-levenshtein: 1.0.16 - import-local: 3.1.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - - webpack-dev-middleware@5.3.3(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - - webpack-dev-middleware@5.3.3(webpack@5.90.3): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.90.3 - - webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.18.3 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.1.0 - launch-editor: 2.6.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.3(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.18.3 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.1.0 - launch-editor: 2.6.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.3(webpack@5.90.3) - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - webpack: 5.90.3 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-manifest-plugin@4.1.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - tapable: 2.2.1 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - webpack-sources: 2.3.1 - - webpack-merge@5.10.0: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-node-externals@3.0.0: {} - - webpack-sources@1.4.3: - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - - webpack-sources@2.3.1: - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - - webpack-sources@3.2.3: {} - - webpack-virtual-modules@0.6.1: {} - - webpack@5.90.3: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.3) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack@5.90.3) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpackbar@5.0.2(webpack@5.90.3): - dependencies: - chalk: 4.1.2 - consola: 2.15.3 - pretty-time: 1.1.0 - std-env: 3.7.0 - webpack: 5.90.3 - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - whatwg-encoding@1.0.5: - dependencies: - iconv-lite: 0.4.24 - - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - - whatwg-fetch@3.6.20: {} - - whatwg-mimetype@2.3.0: {} - - whatwg-mimetype@3.0.0: {} - - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - - whatwg-url@12.0.1: - dependencies: - tr46: 4.1.1 - webidl-conversions: 7.0.0 - - whatwg-url@13.0.0: - dependencies: - tr46: 4.1.1 - webidl-conversions: 7.0.0 - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - whatwg-url@8.7.0: - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-builtin-type@1.1.3: - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - - 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.3 - - which-module@1.0.0: {} - - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@3.0.1: - dependencies: - isexe: 2.0.0 - - wicked-good-xpath@1.3.0: {} - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - widest-line@4.0.1: - dependencies: - string-width: 5.1.2 - - wikipedia@2.1.2: - dependencies: - axios: 1.6.2(debug@4.3.4) - infobox-parser: 3.6.4 - transitivePeerDependencies: - - debug - - wildcard@2.0.1: {} - - wink-nlp@2.3.0: {} - - winston-transport@4.7.0: - dependencies: - logform: 2.6.0 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - - winston@3.12.0: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.5 - is-stream: 2.0.1 - logform: 2.6.0 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.7.0 - - word-wrap@1.2.5: {} - - wordnet-db@3.1.14: {} - - wordwrap@1.0.0: {} - - workbox-background-sync@6.6.0: - dependencies: - idb: 7.1.1 - workbox-core: 6.6.0 - - workbox-background-sync@7.0.0: - dependencies: - idb: 7.1.1 - workbox-core: 7.0.0 - - workbox-broadcast-update@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-broadcast-update@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-build@6.6.0(@types/babel__core@7.20.5): - dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.13.0) - '@babel/core': 7.24.0 - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) - '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.13.0 - common-tags: 1.8.2 - fast-json-stable-stringify: 2.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - lodash: 4.17.21 - pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-terser: 7.0.2(rollup@2.79.1) - source-map: 0.8.0-beta.0 - stringify-object: 3.3.0 - strip-comments: 2.0.1 - tempy: 0.6.0 - upath: 1.2.0 - workbox-background-sync: 6.6.0 - workbox-broadcast-update: 6.6.0 - workbox-cacheable-response: 6.6.0 - workbox-core: 6.6.0 - workbox-expiration: 6.6.0 - workbox-google-analytics: 6.6.0 - workbox-navigation-preload: 6.6.0 - workbox-precaching: 6.6.0 - workbox-range-requests: 6.6.0 - workbox-recipes: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - workbox-streams: 6.6.0 - workbox-sw: 6.6.0 - workbox-window: 6.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - workbox-build@7.0.0(@types/babel__core@7.20.5): - dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.13.0) - '@babel/core': 7.24.0 - '@babel/preset-env': 7.24.5(@babel/core@7.24.0) - '@babel/runtime': 7.24.0 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.0)(@types/babel__core@7.20.5)(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) - '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.13.0 - common-tags: 1.8.2 - fast-json-stable-stringify: 2.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - lodash: 4.17.21 - pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-terser: 7.0.2(rollup@2.79.1) - source-map: 0.8.0-beta.0 - stringify-object: 3.3.0 - strip-comments: 2.0.1 - tempy: 0.6.0 - upath: 1.2.0 - workbox-background-sync: 7.0.0 - workbox-broadcast-update: 7.0.0 - workbox-cacheable-response: 7.0.0 - workbox-core: 7.0.0 - workbox-expiration: 7.0.0 - workbox-google-analytics: 7.0.0 - workbox-navigation-preload: 7.0.0 - workbox-precaching: 7.0.0 - workbox-range-requests: 7.0.0 - workbox-recipes: 7.0.0 - workbox-routing: 7.0.0 - workbox-strategies: 7.0.0 - workbox-streams: 7.0.0 - workbox-sw: 7.0.0 - workbox-window: 7.0.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - workbox-cacheable-response@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-cacheable-response@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-core@6.6.0: {} - - workbox-core@7.0.0: {} - - workbox-expiration@6.6.0: - dependencies: - idb: 7.1.1 - workbox-core: 6.6.0 - - workbox-expiration@7.0.0: - dependencies: - idb: 7.1.1 - workbox-core: 7.0.0 - - workbox-google-analytics@6.6.0: - dependencies: - workbox-background-sync: 6.6.0 - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - - workbox-google-analytics@7.0.0: - dependencies: - workbox-background-sync: 7.0.0 - workbox-core: 7.0.0 - workbox-routing: 7.0.0 - workbox-strategies: 7.0.0 - - workbox-navigation-preload@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-navigation-preload@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-precaching@6.6.0: - dependencies: - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - - workbox-precaching@7.0.0: - dependencies: - workbox-core: 7.0.0 - workbox-routing: 7.0.0 - workbox-strategies: 7.0.0 - - workbox-range-requests@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-range-requests@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-recipes@6.6.0: - dependencies: - workbox-cacheable-response: 6.6.0 - workbox-core: 6.6.0 - workbox-expiration: 6.6.0 - workbox-precaching: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - - workbox-recipes@7.0.0: - dependencies: - workbox-cacheable-response: 7.0.0 - workbox-core: 7.0.0 - workbox-expiration: 7.0.0 - workbox-precaching: 7.0.0 - workbox-routing: 7.0.0 - workbox-strategies: 7.0.0 - - workbox-routing@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-routing@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-strategies@6.6.0: - dependencies: - workbox-core: 6.6.0 - - workbox-strategies@7.0.0: - dependencies: - workbox-core: 7.0.0 - - workbox-streams@6.6.0: - dependencies: - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - - workbox-streams@7.0.0: - dependencies: - workbox-core: 7.0.0 - workbox-routing: 7.0.0 - - workbox-sw@6.6.0: {} - - workbox-sw@7.0.0: {} - - workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): - dependencies: - fast-json-stable-stringify: 2.1.0 - pretty-bytes: 5.6.0 - upath: 1.2.0 - webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) - webpack-sources: 1.4.3 - workbox-build: 6.6.0(@types/babel__core@7.20.5) - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - - workbox-window@6.6.0: - dependencies: - '@types/trusted-types': 2.0.7 - workbox-core: 6.6.0 - - workbox-window@7.0.0: - dependencies: - '@types/trusted-types': 2.0.7 - workbox-core: 7.0.0 - - wrap-ansi@2.1.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - 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 + v8-compile-cache@2.4.0: {} - wrappy@1.0.2: {} + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + 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 + + v8flags@3.2.0: + dependencies: + homedir-polyfill: 1.0.3 + + vali-date@1.0.0: {} + + validate-html-nesting@1.2.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@3.0.0: + dependencies: + builtins: 1.0.3 + + validate-npm-package-name@5.0.0: + dependencies: + builtins: 5.0.1 + + validator@13.12.0: {} + + value-equal@1.0.1: {} + + value-or-function@3.0.0: {} + + vary@1.1.2: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vfile-location@5.0.2: + dependencies: + '@types/unist': 3.0.2 + vfile: 6.0.1 + + vfile-message@2.0.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 2.0.3 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + + vfile@4.2.1: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + + vinyl-file@3.0.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + strip-bom-buf: 1.0.0 + strip-bom-stream: 2.0.0 + vinyl: 2.2.1 + + vinyl-fs@3.0.3: + dependencies: + fs-mkdirp-stream: 1.0.0 + glob-stream: 6.1.0 + graceful-fs: 4.2.11 + is-valid-glob: 1.0.0 + lazystream: 1.0.1 + lead: 1.0.0 + object.assign: 4.1.5 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-bom-buffer: 3.0.0 + remove-bom-stream: 1.2.0 + resolve-options: 1.1.0 + through2: 2.0.5 + to-through: 2.0.0 + value-or-function: 3.0.0 + vinyl: 2.2.1 + vinyl-sourcemap: 1.1.0 + + vinyl-sourcemap@1.1.0: + dependencies: + append-buffer: 1.0.2 + convert-source-map: 1.9.0 + graceful-fs: 4.2.11 + normalize-path: 2.1.1 + now-and-later: 2.0.1 + remove-bom-buffer: 3.0.0 + vinyl: 2.2.1 + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vite-plugin-pwa@0.17.5(vite@5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + fast-glob: 3.3.2 + pretty-bytes: 6.1.1 + vite: 5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1) + workbox-build: 7.0.0(@types/babel__core@7.20.5) + workbox-window: 7.0.0 + transitivePeerDependencies: + - supports-color + + vite-plugin-react-js-support@1.0.7: + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + vite-tsconfig-paths@4.3.1(typescript@4.9.5)(vite@4.5.2(@types/node@22.13.9)(sass@1.71.1)): + dependencies: + debug: 4.4.0(supports-color@5.5.0) + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@4.9.5) + optionalDependencies: + vite: 4.5.2(@types/node@22.13.9)(sass@1.71.1) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@4.3.1(typescript@5.0.3)(vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1)): + dependencies: + debug: 4.4.0(supports-color@5.5.0) + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.0.3) + optionalDependencies: + vite: 4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1) + transitivePeerDependencies: + - supports-color + - typescript + + vite@4.5.2(@types/node@18.15.11)(sass@1.71.1)(terser@5.29.1): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.39 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 18.15.11 + fsevents: 2.3.3 + sass: 1.71.1 + terser: 5.29.1 + + vite@4.5.2(@types/node@22.13.9)(sass@1.71.1): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.39 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 22.13.9 + fsevents: 2.3.3 + sass: 1.71.1 + + vite@5.1.6(@types/node@22.13.9)(sass@1.71.1)(terser@5.29.1): + dependencies: + esbuild: 0.19.12 + postcss: 8.4.39 + rollup: 4.13.0 + optionalDependencies: + '@types/node': 22.13.9 + fsevents: 2.3.3 + sass: 1.71.1 + terser: 5.29.1 + + vue@3.4.31(typescript@5.5.2): + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.2)) + '@vue/shared': 3.4.31 + optionalDependencies: + typescript: 5.5.2 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-keyname@2.2.8: {} + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + wait-on@7.2.0(debug@4.3.4): + dependencies: + axios: 1.7.9(debug@4.3.4) + joi: 17.12.2 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + + walk-up-path@1.0.0: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + warning@4.0.3: + dependencies: + loose-envify: 1.4.0 + + watchpack@2.4.0: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + weaviate-ts-client@1.6.0(encoding@0.1.13)(graphql@16.8.1): + dependencies: + graphql-request: 5.2.0(encoding@0.1.13)(graphql@16.8.1) + isomorphic-fetch: 3.0.0(encoding@0.1.13) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - graphql + + weaviate-ts-client@2.1.1(encoding@0.1.13)(graphql@16.8.1): + dependencies: + graphql-request: 5.2.0(encoding@0.1.13)(graphql@16.8.1) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - graphql + + web-namespaces@2.0.1: {} + + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + web-streams-polyfill@4.1.0: {} + + webgl-sdf-generator@1.1.1: {} + + webidl-conversions@3.0.1: {} + + webidl-conversions@4.0.2: {} + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webidl-conversions@7.0.0: {} + + webpack-bundle-analyzer@4.10.2(bufferutil@4.0.8): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + opener: 1.5.2 + picocolors: 1.0.1 + sirv: 2.0.4 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-bundle-analyzer@4.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-cli@5.1.4(webpack@5.90.3): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.90.3))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.6 + envinfo: 7.13.0 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + + webpack-dev-middleware@7.4.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + colorette: 2.0.20 + memfs: 4.17.0 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + + webpack-dev-middleware@7.4.2(webpack@5.90.3): + dependencies: + colorette: 2.0.20 + memfs: 4.17.0 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.90.3 + + webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 3.0.3 + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + webpack-dev-server@4.15.1(bufferutil@4.0.8)(webpack@5.90.3): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 3.0.3 + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.90.3) + ws: 8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + webpack: 5.90.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + webpack-manifest-plugin@4.1.1(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + tapable: 2.2.1 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + webpack-sources: 2.3.1 + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-node-externals@3.0.0: {} + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@2.3.1: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.1: {} + + webpack@5.90.3: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.3) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack@5.90.3) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpackbar@5.0.2(webpack@5.90.3): + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.7.0 + webpack: 5.90.3 + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@2.3.0: {} + + whatwg-mimetype@3.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@12.0.1: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@13.0.0: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.1.1 + is-symbol: 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 + + which-builtin-type@1.1.3: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.0.10 + 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 + + 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.3 + + which-module@1.0.0: {} + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + wicked-good-xpath@1.3.0: {} + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + wikipedia@2.1.2: + dependencies: + axios: 1.7.9(debug@4.3.4) + infobox-parser: 3.6.4 + transitivePeerDependencies: + - debug + + wildcard@2.0.1: {} + + wink-nlp@2.3.0: {} + + winston-transport@4.7.0: + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.12.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.7.0 + + word-wrap@1.2.5: {} + + wordnet-db@3.1.14: {} + + wordwrap@1.0.0: {} + + workbox-background-sync@6.6.0: + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + + workbox-background-sync@7.0.0: + dependencies: + idb: 7.1.1 + workbox-core: 7.0.0 + + workbox-broadcast-update@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-broadcast-update@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-build@6.6.0(@types/babel__core@7.20.5): + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.13.0) + '@babel/core': 7.26.9 + '@babel/preset-env': 7.24.0(@babel/core@7.26.9) + '@babel/runtime': 7.24.0 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.13.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.6.0 + workbox-broadcast-update: 6.6.0 + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-google-analytics: 6.6.0 + workbox-navigation-preload: 6.6.0 + workbox-precaching: 6.6.0 + workbox-range-requests: 6.6.0 + workbox-recipes: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + workbox-streams: 6.6.0 + workbox-sw: 6.6.0 + workbox-window: 6.6.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-build@7.0.0(@types/babel__core@7.20.5): + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.13.0) + '@babel/core': 7.26.9 + '@babel/preset-env': 7.24.5(@babel/core@7.26.9) + '@babel/runtime': 7.24.0 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.13.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-cacheable-response@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-cacheable-response@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-core@6.6.0: {} + + workbox-core@7.0.0: {} + + workbox-expiration@6.6.0: + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + + workbox-expiration@7.0.0: + dependencies: + idb: 7.1.1 + workbox-core: 7.0.0 + + workbox-google-analytics@6.6.0: + dependencies: + workbox-background-sync: 6.6.0 + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-google-analytics@7.0.0: + dependencies: + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + + workbox-navigation-preload@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-navigation-preload@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-precaching@6.6.0: + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-precaching@7.0.0: + dependencies: + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + + workbox-range-requests@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-range-requests@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-recipes@6.6.0: + dependencies: + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-precaching: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-recipes@7.0.0: + dependencies: + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + + workbox-routing@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-routing@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-strategies@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-strategies@7.0.0: + dependencies: + workbox-core: 7.0.0 + + workbox-streams@6.6.0: + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + + workbox-streams@7.0.0: + dependencies: + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + + workbox-sw@6.6.0: {} + + workbox-sw@7.0.0: {} + + workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5))): + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.90.3(@swc/core@1.4.6(@swc/helpers@0.5.5)) + webpack-sources: 1.4.3 + workbox-build: 6.6.0(@types/babel__core@7.20.5) + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-window@6.6.0: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 6.6.0 + + workbox-window@7.0.0: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 7.0.0 + + wrap-ansi@2.1.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + 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 - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 + wrappy@1.0.2: {} - write-json@0.2.2: - dependencies: - write: 0.2.1 + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 - write@0.2.1: - dependencies: - mkdirp: 0.5.6 + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 - ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 - ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 - ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 - ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 - - ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 - - xdg-basedir@5.1.0: {} - - xdg-default-browser@2.1.0: - dependencies: - execa: 0.2.2 - titleize: 1.0.1 - - xml-js@1.6.11: - dependencies: - sax: 1.2.4 - - xml-name-validator@3.0.0: {} - - xml-name-validator@4.0.0: {} - - xml2js@0.5.0: - dependencies: - sax: 1.2.4 - xmlbuilder: 11.0.1 - - xml2js@0.6.2: - dependencies: - sax: 1.2.1 - xmlbuilder: 11.0.1 - - xmlbuilder@10.1.1: {} - - xmlbuilder@11.0.1: {} - - xmlchars@2.2.0: {} - - xmldom-sre@0.1.31: {} - - xmlhttprequest-ssl@2.0.0: {} - - xtend@4.0.2: {} - - y18n@3.2.2: {} - - y18n@5.0.8: {} - - yallist@2.1.2: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yaml@2.3.1: {} - - yaml@2.4.1: {} - - yargs-parser@2.4.1: - dependencies: - camelcase: 3.0.0 - lodash.assign: 4.2.0 - - yargs-parser@20.2.9: {} - - yargs-parser@21.1.1: {} - - yargs-parser@5.0.1: - dependencies: - camelcase: 3.0.0 - object.assign: 4.1.5 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.1.2 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yargs@17.7.1: - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - 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 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - 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 - - yargs@7.1.2: - dependencies: - camelcase: 3.0.0 - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - y18n: 3.2.2 - yargs-parser: 5.0.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yeoman-environment@3.19.3: - dependencies: - '@npmcli/arborist': 4.3.1 - are-we-there-yet: 2.0.0 - arrify: 2.0.1 - binaryextensions: 4.19.0 - chalk: 4.1.2 - cli-table: 0.3.11 - commander: 7.1.0 - dateformat: 4.6.3 - debug: 4.3.6(supports-color@5.5.0) - diff: 5.2.0 - error: 10.4.0 - escape-string-regexp: 4.0.0 - execa: 5.1.1 - find-up: 5.0.0 - globby: 11.1.0 - grouped-queue: 2.0.0 - inquirer: 8.2.6 - is-scoped: 2.1.0 - isbinaryfile: 4.0.10 - lodash: 4.17.21 - log-symbols: 4.1.0 - mem-fs: 2.3.0 - mem-fs-editor: 9.7.0(mem-fs@2.3.0) - minimatch: 3.1.2 - npmlog: 5.0.1 - p-queue: 6.6.2 - p-transform: 1.3.0 - pacote: 12.0.3 - preferred-pm: 3.1.3 - pretty-bytes: 5.6.0 - readable-stream: 4.5.2 - semver: 7.6.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - text-table: 0.2.0 - textextensions: 5.16.0 - untildify: 4.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - - yeoman-generator@5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3): - dependencies: - chalk: 4.1.2 - dargs: 7.0.0 - debug: 4.3.6(supports-color@5.5.0) - execa: 5.1.1 - github-username: 6.0.0(encoding@0.1.13) - lodash: 4.17.21 - mem-fs-editor: 9.7.0(mem-fs@2.3.0) - minimist: 1.2.8 - pacote: 15.2.0 - read-pkg-up: 7.0.1 - run-async: 2.4.1 - semver: 7.6.0 - shelljs: 0.8.5 - sort-keys: 4.2.0 - text-table: 0.2.0 - optionalDependencies: - yeoman-environment: 3.19.3 - transitivePeerDependencies: - - bluebird - - encoding - - mem-fs - - supports-color - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - yocto-queue@1.1.1: {} - - youtube-transcript@1.2.1: {} - - yup@0.32.11: - dependencies: - '@babel/runtime': 7.24.0 - '@types/lodash': 4.17.4 - lodash: 4.17.21 - lodash-es: 4.17.21 - nanoclone: 0.2.1 - property-expr: 2.0.6 - toposort: 2.0.2 - - zod-to-json-schema@3.22.4(zod@3.22.4): - dependencies: - zod: 3.22.4 - - zod-to-json-schema@3.22.5(zod@3.22.4): - dependencies: - zod: 3.22.4 - - zod-to-json-schema@3.23.1(zod@3.22.4): - dependencies: - zod: 3.22.4 - - zod-to-json-schema@3.23.1(zod@3.23.8): - dependencies: - zod: 3.23.8 - - zod-validation-error@3.3.0(zod@3.22.4): - dependencies: - zod: 3.22.4 - - zod@3.22.4: {} - - zod@3.23.8: {} - - zustand@4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0): - dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.65 - immer: 9.0.21 - react: 18.2.0 - - zwitch@1.0.5: {} - - zwitch@2.0.4: {} + ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 + + ws@8.18.1(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 + + xdg-basedir@5.1.0: {} + + xdg-default-browser@2.1.0: + dependencies: + execa: 0.2.2 + titleize: 1.0.1 + + xml-js@1.6.11: + dependencies: + sax: 1.2.4 + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xml2js@0.5.0: + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + + xml2js@0.6.2: + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + + xmlbuilder@10.1.1: {} + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmldom-sre@0.1.31: {} + + xmlhttprequest-ssl@2.0.0: {} + + xtend@4.0.2: {} + + y18n@3.2.2: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yaml@2.0.0-1: {} + + yaml@2.3.1: {} + + yaml@2.4.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs-parser@5.0.1: + dependencies: + camelcase: 3.0.0 + object.assign: 4.1.5 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.1: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + 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 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + 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 + + yargs@7.1.2: + dependencies: + camelcase: 3.0.0 + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + os-locale: 1.4.0 + read-pkg-up: 1.0.1 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 1.0.2 + which-module: 1.0.0 + y18n: 3.2.2 + yargs-parser: 5.0.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yeoman-environment@3.19.3: + dependencies: + '@npmcli/arborist': 4.3.1 + are-we-there-yet: 2.0.0 + arrify: 2.0.1 + binaryextensions: 4.19.0 + chalk: 4.1.2 + cli-table: 0.3.11 + commander: 7.1.0 + dateformat: 4.6.3 + debug: 4.4.0(supports-color@5.5.0) + diff: 5.2.0 + error: 10.4.0 + escape-string-regexp: 4.0.0 + execa: 5.1.1 + find-up: 5.0.0 + globby: 11.1.0 + grouped-queue: 2.0.0 + inquirer: 8.2.6 + is-scoped: 2.1.0 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log-symbols: 4.1.0 + mem-fs: 2.3.0 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimatch: 3.1.2 + npmlog: 5.0.1 + p-queue: 6.6.2 + p-transform: 1.3.0 + pacote: 12.0.3 + preferred-pm: 3.1.3 + pretty-bytes: 5.6.0 + readable-stream: 4.5.2 + semver: 7.7.1 + slash: 3.0.0 + strip-ansi: 6.0.1 + text-table: 0.2.0 + textextensions: 5.16.0 + untildify: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + yeoman-generator@5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3): + dependencies: + chalk: 4.1.2 + dargs: 7.0.0 + debug: 4.4.0(supports-color@5.5.0) + execa: 5.1.1 + github-username: 6.0.0(encoding@0.1.13) + lodash: 4.17.21 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimist: 1.2.8 + pacote: 15.2.0 + read-pkg-up: 7.0.1 + run-async: 2.4.1 + semver: 7.7.1 + shelljs: 0.8.5 + sort-keys: 4.2.0 + text-table: 0.2.0 + optionalDependencies: + yeoman-environment: 3.19.3 + transitivePeerDependencies: + - bluebird + - encoding + - mem-fs + - supports-color + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + youtube-transcript@1.2.1: {} + + yup@0.32.11: + dependencies: + '@babel/runtime': 7.24.0 + '@types/lodash': 4.17.16 + lodash: 4.17.21 + lodash-es: 4.17.21 + nanoclone: 0.2.1 + property-expr: 2.0.6 + toposort: 2.0.2 + + z-schema@5.0.5: + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.12.0 + optionalDependencies: + commander: 9.5.0 + + zod-to-json-schema@3.22.4(zod@3.22.4): + dependencies: + zod: 3.22.4 + + zod-to-json-schema@3.22.5(zod@3.22.4): + dependencies: + zod: 3.22.4 + + zod-to-json-schema@3.23.1(zod@3.22.4): + dependencies: + zod: 3.22.4 + + zod-to-json-schema@3.23.1(zod@3.24.2): + dependencies: + zod: 3.24.2 + + zod-to-json-schema@3.24.3(zod@3.22.4): + dependencies: + zod: 3.22.4 + + zod-to-json-schema@3.24.3(zod@3.24.2): + dependencies: + zod: 3.24.2 + + zod-validation-error@3.3.0(zod@3.22.4): + dependencies: + zod: 3.22.4 + + zod@3.22.4: {} + + zod@3.24.2: {} + + zustand@4.5.2(@types/react@18.2.65)(immer@9.0.21)(react@18.2.0): + dependencies: + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.65 + immer: 9.0.21 + react: 18.2.0 + + zwitch@1.0.5: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a56c46910ae..3c47c29cd38 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,3 +8,4 @@ packages: - 'packages/embed' - 'packages/embed-react' - 'packages/docs' + - 'packages/api-documentation' diff --git a/turbo.json b/turbo.json index b3c56f19355..0e78d6cfce5 100644 --- a/turbo.json +++ b/turbo.json @@ -17,6 +17,7 @@ "AWS_S3_BUCKET", "AWS_S3_REGION", "AWS_SECRET_ACCESS_KEY", + "CHATFLOW_DOMAIN_OVERRIDE", "DATABASE_PORT", "DATABASE_URL", "DATABASE_URL", @@ -48,6 +49,7 @@ "NEXT_PUBLIC_GOOGLE_DEVELOPER_KEY", "NEXT_PUBLIC_GOOGLE_CLIENT_ID" ], + "pipeline": { "//#dev-docker": { "cache": false @@ -64,6 +66,11 @@ "//#db:studio": { "cache": false }, + "flowise-components:build": { + "cache": false, + "dependsOn": ["^build"], + "outputs": ["dist/**", "build/**", ".next/**"] + }, "build": { "dependsOn": ["^build"], "outputs": ["dist/**", "build/**", ".next/**"], @@ -86,7 +93,6 @@ "outputs": ["dist/**"] }, "db#build": { - "dependsOn": [], "outputs": ["dist/**", "generated/**"], "outputMode": "new-only"