diff --git a/.dockerignore b/.dockerignore index 42d24d3..e1bc687 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ .vscode/ node_modules/ dist/ +upload/ npm-debug.log \ No newline at end of file diff --git a/.env.dev b/.env.dev index 8e9d986..bb7c9bc 100644 --- a/.env.dev +++ b/.env.dev @@ -3,6 +3,11 @@ SITE_ROOT_DOMAIN=localhost SITE_ROOT_URL=http://localhost:3000 SITE_API_URL=${SITE_ROOT_URL}/api FRONTEND_SITE_URL=http://localhost:3030 +FRONTEND_DOCS_URL=http://localhost:4000 +FRONTEND_APP_URL=http://localhost:8000 + +# must be in .env, default 1M +REQUEST_BODY_LIMIT=1048576 LOG_LEVEL=debug # default to stdout @@ -10,19 +15,22 @@ LOG_LEVEL=debug # async log buffer length LOG_BUFFER_LENGTH=4096 -LOG_LEVELS_PRISMA=["query","info","warn","error"] +LOG_LEVELS_PRISMA=[{"emit":"event", "level":"query"},"info","warn","error"] ALLOW_CORS=1 -POSTGRES_USER=postgres -POSTGRES_PASSWORD=postgres -POSTGRES_DB=botlet +POSTGRES_HOST=nest-postgres +POSTGRES_PORT=5432 +POSTGRES_USER=callgent +POSTGRES_PASSWORD=cAllgent123 +POSTGRES_DB=callgent # See https://www.prisma.io/docs/concepts/database-connectors/postgres -DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@nest-postgres:5432/${POSTGRES_DB}?schema=public&timezone=UTC +DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public&timezone=UTC # To have acccess to the database container from your local machine # use the DATABASE_URL below which replaces nest-postgres (container name) with localhost -DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?schema=public&timezone=UTC +# DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public&timezone=UTC +PRISMA_TRANSACTION_TIMEOUT=120000000 DEFAULT_API_VERSION='1' DOCUMENTATION_VERSION='0.0.1' # DEV_ONLY no doc/test data generated if null @@ -41,12 +49,34 @@ GITHUB_OAUTH_CLIENT_SECRET = 76dc98b5554636b5c924cd4854ad3f62e4f0cc3b GOOGLE_OAUTH_CLIENT_ID = 183236050953-rg2khnknb0tif2a5urepho0k22call16.apps.googleusercontent.com GOOGLE_OAUTH_CLIENT_SECRET = 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 -LLM_MODEL=mistralai/mistral-small +# LLM_MODELS=["anthropic/claude-3.5-sonnet"] # "openai/gpt-4o-2024-08-06"] # "openai/gpt-4o-mini"] +LLM_CHAT_URL=https://openrouter.ai/api/v1/chat/completions +LLM_COMPLETION_URL=https://openrouter.ai/api/v1/chat/completions +LLM_MODELS=["google/gemini-flash-1.5-8b-exp","meta-llama/llama-3.1-70b-instruct:free","nousresearch/hermes-3-llama-3.1-405b:free"] LLM_CACHE_ENABLE=1 -OPENROUTER_API_KEY=sk-or-v1-your-api-key -BOTLET_SITE_URL=https://botlet.io -BOTLET_SITE_NAME=Botlet.IO +LLM_API_KEY=sk-or-v1-your-api-key +CALLGENT_SITE_URL=https://callgent.com +CALLGENT_SITE_NAME=Callgent.com EMAIL_DEFAULT_SENDER={"name": "Callgent", "email": "noreply@callgent.com"} +EMAIL_RELAY_HOST=mytest.callgent.com + # https://app.brevo.com/settings/keys/api EMAIL_BREVO_API_KEY=key +EMAIL_SPARKPOST_API_KEY=xxx +EMAIL_SPARKPOST_RELAY_CLIENT_ID=spark-post-relayer +EMAIL_SPARKPOST_RELAY_CLIENT_SECRET=xxx +EMAIL_SPARKPOST_RELAY_EXPIRES_IN=86400 + +# slow sql threshold, default 10000 +SLOW_SQL_THRESHOLD=10000 + +WEBPAGE_PACKAGES_COMPONENT=["vue@3.5.12","vue-router@4.4.5","element-plus@2.8.6","vee-validate@4.14.6","yup@1.4.0","pinia@2.2.4","axios@1.7.7"] +WEBPAGE_PACKAGES_STORE=[] + +UPLOAD_BASE_DIR=./upload + +# stripe: https://dashboard.stripe.com/test/dashboard +STRIPE_KEY=xxx +STRIPE_WEBHOOK_SECRET=whsec_pigSfZrD8Xr51Qa2e8EyYjsh3XdVLXb4 +STRIPE_API_VERSION=2024-12-18.acacia \ No newline at end of file diff --git a/.env.test b/.env.test index a7b8cf7..fb9bd90 100644 --- a/.env.test +++ b/.env.test @@ -3,6 +3,8 @@ SITE_ROOT_DOMAIN=localhost SITE_ROOT_URL=http://localhost:3000 SITE_API_URL=${SITE_ROOT_URL}/api FRONTEND_SITE_URL=http://localhost:3030 +FRONTEND_DOCS_URL=http://localhost:4000 +FRONTEND_APP_URL=http://localhost:8000 LOG_LEVEL=debug # default to stdout @@ -10,12 +12,12 @@ LOG_LEVEL=debug # async log buffer length LOG_BUFFER_LENGTH=4096 -LOG_LEVELS_PRISMA=["query","info","warn","error"] +LOG_LEVELS_PRISMA=[{"emit":"event", "level":"query"},"info","warn","error"] POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres -POSTGRES_DB=botlet +POSTGRES_DB=callgent # See https://www.prisma.io/docs/concepts/database-connectors/postgres DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@nest-postgres:5432/${POSTGRES_DB}?schema=public&timezone=UTC @@ -40,14 +42,26 @@ GITHUB_OAUTH_CLIENT_SECRET = 76dc98b5554636b5c924cd4854ad3f62e4f0cc3b GOOGLE_OAUTH_CLIENT_ID = 183236050953-rg2khnknb0tif2a5urepho0k22call16.apps.googleusercontent.com GOOGLE_OAUTH_CLIENT_SECRET = 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 -TEST_CANNY_IO_API_KEY=567b9c2f-9708-3ccb-4189-e0a5f4e130ba - -LLM_MODEL=mistralai/mistral-small +LLM_CHAT_URL=https://openrouter.ai/api/v1/chat/completions +LLM_COMPLETION_URL=https://openrouter.ai/api/v1/chat/completions +LLM_MODELS=["google/gemini-flash-1.5-8b-exp","meta-llama/llama-3.1-70b-instruct:free","nousresearch/hermes-3-llama-3.1-405b:free"] LLM_CACHE_ENABLE=1 -OPENROUTER_API_KEY=sk-or-v1-your-api-key -BOTLET_SITE_URL=https://botlet.io -BOTLET_SITE_NAME=Botlet.IO +LLM_API_KEY=sk-or-v1-your-api-key +CALLGENT_SITE_URL=https://callgent.com +CALLGENT_SITE_NAME=Callgent.com EMAIL_DEFAULT_SENDER={"name": "Callgent", "email": "noreply@callgent.com"} +EMAIL_RELAY_HOST=mytest.callgent.com + # https://app.brevo.com/settings/keys/api EMAIL_BREVO_API_KEY=key +EMAIL_SPARKPOST_API_KEY=xxx +EMAIL_SPARKPOST_RELAY_CLIENT_ID=spark-post-relayer +EMAIL_SPARKPOST_RELAY_CLIENT_SECRET=xxx +EMAIL_SPARKPOST_RELAY_EXPIRES_IN=86400 + +# slow sql threshold, default 10000 +SLOW_SQL_THRESHOLD=10000 + +WEBPAGE_PACKAGES_COMPONENT=["vue@3.5.12","vue-router@4.4.5","element-plus@2.8.6","vee-validate@4.14.6","yup@1.4.0"] +WEBPAGE_PACKAGES_STORE=["pinia@2.2.4","axios@1.7.7"] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 7dd0b96..016d516 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,17 +1,17 @@ blank_issues_enabled: false contact_links: - name: Product Feature Request - url: https://botlet.canny.io/feature-requests - about: Provide feedback to the Botlet team and ask for new features or enhancements! + url: https://callgent.canny.io/feature-requests + about: Provide feedback to the Callgent team and ask for new features or enhancements! - name: Documentation Bug Report - url: https://github.com/botlet/botlet-doc/issues/new?template=BUG_REPORT.md&title%5B%5D=BUG - about: Create a report to help us improve the Botlet documentation. + url: https://github.com/callgent/callgent-doc/issues/new?template=BUG_REPORT.md&title%5B%5D=BUG + about: Create a report to help us improve the Callgent documentation. # - name: Documentation Request - # url: https://feedback.botlet.io/documentation + # url: https://feedback.callgent.com/documentation # about: Suggest a new part of the documentation we are missing! - # - name: Botlet Questions and Discussions - # url: https://forum.botlet.io + # - name: Callgent Questions and Discussions + # url: https://forum.callgent.com # about: Please ask and answer questions on the community forums. - name: Join the Community Discord - url: https://botlet.io/discord + url: https://callgent.com/discord about: Come and chat with other community members! \ No newline at end of file diff --git a/.gitignore b/.gitignore index 48d895b..bff21e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ # compiled output /dist -/node_modules +**/upload +**/node_modules +**/tmp # generated files /src/*/dto/*.dto.ts /src/*/entities/*.entity.ts -/prisma/migrations/20* # Logs logs diff --git a/.husky/commit-msg b/.husky/commit-msg index 36158d9..0492f2e 100644 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1 +1,3 @@ +#!/bin/sh + npx --no-install commitlint --edit "$1" \ No newline at end of file diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg index 982a62e..c2f69a4 100755 --- a/.husky/prepare-commit-msg +++ b/.husky/prepare-commit-msg @@ -1,6 +1,8 @@ +#!/bin/sh + # check 'Signed-off-by' in commit message -git_commit_message=$(cat $1) -if [[ "$git_commit_message" != *"Signed-off-by: "* ]]; then +git_commit_message=$(cat "$1") +if [ -z "$(echo "$git_commit_message" | grep 'Signed-off-by: ')" ]; then echo echo "\033[31mError\033[0m:" echo "Commit message is missing the Signed-off-by line." @@ -10,4 +12,4 @@ if [[ "$git_commit_message" != *"Signed-off-by: "* ]]; then exit 1 fi -exit 0 \ No newline at end of file +exit 0 diff --git a/.node-version b/.node-version index b1215e8..a4b68d2 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -v18.16.0 \ No newline at end of file +v18.20.3 \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index b1215e8..a4b68d2 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18.16.0 \ No newline at end of file +v18.20.3 \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 4bcf61b..35b6e37 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [support@botlet.io](mailto:support@botlet.io). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [support@callgent.com](mailto:support@callgent.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b327a36..46b6350 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing Guide -Thank you for considering contributing to Botlet.IO! We appreciate your time and effort. This document provides guidelines to contribute to the project. +Thank you for considering contributing to Callgent.com! We appreciate your time and effort. This document provides guidelines to contribute to the project. ## Table of Contents @@ -34,7 +34,7 @@ There are several ways you can contribute to the project: ### Reporting Bugs -If you encounter any issues, please [open an issue](https://github.com/botlet-io/botlet-api/issues) on the GitHub repository. Provide as much detail as possible, including steps to reproduce the issue if applicable. +If you encounter any issues, please [open an issue](https://github.com/Callgent/callgent-api/issues) on the GitHub repository. Provide as much detail as possible, including steps to reproduce the issue if applicable. ### Suggesting Enhancements diff --git a/DEVLOG.md b/DEVLOG.md index 3d42509..b09884b 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1,95 +1,123 @@ # Developer Guide +This is guide for developers to setup the development environment. Before you start to get prepared for the develop environment, you need to make sure your basic tools are installed correctly. + +* Nodejs (Notice: To build the project, the right version is needed, otherwise installation can not be corrected, see .node-version) +* pnpm +* docker + ## Development Setup -- copy `.env.dev` to `.env` -- install postgres with vector plugin +* copy `.env.dev` to `.env` + +* install dependencies + + ```shell + pnpm i + ``` + +* install dababase postgres with vector plugin + + ```shell + docker pull ankane/pgvector + ``` - ```shell - docker pull ankane/pgvector - ``` +* start postgres db in docker + + ```shell + docker run --name callgent-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e PG_VECTOR_EXTENSION=true -d ankane/pgvector + ``` -- init db +* init db - ```shell - npx prisma generate # generate PrismaClient - npx prisma migrate dev # init db schema - npx prisma db seed # init db data - ``` + ```shell + npx prisma generate # generate PrismaClient + npx prisma migrate dev # init db schema + npx prisma db seed # init db data + ``` - - init db test data +* init db test data - ```shell - SEED_TEST_DATA=1 npx prisma db seed - ``` + ```shell + npx prisma migrate reset # reset db to initial state + pnpm run prisma:seed-test # init db test data + ``` -- start server +* start server ```shell pnpm run start:dev ``` +If all the above steps are done, and nothing failed, you can access the API at `http://localhost:3000/api` + +* run tests + + ```shell + pnpm run test:e2e + ``` + ## Development Logs ### init project -- init project +* init project - ```shell - pnpm i -g @nestjs/cli - nest new botlet-api - cd botlet-api - ``` + ```shell + pnpm i -g @nestjs/cli + nest new callgent-api + cd callgent-api + ``` ### add dependencies ### integrate prisma -- automatically setup the library, scripts and Docker files +* automatically setup the library, scripts and Docker files - ```shell - nest add nestjs-prisma - ``` + ```shell + nest add nestjs-prisma + ``` -- integrate prisma plugins -- ReposModule -- init db +* integrate prisma plugins +* ReposModule +* init db - ```shell - npx prisma init - ``` + ```shell + npx prisma init + ``` -- create prisma schema, then init db +* create prisma schema, then init db - ```shell - npx prisma migrate dev --name init - ``` + ```shell + npx prisma migrate dev --name init + ``` ### multi-tenancy -1. write default value for `tenancy.tenantId` in db +1. write default value for `tenancy.tenantPk` in db - ```text - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId'))::int")) - ``` + ```text + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk'))::int")) + ``` -2. enable postgres row level security(RLS), so that we can filter data by `tenantId` automatically: +1. enable postgres row level security(RLS), so that we can filter data by `tenantPk` automatically: config in prisma/migrations/01_row_level_security/migration.sql, @see -3. set `tenantId` into `cls` context: +2. set `tenantPk` into `cls` context: ```ts cls.set('TENANT_ID', .. ``` -4. extend `PrismaClient` to set `tenantId` before any query +3. extend `PrismaClient` to set `tenantPk` before any query ```sql - SELECT set_config('tenancy.tenantId', cls.get('TENANT_ID') ... + SELECT set_config('tenancy.tenantPk', cls.get('TENANT_ID') ... ``` -5. bypass rls, for example, by admin, or looking up the logon user to determine their tenant ID: +4. bypass rls, for example, by admin, or looking up the logon user to determine their tenant ID: ```sql CREATE POLICY bypass_rls_policy ON "User" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); @@ -113,9 +141,9 @@ all validation is based on bearer token, with payload: ```js { - sub: user.id.toString(), - iss: user.tenantId.toString(), - aud: user.uuid, + sub: user.pk.toString(), + iss: user.tenantPk.toString(), + aud: user.id, } ``` @@ -177,9 +205,9 @@ login with email and password, TODO: email verification is required. need NOT scope to get user email: -- google: add '' scope on oauth screen -- github, contains email by default, -- facebook?: add 'email' scope on oauth screen +* google: add '' scope on oauth screen +* github, contains email by default, +* facebook?: add 'email' scope on oauth screen ##### to add a new oauth client @@ -207,9 +235,9 @@ You may annotate it to your DTO property like this: export class CreateTaskDto { // ... - // automatically validation check if the botlet exists in db on controller requesting - @EntityIdExists('botlet', 'uuid') // @EntityIdExists('entityType', 'fieldName') - botletUuid: string; + // automatically validation check if the callgent exists in db on controller requesting + @EntityIdExists('callgent', 'id') // @EntityIdExists('entityType', 'fieldName') + callgentId: string; } ``` @@ -220,8 +248,8 @@ Based on `prisma-generator-nestjs-dto`, you may also annotate this decorator in ```prisma model Task { // ... - /// @CustomValidator(EntityIdExists, 'botlet', 'uuid', ../../infra/repo/validators/entity-exists.validator) - botletUuid String @db.VarChar(36) + /// @CustomValidator(EntityIdExists, 'callgent', 'id', ../../infra/repo/validators/entity-exists.validator) + callgentId String @db.VarChar(36) } ``` @@ -229,10 +257,10 @@ This makes the generated DTO to be annotated with `@EntityIdExists` decorator. #### Retrieves the entity instance -This makes sure the `botletUuid` field is a valid UUID of a botlet in the database. +This makes sure the `callgentId` field is a valid UUID of a callgent in the database. you can retrieve the entity instance directly from the dto: ```typescript -const botlet = EntityIdExists.entity(dto, 'botletUuid') || - (await prisma.botlet.findUnique({ where: {uuid: dto.botletUuid} })); +const callgent = EntityIdExists.entity(dto, 'callgentId') || + (await prisma.callgent.findUnique({ where: {id: dto.callgentId} })); ``` diff --git a/Dockerfile b/Dockerfile index 1390a0c..aab7b96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,38 @@ -FROM node:18.19.1 AS builder +# using criu to checkpoint and restore a running sub-process +FROM node:18.20.3 AS base + +RUN apt-get update && apt-get install -y --no-install-recommends criu \ + && apt-get clean && rm -rf /var/lib/apt/lists/* +RUN criu --version +# https://chatgpt.com/share/6788670a-a904-8005-803a-0e9fcb01279b +# RUN criu check + +RUN npm install -g pnpm@9.15.5 + +FROM base AS builder # Create app directory WORKDIR /app - # A wildcard is used to ensure both package.json AND package-lock.json are copied COPY package*.json ./ - -# Install app dependencies -RUN npm install -g pnpm +COPY pnpm-lock.yaml ./ RUN pnpm install +COPY prisma ./prisma/ COPY . . -# Generate Prisma client using the Prisma CLI. RUN npx prisma generate -RUN pnpm run build +RUN pnpm build + +FROM base + +WORKDIR /app + +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/prisma ./prisma +COPY --from=builder /app/dist ./dist +COPY .env.dev ./.env EXPOSE 3000 -CMD [ "pnpm", "run", "start:prod" ] \ No newline at end of file +CMD /bin/bash -c 'npx prisma migrate deploy && pnpm start:prod' diff --git a/README.md b/README.md index 33c7dd0..4525e84 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Botlet API +# Callgent API

- - Static Badge + + Static Badge chat on Discord @@ -11,20 +11,23 @@ alt="follow on Twitter"> - - - -GitHub issues - -GitHub pull requests + + + +GitHub issues + +GitHub pull requests

-Botlet API is an open-source SaaS project built using NestJS, Prisma, PostgreSQL, and Swagger. It is licensed under the Apache-2.0 License. +*Please, help our community project. Star on GitHub!* +**Exciting News (November, 2024):** Discover what is new in Callgent [here](https://docs.callgent.com/blog)! + +Callgent API is an open-source SaaS project built using NestJS, Prisma, PostgreSQL, and Swagger. It is licensed under the Apache-2.0 License. ## Table of Contents -- [Botlet API](#botlet-api) +- [Callgent API](#callgent-api) - [Table of Contents](#table-of-contents) - [Introduction](#introduction) - [Features](#features) @@ -32,6 +35,7 @@ Botlet API is an open-source SaaS project built using NestJS, Prisma, PostgreSQL - [Installation](#installation) - [Configuration](#configuration) - [Running the Application](#running-the-application) + - [Running from docker-compose](#running-from-docker-compose) - [API Documentation](#api-documentation) - [Testing](#testing) - [Contributing](#contributing) @@ -39,7 +43,7 @@ Botlet API is an open-source SaaS project built using NestJS, Prisma, PostgreSQL ## Introduction -Botlet API is a powerful, scalable, and extensible platform designed to help developers create, manage, and deploy bots across various channels. It provides a robust set of features, enabling seamless integration with popular messaging platforms and services. +Callgent API is a powerful, scalable, and extensible platform designed to help developers create, manage, and deploy bots across various channels. It provides a robust set of features, enabling seamless integration with popular messaging platforms and services. ## Features @@ -52,9 +56,9 @@ Botlet API is a powerful, scalable, and extensible platform designed to help dev ## Prerequisites -Before you start using Botlet API, ensure you have the following tools installed: +Before you start using Callgent API, ensure you have the following tools installed: -- Node.js (>= 14.0.0) +- Node.js (>= 18.0.0) - npm (>= 6.0.0) - PostgreSQL (>= 10.0.0) - Docker (optional, for local development) @@ -63,42 +67,61 @@ Before you start using Botlet API, ensure you have the following tools installed 1. Clone the repository: - ``` - git clone https://github.com/botlet-io/botlet-api.git - ``` - -2. Change to the project directory: - - ``` - cd botlet-api + ```shell + git clone https://github.com/Callgent/callgent-api.git + cd callgent-api ``` -3. Install the dependencies: +2. Install the dependencies: - ``` - npm install + ```shell + pnpm install ``` ## Configuration -Create a `.env` file in the project root directory based on the `.env.example` file provided. Update the configuration values according to your environment. +Create a `.env` file in the project root directory based on the `.env.dev` file provided. Update the configuration values according to your environment. ## Running the Application 1. Run the Prisma migration to set up the database schema: - ``` - npx prisma migrate dev --name init + ```shell + npx prisma migrate deploy ``` 2. Start the application: - ``` + ```shell npm run start:dev ``` The application will be available at `http://localhost:3000`. +### Running from docker-compose + +1. Run the following command from project root, to start the containers: + + ```shell + docker-compose up -d + ``` + +2. Initialize the database: + + ```shell + cp .env.dev .env + echo 'DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public&timezone=UTC' >> .env + npx prisma db seed + ``` + +3. Initialize the test data (optional): + + ```shell + pnpm run prisma:seed-test + ``` + +The application will be available at `http://localhost:3003`. + ## API Documentation Swagger documentation is available at `http://localhost:3000/docs/docs/api`. @@ -117,8 +140,8 @@ We welcome contributions from the community! Before submitting a pull request, p ## License -Botlet.IO is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for more information. +Callgent.com is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for more information. --- -For more information, please visit our [documentation](https://docs.botlet.io/) or join our [community](https://botlet.io/discord). +For more information, please visit our [documentation](https://docs.callgent.com/) or join our [community](https://callgent.com/discord). diff --git a/SECURITY.md b/SECURITY.md index 43ecaa8..4d201ab 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,7 +4,7 @@ The security of our project is of the utmost importance to us. This document out ## Reporting a Vulnerability -We appreciate the efforts of security researchers and the community who help us keep our projects safe. If you believe you've discovered a security vulnerability in one of our projects, please send an email to security@botlet.io. +We appreciate the efforts of security researchers and the community who help us keep our projects safe. If you believe you've discovered a security vulnerability in one of our projects, please send an email to security@callgent.com. In your report, please include: diff --git a/commitlint.config.js b/commitlint.config.js index 69b18d9..22530cb 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1 +1,22 @@ -module.exports = { extends: ['@commitlint/config-angular'] }; +module.exports = { + extends: ['@commitlint/config-angular'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'revert', + 'style', + 'test', + 'chore', + ], + ], + }, +}; diff --git a/docker-compose-mail.yml b/docker-compose-mail.yml index 266c5d3..e48e799 100644 --- a/docker-compose-mail.yml +++ b/docker-compose-mail.yml @@ -51,7 +51,7 @@ services: - SMTP_USER=admin - SMTP_PASSWORD=adminpassword - SMTP_TLS=false - - DOMAIN=botlet.io + - DOMAIN=callgent.com networks: default: diff --git a/docker-compose.yml b/docker-compose.yml index fb5e77c..2972546 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,11 +7,9 @@ services: container_name: nest-api restart: always ports: - - '3000:3000' + - '3003:3000' depends_on: - nest-postgres - env_file: - - .env nest-postgres: image: postgres:14 @@ -19,11 +17,13 @@ services: restart: always ports: - '5432:5432' - env_file: - - .env + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres volumes: - nest-postgres:/var/lib/postgresql/data + - ./prisma/create-db-user.sql:/docker-entrypoint-initdb.d/create-db-user.sql volumes: nest-postgres: - name: nest-postgres-db + name: callgent-postgres-db diff --git a/package.json b/package.json index e2b394c..874c741 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { - "name": "botlet-api", + "name": "callgent-api", "version": "0.0.1", "description": "", "author": "", "private": true, "license": "UNLICENSED", "scripts": { + "prebuild": "prisma generate", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", @@ -24,94 +25,112 @@ "prisma:generate": "npx prisma generate", "prisma:studio": "npx prisma studio", "prisma:seed": "npx prisma db seed", + "prisma:seed-test": "ts-node prisma/seed-test.ts", "prepare": "husky", "commit": "git-cz", "release": "standard-version" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "^11.5.4", - "@fastify/compress": "^7.0.0", - "@fastify/cookie": "^9.3.1", + "@apidevtools/json-schema-ref-parser": "^11.7.2", + "@fastify/compress": "^7.0.3", + "@fastify/cookie": "^9.4.0", "@fastify/cors": "^9.0.1", "@fastify/helmet": "^11.1.1", - "@fastify/static": "^6.12.0", - "@nestjs-cls/transactional": "^2.2.0", - "@nestjs-cls/transactional-adapter-prisma": "^1.1.0", - "@nestjs/cache-manager": "^2.2.0", - "@nestjs/common": "^10.0.0", - "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.0.0", - "@nestjs/event-emitter": "^2.0.3", + "@fastify/multipart": "8.3.1", + "@fastify/static": "^7.0.4", + "@nestjs-cls/transactional": "^2.4.2", + "@nestjs-cls/transactional-adapter-prisma": "^1.2.4", + "@nestjs/axios": "^3.1.2", + "@nestjs/cache-manager": "^2.2.2", + "@nestjs/common": "^10.4.4", + "@nestjs/config": "^3.2.3", + "@nestjs/core": "^10.4.4", + "@nestjs/event-emitter": "^2.0.4", "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-fastify": "^10.3.4", - "@nestjs/swagger": "^7.3.0", + "@nestjs/swagger": "^7.4.2", + "@nestjs/terminus": "^10.2.3", + "@nestjs/throttler": "^6.2.1", "@nodeteam/nestjs-prisma-pagination": "^1.0.6", - "@prisma/client": "5.10.2", - "axios": "^1.6.7", + "@pond918/postman-to-openapi": "^3.0.3", + "@prisma/client": "5.20.0", + "axios": "^1.7.7", "bcrypt": "^5.1.1", + "braces": "^3.0.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", + "concat-stream": "1.6.2", "dot": "^1.1.3", "fastify": "4.26.2", - "fastify-ip": "^1.0.0", - "glob": "^10.3.10", - "jsonrepair": "^3.7.0", + "fastify-ip": "^1.1.0", + "fastify-multer": "^2.0.3", + "glob": "^10.4.5", + "http-status": "^1.7.4", + "jsonrepair": "^3.8.1", + "micromatch": ">=4.0.8", "module": "^1.2.5", "ms": "^2.1.3", "nanoid": "3.3.7", - "nestjs-cls": "^4.2.0", + "nest-fastify-multer": "^2.0.0", + "nestjs-cls": "^4.4.1", "nestjs-oauth2": "^0.0.7", - "nestjs-pino": "^4.0.0", + "nestjs-pino": "^4.1.0", "nestjs-prisma": "^0.23.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", - "pino": "^8.18.0", - "pino-http": "^9.0.0", - "pino-pretty": "^10.3.1", + "phin": "^3.7.1", + "pino": "^9.4.0", + "pino-http": "^10.3.0", + "pino-pretty": "^11.2.2", "prisma-soft-delete-middleware": "^1.3.1", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", - "v8-sandbox": "^3.2.10" + "stripe": "^17.5.0", + "yaml": "^2.6.0" }, "devDependencies": { - "@chax-at/transactional-prisma-testing": "^1.1.0", - "@commitlint/cli": "^19.2.0", - "@commitlint/config-angular": "^19.1.0", - "@nestjs/cli": "^10.0.0", - "@nestjs/schematics": "^10.0.0", - "@nestjs/testing": "^10.0.0", - "@pond918/prisma-generator-nestjs-dto": "^1.17.513", + "@chax-at/transactional-prisma-testing": "^1.2.0", + "@commitlint/cli": "^19.5.0", + "@commitlint/config-angular": "^19.5.0", + "@nestjs/cli": "^10.4.5", + "@nestjs/schematics": "^10.1.4", + "@nestjs/testing": "^10.4.4", + "@pond918/prisma-generator-nestjs-dto": "^1.18.2", "@types/bcrypt": "^5.0.2", "@types/dot": "^1.1.7", - "@types/express": "^4.17.17", - "@types/jest": "^29.5.2", + "@types/jest": "^29.5.13", "@types/ms": "^0.7.34", - "@types/node": "^20.3.1", + "@types/node": "^22.7.5", "@types/passport-jwt": "^4.0.1", "@types/passport-local": "^1.0.38", - "@types/supertest": "^6.0.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "commitizen": "^4.3.0", + "@types/supertest": "^6.0.2", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", + "commitizen": "^4.3.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.42.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.0", - "husky": "^9.0.11", - "jest": "^29.5.0", - "pactum": "^3.6.3", - "pactum-matchers": "^1.1.6", - "prettier": "^3.0.0", - "prisma": "^5.10.2", + "cross-spawn": "^7.0.6", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "eslint": "^9.12.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "find-my-way": ">=8.2.2", + "husky": "^9.1.6", + "jest": "^29.7.0", + "pactum": "^3.7.1", + "pactum-matchers": "^1.1.7", + "path-to-regexp": "^8.2.0", + "prettier": "^3.3.3", + "prisma": "^5.20.0", "source-map-support": "^0.5.21", "standard-version": "^9.5.0", "supertest": "^6.3.3", - "ts-jest": "^29.1.0", - "ts-loader": "^9.4.3", - "ts-node": "^10.9.1", + "tar": "7.4.3", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.1", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.6.3" }, "jest": { "moduleFileExtensions": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23be625..88bbc0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,74 +2,95 @@ lockfileVersion: '6.0' dependencies: '@apidevtools/json-schema-ref-parser': - specifier: ^11.5.4 - version: 11.5.4 + specifier: ^11.7.2 + version: 11.7.2 '@fastify/compress': - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^7.0.3 + version: 7.0.3 '@fastify/cookie': - specifier: ^9.3.1 - version: 9.3.1 + specifier: ^9.4.0 + version: 9.4.0 '@fastify/cors': specifier: ^9.0.1 version: 9.0.1 '@fastify/helmet': specifier: ^11.1.1 version: 11.1.1 + '@fastify/multipart': + specifier: 8.3.1 + version: 8.3.1 '@fastify/static': - specifier: ^6.12.0 - version: 6.12.0 + specifier: ^7.0.4 + version: 7.0.4 '@nestjs-cls/transactional': - specifier: ^2.2.0 - version: 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^2.4.2 + version: 2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs-cls/transactional-adapter-prisma': - specifier: ^1.1.0 - version: 1.1.0(@nestjs-cls/transactional@2.2.0)(@prisma/client@5.10.2)(nestjs-cls@4.2.0)(prisma@5.10.2) + specifier: ^1.2.4 + version: 1.2.4(@nestjs-cls/transactional@2.4.2)(@prisma/client@5.20.0)(nestjs-cls@4.4.1)(prisma@5.20.0) + '@nestjs/axios': + specifier: ^3.1.2 + version: 3.1.2(@nestjs/common@10.4.4)(axios@1.7.7)(rxjs@7.8.1) '@nestjs/cache-manager': - specifier: ^2.2.0 - version: 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(cache-manager@5.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^2.2.2 + version: 2.2.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(cache-manager@5.7.6)(rxjs@7.8.1) '@nestjs/common': - specifier: ^10.0.0 - version: 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^10.4.4 + version: 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/config': - specifier: ^3.1.1 - version: 3.1.1(@nestjs/common@10.0.0)(reflect-metadata@0.1.13) + specifier: ^3.2.3 + version: 3.2.3(@nestjs/common@10.4.4)(rxjs@7.8.1) '@nestjs/core': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^10.4.4 + version: 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/event-emitter': - specifier: ^2.0.3 - version: 2.0.3(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13) + specifier: ^2.0.4 + version: 2.0.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@nestjs/jwt': specifier: ^10.2.0 - version: 10.2.0(@nestjs/common@10.0.0) + version: 10.2.0(@nestjs/common@10.4.4) '@nestjs/passport': specifier: ^10.0.3 - version: 10.0.3(@nestjs/common@10.0.0)(passport@0.7.0) + version: 10.0.3(@nestjs/common@10.4.4)(passport@0.7.0) '@nestjs/platform-fastify': specifier: ^10.3.4 - version: 10.3.4(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0) + version: 10.3.4(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@nestjs/swagger': - specifier: ^7.3.0 - version: 7.3.0(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13) + specifier: ^7.4.2 + version: 7.4.2(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) + '@nestjs/terminus': + specifier: ^10.2.3 + version: 10.2.3(@nestjs/axios@3.1.2)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(@prisma/client@5.20.0)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/throttler': + specifier: ^6.2.1 + version: 6.2.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2) '@nodeteam/nestjs-prisma-pagination': specifier: ^1.0.6 - version: 1.0.6(@babel/core@7.23.9)(@nestjs/core@10.0.0)(@types/node@20.3.1)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1)(ts-node@10.9.1) + version: 1.0.6(@babel/core@7.26.0)(@nestjs/core@10.4.4)(@types/node@22.7.5)(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@pond918/postman-to-openapi': + specifier: ^3.0.3 + version: 3.0.3 '@prisma/client': - specifier: 5.10.2 - version: 5.10.2(prisma@5.10.2) + specifier: 5.20.0 + version: 5.20.0(prisma@5.20.0) axios: - specifier: ^1.6.7 - version: 1.6.7(debug@2.6.9) + specifier: ^1.7.7 + version: 1.7.7(debug@2.6.9) bcrypt: specifier: ^5.1.1 version: 5.1.1 + braces: + specifier: ^3.0.3 + version: 3.0.3 class-transformer: specifier: ^0.5.1 version: 0.5.1 class-validator: specifier: ^0.14.1 version: 0.14.1 + concat-stream: + specifier: 1.6.2 + version: 1.6.2 dot: specifier: ^1.1.3 version: 1.1.3 @@ -77,14 +98,23 @@ dependencies: specifier: 4.26.2 version: 4.26.2 fastify-ip: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.1.0 + version: 1.1.0 + fastify-multer: + specifier: ^2.0.3 + version: 2.0.3 glob: - specifier: ^10.3.10 - version: 10.3.10 + specifier: ^10.4.5 + version: 10.4.5 + http-status: + specifier: ^1.7.4 + version: 1.7.4 jsonrepair: - specifier: ^3.7.0 - version: 3.7.0 + specifier: ^3.8.1 + version: 3.8.1 + micromatch: + specifier: '>=4.0.8' + version: 4.0.8 module: specifier: ^1.2.5 version: 1.2.5 @@ -94,86 +124,92 @@ dependencies: nanoid: specifier: 3.3.7 version: 3.3.7 + nest-fastify-multer: + specifier: ^2.0.0 + version: 2.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) nestjs-cls: - specifier: ^4.2.0 - version: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + specifier: ^4.4.1 + version: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) nestjs-oauth2: specifier: ^0.0.7 - version: 0.0.7(@nestjs/common@10.0.0)(rxjs@7.8.1) + version: 0.0.7(@nestjs/common@10.4.4)(rxjs@7.8.1) nestjs-pino: - specifier: ^4.0.0 - version: 4.0.0(@nestjs/common@10.0.0)(pino-http@9.0.0) + specifier: ^4.1.0 + version: 4.1.0(@nestjs/common@10.4.4)(pino-http@10.3.0) nestjs-prisma: specifier: ^0.23.0 - version: 0.23.0(@nestjs/common@10.0.0)(@prisma/client@5.10.2)(prisma@5.10.2) + version: 0.23.0(@nestjs/common@10.4.4)(@prisma/client@5.20.0)(prisma@5.20.0) passport-jwt: specifier: ^4.0.1 version: 4.0.1 passport-local: specifier: ^1.0.0 version: 1.0.0 + phin: + specifier: ^3.7.1 + version: 3.7.1(debug@2.6.9) pino: - specifier: ^8.18.0 - version: 8.18.0 + specifier: ^9.4.0 + version: 9.4.0 pino-http: - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^10.3.0 + version: 10.3.0 pino-pretty: - specifier: ^10.3.1 - version: 10.3.1 + specifier: ^11.2.2 + version: 11.2.2 prisma-soft-delete-middleware: specifier: ^1.3.1 - version: 1.3.1(@prisma/client@5.10.2) + version: 1.3.1(@prisma/client@5.20.0) reflect-metadata: - specifier: ^0.1.13 - version: 0.1.13 + specifier: ^0.2.2 + version: 0.2.2 rxjs: specifier: ^7.8.1 version: 7.8.1 - v8-sandbox: - specifier: ^3.2.10 - version: 3.2.10(debug@2.6.9) + stripe: + specifier: ^17.5.0 + version: 17.5.0 + yaml: + specifier: ^2.6.0 + version: 2.6.0 devDependencies: '@chax-at/transactional-prisma-testing': - specifier: ^1.1.0 - version: 1.1.0(@prisma/client@5.10.2) + specifier: ^1.2.0 + version: 1.2.0(@prisma/client@5.20.0) '@commitlint/cli': - specifier: ^19.2.0 - version: 19.2.0(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^19.5.0 + version: 19.5.0(@types/node@22.7.5)(typescript@5.6.3) '@commitlint/config-angular': - specifier: ^19.1.0 - version: 19.1.0 + specifier: ^19.5.0 + version: 19.5.0 '@nestjs/cli': - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^10.4.5 + version: 10.4.5 '@nestjs/schematics': - specifier: ^10.0.0 - version: 10.0.0(chokidar@3.5.3)(typescript@5.1.3) + specifier: ^10.1.4 + version: 10.1.4(chokidar@3.6.0)(typescript@5.3.3) '@nestjs/testing': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0) + specifier: ^10.4.4 + version: 10.4.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4) '@pond918/prisma-generator-nestjs-dto': - specifier: ^1.17.513 - version: 1.17.513 + specifier: ^1.18.2 + version: 1.18.2 '@types/bcrypt': specifier: ^5.0.2 version: 5.0.2 '@types/dot': specifier: ^1.1.7 version: 1.1.7 - '@types/express': - specifier: ^4.17.17 - version: 4.17.17 '@types/jest': - specifier: ^29.5.2 - version: 29.5.2 + specifier: ^29.5.13 + version: 29.5.13 '@types/ms': specifier: ^0.7.34 version: 0.7.34 '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^22.7.5 + version: 22.7.5 '@types/passport-jwt': specifier: ^4.0.1 version: 4.0.1 @@ -181,47 +217,62 @@ devDependencies: specifier: ^1.0.38 version: 1.0.38 '@types/supertest': - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^6.0.2 + version: 6.0.2 '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.42.0)(typescript@5.1.3) + specifier: ^8.8.1 + version: 8.8.1(@typescript-eslint/parser@8.8.1)(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.0.0(eslint@8.42.0)(typescript@5.1.3) + specifier: ^8.8.1 + version: 8.8.1(eslint@9.12.0)(typescript@5.6.3) commitizen: - specifier: ^4.3.0 - version: 4.3.0(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^4.3.1 + version: 4.3.1(@types/node@22.7.5)(typescript@5.6.3) + cross-spawn: + specifier: ^7.0.6 + version: 7.0.6 cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@20.3.1)(typescript@5.1.3) + version: 3.3.0(@types/node@22.7.5)(typescript@5.6.3) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + dotenv-expand: + specifier: ^11.0.6 + version: 11.0.6 eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^9.12.0 + version: 9.12.0 eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.42.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@9.12.0) eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.42.0)(prettier@3.0.0) + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3) + find-my-way: + specifier: '>=8.2.2' + version: 8.2.2 husky: - specifier: ^9.0.11 - version: 9.0.11 + specifier: ^9.1.6 + version: 9.1.6 jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.7.5) pactum: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.7.1 + version: 3.7.1(debug@2.6.9) pactum-matchers: - specifier: ^1.1.6 - version: 1.1.6 + specifier: ^1.1.7 + version: 1.1.7 + path-to-regexp: + specifier: ^8.2.0 + version: 8.2.0 prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.3.3 + version: 3.3.3 prisma: - specifier: ^5.10.2 - version: 5.10.2 + specifier: ^5.20.0 + version: 5.20.0 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -231,35 +282,30 @@ devDependencies: supertest: specifier: ^6.3.3 version: 6.3.3 + tar: + specifier: 7.4.3 + version: 7.4.3 ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.1.3) + specifier: ^29.2.5 + version: 29.2.5(@babel/core@7.26.0)(jest@29.7.0)(typescript@5.6.3) ts-loader: - specifier: ^9.4.3 - version: 9.4.3(typescript@5.1.3)(webpack@5.90.1) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^9.5.1 + version: 9.5.1(typescript@5.6.3)(webpack@5.96.1) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.6.3 + version: 5.6.3 packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 /@angular-devkit/core@13.3.11: resolution: {integrity: sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==} @@ -278,9 +324,9 @@ packages: source-map: 0.7.3 dev: false - /@angular-devkit/core@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/core@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: @@ -289,21 +335,22 @@ packages: dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) - chokidar: 3.5.3 - jsonc-parser: 3.2.0 + chokidar: 3.6.0 + jsonc-parser: 3.2.1 + picomatch: 4.0.1 rxjs: 7.8.1 source-map: 0.7.4 dev: true - /@angular-devkit/schematics-cli@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-siBpRDmMMV7NB+NvaDHeJ4doHoSkFwIywwFj8GXnBCtobyxrBl1EyG1cKK+FHRydYtyYIk8FEoOpJA9oE9S2hg==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics-cli@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-TjmiwWJarX7oqvNiRAroQ5/LeKUatxBOCNEuKXO/PV8e7pn/Hr/BqfFm+UcYrQoFdZplmtNAfqmbqgVziKvCpA==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) ansi-colors: 4.1.3 - inquirer: 8.2.4 + inquirer: 9.2.15 symbol-observable: 4.0.0 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -323,21 +370,21 @@ packages: - chokidar dev: false - /@angular-devkit/schematics@16.1.0(chokidar@3.5.3): - resolution: {integrity: sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==} - engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics@17.3.8(chokidar@3.6.0): + resolution: {integrity: sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - jsonc-parser: 3.2.0 - magic-string: 0.30.0 + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + jsonc-parser: 3.2.1 + magic-string: 0.30.8 ora: 5.4.1 rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@apidevtools/json-schema-ref-parser@11.5.4: - resolution: {integrity: sha512-o2fsypTGU0WxRxbax8zQoHiIB4dyrkwYfcm8TxZ+bx9pCzcWZbQtiMqpgBvWA/nJ2TrGjK5adCLfTH8wUeU/Wg==} + /@apidevtools/json-schema-ref-parser@11.7.2: + resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} engines: {node: '>= 16'} dependencies: '@jsdevtools/ono': 7.1.3 @@ -350,305 +397,293 @@ packages: engines: {node: '>=4'} dev: true - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.26.2: + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - jsesc: 2.5.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.3 + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 lru-cache: 5.1.1 semver: 6.3.1 - /@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'} - dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@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.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@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==} + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.26.0 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + /@babel/traverse@7.25.9: + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.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.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@chax-at/transactional-prisma-testing@1.1.0(@prisma/client@5.10.2): - resolution: {integrity: sha512-BT2KRg2mfHbjW3gb3u5RtXjwvodywA8uvOX5Szm2J6KotgYJ/vRnCJ8LKp+kb/dbHhnPIrOCTtj6AY1Xku8Wng==} + /@chax-at/transactional-prisma-testing@1.2.0(@prisma/client@5.20.0): + resolution: {integrity: sha512-4GIEeHUlqcpggfz4t+t3tQb44uc67YWIzXnkB0m0Cy3jPOex/5fRhezebtqIxJzS2k4XIGxeJDij/Ajp0Mwy/Q==} engines: {node: '>= 14'} peerDependencies: '@prisma/client': ^4.7.0 || 5 dependencies: - '@prisma/client': 5.10.2(prisma@5.10.2) + '@prisma/client': 5.20.0(prisma@5.20.0) dev: true /@colors/colors@1.5.0: @@ -658,48 +693,48 @@ packages: dev: true optional: true - /@commitlint/cli@19.2.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-8XnQDMyQR+1/ldbmIyhonvnDS2enEw48Wompo/967fsEvy9Vj5/JbDutzmSBKxANWDVeEbR9QQm0yHpw6ArrFw==} + /@commitlint/cli@19.5.0(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} hasBin: true dependencies: - '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@20.3.1)(typescript@5.1.3) - '@commitlint/read': 19.2.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.6.0 + '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.1 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - typescript dev: true - /@commitlint/config-angular-type-enum@19.1.0: - resolution: {integrity: sha512-eLjt7vSArP62kpDmmIZNdIBjPzbqY8jss6mVOcSDm4t1KfDw4UmPrtPh/7zcIL3GI5uf/7W8d2s3K0qisf9C+g==} + /@commitlint/config-angular-type-enum@19.5.0: + resolution: {integrity: sha512-4/6xrkElCSBb7+6oZXlBJ/zytkxXgmTg5gk1Voj3GAWShTivtWrPtDYvHmF858WhA695YKgxMHEPNN74UFkK8w==} engines: {node: '>=v18'} dev: true - /@commitlint/config-angular@19.1.0: - resolution: {integrity: sha512-qZyG9FHjPoG+VaHxH1OruWI8cmWWRe00sAS73jXAhACimT74k4Dex5jI2cKFcXSH8Ebh1yGwxfjzSgup5O0ykA==} + /@commitlint/config-angular@19.5.0: + resolution: {integrity: sha512-EPQBuSK4uVNUj2HhWSJjmfHqgPpST//h07oIzcPK2FauFGGGX0Vt+kzNxnQRDEEUvSAHDRNTDWNaFv66Hlle6A==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-angular-type-enum': 19.1.0 + '@commitlint/config-angular-type-enum': 19.5.0 dev: true - /@commitlint/config-validator@19.0.3: - resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + /@commitlint/config-validator@19.5.0: + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 - ajv: 8.12.0 + '@commitlint/types': 19.5.0 + ajv: 8.17.1 dev: true - /@commitlint/ensure@19.0.3: - resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + /@commitlint/ensure@19.5.0: + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -707,48 +742,48 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule@19.0.0: - resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + /@commitlint/execute-rule@19.5.0: + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} engines: {node: '>=v18'} dev: true - /@commitlint/format@19.0.3: - resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} + /@commitlint/format@19.5.0: + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 chalk: 5.3.0 dev: true - /@commitlint/is-ignored@19.0.3: - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + /@commitlint/is-ignored@19.6.0: + resolution: {integrity: sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 - semver: 7.6.0 + '@commitlint/types': 19.5.0 + semver: 7.6.3 dev: true - /@commitlint/lint@19.1.0: - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + /@commitlint/lint@19.6.0: + resolution: {integrity: sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 19.0.3 - '@commitlint/parse': 19.0.3 - '@commitlint/rules': 19.0.3 - '@commitlint/types': 19.0.3 + '@commitlint/is-ignored': 19.6.0 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.6.0 + '@commitlint/types': 19.5.0 dev: true - /@commitlint/load@19.2.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} + /@commitlint/load@19.5.0(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/execute-rule': 19.0.0 - '@commitlint/resolve-extends': 19.1.0 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.1.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.3.1)(cosmiconfig@9.0.0)(typescript@5.1.3) + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@22.7.5)(cosmiconfig@9.0.0)(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -757,104 +792,113 @@ packages: - typescript dev: true - /@commitlint/message@19.0.0: - resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + /@commitlint/message@19.5.0: + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} engines: {node: '>=v18'} dev: true - /@commitlint/parse@19.0.3: - resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + /@commitlint/parse@19.5.0: + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 19.0.3 + '@commitlint/types': 19.5.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 dev: true - /@commitlint/read@19.2.0: - resolution: {integrity: sha512-HlGeEd/jyp2a5Fb9mvtsaDm5hFCmj80dJYjLQkpG3DzWneWBc37YU3kM8Za1D1HUazZaTkdsWq73M3XDE4CvCA==} + /@commitlint/read@19.5.0: + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} engines: {node: '>=v18'} dependencies: - '@commitlint/top-level': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 git-raw-commits: 4.0.0 minimist: 1.2.8 + tinyexec: 0.3.1 dev: true - /@commitlint/resolve-extends@19.1.0: - resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + /@commitlint/resolve-extends@19.5.0: + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 19.0.3 - '@commitlint/types': 19.0.3 + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 global-directory: 4.0.1 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 dev: true - /@commitlint/rules@19.0.3: - resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + /@commitlint/rules@19.6.0: + resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} engines: {node: '>=v18'} dependencies: - '@commitlint/ensure': 19.0.3 - '@commitlint/message': 19.0.0 - '@commitlint/to-lines': 19.0.0 - '@commitlint/types': 19.0.3 - execa: 8.0.1 + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 dev: true - /@commitlint/to-lines@19.0.0: - resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + /@commitlint/to-lines@19.5.0: + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} engines: {node: '>=v18'} dev: true - /@commitlint/top-level@19.0.0: - resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + /@commitlint/top-level@19.5.0: + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} engines: {node: '>=v18'} dependencies: find-up: 7.0.0 dev: true - /@commitlint/types@19.0.3: - resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + /@commitlint/types@19.5.0: + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} engines: {node: '>=v18'} dependencies: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 dev: true - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + /@eslint-community/eslint-utils@4.4.1(eslint@9.12.0): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.42.0 + eslint: 9.12.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/config-array@0.18.0: + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/core@0.6.0: + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/eslintrc@3.2.0: + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 + debug: 4.3.7 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -863,9 +907,21 @@ packages: - supports-color dev: true - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.12.0: + resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/object-schema@2.1.4: + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/plugin-kit@0.2.3: + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + levn: 0.4.1 dev: true /@exodus/schemasafe@1.3.0: @@ -877,31 +933,42 @@ packages: engines: {node: '>=14'} dev: false - /@fastify/ajv-compiler@3.5.0: - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + /@fastify/ajv-compiler@3.6.0: + resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - fast-uri: 2.3.0 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + fast-uri: 2.4.0 dev: false - /@fastify/compress@7.0.0: - resolution: {integrity: sha512-jo/NaBVHP1OXIf8Kmr3bZyYQB0gAIgcy5c8rRKTPjhklHO7lRs/6ZFckUVT0NtbKSvrTuIcmSkxYpjyv3FNHXA==} + /@fastify/busboy@1.2.1: + resolution: {integrity: sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==} + engines: {node: '>=14'} + dependencies: + text-decoding: 1.0.0 + dev: false + + /@fastify/busboy@3.1.1: + resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} + dev: false + + /@fastify/compress@7.0.3: + resolution: {integrity: sha512-xa9fo5/DgK1s0bkS6xrYgNn8HmofO5tJvbCDk8QuXshSgLd2cFZANv1ox/Qv7zswS7JroHwTlCVv/XGTVO98tg==} dependencies: '@fastify/accept-negotiator': 1.1.0 fastify-plugin: 4.5.1 - into-stream: 6.0.0 - mime-db: 1.52.0 - minipass: 7.0.4 + mime-db: 1.53.0 + minipass: 7.1.2 peek-stream: 1.1.3 - pump: 3.0.0 + pump: 3.0.2 pumpify: 2.0.1 + readable-stream: 4.5.2 dev: false - /@fastify/cookie@9.3.1: - resolution: {integrity: sha512-h1NAEhB266+ZbZ0e9qUE6NnNR07i7DnNXWG9VbbZ8uC6O/hxHpl+Zoe5sw1yfdZ2U6XhToUGDnzQtWJdCaPwfg==} + /@fastify/cookie@9.4.0: + resolution: {integrity: sha512-Th+pt3kEkh4MQD/Q2q1bMuJIB5NX/D5SwSpOKu3G/tjoGbwfpurIMJsWSPS0SJJ4eyjtmQ8OipDQspf8RbUOlg==} dependencies: - cookie-signature: 1.2.1 + cookie-signature: 1.2.2 fastify-plugin: 4.5.1 dev: false @@ -912,14 +979,22 @@ packages: mnemonist: 0.39.6 dev: false + /@fastify/deepmerge@2.0.2: + resolution: {integrity: sha512-3wuLdX5iiiYeZWP6bQrjqhrcvBIf0NHbQH1Ur1WbHvoiuTYUEItgygea3zs8aHpiitn0lOB8gX20u1qO+FDm7Q==} + dev: false + /@fastify/error@3.4.1: resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} dev: false + /@fastify/error@4.0.0: + resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} + dev: false + /@fastify/fast-json-stringify-compiler@4.3.0: resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} dependencies: - fast-json-stringify: 5.12.0 + fast-json-stringify: 5.16.1 dev: false /@fastify/formbody@7.4.0: @@ -933,7 +1008,7 @@ packages: resolution: {integrity: sha512-pjJxjk6SLEimITWadtYIXt6wBMfFC1I6OQyH/jYVCqSAn36sgAIFjeNiibHtifjCd+e25442pObis3Rjtame6A==} dependencies: fastify-plugin: 4.5.1 - helmet: 7.1.0 + helmet: 7.2.0 dev: false /@fastify/merge-json-schemas@0.1.1: @@ -947,10 +1022,21 @@ packages: dependencies: '@fastify/error': 3.4.1 fastify-plugin: 4.5.1 - path-to-regexp: 6.2.1 + path-to-regexp: 6.3.0 reusify: 1.0.4 dev: false + /@fastify/multipart@8.3.1: + resolution: {integrity: sha512-pncbnG28S6MIskFSVRtzTKE9dK+GrKAJl0NbaQ/CG8ded80okWFsYKzSlP9haaLNQhNRDOoHqmGQNvgbiPVpWQ==} + dependencies: + '@fastify/busboy': 3.1.1 + '@fastify/deepmerge': 2.0.2 + '@fastify/error': 4.0.0 + fastify-plugin: 4.5.1 + secure-json-parse: 2.7.0 + stream-wormhole: 1.1.0 + dev: false + /@fastify/send@2.1.0: resolution: {integrity: sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==} dependencies: @@ -961,28 +1047,24 @@ packages: mime: 3.0.0 dev: false - /@fastify/static@6.12.0: - resolution: {integrity: sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==} + /@fastify/static@7.0.4: + resolution: {integrity: sha512-p2uKtaf8BMOZWLs6wu+Ihg7bWNBdjNgCwDza4MJtTqg+5ovKmcbgbR9Xs5/smZ1YISfzKOCNYmZV8LaCj+eJ1Q==} dependencies: '@fastify/accept-negotiator': 1.1.0 '@fastify/send': 2.1.0 content-disposition: 0.5.4 fastify-plugin: 4.5.1 - glob: 8.1.0 - p-limit: 3.1.0 - dev: false - - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + fastq: 1.17.1 + glob: 10.4.5 dev: false - /@golevelup/nestjs-modules@0.6.1(@nestjs/common@10.0.0)(rxjs@7.8.1): + /@golevelup/nestjs-modules@0.6.1(@nestjs/common@10.4.4)(rxjs@7.8.1): resolution: {integrity: sha512-E0STg8In8fhIivnGDJAA70+XLPHzK5bMTkCnif9FbZ8waTYDQ3T/QQL0h73k+CUFeznn1hmuEW14sNaE+8cd7w==} peerDependencies: '@nestjs/common': ^9.x rxjs: ^7.x dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) lodash: 4.17.21 rxjs: 7.8.1 dev: false @@ -995,15 +1077,17 @@ packages: through2: 2.0.5 dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + /@humanfs/core@0.19.1: + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + dev: true + + /@humanfs/node@0.16.6: + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 dev: true /@humanwhocodes/module-importer@1.0.1: @@ -1011,8 +1095,9 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/retry@0.3.1: + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} dev: true /@hutson/parse-repository-url@3.0.2: @@ -1030,7 +1115,13 @@ packages: strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false + + /@isaacs/fs-minipass@4.0.1: + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + dependencies: + minipass: 7.1.2 + dev: true /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -1051,13 +1142,13 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - /@jest/core@29.7.0(ts-node@10.9.1): + /@jest/core@29.7.0: resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1071,14 +1162,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 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@20.3.1)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@22.7.5) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1090,7 +1181,7 @@ packages: jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 @@ -1105,7 +1196,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-mock: 29.7.0 /@jest/expect-utils@29.7.0: @@ -1129,7 +1220,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1159,25 +1250,25 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.3.1 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.7.5 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.1 + istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 + 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.2.0 + v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color @@ -1191,7 +1282,7 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -1217,9 +1308,9 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -1228,7 +1319,7 @@ packages: jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 jest-util: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 @@ -1242,52 +1333,53 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.3.1 - '@types/yargs': 17.0.32 + '@types/node': 22.7.5 + '@types/yargs': 17.0.33 chalk: 4.1.2 - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 /@jsdevtools/ono@7.1.3: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: false + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + /@lukeed/csprng@1.1.0: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -1301,78 +1393,88 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.0 + semver: 7.6.3 + tar: 6.2.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@microsoft/tsdoc@0.14.2: - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + /@microsoft/tsdoc@0.15.0: + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} dev: false - /@nestjs-cls/transactional-adapter-prisma@1.1.0(@nestjs-cls/transactional@2.2.0)(@prisma/client@5.10.2)(nestjs-cls@4.2.0)(prisma@5.10.2): - resolution: {integrity: sha512-iTwt0uN+GTQOM9ZkSnbznWhPmKG10UDetVzZ3MZMdKZMRpkAZUnp5ClrmFUo3e37hUO/EYdfzi/g7wesO9owug==} + /@nestjs-cls/transactional-adapter-prisma@1.2.4(@nestjs-cls/transactional@2.4.2)(@prisma/client@5.20.0)(nestjs-cls@4.4.1)(prisma@5.20.0): + resolution: {integrity: sha512-W/Ej+T3QG81//d4YuXsuHnV9WFvWTQBQk1BSiowyq7d812lyr3zk8ZMwmAhB7JAY80cJMeBY6i3TBlP0QVIczQ==} engines: {node: '>=18'} peerDependencies: - '@nestjs-cls/transactional': ^2.2.0 + '@nestjs-cls/transactional': ^2.4.2 '@prisma/client': '> 4 < 6' - nestjs-cls: ^4.2.0 + nestjs-cls: ^4.4.1 prisma: '> 4 < 6' dependencies: - '@nestjs-cls/transactional': 2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@prisma/client': 5.10.2(prisma@5.10.2) - nestjs-cls: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - prisma: 5.10.2 + '@nestjs-cls/transactional': 2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@prisma/client': 5.20.0(prisma@5.20.0) + nestjs-cls: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + prisma: 5.20.0 dev: false - /@nestjs-cls/transactional@2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(nestjs-cls@4.2.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-O3wWCiVjeOPLGPs/sPcAUhSe/xaNx8JuzBtGg4IqnVrZfbjDzeADtlHIO8YkYhHYAVbqvVtGFbfFjL5tDUGWsA==} + /@nestjs-cls/transactional@2.4.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(nestjs-cls@4.4.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-bQZ4Xo5BOPnmKcBk/Qsh/VX8kHr+fKTfJ6Fcxu/RGmxzSwjRVgShNu0E57V8CZkZJ6YuIKJoDQHAoIbeRIffbQ==} engines: {node: '>=16'} peerDependencies: '@nestjs/common': '> 7.0.0 < 11' '@nestjs/core': '> 7.0.0 < 11' - nestjs-cls: ^4.2.0 + nestjs-cls: ^4.4.1 reflect-metadata: '*' rxjs: '>= 7' dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - nestjs-cls: 4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - reflect-metadata: 0.1.13 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + nestjs-cls: 4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + reflect-metadata: 0.2.2 + rxjs: 7.8.1 + dev: false + + /@nestjs/axios@3.1.2(@nestjs/common@10.4.4)(axios@1.7.7)(rxjs@7.8.1): + resolution: {integrity: sha512-pFlfi4ZQsZtTNNhvgssbxjCHUd1nMpV3sXy/xOOB2uEJhw3M8j8SFR08gjFNil2we2Har7VCsXLfCkwbMHECFQ==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + axios: ^1.3.1 + rxjs: ^6.0.0 || ^7.0.0 + dependencies: + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + axios: 1.7.7(debug@2.6.9) rxjs: 7.8.1 dev: false - /@nestjs/cache-manager@2.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(cache-manager@5.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-hAcX1f5moiK7B8KnPZVfV/up4nrZnaeN6w0o3M+UzNJNlw6bsIH6bn7jpGqzySAWPD9iYE/rg5IxTe1vSWyWZg==} + /@nestjs/cache-manager@2.2.2(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(cache-manager@5.7.6)(rxjs@7.8.1): + resolution: {integrity: sha512-+n7rpU1QABeW2WV17Dl1vZCG3vWjJU1MaamWgZvbGxYE9EeCM0lVLfw3z7acgDTNwOy+K68xuQPoIMxD0bhjlA==} peerDependencies: '@nestjs/common': ^9.0.0 || ^10.0.0 '@nestjs/core': ^9.0.0 || ^10.0.0 cache-manager: <=5 - reflect-metadata: ^0.1.12 rxjs: ^7.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - cache-manager: 5.4.0 - reflect-metadata: 0.1.13 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + cache-manager: 5.7.6 rxjs: 7.8.1 dev: false - /@nestjs/cli@10.0.0: - resolution: {integrity: sha512-14pju3ejAAUpFe1iK99v/b7Bw96phBMV58GXTSm3TcdgaI4O7UTLXTbMiUNyU+LGr/1CPIfThcWqFyKhDIC9VQ==} - engines: {node: '>= 16'} + /@nestjs/cli@10.4.5: + resolution: {integrity: sha512-FP7Rh13u8aJbHe+zZ7hM0CC4785g9Pw4lz4r2TTgRtf0zTxSWMkJaPEwyjX8SK9oWK2GsYxl+fKpwVZNbmnj9A==} + engines: {node: '>= 16.14'} hasBin: true peerDependencies: - '@swc/cli': ^0.1.62 + '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 '@swc/core': ^1.3.62 peerDependenciesMeta: '@swc/cli': @@ -1380,27 +1482,24 @@ packages: '@swc/core': optional: true dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics-cli': 16.1.0(chokidar@3.5.3) - '@nestjs/schematics': 10.0.0(chokidar@3.5.3)(typescript@5.1.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics-cli': 17.3.8(chokidar@3.6.0) + '@nestjs/schematics': 10.1.4(chokidar@3.6.0)(typescript@5.3.3) chalk: 4.1.2 - chokidar: 3.5.3 - cli-table3: 0.6.3 + chokidar: 3.6.0 + cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.1.3)(webpack@5.87.0) - inquirer: 8.2.5 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0) + glob: 10.4.2 + inquirer: 8.2.6 node-emoji: 1.11.0 ora: 5.4.1 - os-name: 4.0.1 - rimraf: 4.4.1 - shelljs: 0.8.5 - source-map-support: 0.5.21 tree-kill: 1.2.2 tsconfig-paths: 4.2.0 - tsconfig-paths-webpack-plugin: 4.0.1 - typescript: 5.1.3 - webpack: 5.87.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.3.3 + webpack: 5.94.0 webpack-node-externals: 3.0.0 transitivePeerDependencies: - esbuild @@ -1408,12 +1507,12 @@ packages: - webpack-cli dev: true - /@nestjs/common@10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-Fa2GDQJrO5TTTcpISWfm0pdPS62V+8YbxeG5CA01zMUI+dCO3v3oFf+BSjqCGUUo7GDNzDsjAejwGXuqA54RPw==} + /@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-0j2/zqRw9nvHV1GKTktER8B/hIC/Z8CYFjN/ZqUuvwayCH+jZZBhCR2oRyuvLTXdnlSmtCAg2xvQ0ULqQvzqhA==} peerDependencies: class-transformer: '*' class-validator: '*' - reflect-metadata: ^0.1.12 + reflect-metadata: ^0.1.12 || ^0.2.0 rxjs: ^7.1.0 peerDependenciesMeta: class-transformer: @@ -1424,12 +1523,12 @@ packages: class-transformer: 0.5.1 class-validator: 0.14.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 rxjs: 7.8.1 - tslib: 2.5.3 + tslib: 2.7.0 uid: 2.0.2 - /@nestjs/common@9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1): + /@nestjs/common@9.4.0(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): resolution: {integrity: sha512-RUcVAQsEF4WPrmzFXEOUfZnPwrLTe1UVlzXTlSyfqfqbdWDPKDGlIPVelBLfc5/+RRUQ0I5iE4+CQvpCmkqldw==} peerDependencies: cache-manager: <=5 @@ -1445,39 +1544,38 @@ packages: class-validator: optional: true dependencies: - cache-manager: 5.4.0 + cache-manager: 5.7.6 class-transformer: 0.5.1 class-validator: 0.14.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 rxjs: 7.8.1 tslib: 2.5.0 uid: 2.0.2 dev: false - /@nestjs/config@3.1.1(@nestjs/common@10.0.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} + /@nestjs/config@3.2.3(@nestjs/common@10.4.4)(rxjs@7.8.1): + resolution: {integrity: sha512-p6yv/CvoBewJ72mBq4NXgOAi2rSQNWx3a+IMJLVKS2uiwFCOQQuiIatGwq6MRjXV3Jr+B41iUO8FIf4xBrZ4/w==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.13 + rxjs: ^7.1.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - dotenv: 16.3.1 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + dotenv: 16.4.5 dotenv-expand: 10.0.0 lodash: 4.17.21 - reflect-metadata: 0.1.13 - uuid: 9.0.0 + rxjs: 7.8.1 dev: false - /@nestjs/core@10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-HFTdj4vsF+2qOaq97ZPRDle6Q/KyL5lmMah0/ZR0ie+e1/tnlvmlqw589xFACTemLJFFOjZMy763v+icO9u72w==} + /@nestjs/core@10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-y9tjmAzU6LTh1cC/lWrRsCcOd80khSR0qAHAqwY2svbW+AhsR/XCzgpZrAAKJrm/dDfjLCZKyxJSayeirGcW5Q==} requiresBuild: true peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/microservices': ^10.0.0 '@nestjs/platform-express': ^10.0.0 '@nestjs/websockets': ^10.0.0 - reflect-metadata: ^0.1.12 + reflect-metadata: ^0.1.12 || ^0.2.0 rxjs: ^7.1.0 peerDependenciesMeta: '@nestjs/microservices': @@ -1487,42 +1585,40 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 + path-to-regexp: 3.3.0 + reflect-metadata: 0.2.2 rxjs: 7.8.1 - tslib: 2.5.3 + tslib: 2.7.0 uid: 2.0.2 transitivePeerDependencies: - encoding - /@nestjs/event-emitter@2.0.3(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-Pt7KAERrgK0OjvarSI3wfVhwZ8X1iLq1lXuodyRe+Zx3aLLP7fraFUHirASbFkB6KIQ1Zj+gZ1g8a9eu4GfFhw==} + /@nestjs/event-emitter@2.0.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): + resolution: {integrity: sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.12 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) eventemitter2: 6.4.9 - reflect-metadata: 0.1.13 dev: false - /@nestjs/jwt@10.2.0(@nestjs/common@10.0.0): + /@nestjs/jwt@10.2.0(@nestjs/common@10.4.4): resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@types/jsonwebtoken': 9.0.5 jsonwebtoken: 9.0.2 dev: false - /@nestjs/mapped-types@2.0.5(@nestjs/common@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@2.0.5(@nestjs/common@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2): resolution: {integrity: sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -1535,23 +1631,23 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) class-transformer: 0.5.1 class-validator: 0.14.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.2.2 dev: false - /@nestjs/passport@10.0.3(@nestjs/common@10.0.0)(passport@0.7.0): + /@nestjs/passport@10.0.3(@nestjs/common@10.4.4)(passport@0.7.0): resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) passport: 0.7.0 dev: false - /@nestjs/platform-fastify@10.3.4(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0): + /@nestjs/platform-fastify@10.3.4(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): resolution: {integrity: sha512-rYoAdJ1ybBXPwO+KutWJ4siaqGDdMzwXS4ggJ5soQgD4maN2p1rvKE31MzERd1MqYXWprFIESFHuxkiHMZV6kg==} peerDependencies: '@fastify/static': ^6.0.0 || ^7.0.0 @@ -1567,34 +1663,32 @@ packages: '@fastify/cors': 9.0.1 '@fastify/formbody': 7.4.0 '@fastify/middie': 8.3.0 - '@fastify/static': 6.12.0 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@fastify/static': 7.0.4 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) fastify: 4.26.2 light-my-request: 5.12.0 path-to-regexp: 3.2.0 tslib: 2.6.2 - transitivePeerDependencies: - - supports-color dev: false - /@nestjs/schematics@10.0.0(chokidar@3.5.3)(typescript@5.1.3): - resolution: {integrity: sha512-gfUy/N1m1paN33BXq4d7HoCM+zM4rFxYjqAb8jkrBfBHiwyEhHHozfX/aRy/kOnAcy/VP8v4Zs4HKKrbRRlHnw==} + /@nestjs/schematics@10.1.4(chokidar@3.6.0)(typescript@5.3.3): + resolution: {integrity: sha512-QpY8ez9cTvXXPr3/KBrtSgXQHMSV6BkOUYy2c2TTe6cBqriEdGnCYqGl8cnfrQl3632q3lveQPaZ/c127dHsEw==} peerDependencies: typescript: '>=4.8.2' dependencies: - '@angular-devkit/core': 16.1.0(chokidar@3.5.3) - '@angular-devkit/schematics': 16.1.0(chokidar@3.5.3) + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) comment-json: 4.2.3 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 pluralize: 8.0.0 - typescript: 5.1.3 + typescript: 5.3.3 transitivePeerDependencies: - chokidar dev: true - /@nestjs/swagger@7.3.0(@fastify/static@6.12.0)(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-zLkfKZ+ioYsIZ3dfv7Bj8YHnZMNAGWFUmx2ZDuLp/fBE4P8BSjB7hldzDueFXsmwaPL90v7lgyd82P+s7KME1Q==} + /@nestjs/swagger@7.4.2(@fastify/static@7.0.4)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2): + resolution: {integrity: sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==} peerDependencies: '@fastify/static': ^6.0.0 || ^7.0.0 '@nestjs/common': ^9.0.0 || ^10.0.0 @@ -1610,22 +1704,80 @@ packages: class-validator: optional: true dependencies: - '@fastify/static': 6.12.0 - '@microsoft/tsdoc': 0.14.2 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.0.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13) + '@fastify/static': 7.0.4 + '@microsoft/tsdoc': 0.15.0 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) class-transformer: 0.5.1 class-validator: 0.14.1 js-yaml: 4.1.0 lodash: 4.17.21 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - swagger-ui-dist: 5.11.2 + path-to-regexp: 3.3.0 + reflect-metadata: 0.2.2 + swagger-ui-dist: 5.17.14 dev: false - /@nestjs/testing@10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0): - resolution: {integrity: sha512-U5q3+svkddpdSk51ZFCEnFpQuWxAwE4ahsX77FrqqCAYidr7HUtL/BHYOVzI5H9vUH6BvJxMbfo3tiUXQl/2aA==} + /@nestjs/terminus@10.2.3(@nestjs/axios@3.1.2)(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(@prisma/client@5.20.0)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-iX7gXtAooePcyQqFt57aDke5MzgdkBeYgF5YsFNNFwOiAFdIQEhfv3PR0G+HlH9F6D7nBCDZt9U87Pks/qHijg==} + peerDependencies: + '@grpc/grpc-js': '*' + '@grpc/proto-loader': '*' + '@mikro-orm/core': '*' + '@mikro-orm/nestjs': '*' + '@nestjs/axios': ^1.0.0 || ^2.0.0 || ^3.0.0 + '@nestjs/common': ^9.0.0 || ^10.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 + '@nestjs/microservices': ^9.0.0 || ^10.0.0 + '@nestjs/mongoose': ^9.0.0 || ^10.0.0 + '@nestjs/sequelize': ^9.0.0 || ^10.0.0 + '@nestjs/typeorm': ^9.0.0 || ^10.0.0 + '@prisma/client': '*' + mongoose: '*' + reflect-metadata: 0.1.x || 0.2.x + rxjs: 7.x + sequelize: '*' + typeorm: '*' + peerDependenciesMeta: + '@grpc/grpc-js': + optional: true + '@grpc/proto-loader': + optional: true + '@mikro-orm/core': + optional: true + '@mikro-orm/nestjs': + optional: true + '@nestjs/axios': + optional: true + '@nestjs/microservices': + optional: true + '@nestjs/mongoose': + optional: true + '@nestjs/sequelize': + optional: true + '@nestjs/typeorm': + optional: true + '@prisma/client': + optional: true + mongoose: + optional: true + sequelize: + optional: true + typeorm: + optional: true + dependencies: + '@nestjs/axios': 3.1.2(@nestjs/common@10.4.4)(axios@1.7.7)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@prisma/client': 5.20.0(prisma@5.20.0) + boxen: 5.1.2 + check-disk-space: 3.4.0 + reflect-metadata: 0.2.2 + rxjs: 7.8.1 + dev: false + + /@nestjs/testing@10.4.4(@nestjs/common@10.4.4)(@nestjs/core@10.4.4): + resolution: {integrity: sha512-qRGFj51A5RM7JqA8pcyEwSLA3Y0dle/PAZ8oxP0suimoCusRY3Tk7wYqutZdCNj1ATb678SDaUZDHk2pwSv9/g==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -1637,12 +1789,12 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - tslib: 2.5.3 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + tslib: 2.7.0 dev: true - /@nestjs/testing@9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.0.0): + /@nestjs/testing@9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.4.4): resolution: {integrity: sha512-xZWp363P4otcebg++gSjUcdCfTK0RorORzyFq3aLaSAQOlq8kxfFDRIKzEATR4aOUfqTMMsAA8lhnMJWf35N6A==} peerDependencies: '@nestjs/common': ^9.0.0 @@ -1655,11 +1807,23 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 9.4.0(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) tslib: 2.5.0 dev: false + /@nestjs/throttler@6.2.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2): + resolution: {integrity: sha512-vdt6VjhKC6vcLBJRUb97IuR6Htykn5kokZzmT8+S5XFOLLjUF7rzRpr+nUOhK9pi1L0hhbzSf2v2FJl4v64EJA==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.13 || ^0.2.0 + dependencies: + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + reflect-metadata: 0.2.2 + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1681,13 +1845,13 @@ packages: fastq: 1.17.1 dev: true - /@nodeteam/nestjs-prisma-pagination@1.0.6(@babel/core@7.23.9)(@nestjs/core@10.0.0)(@types/node@20.3.1)(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1)(ts-node@10.9.1): + /@nodeteam/nestjs-prisma-pagination@1.0.6(@babel/core@7.26.0)(@nestjs/core@10.4.4)(@types/node@22.7.5)(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1): resolution: {integrity: sha512-ZTTXIlbnphmtBt4xFlFfV7an5e2EvmC/P4nj7s0nbSgq8bYovjMAbGxlmBh/shxfVaQeYCl78SoSnYWOjIQMCA==} dependencies: - '@nestjs/common': 9.4.0(cache-manager@5.4.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/testing': 9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.0.0) - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) - ts-jest: 29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.0.4) + '@nestjs/common': 9.4.0(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/testing': 9.4.0(@nestjs/common@9.4.0)(@nestjs/core@10.4.4) + jest: 29.5.0(@types/node@22.7.5) + ts-jest: 29.1.0(@babel/core@7.26.0)(jest@29.5.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@babel/core' @@ -1709,23 +1873,6 @@ packages: - ts-node dev: false - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - dev: false - - /@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 - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - /@nuxtjs/opencollective@0.3.2: resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} @@ -1745,7 +1892,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true - dev: false optional: true /@pkgr/core@0.1.1: @@ -1757,8 +1903,21 @@ packages: resolution: {integrity: sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==} dev: true - /@pond918/prisma-generator-nestjs-dto@1.17.513: - resolution: {integrity: sha512-wq/GSVeVuD8kSm1Q6mC2T1MjNkyhn4wtD+N62Zp4XwV4hbxVNXUgLQsBn1lex8Yhd9DqHlVAawyTwKhLt6xBqg==} + /@pond918/postman-to-openapi@3.0.3: + resolution: {integrity: sha512-n1Gsm46EXPg2k8NHfZrbwyUth3K58BHqh3lBqisk3p2+giDeg2biKQAMGZhn9w+4YpAR6WUe6le5eg4xAH/A7Q==} + engines: {node: '>=14 <20'} + hasBin: true + dependencies: + commander: 8.3.0 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lodash.camelcase: 4.3.0 + marked: 4.3.0 + mustache: 4.2.0 + dev: false + + /@pond918/prisma-generator-nestjs-dto@1.18.2: + resolution: {integrity: sha512-mUPbUf3i1OZp6QopKpoaCI/wrR8QIBY7TYlWnaUB6nLoAebxp3emu3D+A30k41JSuHimEy0Zhs8pq9rIIq3dKg==} engines: {node: '>=14'} hasBin: true dependencies: @@ -1769,14 +1928,14 @@ packages: pluralize-esm: 9.0.5 prettier: 2.8.8 slash: 3.0.0 - tar: 6.2.0 + tar: 6.2.1 ts-toolbelt: 9.6.0 transitivePeerDependencies: - supports-color dev: true - /@prisma/client@5.10.2(prisma@5.10.2): - resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} + /@prisma/client@5.20.0(prisma@5.20.0): + resolution: {integrity: sha512-CLv55ZuMuUawMsxoqxGtLT3bEZoa2W8L3Qnp6rDIFWy+ZBrUcOFKdoeGPSnbBqxc3SkdxJrF+D1veN/WNynZYA==} engines: {node: '>=16.13'} requiresBuild: true peerDependencies: @@ -1785,7 +1944,7 @@ packages: prisma: optional: true dependencies: - prisma: 5.10.2 + prisma: 5.20.0 /@prisma/debug@4.16.2: resolution: {integrity: sha512-7L7WbG0qNNZYgLpsVB8rCHCXEyHFyIycRlRDNwkVfjQmACC2OW6AWCYCbfdjQhkF/t7+S3njj8wAWAocSs+Brw==} @@ -1797,27 +1956,27 @@ packages: - supports-color dev: true - /@prisma/debug@5.10.2: - resolution: {integrity: sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==} + /@prisma/debug@5.20.0: + resolution: {integrity: sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ==} - /@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9: - resolution: {integrity: sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==} + /@prisma/engines-version@5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284: + resolution: {integrity: sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA==} - /@prisma/engines@5.10.2: - resolution: {integrity: sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==} + /@prisma/engines@5.20.0: + resolution: {integrity: sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ==} requiresBuild: true dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/fetch-engine': 5.10.2 - '@prisma/get-platform': 5.10.2 + '@prisma/debug': 5.20.0 + '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 + '@prisma/fetch-engine': 5.20.0 + '@prisma/get-platform': 5.20.0 - /@prisma/fetch-engine@5.10.2: - resolution: {integrity: sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==} + /@prisma/fetch-engine@5.20.0: + resolution: {integrity: sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw==} dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/get-platform': 5.10.2 + '@prisma/debug': 5.20.0 + '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 + '@prisma/get-platform': 5.20.0 /@prisma/generator-helper@4.16.2: resolution: {integrity: sha512-bMOH7y73Ui7gpQrioFeavMQA+Tf8ksaVf8Nhs9rQNzuSg8SSV6E9baczob0L5KGZTSgYoqnrRxuo03kVJYrnIg==} @@ -1830,10 +1989,10 @@ packages: - supports-color dev: true - /@prisma/get-platform@5.10.2: - resolution: {integrity: sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==} + /@prisma/get-platform@5.20.0: + resolution: {integrity: sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA==} dependencies: - '@prisma/debug': 5.10.2 + '@prisma/debug': 5.20.0 /@schematics/angular@13.3.11: resolution: {integrity: sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==} @@ -1859,71 +2018,54 @@ packages: dependencies: '@sinonjs/commons': 3.0.1 - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.26.0 /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.26.0 /@types/bcrypt@5.0.2: resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/cookiejar@2.1.5: @@ -1933,7 +2075,7 @@ packages: /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true /@types/debug@4.1.8: @@ -1949,43 +2091,43 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.2 - '@types/estree': 1.0.5 + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 dev: true - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + /@types/eslint@9.6.1: + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 dev: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} dev: true - /@types/express-serve-static-core@4.17.43: - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + /@types/express-serve-static-core@5.0.1: + resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} dependencies: - '@types/node': 20.3.1 - '@types/qs': 6.9.11 + '@types/node': 22.7.5 + '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + /@types/express@5.0.0: + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.11 - '@types/serve-static': 1.15.5 + '@types/express-serve-static-core': 5.0.1 + '@types/qs': 6.9.17 + '@types/serve-static': 1.15.7 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -2004,8 +2146,8 @@ packages: dependencies: '@types/istanbul-lib-report': 3.0.3 - /@types/jest@29.5.2: - resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} + /@types/jest@29.5.13: + resolution: {integrity: sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -2017,7 +2159,14 @@ packages: /@types/jsonwebtoken@9.0.5: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 + dev: false + + /@types/jsonwebtoken@9.0.7: + resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + dependencies: + '@types/node': 22.7.5 + dev: true /@types/methods@1.1.4: resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} @@ -2027,10 +2176,6 @@ packages: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - dev: true - /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true @@ -2039,339 +2184,325 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + /@types/node@22.7.5: + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + dependencies: + undici-types: 6.19.8 /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: true - /@types/passport-jwt@4.0.1: resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==} dependencies: - '@types/jsonwebtoken': 9.0.5 + '@types/jsonwebtoken': 9.0.7 '@types/passport-strategy': 0.2.38 dev: true /@types/passport-local@1.0.38: resolution: {integrity: sha512-nsrW4A963lYE7lNTv9cr5WmiUD1ibYJvWrpE13oxApFsRt77b0RdtZvKbCdNIY4v/QZ6TRQWaDDEwV1kCTmcXg==} dependencies: - '@types/express': 4.17.17 - '@types/passport': 1.0.16 + '@types/express': 5.0.0 + '@types/passport': 1.0.17 '@types/passport-strategy': 0.2.38 dev: true /@types/passport-strategy@0.2.38: resolution: {integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==} dependencies: - '@types/express': 4.17.17 - '@types/passport': 1.0.16 + '@types/express': 5.0.0 + '@types/passport': 1.0.17 dev: true - /@types/passport@1.0.16: - resolution: {integrity: sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==} + /@types/passport@1.0.17: + resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==} dependencies: - '@types/express': 4.17.17 + '@types/express': 5.0.0 dev: true - /@types/qs@6.9.11: - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + /@types/qs@6.9.17: + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} dev: true /@types/range-parser@1.2.7: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - dev: true - /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.3.1 + '@types/node': 22.7.5 dev: true - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 + '@types/send': 0.17.4 dev: true /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - /@types/superagent@8.1.3: - resolution: {integrity: sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==} + /@types/superagent@8.1.9: + resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==} dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 20.3.1 + '@types/node': 22.7.5 + form-data: 4.0.1 dev: true - /@types/supertest@6.0.0: - resolution: {integrity: sha512-j3/Z2avY+H3yn+xp/ef//QyqqE+dg3rWh14Ewi/QZs6uVK+oOs7lFRXtjp2YHAqHJZ4OFGNmCxZO5vd7AuG/Dg==} + /@types/supertest@6.0.2: + resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} dependencies: - '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/superagent': 8.1.3 + '@types/superagent': 8.1.9 dev: true - /@types/validator@13.11.9: - resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==} + /@types/validator@13.12.2: + resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1)(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/type-utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4 - eslint: 8.42.0 - grapheme-splitter: 1.0.4 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 + eslint: 9.12.0 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4 - eslint: 8.42.0 - typescript: 5.1.3 + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 + debug: 4.3.7 + eslint: 9.12.0 + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@8.8.1: + resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - '@typescript-eslint/utils': 6.0.0(eslint@8.42.0)(typescript@5.1.3) - debug: 4.3.4 - eslint: 8.42.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + debug: 4.3.7 + ts-api-utils: 1.4.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@8.8.1: + resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.3): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3): + resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4 - globby: 11.1.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 + debug: 4.3.7 + fast-glob: 3.3.2 is-glob: 4.0.3 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.1.3) - typescript: 5.1.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.42.0)(typescript@5.1.3): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.6.3): + resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.3) - eslint: 8.42.0 - eslint-scope: 5.1.1 - semver: 7.6.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.12.0) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + eslint: 9.12.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@8.8.1: + resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.14.1: + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 dev: true - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + /@webassemblyjs/floating-point-hex-parser@1.13.2: + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} dev: true - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + /@webassemblyjs/helper-api-error@1.13.2: + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} dev: true - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.14.1: + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} dev: true - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + /@webassemblyjs/helper-numbers@1.13.2: + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + /@webassemblyjs/helper-wasm-bytecode@1.13.2: + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} dev: true - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.14.1: + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} 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/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 dev: true - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + /@webassemblyjs/ieee754@1.13.2: + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + /@webassemblyjs/leb128@1.13.2: + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} dependencies: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + /@webassemblyjs/utf8@1.13.2: + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} dev: true - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.14.1: + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} 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/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 dev: true - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.14.1: + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} 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/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.14.1: + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} 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/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 dev: true - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.14.1: + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} 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/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.14.1: + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 dev: true @@ -2406,36 +2537,33 @@ packages: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + /acorn-import-attributes@1.9.5(acorn@8.14.0): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.3 + acorn: 8.14.0 dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.3 + acorn: 8.14.0 dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - /acorn@4.0.13: resolution: {integrity: sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} @@ -2445,26 +2573,11 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: false - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - dependencies: - humanize-ms: 1.2.1 - dev: false - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2474,6 +2587,18 @@ packages: optional: true dependencies: ajv: 8.12.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.17.1): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: false /ajv-formats@2.1.1(ajv@8.9.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -2486,6 +2611,17 @@ packages: ajv: 8.9.0 dev: false + /ajv-formats@3.0.1(ajv@8.17.1): + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: false + /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -2510,6 +2646,15 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: true + + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 /ajv@8.9.0: resolution: {integrity: sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==} @@ -2520,6 +2665,12 @@ packages: uri-js: 4.4.1 dev: false + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -2540,10 +2691,9 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} - dev: false /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -2555,6 +2705,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2569,7 +2720,6 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -2578,33 +2728,23 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + /append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} dev: false - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: false /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. dependencies: delegates: 1.0.0 readable-stream: 3.6.2 dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: false - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -2633,11 +2773,6 @@ packages: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - /array-unique@0.2.1: resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} engines: {node: '>=0.10.0'} @@ -2652,9 +2787,9 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: false + /async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2675,38 +2810,34 @@ packages: engines: {node: '>=8.0.0'} dev: false - /avvio@8.3.0: - resolution: {integrity: sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==} + /avvio@8.4.0: + resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==} dependencies: '@fastify/error': 3.4.1 - archy: 1.0.0 - debug: 4.3.4 fastq: 1.17.1 - transitivePeerDependencies: - - supports-color dev: false - /axios@1.6.7(debug@2.6.9): - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + /axios@1.7.7(debug@2.6.9): + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} dependencies: - follow-redirects: 1.15.5(debug@2.6.9) - form-data: 4.0.0 + follow-redirects: 1.15.9(debug@2.6.9) + form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: false - /babel-jest@29.7.0(@babel/core@7.23.9): + /babel-jest@29.7.0(@babel/core@7.26.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 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.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.23.9) + babel-preset-jest: 29.6.3(@babel/core@7.26.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -2717,7 +2848,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.25.9 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -2729,39 +2860,42 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + /babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - - /babel-preset-jest@29.6.3(@babel/core@7.23.9): + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + /babel-preset-jest@29.6.3(@babel/core@7.26.0): 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 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2781,17 +2915,11 @@ packages: - supports-color dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} dev: true - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 - dev: false - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -2799,6 +2927,20 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2819,21 +2961,21 @@ packages: repeat-element: 1.1.4 dev: false - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - /browserslist@4.22.3: - resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001584 - electron-to-chromium: 1.4.659 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.3) + caniuse-lite: 1.0.30001683 + electron-to-chromium: 1.5.64 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -2866,37 +3008,13 @@ packages: ieee754: 1.2.1 dev: false - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - 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 - dev: false - - /cache-manager@5.4.0: - resolution: {integrity: sha512-FS7o8vqJosnLpu9rh2gQTo8EOzCRJLF1BJ4XDEUDMqcfvs7SJZs5iuoFTXLauzQ3S5v8sBAST1pCwMaurpyi1A==} + /cache-manager@5.7.6: + resolution: {integrity: sha512-wBxnBHjDxF1RXpHCBD6HGvKER003Ts7IIm0CHpggliHzN1RZditb7rXoduE1rplc2DEFYKxhLKgFuchXMJje9w==} + engines: {node: '>= 18'} dependencies: + eventemitter3: 5.0.1 lodash.clonedeep: 4.5.0 - lru-cache: 10.2.0 + lru-cache: 10.4.3 promise-coalesce: 1.1.2 dev: false @@ -2905,15 +3023,15 @@ packages: engines: {node: '>=6'} dev: true - /call-bind@1.0.6: - resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} 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.1 - dev: true + set-function-length: 1.2.2 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2946,18 +3064,20 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite@1.0.30001584: - resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} + /caniuse-lite@1.0.30001683: + resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} dev: true - /centra@2.6.0: - resolution: {integrity: sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dev: true + /centra@2.7.0(debug@2.6.9): + resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} + dependencies: + follow-redirects: 1.15.9(debug@2.6.9) + transitivePeerDependencies: + - debug /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -2977,6 +3097,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2998,12 +3119,17 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /check-disk-space@3.4.0: + resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==} + engines: {node: '>=16'} + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -3017,8 +3143,13 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + /chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + dev: true + + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} dev: true @@ -3026,8 +3157,8 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + /cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} /class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} @@ -3035,12 +3166,12 @@ packages: /class-validator@0.14.1: resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} dependencies: - '@types/validator': 13.11.9 - libphonenumber-js: 1.10.58 - validator: 13.11.0 + '@types/validator': 13.12.2 + libphonenumber-js: 1.11.15 + validator: 13.12.0 - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} dev: false @@ -3054,8 +3185,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -3068,6 +3199,11 @@ packages: engines: {node: '>= 10'} dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + /cliui@3.2.0: resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} dependencies: @@ -3116,6 +3252,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -3125,6 +3262,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3153,6 +3291,11 @@ packages: engines: {node: '>= 6'} dev: true + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false + /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -3164,13 +3307,13 @@ packages: repeat-string: 1.6.1 dev: true - /commitizen@4.3.0(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} + /commitizen@4.3.1(@types/node@22.7.5)(typescript@5.6.3): + resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.3.1)(typescript@5.1.3) + cz-conventional-changelog: 3.3.0(@types/node@22.7.5)(typescript@5.6.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -3211,6 +3354,16 @@ packages: typedarray: 0.0.7 dev: false + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + /concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} @@ -3219,7 +3372,6 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 typedarray: 0.0.6 - dev: true /consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} @@ -3429,8 +3581,8 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie-signature@1.2.1: - resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + /cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} dev: false @@ -3439,6 +3591,11 @@ packages: engines: {node: '>= 0.6'} dev: false + /cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + dev: false + /cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true @@ -3446,32 +3603,37 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.3.1)(cosmiconfig@9.0.0)(typescript@5.1.3): - resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + /cosmiconfig-typescript-loader@5.1.0(@types/node@22.7.5)(cosmiconfig@9.0.0)(typescript@5.6.3): + resolution: {integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==} engines: {node: '>=v16'} peerDependencies: '@types/node': '*' cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 20.3.1 - cosmiconfig: 9.0.0(typescript@5.1.3) - jiti: 1.21.0 - typescript: 5.1.3 + '@types/node': 22.7.5 + cosmiconfig: 9.0.0(typescript@5.6.3) + jiti: 1.21.6 + typescript: 5.6.3 dev: true - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/parse-json': 4.0.2 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + typescript: 5.3.3 dev: true - /cosmiconfig@9.0.0(typescript@5.1.3): + /cosmiconfig@9.0.0(typescript@5.6.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -3484,10 +3646,10 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.1.3 + typescript: 5.6.3 dev: true - /create-jest@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /create-jest@29.7.0(@types/node@22.7.5): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3496,7 +3658,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@22.7.5) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3505,9 +3667,6 @@ packages: - supports-color - ts-node - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -3515,6 +3674,15 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true + + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 /css@2.2.4: resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} @@ -3525,18 +3693,18 @@ packages: urix: 0.1.0 dev: false - /cz-conventional-changelog@3.3.0(@types/node@20.3.1)(typescript@5.1.3): + /cz-conventional-changelog@3.3.0(@types/node@22.7.5)(typescript@5.6.3): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.3.1)(typescript@5.1.3) + commitizen: 4.3.1(@types/node@22.7.5)(typescript@5.6.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.2.0(@types/node@20.3.1)(typescript@5.1.3) + '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - '@types/node' - typescript @@ -3579,7 +3747,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: false /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -3591,6 +3758,18 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true + + /debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -3613,8 +3792,8 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -3638,15 +3817,13 @@ packages: dependencies: clone: 1.0.4 - /define-data-property@1.1.2: - resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -3671,8 +3848,8 @@ packages: engines: {node: '>=8'} dev: true - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} dev: false @@ -3696,24 +3873,6 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -3732,10 +3891,16 @@ packages: engines: {node: '>=12'} dev: false - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv-expand@11.0.6: + resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} + engines: {node: '>=12'} + dependencies: + dotenv: 16.4.5 + dev: true + + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dev: false /dotgitignore@2.1.0: resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} @@ -3754,8 +3919,8 @@ packages: stream-shift: 1.0.3 dev: false - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 @@ -3765,7 +3930,6 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -3773,8 +3937,20 @@ packages: safe-buffer: 5.2.1 dev: false - /electron-to-chromium@1.4.659: - resolution: {integrity: sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg==} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false + + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.2 + dev: true + + /electron-to-chromium@1.5.64: + resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -3785,23 +3961,15 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - dev: false - optional: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -3811,27 +3979,29 @@ packages: /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: true - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} dev: true - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} /escape-html@1.0.3: @@ -3851,17 +4021,17 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.42.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + /eslint-config-prettier@9.1.0(eslint@9.12.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.42.0 + eslint: 9.12.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.42.0)(prettier@3.0.0): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3): + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -3874,11 +4044,11 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.42.0 - eslint-config-prettier: 9.0.0(eslint@8.42.0) - prettier: 3.0.0 + eslint: 9.12.0 + eslint-config-prettier: 9.1.0(eslint@9.12.0) + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + synckit: 0.9.2 dev: true /eslint-scope@5.1.1: @@ -3889,9 +4059,9 @@ packages: estraverse: 4.3.0 dev: true - /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-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -3902,61 +4072,67 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.12.0: + resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.42.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.12.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.12.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 + cross-spawn: 7.0.6 + debug: 4.3.7 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 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - import-fresh: 3.3.0 + ignore: 5.3.2 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 - strip-json-comments: 3.1.1 + optionator: 0.9.4 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 dev: true /esprima@4.0.1: @@ -3964,8 +4140,8 @@ packages: engines: {node: '>=4'} hasBin: true - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -4002,30 +4178,19 @@ packages: resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - 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 - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -4035,21 +4200,6 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -4085,10 +4235,6 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false - /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -4120,13 +4266,12 @@ packages: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} dev: false - /fast-copy@3.0.1: - resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==} + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} dev: false /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4143,22 +4288,22 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - /fast-json-stringify@5.12.0: - resolution: {integrity: sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==} + /fast-json-stringify@5.16.1: + resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==} dependencies: '@fastify/merge-json-schemas': 0.1.1 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) fast-deep-equal: 3.1.3 - fast-uri: 2.3.0 + fast-uri: 2.4.0 json-schema-ref-resolver: 1.0.1 - rfdc: 1.3.1 + rfdc: 1.4.1 dev: false /fast-levenshtein@2.0.6: @@ -4169,27 +4314,49 @@ packages: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} dependencies: fast-decode-uri-component: 1.0.1 - dev: false - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - /fast-uri@2.3.0: - resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} + /fast-uri@2.4.0: + resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} dev: false - /fastify-ip@1.0.0: - resolution: {integrity: sha512-ht6hS48UDmdHd9jARn2BphJUgw5u/nm8ItO9EceM2uSVhlusrkF07CfNvpuJHxFX8Nx+Eik/VJz0QzxOn3KMJA==} + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + /fastify-ip@1.1.0: + resolution: {integrity: sha512-23M1Jbw5ftu1uMeVYsyqUfKs85SsfvopJZufdSinzbrYYQtD4V7TWn1Mc6IliQXHk0mdiLeKxYH4F3OZlxG5Ow==} engines: {node: '>=18.x'} dependencies: fastify-plugin: 4.5.1 dev: false + /fastify-multer@2.0.3: + resolution: {integrity: sha512-QnFqrRgxmUwWHTgX9uyQSu0C/hmVCfcxopqjApZ4uaZD5W9MJ+nHUlW4+9q7Yd3BRxDIuHvgiM5mjrh6XG8cAA==} + engines: {node: '>=10.17.0'} + dependencies: + '@fastify/busboy': 1.2.1 + append-field: 1.0.0 + concat-stream: 2.0.0 + fastify-plugin: 2.3.4 + mkdirp: 1.0.4 + on-finished: 2.4.1 + type-is: 1.6.18 + xtend: 4.0.2 + dev: false + + /fastify-plugin@2.3.4: + resolution: {integrity: sha512-I+Oaj6p9oiRozbam30sh39BiuiqBda7yK2nmSPVwDCfIBlKnT8YB3MY+pRQc2Fcd07bf6KPGklHJaQ2Qu81TYQ==} + dependencies: + semver: 7.6.3 + dev: false + /fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} dev: false @@ -4197,24 +4364,22 @@ packages: /fastify@4.26.2: resolution: {integrity: sha512-90pjTuPGrfVKtdpLeLzND5nyC4woXZN5VadiNQCicj/iJU4viNHKhsAnb7jmv1vu2IzkLXyBiCzdWuzeXgQ5Ug==} dependencies: - '@fastify/ajv-compiler': 3.5.0 + '@fastify/ajv-compiler': 3.6.0 '@fastify/error': 3.4.1 '@fastify/fast-json-stringify-compiler': 4.3.0 abstract-logging: 2.0.1 - avvio: 8.3.0 + avvio: 8.4.0 fast-content-type-parse: 1.1.0 - fast-json-stringify: 5.12.0 - find-my-way: 8.1.0 - light-my-request: 5.12.0 - pino: 8.18.0 + fast-json-stringify: 5.16.1 + find-my-way: 8.2.2 + light-my-request: 5.14.0 + pino: 8.21.0 process-warning: 3.0.0 proxy-addr: 2.0.7 - rfdc: 1.3.1 + rfdc: 1.4.1 secure-json-parse: 2.7.0 - semver: 7.6.0 + semver: 7.6.3 toad-cache: 3.7.0 - transitivePeerDependencies: - - supports-color dev: false /fastq@1.17.1: @@ -4234,16 +4399,18 @@ packages: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true /filename-regex@2.0.1: resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} @@ -4261,20 +4428,19 @@ packages: repeat-string: 1.6.1 dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /find-my-way@8.1.0: - resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} + /find-my-way@8.2.2: + resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} engines: {node: '>=14'} dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 - safe-regex2: 2.0.0 - dev: false + safe-regex2: 3.1.0 /find-node-modules@2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} @@ -4339,7 +4505,7 @@ packages: dependencies: detect-file: 1.0.0 is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.8 resolve-dir: 1.0.1 dev: true @@ -4348,21 +4514,20 @@ packages: engines: {node: '>=0.10.0'} dev: false - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: - flatted: 3.2.9 + flatted: 3.3.2 keyv: 4.5.4 - rimraf: 3.0.2 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} dev: true - /follow-redirects@1.15.5(debug@2.6.9): - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + /follow-redirects@1.15.9(debug@2.6.9): + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4371,7 +4536,6 @@ packages: optional: true dependencies: debug: 2.6.9 - dev: false /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} @@ -4385,35 +4549,34 @@ packages: for-in: 1.0.2 dev: false - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 - dev: false - /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.1.3)(webpack@5.87.0): - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0): + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' webpack: ^5.11.0 dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.26.2 chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 7.1.0 + chokidar: 3.6.0 + cosmiconfig: 8.3.6(typescript@5.3.3) deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.6.0 + semver: 7.6.3 tapable: 2.2.1 - typescript: 5.1.3 - webpack: 5.87.0 + typescript: 5.3.3 + webpack: 5.94.0 dev: true /form-data-lite@1.0.3: @@ -4424,8 +4587,8 @@ packages: mime-lite: 1.0.3 dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + /form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -4438,7 +4601,7 @@ packages: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.2 + qs: 6.13.1 dev: true /forwarded@0.2.0: @@ -4446,13 +4609,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: false - /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -4478,8 +4634,8 @@ packages: dependencies: minipass: 3.3.6 - /fs-monkey@1.0.5: - resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + /fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} dev: true /fs.realpath@1.0.0: @@ -4498,6 +4654,7 @@ packages: /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -4510,20 +4667,6 @@ packages: wide-align: 1.1.5 dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - 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 - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4538,10 +4681,9 @@ packages: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - dev: true + hasown: 2.0.2 /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -4558,22 +4700,10 @@ packages: yargs: 16.2.0 dev: true - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -4672,20 +4802,33 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - dev: false + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: true + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 /glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: inflight: 1.0.6 inherits: 2.0.4 @@ -4696,6 +4839,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4704,27 +4848,6 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: false - - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.1 - dev: true - /global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -4756,38 +4879,19 @@ packages: 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'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - 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 + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} dev: true /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 - dev: true /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==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -4821,7 +4925,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.4 + uglify-js: 3.19.3 dev: true /hard-rejection@2.1.0: @@ -4839,6 +4943,7 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -4849,34 +4954,31 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.4 - dev: true + es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - /helmet@7.1.0: - resolution: {integrity: sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==} + /helmet@7.2.0: + resolution: {integrity: sha512-ZRiwvN089JfMXokizgqEPXsl2Guk094yExfoDXR0cBYWxtBbaSww/w+vT4WEJsBW2iTUi1GgZ6swmoug3Oy4Xw==} engines: {node: '>=16.0.0'} dev: false @@ -4909,10 +5011,6 @@ packages: /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -4924,15 +5022,9 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + /http-status@1.7.4: + resolution: {integrity: sha512-c2qSwNtTlHVYAhMj9JpGdyo0No/+DiKXCJ9pHtZ2Yf3QmPnBIytKSRT7BuyIiQ7icXLynavGmxUqkOjSrAuMuA==} + engines: {node: '>= 0.4.0'} dev: false /https-proxy-agent@5.0.1: @@ -4940,33 +5032,17 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: false - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: false - - /husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + /husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} engines: {node: '>=18'} hasBin: true dev: true @@ -4978,19 +5054,11 @@ packages: safer-buffer: 2.1.2 dev: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - optional: true - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} dev: true @@ -5002,16 +5070,16 @@ packages: resolve-from: 4.0.0 dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - /import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + /import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} dev: true /imurmurhash@0.1.4: @@ -5021,13 +5089,11 @@ packages: /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==} - dev: false + dev: true /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. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -5044,8 +5110,8 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + /inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -5065,8 +5131,8 @@ packages: wrap-ansi: 7.0.0 dev: true - /inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -5083,35 +5149,35 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true - - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} + wrap-ansi: 6.2.0 dev: true - /into-stream@6.0.0: - resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} - engines: {node: '>=10'} + /inquirer@9.2.15: + resolution: {integrity: sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==} + engines: {node: '>=18'} dependencies: - from2: 2.3.0 - p-is-promise: 3.0.0 - dev: false + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true /invert-kv@1.0.0: resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} engines: {node: '>=0.10.0'} dev: false - /ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - dev: false - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5124,17 +5190,18 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 dev: true /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 /is-dotfile@1.0.3: resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} @@ -5202,10 +5269,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false - /is-number@2.1.0: resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} engines: {node: '>=0.10.0'} @@ -5227,11 +5290,6 @@ packages: engines: {node: '>=8'} dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -5256,11 +5314,6 @@ packages: 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} - dev: true - /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} @@ -5317,23 +5370,23 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - /istanbul-lib-instrument@6.0.1: - resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -5349,14 +5402,14 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -5366,14 +5419,23 @@ packages: resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} engines: {node: '>=6'} - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: false + + /jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true /jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} @@ -5391,10 +5453,10 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.1 + dedent: 1.5.3 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -5404,14 +5466,14 @@ packages: jest-util: 29.7.0 p-limit: 3.1.0 pretty-format: 29.7.0 - pure-rand: 6.0.4 + pure-rand: 6.1.0 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - babel-plugin-macros - supports-color - /jest-cli@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-cli@29.7.0(@types/node@22.7.5): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5421,14 +5483,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@22.7.5) exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.7.5) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5438,7 +5500,7 @@ packages: - supports-color - ts-node - /jest-config@29.7.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@22.7.5): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5450,11 +5512,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 - babel-jest: 29.7.0(@babel/core@7.23.9) + '@types/node': 22.7.5 + babel-jest: 29.7.0(@babel/core@7.26.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -5468,12 +5530,11 @@ packages: jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 parse-json: 5.2.0 pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5510,7 +5571,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5524,14 +5585,14 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.3.1 + '@types/node': 22.7.5 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 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -5556,12 +5617,12 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -5571,7 +5632,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-util: 29.7.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5621,7 +5682,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5651,9 +5712,9 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 - cjs-module-lexer: 1.2.3 + cjs-module-lexer: 1.4.1 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -5673,15 +5734,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.2 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@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.23.9) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -5692,7 +5753,7 @@ packages: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -5701,7 +5762,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5724,7 +5785,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.3.1 + '@types/node': 22.7.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5735,7 +5796,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -5744,12 +5805,12 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.1 + '@types/node': 22.7.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@20.3.1)(ts-node@10.9.1): + /jest@29.5.0(@types/node@22.7.5): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5759,18 +5820,40 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.7.5) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: false + + /jest@29.7.0(@types/node@22.7.5): + 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 + dependencies: + '@jest/core': 29.7.0 '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.3.1)(ts-node@10.9.1) + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.7.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + dev: true - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true dev: true @@ -5795,13 +5878,9 @@ packages: dependencies: argparse: 2.0.1 - /jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - dev: false - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true /json-buffer@3.0.1: @@ -5850,6 +5929,14 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: false + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} dev: true /jsonfile@6.1.0: @@ -5865,8 +5952,8 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsonrepair@3.7.0: - resolution: {integrity: sha512-TwE50n4P4gdVfMQF2q+X+IGy4ntFfcuHHE8zjRyBcdtrRK0ORZsjOZD6zmdylk4p277nQBAlHgsEPWtMIQk4LQ==} + /jsonrepair@3.8.1: + resolution: {integrity: sha512-5wnjaO53EJOhfLFY92nvBz2B9gqF9ql/D4HKUb1WOSBaqtVcAifFfmurblnhCJn/ySqKFA8U3n7nhGMAu/hEjQ==} hasBin: true dev: false @@ -5883,7 +5970,7 @@ packages: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.6.0 + semver: 7.6.3 dev: false /jwa@1.4.1: @@ -5966,15 +6053,23 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js@1.10.58: - resolution: {integrity: sha512-53A0IpJFL9LdHbpeatwizf8KSwPICrqn9H0g3Y7WQ+Jgeu9cQ4Ew3WrRtrLBu/CX2lXd5+rgT01/tGlkbkzOjw==} + /libphonenumber-js@1.11.15: + resolution: {integrity: sha512-M7+rtYi9l5RvMmHyjyoF3BHHUpXTYdJ0PezZGHNs0GyW1lO+K7jxlXpbdIb7a56h0nqLYdjIw+E+z0ciGaJP7g==} /light-my-request@5.12.0: resolution: {integrity: sha512-P526OX6E7aeCIfw/9UyJNsAISfcFETghysaWHQAlQYayynShT08MOj4c6fBCvTWBrHXSvqBAKDp3amUPSCQI4w==} dependencies: cookie: 0.6.0 process-warning: 3.0.0 - set-cookie-parser: 2.6.0 + set-cookie-parser: 2.7.1 + dev: false + + /light-my-request@5.14.0: + resolution: {integrity: sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==} + dependencies: + cookie: 0.7.2 + process-warning: 3.0.0 + set-cookie-parser: 2.7.1 dev: false /lightcookie@1.0.25: @@ -6061,7 +6156,6 @@ packages: /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: true /lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -6181,9 +6275,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6195,15 +6288,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: false - - /macos-release@2.5.1: - resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} - engines: {node: '>=6'} dev: true /magic-string@0.25.7: @@ -6212,11 +6296,11 @@ packages: sourcemap-codec: 1.4.8 dev: false - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true /make-dir@3.1.0: @@ -6229,36 +6313,11 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.0 + semver: 7.6.3 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - 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 - dev: false - /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -6278,6 +6337,12 @@ packages: resolution: {integrity: sha512-RG9wAgznUY0foT30MMfnXh4jS0ObmOuxoGKe/ppYvM55RfquNdIvEEf6e+euczNVVzJIVbkgxg7GJBpYDhQ/Zg==} dev: false + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: false + /matchit@1.1.0: resolution: {integrity: sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==} engines: {node: '>=6'} @@ -6289,11 +6354,16 @@ packages: resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} dev: false + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + /memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.5 + fs-monkey: 1.0.6 dev: true /meow@12.1.1: @@ -6360,17 +6430,22 @@ packages: regex-cache: 0.4.4 dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + /mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + dev: false + /mime-lite@1.0.3: resolution: {integrity: sha512-V85l97zJSTG8FEvmdTlmNYb0UMrVBwvRjw7bWTf/aT6KjFwtz3iTz8D2tuFIp7lwiaO2C5ecnrEmSkkMRCrqVw==} dev: true @@ -6397,11 +6472,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -6415,23 +6485,15 @@ packages: /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: false /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -6449,62 +6511,18 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: false - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: true - /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} /minizlib@2.1.2: @@ -6514,6 +6532,14 @@ packages: minipass: 3.3.6 yallist: 4.0.0 + /minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -6526,6 +6552,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + /mnemonist@0.39.6: resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==} dependencies: @@ -6554,22 +6586,27 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true dev: false /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nan@2.19.0: - resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - dev: false + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} @@ -6577,24 +6614,27 @@ packages: hasBin: true dev: false - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /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==} + dev: true + + /nest-fastify-multer@2.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2): + resolution: {integrity: sha512-moKbpbePeEB/LH5ppXgQM/znBAfpCgzwdzRfGmmqkIRb8CZXj90IhqmyjU8diH4Vg3ovgubihLuaT89wzpjANw==} + dependencies: + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + fastify-multer: 2.0.3 + rxjs: 7.8.1 + transitivePeerDependencies: + - class-transformer + - class-validator + - reflect-metadata dev: false - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /nestjs-cls@4.2.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-sdvdhBmM9eb9d1URtcK7642S3ufD9ZWaKRt4Ouf1gIGmd73YniiKCxxOFwChRqDU+sr7hwxT560JaA27R/7RJQ==} + /nestjs-cls@4.4.1(@nestjs/common@10.4.4)(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1): + resolution: {integrity: sha512-4yhldwm/cJ02lQ8ZAdM8KQ7gMfjAc1z3fo5QAQgXNyN4N6X5So9BCwv+BTLRugDCkELUo3qtzQHnKhGYL/ftPg==} engines: {node: '>=16'} peerDependencies: '@nestjs/common': '> 7.0.0 < 11' @@ -6602,37 +6642,37 @@ packages: reflect-metadata: '*' rxjs: '>= 7' dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - reflect-metadata: 0.1.13 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@nestjs/core': 10.4.4(@nestjs/common@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) + reflect-metadata: 0.2.2 rxjs: 7.8.1 dev: false - /nestjs-oauth2@0.0.7(@nestjs/common@10.0.0)(rxjs@7.8.1): + /nestjs-oauth2@0.0.7(@nestjs/common@10.4.4)(rxjs@7.8.1): resolution: {integrity: sha512-P4HfJziGsMl4+aTclr9vkqfbI84odja1kOjKZw095A+b4ksVczOC4J/AH4BydsIAPVsj/5RJj4aGFoWV90Bu1w==} peerDependencies: '@nestjs/common': ^9.0.0 rxjs: ^7.x dependencies: - '@golevelup/nestjs-modules': 0.6.1(@nestjs/common@10.0.0)(rxjs@7.8.1) - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@golevelup/nestjs-modules': 0.6.1(@nestjs/common@10.4.4)(rxjs@7.8.1) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) oauth: 0.10.0 rxjs: 7.8.1 dev: false - /nestjs-pino@4.0.0(@nestjs/common@10.0.0)(pino-http@9.0.0): - resolution: {integrity: sha512-XhCg/R+l3w0BFP6MHyR6lU/BHVEV0tV9z24G0vuA9FD3sv+TQNvnO9uVsF1l/oVspgGfQ9Qulmb2UbsfYlI0+g==} + /nestjs-pino@4.1.0(@nestjs/common@10.4.4)(pino-http@10.3.0): + resolution: {integrity: sha512-I6zcddauD2TNMRbsraEIxNUvHcz0El5QRUYH5eY1+pBzj7R17U+Yoyypoc+akVdSLWJ1r0kDYAZPy2mlhXv6vw==} engines: {node: '>= 14'} requiresBuild: true peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - pino-http: 9.0.0 + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + pino-http: 10.3.0 dev: false - /nestjs-prisma@0.23.0(@nestjs/common@10.0.0)(@prisma/client@5.10.2)(prisma@5.10.2): + /nestjs-prisma@0.23.0(@nestjs/common@10.4.4)(@prisma/client@5.20.0)(prisma@5.20.0): resolution: {integrity: sha512-0pIMDasayP+vMFSztcs85zu4WSPTKM85F8vIrqn7GsUBboEcKhI8eCeVghhNyKDGzEBaNAYNJlo2MAWdNuN7Tw==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -6641,10 +6681,10 @@ packages: dependencies: '@angular-devkit/core': 13.3.11 '@angular-devkit/schematics': 13.3.11 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@prisma/client': 5.10.2(prisma@5.10.2) + '@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) + '@prisma/client': 5.20.0(prisma@5.20.0) '@schematics/angular': 13.3.11 - prisma: 5.10.2 + prisma: 5.20.0 transitivePeerDependencies: - chokidar dev: false @@ -6674,32 +6714,11 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - 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 - dev: false - /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -6709,14 +6728,6 @@ packages: abbrev: 1.1.1 dev: false - /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 - dependencies: - abbrev: 1.1.1 - dev: false - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -6730,8 +6741,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.0 + is-core-module: 2.15.1 + semver: 7.6.3 validate-npm-package-license: 3.0.4 dev: true @@ -6752,15 +6763,9 @@ packages: dependencies: path-key: 3.1.1 - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. dependencies: are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 @@ -6768,16 +6773,6 @@ packages: set-blocking: 2.0.0 dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: false - /number-is-nan@1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} engines: {node: '>=0.10.0'} @@ -6797,9 +6792,9 @@ packages: engines: {node: '>=0.10.0'} dev: false - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true + /object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} /object.omit@2.0.1: resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==} @@ -6818,6 +6813,13 @@ packages: engines: {node: '>=14.0.0'} dev: false + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -6829,29 +6831,22 @@ packages: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - /openapi-fuzzer-core@1.0.6: resolution: {integrity: sha512-FJNJIfgUFuv4NmVGq9MYdoKra2GrkDy2uhIjE2YGlw30UA1glf4SXLMhI4UwdcJ8jisKdIxi7lXrfej8GvNW5w==} dependencies: klona: 2.0.6 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} 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 + word-wrap: 1.2.5 dev: true /ora@5.4.1: @@ -6887,24 +6882,11 @@ packages: lcid: 1.0.0 dev: false - /os-name@4.0.1: - resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} - engines: {node: '>=10'} - dependencies: - macos-release: 2.5.1 - windows-release: 4.0.0 - dev: true - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - dev: false - /p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -6928,7 +6910,7 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 dev: true /p-locate@2.0.0: @@ -6965,13 +6947,6 @@ packages: p-limit: 4.0.0 dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} @@ -6981,12 +6956,15 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /pactum-matchers@1.1.6: - resolution: {integrity: sha512-55io32NeOKbLpHKKPzYDOr+N2dseTzMbj1Gj1y+zvOkKK6NDf5BT5pxglfqLN/ra3ig5zvbrKFUqZIWjAWboog==} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + /pactum-matchers@1.1.7: + resolution: {integrity: sha512-RqwewcUje6vhcYQGbPfdSXkcp/Vtwn4WmmTWLSmqp0CGxBroCEqRg3JMIjkjQTZCd2VmG+tTcQw+n4P/iuqv3Q==} dev: true - /pactum@3.6.3: - resolution: {integrity: sha512-iAizqD9sgJsVVKm0sBzDm2ZjqBMJBr/ZTbKOYawfT014EsoSIzuHIsolpslRKsHlru6MFwlg530XrEpaBmElrA==} + /pactum@3.7.1(debug@2.6.9): + resolution: {integrity: sha512-r+R1dMy2MfRCQpAHohMyICusiMz14t0E+bhnLDScl2x4lXJKQAvQUGV/WWKUUxN2DS0Jdm0PUj6KjblfcSk1GA==} engines: {node: '>=10'} dependencies: '@exodus/schemasafe': 1.3.0 @@ -6996,10 +6974,12 @@ packages: klona: 2.0.6 lightcookie: 1.0.25 openapi-fuzzer-core: 1.0.6 - pactum-matchers: 1.1.6 + pactum-matchers: 1.1.7 parse-graphql: 1.0.0 - phin: 3.7.0 + phin: 3.7.1(debug@2.6.9) polka: 0.5.2 + transitivePeerDependencies: + - debug dev: true /parent-module@1.0.1: @@ -7042,7 +7022,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7113,28 +7093,32 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 /path-to-regexp@3.2.0: resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + dev: false - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + /path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + /path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} dev: false + /path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + dev: true + /path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} @@ -7168,21 +7152,26 @@ packages: through2: 2.0.5 dev: false - /phin@3.7.0: - resolution: {integrity: sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==} + /phin@3.7.1(debug@2.6.9): + resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} engines: {node: '>= 8'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: - centra: 2.6.0 - dev: true + centra: 2.7.0(debug@2.6.9) + transitivePeerDependencies: + - debug - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /picomatch@4.0.1: + resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} + engines: {node: '>=12'} + dev: true + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -7204,39 +7193,39 @@ packages: engines: {node: '>=0.10.0'} dev: false - /pino-abstract-transport@1.1.0: - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + /pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} dependencies: readable-stream: 4.5.2 split2: 4.2.0 dev: false - /pino-http@9.0.0: - resolution: {integrity: sha512-Q9QDNEz0vQmbJtMFjOVr2c9yL92vHudjmr3s3m6J1hbw3DBGFZJm3TIj9TWyynZ4GEsEA9SOtni4heRUr6lNOg==} + /pino-http@10.3.0: + resolution: {integrity: sha512-kaHQqt1i5S9LXWmyuw6aPPqYW/TjoDPizPs4PnDW4hSpajz2Uo/oisNliLf7We1xzpiLacdntmw8yaZiEkppQQ==} dependencies: get-caller-file: 2.0.5 - pino: 8.18.0 - pino-std-serializers: 6.2.2 - process-warning: 3.0.0 + pino: 9.4.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.0 dev: false - /pino-pretty@10.3.1: - resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + /pino-pretty@11.2.2: + resolution: {integrity: sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==} hasBin: true dependencies: colorette: 2.0.20 dateformat: 4.6.3 - fast-copy: 3.0.1 + fast-copy: 3.0.2 fast-safe-stringify: 2.1.1 help-me: 5.0.0 joycon: 3.1.1 minimist: 1.2.8 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.1.0 - pump: 3.0.0 + pino-abstract-transport: 1.2.0 + pump: 3.0.2 readable-stream: 4.5.2 secure-json-parse: 2.7.0 - sonic-boom: 3.8.0 + sonic-boom: 4.2.0 strip-json-comments: 3.1.1 dev: false @@ -7244,21 +7233,42 @@ packages: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} dev: false - /pino@8.18.0: - resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==} + /pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + dev: false + + /pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.3.0 + fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.1.0 + pino-abstract-transport: 1.2.0 pino-std-serializers: 6.2.2 process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 - safe-stable-stringify: 2.4.3 - sonic-boom: 3.8.0 - thread-stream: 2.4.1 + safe-stable-stringify: 2.5.0 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + dev: false + + /pino@9.4.0: + resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 dev: false /pirates@4.0.6: @@ -7321,8 +7331,8 @@ packages: hasBin: true dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true dev: true @@ -7333,34 +7343,36 @@ packages: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 - /prisma-nested-middleware@4.0.0(@prisma/client@5.10.2): + /prisma-nested-middleware@4.0.0(@prisma/client@5.20.0): resolution: {integrity: sha512-WSx0nl7KNXEzGaNC87fuDBOdAjj3V6um/JoQUo24PaMzMy8tvOYfb2Mw25OZhnrMXNTBhqgk4rJTUW3CVcDsHQ==} peerDependencies: '@prisma/client': '*' dependencies: '@open-draft/deferred-promise': 2.2.0 - '@prisma/client': 5.10.2(prisma@5.10.2) + '@prisma/client': 5.20.0(prisma@5.20.0) lodash: 4.17.21 dev: false - /prisma-soft-delete-middleware@1.3.1(@prisma/client@5.10.2): + /prisma-soft-delete-middleware@1.3.1(@prisma/client@5.20.0): resolution: {integrity: sha512-oQ2Ba8wb23ho6PqMXkOSTQTXNKouLmZuILYDHrnKk1Ui3cGIXuj9zNWyJkoaTcWHznsiAaoP1Oy8ytDhwQNQqA==} peerDependencies: '@prisma/client': '*' dependencies: - '@prisma/client': 5.10.2(prisma@5.10.2) - prisma-nested-middleware: 4.0.0(@prisma/client@5.10.2) + '@prisma/client': 5.20.0(prisma@5.20.0) + prisma-nested-middleware: 4.0.0(@prisma/client@5.20.0) dev: false - /prisma@5.10.2: - resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} + /prisma@5.20.0: + resolution: {integrity: sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==} engines: {node: '>=16.13'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 5.10.2 + '@prisma/engines': 5.20.0 + optionalDependencies: + fsevents: 2.3.3 /process-nextick-args@1.0.7: resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} @@ -7373,6 +7385,10 @@ packages: resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} dev: false + /process-warning@4.0.0: + resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} + dev: false + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -7383,23 +7399,6 @@ packages: engines: {node: '>=16'} dev: false - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false - - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -7419,38 +7418,42 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + /pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: false /pumpify@2.0.1: resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} dependencies: - duplexify: 4.1.2 + duplexify: 4.1.3 inherits: 2.0.4 - pump: 3.0.0 + pump: 3.0.2 dev: false /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - /pure-rand@6.0.4: - resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} /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. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) dev: true - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + /qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.5 - dev: true + side-channel: 1.0.6 /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -7480,8 +7483,8 @@ packages: safe-buffer: 5.2.1 dev: true - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} /read-pkg-up@1.0.1: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} @@ -7598,13 +7601,6 @@ packages: engines: {node: '>= 12.13.0'} dev: false - /rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.8 - dev: true - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -7613,8 +7609,8 @@ packages: strip-indent: 3.0.0 dev: true - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + /reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} /regex-cache@0.4.4: resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} @@ -7689,7 +7685,7 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -7700,36 +7696,31 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 - /ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - dev: false - - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false + /ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} /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==} + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} dev: false /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 + dev: false - /rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true dependencies: - glob: 9.3.5 + glob: 10.4.5 dev: true /run-async@2.4.1: @@ -7737,6 +7728,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -7753,7 +7749,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -7761,19 +7757,19 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + /safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} dependencies: - ret: 0.2.2 - dev: false + ret: 0.4.3 - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + /safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -7796,12 +7792,10 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -7813,21 +7807,20 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + /set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} dev: false - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.2 + 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.1 - dev: true + has-property-descriptors: 1.0.2 /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -7843,25 +7836,14 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - dev: true - - /side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: true + object-inspect: 1.13.3 /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -7877,32 +7859,14 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false - - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - dev: false - - /socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 + atomic-sleep: 1.0.0 dev: false - /sonic-boom@3.8.0: - resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} + /sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} dependencies: atomic-sleep: 1.0.0 dev: false @@ -7959,19 +7923,19 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.20 - /spdx-exceptions@2.4.0: - resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.4.0 - spdx-license-ids: 3.0.17 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 - /spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + /spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} @@ -7992,17 +7956,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - dev: false - - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - dev: false - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -8025,7 +7978,7 @@ packages: figures: 3.2.0 find-up: 5.0.0 git-semver-tags: 4.1.1 - semver: 7.6.0 + semver: 7.6.3 stringify-package: 1.0.1 yargs: 16.2.0 dev: true @@ -8039,6 +7992,11 @@ packages: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} dev: false + /stream-wormhole@1.1.0: + resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==} + engines: {node: '>=4.0.0'} + dev: false + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -8070,7 +8028,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: false /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -8108,8 +8065,7 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: - ansi-regex: 6.0.1 - dev: false + ansi-regex: 6.1.0 /strip-bom-stream@1.0.0: resolution: {integrity: sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ==} @@ -8139,11 +8095,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -8155,20 +8106,29 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /stripe@17.5.0: + resolution: {integrity: sha512-kcyeAkDFjGsVl17FqnG7q/+xIjt0ZjOo9Dm+q8deAvs2Xe4iAHrhxyoP4etUVFc+/LZJANjIPVR+ZOnt9hr/Ug==} + engines: {node: '>=12.*'} + dependencies: + '@types/node': 22.7.5 + qs: 6.13.1 + dev: false + /superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.4 + debug: 4.3.7 fast-safe-stringify: 2.1.1 - form-data: 4.0.0 + form-data: 4.0.1 formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 - semver: 7.6.0 + qs: 6.13.1 + semver: 7.6.3 transitivePeerDependencies: - supports-color dev: true @@ -8193,6 +8153,7 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -8210,8 +8171,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swagger-ui-dist@5.11.2: - resolution: {integrity: sha512-jQG0cRgJNMZ7aCoiFofnoojeSaa/+KgWaDlfgs8QN+BXoGMpxeMVY5OEnjq4OlNvF3yjftO8c9GRAgcHlO+u7A==} + /swagger-ui-dist@5.17.14: + resolution: {integrity: sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==} dev: false /symbol-observable@4.0.0: @@ -8223,12 +8184,12 @@ packages: resolution: {integrity: sha512-IUW+ek7apEaW5bFhS6WpYoNtVpNTlNoqB/PH7YiMWQTxSPeXCzG4PILVakwXivJt3ZXWeO1fIJnUd/L9A/VeGA==} dev: false - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + /synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.8.1 dev: true /tapable@2.2.1: @@ -8236,8 +8197,8 @@ packages: engines: {node: '>=6'} dev: true - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -8247,7 +8208,19 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 - /terser-webpack-plugin@5.3.10(webpack@5.87.0): + /tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + dev: true + + /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -8263,15 +8236,15 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.27.0 - webpack: 5.87.0 + terser: 5.36.0 + webpack: 5.94.0 dev: true - /terser-webpack-plugin@5.3.10(webpack@5.90.1): + /terser-webpack-plugin@5.3.10(webpack@5.96.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -8287,21 +8260,21 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.27.0 - webpack: 5.90.1 + terser: 5.36.0 + webpack: 5.96.1 dev: true - /terser@5.27.0: - resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + /terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -8314,6 +8287,10 @@ packages: glob: 7.2.3 minimatch: 3.1.2 + /text-decoding@1.0.0: + resolution: {integrity: sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==} + dev: false + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -8328,8 +8305,14 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thread-stream@2.4.1: - resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} + /thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} + dependencies: + real-require: 0.2.0 + dev: false + + /thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} dependencies: real-require: 0.2.0 dev: false @@ -8378,6 +8361,10 @@ packages: os-homedir: 1.0.2 dev: false + /tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + dev: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -8395,10 +8382,6 @@ packages: extend-shallow: 2.0.1 dev: false - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -8435,16 +8418,16 @@ packages: matchit: 1.1.0 dev: true - /ts-api-utils@1.2.1(typescript@5.1.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + /ts-api-utils@1.4.0(typescript@5.6.3): + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.3 + typescript: 5.6.3 dev: true - /ts-jest@29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.0.4): + /ts-jest@29.1.0(@babel/core@7.26.0)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8465,25 +8448,26 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.0 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.5.0(@types/node@22.7.5) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 + semver: 7.6.3 typescript: 5.0.4 yargs-parser: 21.1.1 dev: false - /ts-jest@29.1.0(@babel/core@7.23.9)(jest@29.5.0)(typescript@5.1.3): - resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /ts-jest@29.2.5(@babel/core@7.26.0)(jest@29.7.0)(typescript@5.6.3): + 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: '*' @@ -8492,6 +8476,8 @@ packages: peerDependenciesMeta: '@babel/core': optional: true + '@jest/transform': + optional: true '@jest/types': optional: true babel-jest: @@ -8499,74 +8485,46 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.26.0 bs-logger: 0.2.6 + ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.1)(ts-node@10.9.1) + jest: 29.7.0(@types/node@22.7.5) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 - typescript: 5.1.3 + semver: 7.6.3 + typescript: 5.6.3 yargs-parser: 21.1.1 dev: true - /ts-loader@9.4.3(typescript@5.1.3)(webpack@5.90.1): - resolution: {integrity: sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==} + /ts-loader@9.5.1(typescript@5.6.3)(webpack@5.96.1): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' webpack: ^5.0.0 dependencies: chalk: 4.1.2 - enhanced-resolve: 5.15.0 - micromatch: 4.0.5 - semver: 7.6.0 - typescript: 5.1.3 - webpack: 5.90.1 + enhanced-resolve: 5.17.1 + micromatch: 4.0.8 + semver: 7.6.3 + source-map: 0.7.4 + typescript: 5.6.3 + webpack: 5.96.1 dev: true - /ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - 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 - 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.3.1 - 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.1.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true - /tsconfig-paths-webpack-plugin@4.0.1: - resolution: {integrity: sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==} + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} engines: {node: '>=10.13.0'} dependencies: chalk: 4.1.2 - enhanced-resolve: 5.15.0 + enhanced-resolve: 5.17.1 tsconfig-paths: 4.2.0 dev: true @@ -8587,11 +8545,15 @@ packages: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -8612,7 +8574,7 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true + dev: false /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -8628,9 +8590,16 @@ packages: engines: {node: '>=8'} dev: true + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false + /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true /typedarray@0.0.7: resolution: {integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==} @@ -8642,13 +8611,20 @@ packages: hasBin: true dev: false - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true + dev: true - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + /uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -8661,25 +8637,14 @@ packages: dependencies: '@lukeed/csprng': 1.1.0 + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} dev: true - /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} - dependencies: - unique-slug: 3.0.0 - dev: false - - /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} - dependencies: - imurmurhash: 0.1.4 - dev: false - /unique-stream@2.3.1: resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} dependencies: @@ -8692,15 +8657,15 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.3): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.1.1(browserslist@4.24.2): + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.3 - escalade: 3.1.2 - picocolors: 1.0.0 + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -8720,36 +8685,11 @@ packages: engines: {node: '>= 0.4.0'} dev: false - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: false - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - /v8-sandbox@3.2.10(debug@2.6.9): - resolution: {integrity: sha512-BIIohkY8ULJ63o084YCPMVItEurrH8HIiPufbTtI6AD9HXNnC6QmJTvN97CpvakRkSk0isK4a4diSmwVG2pyFQ==} - requiresBuild: true - dependencies: - async: 3.2.5 - axios: 1.6.7(debug@2.6.9) - bindings: 1.5.0 - lodash: 4.17.21 - nan: 2.19.0 - node-gyp: 9.4.1 - signal-exit: 4.1.0 - transitivePeerDependencies: - - bluebird - - debug - - supports-color - dev: false - - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -8764,8 +8704,8 @@ packages: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - /validator@13.11.0: - resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + /validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} /vinyl-fs@2.4.3: @@ -8807,8 +8747,8 @@ packages: dependencies: makeerror: 1.0.12 - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -8833,8 +8773,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.87.0: - resolution: {integrity: sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==} + /webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -8843,17 +8783,16 @@ packages: webpack-cli: optional: true 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.22.3 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) + browserslist: 4.24.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -8864,8 +8803,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.87.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.94.0) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -8873,8 +8812,8 @@ packages: - uglify-js dev: true - /webpack@5.90.1: - resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + /webpack@5.96.1: + resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -8884,16 +8823,15 @@ packages: optional: true 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.22.3 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -8904,8 +8842,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.1) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.96.1) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -8939,19 +8877,19 @@ packages: string-width: 4.2.3 dev: false + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: false + /window-size@0.2.0: resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==} engines: {node: '>= 0.10.0'} hasBin: true dev: false - /windows-release@4.0.0: - resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} - engines: {node: '>=10'} - dependencies: - execa: 4.1.0 - dev: true - /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -8969,6 +8907,15 @@ packages: strip-ansi: 3.0.1 dev: false + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -8984,7 +8931,6 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -9014,11 +8960,17 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + /yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} dev: true + /yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + dev: false + /yargs-parser@2.4.1: resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==} dependencies: @@ -9040,7 +8992,7 @@ packages: engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -9053,7 +9005,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -9077,15 +9029,11 @@ packages: yargs-parser: 2.4.1 dev: false - /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.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} dev: true diff --git a/prisma/create-db-user.sql b/prisma/create-db-user.sql new file mode 100644 index 0000000..0c8decb --- /dev/null +++ b/prisma/create-db-user.sql @@ -0,0 +1,11 @@ +-- to create a non-super user, to support multi-tenancy by rls +-- consist with db user/pass in .env.dev +CREATE USER callgent WITH PASSWORD 'cAllgent123'; +ALTER ROLE callgent CREATEDB; +CREATE DATABASE callgent; +GRANT ALL PRIVILEGES ON DATABASE callgent TO callgent; +GRANT USAGE, CREATE ON SCHEMA public TO callgent; +GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO callgent; +GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO callgent; +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO callgent; +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO callgent; diff --git a/prisma/migrations/0_row_level_security/migration.sql b/prisma/migrations/0_row_level_security/migration.sql new file mode 100644 index 0000000..42416b6 --- /dev/null +++ b/prisma/migrations/0_row_level_security/migration.sql @@ -0,0 +1,256 @@ +-- CreateEnum +CREATE TYPE "EndpointType" AS ENUM ('CLIENT', 'SERVER', 'EVENT'); + +-- CreateEnum +CREATE TYPE "ServiceType" AS ENUM ('SERVICE', 'CALLGENT'); + +-- CreateEnum +CREATE TYPE "EventCallbackType" AS ENUM ('URL', 'EVENT'); + + + + +-- CreateTable +CREATE TABLE "User" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "name" VARCHAR(36) NOT NULL, + "email" VARCHAR(255), + "avatar" VARCHAR(1023), + "locale" VARCHAR(10) DEFAULT 'en_US', + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "User_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "UserIdentity" ( + "pk" SERIAL NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "provider" VARCHAR(36) NOT NULL, + "uid" VARCHAR(255) NOT NULL, + "credentials" VARCHAR(2048) NOT NULL, + "name" VARCHAR(255), + "email" VARCHAR(255), + "email_verified" BOOLEAN NOT NULL DEFAULT false, + "avatar" VARCHAR(1023), + "info" JSONB, + "userPk" INTEGER NOT NULL, + "userId" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "UserIdentity_pkey" PRIMARY KEY ("pk") +); + + +-- CreateTable +CREATE TABLE "Callgent" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "name" VARCHAR(255) NOT NULL, + "summary" VARCHAR(4095), + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Callgent_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "CallgentFunction" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "name" VARCHAR(255) NOT NULL, + "funName" VARCHAR(255) NOT NULL, + "params" VARCHAR(31)[], + "documents" VARCHAR(4095) NOT NULL, + "fullCode" VARCHAR(1023) NOT NULL, + "content" JSON NOT NULL, + "callgentId" VARCHAR(36) NOT NULL, + "endpointId" VARCHAR(36), + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "CallgentFunction_pkey" PRIMARY KEY ("pk") +); + + +-- CreateTable +CREATE TABLE "Endpoint" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "type" "EndpointType" NOT NULL, + "adaptorKey" VARCHAR(127) NOT NULL, + "priority" INTEGER NOT NULL DEFAULT 0, + "host" JSON NOT NULL, + "initParams" JSON, + "content" JSON, + "callgentId" VARCHAR(36) NOT NULL, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Endpoint_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "EndpointAuth" ( + "pk" SERIAL NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "endpointId" VARCHAR(36) NOT NULL, + "userKey" VARCHAR(63), + "credentials" JSON NOT NULL, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "EndpointAuth_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "EventStore" ( + "pk" BIGSERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "srcId" VARCHAR(36) NOT NULL, + "targetId" VARCHAR(36), + "eventType" VARCHAR(36) NOT NULL, + "dataType" VARCHAR(36) NOT NULL, + "callback" VARCHAR(1023), + "callbackType" "EventCallbackType" NOT NULL DEFAULT 'EVENT', + "data" JSON, + "context" JSON, + "statusCode" INTEGER NOT NULL DEFAULT -1, + "message" VARCHAR(255), + "stopPropagation" BOOLEAN NOT NULL, + "defaultPrevented" BOOLEAN NOT NULL, + "listenerId" VARCHAR(36), + "funName" VARCHAR(255), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "EventStore_pkey" PRIMARY KEY ("pk") +); + + +-- CreateTable +CREATE TABLE "EventListener" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "srcId" VARCHAR(36) NOT NULL, + "eventType" VARCHAR(36) NOT NULL, + "dataType" VARCHAR(36) NOT NULL, + "priority" INTEGER DEFAULT 0, + "serviceType" "ServiceType" NOT NULL, + "serviceName" VARCHAR(255) NOT NULL, + "funName" VARCHAR(255) NOT NULL, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "EventListener_pkey" PRIMARY KEY ("pk") +); + +CREATE TABLE "Task" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "statusCode" INTEGER NOT NULL DEFAULT -1, + "name" VARCHAR(64), + "brief" VARCHAR(255), + "content" JSONB, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Task_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "TaskAction" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "cepId" VARCHAR(36), + "funName" VARCHAR(255), + "cAdaptor" VARCHAR(36) NOT NULL, + "callback" JSON, + "progressive" VARCHAR(36), + "returns" BOOLEAN NOT NULL DEFAULT false, + "req" JSON NOT NULL, + "res" JSON, + "stage" INTEGER NOT NULL DEFAULT -1, + "statusCode" INTEGER NOT NULL DEFAULT 0, + "message" VARCHAR(255), + "taskId" VARCHAR(36) NOT NULL, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "TaskAction_pkey" PRIMARY KEY ("pk") +); + + + + + + +-- Enable Row Level Security +ALTER TABLE "User" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "UserIdentity" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "Callgent" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "CallgentFunction" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "Endpoint" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "EndpointAuth" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "EventListener" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "Task" ENABLE ROW LEVEL SECURITY; +ALTER TABLE "TaskAction" ENABLE ROW LEVEL SECURITY; + +-- Force Row Level Security for table owners +ALTER TABLE "User" FORCE ROW LEVEL SECURITY; +ALTER TABLE "UserIdentity" FORCE ROW LEVEL SECURITY; +ALTER TABLE "Callgent" FORCE ROW LEVEL SECURITY; +ALTER TABLE "CallgentFunction" FORCE ROW LEVEL SECURITY; +ALTER TABLE "Endpoint" FORCE ROW LEVEL SECURITY; +ALTER TABLE "EndpointAuth" FORCE ROW LEVEL SECURITY; +ALTER TABLE "EventListener" FORCE ROW LEVEL SECURITY; +ALTER TABLE "Task" FORCE ROW LEVEL SECURITY; +ALTER TABLE "TaskAction" FORCE ROW LEVEL SECURITY; + +-- Create row security policies +CREATE POLICY tenant_isolation_policy ON "User" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "UserIdentity" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "Callgent" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "CallgentFunction" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "Endpoint" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "EndpointAuth" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "EventListener" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "Task" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +CREATE POLICY tenant_isolation_policy ON "TaskAction" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); + +-- Create policies to bypass RLS (optional) +CREATE POLICY bypass_rls_policy ON "User" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "UserIdentity" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "Callgent" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "CallgentFunction" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "Endpoint" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "EndpointAuth" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "EventListener" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "Task" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); +CREATE POLICY bypass_rls_policy ON "TaskAction" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); diff --git a/prisma/migrations/20240822033907_init/migration.sql b/prisma/migrations/20240822033907_init/migration.sql new file mode 100644 index 0000000..733d7bf --- /dev/null +++ b/prisma/migrations/20240822033907_init/migration.sql @@ -0,0 +1,214 @@ +/* + Warnings: + + - You are about to alter the column `host` on the `Endpoint` table. The data in that column could be lost. The data in that column will be cast from `Json` to `VarChar(2047)`. + - A unique constraint covering the columns `[id]` on the table `Callgent` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[tenantPk,name]` on the table `Callgent` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `CallgentFunction` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[callgentId,name]` on the table `CallgentFunction` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `Endpoint` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[endpointId,userKey]` on the table `EndpointAuth` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `EventListener` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `EventStore` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `Task` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `TaskAction` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[id]` on the table `User` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[provider,uid]` on the table `UserIdentity` will be added. If there are existing duplicate values, this will fail. + +*/ +-- CreateEnum +CREATE TYPE "EndpointAuthType" AS ENUM ('NONE', 'APP', 'USER'); + +-- AlterTable +ALTER TABLE "Endpoint" ADD COLUMN "name" VARCHAR(2047) NOT NULL DEFAULT '', +ALTER COLUMN "host" SET DATA TYPE VARCHAR(2047); + +-- CreateTable +CREATE TABLE "Tenant" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "emailHost" VARCHAR(36), + "name" VARCHAR(50), + "avatar" VARCHAR(1023), + "type" INTEGER NOT NULL DEFAULT 1, + "statusCode" INTEGER NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Tenant_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "PublicMailHost" ( + "pk" SERIAL NOT NULL, + "dotHost" VARCHAR(255) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "PublicMailHost_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "AuthToken" ( + "pk" SERIAL NOT NULL, + "token" VARCHAR(36) NOT NULL, + "type" VARCHAR(10) NOT NULL, + "payload" JSONB NOT NULL, + "revoked" BOOLEAN NOT NULL DEFAULT false, + "expiresAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "AuthToken_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "LlmTemplate" ( + "pk" SERIAL NOT NULL, + "name" VARCHAR(32) NOT NULL, + "prompt" VARCHAR(9191) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "LlmTemplate_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "LlmCache" ( + "pk" BIGSERIAL NOT NULL, + "name" VARCHAR(32) NOT NULL, + "prompt" VARCHAR(9191) NOT NULL, + "result" VARCHAR(8191) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "LlmCache_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "PersistedAsync" ( + "pk" BIGSERIAL NOT NULL, + "statusCode" INTEGER NOT NULL DEFAULT -1, + "service" VARCHAR(127) NOT NULL, + "method" VARCHAR(127) NOT NULL, + "parentPk" BIGINT, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "PersistedAsync_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_id_key" ON "Tenant"("id"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_emailHost_key" ON "Tenant"("emailHost"); + +-- CreateIndex +CREATE UNIQUE INDEX "PublicMailHost_dotHost_key" ON "PublicMailHost"("dotHost"); + +-- CreateIndex +CREATE UNIQUE INDEX "AuthToken_token_key" ON "AuthToken"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "LlmTemplate_name_key" ON "LlmTemplate"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "LlmCache_prompt_name_key" ON "LlmCache"("prompt", "name"); + +-- CreateIndex +CREATE INDEX "PersistedAsync_parentPk_idx" ON "PersistedAsync"("parentPk"); + +-- CreateIndex +CREATE UNIQUE INDEX "Callgent_id_key" ON "Callgent"("id"); + +-- CreateIndex +CREATE INDEX "Callgent_tenantPk_idx" ON "Callgent"("tenantPk"); + +-- CreateIndex +CREATE UNIQUE INDEX "Callgent_tenantPk_name_key" ON "Callgent"("tenantPk", "name"); + +-- CreateIndex +CREATE UNIQUE INDEX "CallgentFunction_id_key" ON "CallgentFunction"("id"); + +-- CreateIndex +CREATE INDEX "CallgentFunction_tenantPk_idx" ON "CallgentFunction"("tenantPk"); + +-- CreateIndex +CREATE INDEX "CallgentFunction_callgentId_idx" ON "CallgentFunction"("callgentId"); + +-- CreateIndex +CREATE INDEX "CallgentFunction_endpointId_idx" ON "CallgentFunction"("endpointId"); + +-- CreateIndex +CREATE UNIQUE INDEX "CallgentFunction_callgentId_name_key" ON "CallgentFunction"("callgentId", "name"); + +-- CreateIndex +CREATE UNIQUE INDEX "Endpoint_id_key" ON "Endpoint"("id"); + +-- CreateIndex +CREATE INDEX "Endpoint_tenantPk_idx" ON "Endpoint"("tenantPk"); + +-- CreateIndex +CREATE INDEX "Endpoint_callgentId_idx" ON "Endpoint"("callgentId"); + +-- CreateIndex +CREATE INDEX "EndpointAuth_tenantPk_idx" ON "EndpointAuth"("tenantPk"); + +-- CreateIndex +CREATE INDEX "EndpointAuth_endpointId_idx" ON "EndpointAuth"("endpointId"); + +-- CreateIndex +CREATE UNIQUE INDEX "EndpointAuth_endpointId_userKey_key" ON "EndpointAuth"("endpointId", "userKey"); + +-- CreateIndex +CREATE UNIQUE INDEX "EventListener_id_key" ON "EventListener"("id"); + +-- CreateIndex +CREATE INDEX "EventListener_srcId_idx" ON "EventListener"("srcId"); + +-- CreateIndex +CREATE INDEX "EventListener_tenantPk_idx" ON "EventListener"("tenantPk"); + +-- CreateIndex +CREATE UNIQUE INDEX "EventStore_id_key" ON "EventStore"("id"); + +-- CreateIndex +CREATE INDEX "EventStore_srcId_idx" ON "EventStore"("srcId"); + +-- CreateIndex +CREATE INDEX "EventStore_targetId_idx" ON "EventStore"("targetId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Task_id_key" ON "Task"("id"); + +-- CreateIndex +CREATE INDEX "Task_tenantPk_idx" ON "Task"("tenantPk"); + +-- CreateIndex +CREATE UNIQUE INDEX "TaskAction_id_key" ON "TaskAction"("id"); + +-- CreateIndex +CREATE INDEX "TaskAction_tenantPk_idx" ON "TaskAction"("tenantPk"); + +-- CreateIndex +CREATE INDEX "TaskAction_taskId_idx" ON "TaskAction"("taskId"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_id_key" ON "User"("id"); + +-- CreateIndex +CREATE INDEX "User_tenantPk_idx" ON "User"("tenantPk"); + +-- CreateIndex +CREATE INDEX "UserIdentity_userPk_idx" ON "UserIdentity"("userPk"); + +-- CreateIndex +CREATE INDEX "UserIdentity_userId_idx" ON "UserIdentity"("userId"); + +-- CreateIndex +CREATE INDEX "UserIdentity_tenantPk_idx" ON "UserIdentity"("tenantPk"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserIdentity_provider_uid_key" ON "UserIdentity"("provider", "uid"); diff --git a/prisma/migrations/20240828045122_event_listener_desc/migration.sql b/prisma/migrations/20240828045122_event_listener_desc/migration.sql new file mode 100644 index 0000000..03579f7 --- /dev/null +++ b/prisma/migrations/20240828045122_event_listener_desc/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "EventListener" ADD COLUMN "description" VARCHAR(2000) NOT NULL DEFAULT ''; diff --git a/prisma/migrations/20240829075201_callgent_function_refactor/migration.sql b/prisma/migrations/20240829075201_callgent_function_refactor/migration.sql new file mode 100644 index 0000000..80f053b --- /dev/null +++ b/prisma/migrations/20240829075201_callgent_function_refactor/migration.sql @@ -0,0 +1,27 @@ +/* + Warnings: + + - You are about to drop the column `content` on the `CallgentFunction` table. All the data in the column will be lost. + - You are about to drop the column `documents` on the `CallgentFunction` table. All the data in the column will be lost. + - You are about to drop the column `fullCode` on the `CallgentFunction` table. All the data in the column will be lost. + - You are about to drop the column `funName` on the `CallgentFunction` table. All the data in the column will be lost. + - You are about to drop the column `params` on the `CallgentFunction` table. All the data in the column will be lost. + - Added the required column `method` to the `CallgentFunction` table without a default value. This is not possible if the table is not empty. + - Added the required column `path` to the `CallgentFunction` table without a default value. This is not possible if the table is not empty. + - Added the required column `signature` to the `CallgentFunction` table without a default value. This is not possible if the table is not empty. + +*/ + +-- AlterTable +ALTER TABLE "CallgentFunction" DROP COLUMN "content", +DROP COLUMN "documents", +DROP COLUMN "fullCode", +DROP COLUMN "funName", +DROP COLUMN "params", +ADD COLUMN "method" VARCHAR(15) NOT NULL, +ADD COLUMN "path" VARCHAR(1000) NOT NULL, +ADD COLUMN "signature" JSON NOT NULL, +ADD COLUMN "summary" VARCHAR(511) NOT NULL DEFAULT '', +ADD COLUMN "description" VARCHAR(1023) NOT NULL DEFAULT '', +ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int), +ALTER COLUMN "name" SET DATA TYPE VARCHAR(1023); diff --git a/prisma/migrations/20240904040336_refactor_status_code/migration.sql b/prisma/migrations/20240904040336_refactor_status_code/migration.sql new file mode 100644 index 0000000..345bfb4 --- /dev/null +++ b/prisma/migrations/20240904040336_refactor_status_code/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "EventStore" ALTER COLUMN "statusCode" SET DEFAULT 1; + +-- AlterTable +ALTER TABLE "PersistedAsync" ALTER COLUMN "statusCode" SET DEFAULT 1; diff --git a/prisma/migrations/20240904065010_callgent_function_responses/migration.sql b/prisma/migrations/20240904065010_callgent_function_responses/migration.sql new file mode 100644 index 0000000..4d9194e --- /dev/null +++ b/prisma/migrations/20240904065010_callgent_function_responses/migration.sql @@ -0,0 +1,13 @@ +/* + Warnings: + + - You are about to drop the column `signature` on the `CallgentFunction` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "CallgentFunction" DROP COLUMN "signature", +ADD COLUMN "params" JSON, +ADD COLUMN "responses" JSON; + +-- AlterTable +ALTER TABLE "Task" ALTER COLUMN "statusCode" SET DEFAULT 1; diff --git a/prisma/migrations/20240905015133_callgent_function/migration.sql b/prisma/migrations/20240905015133_callgent_function/migration.sql new file mode 100644 index 0000000..69b054c --- /dev/null +++ b/prisma/migrations/20240905015133_callgent_function/migration.sql @@ -0,0 +1,33 @@ +/* + Warnings: + + - Added the required column `rawJson` to the `CallgentFunction` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "Callgent" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "CallgentFunction" ADD COLUMN "rawJson" JSON NOT NULL, +ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "Endpoint" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "EndpointAuth" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "EventListener" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "Task" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "TaskAction" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "User" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); + +-- AlterTable +ALTER TABLE "UserIdentity" ALTER COLUMN "tenantPk" SET DEFAULT (current_setting('tenancy.tenantPk')::int); diff --git a/prisma/migrations/20240907160349_llm_cache_max_length/migration.sql b/prisma/migrations/20240907160349_llm_cache_max_length/migration.sql new file mode 100644 index 0000000..d0b2272 --- /dev/null +++ b/prisma/migrations/20240907160349_llm_cache_max_length/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "LlmCache" ALTER COLUMN "prompt" SET DATA TYPE VARCHAR(8192), +ALTER COLUMN "result" SET DATA TYPE VARCHAR(8192); diff --git a/prisma/migrations/20240918072319_callgent_realm/migration.sql b/prisma/migrations/20240918072319_callgent_realm/migration.sql new file mode 100644 index 0000000..fff3339 --- /dev/null +++ b/prisma/migrations/20240918072319_callgent_realm/migration.sql @@ -0,0 +1,52 @@ +/* + Warnings: + + - You are about to drop the `EndpointAuth` table. If the table is not empty, all the data it contains will be lost. + +*/ + +-- AlterTable +ALTER TABLE "CallgentFunction" ADD COLUMN "securities" JSON[]; + +-- AlterTable +ALTER TABLE "Endpoint" ADD COLUMN "securities" JSON[]; + +-- DropTable +DROP TABLE "EndpointAuth"; + +-- DropEnum +DROP TYPE "EndpointAuthType"; + +-- CreateTable +CREATE TABLE "CallgentRealm" ( + "pk" SERIAL NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "callgentId" VARCHAR(36) NOT NULL, + "realmKey" VARCHAR(256) NOT NULL, + "authType" VARCHAR(16) NOT NULL, + "realm" VARCHAR(16) NOT NULL DEFAULT '', + "scheme" JSON NOT NULL, + "secret" JSON, + "perUser" BOOLEAN NOT NULL DEFAULT false, + "enabled" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "CallgentRealm_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE INDEX "CallgentRealm_callgentId_idx" ON "CallgentRealm"("callgentId"); +CREATE UNIQUE INDEX "CallgentRealm_callgentId_realmKey_key" ON "CallgentRealm"("callgentId", "realmKey"); +-- CreateIndex +CREATE INDEX "CallgentRealm_tenantPk_idx" ON "CallgentRealm"("tenantPk"); + +-- Enable Row Level Security +ALTER TABLE "CallgentRealm" ENABLE ROW LEVEL SECURITY; +-- Force Row Level Security for table owners +ALTER TABLE "CallgentRealm" FORCE ROW LEVEL SECURITY; +-- Create row security policies +CREATE POLICY tenant_isolation_policy ON "CallgentRealm" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +-- Create policies to bypass RLS (optional) +CREATE POLICY bypass_rls_policy ON "CallgentRealm" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); diff --git a/prisma/migrations/20240926035336_callgent_hub/migration.sql b/prisma/migrations/20240926035336_callgent_hub/migration.sql new file mode 100644 index 0000000..d18fe43 --- /dev/null +++ b/prisma/migrations/20240926035336_callgent_hub/migration.sql @@ -0,0 +1,45 @@ +-- AlterTable +ALTER TABLE "Callgent" ADD COLUMN "forkedPk" INTEGER, +ADD COLUMN "mainTagId" INTEGER; + +-- AlterTable +ALTER TABLE "CallgentRealm" ALTER COLUMN "realm" DROP NOT NULL; +ALTER TABLE "CallgentRealm" ALTER COLUMN "realm" TYPE varchar(16); + +-- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(30) NOT NULL, + "avatar" VARCHAR(1023), + "description" VARCHAR(1024) NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CallgentTag" ( + "pk" SERIAL NOT NULL, + "tagId" INTEGER NOT NULL, + "callgentId" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "CallgentTag_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name"); + +-- CreateIndex +CREATE INDEX "CallgentTag_tagId_idx" ON "CallgentTag"("tagId"); + +-- CreateIndex +CREATE INDEX "CallgentTag_callgentId_idx" ON "CallgentTag"("callgentId"); + +-- CreateIndex +CREATE UNIQUE INDEX "CallgentTag_callgentId_tagId_key" ON "CallgentTag"("callgentId", "tagId"); + +-- CreateIndex +CREATE INDEX "Callgent_forkedPk_idx" ON "Callgent"("forkedPk"); + +-- CreateIndex +CREATE INDEX "Callgent_mainTagId_idx" ON "Callgent"("mainTagId"); diff --git a/prisma/migrations/20240928132200_callgent_hub/migration.sql b/prisma/migrations/20240928132200_callgent_hub/migration.sql new file mode 100644 index 0000000..755faab --- /dev/null +++ b/prisma/migrations/20240928132200_callgent_hub/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `deletedAt` on the `CallgentRealm` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "CallgentRealm" DROP COLUMN "deletedAt", +ALTER COLUMN "realm" SET DATA TYPE VARCHAR(36); diff --git a/prisma/migrations/20240929104035_callgent_stats/migration.sql b/prisma/migrations/20240929104035_callgent_stats/migration.sql new file mode 100644 index 0000000..664c91e --- /dev/null +++ b/prisma/migrations/20240929104035_callgent_stats/migration.sql @@ -0,0 +1,8 @@ +-- AlterTable +ALTER TABLE "Callgent" ADD COLUMN "avatar" VARCHAR(1023), +ADD COLUMN "favorite" INTEGER NOT NULL DEFAULT 0, +ADD COLUMN "forked" INTEGER NOT NULL DEFAULT 0, +ADD COLUMN "liked" INTEGER NOT NULL DEFAULT 0, +ADD COLUMN "viewed" INTEGER NOT NULL DEFAULT 0, +ADD COLUMN "featured" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "official" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20241009102710_rename_ep_2_entry/migration.sql b/prisma/migrations/20241009102710_rename_ep_2_entry/migration.sql new file mode 100644 index 0000000..70f73ab --- /dev/null +++ b/prisma/migrations/20241009102710_rename_ep_2_entry/migration.sql @@ -0,0 +1,70 @@ +/* + Warnings: + + - You are about to drop the column `endpointId` on the `CallgentFunction` table. All the data in the column will be lost. + - You are about to drop the column `cepId` on the `TaskAction` table. All the data in the column will be lost. + - You are about to drop the `Endpoint` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- CreateEnum +CREATE TYPE "EntryType" AS ENUM ('CLIENT', 'SERVER', 'EVENT'); + +-- DropIndex +DROP INDEX "CallgentFunction_endpointId_idx"; + +-- AlterTable +ALTER TABLE "CallgentFunction" DROP COLUMN "endpointId", +ADD COLUMN "entryId" VARCHAR(36); + +-- AlterTable +ALTER TABLE "TaskAction" DROP COLUMN "cepId", +ADD COLUMN "ceId" VARCHAR(36); + +-- DropTable +DROP TABLE "Endpoint"; + +-- DropEnum +DROP TYPE "EndpointType"; + +-- CreateTable +CREATE TABLE "Entry" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "name" VARCHAR(2047) NOT NULL DEFAULT '', + "type" "EntryType" NOT NULL, + "adaptorKey" VARCHAR(127) NOT NULL, + "priority" INTEGER NOT NULL DEFAULT 0, + "host" VARCHAR(2047) NOT NULL, + "initParams" JSON, + "content" JSON, + "securities" JSON[], + "callgentId" VARCHAR(36) NOT NULL, + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Entry_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Entry_id_key" ON "Entry"("id"); + +-- CreateIndex +CREATE INDEX "Entry_tenantPk_idx" ON "Entry"("tenantPk"); + +-- CreateIndex +CREATE INDEX "Entry_callgentId_idx" ON "Entry"("callgentId"); + +-- CreateIndex +CREATE INDEX "CallgentFunction_entryId_idx" ON "CallgentFunction"("entryId"); + +-- Enable Row Level Security +ALTER TABLE "Entry" ENABLE ROW LEVEL SECURITY; +-- Force Row Level Security for table owners +ALTER TABLE "Entry" FORCE ROW LEVEL SECURITY; +-- Create row security policies +CREATE POLICY tenant_isolation_policy ON "Entry" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +-- Create policies to bypass RLS (optional) +CREATE POLICY bypass_rls_policy ON "Entry" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); diff --git a/prisma/migrations/20241010003123_rename_fun_2_ep/migration.sql b/prisma/migrations/20241010003123_rename_fun_2_ep/migration.sql new file mode 100644 index 0000000..74913a4 --- /dev/null +++ b/prisma/migrations/20241010003123_rename_fun_2_ep/migration.sql @@ -0,0 +1,56 @@ +/* + Warnings: + + - You are about to drop the `CallgentFunction` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "CallgentFunction"; + +-- CreateTable +CREATE TABLE "Endpoint" ( + "pk" SERIAL NOT NULL, + "id" VARCHAR(36) NOT NULL, + "tenantPk" INTEGER NOT NULL DEFAULT (current_setting('tenancy.tenantPk')::int), + "name" VARCHAR(1023) NOT NULL, + "path" VARCHAR(1000) NOT NULL, + "method" VARCHAR(15) NOT NULL, + "summary" VARCHAR(511) NOT NULL DEFAULT '', + "description" VARCHAR(1023) NOT NULL DEFAULT '', + "securities" JSON[], + "params" JSON, + "responses" JSON, + "rawJson" JSON NOT NULL, + "callgentId" VARCHAR(36) NOT NULL, + "entryId" VARCHAR(36), + "createdBy" VARCHAR(36) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Endpoint_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Endpoint_id_key" ON "Endpoint"("id"); + +-- CreateIndex +CREATE INDEX "Endpoint_tenantPk_idx" ON "Endpoint"("tenantPk"); + +-- CreateIndex +CREATE INDEX "Endpoint_callgentId_idx" ON "Endpoint"("callgentId"); + +-- CreateIndex +CREATE INDEX "Endpoint_entryId_idx" ON "Endpoint"("entryId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Endpoint_callgentId_name_key" ON "Endpoint"("callgentId", "name"); + +-- Enable Row Level Security +ALTER TABLE "Endpoint" ENABLE ROW LEVEL SECURITY; +-- Force Row Level Security for table owners +ALTER TABLE "Endpoint" FORCE ROW LEVEL SECURITY; +-- Create row security policies +CREATE POLICY tenant_isolation_policy ON "Endpoint" USING ("tenantPk" = 0 or "tenantPk" = COALESCE(NULLIF(current_setting('tenancy.tenantPk', TRUE), ''), '0')::int); +-- Create policies to bypass RLS (optional) +CREATE POLICY bypass_rls_policy ON "Endpoint" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); diff --git a/prisma/migrations/20241012014016_refactor_epname/migration.sql b/prisma/migrations/20241012014016_refactor_epname/migration.sql new file mode 100644 index 0000000..e4101e1 --- /dev/null +++ b/prisma/migrations/20241012014016_refactor_epname/migration.sql @@ -0,0 +1,13 @@ +/* + Warnings: + + - You are about to drop the column `defaultPrevented` on the `EventStore` table. All the data in the column will be lost. + - You are about to drop the column `funName` on the `TaskAction` table. All the data in the column will be lost. + - Added the required column `preventDefault` to the `EventStore` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "EventStore" RENAME COLUMN "defaultPrevented" TO "preventDefault"; + +-- AlterTable +ALTER TABLE "TaskAction" RENAME COLUMN "funName" TO "epName"; diff --git a/prisma/migrations/20241017073426_req_2_args/migration.sql b/prisma/migrations/20241017073426_req_2_args/migration.sql new file mode 100644 index 0000000..c020be9 --- /dev/null +++ b/prisma/migrations/20241017073426_req_2_args/migration.sql @@ -0,0 +1,24 @@ +/* + Warnings: + + - You are about to drop the `PersistedAsync` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "PersistedAsync"; + +-- CreateTable +CREATE TABLE "Req2ArgsRepo" ( + "pk" BIGSERIAL NOT NULL, + "cepId" VARCHAR(36) NOT NULL, + "sepId" VARCHAR(36) NOT NULL, + "req2Args" VARCHAR(8192) NOT NULL, + "createdBy" VARCHAR(36), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Req2ArgsRepo_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Req2ArgsRepo_cepId_sepId_key" ON "Req2ArgsRepo"("cepId", "sepId"); diff --git a/prisma/migrations/20241021122842_sum_instruction/migration.sql b/prisma/migrations/20241021122842_sum_instruction/migration.sql new file mode 100644 index 0000000..790f00c --- /dev/null +++ b/prisma/migrations/20241021122842_sum_instruction/migration.sql @@ -0,0 +1,30 @@ +/* + Warnings: + + - You are about to drop the column `targetId` on the `EventStore` table. All the data in the column will be lost. + +*/ +-- DropIndex +DROP INDEX "EventStore_targetId_idx"; + +-- AlterTable +ALTER TABLE "Callgent" ADD COLUMN "instruction" VARCHAR(4095); + +-- AlterTable +ALTER TABLE "Endpoint" ALTER COLUMN "summary" DROP NOT NULL, +ALTER COLUMN "summary" DROP DEFAULT, +ALTER COLUMN "summary" SET DATA TYPE VARCHAR(2047), +ALTER COLUMN "description" DROP NOT NULL, +ALTER COLUMN "description" DROP DEFAULT, +ALTER COLUMN "description" SET DATA TYPE VARCHAR(4095); + +-- AlterTable +ALTER TABLE "Entry" ADD COLUMN "instruction" VARCHAR(4095), +ADD COLUMN "summary" VARCHAR(4095); + +-- AlterTable +ALTER TABLE "EventStore" DROP COLUMN "targetId", +ADD COLUMN "taskId" VARCHAR(36); + +-- CreateIndex +CREATE INDEX "EventStore_taskId_idx" ON "EventStore"("taskId"); diff --git a/prisma/migrations/20241025094742_llm_cache/migration.sql b/prisma/migrations/20241025094742_llm_cache/migration.sql new file mode 100644 index 0000000..0c84e40 --- /dev/null +++ b/prisma/migrations/20241025094742_llm_cache/migration.sql @@ -0,0 +1,15 @@ +/* + Warnings: + + - A unique constraint covering the columns `[prompt,model,name]` on the table `LlmCache` will be added. If there are existing duplicate values, this will fail. + - Added the required column `model` to the `LlmCache` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropIndex +DROP INDEX "LlmCache_prompt_name_key"; + +-- AlterTable +ALTER TABLE "LlmCache" ADD COLUMN "model" VARCHAR(127) NOT NULL; + +-- CreateIndex +CREATE UNIQUE INDEX "LlmCache_prompt_model_name_key" ON "LlmCache"("prompt", "model", "name"); diff --git a/prisma/migrations/20241029132827_llm_cache_idx/migration.sql b/prisma/migrations/20241029132827_llm_cache_idx/migration.sql new file mode 100644 index 0000000..1ead295 --- /dev/null +++ b/prisma/migrations/20241029132827_llm_cache_idx/migration.sql @@ -0,0 +1,11 @@ +-- DropIndex +DROP INDEX "LlmCache_prompt_model_name_key"; + +-- CreateIndex +CREATE INDEX "LlmCache_prompt_idx" ON "LlmCache" USING HASH ("prompt"); + +-- CreateIndex +CREATE INDEX "LlmCache_model_name_idx" ON "LlmCache"("model", "name"); + +-- AlterTable +ALTER TABLE "EventStore" DROP COLUMN "data"; diff --git a/prisma/migrations/20241110021233_drop_prevent_default/migration.sql b/prisma/migrations/20241110021233_drop_prevent_default/migration.sql new file mode 100644 index 0000000..8a144fc --- /dev/null +++ b/prisma/migrations/20241110021233_drop_prevent_default/migration.sql @@ -0,0 +1,10 @@ +/* +Warnings: +- You are about to drop the column `preventDefault` on the `EventStore` table. All the data in the column will be lost. +*/ +-- AlterTable +ALTER TABLE "EventStore" DROP COLUMN "preventDefault"; + +ALTER TABLE "Endpoint" +ADD COLUMN "isAsync" BOOLEAN NOT NULL, +ADD COLUMN "adaptorKey" VARCHAR(127) NOT NULL; \ No newline at end of file diff --git a/prisma/migrations/20241124012949_sep_cache/migration.sql b/prisma/migrations/20241124012949_sep_cache/migration.sql new file mode 100644 index 0000000..04c0002 --- /dev/null +++ b/prisma/migrations/20241124012949_sep_cache/migration.sql @@ -0,0 +1,21 @@ +-- AlterTable +ALTER TABLE "Endpoint" +ADD COLUMN "cacheKey" VARCHAR(511), +ADD COLUMN "cacheTtl" INTEGER DEFAULT 0; + +-- CreateTable +CREATE TABLE "Cached" ( + "pk" BIGSERIAL NOT NULL, + "sepId" VARCHAR(36) NOT NULL, + "sourceId" VARCHAR(36) NOT NULL, + "cacheKey" VARCHAR(511) NOT NULL, + "response" JSON NOT NULL, + "eventIds" VARCHAR(36)[], + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + +CONSTRAINT "Cached_pkey" PRIMARY KEY ("pk") ); + +-- CreateIndex +CREATE UNIQUE INDEX "Cached_sepId_cacheKey_key" ON "Cached" ("sepId", "cacheKey"); \ No newline at end of file diff --git a/prisma/migrations/20241127002616_sep_servers/migration.sql b/prisma/migrations/20241127002616_sep_servers/migration.sql new file mode 100644 index 0000000..970da25 --- /dev/null +++ b/prisma/migrations/20241127002616_sep_servers/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "Endpoint" ADD COLUMN "servers" JSON[]; + diff --git a/prisma/migrations/20241211091557_event_pwd/migration.sql b/prisma/migrations/20241211091557_event_pwd/migration.sql new file mode 100644 index 0000000..45e9209 --- /dev/null +++ b/prisma/migrations/20241211091557_event_pwd/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - Added the required column `pwd` to the `EventStore` table without a default value. This is not possible if the table is not empty. + - Made the column `taskId` on table `EventStore` required. This step will fail if there are existing NULL values in that column. + +*/ +-- AlterTable +ALTER TABLE "EventStore" ALTER COLUMN "taskId" SET NOT NULL; diff --git a/prisma/migrations/20241213061329_/migration.sql b/prisma/migrations/20241213061329_/migration.sql new file mode 100644 index 0000000..ddc9d00 --- /dev/null +++ b/prisma/migrations/20241213061329_/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - You are about to alter the column `prompt` on the `LlmCache` table. The data in that column could be lost. The data in that column will be cast from `VarChar(8192)` to `VarChar(8191)`. + - You are about to alter the column `result` on the `LlmCache` table. The data in that column could be lost. The data in that column will be cast from `VarChar(8192)` to `VarChar(8191)`. + - You are about to alter the column `prompt` on the `LlmTemplate` table. The data in that column could be lost. The data in that column will be cast from `VarChar(9191)` to `VarChar(8191)`. + +*/ +-- AlterTable +ALTER TABLE "LlmCache" ALTER COLUMN "prompt" SET DATA TYPE VARCHAR(8191), +ALTER COLUMN "result" SET DATA TYPE VARCHAR(8191); + +-- AlterTable +ALTER TABLE "LlmTemplate" ALTER COLUMN "prompt" SET DATA TYPE VARCHAR(8191); diff --git a/prisma/migrations/20250113050740_event_store_msg/migration.sql b/prisma/migrations/20250113050740_event_store_msg/migration.sql new file mode 100644 index 0000000..74f5d37 --- /dev/null +++ b/prisma/migrations/20250113050740_event_store_msg/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "EventStore" ALTER COLUMN "message" SET DATA TYPE VARCHAR(2047); diff --git a/prisma/migrations/20250115093023_user_balance/migration.sql b/prisma/migrations/20250115093023_user_balance/migration.sql new file mode 100644 index 0000000..0cad22b --- /dev/null +++ b/prisma/migrations/20250115093023_user_balance/migration.sql @@ -0,0 +1,13 @@ +-- CreateTable +CREATE TABLE "UserBalance" ( + "id" SERIAL NOT NULL, + "userId" UUID NOT NULL, + "balance" BIGINT NOT NULL DEFAULT 0, + "currency" VARCHAR(3) NOT NULL DEFAULT 'USD', + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "UserBalance_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "UserBalance_userId_key" ON "UserBalance"("userId"); diff --git a/prisma/migrations/20250115130214_user_balance/migration.sql b/prisma/migrations/20250115130214_user_balance/migration.sql new file mode 100644 index 0000000..e50097d --- /dev/null +++ b/prisma/migrations/20250115130214_user_balance/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "UserBalance" ALTER COLUMN "userId" SET DATA TYPE VARCHAR(36); diff --git a/prisma/migrations/20250115140006_user_balance/migration.sql b/prisma/migrations/20250115140006_user_balance/migration.sql new file mode 100644 index 0000000..d877a96 --- /dev/null +++ b/prisma/migrations/20250115140006_user_balance/migration.sql @@ -0,0 +1,19 @@ +-- CreateTable +CREATE TABLE "TransactionHistory" ( + "id" SERIAL NOT NULL, + "userBalanceId" INTEGER NOT NULL, + "type" VARCHAR(50) NOT NULL, + "stripeId" VARCHAR(50), + "price" JSONB NOT NULL, + "amount" BIGINT NOT NULL, + "currency" VARCHAR(3) NOT NULL DEFAULT 'USD', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "TransactionHistory_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "TransactionHistory_stripeId_key" ON "TransactionHistory"("stripeId"); + +-- CreateIndex +CREATE INDEX "TransactionHistory_userBalanceId_idx" ON "TransactionHistory"("userBalanceId"); diff --git a/prisma/migrations/20250115141743_user_balance/migration.sql b/prisma/migrations/20250115141743_user_balance/migration.sql new file mode 100644 index 0000000..d62819a --- /dev/null +++ b/prisma/migrations/20250115141743_user_balance/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "TransactionHistory" ALTER COLUMN "price" SET DEFAULT '{}'; diff --git a/prisma/migrations/20250115141936_user_balance/migration.sql b/prisma/migrations/20250115141936_user_balance/migration.sql new file mode 100644 index 0000000..7f2681c --- /dev/null +++ b/prisma/migrations/20250115141936_user_balance/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "TransactionHistory" ALTER COLUMN "price" DROP DEFAULT, +ALTER COLUMN "price" SET DATA TYPE JSON; diff --git a/prisma/migrations/20250115143932_user_balance/migration.sql b/prisma/migrations/20250115143932_user_balance/migration.sql new file mode 100644 index 0000000..d7df463 --- /dev/null +++ b/prisma/migrations/20250115143932_user_balance/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "TransactionHistory" ALTER COLUMN "stripeId" SET DATA TYPE VARCHAR(150); diff --git a/prisma/migrations/20250115151155_llm_model_pricing/migration.sql b/prisma/migrations/20250115151155_llm_model_pricing/migration.sql new file mode 100644 index 0000000..33150d9 --- /dev/null +++ b/prisma/migrations/20250115151155_llm_model_pricing/migration.sql @@ -0,0 +1,13 @@ +-- CreateTable +CREATE TABLE "LlmModelPricing" ( + "id" SERIAL NOT NULL, + "modelName" VARCHAR(150) NOT NULL, + "price" JSON NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "LlmModelPricing_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "LlmModelPricing_modelName_key" ON "LlmModelPricing"("modelName"); diff --git a/prisma/migrations/20250116001511_rm_tasks/migration.sql b/prisma/migrations/20250116001511_rm_tasks/migration.sql new file mode 100644 index 0000000..fe5bbae --- /dev/null +++ b/prisma/migrations/20250116001511_rm_tasks/migration.sql @@ -0,0 +1,12 @@ +/* + Warnings: + + - You are about to drop the `Task` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `TaskAction` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "Task"; + +-- DropTable +DROP TABLE "TaskAction"; diff --git a/prisma/migrations/20250116071943_transaction_history/migration.sql b/prisma/migrations/20250116071943_transaction_history/migration.sql new file mode 100644 index 0000000..48bf9fd --- /dev/null +++ b/prisma/migrations/20250116071943_transaction_history/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - You are about to drop the column `currency` on the `TransactionHistory` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "TransactionHistory" DROP COLUMN "currency", +ADD COLUMN "usage" JSON, +ALTER COLUMN "amount" SET DATA TYPE DECIMAL(30,0); + +-- AlterTable +ALTER TABLE "UserBalance" ALTER COLUMN "balance" SET DEFAULT 0, +ALTER COLUMN "balance" SET DATA TYPE DECIMAL(30,0); diff --git a/prisma/migrations/20250116084410_billing_pk/migration.sql b/prisma/migrations/20250116084410_billing_pk/migration.sql new file mode 100644 index 0000000..c3d0c44 --- /dev/null +++ b/prisma/migrations/20250116084410_billing_pk/migration.sql @@ -0,0 +1,41 @@ +/* + Warnings: + + - The primary key for the `LlmModelPricing` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to drop the column `id` on the `LlmModelPricing` table. All the data in the column will be lost. + - The primary key for the `Tag` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to drop the column `id` on the `Tag` table. All the data in the column will be lost. + - The primary key for the `TransactionHistory` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to drop the column `id` on the `TransactionHistory` table. All the data in the column will be lost. + - The primary key for the `UserBalance` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to drop the column `id` on the `UserBalance` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "LlmModelPricing" DROP CONSTRAINT "LlmModelPricing_pkey", +DROP COLUMN "id", +ADD COLUMN "pk" BIGSERIAL NOT NULL, +ADD CONSTRAINT "LlmModelPricing_pkey" PRIMARY KEY ("pk"); + +-- AlterTable +ALTER TABLE "Tag" DROP CONSTRAINT "Tag_pkey", +DROP COLUMN "id", +ADD COLUMN "pk" SERIAL NOT NULL, +ADD CONSTRAINT "Tag_pkey" PRIMARY KEY ("pk"); + +-- AlterTable +ALTER TABLE "TransactionHistory" DROP CONSTRAINT "TransactionHistory_pkey", +DROP COLUMN "id", +ADD COLUMN "deletedAt" TIMESTAMP(3), +ADD COLUMN "pk" BIGSERIAL NOT NULL, +ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ALTER COLUMN "userBalanceId" SET DATA TYPE BIGINT, +ADD CONSTRAINT "TransactionHistory_pkey" PRIMARY KEY ("pk"); + +-- AlterTable +ALTER TABLE "UserBalance" DROP CONSTRAINT "UserBalance_pkey", +DROP COLUMN "id", +ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "deletedAt" TIMESTAMP(3), +ADD COLUMN "pk" BIGSERIAL NOT NULL, +ADD CONSTRAINT "UserBalance_pkey" PRIMARY KEY ("pk"); diff --git a/prisma/migrations/20250121005708_event_store_invoke_key/migration.sql b/prisma/migrations/20250121005708_event_store_invoke_key/migration.sql new file mode 100644 index 0000000..1d885ee --- /dev/null +++ b/prisma/migrations/20250121005708_event_store_invoke_key/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `eventIds` on the `Cached` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "Cached" DROP COLUMN "eventIds", +ADD COLUMN "invokeKeys" VARCHAR(36)[]; diff --git a/prisma/migrations/20250123082252_llm_model_price/migration.sql b/prisma/migrations/20250123082252_llm_model_price/migration.sql new file mode 100644 index 0000000..8113641 --- /dev/null +++ b/prisma/migrations/20250123082252_llm_model_price/migration.sql @@ -0,0 +1,16 @@ +/* + Warnings: + + - The `type` column on the `TransactionHistory` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - Added the required column `pricingMethod` to the `LlmModelPricing` table without a default value. This is not possible if the table is not empty. + +*/ +-- CreateEnum +CREATE TYPE "TransactionHistoryType" AS ENUM ('PAYMENT', 'TOKEN'); + +-- AlterTable +ALTER TABLE "LlmModelPricing" ADD COLUMN "pricingMethod" VARCHAR(150) NOT NULL; + +-- AlterTable +ALTER TABLE "TransactionHistory" DROP COLUMN "type", +ADD COLUMN "type" "TransactionHistoryType" NOT NULL DEFAULT 'PAYMENT'; diff --git a/prisma/migrations/20250213054023_event_store_owners/migration.sql b/prisma/migrations/20250213054023_event_store_owners/migration.sql new file mode 100644 index 0000000..a447156 --- /dev/null +++ b/prisma/migrations/20250213054023_event_store_owners/migration.sql @@ -0,0 +1,10 @@ +/* + Warnings: + + - Added the required column `paidBy` to the `EventStore` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "EventStore" ADD COLUMN "calledBy" VARCHAR(36), +ADD COLUMN "paidBy" VARCHAR(36) NOT NULL, +ADD COLUMN "title" VARCHAR(144); diff --git a/prisma/migrations/20250223100842_tx/migration.sql b/prisma/migrations/20250223100842_tx/migration.sql new file mode 100644 index 0000000..e769725 --- /dev/null +++ b/prisma/migrations/20250223100842_tx/migration.sql @@ -0,0 +1,131 @@ +/* + Warnings: +*/ +-- AlterTable +ALTER TABLE "AuthToken" ALTER COLUMN "token" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "Cached" ALTER COLUMN "sepId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "sourceId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "invokeKeys" SET DATA TYPE VARCHAR(30)[]; + +-- AlterTable +ALTER TABLE "Callgent" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "createdBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "CallgentRealm" ALTER COLUMN "callgentId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "realm" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "CallgentTag" ALTER COLUMN "callgentId" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "Endpoint" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "callgentId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "entryId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "createdBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "Entry" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "callgentId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "createdBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "EventListener" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "srcId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "eventType" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "dataType" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "createdBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "EventStore" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "srcId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "eventType" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "dataType" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "listenerId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "taskId" SET DATA TYPE VARCHAR(35), +ALTER COLUMN "calledBy" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "paidBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "Req2ArgsRepo" ALTER COLUMN "cepId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "sepId" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "createdBy" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "Tenant" ADD COLUMN "balance" DECIMAL(30,0) NOT NULL DEFAULT 0, +ADD COLUMN "currency" VARCHAR(6) NOT NULL DEFAULT 'USD', +ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "emailHost" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "User" ALTER COLUMN "id" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "name" SET DATA TYPE VARCHAR(30); + +-- AlterTable +ALTER TABLE "UserIdentity" ALTER COLUMN "provider" SET DATA TYPE VARCHAR(30), +ALTER COLUMN "userId" SET DATA TYPE VARCHAR(30); + +-- DropTable +DROP TABLE "LlmModelPricing"; + +-- DropTable +DROP TABLE "TransactionHistory"; + +-- DropTable +DROP TABLE "UserBalance"; + +-- DropEnum +DROP TYPE "TransactionHistoryType"; + +-- CreateTable +CREATE TABLE "ModelPricing" ( + "pk" BIGSERIAL NOT NULL, + "model" VARCHAR(30) NOT NULL, + "alias" VARCHAR(50), + "provider" VARCHAR(50) NOT NULL DEFAULT '', + "price" JSON NOT NULL, + "currency" VARCHAR(6) NOT NULL, + "method" VARCHAR(300) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "ModelPricing_pkey" PRIMARY KEY ("pk") +); + +-- CreateTable +CREATE TABLE "Transaction" ( + "pk" BIGSERIAL NOT NULL, + "id" VARCHAR(30) NOT NULL, + "txId" VARCHAR(150) NOT NULL, + "refData" JSON, + "type" VARCHAR(20) NOT NULL, + "amount" DECIMAL(30,0) NOT NULL, + "currency" VARCHAR(6) NOT NULL, + "userId" VARCHAR(30) NOT NULL, + "tenantPk" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "Transaction_pkey" PRIMARY KEY ("pk") +); + +-- CreateIndex +CREATE UNIQUE INDEX "ModelPricing_model_provider_key" ON "ModelPricing"("model", "provider"); + +-- CreateIndex +CREATE UNIQUE INDEX "Transaction_id_key" ON "Transaction"("id"); + +-- CreateIndex +CREATE UNIQUE INDEX "Transaction_txId_key" ON "Transaction"("txId"); + +-- CreateIndex +CREATE INDEX "Transaction_tenantPk_idx" ON "Transaction"("tenantPk"); + +-- CreateIndex +CREATE INDEX "EventStore_paidBy_idx" ON "EventStore"("paidBy"); + +-- CreateIndex +CREATE INDEX "EventStore_calledBy_idx" ON "EventStore"("calledBy"); diff --git a/prisma/migrations/20250223103851_deleted_unique/migration.sql b/prisma/migrations/20250223103851_deleted_unique/migration.sql new file mode 100644 index 0000000..d48748b --- /dev/null +++ b/prisma/migrations/20250223103851_deleted_unique/migration.sql @@ -0,0 +1,25 @@ +/* + Warnings: + + - A unique constraint covering the columns `[tenantPk,name,deletedAt]` on the table `Callgent` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[callgentId,name,deletedAt]` on the table `Endpoint` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[provider,uid,deletedAt]` on the table `UserIdentity` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Callgent_tenantPk_name_key"; + +-- DropIndex +DROP INDEX "Endpoint_callgentId_name_key"; + +-- DropIndex +DROP INDEX "UserIdentity_provider_uid_key"; + +-- CreateIndex +CREATE UNIQUE INDEX "Callgent_tenantPk_name_deletedAt_key" ON "Callgent"("tenantPk", "name", "deletedAt"); + +-- CreateIndex +CREATE UNIQUE INDEX "Endpoint_callgentId_name_deletedAt_key" ON "Endpoint"("callgentId", "name", "deletedAt"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserIdentity_provider_uid_deletedAt_key" ON "UserIdentity"("provider", "uid", "deletedAt"); diff --git a/prisma/migrations/20250223114041_deleted_at/migration.sql b/prisma/migrations/20250223114041_deleted_at/migration.sql new file mode 100644 index 0000000..c35da12 --- /dev/null +++ b/prisma/migrations/20250223114041_deleted_at/migration.sql @@ -0,0 +1,49 @@ +/* + Warnings: + + - The `deletedAt` column on the `Callgent` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `Endpoint` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `Entry` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `EventListener` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `EventStore` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `Tenant` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `Transaction` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `User` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `deletedAt` column on the `UserIdentity` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- AlterTable +ALTER TABLE "Callgent" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "Endpoint" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "Entry" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "EventListener" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "EventStore" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "Tenant" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "Transaction" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "User" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; + +-- AlterTable +ALTER TABLE "UserIdentity" DROP COLUMN "deletedAt", +ADD COLUMN "deletedAt" BIGINT NOT NULL DEFAULT 0; diff --git a/prisma/migrations/row_level_security/migration.sql b/prisma/migrations/row_level_security/migration.sql deleted file mode 100644 index d061350..0000000 --- a/prisma/migrations/row_level_security/migration.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Enable Row Level Security -ALTER TABLE "User" ENABLE ROW LEVEL SECURITY; -ALTER TABLE "UserIdentity" ENABLE ROW LEVEL SECURITY; -ALTER TABLE "Botlet" ENABLE ROW LEVEL SECURITY; - --- Force Row Level Security for table owners -ALTER TABLE "User" FORCE ROW LEVEL SECURITY; -ALTER TABLE "UserIdentity" FORCE ROW LEVEL SECURITY; -ALTER TABLE "Botlet" FORCE ROW LEVEL SECURITY; - --- Create row security policies -CREATE POLICY tenant_isolation_policy ON "User" USING (("tenantId" = 0) OR ("tenantId" = current_setting('tenancy.tenantId', TRUE)::int)); -CREATE POLICY tenant_isolation_policy ON "UserIdentity" USING (("tenantId" = 0) OR ("tenantId" = current_setting('tenancy.tenantId', TRUE)::int)); -CREATE POLICY tenant_isolation_policy ON "Botlet" USING (("tenantId" = 0) OR ("tenantId" = current_setting('tenancy.tenantId', TRUE)::int)); - --- Create policies to bypass RLS (optional) -CREATE POLICY bypass_rls_policy ON "User" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); -CREATE POLICY bypass_rls_policy ON "UserIdentity" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); -CREATE POLICY bypass_rls_policy ON "Botlet" USING (current_setting('tenancy.bypass_rls', TRUE)::text = 'on'); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e8e8389..545aaa0 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -7,7 +7,7 @@ generator nestjsDto { provider = "prisma-generator-nestjs-dto" output = "../src" outputToNestJsResourceStructure = "true" - exportRelationModifierClasses = "true" + exportRelationModifierClasses = "false" reExport = "false" createDtoPrefix = "Create" updateDtoPrefix = "Update" @@ -20,82 +20,90 @@ generator nestjsDto { } datasource db { - provider = "postgres" - url = env("DATABASE_URL") + provider = "postgres" + url = env("DATABASE_URL") + relationMode = "prisma" // no foreign constraints in db, pls add @@index on manually } -// db sharding base on tenantId: -// 1. id segmentation, ALTER SEQUENCE [表名]_[id]_seq RESTART WITH 1001; -// 2.chard tenant based on tenant_id, eq (0~10000] db1, (10000,20000] db2 +// TODO # foreign key using pk, instead of id, for better performance? +// TODO id uses hash index + +// # db sharding base on tenantPk: +// 1. pk segmentation, ALTER SEQUENCE [表名]_[id]_seq RESTART WITH 1001; +// 2. shard tenant based on tenant_id, eq (0~10000] db1, (10000,20000] db2 //////////////////// Authentication and Account //////////////////////////// model Tenant { - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) - mailHost String? @unique @db.VarChar(36) /// @description unique tenant mail host + id String @unique @db.VarChar(30) + emailHost String? @unique @db.VarChar(30) /// @description unique tenant email host name String? @db.VarChar(50) avatar String? @db.VarChar(1023) type Int @default(1) /// @description account type: 1: individual, 2: organization. statusCode Int @default(0) /// @description user statusCode: 0: pending, 1: active, -1: inactive. + /// @description $1 = 1e11 + balance Decimal @default(0) @db.Decimal(30, 0) + currency String @default("USD") @db.VarChar(6) + User User[] - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. } model User { - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) - name String @db.VarChar(36) + id String @unique @db.VarChar(30) + name String @db.VarChar(30) email String? @db.VarChar(255) /// @description account primary verified email avatar String? @db.VarChar(1023) locale String? @default("en_US") @db.VarChar(10) - tenant Tenant @relation(fields: [tenantId], references: [id]) + tenant Tenant @relation(fields: [tenantPk], references: [pk]) /// @DtoRelationIncludeId // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) /// @DtoReadOnly /// @DtoEntityHidden userIdentity UserIdentity[] - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. - @@index([tenantId]) + @@index([tenantPk]) } model UserIdentity { - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - provider String @db.VarChar(36) + provider String @db.VarChar(30) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse uid String @db.VarChar(255) /// @description userId from provider. - credentials String @db.VarChar(2048) /// @description user cridentials + credentials String @db.VarChar(2048) /// @description auth secret or token name String? @db.VarChar(255) /// @MinLength(6) /// @IsEmail @@ -108,298 +116,322 @@ model UserIdentity { /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - info Json? @map("info") /// @description authentication info from realm + /// @description authentication info from realm + info Json? - user User @relation(fields: [userId], references: [id]) - userId Int + user User @relation(fields: [userPk], references: [pk]) + userPk Int /// @DtoReadOnly /// @DtoEntityHidden - userUuid String @db.VarChar(36) + userId String @db.VarChar(30) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + // expiresAt DateTime? @db.Timestamp(0) // @description TODO: token expiration time + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. - @@unique([provider, uid]) + @@unique([provider, uid, deletedAt]) + @@index([userPk]) @@index([userId]) - @@index([userUuid]) - @@index([tenantId]) + @@index([tenantPk]) } /// @DtoIgnoreModel /// @description non-organization email hosts model PublicMailHost { - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @description starts with `.`, e.g.: '.gmail.com', '.hotmail.com' dotHost String @unique @db.VarChar(255) createdAt DateTime @default(now()) } -//////////////////// Botlet //////////////////////////// +//////////////////// Callgent //////////////////////////// + +/// @DtoIgnoreModel +model Tag { + pk Int @id @default(autoincrement()) + name String @unique @db.VarChar(30) + avatar String? @db.VarChar(1023) + description String @db.VarChar(1024) +} -model Botlet { +model Callgent { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) + id String @unique @db.VarChar(30) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) + + name String @db.VarChar(255) + avatar String? @db.VarChar(1023) + /// @description Summary to quickly understand in what scenarios to use this service. + summary String? @db.VarChar(4095) + /// @description Instruction to know roughly on how to use this service: concepts/operations etc. + instruction String? @db.VarChar(4095) - name String @db.VarChar(255) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - summary String? @db.VarChar(4095) - - /// @DtoReadOnly - /// @DtoEntityHidden - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` - /// @DtoReadOnly - /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. - - @@unique([tenantId, name]) - @@index([tenantId]) -} - -model BotletFunction { - /// @DtoEntityHidden - id Int @id @default(autoincrement()) + liked Int @default(0) + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + viewed Int @default(0) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) + forked Int @default(0) + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + favorite Int @default(0) + + official Boolean @default(false) + featured Boolean @default(false) + /// @DtoReadOnly /// @DtoEntityHidden - // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) - - name String @db.VarChar(255) - /// @description js function name to invoke this botlet function - funName String @db.VarChar(255) - params String[] @db.VarChar(31) - /// @description js function api docs - documents String @db.VarChar(4095) - /// @description js actual code to invoke this botlet function - fullCode String @db.VarChar(1023) - /// @description endpoint uuid or command or code - content Json @db.Json - - // @DtoReadOnly - /// @CustomValidator(EntityIdExists, 'botlet', 'uuid', ../../infra/repo/validators/entity-exists.validator) - botletUuid String @db.VarChar(36) - /// @description actual server endpoint, when action type is `ENDPOINT` - /// @CustomValidator(EntityIdExists, 'endpoint', 'uuid', ../../infra/repo/validators/entity-exists.validator) - endpointUuid String? @db.VarChar(36) + forkedPk Int? /// @description forked from + /// @CustomValidator(EntityIdExists, 'tag', 'pk', ../../infras/repo/validators/entity-exists.validator) + mainTagId Int? /// @DtoReadOnly /// @DtoEntityHidden - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdBy String @db.VarChar(30) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. + + entries Entry[] - @@unique([botletUuid, name]) - @@index([tenantId]) - @@index([botletUuid]) + @@unique([tenantPk, name, deletedAt]) + @@index([tenantPk]) + @@index([forkedPk]) + @@index([mainTagId]) } -model Task { - /// @DtoEntityHidden - id Int @id @default(autoincrement()) - /// @DtoCreateApiResponse - /// @DtoUpdateApiResponse - /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) - /// @DtoReadOnly - /// @DtoEntityHidden - // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) +/// @DtoIgnoreModel +model CallgentTag { + pk Int @id @default(autoincrement()) - statusCode Int @default(-1) /// @description Task statusCode, -1: pending, 0: done, <-1: failed - name String? @db.VarChar(64) /// @description task name - brief String? @db.VarChar(255) /// @description task brief or description - content Json? /// @description optional task content + tagId Int + callgentId String @db.VarChar(30) - /// @DtoReadOnly - /// @DtoEntityHidden - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` - /// @DtoReadOnly - /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + createdAt DateTime @default(now()) - @@index([tenantId]) + @@unique([callgentId, tagId]) + @@index([tagId]) + @@index([callgentId]) +} + +enum EntryType { + CLIENT + SERVER + EVENT } -model TaskAction { +/// @description a callgent may have multiple entries, including client/server/event entries +model Entry { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) + id String @unique @db.VarChar(30) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) - - // client side information - /// @description action owner botlet uuid, responsible for progressive response - cepUuid String? @db.VarChar(36) /// @description client endpoint uuid - funName String? @db.VarChar(255) /// @description optional botlet function name - cAdaptor String @db.VarChar(36) /// @description client adaptor key - callback Json? @db.Json /// @description callback url template or botlet function - progressive String? @db.VarChar(36) /// @description progressive requesting url template or botlet function - - // processing - returns Boolean @default(false) /// @description whether action has response object - req Json @db.Json /// @description request object - res Json? @db.Json /// @description response object - stage Int @default(-1) /// @description processing stage in the task, -1: init; 0: done - statusCode Int @default(0) /// execution status code - message String? @db.VarChar(255) /// @description error message + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) - // @DtoReadOnly - /// @CustomValidator(EntityIdExists, 'botlet', 'uuid', ../../infra/repo/validators/entity-exists.validator) - taskUuid String @db.VarChar(36) + name String @default("") @db.VarChar(2047) + /// @description Summary to quickly understand in what scenarios to use this service. + summary String? @db.VarChar(4095) + /// @description Instruction to know roughly on how to use this service: concepts/operations etc. + instruction String? @db.VarChar(4095) + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + type EntryType /// @description entry type: CLIENT, SERVER OR EVENT + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + adaptorKey String @db.VarChar(127) /// @description entry adaptor key + priority Int @default(0) /// @description priority in the callgent + + /// @DtoCreateOptional + host String @db.VarChar(2047) /// @description host address, client entry host are *generated*, e.g. '/api/rest/invoke/rbhes0-w4rff/{id}', where `{id}` will be replaced with current entry id + initParams Json? @db.Json /// @description initializing parameters + content Json? @db.Json /// @description generated content/code by init method + /// @DtoReadOnly + /// @DtoPlainApiResponse + /// @DtoCastType(RealmSecurityVO, ../../callgent-realms/dto/realm-security.vo) + securities Json[] @db.Json /// @description RealmSecurityVO[], where RealmSecurityVO{ [realmPk]: RealmSecurityItem } + + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + /// @CustomValidator(EntityIdExists, 'callgent', 'id', ../../infras/repo/validators/entity-exists.validator) + /// @DtoRelationIncludeId + callgentId String @db.VarChar(30) /// @description callgent owning the entry + callgent Callgent @relation(fields: [callgentId], references: [id]) /// @DtoReadOnly /// @DtoEntityHidden - createdBy String @db.VarChar(36) /// @description user uuid, anonymous ip, etc. - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdBy String @db.VarChar(30) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. - - @@index([tenantId]) - @@index([taskUuid]) -} - -/// @DtoIgnoreModel -model AuthToken { - /// @DtoEntityHidden - id Int @id @default(autoincrement()) - - token String @unique @db.VarChar(36) - type String @db.VarChar(10) /// @description token type: JWT, API_KEY, .. - /// @DtoCastType(JwtPayload, ../infra/auth/jwt/jwt.service) - payload Json - revoked Boolean @default(false) + deletedAt BigInt @default(0) /// @description logical deletion. - expiresAt DateTime? - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + @@index([tenantPk]) + @@index([callgentId]) } -enum EndpointType { - CLIENT - SERVER - EVENT -} - -/// @description a botlet may have multiple endpoints, including receiver & sender +/// @description endpoint in openAPI.json format model Endpoint { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) + id String @unique @db.VarChar(30) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) + /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - type EndpointType /// @description endpoint type: CLIENT, SERVER OR EVENT + name String @db.VarChar(1023) /// @description `${method} ${path}` + path String @db.VarChar(1000) /// @description openAPI path + method String @db.VarChar(15) /// @description openAPI method + summary String? @db.VarChar(2047) + description String? @db.VarChar(4095) + servers Json[] @db.Json /// @description openAPI servers + /// @DtoCastType(RealmSecurityVO, ../../callgent-realms/dto/realm-security.vo) + securities Json[] @db.Json /// @description RealmSecurityVO[], where RealmSecurityVO{ [realmName]: RealmSecurityItem } + params Json? @db.Json /// @description declaration of API params + responses Json? @db.Json /// @description declaration of API responses + rawJson Json @db.Json + + // @DtoReadOnly + /// @CustomValidator(EntityIdExists, 'callgent', 'id', ../../infras/repo/validators/entity-exists.validator) + callgentId String @db.VarChar(30) + /// @description An endpoint is bound to a server entry + /// @CustomValidator(EntityIdExists, 'entry', 'id', ../../infras/repo/validators/entity-exists.validator) + entryId String? @db.VarChar(30) + /// @description whether async endpoint, e.g. invoked by email adaptor /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - adaptorKey String @db.VarChar(127) /// @description endpoint adaptor key - priority Int @default(0) /// @description priority in the botlet - - host Json @db.Json /// @description host address & configs - initParams Json? @db.Json /// @description initializing parameters - content Json? @db.Json /// @description generated content/code by init method - + isAsync Boolean @db.Boolean + /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - /// @CustomValidator(EntityIdExists, 'botlet', 'uuid', ../../infra/repo/validators/entity-exists.validator) - botletUuid String @db.VarChar(36) /// @description botlet owning the endpoint + adaptorKey String @db.VarChar(127) /// @description entry adaptor key + cacheKey String? @db.VarChar(511) /// @description {string | (endpoint, request)=> string}; if empty&method=='get': cache by name, else no cache + cacheTtl Int? @default(0) @db.Integer /// @description in seconds. < 0 means no cache, 0&isAsync means cache pending response, else >0 cache /// @DtoReadOnly /// @DtoEntityHidden - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdBy String @db.VarChar(30) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. - - @@index([tenantId]) - @@index([botletUuid]) -} + deletedAt BigInt @default(0) /// @description logical deletion. -enum EndpointAuthType { - NONE /// @description no auth, or treat auth as normal progressive params - APP /// @description all task same auth - USER /// @description auth each task owner/assignee + @@unique([callgentId, name, deletedAt]) + @@index([tenantPk]) + @@index([callgentId]) + @@index([entryId]) } -/// @description endpoint app or user auth credentials -model EndpointAuth { - /// @DtoEntityHidden - id Int @id @default(autoincrement()) +/// @description security realms for callgent +model CallgentRealm { + /// @DtoReadOnly + /// @DtoPlainApiResponse + pk Int @id @default(autoincrement()) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) - /// @CustomValidator(EntityIdExists, 'endpoint', 'uuid', ../../infra/repo/validators/entity-exists.validator) - endpointUuid String @db.VarChar(36) /// @description endpoint uuid. - userKey String? @db.VarChar(63) /// @description unique user key, e.g. assignee userId + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + /// @CustomValidator(EntityIdExists, 'callgent', 'id', ../../infras/repo/validators/entity-exists.validator) + callgentId String @db.VarChar(30) + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + realmKey String @db.VarChar(256) /// @description unique[callgentId, realmKey], to identify same realm in callgent. - credentials Json @db.Json /// @description auth credentials + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + authType String @db.VarChar(16) /// @description auth type, 'apiKey' | 'http' | 'oauth2' | 'openIdConnect' | 'password' | ..etc. + /// @description provider defined realm name, or '' for default realm + /// @IsOptional() + realm String? @default("") @db.VarChar(30) + /// @DtoUpdateOptional + /// @DtoCastType(RealmSchemeVO, ../dto/realm-scheme.vo) + scheme Json @db.Json /// @description security scheme, with all public configs + secret Json? @db.Json /// @description security secret, with all private configs + + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + perUser Boolean @default(false) /// @description whether the realm is per user auth + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + enabled Boolean @default(true) /// @description whether the realm is enabled - /// @DtoReadOnly - /// @DtoEntityHidden - createdBy String @db.VarChar(36) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt - @@unique([endpointUuid, userKey]) - @@index([tenantId]) - @@index([endpointUuid]) + @@unique([callgentId, realmKey]) + @@index(callgentId) + @@index(tenantPk) +} + +/// @description Platform auth tokens +/// @DtoIgnoreModel +model AuthToken { + /// @DtoEntityHidden + pk Int @id @default(autoincrement()) + + token String @unique @db.VarChar(30) + type String @db.VarChar(10) /// @description token type: JWT, API_KEY, .. + /// @DtoCastType(JwtPayload, ../infras/auth/jwt/jwt.service) + payload Json + revoked Boolean @default(false) + + expiresAt DateTime? + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt } /// @DtoIgnoreModel model LlmTemplate { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) name String @db.VarChar(32) - prompt String @db.VarChar(4096) + prompt String @db.VarChar(8191) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@ -410,73 +442,76 @@ model LlmTemplate { /// @DtoIgnoreModel model LlmCache { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk BigInt @id @default(autoincrement()) name String @db.VarChar(32) - prompt String @db.VarChar(4096) - result String @db.VarChar(4096) + model String @db.VarChar(127) + prompt String @db.VarChar(8191) + result String @db.VarChar(8191) createdAt DateTime @default(now()) - @@unique([prompt, name]) + @@index([prompt], type: Hash) + @@index([model, name]) } -model PersistedAsync { - /// @DtoEntityHidden - id BigInt @id @default(autoincrement()) +/// @DtoIgnoreModel +/// @description repo to store req2Args mapping code when invoking(not requesting) sep from cep +model Req2ArgsRepo { + pk BigInt @id @default(autoincrement()) - statusCode Int @default(-1) /// @description statusCode, -1: pending, 1: sent, 0: done, <-1: failed - service String @db.VarChar(127) /// @description callback service name - method String @db.VarChar(127) /// @description callback method name + cepId String @db.VarChar(30) /// @description source client endpoint id receiving the request + sepId String @db.VarChar(30) /// @description target server endpoint id processing the request + req2Args String @db.VarChar(8192) /// @description js function req2Args(req) to convert request to args - parentAsyncId BigInt? @db.BigInt /// @description parent async id + createdBy String? @db.VarChar(30) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - deletedAt DateTime? /// @description logical deletion. + @@unique([cepId, sepId]) } enum ServiceType { SERVICE - BOTLET + CALLGENT } model EventListener { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk Int @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) + id String @unique @db.VarChar(30) /// @DtoReadOnly /// @DtoEntityHidden // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) + tenantPk Int @default(dbgenerated("(current_setting('tenancy.tenantPk')::int)")) - srcUuid String @db.VarChar(36) /// @description event source id + srcId String @db.VarChar(30) /// @description event source id - eventType String @db.VarChar(36) - dataType String @db.VarChar(36) + eventType String @db.VarChar(30) + dataType String @db.VarChar(30) priority Int? @default(0) - serviceType ServiceType // botlet, service + serviceType ServiceType // callgent, service serviceName String @db.VarChar(255) funName String @db.VarChar(255) + description String @default("") @db.VarChar(2000) // TODO add the listener's input/output props in event.context, for automatic checking /// @DtoReadOnly /// @DtoEntityHidden - createdBy String @db.VarChar(36) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdBy String @db.VarChar(30) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. - @@index([srcUuid]) - @@index([tenantId]) + @@index([srcId]) + @@index([tenantPk]) } enum EventCallbackType { @@ -486,47 +521,135 @@ enum EventCallbackType { model EventStore { /// @DtoEntityHidden - id Int @id @default(autoincrement()) + pk BigInt @id @default(autoincrement()) /// @DtoCreateApiResponse /// @DtoUpdateApiResponse /// @DtoPlainApiResponse - uuid String @unique @db.VarChar(36) - /// @DtoReadOnly - /// @DtoEntityHidden - // add to migration.sql - tenantId Int @default(dbgenerated("(current_setting('tenancy.tenantId')::int)")) - - /// @Description src entity uuid which bind to the listener - srcId String @db.VarChar(36) - /// @Description target uuid to relate several events - targetId String? @db.VarChar(36) - eventType String @db.VarChar(36) - dataType String @db.VarChar(36) - /// @Description callback url or parent event id + id String @unique @db.VarChar(30) + + calledBy String? @db.VarChar(30) + /// @description paid by caller, or root callgent creator if caller is null + paidBy String @db.VarChar(30) + /// @description event title + title String? @db.VarChar(144) + + /// @Description src entity id which bind to the listener + srcId String @db.VarChar(30) + /// @Description target id to relate several events + taskId String @db.VarChar(35) + eventType String @db.VarChar(30) + dataType String @db.VarChar(30) + /// @Description callback url or parent event id to invoke callback String? @db.VarChar(1023) /// @Description callback type, 'URL' or 'EVENT' callbackType EventCallbackType @default(EVENT) - data Json? @db.Json + // data Json? @db.Json context Json? @db.Json - /// @description statusCode, -1: processing, 0: done, 1: pending, >1: error - statusCode Int @default(-1) - message String? @db.VarChar(255) - stopPropagation Boolean - defaultPrevented Boolean - listenerUuid String? @db.VarChar(36) - funName String? @db.VarChar(255) + /// @description statusCode, 1: processing, 0: done, 2: pending: waiting for external event trigger to to resume calling current-listener.funName, <0: error + statusCode Int @default(1) + message String? @db.VarChar(2047) + stopPropagation Boolean /// @description stop propagation to next listeners + listenerId String? @db.VarChar(30) + funName String? @db.VarChar(255) /// @description listener's function to call on pending event activated. - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` /// @DtoReadOnly /// @DtoEntityHidden - deletedAt DateTime? /// @description logical deletion. + deletedAt BigInt @default(0) /// @description logical deletion. @@index([srcId]) - @@index([targetId]) - @@index([tenantId]) - @@index([uuid]) + @@index([taskId]) + @@index([paidBy]) + @@index([calledBy]) +} + +/// @DtoSingularModel +model Cached { + /// @DtoEntityHidden + pk BigInt @id @default(autoincrement()) + + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + sepId String @db.VarChar(30) + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + /// @description source event id + sourceId String @db.VarChar(30) + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + cacheKey String @db.VarChar(511) + /// @DtoCastType(PendingOrResponse, ../../entries/adaptors/entry-adaptor.base) + response Json @db.Json + /// @description invoke keys: invokeId-eventId + invokeKeys String[] @db.VarChar(30) + + createdAt DateTime @default(now()) + /// @description updated when async callback + updatedAt DateTime @default(now()) @updatedAt + + @@unique([sepId, cacheKey]) +} + +/// @DtoIgnoreModel +model ModelPricing { + pk BigInt @id @default(autoincrement()) + + model String @db.VarChar(30) + alias String? @db.VarChar(50) + provider String @default("") @db.VarChar(50) + + /// @description $1 = 1e11 + price Json @db.Json + currency String @db.VarChar(6) + + /// @description function to calculate amount: (usage, pricing)=>Decimal + method String @db.VarChar(300) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + + @@unique([model, provider]) +} + +/// @DtoIgnoreModel +model Transaction { + /// @DtoEntityHidden + pk BigInt @id @default(autoincrement()) + /// @DtoCreateApiResponse + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + id String @unique @db.VarChar(30) + /// @IsNotEmpty + /// @DtoUpdateApiResponse + /// @DtoPlainApiResponse + /// @description transaction id from external system + txId String @unique @db.VarChar(150) + /// @DtoUpdateHidden + /// @DtoEntityHidden + /// @description reference data from internal/external system + refData Json? @db.Json + + /// @description transaction type: 1: RECHARGE, 2: GIFT, 3. REFUND, 4: EXPENSE + type String @db.VarChar(20) + /// @description amount: $1 = 1e11 + amount Decimal @db.Decimal(30, 0) + /// @description currency: USD, CNY, ... + currency String @db.VarChar(6) + + userId String @db.VarChar(30) + /// @DtoReadOnly + /// @DtoEntityHidden + tenantPk Int + + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + // DONOT FORGET TO ADD the model into `createSoftDeleteMiddleware` + /// @DtoReadOnly + /// @DtoEntityHidden + deletedAt BigInt @default(0) /// @description logical deletion. + + @@index([tenantPk]) } diff --git a/prisma/seed-test.ts b/prisma/seed-test.ts new file mode 100644 index 0000000..abea2ca --- /dev/null +++ b/prisma/seed-test.ts @@ -0,0 +1,188 @@ +import { Prisma, PrismaClient } from '@prisma/client'; +import { DefaultArgs } from '@prisma/client/runtime/library'; +import dotenv from 'dotenv'; +import dotenvExpand from 'dotenv-expand'; + +const myEnv = dotenv.config(); +dotenvExpand.expand(myEnv); + +async function main() { + const prisma = new PrismaClient({ + log: ['query', 'info', 'warn', 'error'], + }); + + return await prisma + .$transaction(async (prisma) => { + await prisma.$executeRaw`SELECT set_config('tenancy.bypass_rls', 'on', ${true})`; + await Promise.all(initTestData(prisma)); + }) + .catch((e) => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + // close Prisma Client at the end + await prisma.$disconnect(); + }); +} + +// execute the main function +main(); + +function initTestData( + prisma: Omit< + PrismaClient, + '$connect' | '$disconnect' | '$on' | '$transaction' | '$use' | '$extends' + >, +) { + const tenant: Prisma.TenantUncheckedCreateInput = { + id: 'TEST_TENANT_ID', + statusCode: 1, + balance: 1e20, + }; + + const userId = 'TEST_USER_ID'; + const u: Prisma.UserUncheckedCreateInput = { + id: userId, + name: 'test-user', + tenantPk: 1, + }; + + const ui: Prisma.UserIdentityUncheckedCreateInput = { + tenantPk: 1, + provider: 'local', + uid: 'test@callgent.com', + // Password123 + credentials: '$2b$10$JyBm6mzLb10z4SOH8Y6ZtOUwgNT6QSOGku/fILq8.uolQTvrRI4n.', + name: 'test-user', + email: 'test@callgent.com', + email_verified: true, + userPk: 1, + userId, + }; + + const authTokenDto: Prisma.AuthTokenUncheckedCreateInput = { + token: 'TEST-ONLY-API_KEY', + type: 'API_KEY', + payload: { + sub: userId, + aud: 'appKey', + }, + }; + + const callgentDto: Prisma.CallgentUncheckedCreateInput = { + id: 'TEST_CALLGENT_ID', + name: 'test-callgent', + tenantPk: 1, + createdBy: userId, + }; + + const callgentHubDto: Prisma.CallgentUncheckedCreateInput = { + id: 'TEST_HUB_CALLGENT_ID', + name: 'hub-callgent', + tenantPk: -1, + createdBy: userId, + }; + + const cepDto: Prisma.EntryUncheckedCreateInput = { + id: 'TEST_CEP_ID', + callgentId: 'TEST_CALLGENT_ID', + type: 'CLIENT', + adaptorKey: 'restAPI', + host: '', + tenantPk: 1, + createdBy: userId, + }; + + return [ + prisma.tenant + .upsert({ + where: { id: tenant.id }, + update: tenant, + create: tenant, + }) + .then(async (tenant) => { + console.log({ tenant }); + await prisma.user + .upsert({ + where: { id: u.id }, + update: u, + create: u, + }) + .then(async (user) => { + (ui as any).userId = user.id; + await prisma.userIdentity + .upsert({ + where: { + provider_uid_deletedAt: { + provider: ui.provider, + uid: ui.uid, + deletedAt: 0, + }, + }, + update: ui, + create: ui, + }) + .then((userIdentity) => console.log({ user, userIdentity })); + }); + }), + prisma.authToken + .upsert({ + where: { token: authTokenDto.token }, + update: authTokenDto, + create: authTokenDto, + }) + .then((authToken) => console.log({ authToken })), + prisma.callgent + .upsert({ + where: { id: callgentHubDto.id }, + update: callgentHubDto, + create: callgentHubDto, + }) + .then((callgent) => console.log({ callgent })), + prisma.callgent + .upsert({ + where: { id: callgentDto.id }, + update: callgentDto, + create: callgentDto, + }) + .then((callgent) => console.log({ callgent })), + prisma.entry + .upsert({ + where: { id: cepDto.id }, + update: cepDto, + create: cepDto, + }) + .then((cep) => console.log({ cep })), + addLlmCache( + prisma, + 'convert2Response', + 'Given the openAPI endpoint:\n{"endpoint": "GET /positions", "summary":"listPositions: List all job positions", "description":"Retrieve a list of all available job positions.", "params":{}, "responses":{"200":{"description":"A list of job positions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the job position"},"title":{"type":"string","description":"Title of the job position"},"description":{"type":"string","description":"Description of the job position"},"location":{"type":"string","description":"Location of the job position"},"requirements":{"type":"array","items":{"type":"string"},"description":"List of requirements for the job position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the job position was last updated"}}}}}}},"500":{"description":"Internal Server Error"}} }\n\ninvoked with the following request:\n<--- request begin ---\n[]\n--- request end --->\n\nwe receive below response content:\n<--- response begin ---\nWe are pleased to inform you about the following job positions available at our company:\r\n\r\n1. Software Engineer\r\n   - Description: Develop and maintain software applications.\r\n   - Location: San Francisco, CA\r\n   - Requirements:\r\n     - Bachelor\'s degree in Computer Science or related field\r\n     - 3+ years of experience in software development\r\n     - Proficient in Java or Python\r\n   - Created At: October 1, 2023, 12:00 PM\r\n   - Updated At: October 1, 2023, 12:00 PM\r\n\r\n2. Product Manager\r\n   - Description: Define product strategy and roadmap.\r\n   - Location: New York, NY\r\n   - Requirements:\r\n     - Bachelor\'s degree in Business or related field\r\n     - 5+ years of experience in product management\r\n     - Strong analytical and problem-solving skills\r\n   - Created At: October 2, 2023, 10:00 AM\r\n   - Updated At: October 2, 2023, 10:00 AM\r\n\r\n3. Data Scientist\r\n   - Description: Analyze and interpret complex data to assist in decision-making.\r\n   - Location: Seattle, WA\r\n   - Requirements:\r\n     - Master\'s degree in Data Science or related field\r\n     - 2+ years of experience in data analysis\r\n     - Proficient in Python and SQL\r\n   - Created At: October 3, 2023, 8:00 AM\r\n   - Updated At: October 3, 2023, 8:00 AM\r\n\r\nPlease review the details and let us know if you are interested in any of these positions.\r\n\r\nBest regards\r\n> From: "Callgent Invoker"\r\n> Date: Thu, Sep 5, 2024, 14:44\r\n> Subject: [Callgent] Function calling: \'GET /positions\' from Callgent test-callgent. #xY5WGrPph-jn2HHn4_aLi\r\n> To: "dev"\r\n> [image: https://hgggdgi.r.bh.d.sendibt3.com/tr/op/CYIv2yvoVWHCvjQ__eO-QxCY-FkqVvmIPWtQz6OMpAh55LRbe8vKq9aHSdoB0TikwlnXx5U6VsnDPf9637MS7iqb_BpOIcAej4CvQCx2hCA2upHiNg6mXVisqoSvihA0UM9ymGtL9RJsmgdosYMyVW2iHwS9m9UcLtnagkPE-HXmIE8L4EkAApInhajwSZuVsine_ltWzXmBzfU9jp6e5g]\r\n> Hello dev!\r\n> Somebody is calling: \'GET /positions\' from Callgent test-callgent. Below is the detailed request information:\r\n> Function Calling:\r\n> Name:GET /positions\r\n> Summary:listPositions: List all job positions\r\n> Description:Retrieve a list of all available job positions.\r\n> Possible Responses:\r\n> Response OK:A list of job positions\r\n> [{"id":"Unique identifier for the job position","title":"Title of the job position","description":"Description of the job position","location":"Location of the job position","requirements":["string"],"createdAt":"format: date-time, Timestamp when the job position was created","updatedAt":"format: date-time, Timestamp when the job position was last updated"}]\r\n> Response Internal Server Error:Internal Server Error\r\n> \r\n> \r\n> Thu, 05 Sep 2024 06:44:13 GMT\r\n\n--- response end --->\n\nPlease formalize the response content as a single-lined JSON object:\n{"statusCode": "the exact response code(integer) defined in API", "data": "extracted response value with respect to the corresponding API response schema, or undefined if abnormal response", "error": "message": "error message if abnormal response, otherwise undefined"}', + '{\n "statusCode": 200,\n "data": [\n {\n "id": "1",\n "title": "Software Engineer",\n "description": "Develop and maintain software applications.",\n "location": "San Francisco, CA",\n "requirements": [\n "Bachelor\'s degree in Computer Science or related field",\n "3+ years of experience in software development",\n "Proficient in Java or Python"\n ],\n "createdAt": "2023-10-01T12:00:00Z",\n "updatedAt": "2023-10-01T12:00:00Z"\n },\n {\n "id": "2",\n "title": "Product Manager",\n "description": "Define product strategy and roadmap.",\n "location": "New York, NY",\n "requirements": [\n "Bachelor\'s degree in Business or related field",\n "5+ years of experience in product management",\n "Strong analytical and problem-solving skills"\n ],\n "createdAt": "2023-10-02T10:00:00Z",\n "updatedAt": "2023-10-02T10:00:00Z"\n },\n {\n "id": "3",\n "title": "Data Scientist",\n "description": "Analyze and interpret complex data to assist in decision-making.",\n "location": "Seattle, WA",\n "requirements": [\n "Master\'s degree in Data Science or related field",\n "2+ years of experience in data analysis",\n "Proficient in Python and SQL"\n ],\n "createdAt": "2023-10-03T08:00:00Z",\n "updatedAt": "2023-10-03T08:00:00Z"\n }\n ]\n}', + ), + ]; +} + +async function addLlmCache( + prisma, + name: string, + prompt: string, + result: string, +) { + const llmCacheDto = { name, prompt, result }; + const model = 'meta-llama/llama-3.1-70b-instruct:free'; + + const ret = await prisma.llmCache.findFirst({ + where: { prompt, model, name }, + select: { pk: true }, + }); + + return ( + ret?.pk + ? prisma.llmCache.update({ + where: { pk: ret.pk }, + data: llmCacheDto, + }) + : prisma.llmCache.create({ data: { name, model, prompt, result } }) + ).then((lmCache) => console.log({ lmCache })); +} diff --git a/prisma/seed.ts b/prisma/seed.ts index 1ed67d7..5898c32 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,113 +1,146 @@ import { Prisma, PrismaClient } from '@prisma/client'; - -const prisma = new PrismaClient({ - log: ['query', 'info', 'warn', 'error'], -}); +import { DefaultArgs } from '@prisma/client/runtime/library'; async function main() { - const promises = []; - promises.push(...initData()); - if (process.env.SEED_TEST_DATA) promises.push(...initTestData()); - return Promise.all(promises); + const prisma = new PrismaClient({ + log: ['query', 'info', 'warn', 'error'], + }); + + return await prisma + .$transaction(async (prisma) => { + await prisma.$executeRaw`SELECT set_config('tenancy.bypass_rls', 'on', ${true})`; + await Promise.all(initData(prisma)); + }) + .catch((e) => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + // close Prisma Client at the end + await prisma.$disconnect(); + }); } // execute the main function -main() - .catch((e) => { - console.error(e); - process.exit(1); - }) - .finally(async () => { - // close Prisma Client at the end - await prisma.$disconnect(); - }); +main(); -function initData() { - return [...initEventListeners(), initLlmTemplates()]; +function initData( + prisma: Omit< + PrismaClient, + '$connect' | '$disconnect' | '$on' | '$transaction' | '$use' | '$extends' + >, +) { + return [ + ...initEventListeners(prisma), + initLlmTemplates(prisma), + ...initTags(prisma), + ...initModelPricing(prisma), + ]; } -function initEventListeners() { - let elId = 1, - priority = -100; +function initEventListeners( + prisma: Omit< + PrismaClient, + '$connect' | '$disconnect' | '$on' | '$transaction' | '$use' | '$extends' + >, +) { + let priority = -100; const els: Prisma.EventListenerUncheckedCreateInput[] = [ { - id: elId++, - uuid: 'CR-ADAPTOR-PREPROCESS', - srcUuid: 'GLOBAL', - tenantId: 0, + id: 'CR-ADAPTOR-PREPROCESS', + srcId: '*', + tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', - serviceName: 'EndpointsService', + serviceName: 'EntriesService', funName: 'preprocessClientRequest', + description: + 'Find the CEP, then preprocess the request, replace raw request.', createdBy: 'GLOBAL', priority: (priority += 100), }, { - id: elId++, - uuid: 'CR-LOAD-FUNCTIONS', - srcUuid: 'GLOBAL', - tenantId: 0, + id: 'CR-CEN-AUTH', + srcId: '*', + tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', - serviceName: 'BotletFunctionsService', - funName: 'loadFunctions', + serviceName: 'CallgentRealmsService', + funName: 'checkCenAuth', + description: 'Auth-check before centry invocation.', createdBy: 'GLOBAL', priority: (priority += 100), }, { - id: elId++, - uuid: 'CR-LOAD-TARGET', - srcUuid: 'GLOBAL', - tenantId: 0, + id: 'CR-LOAD-TARGET', + srcId: '*', + tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', serviceName: 'EventStoresService', - funName: 'loadTargetEvents', + funName: 'loadClientEventHistories', + description: 'Load all events of same taskId into event.histories', createdBy: 'GLOBAL', priority: (priority += 100), }, { - id: elId++, - uuid: 'CR-MAP-2-FUNCTION', - srcUuid: 'GLOBAL', - tenantId: 0, + id: 'CR-LOAD-ENDPOINTS', + srcId: '*', + tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', - serviceName: 'AgentsService', - funName: 'map2Function', + serviceName: 'EndpointsService', + funName: 'loadEndpoints', + description: 'Load all endpoints into event.context.endpoints', + createdBy: 'GLOBAL', + priority: (priority += 100), + }, + { + id: 'CR-GENERATE-WEBPAGE', + srcId: '*', + tenantPk: 0, + eventType: 'CLIENT_REQUEST', + dataType: 'Webpage', + serviceType: 'SERVICE', + serviceName: 'WebpageService', + funName: 'genWebpages', + description: + 'Generate webpage[view/model/view-model] from request & endpoints', createdBy: 'GLOBAL', priority: (priority += 100), }, { - id: elId++, - uuid: 'CR-MAP-2-ARGS', - srcUuid: 'GLOBAL', - tenantId: 0, + id: 'CR-MAP-2-ENDPOINTS', + srcId: '*', + tenantPk: 0, eventType: 'CLIENT_REQUEST', dataType: '*', serviceType: 'SERVICE', - serviceName: 'SandBoxService', - funName: 'map2Args', + serviceName: 'ScriptAgentService', + funName: 'map2Endpoints', + description: + 'Map the request to endpoints and corresponding args, put into event.context.map2Endpoints and event.context.endpoints[0]', + createdBy: 'GLOBAL', + priority: (priority += 100), + }, + { + id: 'CR-SCRIPT-RUNNER', + srcId: '*', + tenantPk: 0, + eventType: 'CLIENT_REQUEST', + dataType: '*', + serviceType: 'SERVICE', + serviceName: 'ScriptRunnerAgent', + funName: 'runAndFix', + description: + 'Run and fix script until success, return the final response', createdBy: 'GLOBAL', priority: (priority += 100), }, - // { - // id: elId++, - // uuid: 'PR-MAP-2-ARGS', - // srcUuid: 'GLOBAL', - // tenantId: 0, - // eventType: 'CLIENT_REQUEST', - // dataType: '*', - // serviceType: 'SERVICE', - // serviceName: 'SandBoxService', - // funName: 'map2Args', - // createdBy: 'GLOBAL', - // priority: (priority = 0), - // }, ]; return els.map((el) => @@ -121,198 +154,739 @@ function initEventListeners() { ); } -async function initLlmTemplates() { +async function initLlmTemplates( + prisma: Omit< + PrismaClient, + '$connect' | '$disconnect' | '$on' | '$transaction' | '$use' | '$extends' + >, +) { const llmTemplates: Prisma.LlmTemplateUncheckedCreateInput[] = [ + // { + // name: 'api2Function', + // prompt: `Please convert below API doc of format {{=it.format}}: + // { "{{=it.apiName}}": {{=it.apiContent}} } + + // into a js function, the function must be as follows: + // // the \`invoker\` function do the real invocation + // async (invoker: {{=it.handle}}, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; } + + // please generate the js function with **full implementation and error handling**! output a single-line json object: + // {"epName":"endpoint name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}`, + // }, { - id: 1, - name: 'api2Function', - prompt: `Please convert below API doc of format {{=it.format}}: -{ "{{=it.apiName}}": {{=it.apiContent}} } + name: 'map2Endpoint', + prompt: `given below service endpoint: +service \`{{=it.callgentName}}\` { {{~ it.endpoints :ep }} + "{{=ep.name}}": {"summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} }, +{{~}}} -into a js function, the function must be as follows: -// the \`invoker\` function do the real invocation -async (invoker: {{=it.handle}}, ...apiParams) {...; const json = await invoker(...); ...; return apiResult; } +Please generate js function req2Args(request) to map below request into endpoint args following the openAPI params schema: +const request_object = {{=JSON.stringify(it.req)}}; -please generate the js function with **full implementation and error handling**! output a single-line json object: -{"funName":"function name", "params":["invoker", ...apiParams]"documents":"formal js function documentation with description of params and response object with **all properties elaborated** exactly same as the API doc", "fullCode":"(invoker, ...)=>{...; const json = await invoker(...); ...; return apiResult;}"}`, +output single-line json object below: +{ "req2Args": "Full code of js function req2Args(request_object):ArgsMap, to map request into endpoint args. ArgsMap is a k-v map of vars in endpoint.params(no conflict keys, no more props than it), all values just extracted from request_object, but no direct constant in code from request_object, all calculated from request_object props as variables!" }, +output just json no explanation`, }, { - id: 2, - name: 'map2Function', - prompt: `given below service functions: -class {{=it.botletName}} {{{~ it.botletFunctions :fun }} - "function name: {{=fun.name}}": {"params":[{{=fun.params}}], "documents":"{{=fun.documents}}"}, -{{~}} + name: 'chooseEndpoints', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` + +## Objectives: +You are an expert in analyzing OpenAPI documents and understanding user requirements. Your task is to help the user identify which APIs from the provided OpenAPI document are necessary to orchestrate a script to fulfill user task goal. +1. Understand the Requirements: Carefully read the conversations and comprehend the user's requirements +2. Analyze the OpenAPI Document: Review the provided OpenAPI document to understand the available endpoints, their functionalities, request parameters, and response structures +3. Match Requirements to APIs: Identify which APIs from the OpenAPI document are relevant to the user's requirements, don't imagine non-existing endpoint! +4. Explain the Purpose: For each identified API, explain its purpose and how it meets the user's needs +5. It's very likely there is not enough APIs to fulfill user requirements, place the purposes into \`unaddressedAPI\` list + +## Deliverables: +output complete purposes in json format: +\`\`\`json +{ + "unaddressedAPI":[{ + "usedFor":"Explain the unaddressedAPI Purpose, which need an external API endpoint, but no appropriate one found" + "purposeKey":"unique purpose key", + "needExternalAPI": "boolean. true: if external service openAPI is needed; Note: if can be handled by local script code, please set to false" + },..], + "usedEndpoints":[{ + "usedFor":"Explain the Purpose of the endpoint, double check it matches with user goal", + "purposeKey":"unique purpose key", + "epName":"the original name of chosen endpoint to be invoked. don't fake it!", + "description":"endpoint functionality descriptions sourced only from the openAPI doc" + },..] } -and an service \`invoker\` function. +\`\`\` + +### Notes: +- Be precise and detailed in your analysis, to ensure the output list can fulfill all user's requirements +- it's ok if some chosen endpoints are not finally used +- **Don't** choose wrong endpoints which may cause unexpected loss, better miss than wrong! +- \`epName\` must exist in \`The given service endpoint APIs\`, better empty than fake!`, + }, + { + name: 'reChooseEndpoints', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` +3. **The split \`usedFor\` purposes to fulfill user goal**: + \`\`\`json + {{=JSON.stringify(it.purposes)}} + \`\`\` + +## Objectives: +You are an expert in analyzing OpenAPI documents and understanding user requirements. Your task is to help the user identify which APIs from the provided OpenAPI document are necessary to orchestrate a script to fulfill user task goal. +1. Understand the Requirements: Carefully read the conversations and comprehend the user's requirements +2. Analyze the OpenAPI Document: Review the provided OpenAPI document to understand the available endpoints, their functionalities, request parameters, and response structures +3. Examine the split \`usedFor\` purposes: Are the purposes complete enough to meet all user requirements +4. Address which endpoint is best suited for each \`usedFor\` purpose, don't imagine **non-existing** endpoint! +5. It's very likely there is no appropriate endpoint for \`usedFor\` purpose, move it from \`usedEndpoints\` into \`unaddressedAPI\` list -Please choose one function to fulfill below request: +## Deliverables: +output complete purposes in json format: +\`\`\`json { -{{ if (it.funName) { }}"requesting function": "{{=it.funName}}", -{{ } }}"request from": "{{=it.cepAdaptor}}", -"request_object": {{=JSON.stringify(it.req)}}, + "unaddressedAPI":[{ + "usedFor":"Explain the unaddressedAPI Purpose, which need an external API endpoint, but no appropriate one found" + "purposeKey":"unique purpose key", + "needExternalAPI": "boolean. true: if external service API is needed; false: if can be handled by local script code" + },..], + "usedEndpoints":[{ + "usedFor":"Explain the Purpose of the endpoint, double check it matches with user goal", + "purposeKey":"unique purpose key", + "epName":"the original name of chosen endpoint to be invoked. don't fake it!", + "description":"endpoint functionality descriptions sourced only from the openAPI doc" + },..] +} +\`\`\` + +### Notes: +- Be precise and detailed in your analysis, to ensure the output list can fulfill all user's requirements +- it's ok if some chosen endpoints are not finally used +- **Don't** choose wrong endpoints which may cause unexpected loss, better miss than wrong! +- Double check \`epName\` exists in \`The given service endpoint APIs\`, better empty than fake!`, + }, + { + name: 'confirmEndpoints', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` +3. **Per API Perspective Split Purposes**: + \`\`\`json + {{=JSON.stringify(it.purposes)}} + \`\`\` + +## Objectives: +Analyze the provided user requirements in conversation, and the split purposes per API perspective to achieve the user requirements goals, + +Opt the best endpoint for each item in \`optEndpoints\` to fulfill \`usedFor\` purpose. + +## Deliverables: +Output all purposes from \`optEndpoints\` and \`confirmedEndpoints\` in json array: +\`\`\`json +[{ + "purposeKey": "unique purpose key", + "usedFor": "Explain the Purpose of the endpoint, double check it matches with user goal", + "epName": "the original name of chosen endpoint to be invoked. don't fake it!", + "description": "endpoint functionality descriptions sourced only from the openAPI doc" +},..] +\`\`\` + +Note: Ensure accuracy and avoid assumptions beyond the provided info`, + }, + { + name: 'confirmEndpointsArgs', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` +3. **Chosen OpenAPI Endpoints**: A list of endpoints needed to fulfill the user requirements: + \`\`\`json + {{=JSON.stringify(it.purposes)}} + \`\`\` + +## Objectives: +Analyze user requirements from conversations and uploaded files alongside the chosen OpenAPI endpoints. Evaluate the inputs for sufficiency and identify any missing parameters necessary to fulfill the task. + +Your goal is to: +1. Extract all required arguments from user information to prepare for invoking the endpoints: +2. Identify gaps where: + - **Missing information**: User-provided information is insufficient to invoke chosen endpoints + - **Ambiguous**: user provided info is unclear or contradictory + - **Missing conversion**: args info is sufficient, but additional mapping-dictionaries or APIs are required(but absent) to convert the user data into endpoint parameter type/value, e.g.: mapping to enumerations, converting name to entity ID, converting keys to values, etc + +## Deliverables: +Output the argument sourcing in JSON format: +\`\`\`json +[{ + "purposeKey": "", + "args": [{ + "argName": "Endpoint full path arg name, e.g.: \`requestBody.prop1.list2.prop3\` or \`parameters.prop4\`. If the parameter/requestBody is an object, drill down its properties and repeat the analysis for each property", + "retrieved-from-API-calls": ["If some values source from preceding endpoints call responses, list of \`purposeKey\`s invoked to retrieve the values", "leave empty if needn't"], + "extracted-from-user-info-or-files": { + "flag": "boolean: true if some values source from user-provided info/files", + "userProvided": "if flag true, give description of which user info or files to source this value; Encourage **best guess** of arg source from user info", + "needConfirm": "if flag true, send user this question alone to clarify. Please least bother user for best user experience. Leave empty if needn't confirm" + }, + "mapping": { + "from":"extracted info type and edge conditions","to":"endpoint parameter type and constraints","mismatch":"boolean: whether \`from\` mismatches \`to\`", + "conversion": { + "steps":["if mismatch, steps to convert extracted info into valid endpoint arg"], + "missing":"boolean: true if use info is sufficient but, mismatch=true and mapping-dictionaries or API is **not explicitly specified** anywhere, which makes it impossible to convert" + } + }, + },..] +},..] +\`\`\` + +### Notes: +- Ensure endpoint purposes match user goals precisely +- Ensure all arg values are sourced from real data as user provided. Do not use imaginary/fake/example/mock/test data as arg values + - Please Don't make assumption on any missing info, ask the user directly + - There must be at least one source for each argument +- One arg may have multiple sources. remove json node flagged as false +- at least one source must be identified: retrieved-from-API-calls.length>0 or extracted-from-user-info-or-files.flag is true + - don't list optional args, only list args that are necessary to fulfill the task`, + }, + { + name: 'reConfirmEndpointsArgs', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` +3. **Chosen OpenAPI Endpoints**: A list of endpoints needed to fulfill the user requirements: + \`\`\`json + {{=JSON.stringify(it.purposes)}} + \`\`\` +4. **Uncertain Endpoint arguments to Analyze**: + \`\`\`json + {{=JSON.stringify(it.reConfirmArgs)}} + \`\`\` + +## Objectives: +Analyze user requirements from conversations and uploaded files alongside the chosen OpenAPI endpoints. Evaluate the inputs for sufficiency and identify any missing parameters necessary to fulfill the task. + +Your goal is to: +1. Analyze the **Uncertain** args to prepare for invoking the endpoints: +2. Identify gaps where: + - **Missing information**: User-provided information is insufficient to invoke chosen endpoints + - **Ambiguous**: user provided info is unclear or contradictory + - **Missing conversion**: args info is sufficient, but additional mapping-dictionaries or APIs are required(but absent) to convert the user data into endpoint parameter type/value, e.g.: mapping to enumerations, converting name to entity ID, converting keys to values, etc + +## Deliverables: +Output the Uncertain arguments sourcing in JSON format: +\`\`\`json +[{ + "purposeKey": "", + "args": [{ + "argName": "Endpoint full path arg name, e.g.: \`requestBody.prop1.list2.prop3\` or \`parameters.prop4\`. If the parameter/requestBody is an object, drill down its properties and repeat the analysis for each property", + "retrieved-from-API-calls": ["If some values source from preceding endpoints call responses, list of \`purposeKey\`s invoked to retrieve the values", "leave empty if needn't"], + "extracted-from-user-info-or-files": { + "flag": "boolean: true if some values source from user-provided info/files", + "userProvided": "if flag true, give description of which user info or files to source this value; Encourage **best guess** of arg source from user info", + "needConfirm": "if flag true, send user this question alone to clarify. Please least bother user for best user experience. Leave empty if needn't confirm" + }, + "mapping": { + "from":"extracted info type and edge conditions","to":"endpoint parameter type and constraints","mismatch":"boolean: whether \`from\` mismatches \`to\`", + "optional":"boolean: where parameter optional or has default value", + "conversion": { + "steps":["if mismatch, steps to convert extracted info into valid endpoint arg"], + "missing":"boolean: true if use info is sufficient but, mismatch=true and mapping-dictionaries or API is **not explicitly specified** anywhere, which makes it impossible to convert" + } + }, + },..] +},..] +\`\`\` + +### Notes: +- Only analyze the **Uncertain** args, which are not clear or contradictory, or missing conversion +- Ensure all arg values are sourced from real data as user provided. Do not use imaginary/fake/example/mock/test data as arg values + - There must be at least one source for each argument +- One arg may have multiple sources. remove json node flagged as false`, + }, + { + name: 'generateTaskScript', + prompt: `## Input: +1. **User Requirements**: All Information are provided in conversations for user task goal{{ if (it.files.length) { }} + - **User uploaded files**: files mentioned in conversation are placed in current dir \`./upload\` of local disk{{ } }} +2. **OpenAPI Documentation**: documentation for the backend service of chosen endpoints: + \`\`\`json + { + "serviceName": "{{=it.callgent.name}}", + "summary":"{{=it.callgent.summary}}", + "instruction":"{{=it.callgent.instruction}}", + "endpoints": [{{~ it.endpoints :ep }} + {"epName":"{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + ] + } + \`\`\` +3. **Chosen OpenAPI Endpoints**: A list of endpoints needed to fulfill the user requirements: + \`\`\`json + {{=JSON.stringify(it.purposes)}} + \`\`\` +4. **Endpoint Argument Hints**: + \`\`\`json + {{=JSON.stringify(it.argsHints)}} + \`\`\` + +## Objectives: +You are a software developer focusing on code implementation with high performance and fault tolerance. Given user requirements from conversations and uploaded files alongside the chosen OpenAPI endpoints. + +Generate a TypeScript class on node18+ that adheres to the following criteria: +1. **Clear Class Design**: Choose a self-explanatory class name that reflects its purpose based on the user requirements. then default export this class +2. **Predefined Members**: + - the default no-argument constructor should be defined + - Primary Entry Point: the \`async execute(): Promise\` method as the main entry point for executing the required task + - return the final result of the task execution, which will be put into conversation history, for further user actions + - if task result is too large, only output the summary, and save the full result into a file under \`./result\` dir + - Persistent Class Field: define public \`resumingStates\` object structure to persist via \`JSON.stringify\` in db, enabling the task instance being reloaded to resume from the last iteration stopping point seamlessly by calling reentrant \`execute()\` + - this is the only field restored to resume the task, task runner will save/load it for you automatically + - e.g., a \`processedItems\` or \`currentIdx\` may be defined in this object to skip processed items on retry + - Endpoint Invoke Helper: an predefined public member function \`invokeService(purposeKey: string, args:{parameters?:{[paramName:string]:any},requestBody?:any}): Promise\` + - don't define this method in the class body, the task runner will inject the implementation for you + - this method just relays req/resp, please handle validations/exceptions/retry by yourself +3. **Modular and Reusable Code**: Implement well-structured member functions to encapsulate specific logic, ensuring the class is modular, reusable, and easy to maintain +4. **Best Performance**: Estimate heavy resources/io/mem/cpu loads, and optimization strategies, especially preload/cache frequently accessed resources/handles out of loops as local vars or files: + - disk space is big enough, temp files may be created under \`./tmp\`, you needn't clean them, task runner does this after all iterations + - check temp files existence on reentrant calls + - parallel processing iteration items in batch is critical for speed, estimate a batch size + - prevent performance/lock issues on accessing the same resource the same time in batch +5. **Robust and Fault-Tolerant**: + - Thoroughly analyze the input, output, exceptions, and side effects of all dependent API endpoints and resources + - Handle edge cases and values and errors gracefully to ensure reliability, including args validation, response type checking, error handling + - strictly use \`Optional Chaining Operators\` to prevent foolish npe errors + - Transaction isolation for disk operations, especially in below cases: + - concurrent write access + - failover and cleanup on errors, since the task runner will retry the task after script fix + - caching on reentrant calls, if recall after errors, make sure the cache is valid +6. Log essential info, keep logs concisely and readable, no massive logs output: + - \`console.info\` for progress \`indices/totals\` + - \`console.warn\` on failed items, and only errors critical failures + - \`console.error\` text will be used to fix the script code and retry execution, so make it clear and concise, no unnecessary info! + +## Deliverables: +1. Describe optimization strategies based on estimated heavy resources loads. All in pullet items. +2. Estimated total execution time range in code block: +\`\`\`text +short desc in one line +\`\`\` +3. Describe the resumingStates object structure for reentrant task resuming in bullet items, only define essential props +4. Generate the class code(no usage code) in main.ts, which can be directly executed without any modification(so output full code): +\`\`\`typescript +// os independent full code +\`\`\` +5. package.json + - don't import Node.js built-in modules + - prevent using outdated/deprecated packages or versions, better use the latest stable versions updated within the last 3 years + - script is run with \`tsx\` +\`\`\`json +\`\`\``, + }, + { + name: 'convert2Response', + prompt: `Given the openAPI endpoint: +\`\`\`json +{"endpoint": "{{=it.ep.name}}""{{=it.ep.summary?', "summary":'+it.ep.summary:''}}", {{=it.ep.description ? '"description":"'+it.ep.description+'", ':''}}"parameters":{{=JSON.stringify(it.ep.params.parameters)}}, {{ if (it.ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(it.ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(it.ep.responses)}} } +\`\`\` + +invoked with the following request: +\`\`\`json +{{=JSON.stringify(it.requestArgs)}} +\`\`\` + +we receive below response content: +<--- response begin ---> +{{=it.resp}} +<--- response end ---> + +Please formalize the response content as a single-lined JSON object: +{"status": "the exact response code(integer) defined in API", "data": "extracted response value with respect to the corresponding API response schema, or undefined if abnormal response", "statusText": "status text if abnormal response, otherwise undefined"} +Output:`, + }, + { + name: 'summarizeEntry', + prompt: `## Objectives: +Given below API service{{ if (!it.totally) { }} changes, some added/removed endpoints{{ } }}:, please re-summarize just for the API service \`summary\` and \`instruction\`, for user to quickly know when and how to use this service based only on these 2 fields(you may ignore those trivial endpoints like auth/users/etc, focusing on those that are more business critical) + +## Deliverables: +output a single-lined JSON object: +{ "totally": "boolean: {{ if (it.totally) { }}set to empty{{ }else{ }}set to true if you need to reload all service endpoints to re-summarize, else left empty.{{ } }}", "summary": "Concise summary of \`WHEN\`: to let users quickly understand the core business concepts and in what scenarios to use this service(don't mention service name since it may change). leave empty if \`totally\` is true. 3k chars most", "instruction": "Concise instruction of \`HOW\`: to let users know roughly on how to use this service: operations described, etc. leave empty if \`totally\` is true. 3k chars most" } + +## Input: +Service \`{{=it.entry.name}}\` { {{ if (it.totally) { }}{{~ it.news : ep }} + "{{=ep.name}}": {"summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} +{{ } else { }} + summary: '{{=it.entry.summary}}', + instruction: '{{=it.entry.instruction}}', + endpoints: { {{ if (it.news && it.news.length) { }} + existing: {...}, + added: { {{~ it.news : ep }} + "{{=ep.name}}": {"summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + },{{ } }}{{ if (it.olds && it.olds.length) { }} + removed: { {{~ it.olds : ep }} + "{{=ep.name}}": {"summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }}"responses":{{=JSON.stringify(ep.responses)}} },{{~}} + },{{ } }} + }{{ } }} } -and code for request_object to chosen function args mapping. if any data missing/unclear/ambiguous from request_object to invocation args, please ask question to the caller in below json.question field. -output a single-line json object: -{ "funName": "the function name to be invoked", "params":"param names of the chosen function", "mapping": "the js function (invoker, request_object)=>{...;return functionArgsArray;}, full implementation to return the **real** args from request_object to invoke the chosen service function. don't use data not exist or ambiguous in request", "question": "question to ask the caller if anything not sure or missing for request to args mapping, *no* guess or assumption of the mapping. null if the mapping is crystal clear." }"}`, +## Output +the json result is: +`, + }, + { + name: 'summarizeCallgent', + prompt: `## Objectives: +Given below API service{{ if (!it.totally) { }} changes, some added/removed entries{{ } }}:, please re-summarize just for the API service \`summary\` and \`instruction\`, for user to quickly know when and how to use this service based only on these 2 fields, + +## Deliverables: +output a single-lined JSON object: +{ "totally": "boolean: {{ if (it.totally) { }}set to empty{{ }else{ }}set to true if you need to reload all service entries to re-summarize, else left empty.{{ } }}", "summary": "Concise summary of \`WHEN\`: to let users quickly understand the core business concepts and in what scenarios to use this service(don't mention service name since it may change). leave empty if \`totally\` is true. 3k chars most", "instruction": "Concise instruction of \`HOW\`: to let users know roughly on how to use this service: operations described, etc. leave empty if \`totally\` is true. 3k chars most" } + +## Input: +Service \`{{=it.callgent.name}}\` { {{ if (it.totally) { }}{{~ it.news : ep }} + "Entry#{{=ep.pk}}": {"summary":"{{=ep.summary}}", "instruction":"{{=ep.instruction}}"},{{~}} +{{ } else { }} + summary: '{{=it.callgent.summary}}', + instruction: '{{=it.callgent.instruction}}', + entries: { {{ if (it.news && it.news.length) { }} + existing: {...}, + added: { {{~ it.news : ep }} + "Entry#{{=ep.pk}}": {"summary":"{{=ep.summary}}", "instruction":"{{=ep.instruction}}"},{{~}} + },{{ } }}{{ if (it.olds && it.olds.length) { }} + removed: { {{~ it.olds : ep }} + "Entry#{{=ep.pk}}": {"summary":"{{=ep.summary}}", "instruction":"{{=ep.instruction}}"},{{~}} + },{{ } }} + }{{ } }} +} + +## Output +the json result is: +`, + }, + { + name: 'genVue1Route', + prompt: `Given requirement: +{ "description": "{{=it.requirement}}" } + +You need to generate a Vue3+Pinia app for user to interact with backend service APIs: +Service \`{{=it.callgent.name}}\` { "summary": "{{=it.callgent.summary}}", "instruction": "{{=it.callgent.instruction}}", "endpoints": {...} }, + +There are 6 steps to generate code to fulfil the requirement: +1. generate \`/src/router/index.js\`, only necessary \`views\` for the requirement +2. define necessary Vue \`components\` for each view, associate service endpoints; +3. generate \`/src/components/*.vue\` code, which may import \`/src/stores/*.js\`; +4. generate \`/src/stores/*.js\` used by components, bind \`actions\` to service endpoints. +5. generate \`/src/views/*.vue\` code, which combines several \`/src/components/*.js\`, no any import of \`/src/stores/*.js\`. +6. generate /src/App.vue, /src/main.js + +Now let's goto #1, as world-class frontend expert, please design necessary simple view pages, output a single-lined json array of routes: +[{ "name": "just same as component name", "component": "component name, unique in this array, must suffix with 'View'", "path": "route path", "file": "/src/views/{file-name}.vue", "title":"view title", "summary":"brief summary of use cases", "instruction": "Description of interactive prototype(layout, elements, operations, dynamic effects, etc) to guide developer to implement", "distance":"integer to indicate distance of the view to root view, 0 means root" }]`, + }, + // TODO vue-i18n: src/i18n.js, app.use(i18n); + { + name: 'genVue2Components', + prompt: `For Vue3+Pinia app with views: +[ + {"name":"{{=it.view.name}}","path":"{{=it.view.path}}","file":"{{=it.view.file}}","title":"{{=it.view.title}}","summary":"{{=it.view.summary}}","instruction":"{{=it.view.instruction}}},{{~it.otherViews:ov}} + {"name":"{{=ov.name}}","path":"{{=ov.path}}","title":"{{=ov.title}}","summary":"{{=ov.summary}}"},{{~}} +], +and existing UI components: +{{=JSON.stringify(it.components)}}, + +Depending on the installed packages: [{{=it.packages}}], use these components libraries for best practice, +As world-class frontend architect, please design simple components for entire view \`{{=it.view.name}}\`, which are back-ended by service endpoints: [{{~ it.endpoints :ep }} + { "id": "{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters":{{=JSON.stringify(ep.params.parameters)}}, {{ if (ep.params.requestBody) { }}"requestBody":{{=JSON.stringify(ep.params.requestBody)}}, {{ } }} },{{~}} +], +Note: all API params are already documented here! Components access them only via store states/actions. + +Please refine existing or add new components for view \`{{=it.view.name}}\`, output a single-lined json object: +{ [FormalComponentName: string]: {"file": "/src/components/{file-name}.vue", "endpoints":["endpoint ids(METHOD /resource/url), which **may** be used by the component", "may empty array" ..], "summary":"precise summary to let developers correctly use the component without reading the code!", "instruction": "Description of interactive prototype(layout, elements, operations, dynamic effects, etc) to guide developer to implement. ignore auth logic, which is handled outside of the VUE app" }} +After design before output, please redesign to meet rules: +- Design component simple but as few as possible: don't add new component if existing in installed packages! +- Design component independent: prevent embedding one to another! +- pass data among components only via shared pinia stores, not props/events! +- double check independent requirements: preventing embedding, passing data via stores! +- FormalComponentName must suffix with 'Component' +- strictly prohibit importing any stores into \`{{=it.view.name}}\` view +- using ui components in installed packages is strongly encouraged over creating our own +- Not missing any components or service endpoints for the \`{{=it.view.name}}\` view functionalities, yet make the view as simple as possible +- Not including functionalities from other views, we'll design them later +- component props are prohibited, all state goes into pinia stores +- It's OK to cut functionalities to make components only uses API params listed above! +- if \`endpoints\` empty, please describe brief store actions logic in \`instruction\` +- describe interactive dynamics between components in \`instruction\``, + }, + // { + // name: 'genVue3Apis', + // prompt: `Given proposed UI components of a Vue3+Pinia app: [{{~ it.compsList :comp }} + // { "name": "{{=comp.name}}", "props": {{=JSON.stringify(comp.props)}}, "summary":"{{=comp.summary}}", "instruction": "{{=comp.instruction}}" },{{~}} + // ], + + // Back-ended with the following service APIs: + // Service \`{{=it.callgent.name}}\` { "summary": "{{=it.callgent.summary}}", "instruction": "{{=it.callgent.instruction}}", "endpoints": [{{~ it.endpoints :ep }} + // { "id": "{{=ep.name}}", "summary":"{{=ep.summary}}", {{=ep.description ? '"description":"'+ep.description+'", ':''}}"parameters": {{=JSON.stringify(ep.params)}} },{{~}} + // ] + // }, + + // As world-class frontend expert, please adjust/remove components to fit APIs params, even if it means reducing the required functionality! + // Note: all API params are totally listed above! + // output a single-lined json object: + // {[ComponentName: string]: {"endpoints":["endpoint ids(METHOD /resource/url), which \`may\` be used by the component", ..], "removed": "mark current component as removed if APIs can't fulfill the functionality, then set component's other attributes to empty.", "props": ["similar to function params. please use store state as possible", "must remove unsupported props, may empty", ..], "summary":"Adjusted summary", "instruction": "Adjusted instruction"} }`, + // }, + { + name: 'genVue3Component', + prompt: `For Vue3+Pinia app with components structure: +{ + "relatedComponents": {{=JSON.stringify(it.components)}}, + "relatedViews": {{=JSON.stringify(it.relatedViews)}}, + "otherViews": {{=JSON.stringify(it.otherViews)}}, + "existingStores": {{=JSON.stringify(it.stores)}}, + "installedPackages": {{=JSON.stringify(it.packages)}} +}; + +As world-class frontend expert, please write \`{{=it.components[0].file}}\` full code based on it's instruction and endpoint APIs(especially params). +the component must import relevant \`stores/*.js\` for Pinia models and actions, needn't generate stores code in current step. +output a single-lined json object: +{ "packages":["additional real packages(format: package@version) imported by current file","make sure packages exists!"], "importedComponents":["directly imported components"], "importedStores": [{"file": "/src/stores/{file-name}.js", "name":"the exported store name, must prefix with 'use'", "state": {"State JSON object used by current component, list detailed props used by component for each entity(give example object in each arrays, if prop is complex type(like File),express as string of js). don't list props unused by current component. better use existing, add new if really need"}, "actions": ["Actions(full params/return in ts function signature format) used by current component, especially wrap APIs into actions. better use existing, add new if really need", "don't list actions not used by current component", ..], "getters": [{"name": "name of derived state used by current component", "code": "(state) => { /*full js code to return derived value*/ }"}], ..]}, ..], "spec": {"props":[{"name":"", "type":"primitive types only!; prohibit to bind props with state or variables, only static constant values!"}],"slots":[{"name":"","summary":""}],"importedComponents":["directly imported self-defined ComponentName, only list components from \`/src/components/*.vue\`!"]}, "code": "formatted lines of full(don't ignore any code, since we put the code directly into project without modification) implementation code for \`{{=it.components[0].file}}}\`. pay special attentions to interaction states/error handling/validations; Only access endpoint APIs through store actions" } +after generate before output, please double-check the result json meets all rules: +- all arrays may be \`[]\`, array items must not empty values! +- don't add \`installedPackages\` into $.packages, only new ones; prohibit version conflicts! +- $.state are all simple example instances, make sure all props are affordable from service endpoints +- $.actions is array of strings +- add only derived(need calculation, prohibit just aliases) state into \`getters\`; don't list getters unused by current component; better use existing, add new if really need +- $.code must not any typescript; using components from installed packages are strongly encouraged +- use vue3 best practices; '