diff --git a/apps/nest-demo/package.json b/apps/nest-demo/package.json index d6979ab9..ffa1ca84 100644 --- a/apps/nest-demo/package.json +++ b/apps/nest-demo/package.json @@ -10,13 +10,14 @@ "homePage": "https://142vip.cn" }, "scripts": { - "dev": "nest start --watch", + "dev": "nest start -d -w", "dev:debug": "nest start --debug --watch", "dev:prod": "node dist/main", "build": "nest build", "start": "nest start" }, "dependencies": { + "@142vip/nest-redis": "workspace:*", "@nestjs/common": "11.1.6", "@nestjs/core": "11.1.6", "@nestjs/platform-express": "11.1.6", @@ -24,9 +25,9 @@ "rxjs": "7.8.1" }, "devDependencies": { - "@nestjs/cli": "11.0.0", - "@nestjs/schematics": "11.0.0", - "@nestjs/testing": "11.1.6", + "@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", diff --git a/apps/nest-demo/src/app.controller.ts b/apps/nest-demo/src/app.controller.ts deleted file mode 100644 index ccb18c7a..00000000 --- a/apps/nest-demo/src/app.controller.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { AppService } from './app.service' -import { Controller, Get } from '@nestjs/common' - -@Controller() -export class AppController { - constructor( - private readonly appService: AppService, - ) {} - - @Get() - public getHello(): string { - return this.appService.getHello() - } -} diff --git a/apps/nest-demo/src/app.module.ts b/apps/nest-demo/src/app.module.ts index 2bb9f306..f9e3af29 100644 --- a/apps/nest-demo/src/app.module.ts +++ b/apps/nest-demo/src/app.module.ts @@ -1,9 +1,14 @@ +import { RedisModule } from '@142vip/nest-redis' import { Module } from '@nestjs/common' -import { AppController } from './app.controller' -import { AppService } from './app.service' +import { RedisExampleModule } from './redis-example/redis-example.module' @Module({ - controllers: [AppController], - providers: [AppService], + imports: [ + // 全局模块 + RedisModule.register({ url: 'redis://localhost:6379' }), + + // 最佳实践 + RedisExampleModule, + ], }) export class AppModule {} diff --git a/apps/nest-demo/src/app.service.ts b/apps/nest-demo/src/app.service.ts deleted file mode 100644 index bc13055d..00000000 --- a/apps/nest-demo/src/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from '@nestjs/common' - -@Injectable() -export class AppService { - getHello(): string { - return 'Hello World!' - } -} diff --git a/apps/nest-demo/src/redis-example/redis-example.controller.ts b/apps/nest-demo/src/redis-example/redis-example.controller.ts new file mode 100644 index 00000000..70e9187a --- /dev/null +++ b/apps/nest-demo/src/redis-example/redis-example.controller.ts @@ -0,0 +1,24 @@ +import { Controller, Delete, Get, Post } from '@nestjs/common' +import { RedisExampleService } from './redis-example.service' + +@Controller('redis-example') +export class RedisExampleController { + constructor( + private readonly redisExampleService: RedisExampleService, + ) {} + + @Post('/') + public async 'Post /'(): Promise { + await this.redisExampleService.setKey() + } + + @Get('/') + public async 'Get /'(): Promise { + return await this.redisExampleService.getKey() + } + + @Delete('/') + public async 'Delete /'(): Promise { + await this.redisExampleService.delKey() + } +} diff --git a/apps/nest-demo/src/redis-example/redis-example.module.ts b/apps/nest-demo/src/redis-example/redis-example.module.ts new file mode 100644 index 00000000..5cd47eab --- /dev/null +++ b/apps/nest-demo/src/redis-example/redis-example.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common' +import { RedisExampleController } from './redis-example.controller' +import { RedisExampleService } from './redis-example.service' + +@Module({ + controllers: [RedisExampleController], + providers: [RedisExampleService], +}) +export class RedisExampleModule {} diff --git a/apps/nest-demo/src/redis-example/redis-example.service.ts b/apps/nest-demo/src/redis-example/redis-example.service.ts new file mode 100644 index 00000000..f08a8697 --- /dev/null +++ b/apps/nest-demo/src/redis-example/redis-example.service.ts @@ -0,0 +1,23 @@ +import { RedisService } from '@142vip/nest-redis' +import { Injectable } from '@nestjs/common' + +const storeExample = { key: 'test', value: 'redis-example' } + +@Injectable() +export class RedisExampleService { + constructor( + private readonly redisService: RedisService, + ) { } + + async setKey(): Promise { + await this.redisService.setEx(storeExample.key, storeExample.value, 5) + } + + async getKey(): Promise { + return await this.redisService.getEx(storeExample.key) + } + + async delKey(): Promise { + await this.redisService.del(storeExample.key) + } +} diff --git a/apps/nest-demo/tsconfig.json b/apps/nest-demo/tsconfig.json index 0fde55ac..adf083b5 100644 --- a/apps/nest-demo/tsconfig.json +++ b/apps/nest-demo/tsconfig.json @@ -1,31 +1,12 @@ { + "extends": "../../tsconfig.nest-pkg.json", "compilerOptions": { - "incremental": true, - "target": "ES2023", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "baseUrl": "./", - "module": "nodenext", - "moduleResolution": "nodenext", - "resolvePackageJsonExports": true, - "strictBindCallApply": false, - "strictNullChecks": true, - "noFallthroughCasesInSwitch": false, - "noImplicitAny": false, - "declaration": true, - "outDir": "./dist", - "removeComments": true, - "sourceMap": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "skipLibCheck": true + "declaration": false, + "outDir": "dist" }, "exclude": [ "node_modules", - "../src/test", - "dist", - "**/*spec.ts" - ] + "dist" + ], + "compileOnSave": true } diff --git a/packages/nest-redis/README.md b/packages/nest-redis/README.md index 8223159f..5437aa1a 100644 --- a/packages/nest-redis/README.md +++ b/packages/nest-redis/README.md @@ -11,6 +11,63 @@ npm install @142vip/nest-redis pnpm i @142vip/nest-redis ``` +## 配置 + +```typescript +import { RedisConfig } from '@142vip/redis' + +// 简单配置 +const config: RedisConfig = { + url: 'redis://localhost:6379', +} + +// 集群配置 +const clusterConfig: RedisConfig = { + clusterNodes: [ + { + url: 'redis://localhost:6379', + }, + { + url: 'redis://localhost:6380', + }, + ], +} +// ... +``` + +## 使用 + +### 模块注入 +```typescript +import { RedisModule } from '@142vip/nest-redis' + +@Module({ + imports: [RedisModule.register({ + url: 'redis://localhost:6379', + })], +}) +export class AppModule {} +``` + +### 使用服务 +```typescript +import { RedisService } from '@142vip/nest-redis' + +@Injectable() +export class AppService { + constructor( + private readonly redisService: RedisService + ) {} +} +``` + +`RedisService`类实例化后,可以直接使用类对应的方法,代码的最佳实践,可以参考模块:[redis-example](https://github.com/142vip/core-x/apps/nest-demo/src/core/redis-example) + +## 参考 + +- [NPM @142vip/redis](https://www.npmjs.com/package/@142vip/redis) +- [Redis 官网](https://redis.io/) + ## 证书 [MIT](https://opensource.org/license/MIT) diff --git a/packages/nest-redis/build.config.ts b/packages/nest-redis/build.config.ts deleted file mode 100644 index 0f679789..00000000 --- a/packages/nest-redis/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-redis/jest.config.ts b/packages/nest-redis/jest.config.ts new file mode 100644 index 00000000..cf16138b --- /dev/null +++ b/packages/nest-redis/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-redis/package.json b/packages/nest-redis/package.json index e28a3dd6..c5cf8f9a 100644 --- a/packages/nest-redis/package.json +++ b/packages/nest-redis/package.json @@ -23,8 +23,8 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": "./dist/index.js", + "require": "./dist/index.js" } }, "authorInfo": { @@ -33,21 +33,29 @@ "url": "https://github.com/142vip", "homePage": "https://142vip.cn" }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ "dist" ], "scripts": { - "build": "unbuild", - "typecheck": "tsc --noEmit" + "build": "npx nest build", + "typecheck": "tsc --noEmit", + "test": "npx jest", + "test:coverage": "npx jest --coverage" }, "dependencies": { - "@142vip/utils": "workspace:*" + "@142vip/redis": "workspace:*", + "@nestjs/common": "11.1.7", + "@nestjs/core": "11.1.7" }, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" + }, + "devDependencies": { + "@nestjs/cli": "11.0.10", + "@nestjs/testing": "11.1.7" } } diff --git a/packages/nest-redis/src/core/redis.constants.ts b/packages/nest-redis/src/core/redis.constants.ts new file mode 100644 index 00000000..bf051b06 --- /dev/null +++ b/packages/nest-redis/src/core/redis.constants.ts @@ -0,0 +1,4 @@ +/** + * redis client Token 唯一标记 + */ +export const REDIS_CLIENT_TOKEN = Symbol('@142vip/nest-redis#client-token') diff --git a/packages/nest-redis/src/core/redis.decorator.ts b/packages/nest-redis/src/core/redis.decorator.ts new file mode 100644 index 00000000..aa787186 --- /dev/null +++ b/packages/nest-redis/src/core/redis.decorator.ts @@ -0,0 +1,9 @@ +import { Inject } from '@nestjs/common' +import { REDIS_CLIENT_TOKEN } from './redis.constants' + +/** + * redis client 装饰器 + */ +export function InjectRedisClient(): PropertyDecorator & ParameterDecorator { + return Inject(REDIS_CLIENT_TOKEN) +} diff --git a/packages/nest-redis/src/core/redis.module.ts b/packages/nest-redis/src/core/redis.module.ts new file mode 100644 index 00000000..4ad533e0 --- /dev/null +++ b/packages/nest-redis/src/core/redis.module.ts @@ -0,0 +1,27 @@ +import { RedisConfig } from '@142vip/redis' +import { DynamicModule, Module } from '@nestjs/common' +import { REDIS_CLIENT_TOKEN } from './redis.constants' +import { RedisService } from './redis.service' + +@Module({}) +export class RedisModule { + public static register(config: RedisConfig): DynamicModule { + const redisService = new RedisService(config) + const providers = [ + { + provide: RedisService, + useValue: redisService, + }, + { + provide: REDIS_CLIENT_TOKEN, + useValue: redisService.getClient(), + }, + ] + return { + module: RedisModule, + providers, + exports: providers, + global: true, + } + } +} diff --git a/packages/nest-redis/src/core/redis.service.ts b/packages/nest-redis/src/core/redis.service.ts new file mode 100644 index 00000000..7fd10510 --- /dev/null +++ b/packages/nest-redis/src/core/redis.service.ts @@ -0,0 +1,61 @@ +import type { RedisClient, RedisConfig } from '@142vip/redis' +import { RedisFactory } from '@142vip/redis' +import { Injectable } from '@nestjs/common' + +@Injectable() +export class RedisService { + private readonly config: RedisConfig + private readonly client: RedisClient + + constructor(config: RedisConfig) { + this.config = config + this.client = this.getClient() + } + + /** + * 获取客户端 + */ + public getClient(): RedisClient { + return new RedisFactory().getClient(this.config) + } + + /** + * 存储 + * - 单位:分钟 + * @param key + * @param data + * @param expiredTime + */ + public async setEx(key: string, data: T, expiredTime: number): Promise { + const jsonData = JSON.stringify(data) + await this.client.set(key, jsonData, 'EX', expiredTime) + } + + /** + * 获取 + */ + public async getEx(key: string): Promise { + const jsonData = await this.client.get(key) + + try { + if (jsonData == null) { + return null + } + return JSON.parse(jsonData) as T + } + catch { + return null + } + } + + /** + * 删除 + * - 支持延迟双删 + */ + public async del(key: string): Promise { + await this.client.del(key) + setTimeout(async (): Promise => { + await this.client.del(key) + }, 1000) + } +} diff --git a/packages/nest-redis/src/core/redis.ts b/packages/nest-redis/src/core/redis.ts deleted file mode 100644 index 00019c78..00000000 --- a/packages/nest-redis/src/core/redis.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class NestRedis { - constructor() { - } -} diff --git a/packages/nest-redis/src/index.ts b/packages/nest-redis/src/index.ts index ae67ddad..436a74f0 100644 --- a/packages/nest-redis/src/index.ts +++ b/packages/nest-redis/src/index.ts @@ -1 +1,4 @@ -export const test = 1 +export * from './core/redis.constants' +export * from './core/redis.decorator' +export * from './core/redis.module' +export * from './core/redis.service' diff --git a/packages/nest-redis/test/redis.service.spec.ts b/packages/nest-redis/test/redis.service.spec.ts new file mode 100644 index 00000000..baa6ac94 --- /dev/null +++ b/packages/nest-redis/test/redis.service.spec.ts @@ -0,0 +1,35 @@ +import { IORedisClient } from '@142vip/redis' +import { beforeAll, describe, expect, it } from '@jest/globals' +import { Test } from '@nestjs/testing' +import { RedisModule, RedisService } from '../src' + +describe('RedisService', () => { + let redisClient: IORedisClient + beforeAll(async () => { + const module = await Test.createTestingModule({ + imports: [RedisModule.register({ + url: 'redis://127.0.0.1:6379', + })], + }).compile() + + const redisService = module.get(RedisService) + expect(redisService).toBeDefined() + + // redis对象 + redisClient = redisService.getClient() + expect(redisClient).toBeDefined() + }) + + it('设置缓存', async () => { + await redisClient.set('test', '123') + }) + + it('获取缓存', async () => { + const value = await redisClient.get('test') + expect(value).toBe('123') + }) + + it('删除缓存', async () => { + await redisClient.del('test') + }) +}) diff --git a/packages/nest-redis/tsconfig.json b/packages/nest-redis/tsconfig.json index 329d6f4a..f357a5ce 100644 --- a/packages/nest-redis/tsconfig.json +++ b/packages/nest-redis/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" ] } diff --git a/packages/redis/README.md b/packages/redis/README.md index d4dabc7b..2a383320 100644 --- a/packages/redis/README.md +++ b/packages/redis/README.md @@ -9,6 +9,80 @@ npm install @142vip/redis pnpm i @142vip/redis ``` +## 使用 + +### 创建工厂类 +```typescript +import { RedisFactory } from '@142vip/redis' + +// 初始化工厂类实例 +const redisFactory = new RedisFactory() +``` + +- `redisFactory.createClient()` :创建客户端 +- `redisFactory.createCluster()` :创建集群客户端 +- `redisFactory.getClient()` :获取客户端 + +## 配置 + +### 简单&哨兵模式 +```typescript +// 默认连接 127.0.0.1:6379 +redisFactory.getClient() +// 连接 127.0.0.1:6380, db 4,使用密码 123456 +redisFactory.getClient({ + url: 'redis://:123456@127.0.0.1:6380/4', +}) +// 用户名、密码都可以通过 URI 传递。 +redisFactory.getClient({ + url: 'redis://username:password@127.0.0.1:6380/4', +}) +redisFactory.getClient({ + port: 6379, // 端口 + host: '127.0.0.1', // host主机地址 + username: 'default', // 需要redis版本大于6 + password: 'my-top-secret', + db: 0, // 默认0 +}) +``` + +### 集群模式 + +```typescript +redisFactory.getClient({ + clusterNodes: [ + { + host: '127.0.0.1', + port: 6379, + }, + { + host: '127.0.0.1', + port: 6380, + }, + ], + // 可选 + clusterOptions: { + // 集群模式下,每个节点的连接配置 + redisOptions: { + username: 'default', // 需要redis版本大于6 + password: 'my-top-secret', + db: 0, // 默认0 + }, + }, +}) +``` + +## 最佳实践 + +- [egg-redis](https://github.com/eggjs/egg-redis) +- [@142vip/nest-redis](https://github.com/142vip/nest-redis) + +## 参考 + +- [IORedis Npm](https://www.npmjs.com/package/redis) +- [IORedis Github](https://github.com/luin/ioredis) +- [IORedis 官网](https://redis.io/) + ## 证书 [MIT](https://opensource.org/license/MIT) diff --git a/packages/redis/src/core/redis.factory.ts b/packages/redis/src/core/redis.factory.ts new file mode 100644 index 00000000..5c37d5aa --- /dev/null +++ b/packages/redis/src/core/redis.factory.ts @@ -0,0 +1,35 @@ +import type Cluster from 'ioredis/built/cluster' +import Redis from 'ioredis' +import { RedisClient, RedisClientConfig, RedisClusterConfig, RedisConfig } from './redis.interface' + +/** + * Redis工厂类 + */ +export class RedisFactory { + /** + * 简单&哨兵模式 + */ + public createClient(config: RedisClientConfig): Redis { + return config.url != null ? new Redis(config.url, config) : new Redis(config) + } + + /** + * 集群模式 + */ + public createCluster(config: RedisClusterConfig): Cluster { + return new Redis.Cluster(config.clusterNodes, config.clusterOptions) + } + + /** + * 获取Redis客户端 + */ + public getClient(config: RedisConfig): RedisClient { + // 集群模式 + if (config.clusterNodes != null) { + return this.createCluster(config as RedisClusterConfig) + } + else { + return this.createClient(config) + } + } +} diff --git a/packages/redis/src/core/redis.interface.ts b/packages/redis/src/core/redis.interface.ts new file mode 100644 index 00000000..dc4e68bd --- /dev/null +++ b/packages/redis/src/core/redis.interface.ts @@ -0,0 +1,38 @@ +import Redis from 'ioredis' +import Cluster, { ClusterNode } from 'ioredis/built/cluster' +import { ClusterOptions } from 'ioredis/built/cluster/ClusterOptions' +import { RedisOptions } from 'ioredis/built/redis/RedisOptions' + +/** + * io-redis支持的连接模式 + */ +export enum RedisMode { + STANDARD = 'standard', + CLUSTER = 'cluster', + SENTINEL = 'sentinel', +} + +/** + * 单机、哨兵配置 + */ +export interface RedisClientConfig extends RedisOptions { + url?: string +} + +/** + * 集群配置 + */ +export interface RedisClusterConfig { + clusterNodes: ClusterNode[] + clusterOptions?: ClusterOptions +} + +/** + * Redis 建立连接配置 + */ +export interface RedisConfig extends RedisClientConfig, Partial {} + +/** + * Redis 客户端 + */ +export type RedisClient = Redis | Cluster diff --git a/packages/redis/src/index.ts b/packages/redis/src/index.ts index 8bbd3bc0..40305a8d 100644 --- a/packages/redis/src/index.ts +++ b/packages/redis/src/index.ts @@ -1,2 +1,2 @@ -export * from './io-redis' -export * from './redis' +export * from './core/redis.factory' +export * from './core/redis.interface' diff --git a/packages/redis/src/io-redis.ts b/packages/redis/src/io-redis.ts deleted file mode 100644 index ba3dc641..00000000 --- a/packages/redis/src/io-redis.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { ClusterNode } from 'ioredis/built/cluster' -import type Cluster from 'ioredis/built/cluster' -import type { ClusterOptions } from 'ioredis/built/cluster/ClusterOptions' -import type { RedisOptions } from 'ioredis/built/redis/RedisOptions' -import Redis from 'ioredis' - -/** - * io-redis支持的连接模式 - */ -export enum RedisMode { - STANDARD = 'standard', - CLUSTER = 'cluster', - SENTINEL = 'sentinel', -} - -export class IORedis { - /** - * 简单&哨兵模式 - */ - public createClient(config: RedisOptions): Redis { - return new Redis(config) - } - - /** - * 集群模式 - */ - public createCluster(nodes: ClusterNode[], options?: ClusterOptions): Cluster { - return new Redis.Cluster(nodes, options) - } -} diff --git a/packages/redis/src/redis.ts b/packages/redis/src/redis.ts deleted file mode 100644 index 6d68b760..00000000 --- a/packages/redis/src/redis.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type RedisClient from 'ioredis' - -export class Redis { - private redisClient: RedisClient - - constructor(redisClient: RedisClient) { - this.redisClient = redisClient - } - - /** - * 延迟双删 - */ - public async delete(key: string) { - await this.redisClient.del(key) - setTimeout(async () => { - await this.redisClient.del(key) - }, 1000) - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94fe826e..ed03a85e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,9 @@ importers: apps/nest-demo: dependencies: + '@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) @@ -101,14 +104,14 @@ importers: version: 7.8.1 devDependencies: '@nestjs/cli': - specifier: 11.0.0 - version: 11.0.0(@types/node@24.3.1) + specifier: 11.0.10 + version: 11.0.10(@types/node@24.3.1) '@nestjs/schematics': - specifier: 11.0.0 - version: 11.0.0(chokidar@4.0.3)(typescript@5.7.3) + specifier: 11.0.9 + version: 11.0.9(chokidar@4.0.3)(typescript@5.8.3) '@nestjs/testing': - 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(@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)) + 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)) '@types/express': specifier: 5.0.0 version: 5.0.0 @@ -126,13 +129,13 @@ importers: 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.7.3)))(typescript@5.7.3) + 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.7.3)(webpack@5.97.1) + 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.7.3) + version: 10.9.2(@types/node@24.3.1)(typescript@5.8.3) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -418,9 +421,22 @@ importers: packages/nest-redis: dependencies: - '@142vip/utils': + '@142vip/redis': specifier: workspace:* - version: link:../utils + version: link:../redis + '@nestjs/common': + specifier: 11.1.7 + version: 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': + 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) + 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)) packages/nest-typeorm: dependencies: @@ -429,7 +445,7 @@ importers: version: link:../nest '@nestjs/typeorm': specifier: 11.0.0 - version: 11.0.0(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(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))) + 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 @@ -736,8 +752,8 @@ packages: chokidar: optional: true - '@angular-devkit/core@19.0.1': - resolution: {integrity: sha512-oXIAV3hXqUW3Pmm95pvEmb+24n1cKQG62FzhQSjOIrMeHiCbGLNuc8zHosIi2oMrcCJJxR6KzWjThvbuzDwWlw==} + '@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'} peerDependencies: chokidar: ^4.0.0 @@ -745,8 +761,8 @@ packages: chokidar: optional: true - '@angular-devkit/core@19.1.2': - resolution: {integrity: sha512-sCYu96C7ToeLGi+ggs2+TxOt1/5eC6WZe/SR7cLpf9rv+gi3ijbH2w+JP6aR4Ne12EL6WGkes42rfT5fL+Z4Gg==} + '@angular-devkit/core@19.2.17': + resolution: {integrity: sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -754,8 +770,8 @@ packages: chokidar: optional: true - '@angular-devkit/schematics-cli@19.1.2': - resolution: {integrity: sha512-LMaZXLM5RD+W4ArvKSDrzVPtxXjlKm8Rzf9fs4rDBzEJo3JUy1MRXImhn08Nm4kBL0J/mllZCnXAifWWAygyYQ==} + '@angular-devkit/schematics-cli@19.2.15': + resolution: {integrity: sha512-1ESFmFGMpGQmalDB3t2EtmWDGv6gOFYBMxmHO2f1KI/UDl8UmZnCGL4mD3EWo8Hv0YIsZ9wOH9Q7ZHNYjeSpzg==} 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 @@ -763,12 +779,12 @@ packages: 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.0.1': - resolution: {integrity: sha512-N9dV8WpNRULykNj8fSxQrta85gPKxb315J3xugLS2uwiFWhz7wo5EY1YeYhoVKoVcNB2ng9imJgC5aO52AHZwg==} + '@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'} - '@angular-devkit/schematics@19.1.2': - resolution: {integrity: sha512-+eeDvbTj37Yczs3S1Hy42Nr1OG5BHORDPdY+bLIP383aTFjfTtlMIya46iNvMCYjinvnQkC4GcKdsa4ews3c9A==} + '@angular-devkit/schematics@19.2.17': + resolution: {integrity: sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==} 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'} '@antfu/eslint-config@4.19.0': @@ -2009,20 +2025,26 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.2.1': - resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==} + '@inquirer/prompts@7.3.2': + resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - '@inquirer/prompts@7.2.3': - resolution: {integrity: sha512-hzfnm3uOoDySDXfDNOm9usOuYIaQvTgKp/13l1uJoe6UNY+Zpcn2RYt0jXz3yA+yemGHvDOxVzqWl3S5sQq53Q==} + '@inquirer/prompts@7.4.0': + resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - '@inquirer/prompts@7.4.0': - resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} + '@inquirer/prompts@7.8.0': + resolution: {integrity: sha512-JHwGbQ6wjf1dxxnalDYpZwZxUEosT+6CPGD9Zh4sm9WXdtUp9XODCQD3NjSTmu+0OAyxWXNOqf0spjIymJa2Tw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2323,9 +2345,6 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -2734,12 +2753,12 @@ packages: '@napi-rs/wasm-runtime@1.0.1': resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} - '@nestjs/cli@11.0.0': - resolution: {integrity: sha512-53Hparhbz4nNQNttf6EFfYNeFxSLdshqnvaiWy3MBnZxgAuqtAZP3xsiNHPId5dYtzGCjdK60FN4Vcspx3Y+aw==} + '@nestjs/cli@11.0.10': + resolution: {integrity: sha512-4waDT0yGWANg0pKz4E47+nUrqIJv/UqrZ5wLPkCqc7oMGRMWKAaw1NDZ9rKsaqhqvxb2LfI5+uXOWr4yi94DOQ==} engines: {node: '>= 20.11'} hasBin: true peerDependencies: - '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 + '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 '@swc/core': ^1.3.62 peerDependenciesMeta: '@swc/cli': @@ -2773,6 +2792,19 @@ packages: class-validator: optional: true + '@nestjs/common@11.1.7': + resolution: {integrity: sha512-lwlObwGgIlpXSXYOTpfzdCepUyWomz6bv9qzGzzvpgspUxkj0Uz0fUJcvD44V8Ps7QhKW3lZBoYbXrH25UZrbA==} + 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/core@10.4.15': resolution: {integrity: sha512-UBejmdiYwaH6fTsz2QFBlC1cJHM+3UDeLZN+CiP9I1fRv2KlBZsmozGLbV5eS1JAVWJB4T5N5yQ0gjN8ZvcS2w==} peerDependencies: @@ -2808,6 +2840,24 @@ packages: '@nestjs/websockets': optional: true + '@nestjs/core@11.1.7': + resolution: {integrity: sha512-TyXFOwjhHv/goSgJ8i20K78jwTM0iSpk9GBcC2h3mf4MxNy+znI8m7nWjfoACjTkb89cTwDQetfTHtSfGLLaiA==} + engines: {node: '>= 20'} + peerDependencies: + '@nestjs/common': ^11.0.0 + '@nestjs/microservices': ^11.0.0 + '@nestjs/platform-express': ^11.0.0 + '@nestjs/websockets': ^11.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + '@nestjs/platform-express@10.4.15': resolution: {integrity: sha512-63ZZPkXHjoDyO7ahGOVcybZCRa7/Scp6mObQKjcX/fTEq1YJeU75ELvMsuQgc8U2opMGOBD7GVuc4DV0oeDHoA==} peerDependencies: @@ -2825,8 +2875,8 @@ packages: peerDependencies: typescript: '>=4.8.2' - '@nestjs/schematics@11.0.0': - resolution: {integrity: sha512-wts8lG0GfNWw3Wk9aaG5I/wcMIAdm7HjjeThQfUZhJxeIFT82Z3F5+0cYdHH4ii2pYQGiCSrR1VcuMwPiHoecg==} + '@nestjs/schematics@11.0.9': + resolution: {integrity: sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==} peerDependencies: typescript: '>=4.8.2' @@ -2843,8 +2893,8 @@ packages: '@nestjs/platform-express': optional: true - '@nestjs/testing@11.1.6': - resolution: {integrity: sha512-srYzzDNxGvVCe1j0SpTS9/ix75PKt6Sn6iMaH1rpJ6nj2g8vwNrhK0CoJJXvpCYgrnI+2WES2pprYnq8rAMYHA==} + '@nestjs/testing@11.1.7': + resolution: {integrity: sha512-QbtrgSlc3QVo6RHNxTTlyhaiobLLy8kvhOlgWHsoXRknybuRs7vZg4k5mo3ye6pITGeT3CrWIRpZjUsh5Wps5Q==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 @@ -4564,6 +4614,12 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -4681,10 +4737,6 @@ packages: resolution: {integrity: sha512-zIcWDJ+Kwqxfdnogx66Gxzr0kVmCcRAdat9nlY2IHsshqTN4fBH6tMeRMPA/2w0rpBayIJvjQAaa2/4RDrNqwg==} engines: {node: '>=14'} - ansis@3.9.0: - resolution: {integrity: sha512-PcDrVe15ldexeZMsVLBAzBwF2KhZgaU0R+CHxH+x5kqn/pO+UWVBZJ+NEXMPpEOLUFeNsnNdoWYc2gwO+MVkDg==} - engines: {node: '>=16'} - ansis@4.1.0: resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} engines: {node: '>=14'} @@ -5306,6 +5358,10 @@ packages: resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} engines: {node: '>= 6'} + comment-json@4.4.1: + resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==} + engines: {node: '>= 6'} + comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -6655,9 +6711,9 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - fork-ts-checker-webpack-plugin@9.0.2: - resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + fork-ts-checker-webpack-plugin@9.1.0: + resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} + engines: {node: '>=14.21.3'} peerDependencies: typescript: '>3.6.0' webpack: ^5.11.0 @@ -6822,8 +6878,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@11.0.1: - resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} hasBin: true @@ -7856,6 +7912,10 @@ packages: 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'} + loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -7985,9 +8045,6 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -8789,6 +8846,9 @@ packages: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -10534,8 +10594,8 @@ packages: typeorm-aurora-data-api-driver: optional: true - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -11080,8 +11140,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.97.1: - resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} + webpack@5.100.2: + resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -11408,7 +11468,7 @@ snapshots: optionalDependencies: chokidar: 3.6.0 - '@angular-devkit/core@19.0.1(chokidar@4.0.3)': + '@angular-devkit/core@19.2.15(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11419,7 +11479,7 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/core@19.1.2(chokidar@4.0.3)': + '@angular-devkit/core@19.2.17(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11430,11 +11490,11 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics-cli@19.1.2(@types/node@24.3.1)(chokidar@4.0.3)': + '@angular-devkit/schematics-cli@19.2.15(@types/node@24.3.1)(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 19.1.2(chokidar@4.0.3) - '@angular-devkit/schematics': 19.1.2(chokidar@4.0.3) - '@inquirer/prompts': 7.2.1(@types/node@24.3.1) + '@angular-devkit/core': 19.2.15(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.15(chokidar@4.0.3) + '@inquirer/prompts': 7.3.2(@types/node@24.3.1) ansi-colors: 4.1.3 symbol-observable: 4.0.0 yargs-parser: 21.1.1 @@ -11452,19 +11512,19 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/schematics@19.0.1(chokidar@4.0.3)': + '@angular-devkit/schematics@19.2.15(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 19.0.1(chokidar@4.0.3) + '@angular-devkit/core': 19.2.15(chokidar@4.0.3) jsonc-parser: 3.3.1 - magic-string: 0.30.12 + magic-string: 0.30.17 ora: 5.4.1 rxjs: 7.8.1 transitivePeerDependencies: - chokidar - '@angular-devkit/schematics@19.1.2(chokidar@4.0.3)': + '@angular-devkit/schematics@19.2.17(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 19.1.2(chokidar@4.0.3) + '@angular-devkit/core': 19.2.17(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -12740,21 +12800,7 @@ snapshots: optionalDependencies: '@types/node': 24.3.1 - '@inquirer/prompts@7.2.1(@types/node@24.3.1)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.3.1) - '@inquirer/confirm': 5.1.19(@types/node@24.3.1) - '@inquirer/editor': 4.2.21(@types/node@24.3.1) - '@inquirer/expand': 4.0.21(@types/node@24.3.1) - '@inquirer/input': 4.2.5(@types/node@24.3.1) - '@inquirer/number': 3.0.21(@types/node@24.3.1) - '@inquirer/password': 4.0.21(@types/node@24.3.1) - '@inquirer/rawlist': 4.1.9(@types/node@24.3.1) - '@inquirer/search': 3.2.0(@types/node@24.3.1) - '@inquirer/select': 4.4.0(@types/node@24.3.1) - '@types/node': 24.3.1 - - '@inquirer/prompts@7.2.3(@types/node@24.3.1)': + '@inquirer/prompts@7.3.2(@types/node@24.3.1)': dependencies: '@inquirer/checkbox': 4.3.0(@types/node@24.3.1) '@inquirer/confirm': 5.1.19(@types/node@24.3.1) @@ -12766,6 +12812,7 @@ snapshots: '@inquirer/rawlist': 4.1.9(@types/node@24.3.1) '@inquirer/search': 3.2.0(@types/node@24.3.1) '@inquirer/select': 4.4.0(@types/node@24.3.1) + optionalDependencies: '@types/node': 24.3.1 '@inquirer/prompts@7.4.0(@types/node@24.3.1)': @@ -12783,6 +12830,21 @@ snapshots: optionalDependencies: '@types/node': 24.3.1 + '@inquirer/prompts@7.8.0(@types/node@24.3.1)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.3.1) + '@inquirer/confirm': 5.1.19(@types/node@24.3.1) + '@inquirer/editor': 4.2.21(@types/node@24.3.1) + '@inquirer/expand': 4.0.21(@types/node@24.3.1) + '@inquirer/input': 4.2.5(@types/node@24.3.1) + '@inquirer/number': 3.0.21(@types/node@24.3.1) + '@inquirer/password': 4.0.21(@types/node@24.3.1) + '@inquirer/rawlist': 4.1.9(@types/node@24.3.1) + '@inquirer/search': 3.2.0(@types/node@24.3.1) + '@inquirer/select': 4.4.0(@types/node@24.3.1) + optionalDependencies: + '@types/node': 24.3.1 + '@inquirer/rawlist@4.0.11(@types/node@24.3.1)': dependencies: '@inquirer/core': 10.1.9(@types/node@24.3.1) @@ -12925,7 +12987,7 @@ snapshots: - supports-color - ts-node - '@jest/core@30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3))': + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3))': dependencies: '@jest/console': 30.2.0 '@jest/pattern': 30.0.1 @@ -12940,7 +13002,7 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@22.10.7)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + jest-config: 30.2.0(@types/node@22.10.7)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) jest-haste-map: 30.2.0 jest-message-util: 30.2.0 jest-regex-util: 30.0.1 @@ -13306,14 +13368,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.30 - '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.30': dependencies: @@ -13626,26 +13686,26 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true - '@nestjs/cli@11.0.0(@types/node@24.3.1)': + '@nestjs/cli@11.0.10(@types/node@24.3.1)': dependencies: - '@angular-devkit/core': 19.1.2(chokidar@4.0.3) - '@angular-devkit/schematics': 19.1.2(chokidar@4.0.3) - '@angular-devkit/schematics-cli': 19.1.2(@types/node@24.3.1)(chokidar@4.0.3) - '@inquirer/prompts': 7.2.3(@types/node@24.3.1) - '@nestjs/schematics': 11.0.0(chokidar@4.0.3)(typescript@5.7.3) - ansis: 3.9.0 + '@angular-devkit/core': 19.2.15(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.15(chokidar@4.0.3) + '@angular-devkit/schematics-cli': 19.2.15(@types/node@24.3.1)(chokidar@4.0.3) + '@inquirer/prompts': 7.8.0(@types/node@24.3.1) + '@nestjs/schematics': 11.0.9(chokidar@4.0.3)(typescript@5.8.3) + ansis: 4.1.0 chokidar: 4.0.3 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.7.3)(webpack@5.97.1) - glob: 11.0.1 + fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.8.3)(webpack@5.100.2) + glob: 11.0.3 node-emoji: 1.11.0 ora: 5.4.1 tree-kill: 1.2.2 tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.2.0 - typescript: 5.7.3 - webpack: 5.97.1 + typescript: 5.8.3 + webpack: 5.100.2 webpack-node-externals: 3.0.0 transitivePeerDependencies: - '@types/node' @@ -13673,11 +13733,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/common@11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: file-type: 21.0.0 iterare: 1.2.1 - load-esm: 1.0.2 + load-esm: 1.0.3 reflect-metadata: 0.2.2 rxjs: 7.8.2 tslib: 2.8.1 @@ -13715,19 +13775,19 @@ snapshots: 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) - '@nestjs/core@11.1.6(@nestjs/common@11.1.6(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(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.7(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nuxt/opencollective': 0.4.1 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 reflect-metadata: 0.2.2 rxjs: 7.8.2 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.2))(@nestjs/core@11.1.6) + '@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: @@ -13753,10 +13813,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/platform-express@11.1.6(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)': + '@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)': dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.6(@nestjs/common@11.1.6(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(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) cors: 2.8.5 express: 5.1.0 multer: 2.0.2 @@ -13777,14 +13837,14 @@ snapshots: transitivePeerDependencies: - chokidar - '@nestjs/schematics@11.0.0(chokidar@4.0.3)(typescript@5.7.3)': + '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.8.3)': dependencies: - '@angular-devkit/core': 19.0.1(chokidar@4.0.3) - '@angular-devkit/schematics': 19.0.1(chokidar@4.0.3) - 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.7.3 + typescript: 5.8.3 transitivePeerDependencies: - chokidar @@ -13796,7 +13856,7 @@ snapshots: 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.6(@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))': + '@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) @@ -13804,10 +13864,18 @@ snapshots: 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) - '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(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/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))': dependencies: - '@nestjs/common': 11.1.6(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.6(@nestjs/common@11.1.6(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(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) + 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/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)))': + 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) 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)) @@ -13942,10 +14010,10 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.34.8) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.2(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: rollup: 4.34.8 @@ -13968,7 +14036,7 @@ snapshots: '@rollup/plugin-replace@6.0.2(rollup@4.34.8)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.34.8) - magic-string: 0.30.17 + magic-string: 0.30.19 optionalDependencies: rollup: 4.34.8 @@ -13976,7 +14044,7 @@ snapshots: dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.34.8 @@ -15736,6 +15804,10 @@ snapshots: mime-types: 3.0.1 negotiator: 1.0.0 + acorn-import-phases@1.0.4(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -15851,8 +15923,6 @@ snapshots: ansis@3.15.0: {} - ansis@3.9.0: {} - ansis@4.1.0: {} any-promise@1.3.0: {} @@ -16671,6 +16741,12 @@ snapshots: has-own-prop: 2.0.0 repeat-string: 1.6.1 + comment-json@4.4.1: + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + comment-parser@1.4.1: {} common-bin@3.0.1: @@ -16786,14 +16862,14 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig@8.3.6(typescript@5.7.3): + cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.7.3 + typescript: 5.8.3 cosmiconfig@9.0.0(typescript@5.9.2): dependencies: @@ -18319,13 +18395,13 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.4.2(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 - fdir@6.4.3(picomatch@4.0.2): + fdir@6.4.3(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fdir@6.5.0(picomatch@4.0.3): optionalDependencies: @@ -18401,7 +18477,7 @@ snapshots: fix-dts-default-cjs-exports@1.0.0: dependencies: - magic-string: 0.30.17 + magic-string: 0.30.19 mlly: 1.7.4 rollup: 4.40.2 @@ -18436,12 +18512,12 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.3)(webpack@5.97.1): + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.100.2): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 8.3.6(typescript@5.7.3) + chokidar: 4.0.3 + cosmiconfig: 8.3.6(typescript@5.8.3) deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 @@ -18450,8 +18526,8 @@ snapshots: schema-utils: 3.3.0 semver: 7.7.2 tapable: 2.2.1 - typescript: 5.7.3 - webpack: 5.97.1 + typescript: 5.8.3 + webpack: 5.100.2 form-data-encoder@1.9.0: {} @@ -18623,7 +18699,7 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - glob@11.0.1: + glob@11.0.3: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 @@ -19276,15 +19352,15 @@ snapshots: - supports-color - ts-node - jest-cli@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)): + jest-cli@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + jest-config: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -19326,7 +19402,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.2.0(@types/node@22.10.7)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)): + jest-config@30.2.0(@types/node@22.10.7)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)): dependencies: '@babel/core': 7.28.3 '@jest/get-type': 30.1.0 @@ -19354,12 +19430,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.10.7 - ts-node: 10.9.2(@types/node@24.3.1)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@24.3.1)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)): + jest-config@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)): dependencies: '@babel/core': 7.28.3 '@jest/get-type': 30.1.0 @@ -19387,7 +19463,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 24.3.1 - ts-node: 10.9.2(@types/node@24.3.1)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@24.3.1)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -19930,12 +20006,12 @@ snapshots: - supports-color - ts-node - jest@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)): + jest@30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + jest-cli: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20231,6 +20307,8 @@ snapshots: load-esm@1.0.2: {} + load-esm@1.0.3: {} + loader-runner@4.3.1: {} local-pkg@1.1.1: @@ -20336,13 +20414,9 @@ snapshots: lunr@2.3.9: {} - magic-string@0.30.12: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magic-string@0.30.19: dependencies: @@ -20350,7 +20424,7 @@ snapshots: magic-string@0.30.8: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 make-dir@4.0.0: dependencies: @@ -21338,6 +21412,8 @@ snapshots: path-to-regexp@8.2.0: {} + path-to-regexp@8.3.0: {} + path-type@4.0.0: {} path-type@5.0.0: {} @@ -22017,7 +22093,7 @@ snapshots: rollup-plugin-dts@6.1.1(rollup@4.34.8)(typescript@5.9.2): dependencies: - magic-string: 0.30.17 + magic-string: 0.30.19 rollup: 4.34.8 typescript: 5.9.2 optionalDependencies: @@ -22871,14 +22947,14 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(webpack@5.97.1): + terser-webpack-plugin@5.3.14(webpack@5.100.2): dependencies: '@jridgewell/trace-mapping': 0.3.30 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.97.1 + webpack: 5.100.2 terser@5.44.0: dependencies: @@ -22918,8 +22994,8 @@ snapshots: tinyglobby@0.2.12: dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.3(picomatch@4.0.3) + picomatch: 4.0.3 tinyglobby@0.2.15: dependencies: @@ -22988,18 +23064,18 @@ snapshots: ts-dedent@2.2.0: {} - ts-jest@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.7.3)))(typescript@5.7.3): + ts-jest@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): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3)) + jest: 30.2.0(@types/node@24.3.1)(ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.7.2 - typescript: 5.7.3 + typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.28.3 @@ -23027,15 +23103,15 @@ snapshots: babel-jest: 30.2.0(@babel/core@7.26.0) jest-util: 30.2.0 - ts-loader@9.5.2(typescript@5.7.3)(webpack@5.97.1): + ts-loader@9.5.2(typescript@5.8.3)(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.7.3 - webpack: 5.97.1 + typescript: 5.8.3 + webpack: 5.100.2 ts-node@10.9.2(@types/node@22.10.7)(typescript@5.9.2): dependencies: @@ -23056,7 +23132,7 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@24.3.1)(typescript@5.7.3): + ts-node@10.9.2(@types/node@24.3.1)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -23070,7 +23146,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.3 + typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -23235,7 +23311,7 @@ snapshots: transitivePeerDependencies: - supports-color - typescript@5.7.3: {} + typescript@5.8.3: {} typescript@5.9.2: {} @@ -23363,7 +23439,7 @@ snapshots: unplugin-utils@0.2.3: dependencies: pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 unplugin@1.14.1(webpack-sources@3.3.3): dependencies: @@ -23842,14 +23918,16 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.97.1: + webpack@5.100.2: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) browserslist: 4.26.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 @@ -23862,9 +23940,9 @@ snapshots: loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 + schema-utils: 4.3.3 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.97.1) + terser-webpack-plugin: 5.3.14(webpack@5.100.2) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: diff --git a/tsconfig.nest-pkg.json b/tsconfig.nest-pkg.json new file mode 100644 index 00000000..869c0f5b --- /dev/null +++ b/tsconfig.nest-pkg.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "target": "ES2023", + "useDefineForClassFields": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "baseUrl": "./", + "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true, + "allowJs": true, + "strict": true, + "strictBindCallApply": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noPropertyAccessFromIndexSignature": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "useUnknownInCatchVariables": true, + "declaration": true, + "inlineSourceMap": true, + "removeComments": false, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "skipDefaultLibCheck": false, + "skipLibCheck": true + } +}