d82c455973
Prisma 7 introduced two breaking changes that conflict with
nestjs-prisma 0.27.0:
1. The `prisma-client` provider (new default in Prisma 7) outputs
the typed client to a custom path declared in schema.prisma.
nestjs-prisma's PrismaService extends @prisma/client's runtime,
which boots through @prisma/client/default.js — that stub requires
`.prisma/client/default` in a sibling node_modules tree. Only the
legacy `prisma-client-js` generator populates that path.
2. PrismaClientOptions in Prisma 7 no longer exposes `datasourceUrl`
nor `datasources`. Connection now requires a driver adapter
(e.g. `@prisma/adapter-pg` for Postgres). nestjs-prisma 0.27.0
does not pass an adapter, and `new PrismaClient(undefined)` is
rejected with `PrismaClientInitializationError: PrismaClient needs
to be constructed with a non-empty, valid PrismaClientOptions`.
Both quirks are Prisma 7's adapter-first architecture surfacing
through a still-Prisma-6-shaped wrapper. nestjs-prisma's peer-deps
say `^7.0.0` but its design assumes the older API. Working around
each issue separately leads further into bespoke wiring (custom
PrismaService, manual @prisma/adapter-pg setup) — bricolage on a
foundational layer.
Per CLAUDE.md ("default to stable, recognized, battle-tested
choices"), downgrade to Prisma 6.19 (still actively maintained):
- package.json: prisma + @prisma/client pinned to ^6 (resolved 6.19.3)
- apps/portal-bff/prisma/schema.prisma:
- generator client: `prisma-client-js` (Prisma 6 default)
- datasource db: explicit `url = env("DATABASE_URL")` (required by
Prisma 6, was implicit in Prisma 7 via prisma.config.ts)
- apps/portal-bff/prisma.config.ts: removed (Prisma 7-only feature)
- apps/portal-bff/.gitignore: drop the now-irrelevant
`/generated/prisma` entry (no custom output dir with prisma-client-js)
ADR-0006 ("Persistence — PostgreSQL with Prisma") is unchanged: it
specifies Prisma without pinning a version. The version choice is a
tactical detail.
Re-evaluate when nestjs-prisma releases an update aligned with
Prisma 7's adapter model.
Verified: pnpm exec prisma generate populates Prisma 6's
.prisma/client/default.{js,d.ts}; pnpm nx build portal-bff green.
Runtime serve to be re-verified locally before merge.
102 lines
3.1 KiB
JSON
102 lines
3.1 KiB
JSON
{
|
|
"name": "apf-portal",
|
|
"version": "0.0.0",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"prepare": "husky",
|
|
"ci:check": "pnpm exec nx affected -t format:check lint test build",
|
|
"ci:audit": "pnpm audit --audit-level=moderate",
|
|
"ci:commits": "pnpm exec commitlint --from ${COMMIT_LINT_FROM:-origin/main} --to HEAD --verbose",
|
|
"ci:perf": "pnpm exec nx build portal-shell --configuration=production && pnpm exec lhci autorun --config=./lighthouserc.js"
|
|
},
|
|
"private": true,
|
|
"lint-staged": {
|
|
"*.{ts,tsx,js,jsx,html,scss,css,md,json,yml,yaml}": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"devDependencies": {
|
|
"@analogjs/vite-plugin-angular": "~2.1.2",
|
|
"@analogjs/vitest-angular": "~2.1.2",
|
|
"@angular-devkit/core": "~21.2.0",
|
|
"@angular-devkit/schematics": "~21.2.0",
|
|
"@angular/build": "~21.2.0",
|
|
"@angular/cli": "~21.2.0",
|
|
"@angular/compiler-cli": "~21.2.0",
|
|
"@angular/language-service": "~21.2.0",
|
|
"@commitlint/cli": "^20.5.3",
|
|
"@commitlint/config-conventional": "^20.5.3",
|
|
"@eslint/js": "^9.8.0",
|
|
"@lhci/cli": "^0.15.1",
|
|
"@nestjs/schematics": "^11.0.0",
|
|
"@nestjs/testing": "^11.0.0",
|
|
"@nx/angular": "^22.7.1",
|
|
"@nx/devkit": "22.7.1",
|
|
"@nx/eslint": "^22.7.1",
|
|
"@nx/eslint-plugin": "22.7.1",
|
|
"@nx/jest": "22.7.1",
|
|
"@nx/js": "22.7.1",
|
|
"@nx/nest": "^22.7.1",
|
|
"@nx/node": "22.7.1",
|
|
"@nx/playwright": "22.7.1",
|
|
"@nx/vite": "^22.7.1",
|
|
"@nx/vitest": "22.7.1",
|
|
"@nx/web": "22.7.1",
|
|
"@nx/webpack": "22.7.1",
|
|
"@oxc-project/runtime": "^0.115.0",
|
|
"@playwright/test": "^1.36.0",
|
|
"@schematics/angular": "~21.2.0",
|
|
"@swc-node/register": "1.11.1",
|
|
"@swc/core": "1.15.8",
|
|
"@swc/helpers": "0.5.18",
|
|
"@tailwindcss/postcss": "^4.2.4",
|
|
"@types/jest": "^30.0.0",
|
|
"@types/node": "20.19.9",
|
|
"@typescript-eslint/utils": "^8.40.0",
|
|
"@vitest/coverage-v8": "~4.1.0",
|
|
"@vitest/ui": "~4.1.0",
|
|
"angular-eslint": "^21.2.0",
|
|
"eslint": "^9.8.0",
|
|
"eslint-config-prettier": "^10.0.0",
|
|
"eslint-plugin-playwright": "^1.6.2",
|
|
"husky": "^9.1.7",
|
|
"jest": "^30.0.2",
|
|
"jest-environment-node": "^30.0.2",
|
|
"jest-util": "^30.0.2",
|
|
"jsdom": "^27.1.0",
|
|
"jsonc-eslint-parser": "^2.1.0",
|
|
"lint-staged": "^16.4.0",
|
|
"nx": "22.7.0",
|
|
"postcss": "^8.5.12",
|
|
"prettier": "^3.8.1",
|
|
"prisma": "^6.19.3",
|
|
"tailwindcss": "^4.2.4",
|
|
"ts-jest": "^29.4.0",
|
|
"ts-node": "10.9.1",
|
|
"tslib": "^2.3.0",
|
|
"typescript": "~5.9.2",
|
|
"typescript-eslint": "^8.40.0",
|
|
"vite": "^8.0.0",
|
|
"vitest": "^4.0.8",
|
|
"webpack-cli": "^5.1.4"
|
|
},
|
|
"dependencies": {
|
|
"@angular/common": "~21.2.0",
|
|
"@angular/compiler": "~21.2.0",
|
|
"@angular/core": "~21.2.0",
|
|
"@angular/forms": "~21.2.0",
|
|
"@angular/platform-browser": "~21.2.0",
|
|
"@angular/router": "~21.2.0",
|
|
"@nestjs/common": "^11.0.0",
|
|
"@nestjs/core": "^11.0.0",
|
|
"@nestjs/platform-express": "^11.0.0",
|
|
"@prisma/client": "^6.19.3",
|
|
"axios": "^1.6.0",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.15.1",
|
|
"nestjs-prisma": "^0.27.0",
|
|
"reflect-metadata": "^0.1.13",
|
|
"rxjs": "~7.8.0"
|
|
}
|
|
}
|