fix: Superforms SSR import from /server path and Prisma client version mismatch
- Import superValidate from sveltekit-superforms/server instead of default path to avoid pulling SuperDebug.svelte into SSR - Upgrade @prisma/client to match prisma CLI version (7.2.0 -> 7.8.0) so generated client's query_compiler_fast_bg files exist at runtime - Add regression test verifying superValidate works in server context - Add regression test verifying generated Prisma client compiler imports reference real files
This commit is contained in:
Generated
+25
-20
@@ -8,8 +8,8 @@
|
|||||||
"name": "portal.Rhemawavetech.com",
|
"name": "portal.Rhemawavetech.com",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/adapter-pg": "^7.2.0",
|
"@prisma/adapter-pg": "^7.8.0",
|
||||||
"@prisma/client": "^7.2.0",
|
"@prisma/client": "^7.8.0",
|
||||||
"@tiptap/core": "^3.15.3",
|
"@tiptap/core": "^3.15.3",
|
||||||
"@tiptap/extension-color": "^3.27.3",
|
"@tiptap/extension-color": "^3.27.3",
|
||||||
"@tiptap/extension-highlight": "^3.27.3",
|
"@tiptap/extension-highlight": "^3.27.3",
|
||||||
@@ -1027,12 +1027,13 @@
|
|||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/adapter-pg": {
|
"node_modules/@prisma/adapter-pg": {
|
||||||
"version": "7.2.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.8.0.tgz",
|
||||||
"integrity": "sha512-euIdQ13cRB2wZ3jPsnDnFhINquo1PYFPCg6yVL8b2rp3EdinQHsX9EDdCtRr489D5uhphcRk463OdQAFlsCr0w==",
|
"integrity": "sha512-ygb3UkerK3v8MDpXVgCISdRNDozpxh6+JVJgiIGbSr5KBgz10LLf5ejUskPGoXlsIjxsOu6nuy1JVQr2EKGSlg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/driver-adapter-utils": "7.2.0",
|
"@prisma/driver-adapter-utils": "7.8.0",
|
||||||
|
"@types/pg": "^8.16.0",
|
||||||
"pg": "^8.16.3",
|
"pg": "^8.16.3",
|
||||||
"postgres-array": "3.0.4"
|
"postgres-array": "3.0.4"
|
||||||
}
|
}
|
||||||
@@ -1047,12 +1048,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/client": {
|
"node_modules/@prisma/client": {
|
||||||
"version": "7.2.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.8.0.tgz",
|
||||||
"integrity": "sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA==",
|
"integrity": "sha512-HFp3Dawv/3sU3JtlPha90IB+48lS7zHiH4LKZPjmcE8YH5P9DOXGPvo8dqOtO7MqLDd1p2hOWMcFlRT1DMblHw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client-runtime-utils": "7.2.0"
|
"@prisma/client-runtime-utils": "7.8.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20.19 || ^22.12 || >=24.0"
|
"node": "^20.19 || ^22.12 || >=24.0"
|
||||||
@@ -1071,9 +1072,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/client-runtime-utils": {
|
"node_modules/@prisma/client-runtime-utils": {
|
||||||
"version": "7.2.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.8.0.tgz",
|
||||||
"integrity": "sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA==",
|
"integrity": "sha512-5NQZztQ0oY/ADFkmd9gPuweH5A1/CCY8YQPorLLO0Mu6a87mY5gsnDkzmFmIHs9NFaLnZojzgddFVN4RpKYrdw==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/config": {
|
"node_modules/@prisma/config": {
|
||||||
@@ -1093,6 +1094,7 @@
|
|||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.2.0.tgz",
|
||||||
"integrity": "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==",
|
"integrity": "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==",
|
||||||
|
"devOptional": true,
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/dev": {
|
"node_modules/@prisma/dev": {
|
||||||
@@ -1122,14 +1124,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/driver-adapter-utils": {
|
"node_modules/@prisma/driver-adapter-utils": {
|
||||||
"version": "7.2.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.8.0.tgz",
|
||||||
"integrity": "sha512-gzrUcbI9VmHS24Uf+0+7DNzdIw7keglJsD5m/MHxQOU68OhGVzlphQRobLiDMn8CHNA2XN8uugwKjudVtnfMVQ==",
|
"integrity": "sha512-/Q13o0ZT0rjc1Xk0Q9KhZYwuq2EW/vSbWUBKfgEKkaCuB/Sg6bqnjmTZqC5cD4d6y1vfFAEwBRzfzoSMIVJ55A==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "7.2.0"
|
"@prisma/debug": "7.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@prisma/driver-adapter-utils/node_modules/@prisma/debug": {
|
||||||
|
"version": "7.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.8.0.tgz",
|
||||||
|
"integrity": "sha512-p+QZReysDUqXC+mk17q9a+Y/qzh4c2KYliDK30buYUyfrGeTGSyfmc0AIrJRhZJrLHhRiJa9Au/J72h3C+szvA==",
|
||||||
|
"license": "Apache-2.0"
|
||||||
|
},
|
||||||
"node_modules/@prisma/engines": {
|
"node_modules/@prisma/engines": {
|
||||||
"version": "7.8.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.8.0.tgz",
|
||||||
@@ -2801,7 +2809,6 @@
|
|||||||
"version": "22.19.5",
|
"version": "22.19.5",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.5.tgz",
|
||||||
"integrity": "sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==",
|
"integrity": "sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==",
|
||||||
"devOptional": true,
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.21.0"
|
"undici-types": "~6.21.0"
|
||||||
@@ -2811,7 +2818,6 @@
|
|||||||
"version": "8.16.0",
|
"version": "8.16.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.16.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.16.0.tgz",
|
||||||
"integrity": "sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==",
|
"integrity": "sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==",
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
@@ -7034,7 +7040,6 @@
|
|||||||
"version": "6.21.0",
|
"version": "6.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||||
"devOptional": true,
|
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/uri-js": {
|
"node_modules/uri-js": {
|
||||||
|
|||||||
+2
-2
@@ -50,8 +50,8 @@
|
|||||||
"vitest-browser-svelte": "^2.0.1"
|
"vitest-browser-svelte": "^2.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/adapter-pg": "^7.2.0",
|
"@prisma/adapter-pg": "^7.8.0",
|
||||||
"@prisma/client": "^7.2.0",
|
"@prisma/client": "^7.8.0",
|
||||||
"@tiptap/core": "^3.15.3",
|
"@tiptap/core": "^3.15.3",
|
||||||
"@tiptap/extension-color": "^3.27.3",
|
"@tiptap/extension-color": "^3.27.3",
|
||||||
"@tiptap/extension-highlight": "^3.27.3",
|
"@tiptap/extension-highlight": "^3.27.3",
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|||||||
import { createLocals, mockUser } from '$lib/test-utils';
|
import { createLocals, mockUser } from '$lib/test-utils';
|
||||||
import { getModelConfig } from './registry';
|
import { getModelConfig } from './registry';
|
||||||
|
|
||||||
|
// Ensure superValidate can be imported from server path in Node.js/SSR context
|
||||||
|
import { superValidate } from 'sveltekit-superforms/server';
|
||||||
|
import { zod4 } from 'sveltekit-superforms/adapters';
|
||||||
|
|
||||||
vi.mock('$lib/db', () => ({
|
vi.mock('$lib/db', () => ({
|
||||||
prisma: {
|
prisma: {
|
||||||
userRole: {
|
userRole: {
|
||||||
@@ -122,3 +126,44 @@ describe('crud deleteRecord', () => {
|
|||||||
expect(result).toEqual({ success: false, error: 'Missing id' });
|
expect(result).toEqual({ success: false, error: 'Missing id' });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('sveltekit-superforms import compatibility', () => {
|
||||||
|
it('imports superValidate from server path without pulling in SuperDebug.svelte', async () => {
|
||||||
|
expect(superValidate).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calls superValidate with a Request and validates against a Zod schema', async () => {
|
||||||
|
const { z } = await import('zod');
|
||||||
|
const schema = z.object({ name: z.string().min(1) });
|
||||||
|
const body = new URLSearchParams({ name: 'test' });
|
||||||
|
const request = new Request('http://localhost', {
|
||||||
|
method: 'POST',
|
||||||
|
body,
|
||||||
|
headers: { 'content-type': 'application/x-www-form-urlencoded' }
|
||||||
|
});
|
||||||
|
const form = await superValidate(request, zod4(schema));
|
||||||
|
expect(form.valid).toBe(true);
|
||||||
|
expect(form.data).toEqual({ name: 'test' });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('prisma client version consistency', () => {
|
||||||
|
it('generated client references existing query compiler files', async () => {
|
||||||
|
const fs = await import('fs');
|
||||||
|
const path = await import('path');
|
||||||
|
const runtimeDir = path.resolve(
|
||||||
|
'node_modules/@prisma/client/runtime'
|
||||||
|
);
|
||||||
|
|
||||||
|
const generatedFile = path.resolve(
|
||||||
|
'src/lib/generated/prisma/internal/class.ts'
|
||||||
|
);
|
||||||
|
const content = fs.readFileSync(generatedFile, 'utf-8');
|
||||||
|
const compilerMatch = content.match(
|
||||||
|
/import\(["']@prisma\/client\/runtime\/([^"']+)["']\)/
|
||||||
|
);
|
||||||
|
expect(compilerMatch).not.toBeNull();
|
||||||
|
const compilerPath = path.join(runtimeDir, compilerMatch![1]);
|
||||||
|
expect(fs.existsSync(compilerPath)).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { getDelegate, parseId } from './prisma-delegate';
|
import { getDelegate, parseId } from './prisma-delegate';
|
||||||
import { extractFormData } from './form-data';
|
import { extractFormData } from './form-data';
|
||||||
import type { AdminModelConfig } from './types';
|
import type { AdminModelConfig } from './types';
|
||||||
import { superValidate } from 'sveltekit-superforms';
|
import { superValidate } from 'sveltekit-superforms/server';
|
||||||
import { zod4 } from 'sveltekit-superforms/adapters';
|
import { zod4 } from 'sveltekit-superforms/adapters';
|
||||||
import * as Schemas from './schemas';
|
import * as Schemas from './schemas';
|
||||||
import type { z } from 'zod';
|
import type { z } from 'zod';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
} from '$lib/svelte-admin/crud';
|
} from '$lib/svelte-admin/crud';
|
||||||
import { prisma } from '$lib/db';
|
import { prisma } from '$lib/db';
|
||||||
import { error } from '@sveltejs/kit';
|
import { error } from '@sveltejs/kit';
|
||||||
import { superValidate } from 'sveltekit-superforms';
|
import { superValidate } from 'sveltekit-superforms/server';
|
||||||
import { zod4 } from 'sveltekit-superforms/adapters';
|
import { zod4 } from 'sveltekit-superforms/adapters';
|
||||||
import * as Schemas from '$lib/svelte-admin/schemas';
|
import * as Schemas from '$lib/svelte-admin/schemas';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user