From b3ee71a49193380dc6ab9f40b9174e7157df0dca Mon Sep 17 00:00:00 2001
From: Marc Stammerjohann <8985933+marcjulian@users.noreply.github.com>
Date: Tue, 30 Sep 2025 13:03:03 +0200
Subject: [PATCH] add query logging extension example and docs page
* add badge to navigation link
---
docs/src/components/Navigation.astro | 5 +-
docs/src/config.ts | 18 +-
docs/src/content/docs/logging-middleware.md | 2 +-
.../content/docs/query-logging-extension.md | 139 ++++
examples/extensions/package-lock.json | 700 +++++++++++++++---
examples/extensions/package.json | 8 +-
examples/extensions/src/prisma.extension.ts | 7 +-
.../extensions/src/query-logging.extension.ts | 19 +
8 files changed, 795 insertions(+), 103 deletions(-)
create mode 100644 docs/src/content/docs/query-logging-extension.md
create mode 100644 examples/extensions/src/query-logging.extension.ts
diff --git a/docs/src/components/Navigation.astro b/docs/src/components/Navigation.astro
index f93776d..843565e 100644
--- a/docs/src/components/Navigation.astro
+++ b/docs/src/components/Navigation.astro
@@ -30,13 +30,14 @@ const currentPageMatch = currentPage.endsWith('/')
- {link.title}
+ {link.title}
+ {link.badge && ({link.badge})}
))}
diff --git a/docs/src/config.ts b/docs/src/config.ts
index d11f29a..2eda782 100644
--- a/docs/src/config.ts
+++ b/docs/src/config.ts
@@ -17,6 +17,7 @@ export const GITHUB_EDIT_URL = `https://github.com/notiz-dev/nestjs-prisma/tree/
export type Link = {
title: string;
link: string;
+ badge?: string;
};
export type Navigation = {
@@ -36,8 +37,12 @@ export const navigation: Navigation[] = [
{
title: 'Basics',
links: [
- { title: 'Prisma Middleware', link: '/docs/prisma-middleware' },
{ title: 'Prisma Logging', link: '/docs/prisma-logging' },
+ {
+ title: 'Prisma Middleware',
+ link: '/docs/prisma-middleware',
+ badge: 'Outdated',
+ },
],
},
{
@@ -52,13 +57,22 @@ export const navigation: Navigation[] = [
title: 'Prisma Client Extensions',
link: '/docs/prisma-client-extensions',
},
+ {
+ title: 'Query Logging Extension',
+ link: '/docs/query-logging-extension',
+ badge: 'New',
+ },
],
},
{
title: 'Built-in Tools',
links: [
{ title: 'Exception Filter', link: '/docs/exception-filter' },
- { title: 'Logging Middleware', link: '/docs/logging-middleware' },
+ {
+ title: 'Logging Middleware',
+ link: '/docs/logging-middleware',
+ badge: 'Outdated',
+ },
],
},
{
diff --git a/docs/src/content/docs/logging-middleware.md b/docs/src/content/docs/logging-middleware.md
index 00719de..f5f8ed4 100644
--- a/docs/src/content/docs/logging-middleware.md
+++ b/docs/src/content/docs/logging-middleware.md
@@ -2,7 +2,7 @@
title: Logging Middleware
---
-> Prisma Middleware (`prisma.$use` method) has been deprecated with Prisma v4.16.0 and removed with Prisma v6.14.0. Prisma Middleware is removed in `nestjs-prisma@v0.26.0`. Use [Prisma Client Extension](/docs/prisma-client-extensions) instead.
+> Prisma Middleware (`prisma.$use` method) has been deprecated with Prisma v4.16.0 and removed with Prisma v6.14.0. Prisma Middleware is removed in `nestjs-prisma@v0.26.0`. Use [Query Logging Extension](/docs/query-logging-extension) instead.
## Apply logging middleware
diff --git a/docs/src/content/docs/query-logging-extension.md b/docs/src/content/docs/query-logging-extension.md
new file mode 100644
index 0000000..154bf0b
--- /dev/null
+++ b/docs/src/content/docs/query-logging-extension.md
@@ -0,0 +1,139 @@
+---
+title: Query Logging Extension
+---
+
+Create a PrismaClient extension to log all queries performed by the PrismaClient.
+
+## Add query logging extension
+
+Prisma provides an example for [Prisma Client Extension - Query Logging](https://github.com/prisma/prisma-client-extensions/tree/main/query-logging). You need to create a new `PrismaClient` instance with `$extends` where you will define the query logging extension.
+
+```ts
+// prisma.extension.ts
+import { Logger } from '@nestjs/common';
+import { PrismaClient } from '@prisma/client';
+
+const logger = new Logger('PrismaClient');
+
+export const extendedPrismaClient = new PrismaClient().$extends({
+ query: {
+ $allModels: {
+ async $allOperations({ operation, model, args, query }) {
+ const start = performance.now();
+ const result = await query(args);
+ const end = performance.now();
+ const time = Math.ceil((end - start) * 100) / 100;
+ // adjust logging behavior to your needs
+ logger.log(`Prisma Query ${model}.${operation} took ${time}ms`);
+ return result;
+ },
+ },
+ },
+});
+
+export const ExtendedPrismaClient = typeof extendedPrismaClient;
+```
+
+Now you need to register and inject the `CustomPrismaService` with your `extendedPrismaClient`. Read more about [Prisma Client Extensions](/docs/prisma-client-extensions).
+
+```ts
+import { Module } from '@nestjs/common';
+import { AppController } from './app.controller';
+import { AppService } from './app.service';
+
+import { CustomPrismaModule } from 'nestjs-prisma';
+import { extendedPrismaClient } from './prisma.extension';
+
+@Module({
+ imports: [
+ // ✅ use `forRootAsync` when using `PrismaClient().$extends({})`
+ CustomPrismaModule.forRootAsync({
+ name: 'PrismaService',
+ useFactory: () => {
+ return extendedPrismaClient;
+ },
+ }),
+ ],
+ controllers: [AppController],
+ providers: [AppService],
+})
+export class AppModule {}
+```
+
+Inject the `CustomPrismaService` with the `ExtendedPrismaClient` type, useful when adding [custom methods](http://localhost:4321/docs/prisma-client-extensions#create-prisma-extension) to your models.
+
+```ts
+import { Inject, Injectable } from '@nestjs/common';
+import { CustomPrismaService } from 'nestjs-prisma';
+import { type ExtendedPrismaClient } from './prisma.extension';
+
+@Injectable()
+export class AppService {
+ constructor(
+ // ✅ use `ExtendedPrismaClient` type for correct type-safety of your extended PrismaClient
+ @Inject('PrismaService')
+ private prismaService: CustomPrismaService,
+ ) {}
+
+ users() {
+ return this.prismaService.client.user.findMany();
+ }
+}
+```
+
+You will see now for the log messages in your terminal
+
+```bash
+Prisma Query User.findMany took 10ms
+...
+```
+
+## Query Logging extension function
+
+Extract the query logging extension as shareable extension by following [Create a shareable extension](https://www.prisma.io/docs/orm/prisma-client/client-extensions/shared-extensions#create-a-shareable-extension).
+
+```ts
+// query-logger.extension.ts
+import { Logger } from '@nestjs/common';
+import { Prisma } from '@prisma/client';
+
+export const queryLoggingExtension = (logger: Logger) =>
+ Prisma.defineExtension({
+ name: 'prisma-extension-query-logger',
+ query: {
+ $allModels: {
+ async $allOperations({ operation, model, args, query }) {
+ const start = performance.now();
+ const result = await query(args);
+ const end = performance.now();
+ const time = Math.ceil((end - start) * 100) / 100;
+ logger.log(`Prisma Query ${model}.${operation} took ${time}ms`);
+ return result;
+ },
+ },
+ },
+ });
+```
+
+Now you can import and use `queryLoggingExtension(new Logger(...))` in `$extends(...)`.
+
+```ts
+// prisma.extension.ts
+import { Logger } from '@nestjs/common';
+import { PrismaClient } from '@prisma/client';
+import { queryLoggingExtension } from './query-logger.extension';
+
+const logger = new Logger('PrismaClient');
+
+export const extendedPrismaClient = new PrismaClient().$extends(
+ queryLoggingExtension(logger),
+);
+
+export const ExtendedPrismaClient = typeof extendedPrismaClient;
+```
+
+Make sure to register and inject the `CustomPrismaService` described above.
+
+## Example
+
+The [Extensions](https://github.com/notiz-dev/nestjs-prisma/blob/main/examples/extensions/src/query-logging.extension.ts) example on GitHub includes the `query-logging.extension.ts`.
diff --git a/examples/extensions/package-lock.json b/examples/extensions/package-lock.json
index 30c3f81..4b0a2c9 100644
--- a/examples/extensions/package-lock.json
+++ b/examples/extensions/package-lock.json
@@ -12,9 +12,9 @@
"@nestjs/common": "^10.4.12",
"@nestjs/core": "^10.4.12",
"@nestjs/platform-express": "^10.4.12",
- "@prisma/client": "^6.0.0",
- "@prisma/extension-read-replicas": "^0.4.0",
- "nestjs-prisma": "^0.25.0",
+ "@prisma/client": "^6.16.2",
+ "@prisma/extension-read-replicas": "^0.4.1",
+ "nestjs-prisma": "^0.26.0-dev.0",
"prisma-extension-pagination": "^0.7.5",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1"
@@ -34,7 +34,7 @@
"eslint-plugin-prettier": "^4.0.0",
"jest": "29.5.0",
"prettier": "^2.2.4",
- "prisma": "^6.0.0",
+ "prisma": "^6.16.2",
"source-map-support": "^0.5.20",
"supertest": "^6.1.3",
"ts-jest": "29.1.0",
@@ -1757,68 +1757,91 @@
}
},
"node_modules/@prisma/client": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.0.0.tgz",
- "integrity": "sha512-tOBhG35ozqZ/5Y6B0TNOa6cwULUW8ijXqBXcgb12bfozqf6eGMyGs+jphywCsj6uojv5lAZZnxVSoLMVebIP+g==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.2.tgz",
+ "integrity": "sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==",
"hasInstallScript": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=18.18"
},
"peerDependencies": {
- "prisma": "*"
+ "prisma": "*",
+ "typescript": ">=5.1.0"
},
"peerDependenciesMeta": {
"prisma": {
"optional": true
+ },
+ "typescript": {
+ "optional": true
}
}
},
+ "node_modules/@prisma/config": {
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.2.tgz",
+ "integrity": "sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "c12": "3.1.0",
+ "deepmerge-ts": "7.1.5",
+ "effect": "3.16.12",
+ "empathic": "2.0.0"
+ }
+ },
"node_modules/@prisma/debug": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.0.tgz",
- "integrity": "sha512-eUjoNThlDXdyJ1iQ2d7U6aTVwm59EwvODb5zFVNJEokNoSiQmiYWNzZIwZyDmZ+j51j42/0iTaHIJ4/aZPKFRg=="
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.2.tgz",
+ "integrity": "sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==",
+ "license": "Apache-2.0"
},
"node_modules/@prisma/engines": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.0.0.tgz",
- "integrity": "sha512-ZZCVP3q22ifN6Ex6C8RIcTDBlRtMJS2H1ljV0knCiWNGArvvkEbE88W3uDdq/l4+UvyvHpGzdf9ZsCWSQR7ZQQ==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.2.tgz",
+ "integrity": "sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==",
"hasInstallScript": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.0.0",
- "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "@prisma/fetch-engine": "6.0.0",
- "@prisma/get-platform": "6.0.0"
+ "@prisma/debug": "6.16.2",
+ "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "@prisma/fetch-engine": "6.16.2",
+ "@prisma/get-platform": "6.16.2"
}
},
"node_modules/@prisma/engines-version": {
- "version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e.tgz",
- "integrity": "sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ=="
+ "version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43.tgz",
+ "integrity": "sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==",
+ "license": "Apache-2.0"
},
"node_modules/@prisma/extension-read-replicas": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@prisma/extension-read-replicas/-/extension-read-replicas-0.4.0.tgz",
- "integrity": "sha512-0KVjOgYJO9ymOACwLXebXB1XZCrfXXZMDkZrdZQOm9rqraC1rguwpPzXUdgv2txMLyJNSe+i5DOruDCU4FfvCA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@prisma/extension-read-replicas/-/extension-read-replicas-0.4.1.tgz",
+ "integrity": "sha512-mCMDloqUKUwx2o5uedTs1FHX3Nxdt1GdRMoeyp1JggjiwOALmIYWhxfIN08M2BZ0w8SKwvJqicJZMjkQYkkijw==",
+ "license": "Apache-2.0",
"peerDependencies": {
- "@prisma/client": "^5.2.0"
+ "@prisma/client": "^6.5.0"
}
},
"node_modules/@prisma/fetch-engine": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.0.0.tgz",
- "integrity": "sha512-j2m+iO5RDPRI7SUc7sHo8wX7SA4iTkJ+18Sxch8KinQM46YiCQD1iXKN6qU79C1Fliw5Bw/qDyTHaTsa3JMerA==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.2.tgz",
+ "integrity": "sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.0.0",
- "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "@prisma/get-platform": "6.0.0"
+ "@prisma/debug": "6.16.2",
+ "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "@prisma/get-platform": "6.16.2"
}
},
"node_modules/@prisma/get-platform": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.0.0.tgz",
- "integrity": "sha512-PS6nYyIm9g8C03E4y7LknOfdCw/t2KyEJxntMPQHQZCOUgOpF82Ma60mdlOD08w90I3fjLiZZ0+MadenR3naDQ==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.2.tgz",
+ "integrity": "sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.0.0"
+ "@prisma/debug": "6.16.2"
}
},
"node_modules/@schematics/angular": {
@@ -1955,6 +1978,12 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@standard-schema/spec": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+ "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+ "license": "MIT"
+ },
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
@@ -3073,6 +3102,62 @@
"node": ">= 0.8"
}
},
+ "node_modules/c12": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz",
+ "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.3",
+ "confbox": "^0.2.2",
+ "defu": "^6.1.4",
+ "dotenv": "^16.6.1",
+ "exsolve": "^1.0.7",
+ "giget": "^2.0.0",
+ "jiti": "^2.4.2",
+ "ohash": "^2.0.11",
+ "pathe": "^2.0.3",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^2.2.0",
+ "rc9": "^2.1.2"
+ },
+ "peerDependencies": {
+ "magicast": "^0.3.5"
+ },
+ "peerDependenciesMeta": {
+ "magicast": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/c12/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/c12/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -3207,6 +3292,24 @@
"node": ">=8"
}
},
+ "node_modules/citty": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
+ "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
+ "license": "MIT",
+ "dependencies": {
+ "consola": "^3.2.3"
+ }
+ },
+ "node_modules/citty/node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
"node_modules/cjs-module-lexer": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
@@ -3376,6 +3479,12 @@
"typedarray": "^0.0.6"
}
},
+ "node_modules/confbox": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
+ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
+ "license": "MIT"
+ },
"node_modules/consola": {
"version": "2.15.3",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
@@ -3526,6 +3635,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/deepmerge-ts": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
+ "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/defaults": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
@@ -3553,6 +3671,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+ "license": "MIT"
+ },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -3570,6 +3694,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
+ "license": "MIT"
+ },
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -3640,6 +3770,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -3651,6 +3793,16 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
+ "node_modules/effect": {
+ "version": "3.16.12",
+ "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz",
+ "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "fast-check": "^3.23.1"
+ }
+ },
"node_modules/electron-to-chromium": {
"version": "1.5.67",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz",
@@ -3675,6 +3827,15 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
+ "node_modules/empathic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
+ "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/encodeurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
@@ -4164,6 +4325,12 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
},
+ "node_modules/exsolve": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+ "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
+ "license": "MIT"
+ },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -4178,6 +4345,28 @@
"node": ">=4"
}
},
+ "node_modules/fast-check": {
+ "version": "3.23.2",
+ "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz",
+ "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "pure-rand": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -4483,6 +4672,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
@@ -4557,6 +4747,32 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/giget": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
+ "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "license": "MIT",
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "node-fetch-native": "^1.6.6",
+ "nypm": "^0.6.0",
+ "pathe": "^2.0.3"
+ },
+ "bin": {
+ "giget": "dist/cli.mjs"
+ }
+ },
+ "node_modules/giget/node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -5730,6 +5946,15 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/jiti": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.0.tgz",
+ "integrity": "sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
"node_modules/js-sdsl": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
@@ -6175,9 +6400,9 @@
"dev": true
},
"node_modules/nestjs-prisma": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/nestjs-prisma/-/nestjs-prisma-0.25.0.tgz",
- "integrity": "sha512-Dgc6rFgT81nT1Rfu8gQ8MxkzDFTtu8S+prmErMWki8ncXpPF+LPG90P4m2cNfL8gBiQqHicWTNdnGxsUaAINeQ==",
+ "version": "0.26.0-dev.0",
+ "resolved": "https://registry.npmjs.org/nestjs-prisma/-/nestjs-prisma-0.26.0-dev.0.tgz",
+ "integrity": "sha512-beDYjShtWDDKg6MtSdNlLQdCdMOoPnj8VjROCcaKPgfu4PXP/Oft02KiY2z3Rp/n7F902tPO0SN93GWF9BVEhQ==",
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "^13.3.0",
@@ -6319,6 +6544,12 @@
}
}
},
+ "node_modules/node-fetch-native": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
+ "license": "MIT"
+ },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -6352,6 +6583,34 @@
"node": ">=8"
}
},
+ "node_modules/nypm": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz",
+ "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==",
+ "license": "MIT",
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.2",
+ "pathe": "^2.0.3",
+ "pkg-types": "^2.3.0",
+ "tinyexec": "^1.0.1"
+ },
+ "bin": {
+ "nypm": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.10.0"
+ }
+ },
+ "node_modules/nypm/node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -6371,6 +6630,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/ohash": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
+ "license": "MIT"
+ },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -6605,6 +6870,18 @@
"node": ">=8"
}
},
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "license": "MIT"
+ },
+ "node_modules/perfect-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -6696,6 +6973,17 @@
"node": ">=8"
}
},
+ "node_modules/pkg-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
+ "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.2.2",
+ "exsolve": "^1.0.7",
+ "pathe": "^2.0.3"
+ }
+ },
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -6768,12 +7056,14 @@
}
},
"node_modules/prisma": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.0.0.tgz",
- "integrity": "sha512-RX7KtbW7IoEByf7MR32JK1PkVYLVYFqeODTtiIX3cqekq1aKdsF3Eud4zp2sUShMLjvdb5Jow0LbUjRq5LVxPw==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.2.tgz",
+ "integrity": "sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==",
"hasInstallScript": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@prisma/engines": "6.0.0"
+ "@prisma/config": "6.16.2",
+ "@prisma/engines": "6.16.2"
},
"bin": {
"prisma": "build/index.js"
@@ -6781,8 +7071,13 @@
"engines": {
"node": ">=18.18"
},
- "optionalDependencies": {
- "fsevents": "2.3.3"
+ "peerDependencies": {
+ "typescript": ">=5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/prisma-extension-pagination": {
@@ -6833,10 +7128,9 @@
}
},
"node_modules/pure-rand": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
- "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
- "dev": true,
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
+ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==",
"funding": [
{
"type": "individual",
@@ -6846,7 +7140,8 @@
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/qs": {
"version": "6.13.0",
@@ -6913,6 +7208,16 @@
"node": ">= 0.8"
}
},
+ "node_modules/rc9": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
+ "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "license": "MIT",
+ "dependencies": {
+ "defu": "^6.1.4",
+ "destr": "^2.0.3"
+ }
+ },
"node_modules/react-is": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
@@ -7769,6 +8074,12 @@
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"dev": true
},
+ "node_modules/tinyexec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
+ "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
+ "license": "MIT"
+ },
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -8053,7 +8364,7 @@
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
- "dev": true,
+ "devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -9685,54 +9996,65 @@
"optional": true
},
"@prisma/client": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.0.0.tgz",
- "integrity": "sha512-tOBhG35ozqZ/5Y6B0TNOa6cwULUW8ijXqBXcgb12bfozqf6eGMyGs+jphywCsj6uojv5lAZZnxVSoLMVebIP+g==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.2.tgz",
+ "integrity": "sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==",
"requires": {}
},
+ "@prisma/config": {
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.2.tgz",
+ "integrity": "sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==",
+ "requires": {
+ "c12": "3.1.0",
+ "deepmerge-ts": "7.1.5",
+ "effect": "3.16.12",
+ "empathic": "2.0.0"
+ }
+ },
"@prisma/debug": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.0.tgz",
- "integrity": "sha512-eUjoNThlDXdyJ1iQ2d7U6aTVwm59EwvODb5zFVNJEokNoSiQmiYWNzZIwZyDmZ+j51j42/0iTaHIJ4/aZPKFRg=="
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.2.tgz",
+ "integrity": "sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA=="
},
"@prisma/engines": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.0.0.tgz",
- "integrity": "sha512-ZZCVP3q22ifN6Ex6C8RIcTDBlRtMJS2H1ljV0knCiWNGArvvkEbE88W3uDdq/l4+UvyvHpGzdf9ZsCWSQR7ZQQ==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.2.tgz",
+ "integrity": "sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==",
"requires": {
- "@prisma/debug": "6.0.0",
- "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "@prisma/fetch-engine": "6.0.0",
- "@prisma/get-platform": "6.0.0"
+ "@prisma/debug": "6.16.2",
+ "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "@prisma/fetch-engine": "6.16.2",
+ "@prisma/get-platform": "6.16.2"
}
},
"@prisma/engines-version": {
- "version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e.tgz",
- "integrity": "sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ=="
+ "version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43.tgz",
+ "integrity": "sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA=="
},
"@prisma/extension-read-replicas": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@prisma/extension-read-replicas/-/extension-read-replicas-0.4.0.tgz",
- "integrity": "sha512-0KVjOgYJO9ymOACwLXebXB1XZCrfXXZMDkZrdZQOm9rqraC1rguwpPzXUdgv2txMLyJNSe+i5DOruDCU4FfvCA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@prisma/extension-read-replicas/-/extension-read-replicas-0.4.1.tgz",
+ "integrity": "sha512-mCMDloqUKUwx2o5uedTs1FHX3Nxdt1GdRMoeyp1JggjiwOALmIYWhxfIN08M2BZ0w8SKwvJqicJZMjkQYkkijw==",
"requires": {}
},
"@prisma/fetch-engine": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.0.0.tgz",
- "integrity": "sha512-j2m+iO5RDPRI7SUc7sHo8wX7SA4iTkJ+18Sxch8KinQM46YiCQD1iXKN6qU79C1Fliw5Bw/qDyTHaTsa3JMerA==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.2.tgz",
+ "integrity": "sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==",
"requires": {
- "@prisma/debug": "6.0.0",
- "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
- "@prisma/get-platform": "6.0.0"
+ "@prisma/debug": "6.16.2",
+ "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
+ "@prisma/get-platform": "6.16.2"
}
},
"@prisma/get-platform": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.0.0.tgz",
- "integrity": "sha512-PS6nYyIm9g8C03E4y7LknOfdCw/t2KyEJxntMPQHQZCOUgOpF82Ma60mdlOD08w90I3fjLiZZ0+MadenR3naDQ==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.2.tgz",
+ "integrity": "sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==",
"requires": {
- "@prisma/debug": "6.0.0"
+ "@prisma/debug": "6.16.2"
}
},
"@schematics/angular": {
@@ -9838,6 +10160,11 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "@standard-schema/spec": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+ "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="
+ },
"@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
@@ -10726,6 +11053,40 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
},
+ "c12": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz",
+ "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==",
+ "requires": {
+ "chokidar": "^4.0.3",
+ "confbox": "^0.2.2",
+ "defu": "^6.1.4",
+ "dotenv": "^16.6.1",
+ "exsolve": "^1.0.7",
+ "giget": "^2.0.0",
+ "jiti": "^2.4.2",
+ "ohash": "^2.0.11",
+ "pathe": "^2.0.3",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^2.2.0",
+ "rc9": "^2.1.2"
+ },
+ "dependencies": {
+ "chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "requires": {
+ "readdirp": "^4.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="
+ }
+ }
+ },
"call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -10805,6 +11166,21 @@
"integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
"dev": true
},
+ "citty": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
+ "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
+ "requires": {
+ "consola": "^3.2.3"
+ },
+ "dependencies": {
+ "consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="
+ }
+ }
+ },
"cjs-module-lexer": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
@@ -10932,6 +11308,11 @@
"typedarray": "^0.0.6"
}
},
+ "confbox": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
+ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="
+ },
"consola": {
"version": "2.15.3",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
@@ -11042,6 +11423,11 @@
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true
},
+ "deepmerge-ts": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
+ "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw=="
+ },
"defaults": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
@@ -11060,6 +11446,11 @@
"gopd": "^1.0.1"
}
},
+ "defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="
+ },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -11071,6 +11462,11 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
},
+ "destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="
+ },
"destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -11122,6 +11518,11 @@
"esutils": "^2.0.2"
}
},
+ "dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="
+ },
"eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -11133,6 +11534,15 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
+ "effect": {
+ "version": "3.16.12",
+ "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz",
+ "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==",
+ "requires": {
+ "@standard-schema/spec": "^1.0.0",
+ "fast-check": "^3.23.1"
+ }
+ },
"electron-to-chromium": {
"version": "1.5.67",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz",
@@ -11151,6 +11561,11 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
+ "empathic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
+ "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="
+ },
"encodeurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
@@ -11520,6 +11935,11 @@
}
}
},
+ "exsolve": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+ "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw=="
+ },
"external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -11531,6 +11951,14 @@
"tmp": "^0.0.33"
}
},
+ "fast-check": {
+ "version": "3.23.2",
+ "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz",
+ "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
+ "requires": {
+ "pure-rand": "^6.1.0"
+ }
+ },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -11777,6 +12205,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
"optional": true
},
"function-bind": {
@@ -11820,6 +12249,26 @@
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true
},
+ "giget": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
+ "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "requires": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "node-fetch-native": "^1.6.6",
+ "nypm": "^0.6.0",
+ "pathe": "^2.0.3"
+ },
+ "dependencies": {
+ "consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="
+ }
+ }
+ },
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -12691,6 +13140,11 @@
}
}
},
+ "jiti": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.0.tgz",
+ "integrity": "sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ=="
+ },
"js-sdsl": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
@@ -13032,9 +13486,9 @@
"dev": true
},
"nestjs-prisma": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/nestjs-prisma/-/nestjs-prisma-0.25.0.tgz",
- "integrity": "sha512-Dgc6rFgT81nT1Rfu8gQ8MxkzDFTtu8S+prmErMWki8ncXpPF+LPG90P4m2cNfL8gBiQqHicWTNdnGxsUaAINeQ==",
+ "version": "0.26.0-dev.0",
+ "resolved": "https://registry.npmjs.org/nestjs-prisma/-/nestjs-prisma-0.26.0-dev.0.tgz",
+ "integrity": "sha512-beDYjShtWDDKg6MtSdNlLQdCdMOoPnj8VjROCcaKPgfu4PXP/Oft02KiY2z3Rp/n7F902tPO0SN93GWF9BVEhQ==",
"requires": {
"@angular-devkit/core": "^13.3.0",
"@angular-devkit/schematics": "^13.3.0",
@@ -13133,6 +13587,11 @@
"whatwg-url": "^5.0.0"
}
},
+ "node-fetch-native": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="
+ },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -13160,6 +13619,25 @@
"path-key": "^3.0.0"
}
},
+ "nypm": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz",
+ "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==",
+ "requires": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.2",
+ "pathe": "^2.0.3",
+ "pkg-types": "^2.3.0",
+ "tinyexec": "^1.0.1"
+ },
+ "dependencies": {
+ "consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="
+ }
+ }
+ },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -13170,6 +13648,11 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
"integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA=="
},
+ "ohash": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="
+ },
"on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -13340,6 +13823,16 @@
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
+ "pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="
+ },
+ "perfect-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
+ },
"picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -13406,6 +13899,16 @@
}
}
},
+ "pkg-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
+ "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "requires": {
+ "confbox": "^0.2.2",
+ "exsolve": "^1.0.7",
+ "pathe": "^2.0.3"
+ }
+ },
"pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -13453,12 +13956,12 @@
}
},
"prisma": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.0.0.tgz",
- "integrity": "sha512-RX7KtbW7IoEByf7MR32JK1PkVYLVYFqeODTtiIX3cqekq1aKdsF3Eud4zp2sUShMLjvdb5Jow0LbUjRq5LVxPw==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.2.tgz",
+ "integrity": "sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==",
"requires": {
- "@prisma/engines": "6.0.0",
- "fsevents": "2.3.3"
+ "@prisma/config": "6.16.2",
+ "@prisma/engines": "6.16.2"
}
},
"prisma-extension-pagination": {
@@ -13497,10 +14000,9 @@
"integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw=="
},
"pure-rand": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
- "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
- "dev": true
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
+ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="
},
"qs": {
"version": "6.13.0",
@@ -13541,6 +14043,15 @@
"unpipe": "1.0.0"
}
},
+ "rc9": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
+ "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "requires": {
+ "defu": "^6.1.4",
+ "destr": "^2.0.3"
+ }
+ },
"react-is": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
@@ -14178,6 +14689,11 @@
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"dev": true
},
+ "tinyexec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
+ "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw=="
+ },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -14365,7 +14881,7 @@
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
- "dev": true
+ "devOptional": true
},
"uid": {
"version": "2.0.2",
diff --git a/examples/extensions/package.json b/examples/extensions/package.json
index 64e2296..fde2946 100644
--- a/examples/extensions/package.json
+++ b/examples/extensions/package.json
@@ -23,9 +23,9 @@
"@nestjs/common": "^10.4.12",
"@nestjs/core": "^10.4.12",
"@nestjs/platform-express": "^10.4.12",
- "@prisma/client": "^6.0.0",
- "@prisma/extension-read-replicas": "^0.4.0",
- "nestjs-prisma": "^0.25.0",
+ "@prisma/client": "^6.16.2",
+ "@prisma/extension-read-replicas": "^0.4.1",
+ "nestjs-prisma": "^0.26.0-dev.0",
"prisma-extension-pagination": "^0.7.5",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1"
@@ -45,7 +45,7 @@
"eslint-plugin-prettier": "^4.0.0",
"jest": "29.5.0",
"prettier": "^2.2.4",
- "prisma": "^6.0.0",
+ "prisma": "^6.16.2",
"source-map-support": "^0.5.20",
"supertest": "^6.1.3",
"ts-jest": "29.1.0",
diff --git a/examples/extensions/src/prisma.extension.ts b/examples/extensions/src/prisma.extension.ts
index d0741fc..884e340 100644
--- a/examples/extensions/src/prisma.extension.ts
+++ b/examples/extensions/src/prisma.extension.ts
@@ -2,6 +2,10 @@ import { Prisma, PrismaClient } from '@prisma/client';
import pagination from 'prisma-extension-pagination';
// used for Read Replicas example
import { readReplicas } from '@prisma/extension-read-replicas';
+import { Logger } from '@nestjs/common';
+import { queryLoggingExtension } from './query-logging.extension';
+
+const logger = new Logger('PrismaClient');
export const extendedPrismaClient = new PrismaClient<
Prisma.PrismaClientOptions,
@@ -14,8 +18,7 @@ export const extendedPrismaClient = new PrismaClient<
{ level: 'error', emit: 'event' },
],
})
- // FIXME - `$on()` returns void
- // .$on('error', (e) => {})
+ .$extends(queryLoggingExtension(logger))
.$extends({
model: {
user: {
diff --git a/examples/extensions/src/query-logging.extension.ts b/examples/extensions/src/query-logging.extension.ts
new file mode 100644
index 0000000..8960517
--- /dev/null
+++ b/examples/extensions/src/query-logging.extension.ts
@@ -0,0 +1,19 @@
+import { Logger } from '@nestjs/common';
+import { Prisma } from '@prisma/client';
+
+export const queryLoggingExtension = (logger: Logger) =>
+ Prisma.defineExtension({
+ name: 'prisma-extension-query-logger',
+ query: {
+ $allModels: {
+ async $allOperations({ operation, model, args, query }) {
+ const start = performance.now();
+ const result = await query(args);
+ const end = performance.now();
+ const time = Math.ceil((end - start) * 100) / 100;
+ logger.log(`Prisma Query ${model}.${operation} took ${time}ms`);
+ return result;
+ },
+ },
+ },
+ });