diff --git a/apps/calendar/apps/backend/package.json b/apps/calendar/apps/backend/package.json index 11a667001..93a89dfd9 100644 --- a/apps/calendar/apps/backend/package.json +++ b/apps/calendar/apps/backend/package.json @@ -63,10 +63,10 @@ "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", - "jest": "^29.7.0", + "jest": "^30.3.0", "prettier": "^3.4.2", "source-map-support": "^0.5.21", - "ts-jest": "^29.2.5", + "ts-jest": "^29.4.5", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", diff --git a/apps/contacts/apps/backend/package.json b/apps/contacts/apps/backend/package.json index d429db06b..7cef259df 100644 --- a/apps/contacts/apps/backend/package.json +++ b/apps/contacts/apps/backend/package.json @@ -30,6 +30,7 @@ "@nestjs/config": "^3.3.0", "@nestjs/core": "^10.4.15", "@nestjs/platform-express": "^10.4.15", + "@nestjs/throttler": "^6.2.1", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "csv-parse": "^6.1.0", diff --git a/apps/contacts/apps/backend/src/app.module.ts b/apps/contacts/apps/backend/src/app.module.ts index 20dc82058..0eb5ac2bb 100644 --- a/apps/contacts/apps/backend/src/app.module.ts +++ b/apps/contacts/apps/backend/src/app.module.ts @@ -1,5 +1,6 @@ import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; +import { ThrottlerModule } from '@nestjs/throttler'; import { MetricsModule } from '@manacore/shared-nestjs-metrics'; import { DatabaseModule } from './db/database.module'; import { ContactModule } from './contact/contact.module'; @@ -22,6 +23,12 @@ import { AdminModule } from './admin/admin.module'; isGlobal: true, envFilePath: '.env', }), + ThrottlerModule.forRoot([ + { + ttl: 60000, // 60 seconds + limit: 100, // 100 requests per minute + }, + ]), MetricsModule.register({ prefix: 'contacts_', excludePaths: ['/health'], diff --git a/apps/todo/apps/backend/package.json b/apps/todo/apps/backend/package.json index 18c78e7a4..02a8540f4 100644 --- a/apps/todo/apps/backend/package.json +++ b/apps/todo/apps/backend/package.json @@ -28,16 +28,17 @@ "@nestjs/core": "^10.4.9", "@nestjs/platform-express": "^10.4.9", "@nestjs/schedule": "^4.1.2", + "@nestjs/throttler": "^6.2.1", "@todo/shared": "workspace:*", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "dotenv": "^16.4.7", "drizzle-orm": "^0.38.3", "postgres": "^3.4.5", + "prom-client": "^15.1.0", "reflect-metadata": "^0.2.2", "rrule": "^2.8.1", - "rxjs": "^7.8.1", - "prom-client": "^15.1.0" + "rxjs": "^7.8.1" }, "devDependencies": { "@nestjs/cli": "^10.4.9", diff --git a/apps/todo/apps/backend/src/app.module.ts b/apps/todo/apps/backend/src/app.module.ts index b5638780f..c2ae08508 100644 --- a/apps/todo/apps/backend/src/app.module.ts +++ b/apps/todo/apps/backend/src/app.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { ScheduleModule } from '@nestjs/schedule'; +import { ThrottlerModule } from '@nestjs/throttler'; import { MetricsModule } from '@manacore/shared-nestjs-metrics'; import { ManaCoreModule } from '@manacore/nestjs-integration'; import { DatabaseModule } from './db/database.module'; @@ -20,6 +21,12 @@ import { AdminModule } from './admin/admin.module'; envFilePath: '.env', }), ScheduleModule.forRoot(), + ThrottlerModule.forRoot([ + { + ttl: 60000, // 60 seconds + limit: 100, // 100 requests per minute + }, + ]), MetricsModule.register({ prefix: 'todo_', excludePaths: ['/health'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8d39b072..8e073d72b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,7 +159,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.4.9 - version: 10.4.9(esbuild@0.19.12) + version: 10.4.9(esbuild@0.27.0) '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) @@ -197,8 +197,8 @@ importers: specifier: ^5.2.1 version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) + specifier: ^30.3.0 + version: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) prettier: specifier: ^3.4.2 version: 3.6.2 @@ -206,11 +206,11 @@ importers: specifier: ^0.5.21 version: 0.5.21 ts-jest: - specifier: ^29.2.5 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@30.3.0)(jest@29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3) + specifier: ^29.4.5 + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.0)(jest-util@30.3.0)(jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3) ts-loader: specifier: ^9.5.1 - version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)) + version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -1115,6 +1115,9 @@ importers: '@nestjs/platform-express': specifier: ^10.4.15 version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20) + '@nestjs/throttler': + specifier: ^6.2.1 + version: 6.4.0(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(reflect-metadata@0.2.2) class-transformer: specifier: ^0.5.1 version: 0.5.1 @@ -1342,6 +1345,127 @@ importers: apps/context: {} + apps/context/apps/backend: + dependencies: + '@manacore/shared-drizzle-config': + specifier: workspace:* + version: link:../../../../packages/shared-drizzle-config + '@manacore/shared-nestjs-auth': + specifier: workspace:* + version: link:../../../../packages/shared-nestjs-auth + '@manacore/shared-nestjs-health': + specifier: workspace:* + version: link:../../../../packages/shared-nestjs-health + '@manacore/shared-nestjs-setup': + specifier: workspace:* + version: link:../../../../packages/shared-nestjs-setup + '@nestjs/common': + specifier: ^10.4.15 + version: 10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/config': + specifier: ^3.3.0 + version: 3.3.0(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2) + '@nestjs/core': + specifier: ^10.4.15 + version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(@nestjs/websockets@10.4.20)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/platform-express': + specifier: ^10.4.15 + version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20) + '@nestjs/throttler': + specifier: ^6.2.1 + version: 6.4.0(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(reflect-metadata@0.2.2) + class-transformer: + specifier: ^0.5.1 + version: 0.5.1 + class-validator: + specifier: ^0.14.1 + version: 0.14.3 + dotenv: + specifier: ^16.4.7 + version: 16.6.1 + drizzle-kit: + specifier: ^0.30.2 + version: 0.30.6 + drizzle-orm: + specifier: ^0.38.3 + version: 0.38.4(@opentelemetry/api@1.9.0)(@types/react@19.2.14)(expo-sqlite@55.0.10(expo@55.0.5)(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(kysely@0.28.8)(postgres@3.4.7)(react@19.2.4) + postgres: + specifier: ^3.4.5 + version: 3.4.7 + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + rxjs: + specifier: ^7.8.1 + version: 7.8.2 + uuid: + specifier: ^11.0.4 + version: 11.1.0 + devDependencies: + '@nestjs/cli': + specifier: ^10.4.9 + version: 10.4.9(esbuild@0.19.12) + '@nestjs/schematics': + specifier: ^10.2.3 + version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) + '@nestjs/testing': + specifier: ^10.4.15 + version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(@nestjs/platform-express@10.4.20) + '@types/express': + specifier: ^5.0.0 + version: 5.0.6 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^22.10.2 + version: 22.19.1 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^8.18.1 + version: 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^8.18.1 + version: 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: + specifier: ^9.17.0 + version: 9.39.1(jiti@2.6.1) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.2(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) + prettier: + specifier: ^3.4.2 + version: 3.6.2 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + ts-jest: + specifier: ^29.2.5 + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@30.3.0)(jest@29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3) + ts-loader: + specifier: ^9.5.1 + version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + tsx: + specifier: ^4.19.2 + version: 4.21.0 + typescript: + specifier: ^5.7.2 + version: 5.9.3 + apps/context/apps/mobile: dependencies: '@azure/openai': @@ -1528,9 +1652,6 @@ importers: '@manacore/shared-ui': specifier: workspace:* version: link:../../../../packages/shared-ui - '@supabase/supabase-js': - specifier: ^2.49.4 - version: 2.84.0 svelte-i18n: specifier: ^4.0.1 version: 4.0.1(svelte@5.44.0) @@ -2636,9 +2757,15 @@ importers: '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) + '@nestjs/testing': + specifier: ^10.4.20 + version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(@nestjs/platform-express@10.4.20) '@types/express': specifier: ^5.0.0 version: 5.0.6 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 '@types/node': specifier: ^22.10.2 version: 22.19.1 @@ -2657,12 +2784,18 @@ importers: eslint-plugin-prettier: specifier: ^5.2.1 version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + jest: + specifier: ^30.3.0 + version: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) prettier: specifier: ^3.4.2 version: 3.6.2 source-map-support: specifier: ^0.5.21 version: 0.5.21 + ts-jest: + specifier: ^29.4.5 + version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.0)(jest-util@30.3.0)(jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3) ts-loader: specifier: ^9.5.1 version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) @@ -4993,6 +5126,9 @@ importers: '@nestjs/schedule': specifier: ^4.1.2 version: 4.1.2(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20) + '@nestjs/throttler': + specifier: ^6.2.1 + version: 6.4.0(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(reflect-metadata@0.2.2) '@todo/shared': specifier: workspace:* version: link:../../packages/shared