项目文件夹

文件
wehub-resource-sync 98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:49 +08:00

46 行
1.5 KiB
JavaScript

/**
* Patches pglite-prisma-adapter to fix Bytes column handling.
*
* The adapter's parsePgBytes returns Uint8Array, which serializes as a JSON
* object {"0":104,"1":101,...} across the JS-WASM boundary to the Prisma
* query engine. The engine expects either a plain number[] or a base64 string.
*
* Fix: replace Uint8Array.from with Array.from so the result is a plain number[].
*
* Upstream issue: https://github.com/nicksrandall/pglite-prisma-adapter
*/
const fs = require('fs');
const path = require('path');
const files = [
'node_modules/pglite-prisma-adapter/dist/index.mjs',
'node_modules/pglite-prisma-adapter/dist/index.cjs',
'packages/happy-server/node_modules/pglite-prisma-adapter/dist/index.mjs',
'packages/happy-server/node_modules/pglite-prisma-adapter/dist/index.cjs',
];
let patched = 0;
for (const file of files) {
const filePath = path.resolve(__dirname, '..', file);
if (!fs.existsSync(filePath)) continue;
let content = fs.readFileSync(filePath, 'utf8');
const original = content;
// Replace Uint8Array.from with Array.from in parsePgBytes and normalizeByteaArray
content = content.replace(
/Uint8Array\.from\(\s*\{\s*length:\s*hexString\.length\s*\/\s*2\s*\}/g,
'Array.from({ length: hexString.length / 2 }'
);
if (content !== original) {
fs.writeFileSync(filePath, content, 'utf8');
patched++;
}
}
if (patched > 0) {
console.log(`[patch] Fixed pglite-prisma-adapter Bytes column handling (${patched} file(s))`);
}