// @ts-nocheck /** * src/generated/prisma/** 的专用 Jest transformer。 * * Prisma 6 的 `prisma-client` generator 产出的是 ESM,`client.ts:16` 使用 * `fileURLToPath(import.meta.url)` 求 `__dirname`。Jest 的 CJS 运行时无法直接求值 * `import.meta`(TS 在 module=commonjs 下报 TS1343,Node 报语法错误)。 * * 处理方式:在转译前把 `import.meta.url` 等价替换为 `require('url').pathToFileURL(__filename).href` * —— 语义完全相同(当前模块文件的 file: URL),且不改动仓库里的生成产物。 * 仅对生成目录生效,src 下其余文件仍走 ts-jest(保留类型检查)。 */ const ts = require('typescript'); const IMPORT_META_URL = /import\.meta\.url/g; module.exports = { getCacheKey(sourceText, sourcePath) { return String(require('crypto') .createHash('md5') .update(sourceText) .update('\0') .update(String(sourcePath)) .update('\0') .update('prisma-generated-transformer-v1')); }, process(sourceText, sourcePath) { const patched = sourceText.includes('import.meta.url') ? sourceText.replace(IMPORT_META_URL, "require('url').pathToFileURL(__filename).href") : sourceText; const out = ts.transpileModule(patched, { fileName: String(sourcePath), reportDiagnostics: false, compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020, esModuleInterop: true, allowJs: true, isolatedModules: true, importNotAsAccessibleInCjs: undefined, }, }); return { code: out.outputText }; }, };