diff --git a/packages/app/prisma-utils/.gitignore b/packages/app/prisma-utils/.gitignore index 4426c203e..03f97ad9f 100644 --- a/packages/app/prisma-utils/.gitignore +++ b/packages/app/prisma-utils/.gitignore @@ -2,4 +2,3 @@ node_modules dist coverage .eslintcache -test/db-client/** diff --git a/packages/app/prisma-utils/prisma/schema.prisma b/packages/app/prisma-utils/prisma/schema.prisma index b71248e15..9066e37e1 100644 --- a/packages/app/prisma-utils/prisma/schema.prisma +++ b/packages/app/prisma-utils/prisma/schema.prisma @@ -8,7 +8,7 @@ datasource db { generator client { provider = "prisma-client" - output = "../test/db-client" + output = "../node_modules/db-client" } model Item1 { diff --git a/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.spec.ts b/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.spec.ts index 30816978b..0b924840a 100644 --- a/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.spec.ts +++ b/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.spec.ts @@ -1,10 +1,10 @@ import { PrismaPg } from '@prisma/adapter-pg' +import { PrismaClient } from 'db-client/client.ts' +import { PrismaClientKnownRequestError } from 'db-client/internal/prismaNamespace.ts' import type * as Prometheus from 'prom-client' import * as promClient from 'prom-client' import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' import { cleanTables, DB_MODEL } from '../../test/DbCleaner.ts' -import { PrismaClient } from '../../test/db-client/client.ts' -import { PrismaClientKnownRequestError } from '../../test/db-client/internal/prismaNamespace.ts' import { getDatasourceUrl } from '../../test/getDatasourceUrl.ts' import { extendPrismaClientWithMetrics } from './extendPrismaClientWithMetrics.ts' diff --git a/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.ts b/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.ts index b0d9a72d4..3619c007c 100644 --- a/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.ts +++ b/packages/app/prisma-utils/src/factory/extendPrismaClientWithMetrics.ts @@ -1,6 +1,6 @@ import type { Either } from '@lokalise/node-core' +import type { PrismaClient } from 'db-client/client.ts' import type Prometheus from 'prom-client' -import type { PrismaClient } from '../../test/db-client/client.ts' export const extendPrismaClientWithMetrics = ( prisma: Client, diff --git a/packages/app/prisma-utils/src/factory/prismaClientFactory.spec.ts b/packages/app/prisma-utils/src/factory/prismaClientFactory.spec.ts index 962efbc02..a89cc4888 100644 --- a/packages/app/prisma-utils/src/factory/prismaClientFactory.spec.ts +++ b/packages/app/prisma-utils/src/factory/prismaClientFactory.spec.ts @@ -1,9 +1,9 @@ import { PrismaPg } from '@prisma/adapter-pg' +import { PrismaClient } from 'db-client/client.ts' import type * as Prometheus from 'prom-client' import * as promClient from 'prom-client' import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest' import { cleanTables, DB_MODEL } from '../../test/DbCleaner.ts' -import { PrismaClient } from '../../test/db-client/client.ts' import { getDatasourceUrl } from '../../test/getDatasourceUrl.ts' import { prismaClientFactory } from './prismaClientFactory.ts' diff --git a/packages/app/prisma-utils/src/factory/prismaClientFactory.ts b/packages/app/prisma-utils/src/factory/prismaClientFactory.ts index b90c4e79e..24a4eb53d 100644 --- a/packages/app/prisma-utils/src/factory/prismaClientFactory.ts +++ b/packages/app/prisma-utils/src/factory/prismaClientFactory.ts @@ -1,7 +1,7 @@ import type * as RuntimePrisma from '@prisma/client/runtime/client' +import type { PrismaClient } from 'db-client/client.ts' +import type { PrismaClientConstructor } from 'db-client/internal/class.ts' import type Prometheus from 'prom-client' -import type { PrismaClient } from '../../test/db-client/client.ts' -import type { PrismaClientConstructor } from '../../test/db-client/internal/class.ts' import { extendPrismaClientWithMetrics } from './extendPrismaClientWithMetrics.ts' export type prismaClientFactoryOptions = { diff --git a/packages/app/prisma-utils/src/transaction/prismaTransaction.isolationLevel.spec.ts b/packages/app/prisma-utils/src/transaction/prismaTransaction.isolationLevel.spec.ts index 4fa5f56fd..3d68f3415 100644 --- a/packages/app/prisma-utils/src/transaction/prismaTransaction.isolationLevel.spec.ts +++ b/packages/app/prisma-utils/src/transaction/prismaTransaction.isolationLevel.spec.ts @@ -1,6 +1,6 @@ import { PrismaPg } from '@prisma/adapter-pg' +import { PrismaClient } from 'db-client/client.ts' import { afterAll, beforeAll, describe, expect, it } from 'vitest' -import { PrismaClient } from '../../test/db-client/client.ts' import { getDatasourceUrl } from '../../test/getDatasourceUrl.ts' import { prismaTransaction } from './prismaTransaction.ts' diff --git a/packages/app/prisma-utils/src/transaction/prismaTransaction.spec.ts b/packages/app/prisma-utils/src/transaction/prismaTransaction.spec.ts index 931763406..95cf0124a 100644 --- a/packages/app/prisma-utils/src/transaction/prismaTransaction.spec.ts +++ b/packages/app/prisma-utils/src/transaction/prismaTransaction.spec.ts @@ -1,9 +1,9 @@ import type { Either } from '@lokalise/node-core' import { PrismaPg } from '@prisma/adapter-pg' import { PrismaClientKnownRequestError } from '@prisma/client/runtime/client' +import { PrismaClient } from 'db-client/client.ts' import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' import { cleanTables, DB_MODEL } from '../../test/DbCleaner.ts' -import { PrismaClient } from '../../test/db-client/client.ts' import { getDatasourceUrl } from '../../test/getDatasourceUrl.ts' import { PRISMA_NOT_FOUND_ERROR, diff --git a/packages/app/prisma-utils/src/transaction/prismaTransaction.ts b/packages/app/prisma-utils/src/transaction/prismaTransaction.ts index 7c818c85d..0c64f73b4 100644 --- a/packages/app/prisma-utils/src/transaction/prismaTransaction.ts +++ b/packages/app/prisma-utils/src/transaction/prismaTransaction.ts @@ -2,7 +2,7 @@ import { setTimeout } from 'node:timers/promises' import type { Either } from '@lokalise/node-core' import { deepClone } from '@lokalise/node-core' import type * as RuntimePrisma from '@prisma/client/runtime/client' -import type { PrismaClient } from '../../test/db-client/client.ts' +import type { PrismaClient } from 'db-client/client.ts' import { isCockroachDBRetryTransaction } from '../errors/cockroachdbError.ts' import { isPrismaClientKnownRequestError, diff --git a/packages/app/prisma-utils/test/DbCleaner.ts b/packages/app/prisma-utils/test/DbCleaner.ts index f47773cb6..59dfba679 100644 --- a/packages/app/prisma-utils/test/DbCleaner.ts +++ b/packages/app/prisma-utils/test/DbCleaner.ts @@ -1,4 +1,4 @@ -import type { PrismaClient } from './db-client/client.ts' +import type { PrismaClient } from 'db-client/client.ts' export const DB_MODEL = { item1: 'item1', diff --git a/packages/app/prisma-utils/vitest.config.ts b/packages/app/prisma-utils/vitest.config.ts index 5056419a0..8386da08a 100644 --- a/packages/app/prisma-utils/vitest.config.ts +++ b/packages/app/prisma-utils/vitest.config.ts @@ -1,7 +1,20 @@ +import path from 'node:path' +import { fileURLToPath } from 'node:url' import { defineConfig } from 'vitest/config' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + // biome-ignore lint/style/noDefaultExport: vite expects default export export default defineConfig({ + resolve: { + alias: { + // Prisma 7's new `prisma-client` generator outputs raw TypeScript files to node_modules/db-client + // without a package.json, so Node cannot resolve `db-client/*` imports as a package. + // The output is intentionally placed in node_modules so tsc excludes it from the compiled output. + // This alias points the resolver directly at the generated directory. + 'db-client': path.resolve(__dirname, 'node_modules/db-client'), + }, + }, test: { globals: true, watch: false,