initial commit

This commit is contained in:
2026-04-04 22:13:55 -04:00
commit 5d77e207c9
10181 changed files with 522212 additions and 0 deletions

2
packages/db/src/index.d.ts vendored Normal file
View File

@@ -0,0 +1,2 @@
export declare const prisma: any;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAkJA,eAAO,MAAM,MAAM,KAC0C,CAAC"}

130
packages/db/src/index.js Normal file
View File

@@ -0,0 +1,130 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.prisma = void 0;
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
let PrismaClientCtor;
// --- load generated or installed PrismaClient ctor ---
try {
// prefer the local generated client in the monorepo
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const local = require("../generated/prisma");
PrismaClientCtor =
local.PrismaClient ||
local.default ||
(typeof local === "function" ? local : undefined);
}
catch (e) {
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const installed = require("@prisma/client");
PrismaClientCtor =
installed.PrismaClient ||
installed.default ||
(typeof installed === "function" ? installed : undefined);
}
catch (e2) {
throw new Error("Unable to load PrismaClient from local generated client or @prisma/client. Run `npm run db:generate` and ensure the generated client exists.");
}
}
if (!PrismaClientCtor) {
throw new Error("PrismaClient constructor not found in loaded prisma package.");
}
const globalForPrisma = global;
// --- robust adapter loader & diagnostics ---
function tryLoadPgAdapter() {
try {
// require the package
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const mod = require("@prisma/adapter-pg");
// possible export names we've seen in docs / examples
const candidates = [
"PrismaPg",
"PrismaPgAdapter",
"PrismaPgAdapterDefault",
"default",
];
for (const name of candidates) {
const candidate = (mod &&
(mod[name] || (name === "default" && mod.default)));
if (typeof candidate === "function") {
return { ctor: candidate, usedExport: name, module: mod };
}
}
// if module itself is a ctor (commonjs default export)
if (typeof mod === "function") {
return { ctor: mod, usedExport: "moduleAsCtor", module: mod };
}
// no usable export found
return { ctor: undefined, usedExport: undefined, module: mod };
}
catch (err) {
return { error: err };
}
}
function createPgAdapterInstance(ctor) {
const dbUrl = process.env.DATABASE_URL;
// different adapter versions accept different option names; attempt common ones
const tryOptions = [
{ connectionString: dbUrl },
{ url: dbUrl },
{ connectionString: dbUrl || "" },
{ url: dbUrl || "" },
];
for (const opts of tryOptions) {
try {
const inst = new ctor(opts);
return { instance: inst, optsUsed: opts };
}
catch (err) {
// ignore and try next shape
}
}
// final attempt: no args
try {
return { instance: new ctor(), optsUsed: null };
}
catch (err) {
return { instance: undefined };
}
}
// Try to load adapter only for Postgres projects (your schema shows provider = "postgresql")
const adapterLoadResult = tryLoadPgAdapter();
if (adapterLoadResult.error) {
// adapter package couldn't be required at all
console.warn("[prisma-adapter] require('@prisma/adapter-pg') failed:", adapterLoadResult.error.message || adapterLoadResult.error);
}
let adapter;
if (adapterLoadResult.ctor) {
const { instance, optsUsed } = createPgAdapterInstance(adapterLoadResult.ctor);
adapter = instance;
// console.info("[prisma-adapter] Found adapter export:", adapterLoadResult.usedExport, "optsUsed:", optsUsed);
}
else if (adapterLoadResult.module) {
console.warn("[prisma-adapter] module loaded but no ctor export found. Keys:", Object.keys(adapterLoadResult.module));
}
// If adapter couldn't be constructed, fail loud — constructing PrismaClient without adapter on v7 causes obscure __internal errors.
if (!adapter) {
const missing = adapterLoadResult.error
? "package-not-installed"
: "no-export-or-constructor";
const msg = [
"Prisma adapter for Postgres could not be created.",
`reason=${missing}`,
"To fix: ensure you have @prisma/adapter-pg installed in the package where this code runs and that its peer 'pg' (node-postgres) is resolvable.",
"Examples:",
" npm install @prisma/adapter-pg pg",
"or in monorepo: npm --workspace packages/db install @prisma/adapter-pg pg",
"After installing, run: npm run db:generate and restart dev server.",
].join(" ");
// throw so we don't instantiate PrismaClient and get the __internal crash
throw new Error(msg);
}
// instantiate prisma with adapter
exports.prisma = globalForPrisma.prisma || new PrismaClientCtor({ adapter });
if (process.env.NODE_ENV !== "production") {
globalForPrisma.prisma = exports.prisma;
}

152
packages/db/src/index.ts Executable file
View File

@@ -0,0 +1,152 @@
import dotenv from "dotenv";
dotenv.config();
type AnyFn = new (...a: any[]) => any;
let PrismaClientCtor: AnyFn | undefined;
// --- load generated or installed PrismaClient ctor ---
try {
// prefer the local generated client in the monorepo
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const local = require("../generated/prisma");
PrismaClientCtor =
local.PrismaClient ||
local.default ||
(typeof local === "function" ? local : undefined);
} catch (e) {
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const installed = require("@prisma/client");
PrismaClientCtor =
installed.PrismaClient ||
installed.default ||
(typeof installed === "function" ? installed : undefined);
} catch (e2) {
throw new Error(
"Unable to load PrismaClient from local generated client or @prisma/client. Run `npm run db:generate` and ensure the generated client exists."
);
}
}
if (!PrismaClientCtor) {
throw new Error(
"PrismaClient constructor not found in loaded prisma package."
);
}
type PrismaClientType = InstanceType<typeof PrismaClientCtor>;
const globalForPrisma = global as unknown as { prisma?: PrismaClientType };
// --- robust adapter loader & diagnostics ---
function tryLoadPgAdapter() {
try {
// require the package
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const mod = require("@prisma/adapter-pg");
// possible export names we've seen in docs / examples
const candidates = [
"PrismaPg",
"PrismaPgAdapter",
"PrismaPgAdapterDefault",
"default",
];
for (const name of candidates) {
const candidate = (mod &&
(mod[name] || (name === "default" && mod.default))) as any;
if (typeof candidate === "function") {
return { ctor: candidate, usedExport: name, module: mod };
}
}
// if module itself is a ctor (commonjs default export)
if (typeof mod === "function") {
return { ctor: mod, usedExport: "moduleAsCtor", module: mod };
}
// no usable export found
return { ctor: undefined, usedExport: undefined, module: mod };
} catch (err: any) {
return { error: err };
}
}
function createPgAdapterInstance(ctor: any) {
const dbUrl = process.env.DATABASE_URL;
// different adapter versions accept different option names; attempt common ones
const tryOptions = [
{ connectionString: dbUrl },
{ url: dbUrl },
{ connectionString: dbUrl || "" },
{ url: dbUrl || "" },
];
for (const opts of tryOptions) {
try {
const inst = new ctor(opts);
return { instance: inst, optsUsed: opts };
} catch (err) {
// ignore and try next shape
}
}
// final attempt: no args
try {
return { instance: new ctor(), optsUsed: null };
} catch (err) {
return { instance: undefined };
}
}
// Try to load adapter only for Postgres projects (your schema shows provider = "postgresql")
const adapterLoadResult = tryLoadPgAdapter();
if (adapterLoadResult.error) {
// adapter package couldn't be required at all
console.warn(
"[prisma-adapter] require('@prisma/adapter-pg') failed:",
adapterLoadResult.error.message || adapterLoadResult.error
);
}
let adapter: any | undefined;
if (adapterLoadResult.ctor) {
const { instance, optsUsed } = createPgAdapterInstance(
adapterLoadResult.ctor
);
adapter = instance;
// console.info("[prisma-adapter] Found adapter export:", adapterLoadResult.usedExport, "optsUsed:", optsUsed);
} else if (adapterLoadResult.module) {
console.warn(
"[prisma-adapter] module loaded but no ctor export found. Keys:",
Object.keys(adapterLoadResult.module)
);
}
// If adapter couldn't be constructed, fail loud — constructing PrismaClient without adapter on v7 causes obscure __internal errors.
if (!adapter) {
const missing = adapterLoadResult.error
? "package-not-installed"
: "no-export-or-constructor";
const msg = [
"Prisma adapter for Postgres could not be created.",
`reason=${missing}`,
"To fix: ensure you have @prisma/adapter-pg installed in the package where this code runs and that its peer 'pg' (node-postgres) is resolvable.",
"Examples:",
" npm install @prisma/adapter-pg pg",
"or in monorepo: npm --workspace packages/db install @prisma/adapter-pg pg",
"After installing, run: npm run db:generate and restart dev server.",
].join(" ");
// throw so we don't instantiate PrismaClient and get the __internal crash
throw new Error(msg);
}
// instantiate prisma with adapter
export const prisma =
globalForPrisma.prisma || new PrismaClientCtor({ adapter });
if (process.env.NODE_ENV !== "production") {
globalForPrisma.prisma = prisma;
}