diff --git a/package-lock.json b/package-lock.json index 81805cbd7..ca9ebe172 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2211,11 +2211,6 @@ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", "optional": true }, - "node_modules/@epic-web/remember": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@epic-web/remember/-/remember-1.0.2.tgz", - "integrity": "sha512-K7DcGoRPqVkjVhPEMQzqw7W/c3hq/3LuiI74he6SkXwR6A49aUmXpxmdb6o+NldY4FFtG42U7nL8PrqNGRxXuQ==" - }, "node_modules/@esbuild-plugins/node-resolve": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz", @@ -27263,7 +27258,6 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "@epic-web/remember": "1.0.2", "@prisma/client": "5.4.2", "kysely": "^0.27.3", "prisma": "5.4.2", diff --git a/packages/prisma/index.ts b/packages/prisma/index.ts index 368f21233..6851111d3 100644 --- a/packages/prisma/index.ts +++ b/packages/prisma/index.ts @@ -1,10 +1,10 @@ -import { remember } from '@epic-web/remember'; import { PrismaClient } from '@prisma/client'; import { Kysely, PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler } from 'kysely'; import kyselyExtension from 'prisma-extension-kysely'; import type { DB } from './generated/types'; import { getDatabaseUrl } from './helper'; +import { remember } from './utils/remember'; export const prisma = remember( 'prisma', diff --git a/packages/prisma/package.json b/packages/prisma/package.json index 7cb8a3235..d04b86537 100644 --- a/packages/prisma/package.json +++ b/packages/prisma/package.json @@ -20,7 +20,6 @@ "seed": "tsx ./seed-database.ts" }, "dependencies": { - "@epic-web/remember": "1.0.2", "@prisma/client": "5.4.2", "kysely": "^0.27.3", "prisma": "5.4.2", diff --git a/packages/prisma/utils/remember.ts b/packages/prisma/utils/remember.ts new file mode 100644 index 000000000..5682dae81 --- /dev/null +++ b/packages/prisma/utils/remember.ts @@ -0,0 +1,18 @@ +declare global { + // eslint-disable-next-line no-var, @typescript-eslint/no-explicit-any + var __prisma_remember: Map; +} + +export function remember(name: string, getValue: () => T): T { + const thusly = globalThis; + + if (!thusly.__prisma_remember) { + thusly.__prisma_remember = new Map(); + } + + if (!thusly.__prisma_remember.has(name)) { + thusly.__prisma_remember.set(name, getValue()); + } + + return thusly.__prisma_remember.get(name); +}