diff --git a/.husky/pre-commit b/.husky/pre-commit
index 3b821754..f50f28e7 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,21 +1,10 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
-# Run type checking
pnpm type-check
-# Linting disabled during active development phase
-# TODO: Re-enable before production release
-# pnpm lint
-
-# Quick security check (only fail on high/critical vulnerabilities)
-echo "🔒 Running security audit..."
+echo "Running security audit..."
if ! pnpm audit --audit-level=high > /dev/null 2>&1; then
- echo ""
- echo "⚠️ High or critical security vulnerabilities detected!"
- echo "Run 'pnpm audit' to see details and 'pnpm update' to fix."
- echo ""
- # Uncomment the line below to block commits with vulnerabilities:
- # exit 1
+ echo "High or critical security vulnerabilities detected!"
+ echo "Run 'pnpm audit' to see details."
fi
-
diff --git a/apps/bff/Dockerfile b/apps/bff/Dockerfile
index 8e15d8b2..5c4544b7 100644
--- a/apps/bff/Dockerfile
+++ b/apps/bff/Dockerfile
@@ -6,8 +6,8 @@
# =============================================================================
ARG NODE_VERSION=22
-ARG PNPM_VERSION=10.15.0
-ARG PRISMA_VERSION=6.16.0
+ARG PNPM_VERSION=10.25.0
+ARG PRISMA_VERSION=7.1.0
# =============================================================================
# Stage 1: Builder
diff --git a/apps/bff/package.json b/apps/bff/package.json
index f124994c..a88fe40e 100644
--- a/apps/bff/package.json
+++ b/apps/bff/package.json
@@ -40,9 +40,9 @@
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-express": "^11.1.9",
"@nestjs/throttler": "^6.5.0",
- "@prisma/client": "^6.19.0",
+ "@prisma/adapter-pg": "^7.1.0",
+ "@prisma/client": "^7.1.0",
"@sendgrid/mail": "^8.1.6",
- "@types/ssh2-sftp-client": "^9.0.6",
"bcrypt": "^6.0.0",
"bullmq": "^5.65.1",
"cookie-parser": "^1.4.7",
@@ -57,6 +57,7 @@
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"passport-local": "^1.0.0",
+ "pg": "^8.16.3",
"pino": "^10.1.0",
"pino-http": "^11.0.0",
"pino-pretty": "^13.1.3",
@@ -80,18 +81,18 @@
"@types/node": "^24.10.2",
"@types/passport-jwt": "^4.0.1",
"@types/passport-local": "^1.0.38",
+ "@types/pg": "^8.15.6",
+ "@types/ssh2-sftp-client": "^9.0.6",
"@types/supertest": "^6.0.3",
"jest": "^30.2.0",
- "prisma": "^6.19.0",
+ "prisma": "^7.1.0",
"source-map-support": "^0.5.21",
"supertest": "^7.1.4",
"ts-jest": "^29.4.6",
"ts-loader": "^9.5.4",
"ts-node": "^10.9.2",
"tsx": "^4.21.0",
- "ttypescript": "^1.5.15",
- "typescript": "^5.9.3",
- "typescript-transform-paths": "^3.5.5"
+ "typescript": "^5.9.3"
},
"jest": {
"moduleFileExtensions": [
diff --git a/apps/bff/prisma/prisma.config.ts b/apps/bff/prisma/prisma.config.ts
new file mode 100644
index 00000000..4e42188b
--- /dev/null
+++ b/apps/bff/prisma/prisma.config.ts
@@ -0,0 +1,29 @@
+import { defineConfig } from "prisma";
+import { PrismaPg } from "@prisma/adapter-pg";
+import { Pool } from "pg";
+
+/**
+ * Prisma 7 Configuration
+ *
+ * This configuration file is required for Prisma 7+ where the datasource URL
+ * is no longer specified in schema.prisma. Instead, connection configuration
+ * is provided here for migrations and in the PrismaClient constructor for runtime.
+ *
+ * @see https://pris.ly/d/config-datasource
+ * @see https://pris.ly/d/prisma7-client-config
+ */
+export default defineConfig({
+ earlyAccess: true,
+ schema: "./schema.prisma",
+ migrate: {
+ adapter: async () => {
+ const connectionString = process.env.DATABASE_URL;
+ if (!connectionString) {
+ throw new Error("DATABASE_URL environment variable is required for migrations");
+ }
+ const pool = new Pool({ connectionString });
+ return new PrismaPg(pool);
+ },
+ },
+});
+
diff --git a/apps/bff/prisma/schema.prisma b/apps/bff/prisma/schema.prisma
index fa6ed33f..64afc3f9 100644
--- a/apps/bff/prisma/schema.prisma
+++ b/apps/bff/prisma/schema.prisma
@@ -15,7 +15,8 @@ generator client {
datasource db {
provider = "postgresql"
- url = env("DATABASE_URL")
+ // Note: Prisma 7+ requires connection URL to be passed via adapter in PrismaClient constructor
+ // See prisma.config.ts for migration configuration
}
model User {
diff --git a/apps/bff/src/infra/database/prisma.service.ts b/apps/bff/src/infra/database/prisma.service.ts
index 64f29f0f..a7ccd313 100644
--- a/apps/bff/src/infra/database/prisma.service.ts
+++ b/apps/bff/src/infra/database/prisma.service.ts
@@ -1,13 +1,54 @@
-import { Injectable, OnModuleInit, OnModuleDestroy } from "@nestjs/common";
+import { Injectable, OnModuleInit, OnModuleDestroy, Logger } from "@nestjs/common";
import { PrismaClient } from "@prisma/client";
+import { Pool } from "pg";
+import { PrismaPg } from "@prisma/adapter-pg";
+/**
+ * Prisma Service
+ *
+ * Prisma 7+ requires passing an adapter for database connections instead of
+ * specifying the URL in the schema file. This service creates a PostgreSQL
+ * connection pool and passes it to the PrismaClient via the PrismaPg adapter.
+ *
+ * @see https://pris.ly/d/prisma7-client-config
+ */
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
+ private readonly logger = new Logger(PrismaService.name);
+ private readonly pool: Pool;
+
+ constructor() {
+ const connectionString = process.env.DATABASE_URL;
+ if (!connectionString) {
+ throw new Error("DATABASE_URL environment variable is required");
+ }
+
+ // Create a connection pool for PostgreSQL
+ const pool = new Pool({
+ connectionString,
+ // Connection pool settings optimized for NestJS
+ max: 10, // Maximum number of clients in the pool
+ idleTimeoutMillis: 30000, // Close idle clients after 30 seconds
+ connectionTimeoutMillis: 5000, // Return an error after 5 seconds if connection fails
+ });
+
+ // Create the Prisma PostgreSQL adapter
+ const adapter = new PrismaPg(pool);
+
+ // Initialize PrismaClient with the adapter
+ super({ adapter });
+
+ this.pool = pool;
+ }
+
async onModuleInit() {
await this.$connect();
+ this.logger.log("Database connection established");
}
async onModuleDestroy() {
await this.$disconnect();
+ await this.pool.end();
+ this.logger.log("Database connection closed");
}
}
diff --git a/apps/bff/tsconfig.json b/apps/bff/tsconfig.json
index 329468f0..04cb5534 100644
--- a/apps/bff/tsconfig.json
+++ b/apps/bff/tsconfig.json
@@ -1,39 +1,25 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
- // NestJS specific settings
+ "module": "CommonJS",
+ "moduleResolution": "Node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
-
- // Path mappings for clean imports
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
- "@bff/core/*": ["src/core/*"],
- "@bff/infra/*": ["src/infra/*"],
- "@bff/modules/*": ["src/modules/*"],
- "@bff/integrations/*": ["src/integrations/*"],
- "@customer-portal/validation": ["../../packages/validation/dist/index"],
- "@customer-portal/validation/*": ["../../packages/validation/dist/*"]
+ "@bff/*": ["src/*"]
},
- "rootDirs": [
- "src",
- "../../packages/validation/dist",
- "../../packages/validation/src"
- ],
-
- // Type checking
"noEmit": true,
- "types": ["node"],
- "typeRoots": ["./node_modules/@types"]
+ "types": ["node", "jest"]
},
"ts-node": {
"transpileOnly": true,
"compilerOptions": {
- "module": "commonjs"
+ "module": "CommonJS"
}
},
- "include": ["src/**/*", "scripts/**/*", "test/**/*"],
- "exclude": ["node_modules", "dist"]
+ "include": ["src/**/*", "test/**/*"],
+ "exclude": ["node_modules", "dist", "prisma"]
}
diff --git a/apps/portal/next-env.d.ts b/apps/portal/next-env.d.ts
index 830fb594..9edff1c7 100644
--- a/apps/portal/next-env.d.ts
+++ b/apps/portal/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-///
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/portal/next.config.mjs b/apps/portal/next.config.mjs
index 23265fa7..8f652e17 100644
--- a/apps/portal/next.config.mjs
+++ b/apps/portal/next.config.mjs
@@ -1,111 +1,78 @@
/* eslint-env node */
import bundleAnalyzer from "@next/bundle-analyzer";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const workspaceRoot = path.resolve(__dirname, "..", "..");
const withBundleAnalyzer = bundleAnalyzer({
enabled: process.env.ANALYZE === "true",
});
-import path from "node:path";
-import { fileURLToPath } from "node:url";
-
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
-
/** @type {import('next').NextConfig} */
const nextConfig = {
- // Enable standalone output only for production deployment
output: process.env.NODE_ENV === "production" ? "standalone" : undefined,
- // Ensure workspace packages are transpiled correctly
- transpilePackages: ["@customer-portal/domain", "@customer-portal/validation"],
-
- // Tell Next to NOT bundle these server-only libs
serverExternalPackages: [
"pino",
"pino-pretty",
"pino-abstract-transport",
"thread-stream",
"sonic-boom",
- // Avoid flaky vendor-chunk resolution during dev for small utils
"tailwind-merge",
],
- // Turbopack configuration (Next.js 15.5+)
- // Note: public turbopack options are limited; aliasing is handled via tsconfig/webpack resolutions
+ turbopack: {
+ resolveAlias: {
+ "@customer-portal/domain": path.join(workspaceRoot, "packages/domain/dist"),
+ },
+ },
+
+ webpack(config) {
+ config.resolve.alias = {
+ ...config.resolve.alias,
+ "@customer-portal/domain": path.join(workspaceRoot, "packages/domain/dist"),
+ };
+ return config;
+ },
- // Environment variables validation
env: {
NEXT_PUBLIC_API_BASE: process.env.NEXT_PUBLIC_API_BASE,
NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME,
NEXT_PUBLIC_APP_VERSION: process.env.NEXT_PUBLIC_APP_VERSION,
},
- // Image optimization
images: {
- remotePatterns: [
- {
- protocol: "https",
- hostname: "**",
- },
- ],
+ remotePatterns: [{ protocol: "https", hostname: "**" }],
},
- // Disable ESLint blocking during production builds to avoid CI/CD failures
- eslint: {
- ignoreDuringBuilds: true,
- },
-
- // API rewrites for development - proxy /api/* to BFF
- // This is the standard Next.js pattern that mirrors production (nginx proxy)
async rewrites() {
- // Only apply rewrites in development; production uses nginx
if (process.env.NODE_ENV !== "production") {
- return [
- {
- source: "/api/:path*",
- destination: "http://localhost:4000/api/:path*",
- },
- ];
+ return [{ source: "/api/:path*", destination: "http://localhost:4000/api/:path*" }];
}
return [];
},
- // Security headers
async headers() {
+ const isDev = process.env.NODE_ENV === "development";
return [
{
- // Apply security headers to all routes
source: "/(.*)",
headers: [
- {
- key: "X-Frame-Options",
- value: "DENY",
- },
- {
- key: "X-Content-Type-Options",
- value: "nosniff",
- },
- {
- key: "Referrer-Policy",
- value: "strict-origin-when-cross-origin",
- },
- {
- key: "X-XSS-Protection",
- value: "1; mode=block",
- },
- // Content Security Policy - allows Next.js inline scripts/styles
+ { key: "X-Frame-Options", value: "DENY" },
+ { key: "X-Content-Type-Options", value: "nosniff" },
+ { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
+ { key: "X-XSS-Protection", value: "1; mode=block" },
{
key: "Content-Security-Policy",
value: [
"default-src 'self'",
- // Next.js requires unsafe-inline for hydration scripts
"script-src 'self' 'unsafe-inline' 'unsafe-eval'",
- // Next.js/Tailwind requires unsafe-inline for styles
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data: https:",
"font-src 'self' data:",
- // Allow API connections (include localhost for development)
- // Allow localhost in development for API calls to BFF
- `connect-src 'self' https: ${process.env.NODE_ENV === "development" ? "http://localhost:*" : ""}`,
+ `connect-src 'self' https:${isDev ? " http://localhost:*" : ""}`,
"frame-ancestors 'none'",
].join("; "),
},
@@ -114,44 +81,15 @@ const nextConfig = {
];
},
- // Production optimizations
compiler: {
- // Remove console.logs in production
removeConsole: process.env.NODE_ENV === "production",
},
- // Experimental flags
experimental: {
- externalDir: true,
- optimizePackageImports: ["@heroicons/react", "lucide-react", "@tanstack/react-query"],
+ optimizePackageImports: ["@heroicons/react", "@tanstack/react-query"],
},
- webpack(config) {
- const workspaceRoot = path.resolve(__dirname, "..", "..");
- config.resolve.alias = {
- ...config.resolve.alias,
- "@customer-portal/domain": path.join(workspaceRoot, "packages/domain"),
- "@customer-portal/validation": path.join(workspaceRoot, "packages/validation/src"),
- };
- const preferredExtensions = [".ts", ".tsx", ".mts", ".cts"];
- const existingExtensions = config.resolve.extensions || [];
- config.resolve.extensions = [...new Set([...preferredExtensions, ...existingExtensions])];
- config.resolve.extensionAlias = {
- ...(config.resolve.extensionAlias || {}),
- ".js": [".ts", ".tsx", ".js"],
- ".mjs": [".mts", ".ts", ".tsx", ".mjs"],
- };
- config.module.rules.push({
- test: /packages\/domain\/.*\.js$/,
- type: "javascript/esm",
- });
- return config;
- },
-
- // Keep type checking enabled; monorepo paths provide types
typescript: { ignoreBuildErrors: false },
-
- // Prefer Turbopack; no custom webpack override needed
};
export default withBundleAnalyzer(nextConfig);
diff --git a/apps/portal/package.json b/apps/portal/package.json
index b1558caf..3d5089ec 100644
--- a/apps/portal/package.json
+++ b/apps/portal/package.json
@@ -6,7 +6,7 @@
"predev": "node ./scripts/dev-prep.mjs",
"dev": "next dev -p ${NEXT_PORT:-3000}",
"build": "next build",
- "build:turbo": "next build --turbopack",
+ "build:webpack": "next build --webpack",
"build:analyze": "ANALYZE=true next build",
"analyze": "npm run build:analyze",
"start": "next start -p ${NEXT_PORT:-3000}",
@@ -25,7 +25,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
- "next": "15.5.7",
+ "next": "16.0.8",
"react": "19.2.1",
"react-dom": "19.2.1",
"tailwind-merge": "^3.4.0",
@@ -35,7 +35,7 @@
"zustand": "^5.0.9"
},
"devDependencies": {
- "@next/bundle-analyzer": "^15.5.7",
+ "@next/bundle-analyzer": "^16.0.8",
"@tailwindcss/postcss": "^4.1.17",
"@types/node": "^24.10.2",
"@types/react": "^19.2.7",
diff --git a/apps/portal/tsconfig.json b/apps/portal/tsconfig.json
index 6b35b98e..10b60af0 100644
--- a/apps/portal/tsconfig.json
+++ b/apps/portal/tsconfig.json
@@ -1,27 +1,17 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
+ "target": "ES2022",
+ "lib": ["ES2024", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
"jsx": "preserve",
"noEmit": true,
- "moduleResolution": "node",
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
"plugins": [{ "name": "next" }],
"baseUrl": ".",
"paths": {
- "@/*": ["./src/*"],
- "@/components/*": ["./src/components/*"],
- "@/core/*": ["./src/core/*"],
- "@/features/*": ["./src/features/*"],
- "@/shared/*": ["./src/shared/*"],
- "@/styles/*": ["./src/styles/*"],
- "@/types/*": ["./src/types/*"],
- "@/lib/*": ["./src/lib/*"],
- "@customer-portal/domain": ["../../packages/domain/index.ts"],
- "@customer-portal/domain/*": ["../../packages/domain/*"],
- "@customer-portal/validation": ["../../packages/validation/src"],
- "@customer-portal/validation/*": ["../../packages/validation/src/*"]
- },
- "allowJs": false
+ "@/*": ["./src/*"]
+ }
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
diff --git a/eslint.config.mjs b/eslint.config.mjs
index fa6a6947..a8fbb221 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,13 +1,12 @@
/* eslint-env node */
import process from "node:process";
+import path from "node:path";
import js from "@eslint/js";
import tseslint from "typescript-eslint";
import prettier from "eslint-plugin-prettier";
import { FlatCompat } from "@eslint/eslintrc";
-import path from "node:path";
import globals from "globals";
-// Use FlatCompat to consume Next.js' legacy shareable configs under apps/portal
const compat = new FlatCompat({ baseDirectory: path.resolve("apps/portal") });
export default [
@@ -23,35 +22,28 @@ export default [
],
},
- // Base JS recommendations for all files
+ // Base JS recommendations
js.configs.recommended,
- // Prettier integration (warn-only)
+ // Prettier integration
{
plugins: { prettier },
- rules: {
- "prettier/prettier": "warn",
- },
+ rules: { "prettier/prettier": "warn" },
},
- // TypeScript (type-checked) for TS files only
- ...tseslint.configs.recommendedTypeChecked.map(config => ({
+ // TypeScript type-checked rules for all TS files
+ ...tseslint.configs.recommendedTypeChecked.map((config) => ({
...config,
files: ["**/*.ts", "**/*.tsx"],
languageOptions: {
...(config.languageOptions || {}),
- globals: {
- ...globals.node,
- },
+ globals: { ...globals.node },
},
})),
+
+ // Backend & domain packages
{
- files: [
- "apps/bff/**/*.ts",
- "packages/domain/**/*.ts",
- "packages/logging/**/*.ts",
- "packages/validation/**/*.ts",
- ],
+ files: ["apps/bff/**/*.ts", "packages/domain/**/*.ts"],
languageOptions: {
parserOptions: {
projectService: true,
@@ -60,17 +52,14 @@ export default [
},
rules: {
"@typescript-eslint/consistent-type-imports": "error",
- "@typescript-eslint/no-unused-vars": [
- "warn",
- { argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
- ],
+ "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }],
"no-console": ["warn", { allow: ["warn", "error"] }],
},
},
- // Enforce consistent strict rules across shared as well
+ // Strict rules for shared packages
{
- files: ["packages/**/*.{ts,tsx}"],
+ files: ["packages/**/*.ts"],
rules: {
"@typescript-eslint/no-redundant-type-constituents": "error",
"@typescript-eslint/no-explicit-any": "error",
@@ -80,15 +69,17 @@ export default [
},
},
- // Next.js app: apply Next's recommended config; TS rules only on TS files
- ...compat
- .extends("next/core-web-vitals")
- .map(config => ({ ...config, files: ["apps/portal/**/*.{js,jsx,ts,tsx}"] })),
- ...compat
- .extends("next/typescript")
- .map(config => ({ ...config, files: ["apps/portal/**/*.{ts,tsx}"] })),
+ // Next.js app config
+ ...compat.extends("next/core-web-vitals").map((config) => ({
+ ...config,
+ files: ["apps/portal/**/*.{js,jsx,ts,tsx}"],
+ })),
+ ...compat.extends("next/typescript").map((config) => ({
+ ...config,
+ files: ["apps/portal/**/*.{ts,tsx}"],
+ })),
- // Ensure type-aware rules in portal have parser services
+ // Portal type-aware rules
{
files: ["apps/portal/**/*.{ts,tsx}"],
languageOptions: {
@@ -102,41 +93,31 @@ export default [
},
},
- // Authenticated pages should rely on the shared route-group layout at (authenticated)/layout.tsx.
+ // Prevent hard navigation in authenticated pages
{
files: ["apps/portal/src/app/(authenticated)/**/*.{ts,tsx}"],
rules: {
- // Prefer Next.js and router, forbid window/location hard reload in portal pages
"no-restricted-syntax": [
"error",
{
selector: "MemberExpression[object.name='window'][property.name='location']",
- message: "Use next/link or useRouter for navigation, not window.location.",
- },
- {
- selector:
- "MemberExpression[object.name='location'][property.name=/^(href|assign|replace)$/]",
- message: "Use next/link or useRouter for navigation, not location.*.",
+ message: "Use next/link or useRouter for navigation.",
},
],
},
},
- // Allow the shared layout file itself to import the layout component
+
+ // Exceptions for specific files
{
files: ["apps/portal/src/app/(authenticated)/layout.tsx"],
- rules: {
- "no-restricted-imports": "off",
- },
+ rules: { "no-restricted-imports": "off" },
},
- // Allow controlled window.location usage for invoice SSO download
{
files: ["apps/portal/src/app/(authenticated)/billing/invoices/[id]/page.tsx"],
- rules: {
- "no-restricted-syntax": "off",
- },
+ rules: { "no-restricted-syntax": "off" },
},
- // Enforce layered type system architecture
+ // Enforce domain imports architecture
{
files: ["apps/portal/src/**/*.{ts,tsx}", "apps/bff/src/**/*.ts"],
rules: {
@@ -146,52 +127,15 @@ export default [
patterns: [
{
group: ["@customer-portal/domain/**/src/**"],
- message:
- "Don't import from domain package internals. Use @customer-portal/domain/ or its Providers namespace instead.",
- },
- {
- group: ["**/utils/ui-state*"],
- message:
- "ui-state.ts has been removed. Use patterns from @customer-portal/domain instead.",
- },
- {
- group: ["@/types"],
- message:
- "Avoid importing from @/types. Import types directly from @customer-portal/domain/ or define locally.",
+ message: "Import from @customer-portal/domain/ instead of internals.",
},
],
},
],
- // Prevent defining deprecated type patterns
- "no-restricted-syntax": [
- "error",
- {
- selector:
- "TSInterfaceDeclaration[id.name=/^(LegacyAsyncState|PaginatedState|FilteredState)$/]",
- message:
- "These legacy state types are deprecated. Use AsyncState, PaginatedAsyncState, or FilterState from @customer-portal/domain instead.",
- },
- {
- selector:
- "TSTypeAliasDeclaration[id.name=/^(LegacyAsyncState|PaginatedState|FilteredState)$/]",
- message:
- "These legacy state types are deprecated. Use AsyncState, PaginatedAsyncState, or FilterState from @customer-portal/domain instead.",
- },
- ],
},
},
- // Node globals for Next config file
- {
- files: ["apps/portal/next.config.mjs"],
- languageOptions: {
- globals: {
- ...globals.node,
- },
- },
- },
-
- // BFF: strict rules enforced + prevent domain type duplication
+ // BFF strict type safety
{
files: ["apps/bff/**/*.ts"],
rules: {
@@ -203,40 +147,14 @@ export default [
"@typescript-eslint/no-unsafe-argument": "error",
"@typescript-eslint/require-await": "error",
"@typescript-eslint/no-floating-promises": "error",
- "no-restricted-syntax": [
- "error",
- {
- selector:
- "TSInterfaceDeclaration[id.name=/^(Invoice|InvoiceItem|Subscription|PaymentMethod|SimDetails)$/]",
- message:
- "Don't re-declare domain types in application code. Import from @customer-portal/domain/ instead.",
- },
- {
- selector:
- "TSTypeAliasDeclaration[id.name=/^(Invoice|InvoiceItem|Subscription|PaymentMethod|SimDetails)$/]",
- message:
- "Don't re-declare domain types in application code. Import from @customer-portal/domain/ instead.",
- },
- ],
},
},
- // Integration packages: must use domain providers and avoid legacy packages
+ // Node globals for config files
{
- files: ["packages/integrations/**/src/**/*.ts"],
- rules: {
- "no-restricted-imports": [
- "error",
- {
- patterns: [
- {
- group: ["@customer-portal/contracts", "@customer-portal/contracts/*", "@customer-portal/schemas", "@customer-portal/schemas/*"],
- message:
- "Legacy contracts/schemas packages have been removed. Import from @customer-portal/domain//providers instead.",
- },
- ],
- },
- ],
+ files: ["*.config.mjs", "apps/portal/next.config.mjs"],
+ languageOptions: {
+ globals: { ...globals.node },
},
},
];
diff --git a/package.json b/package.json
index 75679407..b82c1254 100644
--- a/package.json
+++ b/package.json
@@ -9,10 +9,9 @@
},
"packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501",
"scripts": {
- "predev": "pnpm --filter @customer-portal/domain build",
"dev": "./scripts/dev/manage.sh apps",
- "dev:all": "pnpm --parallel --filter @customer-portal/domain --filter @customer-portal/portal --filter @customer-portal/bff run dev",
- "build": "pnpm --recursive run build",
+ "dev:all": "pnpm --filter @customer-portal/domain build && pnpm --parallel --filter @customer-portal/portal --filter @customer-portal/bff run dev",
+ "build": "pnpm --filter @customer-portal/domain build && pnpm --recursive --filter=!@customer-portal/domain run build",
"start": "pnpm --parallel --filter @customer-portal/portal --filter @customer-portal/bff run start",
"test": "pnpm --recursive run test",
"lint": "pnpm --recursive run lint",
@@ -20,23 +19,14 @@
"format": "prettier -w .",
"format:check": "prettier -c .",
"prepare": "husky",
- "type-check": "pnpm type-check:packages && pnpm type-check:apps",
- "type-check:workspace": "tsc -b --noEmit",
- "type-check:packages": "pnpm --workspace-concurrency=1 --filter @customer-portal/domain --filter @customer-portal/validation --filter @customer-portal/logging run type-check",
- "type-check:apps": "pnpm --workspace-concurrency=1 --filter @customer-portal/bff --filter @customer-portal/portal run type-check",
+ "type-check": "pnpm --filter @customer-portal/domain run type-check && pnpm --filter @customer-portal/bff --filter @customer-portal/portal run type-check",
"clean": "pnpm --recursive run clean",
"dev:start": "./scripts/dev/manage.sh start",
"dev:stop": "./scripts/dev/manage.sh stop",
"dev:restart": "./scripts/dev/manage.sh restart",
- "analyze": "pnpm --filter @customer-portal/portal run analyze",
- "bundle-analyze": "./scripts/bundle-analyze.sh",
"dev:tools": "./scripts/dev/manage.sh tools",
- "dev:apps": "./scripts/dev/manage.sh apps",
"dev:logs": "./scripts/dev/manage.sh logs",
"dev:status": "./scripts/dev/manage.sh status",
- "dev:migrate": "./scripts/dev/manage.sh migrate",
- "dev:studio": "./scripts/dev/manage.sh studio",
- "dev:reset": "./scripts/dev/manage.sh reset",
"prod:deploy": "./scripts/prod/manage.sh deploy",
"prod:start": "./scripts/prod/manage.sh start",
"prod:stop": "./scripts/prod/manage.sh stop",
@@ -48,38 +38,29 @@
"prod:backup": "./scripts/prod/manage.sh backup",
"prod:cleanup": "./scripts/prod/manage.sh cleanup",
"db:migrate": "pnpm --filter @customer-portal/bff run db:migrate",
+ "db:generate": "pnpm --filter @customer-portal/bff run db:generate",
"db:studio": "pnpm --filter @customer-portal/bff run db:studio",
"db:reset": "pnpm --filter @customer-portal/bff run db:reset",
- "update:check": "pnpm outdated --recursive",
- "update:all": "pnpm update --recursive --latest && pnpm audit && pnpm type-check",
- "update:safe": "pnpm update --recursive && pnpm audit && pnpm type-check",
"security:audit": "pnpm audit",
- "security:audit-fix": "pnpm audit --fix || pnpm update --recursive && pnpm audit",
"security:check": "pnpm audit --audit-level=high",
- "dev:watch": "pnpm --parallel --filter @customer-portal/domain --filter @customer-portal/portal --filter @customer-portal/bff run dev",
- "plesk:images": "bash ./scripts/plesk/build-images.sh",
- "postinstall": "husky install || true"
+ "update:check": "pnpm outdated --recursive",
+ "update:safe": "pnpm update --recursive && pnpm audit && pnpm type-check",
+ "analyze": "pnpm --filter @customer-portal/portal run analyze",
+ "plesk:images": "bash ./scripts/plesk/build-images.sh"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^9.39.1",
"@types/node": "^24.10.2",
"eslint": "^9.39.1",
- "eslint-config-next": "15.5.0",
+ "eslint-config-next": "16.0.8",
"eslint-plugin-prettier": "^5.5.4",
"globals": "^16.5.0",
"husky": "^9.1.7",
- "pino": "^10.1.0",
"prettier": "^3.7.4",
- "sharp": "^0.34.5",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
- "typescript-eslint": "^8.49.0",
- "zod": "^4.1.13"
- },
- "dependencies": {
- "@types/ssh2-sftp-client": "^9.0.6",
- "ssh2-sftp-client": "^12.0.1"
+ "typescript-eslint": "^8.49.0"
},
"pnpm": {
"overrides": {
diff --git a/packages/domain/package.json b/packages/domain/package.json
index 1a4012f2..0e83887f 100644
--- a/packages/domain/package.json
+++ b/packages/domain/package.json
@@ -1,7 +1,7 @@
{
"name": "@customer-portal/domain",
"version": "1.0.0",
- "type": "commonjs",
+ "type": "module",
"description": "Unified domain layer with contracts, schemas, and provider mappers",
"private": true,
"sideEffects": false,
@@ -11,34 +11,118 @@
"dist"
],
"exports": {
- ".": "./dist/index.js",
- "./auth": "./dist/auth/index.js",
- "./auth/*": "./dist/auth/*.js",
- "./billing": "./dist/billing/index.js",
- "./billing/*": "./dist/billing/*.js",
- "./catalog": "./dist/catalog/index.js",
- "./catalog/*": "./dist/catalog/*.js",
- "./common": "./dist/common/index.js",
- "./common/*": "./dist/common/*.js",
- "./customer": "./dist/customer/index.js",
- "./customer/*": "./dist/customer/*.js",
- "./dashboard": "./dist/dashboard/index.js",
- "./dashboard/*": "./dist/dashboard/*.js",
- "./mappings": "./dist/mappings/index.js",
- "./mappings/*": "./dist/mappings/*.js",
- "./orders": "./dist/orders/index.js",
- "./orders/*": "./dist/orders/*.js",
- "./payments": "./dist/payments/index.js",
- "./payments/*": "./dist/payments/*.js",
- "./sim": "./dist/sim/index.js",
- "./sim/*": "./dist/sim/*.js",
- "./sim/providers/freebit": "./dist/sim/providers/freebit/index.js",
- "./subscriptions": "./dist/subscriptions/index.js",
- "./subscriptions/*": "./dist/subscriptions/*.js",
- "./support": "./dist/support/index.js",
- "./support/*": "./dist/support/*.js",
- "./toolkit": "./dist/toolkit/index.js",
- "./toolkit/*": "./dist/toolkit/*.js"
+ ".": {
+ "import": "./dist/index.js",
+ "types": "./dist/index.d.ts"
+ },
+ "./auth": {
+ "import": "./dist/auth/index.js",
+ "types": "./dist/auth/index.d.ts"
+ },
+ "./auth/*": {
+ "import": "./dist/auth/*.js",
+ "types": "./dist/auth/*.d.ts"
+ },
+ "./billing": {
+ "import": "./dist/billing/index.js",
+ "types": "./dist/billing/index.d.ts"
+ },
+ "./billing/*": {
+ "import": "./dist/billing/*.js",
+ "types": "./dist/billing/*.d.ts"
+ },
+ "./catalog": {
+ "import": "./dist/catalog/index.js",
+ "types": "./dist/catalog/index.d.ts"
+ },
+ "./catalog/*": {
+ "import": "./dist/catalog/*.js",
+ "types": "./dist/catalog/*.d.ts"
+ },
+ "./common": {
+ "import": "./dist/common/index.js",
+ "types": "./dist/common/index.d.ts"
+ },
+ "./common/*": {
+ "import": "./dist/common/*.js",
+ "types": "./dist/common/*.d.ts"
+ },
+ "./customer": {
+ "import": "./dist/customer/index.js",
+ "types": "./dist/customer/index.d.ts"
+ },
+ "./customer/*": {
+ "import": "./dist/customer/*.js",
+ "types": "./dist/customer/*.d.ts"
+ },
+ "./dashboard": {
+ "import": "./dist/dashboard/index.js",
+ "types": "./dist/dashboard/index.d.ts"
+ },
+ "./dashboard/*": {
+ "import": "./dist/dashboard/*.js",
+ "types": "./dist/dashboard/*.d.ts"
+ },
+ "./mappings": {
+ "import": "./dist/mappings/index.js",
+ "types": "./dist/mappings/index.d.ts"
+ },
+ "./mappings/*": {
+ "import": "./dist/mappings/*.js",
+ "types": "./dist/mappings/*.d.ts"
+ },
+ "./orders": {
+ "import": "./dist/orders/index.js",
+ "types": "./dist/orders/index.d.ts"
+ },
+ "./orders/*": {
+ "import": "./dist/orders/*.js",
+ "types": "./dist/orders/*.d.ts"
+ },
+ "./payments": {
+ "import": "./dist/payments/index.js",
+ "types": "./dist/payments/index.d.ts"
+ },
+ "./payments/*": {
+ "import": "./dist/payments/*.js",
+ "types": "./dist/payments/*.d.ts"
+ },
+ "./sim": {
+ "import": "./dist/sim/index.js",
+ "types": "./dist/sim/index.d.ts"
+ },
+ "./sim/*": {
+ "import": "./dist/sim/*.js",
+ "types": "./dist/sim/*.d.ts"
+ },
+ "./sim/providers/freebit": {
+ "import": "./dist/sim/providers/freebit/index.js",
+ "types": "./dist/sim/providers/freebit/index.d.ts"
+ },
+ "./subscriptions": {
+ "import": "./dist/subscriptions/index.js",
+ "types": "./dist/subscriptions/index.d.ts"
+ },
+ "./subscriptions/*": {
+ "import": "./dist/subscriptions/*.js",
+ "types": "./dist/subscriptions/*.d.ts"
+ },
+ "./support": {
+ "import": "./dist/support/index.js",
+ "types": "./dist/support/index.d.ts"
+ },
+ "./support/*": {
+ "import": "./dist/support/*.js",
+ "types": "./dist/support/*.d.ts"
+ },
+ "./toolkit": {
+ "import": "./dist/toolkit/index.js",
+ "types": "./dist/toolkit/index.d.ts"
+ },
+ "./toolkit/*": {
+ "import": "./dist/toolkit/*.js",
+ "types": "./dist/toolkit/*.d.ts"
+ }
},
"scripts": {
"prebuild": "pnpm run clean",
diff --git a/packages/domain/tsconfig.json b/packages/domain/tsconfig.json
index 58d29130..fdbf3b7e 100644
--- a/packages/domain/tsconfig.json
+++ b/packages/domain/tsconfig.json
@@ -4,7 +4,10 @@
"composite": true,
"outDir": "./dist",
"rootDir": ".",
- "tsBuildInfoFile": "./dist/.tsbuildinfo"
+ "tsBuildInfoFile": "./dist/.tsbuildinfo",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "verbatimModuleSyntax": false
},
"include": [
"auth/**/*",
@@ -13,15 +16,15 @@
"common/**/*",
"customer/**/*",
"dashboard/**/*",
- "providers/**/*",
"mappings/**/*",
"orders/**/*",
"payments/**/*",
+ "providers/**/*",
"sim/**/*",
"subscriptions/**/*",
"support/**/*",
"toolkit/**/*",
"index.ts"
],
- "exclude": ["node_modules", "dist", "**/*.spec.ts", "**/*.test.ts"]
+ "exclude": ["node_modules", "dist"]
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8769f392..2fad3e24 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,13 +11,6 @@ overrides:
importers:
.:
- dependencies:
- '@types/ssh2-sftp-client':
- specifier: ^9.0.6
- version: 9.0.6
- ssh2-sftp-client:
- specifier: ^12.0.1
- version: 12.0.1
devDependencies:
'@eslint/eslintrc':
specifier: ^3.3.3
@@ -32,8 +25,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: 15.5.0
- version: 15.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ specifier: 16.0.8
+ version: 16.0.8(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint-plugin-prettier:
specifier: ^5.5.4
version: 5.5.4(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.7.4)
@@ -43,15 +36,9 @@ importers:
husky:
specifier: ^9.1.7
version: 9.1.7
- pino:
- specifier: ^10.1.0
- version: 10.1.0
prettier:
specifier: ^3.7.4
version: 3.7.4
- sharp:
- specifier: ^0.34.5
- version: 0.34.5
tsx:
specifier: ^4.21.0
version: 4.21.0
@@ -61,9 +48,6 @@ importers:
typescript-eslint:
specifier: ^8.49.0
version: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- zod:
- specifier: ^4.1.13
- version: 4.1.13
apps/bff:
dependencies:
@@ -94,15 +78,15 @@ importers:
'@nestjs/throttler':
specifier: ^6.5.0
version: 6.5.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(reflect-metadata@0.2.2)
+ '@prisma/adapter-pg':
+ specifier: ^7.1.0
+ version: 7.1.0
'@prisma/client':
- specifier: ^6.19.0
- version: 6.19.0(prisma@6.19.0(typescript@5.9.3))(typescript@5.9.3)
+ specifier: ^7.1.0
+ version: 7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3)
'@sendgrid/mail':
specifier: ^8.1.6
version: 8.1.6
- '@types/ssh2-sftp-client':
- specifier: ^9.0.6
- version: 9.0.6
bcrypt:
specifier: ^6.0.0
version: 6.0.0
@@ -145,6 +129,9 @@ importers:
passport-local:
specifier: ^1.0.0
version: 1.0.0
+ pg:
+ specifier: ^8.16.3
+ version: 8.16.3
pino:
specifier: ^10.1.0
version: 10.1.0
@@ -209,6 +196,12 @@ importers:
'@types/passport-local':
specifier: ^1.0.38
version: 1.0.38
+ '@types/pg':
+ specifier: ^8.15.6
+ version: 8.15.6
+ '@types/ssh2-sftp-client':
+ specifier: ^9.0.6
+ version: 9.0.6
'@types/supertest':
specifier: ^6.0.3
version: 6.0.3
@@ -216,8 +209,8 @@ importers:
specifier: ^30.2.0
version: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@types/node@24.10.2)(typescript@5.9.3))
prisma:
- specifier: ^6.19.0
- version: 6.19.0(typescript@5.9.3)
+ specifier: ^7.1.0
+ version: 7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)
source-map-support:
specifier: ^0.5.21
version: 0.5.21
@@ -236,15 +229,9 @@ importers:
tsx:
specifier: ^4.21.0
version: 4.21.0
- ttypescript:
- specifier: ^1.5.15
- version: 1.5.15(ts-node@10.9.2(@types/node@24.10.2)(typescript@5.9.3))(typescript@5.9.3)
typescript:
specifier: ^5.9.3
version: 5.9.3
- typescript-transform-paths:
- specifier: ^3.5.5
- version: 3.5.5(typescript@5.9.3)
apps/portal:
dependencies:
@@ -270,8 +257,8 @@ importers:
specifier: ^4.1.0
version: 4.1.0
next:
- specifier: 15.5.7
- version: 15.5.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ specifier: 16.0.8
+ version: 16.0.8(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
specifier: 19.2.1
version: 19.2.1
@@ -295,8 +282,8 @@ importers:
version: 5.0.9(@types/react@19.2.7)(react@19.2.1)
devDependencies:
'@next/bundle-analyzer':
- specifier: ^15.5.7
- version: 15.5.7
+ specifier: ^16.0.8
+ version: 16.0.8
'@tailwindcss/postcss':
specifier: ^4.1.17
version: 4.1.17
@@ -545,6 +532,18 @@ packages:
'@borewit/text-codec@0.1.1':
resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==}
+ '@chevrotain/cst-dts-gen@10.5.0':
+ resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==}
+
+ '@chevrotain/gast@10.5.0':
+ resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==}
+
+ '@chevrotain/types@10.5.0':
+ resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==}
+
+ '@chevrotain/utils@10.5.0':
+ resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==}
+
'@colors/colors@1.5.0':
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
@@ -557,6 +556,20 @@ packages:
resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
engines: {node: '>=10.0.0'}
+ '@electric-sql/pglite-socket@0.0.6':
+ resolution: {integrity: sha512-6RjmgzphIHIBA4NrMGJsjNWK4pu+bCWJlEWlwcxFTVY3WT86dFpKwbZaGWZV6C5Rd7sCk1Z0CI76QEfukLAUXw==}
+ hasBin: true
+ peerDependencies:
+ '@electric-sql/pglite': 0.3.2
+
+ '@electric-sql/pglite-tools@0.2.7':
+ resolution: {integrity: sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg==}
+ peerDependencies:
+ '@electric-sql/pglite': 0.3.2
+
+ '@electric-sql/pglite@0.3.2':
+ resolution: {integrity: sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w==}
+
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
@@ -774,6 +787,12 @@ packages:
peerDependencies:
react: '>= 16 || ^19.0.0-rc'
+ '@hono/node-server@1.19.6':
+ resolution: {integrity: sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==}
+ engines: {node: '>=18.14.1'}
+ peerDependencies:
+ hono: ^4
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -1207,6 +1226,10 @@ packages:
'@microsoft/tsdoc@0.15.1':
resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
+ '@mrleebo/prisma-ast@0.12.1':
+ resolution: {integrity: sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w==}
+ engines: {node: '>=16'}
+
'@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==}
cpu: [arm64]
@@ -1375,59 +1398,59 @@ packages:
'@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
reflect-metadata: ^0.1.13 || ^0.2.0
- '@next/bundle-analyzer@15.5.7':
- resolution: {integrity: sha512-bKCGI9onUYyLaAQKvJOTeSv1vt3CYtF4Or+CRlCP/1Yu8NR9W4A2kd4qBs2OYFbT+/38fKg8BIPNt7IcMLKZCA==}
+ '@next/bundle-analyzer@16.0.8':
+ resolution: {integrity: sha512-LFWHAWdurTCpqLq1ZRUah1nuDK8cti6kN8vj4wqIW3yAnq3BDgJeNgMMUmeLLzR9C81AnVKfSZFBEhn+aUpe/g==}
- '@next/env@15.5.7':
- resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==}
+ '@next/env@16.0.8':
+ resolution: {integrity: sha512-xP4WrQZuj9MdmLJy3eWFHepo+R3vznsMSS8Dy3wdA7FKpjCiesQ6DxZvdGziQisj0tEtCgBKJzjcAc4yZOgLEQ==}
- '@next/eslint-plugin-next@15.5.0':
- resolution: {integrity: sha512-+k83U/fST66eQBjTltX2T9qUYd43ntAe+NZ5qeZVTQyTiFiHvTLtkpLKug4AnZAtuI/lwz5tl/4QDJymjVkybg==}
+ '@next/eslint-plugin-next@16.0.8':
+ resolution: {integrity: sha512-1miV0qXDcLUaOdHridVPCh4i39ElRIAraseVIbb3BEqyZ5ol9sPyjTP/GNTPV5rBxqxjF6/vv5zQTVbhiNaLqA==}
- '@next/swc-darwin-arm64@15.5.7':
- resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
+ '@next/swc-darwin-arm64@16.0.8':
+ resolution: {integrity: sha512-yjVMvTQN21ZHOclQnhSFbjBTEizle+1uo4NV6L4rtS9WO3nfjaeJYw+H91G+nEf3Ef43TaEZvY5mPWfB/De7tA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.5.7':
- resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
+ '@next/swc-darwin-x64@16.0.8':
+ resolution: {integrity: sha512-+zu2N3QQ0ZOb6RyqQKfcu/pn0UPGmg+mUDqpAAEviAcEVEYgDckemOpiMRsBP3IsEKpcoKuNzekDcPczEeEIzA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.5.7':
- resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
+ '@next/swc-linux-arm64-gnu@16.0.8':
+ resolution: {integrity: sha512-LConttk+BeD0e6RG0jGEP9GfvdaBVMYsLJ5aDDweKiJVVCu6sGvo+Ohz9nQhvj7EQDVVRJMCGhl19DmJwGr6bQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.5.7':
- resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
+ '@next/swc-linux-arm64-musl@16.0.8':
+ resolution: {integrity: sha512-JaXFAlqn8fJV+GhhA9lpg6da/NCN/v9ub98n3HoayoUSPOVdoxEEt86iT58jXqQCs/R3dv5ZnxGkW8aF4obMrQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.5.7':
- resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
+ '@next/swc-linux-x64-gnu@16.0.8':
+ resolution: {integrity: sha512-O7M9it6HyNhsJp3HNAsJoHk5BUsfj7hRshfptpGcVsPZ1u0KQ/oVy8oxF7tlwxA5tR43VUP0yRmAGm1us514ng==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.5.7':
- resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
+ '@next/swc-linux-x64-musl@16.0.8':
+ resolution: {integrity: sha512-8+KClEC/GLI2dLYcrWwHu5JyC5cZYCFnccVIvmxpo6K+XQt4qzqM5L4coofNDZYkct/VCCyJWGbZZDsg6w6LFA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.5.7':
- resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
+ '@next/swc-win32-arm64-msvc@16.0.8':
+ resolution: {integrity: sha512-rpQ/PgTEgH68SiXmhu/cJ2hk9aZ6YgFvspzQWe2I9HufY6g7V02DXRr/xrVqOaKm2lenBFPNQ+KAaeveywqV+A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.5.7':
- resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
+ '@next/swc-win32-x64-msvc@16.0.8':
+ resolution: {integrity: sha512-jWpWjWcMQu2iZz4pEK2IktcfR+OA9+cCG8zenyLpcW8rN4rzjfOzH4yj/b1FiEAZHKS+5Vq8+bZyHi+2yqHbFA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1474,35 +1497,63 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
- '@prisma/client@6.19.0':
- resolution: {integrity: sha512-QXFT+N/bva/QI2qoXmjBzL7D6aliPffIwP+81AdTGq0FXDoLxLkWivGMawG8iM5B9BKfxLIXxfWWAF6wbuJU6g==}
- engines: {node: '>=18.18'}
+ '@prisma/adapter-pg@7.1.0':
+ resolution: {integrity: sha512-DSAnUwkKfX4bUzhkrjGN4IBQzwg0nvFw2W17H0Oa532I5w9nLtTJ9mAEGDs1nUBEGRAsa0c7qsf8CSgfJ4DsBQ==}
+
+ '@prisma/client-runtime-utils@7.1.0':
+ resolution: {integrity: sha512-39xmeBrNTN40FzF34aJMjfX1PowVCqoT3UKUWBBSP3aXV05NRqGBC3x2wCDs96ti6ZgdiVzqnRDHtbzU8X+lPQ==}
+
+ '@prisma/client@7.1.0':
+ resolution: {integrity: sha512-qf7GPYHmS/xybNiSOpzv9wBo+UwqfL2PeyX+08v+KVHDI0AlSCQIh5bBySkH3alu06NX9wy98JEnckhMHoMFfA==}
+ engines: {node: ^20.19 || ^22.12 || >=24.0}
peerDependencies:
prisma: '*'
- typescript: '>=5.1.0'
+ typescript: '>=5.4.0'
peerDependenciesMeta:
prisma:
optional: true
typescript:
optional: true
- '@prisma/config@6.19.0':
- resolution: {integrity: sha512-zwCayme+NzI/WfrvFEtkFhhOaZb/hI+X8TTjzjJ252VbPxAl2hWHK5NMczmnG9sXck2lsXrxIZuK524E25UNmg==}
+ '@prisma/config@7.1.0':
+ resolution: {integrity: sha512-Uz+I43Wn1RYNHtuYtOhOnUcNMWp2Pd3GUDDKs37xlHptCGpzEG3MRR9L+8Y2ISMsMI24z/Ni+ww6OB/OO8M0sQ==}
- '@prisma/debug@6.19.0':
- resolution: {integrity: sha512-8hAdGG7JmxrzFcTzXZajlQCidX0XNkMJkpqtfbLV54wC6LSSX6Vni25W/G+nAANwLnZ2TmwkfIuWetA7jJxJFA==}
+ '@prisma/debug@6.8.2':
+ resolution: {integrity: sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==}
- '@prisma/engines-version@6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773':
- resolution: {integrity: sha512-gV7uOBQfAFlWDvPJdQxMT1aSRur3a0EkU/6cfbAC5isV67tKDWUrPauyaHNpB+wN1ebM4A9jn/f4gH+3iHSYSQ==}
+ '@prisma/debug@7.1.0':
+ resolution: {integrity: sha512-pPAckG6etgAsEBusmZiFwM9bldLSNkn++YuC4jCTJACdK5hLOVnOzX7eSL2FgaU6Gomd6wIw21snUX2dYroMZQ==}
- '@prisma/engines@6.19.0':
- resolution: {integrity: sha512-pMRJ+1S6NVdXoB8QJAPIGpKZevFjxhKt0paCkRDTZiczKb7F4yTgRP8M4JdVkpQwmaD4EoJf6qA+p61godDokw==}
+ '@prisma/dev@0.15.0':
+ resolution: {integrity: sha512-KhWaipnFlS/fWEs6I6Oqjcy2S08vKGmxJ5LexqUl/3Ve0EgLUsZwdKF0MvqPM5F5ttw8GtfZarjM5y7VLwv9Ow==}
- '@prisma/fetch-engine@6.19.0':
- resolution: {integrity: sha512-OOx2Lda0DGrZ1rodADT06ZGqHzr7HY7LNMaFE2Vp8dp146uJld58sRuasdX0OiwpHgl8SqDTUKHNUyzEq7pDdQ==}
+ '@prisma/driver-adapter-utils@7.1.0':
+ resolution: {integrity: sha512-AlVLzeXkw81+47MvQ9M8DvTiHkRfJ8xzklTbYjpskb0cTTDVHboTI/OVwT6Wcep/bNvfLKJYO0nylBiM5rxgww==}
- '@prisma/get-platform@6.19.0':
- resolution: {integrity: sha512-ym85WDO2yDhC3fIXHWYpG3kVMBA49cL1XD2GCsCF8xbwoy2OkDQY44gEbAt2X46IQ4Apq9H6g0Ex1iFfPqEkHA==}
+ '@prisma/engines-version@7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba':
+ resolution: {integrity: sha512-qZUevUh+yPhGT28rDQnV8V2kLnFjirzhVD67elRPIJHRsUV/mkII10HSrJrhK/U2GYgAxXR2VEREtq7AsfS8qw==}
+
+ '@prisma/engines@7.1.0':
+ resolution: {integrity: sha512-KQlraOybdHAzVv45KWKJzpR9mJLkib7/TyApQpqrsL7FUHfgjIcy8jrVGt3iNfG6/GDDl+LNlJ84JSQwIfdzxA==}
+
+ '@prisma/fetch-engine@7.1.0':
+ resolution: {integrity: sha512-GZYF5Q8kweXWGfn87hTu17kw7x1DgnehgKoE4Zg1BmHYF3y1Uu0QRY/qtSE4veH3g+LW8f9HKqA0tARG66bxxQ==}
+
+ '@prisma/get-platform@6.8.2':
+ resolution: {integrity: sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==}
+
+ '@prisma/get-platform@7.1.0':
+ resolution: {integrity: sha512-lq8hMdjKiZftuT5SssYB3EtQj8+YjL24/ZTLflQqzFquArKxBcyp6Xrblto+4lzIKJqnpOjfMiBjMvl7YuD7+Q==}
+
+ '@prisma/query-plan-executor@6.18.0':
+ resolution: {integrity: sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==}
+
+ '@prisma/studio-core@0.8.2':
+ resolution: {integrity: sha512-/iAEWEUpTja+7gVMu1LtR2pPlvDmveAwMHdTWbDeGlT7yiv0ZTCPpmeAGdq/Y9aJ9Zj1cEGBXGRbmmNPj022PQ==}
+ peerDependencies:
+ '@types/react': ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
'@protobufjs/aspromise@1.1.2':
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
@@ -1537,9 +1588,6 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- '@rushstack/eslint-patch@1.15.0':
- resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==}
-
'@scarf/scarf@1.4.0':
resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
@@ -1793,6 +1841,9 @@ packages:
'@types/passport@1.0.17':
resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==}
+ '@types/pg@8.15.6':
+ resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==}
+
'@types/qs@6.14.0':
resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
@@ -2216,6 +2267,10 @@ packages:
avro-js@1.12.1:
resolution: {integrity: sha512-P8gTa620GdU/p1XXkWJup9Nkth3aEExgw8+0eyrKBrFLBW587iXOKyQfQ+TkgzyxUcMm8wo45KmPKujvPPRpsQ==}
+ aws-ssl-profiles@1.1.2:
+ resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==}
+ engines: {node: '>= 6.0.0'}
+
axe-core@4.11.0:
resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==}
engines: {node: '>=4'}
@@ -2372,6 +2427,9 @@ packages:
chardet@2.1.1:
resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
+ chevrotain@10.5.0:
+ resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==}
+
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
@@ -2799,10 +2857,10 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@15.5.0:
- resolution: {integrity: sha512-Yl4hlOdBqstAuHnlBfx2RimBzWQwysM2SJNu5EzYVa2qS2ItPs7lgxL0sJJDudEx5ZZHfWPZ/6U8+FtDFWs7/w==}
+ eslint-config-next@16.0.8:
+ resolution: {integrity: sha512-8J5cOAboXIV3f8OD6BOyj7Fik6n/as7J4MboiUSExWruf/lCu1OPR3ZVSdnta6WhzebrmAATEmNSBZsLWA6kbg==}
peerDependencies:
- eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
+ eslint: '>=9.0.0'
typescript: '>=3.3.1'
peerDependenciesMeta:
typescript:
@@ -2875,9 +2933,9 @@ packages:
eslint-config-prettier:
optional: true
- eslint-plugin-react-hooks@5.2.0:
- resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
- engines: {node: '>=10'}
+ eslint-plugin-react-hooks@7.0.1:
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
+ engines: {node: '>=18'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
@@ -3131,6 +3189,9 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ generate-function@2.3.1:
+ resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==}
+
generator-function@2.0.1:
resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
engines: {node: '>= 0.4'}
@@ -3151,6 +3212,9 @@ packages:
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
engines: {node: '>=8.0.0'}
+ get-port-please@3.1.2:
+ resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -3197,6 +3261,10 @@ packages:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
+ globals@16.4.0:
+ resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
+ engines: {node: '>=18'}
+
globals@16.5.0:
resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
engines: {node: '>=18'}
@@ -3212,6 +3280,9 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ grammex@3.1.12:
+ resolution: {integrity: sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==}
+
gzip-size@6.0.0:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
@@ -3255,6 +3326,16 @@ packages:
help-me@5.0.0:
resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
+ hermes-estree@0.25.1:
+ resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
+
+ hermes-parser@0.25.1:
+ resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+
+ hono@4.10.6:
+ resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==}
+ engines: {node: '>=16.9.0'}
+
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
@@ -3265,6 +3346,9 @@ packages:
http-parser-js@0.5.10:
resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==}
+ http-status-codes@2.3.0:
+ resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==}
+
https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@@ -3423,6 +3507,9 @@ packages:
is-promise@4.0.0:
resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+ is-property@1.0.2:
+ resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
+
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -3800,6 +3887,10 @@ packages:
resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
engines: {node: '>= 12.0.0'}
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -3879,6 +3970,10 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lru.min@1.1.3:
+ resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==}
+ engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
+
luxon@3.7.2:
resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
engines: {node: '>=12'}
@@ -4009,6 +4104,14 @@ packages:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
engines: {node: ^18.17.0 || >=20.5.0}
+ mysql2@3.15.3:
+ resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==}
+ engines: {node: '>= 8.0'}
+
+ named-placeholders@1.1.4:
+ resolution: {integrity: sha512-/qfG0Kk/bLJIvej4FcPQ2KYUJP8iQdU1CTxysNb/U2wUNb+/4K485yeio8iNoiwfqJnsTInXoRPTza0dZWHVJQ==}
+ engines: {node: '>=8.0.0'}
+
nan@2.24.0:
resolution: {integrity: sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==}
@@ -4052,9 +4155,9 @@ packages:
'@nestjs/swagger':
optional: true
- next@15.5.7:
- resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ next@16.0.8:
+ resolution: {integrity: sha512-LmcZzG04JuzNXi48s5P+TnJBsTGPJunViNKV/iE4uM6kstjTQsQhvsAv+xF6MJxU2Pr26tl15eVbp0jQnsv6/g==}
+ engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
@@ -4293,6 +4396,40 @@ packages:
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+ pg-cloudflare@1.2.7:
+ resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==}
+
+ pg-connection-string@2.9.1:
+ resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==}
+
+ pg-int8@1.0.1:
+ resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
+ engines: {node: '>=4.0.0'}
+
+ pg-pool@3.10.1:
+ resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==}
+ peerDependencies:
+ pg: '>=8.0'
+
+ pg-protocol@1.10.3:
+ resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==}
+
+ pg-types@2.2.0:
+ resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
+ engines: {node: '>=4'}
+
+ pg@8.16.3:
+ resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==}
+ engines: {node: '>= 16.0.0'}
+ peerDependencies:
+ pg-native: '>=3.0.1'
+ peerDependenciesMeta:
+ pg-native:
+ optional: true
+
+ pgpass@1.0.5:
+ resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -4355,6 +4492,30 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+ postgres-array@2.0.0:
+ resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
+ engines: {node: '>=4'}
+
+ postgres-array@3.0.4:
+ resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==}
+ engines: {node: '>=12'}
+
+ postgres-bytea@1.0.0:
+ resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
+ engines: {node: '>=0.10.0'}
+
+ postgres-date@1.0.7:
+ resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
+ engines: {node: '>=0.10.0'}
+
+ postgres-interval@1.2.0:
+ resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
+ engines: {node: '>=0.10.0'}
+
+ postgres@3.4.7:
+ resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==}
+ engines: {node: '>=12'}
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -4372,13 +4533,16 @@ packages:
resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- prisma@6.19.0:
- resolution: {integrity: sha512-F3eX7K+tWpkbhl3l4+VkFtrwJlLXbAM+f9jolgoUZbFcm1DgHZ4cq9AgVEgUym2au5Ad/TDLN8lg83D+M10ycw==}
- engines: {node: '>=18.18'}
+ prisma@7.1.0:
+ resolution: {integrity: sha512-dy/3urE4JjhdiW5b09pGjVhGI7kPESK2VlCDrCqeYK5m5SslAtG5FCGnZWP7E8Sdg+Ow1wV2mhJH5RTFL5gEsw==}
+ engines: {node: ^20.19 || ^22.12 || >=24.0}
hasBin: true
peerDependencies:
- typescript: '>=5.1.0'
+ better-sqlite3: '>=9.0.0'
+ typescript: '>=5.4.0'
peerDependenciesMeta:
+ better-sqlite3:
+ optional: true
typescript:
optional: true
@@ -4388,6 +4552,9 @@ packages:
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ proper-lockfile@4.1.2:
+ resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
+
protobufjs@7.5.4:
resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
engines: {node: '>=12.0.0'}
@@ -4481,10 +4648,16 @@ packages:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
+ regexp-to-ast@0.5.0:
+ resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==}
+
regexp.prototype.flags@1.5.4:
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
engines: {node: '>= 0.4'}
+ remeda@2.21.3:
+ resolution: {integrity: sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==}
+
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -4521,6 +4694,10 @@ packages:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -4597,6 +4774,9 @@ packages:
resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
engines: {node: '>= 18'}
+ seq-queue@0.0.5:
+ resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
+
sequin@0.1.1:
resolution: {integrity: sha512-hJWMZRwP75ocoBM+1/YaCsvS0j5MTPeBHJkS2/wruehl9xwtX30HlDF1Gt6UZ8HHHY8SJa2/IL+jo+JJCd59rA==}
engines: {node: '>=0.4.0'}
@@ -4695,6 +4875,10 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
+ sqlstring@2.3.3:
+ resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==}
+ engines: {node: '>= 0.6'}
+
ssh2-sftp-client@12.0.1:
resolution: {integrity: sha512-ICJ1L2PmBel2Q2ctbyxzTFZCPKSHYYD6s2TFZv7NXmZDrDNGk8lHBb/SK2WgXLMXNANH78qoumeJzxlWZqSqWg==}
engines: {node: '>=18.20.4'}
@@ -4717,6 +4901,9 @@ packages:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
+ std-env@3.9.0:
+ resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+
stop-iteration-iterator@1.1.0:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
engines: {node: '>= 0.4'}
@@ -4994,13 +5181,6 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- ttypescript@1.5.15:
- resolution: {integrity: sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==}
- hasBin: true
- peerDependencies:
- ts-node: '>=8.0.2'
- typescript: '>=3.2.2'
-
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
@@ -5060,11 +5240,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- typescript-transform-paths@3.5.5:
- resolution: {integrity: sha512-RMK86wKe/4+ad+3kMT9SKAs3K0tUHLe7hF+MLbD6VpC9VUmFuKorhf3pHz+qO5GdS4mUp2ncNUo14j6ws9UvBQ==}
- peerDependencies:
- typescript: '>=3.6.5'
-
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -5138,6 +5313,14 @@ packages:
resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
engines: {node: '>=10.12.0'}
+ valibot@1.2.0:
+ resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
validator@13.15.23:
resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==}
engines: {node: '>= 0.10'}
@@ -5299,6 +5482,15 @@ packages:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
+ zeptomatch@2.0.2:
+ resolution: {integrity: sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g==}
+
+ zod-validation-error@4.0.2:
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+
zod@4.1.13:
resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==}
@@ -5575,6 +5767,21 @@ snapshots:
'@borewit/text-codec@0.1.1': {}
+ '@chevrotain/cst-dts-gen@10.5.0':
+ dependencies:
+ '@chevrotain/gast': 10.5.0
+ '@chevrotain/types': 10.5.0
+ lodash: 4.17.21
+
+ '@chevrotain/gast@10.5.0':
+ dependencies:
+ '@chevrotain/types': 10.5.0
+ lodash: 4.17.21
+
+ '@chevrotain/types@10.5.0': {}
+
+ '@chevrotain/utils@10.5.0': {}
+
'@colors/colors@1.5.0':
optional: true
@@ -5584,6 +5791,16 @@ snapshots:
'@discoveryjs/json-ext@0.5.7': {}
+ '@electric-sql/pglite-socket@0.0.6(@electric-sql/pglite@0.3.2)':
+ dependencies:
+ '@electric-sql/pglite': 0.3.2
+
+ '@electric-sql/pglite-tools@0.2.7(@electric-sql/pglite@0.3.2)':
+ dependencies:
+ '@electric-sql/pglite': 0.3.2
+
+ '@electric-sql/pglite@0.3.2': {}
+
'@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
@@ -5740,6 +5957,10 @@ snapshots:
dependencies:
react: 19.2.1
+ '@hono/node-server@1.19.6(hono@4.10.6)':
+ dependencies:
+ hono: 4.10.6
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.7':
@@ -5751,7 +5972,8 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
- '@img/colour@1.0.0': {}
+ '@img/colour@1.0.0':
+ optional: true
'@img/sharp-darwin-arm64@0.34.5':
optionalDependencies:
@@ -6229,6 +6451,11 @@ snapshots:
'@microsoft/tsdoc@0.15.1':
optional: true
+ '@mrleebo/prisma-ast@0.12.1':
+ dependencies:
+ chevrotain: 10.5.0
+ lilconfig: 2.1.0
+
'@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
optional: true
@@ -6404,41 +6631,41 @@ snapshots:
'@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)
reflect-metadata: 0.2.2
- '@next/bundle-analyzer@15.5.7':
+ '@next/bundle-analyzer@16.0.8':
dependencies:
webpack-bundle-analyzer: 4.10.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@next/env@15.5.7': {}
+ '@next/env@16.0.8': {}
- '@next/eslint-plugin-next@15.5.0':
+ '@next/eslint-plugin-next@16.0.8':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@15.5.7':
+ '@next/swc-darwin-arm64@16.0.8':
optional: true
- '@next/swc-darwin-x64@15.5.7':
+ '@next/swc-darwin-x64@16.0.8':
optional: true
- '@next/swc-linux-arm64-gnu@15.5.7':
+ '@next/swc-linux-arm64-gnu@16.0.8':
optional: true
- '@next/swc-linux-arm64-musl@15.5.7':
+ '@next/swc-linux-arm64-musl@16.0.8':
optional: true
- '@next/swc-linux-x64-gnu@15.5.7':
+ '@next/swc-linux-x64-gnu@16.0.8':
optional: true
- '@next/swc-linux-x64-musl@15.5.7':
+ '@next/swc-linux-x64-musl@16.0.8':
optional: true
- '@next/swc-win32-arm64-msvc@15.5.7':
+ '@next/swc-win32-arm64-msvc@16.0.8':
optional: true
- '@next/swc-win32-x64-msvc@15.5.7':
+ '@next/swc-win32-x64-msvc@16.0.8':
optional: true
'@noble/hashes@1.8.0': {}
@@ -6474,12 +6701,24 @@ snapshots:
'@polka/url@1.0.0-next.29': {}
- '@prisma/client@6.19.0(prisma@6.19.0(typescript@5.9.3))(typescript@5.9.3)':
+ '@prisma/adapter-pg@7.1.0':
+ dependencies:
+ '@prisma/driver-adapter-utils': 7.1.0
+ pg: 8.16.3
+ postgres-array: 3.0.4
+ transitivePeerDependencies:
+ - pg-native
+
+ '@prisma/client-runtime-utils@7.1.0': {}
+
+ '@prisma/client@7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3)':
+ dependencies:
+ '@prisma/client-runtime-utils': 7.1.0
optionalDependencies:
- prisma: 6.19.0(typescript@5.9.3)
+ prisma: 7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)
typescript: 5.9.3
- '@prisma/config@6.19.0':
+ '@prisma/config@7.1.0':
dependencies:
c12: 3.1.0
deepmerge-ts: 7.1.5
@@ -6488,26 +6727,66 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@prisma/debug@6.19.0': {}
+ '@prisma/debug@6.8.2': {}
- '@prisma/engines-version@6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773': {}
+ '@prisma/debug@7.1.0': {}
- '@prisma/engines@6.19.0':
+ '@prisma/dev@0.15.0(typescript@5.9.3)':
dependencies:
- '@prisma/debug': 6.19.0
- '@prisma/engines-version': 6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773
- '@prisma/fetch-engine': 6.19.0
- '@prisma/get-platform': 6.19.0
+ '@electric-sql/pglite': 0.3.2
+ '@electric-sql/pglite-socket': 0.0.6(@electric-sql/pglite@0.3.2)
+ '@electric-sql/pglite-tools': 0.2.7(@electric-sql/pglite@0.3.2)
+ '@hono/node-server': 1.19.6(hono@4.10.6)
+ '@mrleebo/prisma-ast': 0.12.1
+ '@prisma/get-platform': 6.8.2
+ '@prisma/query-plan-executor': 6.18.0
+ foreground-child: 3.3.1
+ get-port-please: 3.1.2
+ hono: 4.10.6
+ http-status-codes: 2.3.0
+ pathe: 2.0.3
+ proper-lockfile: 4.1.2
+ remeda: 2.21.3
+ std-env: 3.9.0
+ valibot: 1.2.0(typescript@5.9.3)
+ zeptomatch: 2.0.2
+ transitivePeerDependencies:
+ - typescript
- '@prisma/fetch-engine@6.19.0':
+ '@prisma/driver-adapter-utils@7.1.0':
dependencies:
- '@prisma/debug': 6.19.0
- '@prisma/engines-version': 6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773
- '@prisma/get-platform': 6.19.0
+ '@prisma/debug': 7.1.0
- '@prisma/get-platform@6.19.0':
+ '@prisma/engines-version@7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba': {}
+
+ '@prisma/engines@7.1.0':
dependencies:
- '@prisma/debug': 6.19.0
+ '@prisma/debug': 7.1.0
+ '@prisma/engines-version': 7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba
+ '@prisma/fetch-engine': 7.1.0
+ '@prisma/get-platform': 7.1.0
+
+ '@prisma/fetch-engine@7.1.0':
+ dependencies:
+ '@prisma/debug': 7.1.0
+ '@prisma/engines-version': 7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba
+ '@prisma/get-platform': 7.1.0
+
+ '@prisma/get-platform@6.8.2':
+ dependencies:
+ '@prisma/debug': 6.8.2
+
+ '@prisma/get-platform@7.1.0':
+ dependencies:
+ '@prisma/debug': 7.1.0
+
+ '@prisma/query-plan-executor@6.18.0': {}
+
+ '@prisma/studio-core@0.8.2(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ '@types/react': 19.2.7
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
'@protobufjs/aspromise@1.1.2': {}
@@ -6534,8 +6813,6 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@rushstack/eslint-patch@1.15.0': {}
-
'@scarf/scarf@1.4.0':
optional: true
@@ -6805,6 +7082,12 @@ snapshots:
dependencies:
'@types/express': 5.0.6
+ '@types/pg@8.15.6':
+ dependencies:
+ '@types/node': 24.10.2
+ pg-protocol: 1.10.3
+ pg-types: 2.2.0
+
'@types/qs@6.14.0': {}
'@types/range-parser@1.2.7': {}
@@ -7269,6 +7552,8 @@ snapshots:
dependencies:
underscore: 1.13.7
+ aws-ssl-profiles@1.1.2: {}
+
axe-core@4.11.0: {}
axios@1.13.2:
@@ -7478,6 +7763,15 @@ snapshots:
chardet@2.1.1: {}
+ chevrotain@10.5.0:
+ dependencies:
+ '@chevrotain/cst-dts-gen': 10.5.0
+ '@chevrotain/gast': 10.5.0
+ '@chevrotain/types': 10.5.0
+ '@chevrotain/utils': 10.5.0
+ lodash: 4.17.21
+ regexp-to-ast: 0.5.0
+
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
@@ -7925,22 +8219,22 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@15.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ eslint-config-next@16.0.8(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@next/eslint-plugin-next': 15.5.0
- '@rushstack/eslint-patch': 1.15.0
- '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(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': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@next/eslint-plugin-next': 16.0.8
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
+ globals: 16.4.0
+ typescript-eslint: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
+ - '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
@@ -8036,9 +8330,16 @@ snapshots:
optionalDependencies:
'@types/eslint': 9.6.1
- eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
+ '@babel/core': 7.28.5
+ '@babel/parser': 7.28.5
eslint: 9.39.1(jiti@2.6.1)
+ hermes-parser: 0.25.1
+ zod: 4.1.13
+ zod-validation-error: 4.0.2(zod@4.1.13)
+ transitivePeerDependencies:
+ - supports-color
eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)):
dependencies:
@@ -8409,6 +8710,10 @@ snapshots:
functions-have-names@1.2.3: {}
+ generate-function@2.3.1:
+ dependencies:
+ is-property: 1.0.2
+
generator-function@2.0.1: {}
gensync@1.0.0-beta.2: {}
@@ -8430,6 +8735,8 @@ snapshots:
get-package-type@0.1.0: {}
+ get-port-please@3.1.2: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -8492,6 +8799,8 @@ snapshots:
globals@14.0.0: {}
+ globals@16.4.0: {}
+
globals@16.5.0: {}
globalthis@1.0.4:
@@ -8503,6 +8812,8 @@ snapshots:
graceful-fs@4.2.11: {}
+ grammex@3.1.12: {}
+
gzip-size@6.0.0:
dependencies:
duplexer: 0.1.2
@@ -8542,6 +8853,14 @@ snapshots:
help-me@5.0.0: {}
+ hermes-estree@0.25.1: {}
+
+ hermes-parser@0.25.1:
+ dependencies:
+ hermes-estree: 0.25.1
+
+ hono@4.10.6: {}
+
html-escaper@2.0.2: {}
http-errors@2.0.1:
@@ -8554,6 +8873,8 @@ snapshots:
http-parser-js@0.5.10: {}
+ http-status-codes@2.3.0: {}
+
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
@@ -8723,6 +9044,8 @@ snapshots:
is-promise@4.0.0: {}
+ is-property@1.0.2: {}
+
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -9299,6 +9622,8 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.30.2
lightningcss-win32-x64-msvc: 1.30.2
+ lilconfig@2.1.0: {}
+
lines-and-columns@1.2.4: {}
load-esm@1.0.3: {}
@@ -9358,6 +9683,8 @@ snapshots:
dependencies:
yallist: 3.1.1
+ lru.min@1.1.3: {}
+
luxon@3.7.2: {}
magic-string@0.30.17:
@@ -9476,6 +9803,22 @@ snapshots:
mute-stream@2.0.0: {}
+ mysql2@3.15.3:
+ dependencies:
+ aws-ssl-profiles: 1.1.2
+ denque: 2.1.0
+ generate-function: 2.3.1
+ iconv-lite: 0.7.0
+ long: 5.3.2
+ lru.min: 1.1.3
+ named-placeholders: 1.1.4
+ seq-queue: 0.0.5
+ sqlstring: 2.3.3
+
+ named-placeholders@1.1.4:
+ dependencies:
+ lru.min: 1.1.3
+
nan@2.24.0:
optional: true
@@ -9505,24 +9848,24 @@ snapshots:
optionalDependencies:
'@nestjs/swagger': 11.2.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)
- next@15.5.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
+ next@16.0.8(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- '@next/env': 15.5.7
+ '@next/env': 16.0.8
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001760
postcss: 8.4.31
react: 19.2.1
react-dom: 19.2.1(react@19.2.1)
- styled-jsx: 5.1.6(react@19.2.1)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.5.7
- '@next/swc-darwin-x64': 15.5.7
- '@next/swc-linux-arm64-gnu': 15.5.7
- '@next/swc-linux-arm64-musl': 15.5.7
- '@next/swc-linux-x64-gnu': 15.5.7
- '@next/swc-linux-x64-musl': 15.5.7
- '@next/swc-win32-arm64-msvc': 15.5.7
- '@next/swc-win32-x64-msvc': 15.5.7
+ '@next/swc-darwin-arm64': 16.0.8
+ '@next/swc-darwin-x64': 16.0.8
+ '@next/swc-linux-arm64-gnu': 16.0.8
+ '@next/swc-linux-arm64-musl': 16.0.8
+ '@next/swc-linux-x64-gnu': 16.0.8
+ '@next/swc-linux-x64-musl': 16.0.8
+ '@next/swc-win32-arm64-msvc': 16.0.8
+ '@next/swc-win32-x64-msvc': 16.0.8
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -9747,6 +10090,41 @@ snapshots:
perfect-debounce@1.0.0: {}
+ pg-cloudflare@1.2.7:
+ optional: true
+
+ pg-connection-string@2.9.1: {}
+
+ pg-int8@1.0.1: {}
+
+ pg-pool@3.10.1(pg@8.16.3):
+ dependencies:
+ pg: 8.16.3
+
+ pg-protocol@1.10.3: {}
+
+ pg-types@2.2.0:
+ dependencies:
+ pg-int8: 1.0.1
+ postgres-array: 2.0.0
+ postgres-bytea: 1.0.0
+ postgres-date: 1.0.7
+ postgres-interval: 1.2.0
+
+ pg@8.16.3:
+ dependencies:
+ pg-connection-string: 2.9.1
+ pg-pool: 3.10.1(pg@8.16.3)
+ pg-protocol: 1.10.3
+ pg-types: 2.2.0
+ pgpass: 1.0.5
+ optionalDependencies:
+ pg-cloudflare: 1.2.7
+
+ pgpass@1.0.5:
+ dependencies:
+ split2: 4.2.0
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -9830,6 +10208,20 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postgres-array@2.0.0: {}
+
+ postgres-array@3.0.4: {}
+
+ postgres-bytea@1.0.0: {}
+
+ postgres-date@1.0.7: {}
+
+ postgres-interval@1.2.0:
+ dependencies:
+ xtend: 4.0.2
+
+ postgres@3.4.7: {}
+
prelude-ls@1.2.1: {}
prettier-linter-helpers@1.0.0:
@@ -9844,14 +10236,21 @@ snapshots:
ansi-styles: 5.2.0
react-is: 18.3.1
- prisma@6.19.0(typescript@5.9.3):
+ prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3):
dependencies:
- '@prisma/config': 6.19.0
- '@prisma/engines': 6.19.0
+ '@prisma/config': 7.1.0
+ '@prisma/dev': 0.15.0(typescript@5.9.3)
+ '@prisma/engines': 7.1.0
+ '@prisma/studio-core': 0.8.2(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ mysql2: 3.15.3
+ postgres: 3.4.7
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
+ - '@types/react'
- magicast
+ - react
+ - react-dom
process-warning@5.0.0: {}
@@ -9861,6 +10260,12 @@ snapshots:
object-assign: 4.1.1
react-is: 16.13.1
+ proper-lockfile@4.1.2:
+ dependencies:
+ graceful-fs: 4.2.11
+ retry: 0.12.0
+ signal-exit: 3.0.7
+
protobufjs@7.5.4:
dependencies:
'@protobufjs/aspromise': 1.1.2
@@ -9962,6 +10367,8 @@ snapshots:
get-proto: 1.0.1
which-builtin-type: 1.2.1
+ regexp-to-ast@0.5.0: {}
+
regexp.prototype.flags@1.5.4:
dependencies:
call-bind: 1.0.8
@@ -9971,6 +10378,10 @@ snapshots:
gopd: 1.2.0
set-function-name: 2.0.2
+ remeda@2.21.3:
+ dependencies:
+ type-fest: 4.41.0
+
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
@@ -10002,6 +10413,8 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
+ retry@0.12.0: {}
+
reusify@1.1.0: {}
router@2.2.0:
@@ -10104,6 +10517,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ seq-queue@0.0.5: {}
+
sequin@0.1.1: {}
serialize-javascript@6.0.2:
@@ -10173,6 +10588,7 @@ snapshots:
'@img/sharp-win32-arm64': 0.34.5
'@img/sharp-win32-ia32': 0.34.5
'@img/sharp-win32-x64': 0.34.5
+ optional: true
shebang-command@2.0.0:
dependencies:
@@ -10244,6 +10660,8 @@ snapshots:
split2@4.2.0: {}
+ sqlstring@2.3.3: {}
+
ssh2-sftp-client@12.0.1:
dependencies:
concat-stream: 2.0.0
@@ -10267,6 +10685,8 @@ snapshots:
statuses@2.0.2: {}
+ std-env@3.9.0: {}
+
stop-iteration-iterator@1.1.0:
dependencies:
es-errors: 1.3.0
@@ -10367,10 +10787,12 @@ snapshots:
dependencies:
'@tokenizer/token': 0.3.0
- styled-jsx@5.1.6(react@19.2.1):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.1):
dependencies:
client-only: 0.0.1
react: 19.2.1
+ optionalDependencies:
+ '@babel/core': 7.28.5
superagent@10.2.3:
dependencies:
@@ -10564,12 +10986,6 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- ttypescript@1.5.15(ts-node@10.9.2(@types/node@24.10.2)(typescript@5.9.3))(typescript@5.9.3):
- dependencies:
- resolve: 1.22.11
- ts-node: 10.9.2(@types/node@24.10.2)(typescript@5.9.3)
- typescript: 5.9.3
-
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
@@ -10645,11 +11061,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- typescript-transform-paths@3.5.5(typescript@5.9.3):
- dependencies:
- minimatch: 9.0.5
- typescript: 5.9.3
-
typescript@5.9.3: {}
uglify-js@3.19.3:
@@ -10728,6 +11139,10 @@ snapshots:
'@types/istanbul-lib-coverage': 2.0.6
convert-source-map: 2.0.0
+ valibot@1.2.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
validator@13.15.23:
optional: true
@@ -10942,6 +11357,14 @@ snapshots:
yoctocolors-cjs@2.1.3: {}
+ zeptomatch@2.0.2:
+ dependencies:
+ grammex: 3.1.12
+
+ zod-validation-error@4.0.2(zod@4.1.13):
+ dependencies:
+ zod: 4.1.13
+
zod@4.1.13: {}
zustand@5.0.9(@types/react@19.2.7)(react@19.2.1):
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 3735fd92..39a9cf64 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -1,39 +1,20 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
- // Language and Environment (Node.js 22 supports ES2023 features)
- "target": "ES2023",
- "lib": ["ES2023"],
- "module": "commonjs",
- "moduleResolution": "node",
-
- // Type Checking - Strict Mode
+ "target": "ES2024",
+ "lib": ["ES2024"],
"strict": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": true,
- "noUncheckedIndexedAccess": false,
- "noUnusedLocals": false,
- "noUnusedParameters": false,
-
- // Modules
"esModuleInterop": true,
- "allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
-
- // Emit
"declaration": true,
"declarationMap": true,
"sourceMap": true,
- "removeComments": true,
-
- // Interop Constraints
- "allowJs": false,
"skipLibCheck": true,
-
- // Completeness
"incremental": true
}
}
diff --git a/tsconfig.json b/tsconfig.json
index 913e83a2..38e9ffad 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,10 +3,6 @@
"files": [],
"references": [
{ "path": "./packages/domain" },
- { "path": "./packages/logging" },
- { "path": "./packages/validation" },
- { "path": "./packages/integrations/whmcs" },
- { "path": "./packages/integrations/freebit" },
{ "path": "./apps/bff" },
{ "path": "./apps/portal" }
]