From fd71287080ddb5009e7e7b695f3315144351b6c2 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 11:58:20 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat(@142vip/nest-redis):=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E9=87=8D=E5=91=BD=E5=90=8D=E4=B8=BA`NestRedisModule`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nest-redis/package.json | 7 ++++--- packages/nest-redis/src/core/redis.module.ts | 7 +++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/nest-redis/package.json b/packages/nest-redis/package.json index c5cf8f9a..cfdc5ab3 100644 --- a/packages/nest-redis/package.json +++ b/packages/nest-redis/package.json @@ -45,10 +45,11 @@ "test": "npx jest", "test:coverage": "npx jest --coverage" }, + "peerDependencies": { + "@142vip/nest": "workspace:*" + }, "dependencies": { - "@142vip/redis": "workspace:*", - "@nestjs/common": "11.1.7", - "@nestjs/core": "11.1.7" + "@142vip/redis": "workspace:*" }, "publishConfig": { "access": "public", diff --git a/packages/nest-redis/src/core/redis.module.ts b/packages/nest-redis/src/core/redis.module.ts index 4ad533e0..9983a486 100644 --- a/packages/nest-redis/src/core/redis.module.ts +++ b/packages/nest-redis/src/core/redis.module.ts @@ -1,10 +1,9 @@ import { RedisConfig } from '@142vip/redis' -import { DynamicModule, Module } from '@nestjs/common' +import { DynamicModule } from '@nestjs/common' import { REDIS_CLIENT_TOKEN } from './redis.constants' import { RedisService } from './redis.service' -@Module({}) -export class RedisModule { +export class NestRedisModule { public static register(config: RedisConfig): DynamicModule { const redisService = new RedisService(config) const providers = [ @@ -18,7 +17,7 @@ export class RedisModule { }, ] return { - module: RedisModule, + module: NestRedisModule, providers, exports: providers, global: true, From 73f2653652e75822f473cbab662a7c5ee304218a Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 12:00:18 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat(@142vip/nest):=20=E9=94=81=E5=AE=9A?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E7=89=88=E6=9C=AC=EF=BC=8C=E6=90=AD=E5=BB=BA?= =?UTF-8?q?=E5=9F=BA=E7=A1=80Nest=E9=A1=B9=E7=9B=AE=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E5=9F=BA=E5=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nest/README.md | 35 ++++++++++++++++++++++ packages/nest/build.config.ts | 13 --------- packages/nest/index.d.ts | 1 - packages/nest/jest.config.ts | 15 ++++++++++ packages/nest/package.json | 47 ++++++++++++++++++++---------- packages/nest/src/app.module.ts | 3 ++ packages/nest/src/index.ts | 2 +- packages/nest/test/starter.spec.ts | 7 +++++ packages/nest/tsconfig.json | 13 +++++++-- 9 files changed, 102 insertions(+), 34 deletions(-) delete mode 100644 packages/nest/build.config.ts delete mode 100644 packages/nest/index.d.ts create mode 100644 packages/nest/jest.config.ts create mode 100644 packages/nest/src/app.module.ts create mode 100644 packages/nest/test/starter.spec.ts diff --git a/packages/nest/README.md b/packages/nest/README.md index 2cf2f9fe..7dc88130 100644 --- a/packages/nest/README.md +++ b/packages/nest/README.md @@ -2,6 +2,8 @@ [![NPM version](https://img.shields.io/npm/v/@142vip/nest?labelColor=0b3d52&color=1da469&label=version)](https://www.npmjs.com/package/@142vip/nest) +全面拥抱 [NEST.JS V11.1.7](https://docs.nestjs.com/)框架 + ## 安装 ```shell @@ -11,6 +13,39 @@ npm install @142vip/nest pnpm i @142vip/nest ``` +## 依赖版本 + +```json5 +{ + "dependencies": { + "@nestjs/common": "11.1.7", + "@nestjs/core": "11.1.7", + "@nestjs/platform-express": "11.1.7", + "class-transformer": "0.5.1", + "class-validator": "0.14.2", + "fancy-log": "2.0.0", + "nest-typed-config": "2.10.1", + "nestjs-pino": "4.4.1", + "reflect-metadata": "0.2.2" + }, + "devDependencies": { + "@nestjs/cli": "11.0.10", + "@nestjs/schematics": "11.0.9", + "@nestjs/testing": "11.1.7", + "@types/express": "5.0.0", + "@types/fancy-log": "2.0.2", + "@types/jest": "30.0.0", + "@types/supertest": "6.0.2", + "source-map-support": "0.5.21", + "supertest": "7.0.0", + "ts-jest": "29.2.5", + "ts-loader": "9.5.2", + "ts-node": "10.9.2", + "tsconfig-paths": "4.2.0" + } +} +``` + ## 参考资料 - 官方文档: diff --git a/packages/nest/build.config.ts b/packages/nest/build.config.ts deleted file mode 100644 index 0f679789..00000000 --- a/packages/nest/build.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: [ - 'src/index', - ], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: true, - }, -}) diff --git a/packages/nest/index.d.ts b/packages/nest/index.d.ts deleted file mode 100644 index 6f39cd49..00000000 --- a/packages/nest/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './src' diff --git a/packages/nest/jest.config.ts b/packages/nest/jest.config.ts new file mode 100644 index 00000000..cf16138b --- /dev/null +++ b/packages/nest/jest.config.ts @@ -0,0 +1,15 @@ +import { createDefaultPreset } from 'ts-jest' + +const tsJestTransformCfg = createDefaultPreset().transform + +/** @type {import("jest").Config} **/ +export default { + testEnvironment: 'node', + transform: { + ...tsJestTransformCfg, + }, + testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + '**/test/**/?(*.)+(spec|test).[tj]s?(x)', + ], +} diff --git a/packages/nest/package.json b/packages/nest/package.json index 683e16e9..f0aeaff8 100644 --- a/packages/nest/package.json +++ b/packages/nest/package.json @@ -2,7 +2,7 @@ "name": "@142vip/nest", "version": "0.0.1-alpha.1", "private": false, - "description": "Nest.js框架封装的通用工具模块", + "description": "Nest.js框架基础模块,管理生产、开发依赖", "author": "mmdapl ", "license": "MIT", "homepage": "https://142vip.github.io/core-x/packages/nest/", @@ -22,12 +22,12 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": "./dist/index.js", + "require": "./dist/index.js" } }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ "dist" @@ -39,21 +39,36 @@ "homePage": "https://142vip.cn" }, "scripts": { - "build": "unbuild", - "typecheck": "tsc --noEmit" + "build": "npx nest build", + "typecheck": "tsc --noEmit", + "test": "npx jest", + "test:coverage": "npx jest --coverage" }, "dependencies": { - "@nestjs/common": "10.4.15", - "@nestjs/core": "10.4.15", - "@nestjs/platform-express": "10.4.15", - "reflect-metadata": "0.2.2", - "rimraf": "6.0.0", - "rxjs": "7.2.0" + "@nestjs/common": "11.1.7", + "@nestjs/core": "11.1.7", + "@nestjs/platform-express": "11.1.7", + "class-transformer": "0.5.1", + "class-validator": "0.14.2", + "fancy-log": "2.0.0", + "nest-typed-config": "2.10.1", + "nestjs-pino": "4.4.1", + "reflect-metadata": "0.2.2" }, "devDependencies": { - "@nestjs/schematics": "10.2.3", - "@nestjs/testing": "10.4.15", - "@types/express": "5.0.0" + "@nestjs/cli": "11.0.10", + "@nestjs/schematics": "11.0.9", + "@nestjs/testing": "11.1.7", + "@types/express": "5.0.0", + "@types/fancy-log": "2.0.2", + "@types/jest": "30.0.0", + "@types/supertest": "6.0.2", + "source-map-support": "0.5.21", + "supertest": "7.0.0", + "ts-jest": "29.2.5", + "ts-loader": "9.5.2", + "ts-node": "10.9.2", + "tsconfig-paths": "4.2.0" }, "publishConfig": { "access": "public", diff --git a/packages/nest/src/app.module.ts b/packages/nest/src/app.module.ts new file mode 100644 index 00000000..5bf53556 --- /dev/null +++ b/packages/nest/src/app.module.ts @@ -0,0 +1,3 @@ +import { DynamicModule, Type } from '@nestjs/common' + +export type NestModule = Type | DynamicModule diff --git a/packages/nest/src/index.ts b/packages/nest/src/index.ts index ae67ddad..d45dbeff 100644 --- a/packages/nest/src/index.ts +++ b/packages/nest/src/index.ts @@ -1 +1 @@ -export const test = 1 +export * from './app.module' diff --git a/packages/nest/test/starter.spec.ts b/packages/nest/test/starter.spec.ts new file mode 100644 index 00000000..188166d7 --- /dev/null +++ b/packages/nest/test/starter.spec.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from '@jest/globals' + +describe('测试', () => { + it('测试用例', async () => { + expect(111).toBeDefined() + }) +}) diff --git a/packages/nest/tsconfig.json b/packages/nest/tsconfig.json index 329d6f4a..7b46bf92 100644 --- a/packages/nest/tsconfig.json +++ b/packages/nest/tsconfig.json @@ -1,10 +1,17 @@ { - "extends": "../../tsconfig.package.json", + "extends": "../../tsconfig.nest-pkg.json", + "compilerOptions": { + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "outDir": "dist" + }, "include": [ - "src/**/*" + "src/**/*", + "**/test/**/*.ts" ], "exclude": [ "node_modules", - "dist" + "dist", + "**/test/**/*.ts" ] } From a07948d25d67580dbc8bcd32c78f8a44ccff5efa Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 14:00:02 +0800 Subject: [PATCH 3/7] =?UTF-8?q?feat(@142vip/nest-logger):=20=E6=8B=93?= =?UTF-8?q?=E5=B1=95Nest=E6=A1=86=E6=9E=B6=E5=B1=82=E6=97=A5=E5=BF=97?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81Adapter=E9=80=82=E9=85=8D=E5=99=A8?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nest-logger/CHANGELOG.md | 19 +++ packages/nest-logger/README.md | 111 ++++++++++++++++++ packages/nest-logger/jest.config.ts | 15 +++ packages/nest-logger/package.json | 61 ++++++++++ .../nest-logger/src/adapter/console.logger.ts | 25 ++++ packages/nest-logger/src/adapter/index.ts | 1 + .../nest-logger/src/core/logger.config.ts | 6 + .../nest-logger/src/core/logger.decorator.ts | 12 ++ .../nest-logger/src/core/logger.interface.ts | 11 ++ .../nest-logger/src/core/logger.module.ts | 59 ++++++++++ packages/nest-logger/src/index.ts | 6 + .../nest-logger/test/logger.service.spec.ts | 7 ++ packages/nest-logger/tsconfig.json | 15 +++ 13 files changed, 348 insertions(+) create mode 100644 packages/nest-logger/CHANGELOG.md create mode 100644 packages/nest-logger/README.md create mode 100644 packages/nest-logger/jest.config.ts create mode 100644 packages/nest-logger/package.json create mode 100644 packages/nest-logger/src/adapter/console.logger.ts create mode 100644 packages/nest-logger/src/adapter/index.ts create mode 100644 packages/nest-logger/src/core/logger.config.ts create mode 100644 packages/nest-logger/src/core/logger.decorator.ts create mode 100644 packages/nest-logger/src/core/logger.interface.ts create mode 100644 packages/nest-logger/src/core/logger.module.ts create mode 100644 packages/nest-logger/src/index.ts create mode 100644 packages/nest-logger/test/logger.service.spec.ts create mode 100644 packages/nest-logger/tsconfig.json diff --git a/packages/nest-logger/CHANGELOG.md b/packages/nest-logger/CHANGELOG.md new file mode 100644 index 00000000..e0cc3f76 --- /dev/null +++ b/packages/nest-logger/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## v0.0.1-alpha.1 (2025-02-06) + +### ✨ Features + +- 基础结构改造,引入`@142vip/utils`模块  -  by **chufan** [(a0155)](https://github.com/142vip/core-x/commit/a01558e) + +**Release New Version v0.0.1-alpha.1 [👉 View New Package On NPM](https://www.npmjs.com/package/@142vip/nest-logger)** + +## v0.0.1-alpha.0 (2024-07-14) + +### ✨ Features + +- 新增`tsconfig`配置,统一模块编译 by . @chufan +- 基本结构初始化 by . @chufan diff --git a/packages/nest-logger/README.md b/packages/nest-logger/README.md new file mode 100644 index 00000000..b90820dc --- /dev/null +++ b/packages/nest-logger/README.md @@ -0,0 +1,111 @@ +# @142vip/nest-logger + +[![NPM version](https://img.shields.io/npm/v/@142vip/nest-logger?labelColor=0b3d52&color=1da469&label=version)](https://www.npmjs.com/package/@142vip/nest-logger) + +## 安装 + +```shell +# npm +npm install @142vip/nest-logger +# pnpm +pnpm i @142vip/nest-logger +``` + +## 配置 + +## 日志注册 + +```typescript +NestLoggerModule.register({ + consoleLogger: { + // ... + }, + fileLogger: { + // ... + }, +}) +``` + +## 开启日志 + +```typescript +// app 实例,使用Logger +NestLoggerModule.useLogger(app) +``` +## 日志打印 + +### 使用 `Logger` 类,不推荐 + +```typescript +import { Logger } from '@nestjs/common' + +export class MyService { + private readonly logger = new Logger(MyService.name) + foo() { + this.logger.verbose({ foo: 'bar' }, 'baz %s', 'qux') + this.logger.debug('foo %s %o', 'bar', { baz: 'qux' }) + this.logger.log('foo') + } +} +``` + +### 使用 `InjectLogger` 装饰器,推荐 + +```typescript +import { InjectLogger, NestLogger } from '@142vip/nest-logger' + +export class MyService { + constructor( + private readonly logger: PinoLogger + ) { + this.logger.setContext(MyService.name) + } + + constructor( + @InjectLogger(MyService.name) + private readonly logger: NestLogger + ) {} + + foo() { + // PinoLogger has same methods as pino instance + this.logger.trace({ foo: 'bar' }, 'baz %s', 'qux') + this.logger.debug('foo %s %o', 'bar', { baz: 'qux' }) + this.logger.info('foo') + } +} +``` + +### 构造函数初始化 + +```typescript +import { InjectLogger, NestLogger } from '@142vip/nest-logger' + +export class MyService { + constructor( + private readonly logger: NestLogger + ) { + this.logger.setContext(MyService.name) + } + + foo() { + this.logger.trace({ foo: 'bar' }, 'baz %s', 'qux') + this.logger.debug('foo %s %o', 'bar', { baz: 'qux' }) + this.logger.info('foo') + } +} +``` + +## 参考 + +- [nestjs-pino](npmjs.com/package/nestjs-pino) +- [pino](https://github.com/pinojs/pino) +- [pino-pretty](https://github.com/pinojs/pino-pretty) +- [pino-http](https://github.com/pinojs/pino-http) + +## 证书 + +[MIT](https://opensource.org/license/MIT) + +Copyright (c) 2019-present, @142vip 储凡 + +**仅供学习参考,商业使用请保留作者版权信息,作者不保证也不承担任何软件的使用风险。** diff --git a/packages/nest-logger/jest.config.ts b/packages/nest-logger/jest.config.ts new file mode 100644 index 00000000..cf16138b --- /dev/null +++ b/packages/nest-logger/jest.config.ts @@ -0,0 +1,15 @@ +import { createDefaultPreset } from 'ts-jest' + +const tsJestTransformCfg = createDefaultPreset().transform + +/** @type {import("jest").Config} **/ +export default { + testEnvironment: 'node', + transform: { + ...tsJestTransformCfg, + }, + testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + '**/test/**/?(*.)+(spec|test).[tj]s?(x)', + ], +} diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json new file mode 100644 index 00000000..bbf96b5d --- /dev/null +++ b/packages/nest-logger/package.json @@ -0,0 +1,61 @@ +{ + "name": "@142vip/nest-logger", + "version": "0.0.1-alpha.1", + "private": false, + "description": "Nest.js框架日志模块,集成终端、文件等形式日志", + "author": "mmdapl ", + "license": "MIT", + "homepage": "https://142vip.github.io/core-x/packages/nest-logger/", + "repository": { + "type": "git", + "url": "git+https://github.com/142vip/core-x.git", + "directory": "packages/nest-logger" + }, + "keywords": [ + "公众号搜:储凡", + "142vip", + "@142vip", + "@142vip/nest-logger", + "nest", + "logger" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.js" + } + }, + "authorInfo": { + "name": "微信公众号:储凡", + "email": "fairy_vip@2925.com", + "url": "https://github.com/142vip", + "homePage": "https://142vip.cn" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "npx nest build", + "typecheck": "tsc --noEmit", + "test": "npx jest", + "test:coverage": "npx jest --coverage" + }, + "peerDependencies": { + "@142vip/nest": "workspace:*" + }, + "dependencies": { + "nestjs-pino": "4.4.1", + "pino": "9.4.0", + "pino-http": "11.0.0", + "pino-pretty": "11.3.0" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + } +} diff --git a/packages/nest-logger/src/adapter/console.logger.ts b/packages/nest-logger/src/adapter/console.logger.ts new file mode 100644 index 00000000..36828e87 --- /dev/null +++ b/packages/nest-logger/src/adapter/console.logger.ts @@ -0,0 +1,25 @@ +import process from 'node:process' +import PinoPretty from 'pino-pretty' +import { LoggerLevelEnum, NestLoggerAdapter } from '../core/logger.interface' + +export interface NestConsoleLoggerConfig extends PinoPretty.PrettyOptions { + level?: LoggerLevelEnum +} + +/** + * 控制台日志 + */ +export class ConsoleLogger implements NestLoggerAdapter { + private readonly stream: PinoPretty.PrettyStream + + constructor(options: NestConsoleLoggerConfig) { + this.stream = PinoPretty({ + ...options, + destination: process.stdout, + }) + } + + public write(msg: string): void { + this.stream.push(msg) + } +} diff --git a/packages/nest-logger/src/adapter/index.ts b/packages/nest-logger/src/adapter/index.ts new file mode 100644 index 00000000..df12db2a --- /dev/null +++ b/packages/nest-logger/src/adapter/index.ts @@ -0,0 +1 @@ +export * from './console.logger' diff --git a/packages/nest-logger/src/core/logger.config.ts b/packages/nest-logger/src/core/logger.config.ts new file mode 100644 index 00000000..f0ae8e28 --- /dev/null +++ b/packages/nest-logger/src/core/logger.config.ts @@ -0,0 +1,6 @@ +import { NestConsoleLoggerConfig } from '../adapter/console.logger' + +export class NestLoggerConfig { + fileLogger?: any + consoleLogger?: NestConsoleLoggerConfig +} diff --git a/packages/nest-logger/src/core/logger.decorator.ts b/packages/nest-logger/src/core/logger.decorator.ts new file mode 100644 index 00000000..923f8233 --- /dev/null +++ b/packages/nest-logger/src/core/logger.decorator.ts @@ -0,0 +1,12 @@ +import { InjectPinoLogger, PinoLogger } from 'nestjs-pino' + +/** + * 注册日志 + */ +export function InjectLogger(context?: string): PropertyDecorator & ParameterDecorator { + return InjectPinoLogger(context) +} + +export class NestLogger extends PinoLogger { + +} diff --git a/packages/nest-logger/src/core/logger.interface.ts b/packages/nest-logger/src/core/logger.interface.ts new file mode 100644 index 00000000..1f2f1b84 --- /dev/null +++ b/packages/nest-logger/src/core/logger.interface.ts @@ -0,0 +1,11 @@ +export interface NestLoggerAdapter { + write: (msg: string) => Promise | void +} + +export enum LoggerLevelEnum { + error = 'error', + warn = 'warn', + info = 'info', + debug = 'debug', + trace = 'trace', +} diff --git a/packages/nest-logger/src/core/logger.module.ts b/packages/nest-logger/src/core/logger.module.ts new file mode 100644 index 00000000..3447b005 --- /dev/null +++ b/packages/nest-logger/src/core/logger.module.ts @@ -0,0 +1,59 @@ +import { DynamicModule, INestApplication } from '@nestjs/common' +import { Logger, LoggerModule } from 'nestjs-pino' +import pino from 'pino' +import { ConsoleLogger } from '../adapter/console.logger' +import { NestLoggerConfig } from './logger.config' +import StreamEntry = pino.StreamEntry + +/** + * 日志模块 + */ +export class NestLoggerModule { + /** + * 注入 + * @param loggerConfig + */ + public static register(loggerConfig: NestLoggerConfig): DynamicModule { + return LoggerModule.forRootAsync({ + useFactory: () => { + const { consoleLogger, fileLogger } = loggerConfig + + // 本地启动时,禁止连接钉钉,推送告警信息到钉钉 + const loggers: StreamEntry[] = [] + // 终端日志 + if (consoleLogger != null) { + loggers.push({ + stream: new ConsoleLogger(consoleLogger), + level: consoleLogger.level, + }) + } + + // 文件日志 + if (fileLogger != null) { + loggers.push({ stream: fileLogger, level: fileLogger.level }) + } + + return { + pinoHttp: [ + // traceId 从请求头获取 + { + genReqId: req => req.headers['x-request-id'] ?? '123', + level: 'trace', + }, + pino.multistream(loggers), + ], + } + }, + }) + } + + /** + * 开启日志 + */ + public static useLogger(app: INestApplication): INestApplication { + const logger = app.get(Logger) + app.useLogger(logger) + app.flushLogs() + return app + } +} diff --git a/packages/nest-logger/src/index.ts b/packages/nest-logger/src/index.ts new file mode 100644 index 00000000..6c24e81a --- /dev/null +++ b/packages/nest-logger/src/index.ts @@ -0,0 +1,6 @@ +export * from './adapter/console.logger' + +export * from './core/logger.config' +export * from './core/logger.decorator' +export * from './core/logger.interface' +export * from './core/logger.module' diff --git a/packages/nest-logger/test/logger.service.spec.ts b/packages/nest-logger/test/logger.service.spec.ts new file mode 100644 index 00000000..188166d7 --- /dev/null +++ b/packages/nest-logger/test/logger.service.spec.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from '@jest/globals' + +describe('测试', () => { + it('测试用例', async () => { + expect(111).toBeDefined() + }) +}) diff --git a/packages/nest-logger/tsconfig.json b/packages/nest-logger/tsconfig.json new file mode 100644 index 00000000..f357a5ce --- /dev/null +++ b/packages/nest-logger/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.nest-pkg.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": [ + "src/**/*", + "**/test/**/*.ts" + ], + "exclude": [ + "node_modules", + "dist", + "**/test/**/*.ts" + ] +} From 56d37fd94f5ce52d5ae6946e22ed23ede4153358 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 14:01:19 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat(@142vip/nest-typeorm):=20=E9=9B=86?= =?UTF-8?q?=E6=88=90`@nestjs/typeorm`=E7=AD=89=E6=A8=A1=E5=9D=97=EF=BC=8C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nest-typeorm/build.config.ts | 13 --- packages/nest-typeorm/index.d.ts | 1 - packages/nest-typeorm/package.json | 27 +++--- .../nest-typeorm/src/core/base.service.ts | 11 --- .../src/core/custom-repository.decorator.ts | 10 -- .../nest-typeorm/src/core/typeorm.constant.ts | 1 - .../nest-typeorm/src/core/typeorm.module.ts | 93 +++++++------------ packages/nest-typeorm/src/index.ts | 2 - .../nest-typeorm/test/nest-typeorm.spec.ts | 7 ++ packages/nest-typeorm/tsconfig.json | 11 ++- 10 files changed, 61 insertions(+), 115 deletions(-) delete mode 100644 packages/nest-typeorm/build.config.ts delete mode 100644 packages/nest-typeorm/index.d.ts delete mode 100644 packages/nest-typeorm/src/core/base.service.ts delete mode 100644 packages/nest-typeorm/src/core/custom-repository.decorator.ts delete mode 100644 packages/nest-typeorm/src/core/typeorm.constant.ts create mode 100644 packages/nest-typeorm/test/nest-typeorm.spec.ts diff --git a/packages/nest-typeorm/build.config.ts b/packages/nest-typeorm/build.config.ts deleted file mode 100644 index 0f679789..00000000 --- a/packages/nest-typeorm/build.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: [ - 'src/index', - ], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: true, - }, -}) diff --git a/packages/nest-typeorm/index.d.ts b/packages/nest-typeorm/index.d.ts deleted file mode 100644 index 6f39cd49..00000000 --- a/packages/nest-typeorm/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './src' diff --git a/packages/nest-typeorm/package.json b/packages/nest-typeorm/package.json index ef1e31ea..bb2a7359 100644 --- a/packages/nest-typeorm/package.json +++ b/packages/nest-typeorm/package.json @@ -23,30 +23,33 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": "./dist/index.js", + "require": "./dist/index.js" } }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], "authorInfo": { "name": "微信公众号:储凡", "email": "fairy_vip@2925.com", "url": "https://github.com/142vip", "homePage": "https://142vip.cn" }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { - "build-test": "unbuild", - "typecheck": "tsc --noEmit" + "build": "npx nest build", + "typecheck": "tsc --noEmit", + "test": "npx jest", + "test:coverage": "npx jest --coverage" + }, + "peerDependencies": { + "@142vip/nest": "workspace:*" }, "dependencies": { - "@142vip/nest": "workspace:*", "@nestjs/typeorm": "11.0.0", - "mysql2": "3.12.0", "typeorm": "0.3.21" }, "publishConfig": { diff --git a/packages/nest-typeorm/src/core/base.service.ts b/packages/nest-typeorm/src/core/base.service.ts deleted file mode 100644 index 819f8a64..00000000 --- a/packages/nest-typeorm/src/core/base.service.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { EntityManager } from 'typeorm' -import { InjectEntityManager } from '@nestjs/typeorm' - -export class BaseDBService { - @InjectEntityManager() - public readonly entityManager: EntityManager - - constructor(entityManager: EntityManager) { - this.entityManager = entityManager - } -} diff --git a/packages/nest-typeorm/src/core/custom-repository.decorator.ts b/packages/nest-typeorm/src/core/custom-repository.decorator.ts deleted file mode 100644 index 58912f74..00000000 --- a/packages/nest-typeorm/src/core/custom-repository.decorator.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { SetMetadata } from '@nestjs/common' -import { TYPEORM_CUSTOM_REPOSITORY } from './typeorm.constant' - -/** - * 自定义Repo装饰器 - * @param entity - */ -export function CustomRepository(entity: new (...args: any) => any): ClassDecorator { - return SetMetadata(TYPEORM_CUSTOM_REPOSITORY, entity) -} diff --git a/packages/nest-typeorm/src/core/typeorm.constant.ts b/packages/nest-typeorm/src/core/typeorm.constant.ts deleted file mode 100644 index 3973e9e5..00000000 --- a/packages/nest-typeorm/src/core/typeorm.constant.ts +++ /dev/null @@ -1 +0,0 @@ -export const TYPEORM_CUSTOM_REPOSITORY = 'TYPEORM_CUSTOM_REPOSITORY' diff --git a/packages/nest-typeorm/src/core/typeorm.module.ts b/packages/nest-typeorm/src/core/typeorm.module.ts index d80a443d..e3a1b479 100644 --- a/packages/nest-typeorm/src/core/typeorm.module.ts +++ b/packages/nest-typeorm/src/core/typeorm.module.ts @@ -1,75 +1,44 @@ -import type { DynamicModule, Provider } from '@nestjs/common' -import type { - TypeOrmModuleOptions, -} from '@nestjs/typeorm' -import type { - TypeOrmModuleAsyncOptions, -} from '@nestjs/typeorm/dist/interfaces/typeorm-options.interface' -import type { DataSource } from 'typeorm' -import { - getDataSourceToken, - getRepositoryToken, - TypeOrmModule, -} from '@nestjs/typeorm' -import { TYPEORM_CUSTOM_REPOSITORY } from './typeorm.constant' - -type EntitiesOrRepositories = (new (...args: any) => any)[] - -// types.setTypeParser(types.builtins.INT8, val => Number.parseInt(val, 10)) -// types.setTypeParser(types.builtins.NUMERIC, val => Number.parseFloat(val)) - -export class TypeormModule { - public static forFeature(entitiesOrRepositories: EntitiesOrRepositories, token?: string): DynamicModule { - const providers: Provider[] = [] - - const entities = entitiesOrRepositories.map((Repository) => { - const entity = Reflect.getMetadata(TYPEORM_CUSTOM_REPOSITORY, Repository) - if (entity) { - providers.push({ - provide: getRepositoryToken(Repository, token), - useFactory: (dataSource: DataSource) => { - const baseRepo = dataSource.getRepository(entity) - return new Repository( - baseRepo.target, - baseRepo.manager, - baseRepo.queryRunner, - ) - }, - inject: [getDataSourceToken(token)], - }) - return entity - } - return Repository - }) - - const forFeature = TypeOrmModule.forFeature(entities, token) +import { DynamicModule } from '@nestjs/common' +import { TypeOrmModule, TypeOrmModuleAsyncOptions, TypeOrmModuleOptions } from '@nestjs/typeorm' +import { EntityClassOrSchema } from '@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type' + +/** + * 参考:https://docs.nestjs.cn/techniques/sql + */ +export class NestTypeOrmModule { + /** + * 同步注册数据库连接,全局模块 + */ + public static register(config: TypeOrmModuleOptions): DynamicModule { + return this.forRoot(config) + } + /** + * 同步注册数据库连接 + */ + public static forRoot(options: TypeOrmModuleOptions, dataSourceName?: string): DynamicModule { return { - module: TypeormModule, - providers, - imports: [forFeature], - exports: [...providers, forFeature], + module: NestTypeOrmModule, + imports: [TypeOrmModule.forRoot({ ...options, name: dataSourceName })], global: true, } } - public static forRoot(options: TypeOrmModuleOptions): DynamicModule { + /** + * 异步注册数据库连接 + */ + public static forRootAsync(options: TypeOrmModuleAsyncOptions, dataSourceName?: string): DynamicModule { return { - module: TypeormModule, - providers: [], - exports: [], - imports: [TypeOrmModule.forRoot(options)], + module: NestTypeOrmModule, + imports: [TypeOrmModule.forRootAsync({ ...options, name: dataSourceName })], global: true, } } - public static forRootAsync(options: TypeOrmModuleAsyncOptions): DynamicModule { - return { - module: TypeormModule, - providers: [], - exports: [], - imports: [TypeOrmModule.forRootAsync(options)], - global: true, - } + /** + * 注册实体 + */ + public static forFeature(entities?: EntityClassOrSchema[], dataSourceName?: string): DynamicModule { + return TypeOrmModule.forFeature(entities, dataSourceName) } } diff --git a/packages/nest-typeorm/src/index.ts b/packages/nest-typeorm/src/index.ts index d4bc16ff..4ed003e4 100644 --- a/packages/nest-typeorm/src/index.ts +++ b/packages/nest-typeorm/src/index.ts @@ -1,3 +1 @@ -export * from './core/base.service' -export * from './core/custom-repository.decorator' export * from './core/typeorm.module' diff --git a/packages/nest-typeorm/test/nest-typeorm.spec.ts b/packages/nest-typeorm/test/nest-typeorm.spec.ts new file mode 100644 index 00000000..188166d7 --- /dev/null +++ b/packages/nest-typeorm/test/nest-typeorm.spec.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from '@jest/globals' + +describe('测试', () => { + it('测试用例', async () => { + expect(111).toBeDefined() + }) +}) diff --git a/packages/nest-typeorm/tsconfig.json b/packages/nest-typeorm/tsconfig.json index 329d6f4a..f357a5ce 100644 --- a/packages/nest-typeorm/tsconfig.json +++ b/packages/nest-typeorm/tsconfig.json @@ -1,10 +1,15 @@ { - "extends": "../../tsconfig.package.json", + "extends": "../../tsconfig.nest-pkg.json", + "compilerOptions": { + "outDir": "dist" + }, "include": [ - "src/**/*" + "src/**/*", + "**/test/**/*.ts" ], "exclude": [ "node_modules", - "dist" + "dist", + "**/test/**/*.ts" ] } From 629508d2f230f0bbe45336714bc88dfb57f91e88 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 14:14:04 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat(@142vip/nest-starter):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=90=AF=E5=8A=A8=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E9=80=9A=E7=94=A8=E5=9E=8B`Nest`=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nest-starter/CHANGELOG.md | 19 ++ packages/nest-starter/README.md | 44 ++++ packages/nest-starter/jest.config.ts | 15 ++ packages/nest-starter/package.json | 67 ++++++ packages/nest-starter/src/app.config.ts | 10 + packages/nest-starter/src/config.module.ts | 49 +++++ packages/nest-starter/src/config/index.ts | 7 + .../src/config/plugin/logger.config.ts | 31 +++ .../src/config/plugin/redis.config.ts | 7 + .../src/config/plugin/sequelize.config.ts | 3 + .../src/config/plugin/swagger.config.ts | 8 + .../src/config/plugin/typeorm.config.ts | 14 ++ .../nest-starter/src/config/starter.config.ts | 48 +++++ packages/nest-starter/src/index.ts | 4 + packages/nest-starter/src/nest-process.ts | 92 ++++++++ packages/nest-starter/src/nest-root.module.ts | 11 + packages/nest-starter/src/nest-starter.ts | 200 ++++++++++++++++++ packages/nest-starter/src/nest-util.ts | 58 +++++ .../src/swagger/swagger.manager.ts | 79 +++++++ packages/nest-starter/test/starter.spec.ts | 7 + packages/nest-starter/tsconfig.json | 15 ++ 21 files changed, 788 insertions(+) create mode 100644 packages/nest-starter/CHANGELOG.md create mode 100644 packages/nest-starter/README.md create mode 100644 packages/nest-starter/jest.config.ts create mode 100644 packages/nest-starter/package.json create mode 100644 packages/nest-starter/src/app.config.ts create mode 100644 packages/nest-starter/src/config.module.ts create mode 100644 packages/nest-starter/src/config/index.ts create mode 100644 packages/nest-starter/src/config/plugin/logger.config.ts create mode 100644 packages/nest-starter/src/config/plugin/redis.config.ts create mode 100644 packages/nest-starter/src/config/plugin/sequelize.config.ts create mode 100644 packages/nest-starter/src/config/plugin/swagger.config.ts create mode 100644 packages/nest-starter/src/config/plugin/typeorm.config.ts create mode 100644 packages/nest-starter/src/config/starter.config.ts create mode 100644 packages/nest-starter/src/index.ts create mode 100644 packages/nest-starter/src/nest-process.ts create mode 100644 packages/nest-starter/src/nest-root.module.ts create mode 100644 packages/nest-starter/src/nest-starter.ts create mode 100644 packages/nest-starter/src/nest-util.ts create mode 100644 packages/nest-starter/src/swagger/swagger.manager.ts create mode 100644 packages/nest-starter/test/starter.spec.ts create mode 100644 packages/nest-starter/tsconfig.json diff --git a/packages/nest-starter/CHANGELOG.md b/packages/nest-starter/CHANGELOG.md new file mode 100644 index 00000000..0948ee3c --- /dev/null +++ b/packages/nest-starter/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## v0.0.1-alpha.1 (2025-02-06) + +### ✨ Features + +- 基础结构改造,引入`@142vip/utils`模块  -  by **chufan** [(a0155)](https://github.com/142vip/core-x/commit/a01558e) + +**Release New Version v0.0.1-alpha.1 [👉 View New Package On NPM](https://www.npmjs.com/package/@142vip/nest-starter)** + +## v0.0.1-alpha.0 (2024-07-14) + +### ✨ Features + +- 新增`tsconfig`配置,统一模块编译 by . @chufan +- 基本结构初始化 by . @chufan diff --git a/packages/nest-starter/README.md b/packages/nest-starter/README.md new file mode 100644 index 00000000..50e8906e --- /dev/null +++ b/packages/nest-starter/README.md @@ -0,0 +1,44 @@ +# @142vip/nest-starter + +[![NPM version](https://img.shields.io/npm/v/@142vip/nest-starter?labelColor=0b3d52&color=1da469&label=version)](https://www.npmjs.com/package/@142vip/nest-starter) + +## 安装 + +```shell +# npm +npm install @142vip/nest-starter +# pnpm +pnpm i @142vip/nest-starter +``` + +## 配置 + +```ts +import { NestAppConfig } from '@142vip/nest-starter' +import { IsNumber } from 'class-validator' + +export class Config extends NestAppConfig { + @IsNumber() + test!: number +} +``` + +## 使用 + +```ts +import { NestStarter } from '@142vip/nest-starter' +import { AppModule } from './app.module' + +// 统一启动类 +void NestStarter.getInstance().start(AppModule) +``` + +## 参考 + +## 证书 + +[MIT](https://opensource.org/license/MIT) + +Copyright (c) 2019-present, @142vip 储凡 + +**仅供学习参考,商业使用请保留作者版权信息,作者不保证也不承担任何软件的使用风险。** diff --git a/packages/nest-starter/jest.config.ts b/packages/nest-starter/jest.config.ts new file mode 100644 index 00000000..cf16138b --- /dev/null +++ b/packages/nest-starter/jest.config.ts @@ -0,0 +1,15 @@ +import { createDefaultPreset } from 'ts-jest' + +const tsJestTransformCfg = createDefaultPreset().transform + +/** @type {import("jest").Config} **/ +export default { + testEnvironment: 'node', + transform: { + ...tsJestTransformCfg, + }, + testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + '**/test/**/?(*.)+(spec|test).[tj]s?(x)', + ], +} diff --git a/packages/nest-starter/package.json b/packages/nest-starter/package.json new file mode 100644 index 00000000..5de1a3cc --- /dev/null +++ b/packages/nest-starter/package.json @@ -0,0 +1,67 @@ +{ + "name": "@142vip/nest-starter", + "version": "0.0.1-alpha.1", + "private": false, + "description": "Nest.js框架下Redis使用最佳实践", + "author": "mmdapl ", + "license": "MIT", + "homepage": "https://142vip.github.io/core-x/packages/nest-starter/", + "repository": { + "type": "git", + "url": "git+https://github.com/142vip/core-x.git", + "directory": "packages/nest-starter" + }, + "keywords": [ + "公众号搜:储凡", + "142vip", + "@142vip", + "@142vip/nest-starter", + "nest", + "starter" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.js" + } + }, + "authorInfo": { + "name": "微信公众号:储凡", + "email": "fairy_vip@2925.com", + "url": "https://github.com/142vip", + "homePage": "https://142vip.cn" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "npx nest build", + "typecheck": "tsc --noEmit", + "test": "npx jest", + "test:coverage": "npx jest --coverage" + }, + "peerDependencies": { + "@142vip/nest": "workspace:*" + }, + "dependencies": { + "@142vip/nest-logger": "workspace:*", + "@142vip/nest-redis": "workspace:*", + "@142vip/nest-typeorm": "workspace:*", + "@142vip/utils": "workspace:*", + "@nestjs/swagger": "11.2.1", + "nestjs-pino": "4.4.1" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "devDependencies": { + "@nestjs/cli": "11.0.10", + "@nestjs/testing": "11.1.7" + } +} diff --git a/packages/nest-starter/src/app.config.ts b/packages/nest-starter/src/app.config.ts new file mode 100644 index 00000000..aa1f1e76 --- /dev/null +++ b/packages/nest-starter/src/app.config.ts @@ -0,0 +1,10 @@ +import { Type } from 'class-transformer' +import { ValidateNested } from 'class-validator' +import { StarterConfig } from './config' +import 'reflect-metadata' + +export class NestAppConfig { + @ValidateNested() + @Type(() => StarterConfig) + starter!: StarterConfig +} diff --git a/packages/nest-starter/src/config.module.ts b/packages/nest-starter/src/config.module.ts new file mode 100644 index 00000000..01b7b9ef --- /dev/null +++ b/packages/nest-starter/src/config.module.ts @@ -0,0 +1,49 @@ +import * as path from 'node:path' +import { VipNodeJS } from '@142vip/utils' +import { ClassConstructor } from 'class-transformer' +import { fileLoader, selectConfig, TypedConfigModule } from 'nest-typed-config' +import { NestAppConfig } from './app.config' +import { StarterConfig } from './config' + +/** + * Nest应用模块 + * - 默认全局模块 + */ +export const NestConfigModule = TypedConfigModule.forRoot({ + schema: NestAppConfig, + load: fileLoader({ + // TODO 指定配置文件 + absolutePath: path.resolve(VipNodeJS.getProcessCwd(), 'config/test.config.js'), + }), +}) + +/** + * 基于Schema获取配置 + * - 不存在时,报错 + * @param configSchema + */ +export function getConfig(configSchema: ClassConstructor): T { + const config = getOptionalConfig(configSchema) + if (!config) { + throw new Error(`Config ${configSchema.name} not found`) + } + return config +} + +/** + * 基于Schema获取配置,可能为空 + * @param configSchema + */ +export function getOptionalConfig(configSchema: ClassConstructor): T | undefined { + return selectConfig(NestConfigModule, configSchema, { allowOptional: true }) as T | undefined +} + +/** + * 启动配置 + */ +export const nestStaterConfig = getConfig(StarterConfig) + +/** + * 整个应用配置 + */ +export const nestAppConfig = getConfig(NestAppConfig) diff --git a/packages/nest-starter/src/config/index.ts b/packages/nest-starter/src/config/index.ts new file mode 100644 index 00000000..0304f18c --- /dev/null +++ b/packages/nest-starter/src/config/index.ts @@ -0,0 +1,7 @@ +export * from './plugin/logger.config' +export * from './plugin/redis.config' +export * from './plugin/sequelize.config' +export * from './plugin/swagger.config' +export * from './plugin/typeorm.config' + +export * from './starter.config' diff --git a/packages/nest-starter/src/config/plugin/logger.config.ts b/packages/nest-starter/src/config/plugin/logger.config.ts new file mode 100644 index 00000000..71059cd1 --- /dev/null +++ b/packages/nest-starter/src/config/plugin/logger.config.ts @@ -0,0 +1,31 @@ +import { LoggerLevelEnum } from '@142vip/nest-logger' +import { Type } from 'class-transformer' +import { IsEnum, IsOptional, ValidateNested } from 'class-validator' + +/** + * 控制台日志配置 + */ +export class ConsoleLoggerConfig { + @IsOptional() + @IsEnum(LoggerLevelEnum) + level?: LoggerLevelEnum +} + +/** + * 文件日志配置 + */ +export class FileLoggerConfig { + +} + +export class LoggerConfig { + @IsOptional() + @ValidateNested() + @Type(() => ConsoleLoggerConfig) + consoleLogger?: ConsoleLoggerConfig + + @IsOptional() + @ValidateNested() + @Type(() => FileLoggerConfig) + fileLogger?: FileLoggerConfig +} diff --git a/packages/nest-starter/src/config/plugin/redis.config.ts b/packages/nest-starter/src/config/plugin/redis.config.ts new file mode 100644 index 00000000..0d016b19 --- /dev/null +++ b/packages/nest-starter/src/config/plugin/redis.config.ts @@ -0,0 +1,7 @@ +import { IsOptional, IsString } from 'class-validator' + +export class RedisConfig { + @IsOptional() + @IsString() + url?: string +} diff --git a/packages/nest-starter/src/config/plugin/sequelize.config.ts b/packages/nest-starter/src/config/plugin/sequelize.config.ts new file mode 100644 index 00000000..90bebe06 --- /dev/null +++ b/packages/nest-starter/src/config/plugin/sequelize.config.ts @@ -0,0 +1,3 @@ +export class SequelizeConfig { + +} diff --git a/packages/nest-starter/src/config/plugin/swagger.config.ts b/packages/nest-starter/src/config/plugin/swagger.config.ts new file mode 100644 index 00000000..e5cc5ce8 --- /dev/null +++ b/packages/nest-starter/src/config/plugin/swagger.config.ts @@ -0,0 +1,8 @@ +import { IsString } from 'class-validator' + +export class SwaggerConfig { + @IsString() + docPath: string = '/doc' + + envs: Record = { 本地环境: 'http://127.0.0.1' } +} diff --git a/packages/nest-starter/src/config/plugin/typeorm.config.ts b/packages/nest-starter/src/config/plugin/typeorm.config.ts new file mode 100644 index 00000000..41e64acc --- /dev/null +++ b/packages/nest-starter/src/config/plugin/typeorm.config.ts @@ -0,0 +1,14 @@ +import { IsOptional, IsString } from 'class-validator' + +export class TypeOrmConfig { + @IsString() + url!: string + + @IsOptional() + @IsString() + schema?: string + + @IsOptional() + @IsString() + logging: boolean = false +} diff --git a/packages/nest-starter/src/config/starter.config.ts b/packages/nest-starter/src/config/starter.config.ts new file mode 100644 index 00000000..246f9a8d --- /dev/null +++ b/packages/nest-starter/src/config/starter.config.ts @@ -0,0 +1,48 @@ +import { Type } from 'class-transformer' +import { IsNumber, IsOptional, ValidateNested } from 'class-validator' +import { LoggerConfig } from './plugin/logger.config' +import { RedisConfig } from './plugin/redis.config' +import { SequelizeConfig } from './plugin/sequelize.config' +import { SwaggerConfig } from './plugin/swagger.config' +import { TypeOrmConfig } from './plugin/typeorm.config' + +import 'reflect-metadata' + +export class StarterConfig { + @IsNumber() + port!: number + + @IsOptional() + globalPrefix?: string + + @IsOptional() + @ValidateNested() + @Type(() => RedisConfig) + redis?: RedisConfig + + @IsOptional() + @ValidateNested() + @Type(() => TypeOrmConfig) + typeorm?: TypeOrmConfig + + @IsOptional() + @ValidateNested() + @Type(() => SequelizeConfig) + sequelize?: SequelizeConfig + + @IsOptional() + enableSwagger?: boolean + + @IsOptional() + @ValidateNested() + @Type(() => SwaggerConfig) + swagger?: SwaggerConfig + + @IsOptional() + enableLogger?: boolean + + @IsOptional() + @ValidateNested() + @Type(() => LoggerConfig) + logger?: LoggerConfig +} diff --git a/packages/nest-starter/src/index.ts b/packages/nest-starter/src/index.ts new file mode 100644 index 00000000..0f4d6672 --- /dev/null +++ b/packages/nest-starter/src/index.ts @@ -0,0 +1,4 @@ +export * from './app.config' +export * from './config' +export * from './config.module' +export * from './nest-starter' diff --git a/packages/nest-starter/src/nest-process.ts b/packages/nest-starter/src/nest-process.ts new file mode 100644 index 00000000..e3ecca88 --- /dev/null +++ b/packages/nest-starter/src/nest-process.ts @@ -0,0 +1,92 @@ +import { VipNodeJS } from '@142vip/utils' + +enum NestProcessNodeEnv { + LOCAL = 'local', + TEST = 'test', + DEVELOP = 'dev', +} + +class NestProcess { + private static instance: NestProcess | null + + public static getInstance(): NestProcess { + if (this.instance == null) + this.instance = new NestProcess() + + return this.instance + } + + /** + * 获取当前进程的运行环境 + */ + public getNodeEnv(): string | undefined { + return this.getEnv('NODE_ENV') + } + + /** + * 获取加载配置的运行环境 + * - 使用RUN_ENV环境变量 + */ + public getRunEnv(): string | undefined { + return this.getEnv('RUN_ENV') + } + + /** + * 获取启动的应用 + * - 使用APP环境变量 + */ + public getAppEnv(): string | undefined { + return this.getEnv('APP') + } + + /** + * 是否本地环境启动Nestjs应用 + * - local.config 配置 + */ + public isLocalStartNest(): boolean { + return this.getNodeEnv() === NestProcessNodeEnv.LOCAL + } + + /** + * 是否测试环境启动Nestjs应用 + * - test.config 配置 + */ + public isTestStartNest(): boolean { + return this.getNodeEnv() === NestProcessNodeEnv.TEST + } + + /** + * 是否开发环境启动Nestjs应用 + * - dev.config 配置 + */ + public isDevelopStartNest(): boolean { + return this.getNodeEnv() === NestProcessNodeEnv.DEVELOP + } + + /** + * 是否为开发模式 + * - 本地环境 + * - 开发环境 + * - 测试环境 + */ + public isDevelopMode(): boolean { + const nodeEnv = this.getNodeEnv() + return nodeEnv != null && Object.values(NestProcessNodeEnv).includes(nodeEnv as NestProcessNodeEnv) + } + + /** + * 根据key获取环境变量 + */ + public getEnv(envKey: string): string | undefined { + return VipNodeJS.getProcessEnv(envKey) + } + + /** + * 获取进程当前路径 + */ + public getCwd(): string { + return VipNodeJS.getProcessCwd() + } +} + +export const nestProcess = NestProcess.getInstance() diff --git a/packages/nest-starter/src/nest-root.module.ts b/packages/nest-starter/src/nest-root.module.ts new file mode 100644 index 00000000..8e74bbc0 --- /dev/null +++ b/packages/nest-starter/src/nest-root.module.ts @@ -0,0 +1,11 @@ +import { DynamicModule, Module } from '@nestjs/common' + +@Module({}) +export class NestRootModule { + public static register(rootModuleOptions: Omit): DynamicModule { + return { + module: NestRootModule, + ...rootModuleOptions, + } + } +} diff --git a/packages/nest-starter/src/nest-starter.ts b/packages/nest-starter/src/nest-starter.ts new file mode 100644 index 00000000..0c515741 --- /dev/null +++ b/packages/nest-starter/src/nest-starter.ts @@ -0,0 +1,200 @@ +import { NestModule } from '@142vip/nest' +import { LoggerLevelEnum, NestLoggerModule } from '@142vip/nest-logger' +import { NestRedisModule } from '@142vip/nest-redis' +import { NestTypeOrmModule } from '@142vip/nest-typeorm' +import { vipLogger } from '@142vip/utils' +import { + ClassSerializerInterceptor, + HttpStatus, + INestApplication, + NestApplicationOptions, + VersioningType, +} from '@nestjs/common' +import { APP_INTERCEPTOR, NestFactory } from '@nestjs/core' +import { StarterConfig } from './config' +import { NestConfigModule, nestStaterConfig } from './config.module' +import { NestRootModule } from './nest-root.module' +import { NestUtil } from './nest-util' +import { SwaggerManager } from './swagger/swagger.manager' + +/** + * Nest框架启动器 + */ +export class NestStarter { + private static instance: NestStarter | null + /** + * 启动配置 + * @private + */ + private readonly starterConfig: StarterConfig = nestStaterConfig + /** + * @param nestApplicationOptions + */ + protected constructor( + protected readonly nestApplicationOptions?: NestApplicationOptions, + ) { } + + /** + * 单例 + * @param nestApplicationOptions 应用启动选项 + */ + public static getInstance( + nestApplicationOptions?: NestApplicationOptions, + ): NestStarter { + // 开启日志 + if (nestStaterConfig?.enableLogger) + vipLogger.logByBlank(JSON.stringify(nestStaterConfig, null, 2)) + + if (this.instance == null) + this.instance = new this(nestApplicationOptions) + + return this.instance + } + + /** + * 入口 + */ + public async start(appRootModule: NestModule): Promise { + const nestRootModule = NestRootModule.register({ + imports: this.registerGlobalModules().concat(appRootModule), + providers: this.getProviders(), + }) + + /** + * 创建应用 + */ + const app = await NestFactory.create(nestRootModule, { + bufferLogs: true, + ...this.nestApplicationOptions, + }) + + this.setGlobalConfig(app) + + // 应用启动 + await app.listen(this.starterConfig.port!) + + // 优化日志 + void new NestUtil(app, this.starterConfig).printAppModuleStarterLogger() + } + + /** + * 设置全局配置 + * @private + */ + private setGlobalConfig(app: INestApplication): INestApplication { + // 应用日志 + if (this.starterConfig.enableLogger) + NestLoggerModule.useLogger(app) + + // 路由版本功能 + // apiVersioning必须在swagger之前加载 + app.enableVersioning({ type: VersioningType.URI }) + + if (this.starterConfig.enableSwagger && this.starterConfig.swagger != null) { + new SwaggerManager(this.starterConfig.swagger).register(app) + + // TODO 打印swagger相关信息 + } + + // 启用关闭钩子(for优雅下线) + app.enableShutdownHooks() + + // 添加健康检查路由 + app.getHttpAdapter() + .get('/health', (_req, res) => res.status(HttpStatus.OK).send('SERVER OK')) + + return app + } + + /** + * 注册全局模块 + * @private + */ + private registerGlobalModules(): NestModule[] { + const imports: NestModule[] = [] + + // 默认为用户注册配置 + imports.push(NestConfigModule) + + if (this.starterConfig.enableLogger) { + imports.push(NestLoggerModule.register({ consoleLogger: { level: LoggerLevelEnum.trace } })) + } + + // 注册Redis模块 + if (this.starterConfig.redis != null) { + imports.push(NestRedisModule.register(this.starterConfig.redis)) + } + + // 注册TypeOrm模块 + if (this.starterConfig.typeorm != null) { + imports.push(NestTypeOrmModule.register(this.starterConfig.typeorm)) + } + + return imports + } + + private getProviders() { + return [ + /** + * 传播上下文 + */ + // { + // provide: APP_INTERCEPTOR, + // useClass: PropagationInterceptor, + // }, + /** + * 统一响应体 + */ + // { + // provide: APP_INTERCEPTOR, + // useClass: ResponseInterceptor, + // }, + /** + * 序列化类(过滤不正常字段) + */ + { + provide: APP_INTERCEPTOR, + useClass: ClassSerializerInterceptor, + }, + /** + * 校验入参 + */ + // { + // provide: APP_PIPE, + // useValue: new CustomValidationPipe({ + // // 下面两个class-transformer参数用于尝试将传进来的参数转成dto定义的类型 + // transform: true, + // transformOptions: { enableImplicitConversion: true }, // TODO to delete it + // // 是否禁用DTO参数校验错误详情 + // disableErrorMessages: this.starterConfig.disableErrorMessages, + // // 下面两个class-validator参数用于禁止未知的参数 + // // whitelist: true, + // // forbidNonWhitelisted: true, + // ...(this.starterConfig.disableErrorMessages + // ? { + // exceptionFactory: (_errors): PlatformException => { + // return new PlatformException(ErrorCodes.BAD_REQUEST, HttpStatus.BAD_REQUEST) + // }, + // } + // : {}), + // }), + // }, + /** + * 拦截框架内部异常 + */ + // { + // provide: APP_FILTER, + // useClass: GlobalFilter, + // }, + // /** + // * 限制请求来源页 + // */ + // ...(this.starterConfig.allowedReferers != null + // ? [{ + // provide: APP_GUARD, + // useClass: RefererGuard, + // }] + // : []), + ] + } +} diff --git a/packages/nest-starter/src/nest-util.ts b/packages/nest-starter/src/nest-util.ts new file mode 100644 index 00000000..548047c9 --- /dev/null +++ b/packages/nest-starter/src/nest-util.ts @@ -0,0 +1,58 @@ +import { INestApplication, Logger } from '@nestjs/common' +import { StarterConfig } from './config' +import { nestProcess } from './nest-process' + +export class NestUtil { + public readonly app: INestApplication + public readonly starterConfig: StarterConfig + + constructor(app: INestApplication, starterConfig: StarterConfig) { + this.app = app + this.starterConfig = starterConfig + } + + /** + * 是否为开发模式 + * - 本地环境 + * - 开发环境 + * - 测试环境 + */ + public isDevelopMode(): boolean { + return nestProcess.isDevelopMode() + } + + public async printAppModuleStarterLogger() { + // 未开启日志 + if (!this.starterConfig.enableLogger) + return + + const logger = new Logger(NestUtil.name) + + const apiUrl = await this.app.getUrl() + logger.log(`🚀 应用启动成功`) + + logger.log(`⚒️ 启动环境:${nestProcess.getNodeEnv()},运行配置:${nestProcess.getRunEnv()}.config.js`) + + // 应用名存在,则打印 + const appName = nestProcess.getAppEnv() + if (appName != null) { + logger.log(`╰┈┈┈┈┈┈┈┈┈┈┈➤ ${appName} 🔥🔥🔥`) + } + + logger.log(`🌐 HTTP服务: ${apiUrl}`) + // 如果有全局前缀 + if (this.starterConfig.globalPrefix) + logger.log(`🔗 全局路由前缀: ${this.starterConfig.globalPrefix}`) + + // 如果有GRPC服务 + // if (this.starterConfig.grpcServer?.url) + // logger.log(`🔌 GRPC服务: ${this.starterConfig.grpcServer.url}`) + + // 给swagger配置环境 + if (this.starterConfig.enableSwagger && this.starterConfig.swagger?.envs != null) { + for (const [envName, apiUrl] of Object.entries(this.starterConfig.swagger.envs)) { + logger.log(`📚 API Swagger文档,${envName}:${apiUrl}:${this.starterConfig.port}/${this.starterConfig.swagger?.docPath}`) + } + } + } +} diff --git a/packages/nest-starter/src/swagger/swagger.manager.ts b/packages/nest-starter/src/swagger/swagger.manager.ts new file mode 100644 index 00000000..1af6e68b --- /dev/null +++ b/packages/nest-starter/src/swagger/swagger.manager.ts @@ -0,0 +1,79 @@ +import { INestApplication } from '@nestjs/common' +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger' +import { OpenAPIObject, SwaggerCustomOptions } from '@nestjs/swagger/dist/interfaces' + +export interface DocumentBuilderOptions { + title?: string + description?: string + version?: string + serviceTerm?: string + contact?: { + name: string + url: string + email: string + } + license?: { + name: string + url: string + } +} + +export interface SwaggerOptions { + /** + * swagger路径 + */ + docPath: string + builderOptions?: DocumentBuilderOptions + customOptions?: SwaggerCustomOptions +} + +export class SwaggerDocumentBuilder { + public getConfig(options?: DocumentBuilderOptions): Omit { + const document = new DocumentBuilder() + // 初始化 + if (options == null) { + options = {} + } + if (options.title != null) { + document.setTitle(options.title) + } + + if (options.description != null) { + document.setDescription(options.description) + } + + if (options.version != null) { + document.setVersion(options.version) + } + if (options.serviceTerm != null) { + document.setTermsOfService(options.serviceTerm) + } + + if (options.contact != null) { + document.setContact(options.contact.name, options.contact.url, options.contact.email) + } + if (options.license != null) { + document.setLicense(options.license.name, options.license.url) + } + + return document.build() + } +} + +export class SwaggerManager { + private swaggerOptions: SwaggerOptions + constructor(swaggerOptions: SwaggerOptions) { + this.swaggerOptions = swaggerOptions + } + + /** + * 注册 + */ + public register(app: INestApplication): INestApplication { + const documentConfig = new SwaggerDocumentBuilder().getConfig(this.swaggerOptions?.builderOptions) + const document = SwaggerModule.createDocument(app, documentConfig) + SwaggerModule.setup(this.swaggerOptions.docPath, app, document, this.swaggerOptions.customOptions) + + return app + } +} diff --git a/packages/nest-starter/test/starter.spec.ts b/packages/nest-starter/test/starter.spec.ts new file mode 100644 index 00000000..188166d7 --- /dev/null +++ b/packages/nest-starter/test/starter.spec.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from '@jest/globals' + +describe('测试', () => { + it('测试用例', async () => { + expect(111).toBeDefined() + }) +}) diff --git a/packages/nest-starter/tsconfig.json b/packages/nest-starter/tsconfig.json new file mode 100644 index 00000000..f357a5ce --- /dev/null +++ b/packages/nest-starter/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.nest-pkg.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": [ + "src/**/*", + "**/test/**/*.ts" + ], + "exclude": [ + "node_modules", + "dist", + "**/test/**/*.ts" + ] +} From a5bc5dc38c74a5f78c58625b5d18373c24fad567 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 14:15:34 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat(nest-demo):=20=E5=9F=BA=E4=BA=8E`@142v?= =?UTF-8?q?ip/nest`=E5=91=A8=E8=BE=B9=E6=A8=A1=E5=9D=97=EF=BC=8C=E8=A1=A5?= =?UTF-8?q?=E5=85=85`Demo`=E6=9C=80=E4=BD=B3=E5=AE=9E=E8=B7=B5=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/nest-demo/config/test.config.js | 10 ++++++++++ apps/nest-demo/package.json | 13 +++++-------- apps/nest-demo/src/app.module.ts | 7 +++++-- .../config-example.controller.ts | 15 +++++++++++++++ .../config-example/config-example.module.ts | 9 +++++++++ .../config-example/config-example.service.ts | 11 +++++++++++ apps/nest-demo/src/config.ts | 7 +++++++ apps/nest-demo/src/main.ts | 10 +++------- packages/nest-starter/README.md | 18 ++---------------- 9 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 apps/nest-demo/config/test.config.js create mode 100644 apps/nest-demo/src/config-example/config-example.controller.ts create mode 100644 apps/nest-demo/src/config-example/config-example.module.ts create mode 100644 apps/nest-demo/src/config-example/config-example.service.ts create mode 100644 apps/nest-demo/src/config.ts diff --git a/apps/nest-demo/config/test.config.js b/apps/nest-demo/config/test.config.js new file mode 100644 index 00000000..c9cc5b5a --- /dev/null +++ b/apps/nest-demo/config/test.config.js @@ -0,0 +1,10 @@ +module.exports = { + starter: { + port: 3000, + enableSwagger: true, + swagger: {}, + // logger: {}, + enableLogger: true, + }, + // test: 1, +} diff --git a/apps/nest-demo/package.json b/apps/nest-demo/package.json index ffa1ca84..1f6b1ea5 100644 --- a/apps/nest-demo/package.json +++ b/apps/nest-demo/package.json @@ -10,30 +10,27 @@ "homePage": "https://142vip.cn" }, "scripts": { - "dev": "nest start -d -w", + "dev": "NODE_ENV=local RUN_ENV=test nest start -d -w", "dev:debug": "nest start --debug --watch", "dev:prod": "node dist/main", "build": "nest build", "start": "nest start" }, + "peerDependencies": { + "@142vip/nest": "workspace:*" + }, "dependencies": { "@142vip/nest-redis": "workspace:*", - "@nestjs/common": "11.1.6", - "@nestjs/core": "11.1.6", - "@nestjs/platform-express": "11.1.6", - "reflect-metadata": "0.2.2", - "rxjs": "7.8.1" + "@142vip/nest-starter": "workspace:*" }, "devDependencies": { "@nestjs/cli": "11.0.10", "@nestjs/schematics": "11.0.9", "@nestjs/testing": "11.1.7", "@types/express": "5.0.0", - "@types/jest": "30.0.0", "@types/supertest": "6.0.2", "source-map-support": "0.5.21", "supertest": "7.0.0", - "ts-jest": "29.2.5", "ts-loader": "9.5.2", "ts-node": "10.9.2", "tsconfig-paths": "4.2.0" diff --git a/apps/nest-demo/src/app.module.ts b/apps/nest-demo/src/app.module.ts index f9e3af29..233572c3 100644 --- a/apps/nest-demo/src/app.module.ts +++ b/apps/nest-demo/src/app.module.ts @@ -1,14 +1,17 @@ -import { RedisModule } from '@142vip/nest-redis' +import { NestRedisModule } from '@142vip/nest-redis' import { Module } from '@nestjs/common' +import { ConfigExampleModule } from './config-example/config-example.module' import { RedisExampleModule } from './redis-example/redis-example.module' @Module({ imports: [ // 全局模块 - RedisModule.register({ url: 'redis://localhost:6379' }), + NestRedisModule.register({ url: 'redis://172.16.202.252:6379' }), // 最佳实践 RedisExampleModule, + + ConfigExampleModule, ], }) export class AppModule {} diff --git a/apps/nest-demo/src/config-example/config-example.controller.ts b/apps/nest-demo/src/config-example/config-example.controller.ts new file mode 100644 index 00000000..2e78f5e9 --- /dev/null +++ b/apps/nest-demo/src/config-example/config-example.controller.ts @@ -0,0 +1,15 @@ +import { StarterConfig } from '@142vip/nest-starter' +import { Controller, Get } from '@nestjs/common' +import { ConfigExampleService } from './config-example.service' + +@Controller('config-example') +export class ConfigExampleController { + constructor( + private readonly configExampleService: ConfigExampleService, + ) {} + + @Get('/') + public 'Get /'(): StarterConfig { + return this.configExampleService.getStarterConfig() + } +} diff --git a/apps/nest-demo/src/config-example/config-example.module.ts b/apps/nest-demo/src/config-example/config-example.module.ts new file mode 100644 index 00000000..0759eea0 --- /dev/null +++ b/apps/nest-demo/src/config-example/config-example.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common' +import { ConfigExampleController } from './config-example.controller' +import { ConfigExampleService } from './config-example.service' + +@Module({ + controllers: [ConfigExampleController], + providers: [ConfigExampleService], +}) +export class ConfigExampleModule {} diff --git a/apps/nest-demo/src/config-example/config-example.service.ts b/apps/nest-demo/src/config-example/config-example.service.ts new file mode 100644 index 00000000..63f0485e --- /dev/null +++ b/apps/nest-demo/src/config-example/config-example.service.ts @@ -0,0 +1,11 @@ +import { StarterConfig } from '@142vip/nest-starter' + +export class ConfigExampleService { + constructor( + private readonly starterConfig: StarterConfig, + ) { } + + public getStarterConfig(): StarterConfig { + return this.starterConfig + } +} diff --git a/apps/nest-demo/src/config.ts b/apps/nest-demo/src/config.ts new file mode 100644 index 00000000..43537f6e --- /dev/null +++ b/apps/nest-demo/src/config.ts @@ -0,0 +1,7 @@ +import { NestAppConfig } from '@142vip/nest-starter' +import { IsNumber } from 'class-validator' + +export class Config extends NestAppConfig { + @IsNumber() + test!: number +} diff --git a/apps/nest-demo/src/main.ts b/apps/nest-demo/src/main.ts index 08e3052e..63afa511 100644 --- a/apps/nest-demo/src/main.ts +++ b/apps/nest-demo/src/main.ts @@ -1,9 +1,5 @@ -import { NestFactory } from '@nestjs/core' +import { NestStarter } from '@142vip/nest-starter' import { AppModule } from './app.module' -async function bootstrap(): Promise { - const app = await NestFactory.create(AppModule) - await app.listen(3000) -} - -void bootstrap() +// 统一启动类 +void NestStarter.getInstance().start(AppModule) diff --git a/packages/nest-starter/README.md b/packages/nest-starter/README.md index 50e8906e..0dff825f 100644 --- a/packages/nest-starter/README.md +++ b/packages/nest-starter/README.md @@ -13,25 +13,11 @@ pnpm i @142vip/nest-starter ## 配置 -```ts -import { NestAppConfig } from '@142vip/nest-starter' -import { IsNumber } from 'class-validator' - -export class Config extends NestAppConfig { - @IsNumber() - test!: number -} -``` - ## 使用 -```ts -import { NestStarter } from '@142vip/nest-starter' -import { AppModule } from './app.module' +### 模块注入 -// 统一启动类 -void NestStarter.getInstance().start(AppModule) -``` +### 使用服务 ## 参考 From 135baac999e0dea477deb62859b3cce4105fd6c3 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 4 Nov 2025 14:17:25 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E9=97=B4=E4=BE=9D=E8=B5=96=E7=9A=84=E7=89=88=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pnpm-lock.yaml | 1258 ++++++++++++++++++++++-------------------------- 1 file changed, 582 insertions(+), 676 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed03a85e..0e16428e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,40 +84,28 @@ importers: apps/nest-demo: dependencies: + '@142vip/nest': + specifier: workspace:* + version: link:../../packages/nest '@142vip/nest-redis': specifier: workspace:* version: link:../../packages/nest-redis - '@nestjs/common': - specifier: 11.1.6 - version: 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1) - '@nestjs/core': - specifier: 11.1.6 - version: 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1) - '@nestjs/platform-express': - specifier: 11.1.6 - version: 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6) - reflect-metadata: - specifier: 0.2.2 - version: 0.2.2 - rxjs: - specifier: 7.8.1 - version: 7.8.1 + '@142vip/nest-starter': + specifier: workspace:* + version: link:../../packages/nest-starter devDependencies: '@nestjs/cli': specifier: 11.0.10 version: 11.0.10(@types/node@24.3.1) '@nestjs/schematics': specifier: 11.0.9 - version: 11.0.9(chokidar@4.0.3)(typescript@5.8.3) + version: 11.0.9(chokidar@4.0.3)(typescript@5.9.2) '@nestjs/testing': specifier: 11.1.7 - version: 11.1.7(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6)) + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)) '@types/express': specifier: 5.0.0 version: 5.0.0 - '@types/jest': - specifier: 30.0.0 - version: 30.0.0 '@types/supertest': specifier: 6.0.2 version: 6.0.2 @@ -127,15 +115,12 @@ importers: supertest: specifier: 7.0.0 version: 7.0.0 - ts-jest: - specifier: 29.2.5 - version: 29.2.5(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(jest@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)))(typescript@5.8.3) ts-loader: specifier: 9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.9.2)(webpack@5.100.2) ts-node: specifier: 10.9.2 - version: 10.9.2(@types/node@24.3.1)(typescript@5.8.3) + version: 10.9.2(@types/node@24.3.1)(typescript@5.9.2) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -391,52 +376,137 @@ importers: packages/nest: dependencies: '@nestjs/common': - specifier: 10.4.15 - version: 10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0) + specifier: 11.1.7 + version: 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': - specifier: 10.4.15 - version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0) + specifier: 11.1.7 + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/platform-express': - specifier: 10.4.15 - version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15) + specifier: 11.1.7 + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7) + class-transformer: + specifier: 0.5.1 + version: 0.5.1 + class-validator: + specifier: 0.14.2 + version: 0.14.2 + fancy-log: + specifier: 2.0.0 + version: 2.0.0 + nest-typed-config: + specifier: 2.10.1 + version: 2.10.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.11.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typescript@5.8.3) + nestjs-pino: + specifier: 4.4.1 + version: 4.4.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@10.1.0)(rxjs@7.8.2) reflect-metadata: specifier: 0.2.2 version: 0.2.2 - rimraf: - specifier: 6.0.0 - version: 6.0.0 - rxjs: - specifier: 7.2.0 - version: 7.2.0 devDependencies: + '@nestjs/cli': + specifier: 11.0.10 + version: 11.0.10(@types/node@24.3.1) '@nestjs/schematics': - specifier: 10.2.3 - version: 10.2.3(chokidar@3.6.0)(typescript@5.9.2) + specifier: 11.0.9 + version: 11.0.9(chokidar@4.0.3)(typescript@5.8.3) '@nestjs/testing': - specifier: 10.4.15 - version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15)) + specifier: 11.1.7 + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)) '@types/express': specifier: 5.0.0 version: 5.0.0 + '@types/fancy-log': + specifier: 2.0.2 + version: 2.0.2 + '@types/jest': + specifier: 30.0.0 + version: 30.0.0 + '@types/supertest': + specifier: 6.0.2 + version: 6.0.2 + source-map-support: + specifier: 0.5.21 + version: 0.5.21 + supertest: + specifier: 7.0.0 + version: 7.0.0 + ts-jest: + specifier: 29.2.5 + version: 29.2.5(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(jest@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)))(typescript@5.8.3) + ts-loader: + specifier: 9.5.2 + version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + ts-node: + specifier: 10.9.2 + version: 10.9.2(@types/node@24.3.1)(typescript@5.8.3) + tsconfig-paths: + specifier: 4.2.0 + version: 4.2.0 + + packages/nest-logger: + dependencies: + '@142vip/nest': + specifier: workspace:* + version: link:../nest + nestjs-pino: + specifier: 4.4.1 + version: 4.4.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@9.4.0)(rxjs@7.8.2) + pino: + specifier: 9.4.0 + version: 9.4.0 + pino-http: + specifier: 11.0.0 + version: 11.0.0 + pino-pretty: + specifier: 11.3.0 + version: 11.3.0 packages/nest-redis: dependencies: + '@142vip/nest': + specifier: workspace:* + version: link:../nest '@142vip/redis': specifier: workspace:* version: link:../redis - '@nestjs/common': - specifier: 11.1.7 - version: 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': + devDependencies: + '@nestjs/cli': + specifier: 11.0.10 + version: 11.0.10(@types/node@24.3.1) + '@nestjs/testing': specifier: 11.1.7 - version: 11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2) + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)) + + packages/nest-starter: + dependencies: + '@142vip/nest': + specifier: workspace:* + version: link:../nest + '@142vip/nest-logger': + specifier: workspace:* + version: link:../nest-logger + '@142vip/nest-redis': + specifier: workspace:* + version: link:../nest-redis + '@142vip/nest-typeorm': + specifier: workspace:* + version: link:../nest-typeorm + '@142vip/utils': + specifier: workspace:* + version: link:../utils + '@nestjs/swagger': + specifier: 11.2.1 + version: 11.2.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) + nestjs-pino: + specifier: 4.4.1 + version: 4.4.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@10.1.0)(rxjs@7.8.2) devDependencies: '@nestjs/cli': specifier: 11.0.10 version: 11.0.10(@types/node@24.3.1) '@nestjs/testing': specifier: 11.1.7 - version: 11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)) + version: 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)) packages/nest-typeorm: dependencies: @@ -445,13 +515,10 @@ importers: version: link:../nest '@nestjs/typeorm': specifier: 11.0.0 - version: 11.0.0(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.12.0)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2))) - mysql2: - specifier: 3.12.0 - version: 3.12.0 + version: 11.0.0(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.15.1)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2))) typeorm: specifier: 0.3.21 - version: 0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.12.0)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)) + version: 0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.15.1)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)) packages/oauth: dependencies: @@ -743,15 +810,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/core@17.3.11': - resolution: {integrity: sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==} - 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: - chokidar: - optional: true - '@angular-devkit/core@19.2.15': resolution: {integrity: sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -775,10 +833,6 @@ packages: engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/schematics@17.3.11': - resolution: {integrity: sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==} - engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@19.2.15': resolution: {integrity: sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1842,6 +1896,9 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} + '@iarna/toml@2.2.5': + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + '@iconify-json/simple-icons@1.2.23': resolution: {integrity: sha512-ySyZ0ZXdNveWnR71t7XGV7jhknxSlTtpM2TyIR1cUHTUzZLP36hYHTNqb2pYYsCzH5ed85KTTKz7vYT33FyNIQ==} @@ -2630,6 +2687,9 @@ packages: '@mermaid-js/parser@0.6.3': resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + '@microsoft/tsdoc@0.15.1': + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + '@mongodb-js/saslprep@1.3.0': resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==} @@ -2753,6 +2813,13 @@ packages: '@napi-rs/wasm-runtime@1.0.1': resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@nestjs/axios@4.0.1': + resolution: {integrity: sha512-68pFJgu+/AZbWkGu65Z3r55bTsCPlgyKaV4BSG8yUAD72q1PPuyVRgUwFv6BxdnibTUHlyxm06FmYWNC+bjN7A==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + axios: ^1.3.1 + rxjs: ^7.0.0 + '@nestjs/cli@11.0.10': resolution: {integrity: sha512-4waDT0yGWANg0pKz4E47+nUrqIJv/UqrZ5wLPkCqc7oMGRMWKAaw1NDZ9rKsaqhqvxb2LfI5+uXOWr4yi94DOQ==} engines: {node: '>= 20.11'} @@ -2766,32 +2833,6 @@ packages: '@swc/core': optional: true - '@nestjs/common@10.4.15': - resolution: {integrity: sha512-vaLg1ZgwhG29BuLDxPA9OAcIlgqzp9/N8iG0wGapyUNTf4IY4O6zAHgN6QalwLhFxq7nOI021vdRojR1oF3bqg==} - peerDependencies: - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - - '@nestjs/common@11.1.6': - resolution: {integrity: sha512-krKwLLcFmeuKDqngG2N/RuZHCs2ycsKcxWIDgcm7i1lf3sQ0iG03ci+DsP/r3FcT/eJDFsIHnKtNta2LIi7PzQ==} - peerDependencies: - class-transformer: '>=0.4.1' - class-validator: '>=0.13.2' - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - '@nestjs/common@11.1.7': resolution: {integrity: sha512-lwlObwGgIlpXSXYOTpfzdCepUyWomz6bv9qzGzzvpgspUxkj0Uz0fUJcvD44V8Ps7QhKW3lZBoYbXrH25UZrbA==} peerDependencies: @@ -2805,25 +2846,8 @@ packages: class-validator: optional: true - '@nestjs/core@10.4.15': - resolution: {integrity: sha512-UBejmdiYwaH6fTsz2QFBlC1cJHM+3UDeLZN+CiP9I1fRv2KlBZsmozGLbV5eS1JAVWJB4T5N5yQ0gjN8ZvcS2w==} - 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 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true - - '@nestjs/core@11.1.6': - resolution: {integrity: sha512-siWX7UDgErisW18VTeJA+x+/tpNZrJewjTBsRPF3JVxuWRuAB1kRoiJcxHgln8Lb5UY9NdvklITR84DUEXD0Cg==} + '@nestjs/core@11.1.7': + resolution: {integrity: sha512-TyXFOwjhHv/goSgJ8i20K78jwTM0iSpk9GBcC2h3mf4MxNy+znI8m7nWjfoACjTkb89cTwDQetfTHtSfGLLaiA==} engines: {node: '>= 20'} peerDependencies: '@nestjs/common': ^11.0.0 @@ -2840,57 +2864,45 @@ packages: '@nestjs/websockets': optional: true - '@nestjs/core@11.1.7': - resolution: {integrity: sha512-TyXFOwjhHv/goSgJ8i20K78jwTM0iSpk9GBcC2h3mf4MxNy+znI8m7nWjfoACjTkb89cTwDQetfTHtSfGLLaiA==} - engines: {node: '>= 20'} + '@nestjs/mapped-types@2.1.0': + resolution: {integrity: sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==} peerDependencies: - '@nestjs/common': ^11.0.0 - '@nestjs/microservices': ^11.0.0 - '@nestjs/platform-express': ^11.0.0 - '@nestjs/websockets': ^11.0.0 + '@nestjs/common': ^10.0.0 || ^11.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': + class-transformer: optional: true - '@nestjs/websockets': + class-validator: optional: true - '@nestjs/platform-express@10.4.15': - resolution: {integrity: sha512-63ZZPkXHjoDyO7ahGOVcybZCRa7/Scp6mObQKjcX/fTEq1YJeU75ELvMsuQgc8U2opMGOBD7GVuc4DV0oeDHoA==} - peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 - - '@nestjs/platform-express@11.1.6': - resolution: {integrity: sha512-HErwPmKnk+loTq8qzu1up+k7FC6Kqa8x6lJ4cDw77KnTxLzsCaPt+jBvOq6UfICmfqcqCCf3dKXg+aObQp+kIQ==} + '@nestjs/platform-express@11.1.7': + resolution: {integrity: sha512-5T+GLdvTiGPKB4/P4PM9ftKUKNHJy8ThEFhZA3vQnXVL7Vf0rDr07TfVTySVu+XTh85m1lpFVuyFM6u6wLNsRA==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 - '@nestjs/schematics@10.2.3': - resolution: {integrity: sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg==} - peerDependencies: - typescript: '>=4.8.2' - '@nestjs/schematics@11.0.9': resolution: {integrity: sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==} peerDependencies: typescript: '>=4.8.2' - '@nestjs/testing@10.4.15': - resolution: {integrity: sha512-eGlWESkACMKti+iZk1hs6FUY/UqObmMaa8HAN9JLnaYkoLf1Jeh+EuHlGnfqo/Rq77oznNLIyaA3PFjrFDlNUg==} + '@nestjs/swagger@11.2.1': + resolution: {integrity: sha512-1MS7xf0pzc1mofG53xrrtrurnziafPUHkqzRm4YUVPA/egeiMaSerQBD/feiAeQ2BnX0WiLsTX4HQFO0icvOjQ==} peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 - '@nestjs/microservices': ^10.0.0 - '@nestjs/platform-express': ^10.0.0 + '@fastify/static': ^8.0.0 + '@nestjs/common': ^11.0.1 + '@nestjs/core': ^11.0.1 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 || ^0.2.0 peerDependenciesMeta: - '@nestjs/microservices': + '@fastify/static': optional: true - '@nestjs/platform-express': + class-transformer: + optional: true + class-validator: optional: true '@nestjs/testing@11.1.7': @@ -2936,11 +2948,6 @@ packages: engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} hasBin: true - '@nuxtjs/opencollective@0.3.2': - resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true - '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} @@ -3032,6 +3039,9 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3464,6 +3474,9 @@ packages: cpu: [x64] os: [win32] + '@scarf/scarf@1.4.0': + resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + '@shikijs/core@2.3.1': resolution: {integrity: sha512-u9WTI0CgQUicTJjkHoJbZosxLP2AlBPr8RV3cuh4SQDsXYqMomjnAoo4lZSqVq8a8kpMwyv/LqoSrg69dH0ZeA==} @@ -3739,6 +3752,9 @@ packages: '@types/express@5.0.0': resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + '@types/fancy-log@2.0.2': + resolution: {integrity: sha512-SXVJvqWjsl90VwBfp7w4iQ0iO+vxAjQImglcpwbV9GkqNoUD5/p9Wsgetl40F1WL7pzWFN/eZPTF1g5FZXJsIw==} + '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} @@ -4684,9 +4700,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -4779,9 +4792,6 @@ packages: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} @@ -4812,6 +4822,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -4961,10 +4975,6 @@ packages: black-hole-stream@0.0.1: resolution: {integrity: sha512-FQSWhFQZmddoqWkwPMFeR5hJo9waZE796MuO7b0poStaPrm0Qr2em9FT4/TF1+0rOA1dRFabX+88rdX8YHxDTA==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} engines: {node: '>=18'} @@ -5210,6 +5220,12 @@ packages: cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} + class-transformer@0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + + class-validator@0.14.2: + resolution: {integrity: sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==} + clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -5310,9 +5326,16 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colorjs.io@0.5.2: resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} @@ -5354,10 +5377,6 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - comment-json@4.2.5: - resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} - engines: {node: '>= 6'} - comment-json@4.4.1: resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==} engines: {node: '>= 6'} @@ -5383,10 +5402,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} @@ -5404,9 +5419,6 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - consola@3.4.0: resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -5432,17 +5444,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -5789,6 +5794,15 @@ packages: supports-color: optional: true + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -6001,6 +6015,10 @@ packages: resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} engines: {node: '>=4'} + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} + engines: {node: '>=12'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -6529,10 +6547,6 @@ packages: resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - express@5.1.0: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} @@ -6561,6 +6575,13 @@ packages: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} + fancy-log@2.0.0: + resolution: {integrity: sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==} + engines: {node: '>=10.13.0'} + + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + fast-deep-equal@2.0.1: resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} @@ -6581,6 +6602,10 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -6646,10 +6671,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - finalhandler@2.1.0: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} @@ -6873,11 +6894,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true - glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} @@ -6965,10 +6981,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -7018,6 +7030,9 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + hls.js@1.6.13: resolution: {integrity: sha512-hNEzjZNHf5bFrUNvdS4/1RjIanuJ6szpWNfTaX5I6WfGynWXGT7K/YQLYtemSvFExzeMdgdE4SsyVLJbd5PcZA==} @@ -7275,6 +7290,14 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -7333,6 +7356,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -7371,10 +7398,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} - jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} @@ -7679,6 +7702,10 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-md4@0.3.2: resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==} @@ -7744,9 +7771,6 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -7880,6 +7904,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + libphonenumber-js@1.12.25: + resolution: {integrity: sha512-u90tUu/SEF8b+RaDKCoW7ZNFDakyBtFlX1ex3J+VH+ElWes/UaitJLt/w4jGu8uAE41lltV/s+kMVtywcMEg7g==} + lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} @@ -7908,10 +7935,6 @@ packages: lit@3.2.1: resolution: {integrity: sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==} - load-esm@1.0.2: - resolution: {integrity: sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==} - engines: {node: '>=13.2.0'} - load-esm@1.0.3: resolution: {integrity: sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==} engines: {node: '>=13.2.0'} @@ -7955,6 +7978,9 @@ packages: lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.frompairs@4.0.1: + resolution: {integrity: sha512-dvqe2I+cO5MzXCMhUnfYFa9MD+/760yx2aTAN1lqEcEkf896TxgrX373igVdqSJj6tQd0jnSLE1UMuKufqqxFw==} + lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -8051,10 +8077,6 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -8302,11 +8324,6 @@ packages: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -8327,10 +8344,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@10.0.3: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} @@ -8445,6 +8458,9 @@ packages: ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -8457,11 +8473,6 @@ packages: resolution: {integrity: sha512-NdkOVav3GoIkBZqMUneU435HW0a90zitpuO1erPRhOQdPtl65dXD3G9/1k46G6/0ZMau4CJFFUHkMKVsyNZT+w==} engines: {node: '>=4'} - multer@1.4.4-lts.1: - resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} - engines: {node: '>= 6.0.0'} - deprecated: Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version. - multer@2.0.2: resolution: {integrity: sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==} engines: {node: '>= 10.16.0'} @@ -8482,10 +8493,6 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - mysql2@3.12.0: - resolution: {integrity: sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==} - engines: {node: '>= 8.0'} - mysql2@3.15.1: resolution: {integrity: sha512-WZMIRZstT2MFfouEaDz/AGFnGi1A2GwaDe7XvKTdRJEYiAHbOrh4S3d8KFmQeh11U85G+BFjIvS1Di5alusZsw==} engines: {node: '>= 8.0'} @@ -8554,6 +8561,22 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + nest-typed-config@2.10.1: + resolution: {integrity: sha512-mAWVB/AsTFyT3Gu981HoQvx57Lnr3pSGtJjtvmSCyNLsklPAxjmRZScGD9WkoSEL5xaG4Uxfk4y4PxXJ/9oTBg==} + peerDependencies: + '@nestjs/common': '>= 6.10.0 < 12' + reflect-metadata: '>= 0.1.12 < 0.3' + rxjs: '>= 6.0.0 < 8' + + nestjs-pino@4.4.1: + resolution: {integrity: sha512-/E/JOtsUf/yHFGJx+zxBfwjCn1uJVV9AxSyx/mD0oNFCP+psvv9XE7WGh5Cebo6TwukF4qEu37eissGErVwLVg==} + engines: {node: '>= 14'} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + pino: ^7.5.0 || ^8.0.0 || ^9.0.0 + pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + rxjs: ^7.1.0 + nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -8577,15 +8600,6 @@ packages: node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-hex@1.0.1: resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==} engines: {node: '>=8.0.0'} @@ -8636,6 +8650,10 @@ packages: ofetch@1.3.4: resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -8833,19 +8851,9 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@1.9.0: resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - path-to-regexp@3.3.0: - resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} - path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} @@ -8917,10 +8925,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.1: - resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} - engines: {node: '>=12'} - picomatch@4.0.2: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} @@ -8929,13 +8933,37 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-http@11.0.0: + resolution: {integrity: sha512-wqg5XIAGRRIWtTk8qPGxkbrfiwEWz1lgedVLvhLALudKXvg1/L2lTFgTGPJ4Z2e3qcRmxoFxDuSdMdMGNM6I1g==} + + pino-pretty@11.3.0: + resolution: {integrity: sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA==} + hasBin: true + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@10.1.0: + resolution: {integrity: sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==} + hasBin: true + + pino@9.4.0: + resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -9228,6 +9256,12 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -9306,10 +9340,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} @@ -9329,6 +9359,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + random-bytes@1.0.0: resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} engines: {node: '>= 0.8'} @@ -9377,6 +9410,10 @@ packages: resolution: {integrity: sha512-wGhjJMrxVEX35Ec+QlM2FW+ZsXhThNCbmdk+x22vzwRPPsDUNgq7C6nU0EpJRvNJSK/MiwQ73XZljo/IKhovXA==} engines: {node: '>=14.0.0'} + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -9444,10 +9481,6 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - request@2.88.0: resolution: {integrity: sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==} engines: {node: '>= 4'} @@ -9515,11 +9548,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@6.0.0: - resolution: {integrity: sha512-u+yqhM92LW+89cxUQK0SRyvXYQmyuKHx0jkx4W7KfwLGLqJnQM5031Uv1trE4gB9XEXBM/s6MxKlfW95IidqaA==} - engines: {node: 20 || >=22} - hasBin: true - rndm@1.2.0: resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==} @@ -9573,9 +9601,6 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - rxjs@7.2.0: - resolution: {integrity: sha512-aX8w9OpKrQmiPKfT1bqETtUr9JygIz6GZ+gql8v7CijClsP0laoFUdKzxFAoWuRdSlOdU2+crss+cMf+cqMTnw==} - rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -9592,6 +9617,10 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safe-timers@1.1.0: resolution: {integrity: sha512-9aqY+v5eMvmRaluUEtdRThV1EjlSElzO7HuCj0sTW9xvp++8iJ9t/RWGNWV6/WHcUJLHpyT2SNf/apoKTU2EpA==} @@ -9760,6 +9789,9 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -9778,10 +9810,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - send@1.2.0: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} @@ -9844,10 +9872,6 @@ packages: resolution: {integrity: sha512-TJvXOXSUEH4Lh2FNy1mYzNkUyBG7Ti5fRKGAbcpaDX3mLq23aT/5unC+cIFc5JTDi4/BHTaYLhynrboCCYrFaQ==} engines: {node: '>= 4.0.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - serve-static@2.2.0: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} @@ -9859,6 +9883,10 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -9949,6 +9977,9 @@ packages: resolution: {integrity: sha512-gL+8v+QRisaXAcmGHoN+WSdaSoUy186LBRBGPewLt4/L/MWz2odkk7PHZARgG7UfhC4i5F+4ZrcwJ09J6u0jQA==} engines: {node: '>= 10'} + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -10184,6 +10215,9 @@ packages: engines: {node: '>=16'} hasBin: true + swagger-ui-dist@5.29.4: + resolution: {integrity: sha512-gJFDz/gyLOCQtWwAgqs6Rk78z9ONnqTnlW11gimG9nLap8drKa3AJBKpzIQMIjl5PD2Ix+Tn+mc/tfoT2tgsng==} + symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} @@ -10279,6 +10313,9 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -10330,9 +10367,6 @@ packages: resolution: {integrity: sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==} engines: {node: '>=0.8'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -10448,9 +10482,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@2.1.0: - resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -10784,10 +10815,6 @@ packages: resolution: {integrity: sha512-lDbOVde5UAKgtxrSyZNhqrTA7f7anba6DTqbsDWgUFk6PZlmr7djqPYw0FnL5a6TbJvRt38VmYqt07zVLzXG2A==} engines: {node: '>= 16.0.0'} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -11122,9 +11149,6 @@ packages: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -11162,9 +11186,6 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -11457,17 +11478,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.30 - '@angular-devkit/core@17.3.11(chokidar@3.6.0)': - dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - jsonc-parser: 3.2.1 - picomatch: 4.0.1 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 3.6.0 - '@angular-devkit/core@19.2.15(chokidar@4.0.3)': dependencies: ajv: 8.17.1 @@ -11502,16 +11512,6 @@ snapshots: - '@types/node' - chokidar - '@angular-devkit/schematics@17.3.11(chokidar@3.6.0)': - dependencies: - '@angular-devkit/core': 17.3.11(chokidar@3.6.0) - jsonc-parser: 3.2.1 - magic-string: 0.30.8 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - '@angular-devkit/schematics@19.2.15(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 19.2.15(chokidar@4.0.3) @@ -12625,6 +12625,9 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} + '@iarna/toml@2.2.5': + optional: true + '@iconify-json/simple-icons@1.2.23': dependencies: '@iconify/types': 2.0.0 @@ -13612,6 +13615,8 @@ snapshots: dependencies: langium: 3.3.1 + '@microsoft/tsdoc@0.15.1': {} + '@mongodb-js/saslprep@1.3.0': dependencies: sparse-bitfield: 3.0.3 @@ -13686,6 +13691,13 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true + '@nestjs/axios@4.0.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.11.0)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + axios: 1.11.0 + rxjs: 7.8.2 + optional: true + '@nestjs/cli@11.0.10(@types/node@24.3.1)': dependencies: '@angular-devkit/core': 19.2.15(chokidar@4.0.3) @@ -13713,27 +13725,7 @@ snapshots: - uglify-js - webpack-cli - '@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0)': - dependencies: - iterare: 1.2.1 - reflect-metadata: 0.2.2 - rxjs: 7.2.0 - tslib: 2.8.1 - uid: 2.0.2 - - '@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1)': - dependencies: - file-type: 21.0.0 - iterare: 1.2.1 - load-esm: 1.0.2 - reflect-metadata: 0.2.2 - rxjs: 7.8.1 - tslib: 2.8.1 - uid: 2.0.2 - transitivePeerDependencies: - - supports-color - - '@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: file-type: 21.0.0 iterare: 1.2.1 @@ -13742,42 +13734,15 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 uid: 2.0.2 - transitivePeerDependencies: - - supports-color - - '@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0)': - dependencies: - '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0) - '@nuxtjs/opencollective': 0.3.2 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 3.3.0 - reflect-metadata: 0.2.2 - rxjs: 7.2.0 - tslib: 2.8.1 - uid: 2.0.2 optionalDependencies: - '@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15) + class-transformer: 0.5.1 + class-validator: 0.14.2 transitivePeerDependencies: - - encoding - - '@nestjs/core@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1)': - dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1) - '@nuxt/opencollective': 0.4.1 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 8.2.0 - reflect-metadata: 0.2.2 - rxjs: 7.8.1 - tslib: 2.8.1 - uid: 2.0.2 - optionalDependencies: - '@nestjs/platform-express': 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6) + - supports-color - '@nestjs/core@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nuxt/opencollective': 0.4.1 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -13787,98 +13752,80 @@ snapshots: tslib: 2.8.1 uid: 2.0.2 optionalDependencies: - '@nestjs/platform-express': 11.1.6(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7) - - '@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15)': - dependencies: - '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0) - '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0) - body-parser: 1.20.3 - cors: 2.8.5 - express: 4.21.2 - multer: 1.4.4-lts.1 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color + '@nestjs/platform-express': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7) - '@nestjs/platform-express@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6)': + '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)': dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1) - '@nestjs/core': 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1) - cors: 2.8.5 - express: 5.1.0 - multer: 2.0.2 - path-to-regexp: 8.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + reflect-metadata: 0.2.2 + optionalDependencies: + class-transformer: 0.5.1 + class-validator: 0.14.2 - '@nestjs/platform-express@11.1.6(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)': + '@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7)': dependencies: - '@nestjs/common': 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2) cors: 2.8.5 express: 5.1.0 multer: 2.0.2 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - optional: true - '@nestjs/schematics@10.2.3(chokidar@3.6.0)(typescript@5.9.2)': + '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.8.3)': dependencies: - '@angular-devkit/core': 17.3.11(chokidar@3.6.0) - '@angular-devkit/schematics': 17.3.11(chokidar@3.6.0) - comment-json: 4.2.5 + '@angular-devkit/core': 19.2.17(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3) + comment-json: 4.4.1 jsonc-parser: 3.3.1 pluralize: 8.0.0 - typescript: 5.9.2 + typescript: 5.8.3 transitivePeerDependencies: - chokidar - '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.8.3)': + '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.9.2)': dependencies: '@angular-devkit/core': 19.2.17(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3) comment-json: 4.4.1 jsonc-parser: 3.3.1 pluralize: 8.0.0 - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - chokidar - '@nestjs/testing@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15))': + '@nestjs/swagger@11.2.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)': dependencies: - '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0) - '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.2.0) - tslib: 2.8.1 - optionalDependencies: - '@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.2.0))(@nestjs/core@10.4.15) - - '@nestjs/testing@11.1.7(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6))': - dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1) - '@nestjs/core': 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.1) - tslib: 2.8.1 + '@microsoft/tsdoc': 0.15.1 + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) + js-yaml: 4.1.0 + lodash: 4.17.21 + path-to-regexp: 8.3.0 + reflect-metadata: 0.2.2 + swagger-ui-dist: 5.29.4 optionalDependencies: - '@nestjs/platform-express': 11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.1.6) + class-transformer: 0.5.1 + class-validator: 0.14.2 - '@nestjs/testing@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7))': + '@nestjs/testing@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7))': dependencies: - '@nestjs/common': 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 optionalDependencies: - '@nestjs/platform-express': 11.1.6(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7) + '@nestjs/platform-express': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7) - '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.12.0)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)))': + '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.15.1)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)))': dependencies: - '@nestjs/common': 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.7(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.7)(reflect-metadata@0.2.2)(rxjs@7.8.2) reflect-metadata: 0.2.2 rxjs: 7.8.2 - typeorm: 0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.12.0)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)) + typeorm: 0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.15.1)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)) '@noble/hashes@1.8.0': {} @@ -13898,14 +13845,6 @@ snapshots: dependencies: consola: 3.4.0 - '@nuxtjs/opencollective@0.3.2': - dependencies: - chalk: 4.1.2 - consola: 2.15.3 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - '@paralleldrive/cuid2@2.2.2': dependencies: '@noble/hashes': 1.8.0 @@ -13971,6 +13910,8 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true + '@pinojs/redact@0.4.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -14231,6 +14172,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true + '@scarf/scarf@1.4.0': {} + '@shikijs/core@2.3.1': dependencies: '@shikijs/engine-javascript': 2.3.1 @@ -14592,6 +14535,8 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 + '@types/fancy-log@2.0.2': {} + '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 @@ -15830,10 +15775,6 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: - ajv: 8.12.0 - ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -15858,13 +15799,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -15952,8 +15886,6 @@ snapshots: array-differ@3.0.0: {} - array-flatten@1.1.1: {} - array-timsort@1.0.3: {} array-union@2.1.0: {} @@ -15974,6 +15906,8 @@ snapshots: asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.26.2 @@ -16272,23 +16206,6 @@ snapshots: black-hole-stream@0.0.1: {} - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - body-parser@2.2.0: dependencies: bytes: 3.1.2 @@ -16579,6 +16496,14 @@ snapshots: cjs-module-lexer@2.1.0: {} + class-transformer@0.5.1: {} + + class-validator@0.14.2: + dependencies: + '@types/validator': 13.12.2 + libphonenumber-js: 1.12.25 + validator: 13.12.0 + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -16702,8 +16627,12 @@ snapshots: color-name@1.1.4: {} + color-support@1.1.3: {} + colord@2.9.3: {} + colorette@2.0.20: {} + colorjs.io@0.5.2: {} combined-stream@1.0.8: @@ -16733,14 +16662,6 @@ snapshots: commander@8.3.0: {} - comment-json@4.2.5: - dependencies: - array-timsort: 1.0.3 - core-util-is: 1.0.3 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - comment-json@4.4.1: dependencies: array-timsort: 1.0.3 @@ -16772,13 +16693,6 @@ snapshots: concat-map@0.0.1: {} - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 @@ -16794,8 +16708,6 @@ snapshots: connect-history-api-fallback@2.0.0: {} - consola@2.15.3: {} - consola@3.4.0: {} constant-case@3.0.4: @@ -16818,12 +16730,8 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} - cookie-signature@1.2.2: {} - cookie@0.7.1: {} - cookie@0.7.2: {} cookiejar@2.1.4: {} @@ -16871,6 +16779,16 @@ snapshots: optionalDependencies: typescript: 5.8.3 + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + optional: true + cosmiconfig@9.0.0(typescript@5.9.2): dependencies: env-paths: 2.2.1 @@ -17233,6 +17151,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.3.4: + dependencies: + ms: 2.1.2 + debug@4.4.0: dependencies: ms: 2.1.3 @@ -17410,6 +17332,11 @@ snapshots: dependencies: is-obj: 1.0.1 + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.4.7 + optional: true + dotenv@16.4.7: {} dottie@2.0.6: {} @@ -18267,42 +18194,6 @@ snapshots: jest-mock: 30.2.0 jest-util: 30.2.0 - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - express@5.1.0: dependencies: accepts: 2.0.0 @@ -18355,6 +18246,12 @@ snapshots: extsprintf@1.3.0: {} + fancy-log@2.0.0: + dependencies: + color-support: 1.1.3 + + fast-copy@3.0.2: {} + fast-deep-equal@2.0.1: {} fast-deep-equal@3.1.3: {} @@ -18379,6 +18276,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-redact@3.5.0: {} + fast-safe-stringify@2.1.1: {} fast-uri@3.1.0: {} @@ -18436,18 +18335,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - finalhandler@2.1.0: dependencies: debug: 4.4.3(supports-color@8.1.1) @@ -18690,15 +18577,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.0: - dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - glob@11.0.3: dependencies: foreground-child: 3.3.1 @@ -18798,8 +18676,6 @@ snapshots: has-flag@4.0.0: {} - has-own-prop@2.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -18884,6 +18760,8 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 + help-me@5.0.0: {} + hls.js@1.6.13: {} hookable@5.5.3: {} @@ -19042,7 +18920,7 @@ snapshots: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.1 + rxjs: 7.8.2 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -19147,6 +19025,12 @@ snapshots: is-plain-obj@4.1.0: {} + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-primitive@3.0.1: {} + is-promise@4.0.0: {} is-property@1.0.2: {} @@ -19196,6 +19080,8 @@ snapshots: isexe@2.0.0: {} + isobject@3.0.1: {} + isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -19255,10 +19141,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 @@ -20031,6 +19913,8 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + joycon@3.1.1: {} + js-md4@0.3.2: {} js-tokens@4.0.0: {} @@ -20077,8 +19961,6 @@ snapshots: espree: 9.6.1 semver: 7.7.2 - jsonc-parser@3.2.1: {} - jsonc-parser@3.3.1: {} jsonfile@6.1.0: @@ -20269,6 +20151,8 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + libphonenumber-js@1.12.25: {} + lie@3.1.1: dependencies: immediate: 3.0.6 @@ -20305,8 +20189,6 @@ snapshots: lit-element: 4.1.1 lit-html: 3.2.1 - load-esm@1.0.2: {} - load-esm@1.0.3: {} loader-runner@4.3.1: {} @@ -20346,6 +20228,8 @@ snapshots: lodash.defaults@4.2.0: {} + lodash.frompairs@4.0.1: {} + lodash.includes@4.3.0: {} lodash.isarguments@3.1.0: {} @@ -20422,10 +20306,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.8: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - make-dir@4.0.0: dependencies: semver: 7.7.2 @@ -20863,8 +20743,6 @@ snapshots: dependencies: mime-db: 1.54.0 - mime@1.6.0: {} - mime@2.6.0: {} mimic-fn@2.1.0: {} @@ -20875,10 +20753,6 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@10.0.3: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -21019,6 +20893,8 @@ snapshots: ms@2.0.0: {} + ms@2.1.2: {} + ms@2.1.3: {} mssql@11.0.1: @@ -21034,16 +20910,6 @@ snapshots: muk-prop@1.2.1: {} - multer@1.4.4-lts.1: - dependencies: - append-field: 1.0.0 - busboy: 1.6.0 - concat-stream: 1.6.2 - mkdirp: 0.5.6 - object-assign: 4.1.1 - type-is: 1.6.18 - xtend: 4.0.2 - multer@2.0.2: dependencies: append-field: 1.0.0 @@ -21068,18 +20934,6 @@ snapshots: mute-stream@2.0.0: {} - mysql2@3.12.0: - dependencies: - aws-ssl-profiles: 1.1.2 - denque: 2.1.0 - generate-function: 2.3.1 - iconv-lite: 0.6.3 - long: 5.2.4 - lru.min: 1.1.1 - named-placeholders: 1.1.3 - seq-queue: 0.0.5 - sqlstring: 2.3.3 - mysql2@3.15.1: dependencies: aws-ssl-profiles: 1.1.2 @@ -21136,6 +20990,45 @@ snapshots: neo-async@2.6.2: {} + nest-typed-config@2.10.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.11.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typescript@5.8.3): + dependencies: + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + chalk: 4.1.2 + class-transformer: 0.5.1 + class-validator: 0.14.2 + debug: 4.3.4 + lodash.frompairs: 4.0.1 + lodash.merge: 4.6.2 + reflect-metadata: 0.2.2 + rxjs: 7.8.2 + set-value: 4.1.0 + optionalDependencies: + '@iarna/toml': 2.2.5 + '@nestjs/axios': 4.0.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.11.0)(rxjs@7.8.2) + cosmiconfig: 9.0.0(typescript@5.8.3) + dotenv: 16.4.7 + dotenv-expand: 12.0.3 + parse-json: 5.2.0 + yaml: 2.8.1 + transitivePeerDependencies: + - axios + - supports-color + - typescript + + nestjs-pino@4.4.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@10.1.0)(rxjs@7.8.2): + dependencies: + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + pino: 10.1.0 + pino-http: 11.0.0 + rxjs: 7.8.2 + + nestjs-pino@4.4.1(@nestjs/common@11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@9.4.0)(rxjs@7.8.2): + dependencies: + '@nestjs/common': 11.1.7(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + pino: 9.4.0 + pino-http: 11.0.0 + rxjs: 7.8.2 + nice-try@1.0.5: {} no-case@3.0.4: @@ -21156,10 +21049,6 @@ snapshots: node-fetch-native@1.6.4: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-hex@1.0.1: {} node-homedir@1.1.1: {} @@ -21196,6 +21085,8 @@ snapshots: node-fetch-native: 1.6.4 ufo: 1.5.4 + on-exit-leak-free@2.1.2: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -21402,16 +21293,10 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - path-to-regexp@1.9.0: dependencies: isarray: 0.0.1 - path-to-regexp@3.3.0: {} - - path-to-regexp@8.2.0: {} - path-to-regexp@8.3.0: {} path-type@4.0.0: {} @@ -21473,12 +21358,73 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.1: {} - picomatch@4.0.2: {} picomatch@4.0.3: {} + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.7.0 + split2: 4.2.0 + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-http@11.0.0: + dependencies: + get-caller-file: 2.0.5 + pino: 10.1.0 + pino-std-serializers: 7.0.0 + process-warning: 5.0.0 + + pino-pretty@11.3.0: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.3 + readable-stream: 4.7.0 + secure-json-parse: 2.7.0 + sonic-boom: 4.2.0 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.0.0: {} + + pino@10.1.0: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 5.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 + + pino@9.4.0: + 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.1 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + pirates@4.0.6: {} pirates@4.0.7: {} @@ -21754,6 +21700,10 @@ snapshots: process-nextick-args@2.0.1: {} + process-warning@4.0.1: {} + + process-warning@5.0.0: {} + process@0.11.10: {} prompts@2.4.2: @@ -21843,10 +21793,6 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -21859,6 +21805,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + random-bytes@1.0.0: {} randombytes@2.1.0: @@ -21923,6 +21871,8 @@ snapshots: transitivePeerDependencies: - supports-color + real-require@0.2.0: {} + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -22012,8 +21962,6 @@ snapshots: transitivePeerDependencies: - supports-color - repeat-string@1.6.1: {} - request@2.88.0: dependencies: aws-sign2: 0.7.0 @@ -22083,10 +22031,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@6.0.0: - dependencies: - glob: 11.0.0 - rndm@1.2.0: {} robust-predicates@3.0.2: {} @@ -22191,7 +22135,7 @@ snapshots: depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color @@ -22209,10 +22153,6 @@ snapshots: rw@1.3.3: {} - rxjs@7.2.0: - dependencies: - tslib: 2.1.0 - rxjs@7.8.1: dependencies: tslib: 2.8.1 @@ -22231,6 +22171,8 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@2.5.0: {} + safe-timers@1.1.0: {} safer-buffer@2.1.2: {} @@ -22384,6 +22326,8 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 + secure-json-parse@2.7.0: {} + semver@5.7.2: {} semver@6.3.1: {} @@ -22392,24 +22336,6 @@ snapshots: semver@7.7.2: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - send@1.2.0: dependencies: debug: 4.4.3(supports-color@8.1.1) @@ -22475,15 +22401,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - serve-static@2.2.0: dependencies: encodeurl: 2.0.0 @@ -22504,6 +22421,11 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 + set-value@4.1.0: + dependencies: + is-plain-object: 2.0.4 + is-primitive: 3.0.1 + setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -22624,6 +22546,10 @@ snapshots: '@napi-rs/snappy-win32-ia32-msvc': 7.3.1 '@napi-rs/snappy-win32-x64-msvc': 7.3.1 + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + source-map-js@1.2.1: {} source-map-support@0.5.13: @@ -22870,6 +22796,10 @@ snapshots: picocolors: 1.1.1 sax: 1.4.1 + swagger-ui-dist@5.29.4: + dependencies: + '@scarf/scarf': 1.4.0 + symbol-observable@4.0.0: {} sync-child-process@1.0.2: @@ -22983,6 +22913,10 @@ snapshots: dependencies: any-promise: 1.3.0 + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + through2@2.0.5: dependencies: readable-stream: 2.3.8 @@ -23037,8 +22971,6 @@ snapshots: psl: 1.15.0 punycode: 1.4.1 - tr46@0.0.3: {} - tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -23113,6 +23045,16 @@ snapshots: typescript: 5.8.3 webpack: 5.100.2 + ts-loader@9.5.2(typescript@5.9.2)(webpack@5.100.2): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.3 + micromatch: 4.0.8 + semver: 7.7.2 + source-map: 0.7.4 + typescript: 5.9.2 + webpack: 5.100.2 + ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -23181,8 +23123,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.1.0: {} - tslib@2.8.1: {} tsscmp@1.0.6: {} @@ -23261,31 +23201,6 @@ snapshots: typescript: 5.9.2 yaml: 2.8.1 - typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.12.0)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)): - dependencies: - '@sqltools/formatter': 1.2.5 - ansis: 3.15.0 - app-root-path: 3.1.0 - buffer: 6.0.3 - dayjs: 1.11.13 - debug: 4.4.0 - dotenv: 16.4.7 - glob: 10.4.5 - reflect-metadata: 0.2.2 - sha.js: 2.4.11 - sql-highlight: 6.0.0 - tslib: 2.8.1 - uuid: 11.1.0 - yargs: 17.7.2 - optionalDependencies: - ioredis: 5.6.0 - mssql: 11.0.1 - mysql2: 3.12.0 - pg: 8.11.3 - ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.9.2) - transitivePeerDependencies: - - supports-color - typeorm@0.3.21(ioredis@5.6.0)(mssql@11.0.1)(mysql2@3.15.1)(pg@8.11.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2)): dependencies: '@sqltools/formatter': 1.2.5 @@ -23567,8 +23482,6 @@ snapshots: unescape: 1.0.1 ylru: 2.0.0 - utils-merge@1.0.1: {} - uuid@11.1.0: {} uuid@3.4.0: {} @@ -23908,8 +23821,6 @@ snapshots: web-streams-polyfill@4.0.0-beta.3: {} - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} webpack-node-externals@3.0.0: {} @@ -23961,11 +23872,6 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-module@2.0.1: {} which-pm-runs@1.1.0: {}