- Refactored to introduce handleSsr function in @open-gsio/client/server/index.ts for streamlined SSR handling.

- Replaced inline SSR logic in `AssetService.ts` with `handleSsr` import.
- Enhanced `build:client` script to ensure server directory creation.
- Updated dependencies and devDependencies across multiple packages for compatibility improvements.
This commit is contained in:
geoffsee
2025-06-25 16:03:13 -04:00
parent 93bec55585
commit f9249f3496
8 changed files with 364 additions and 218 deletions

View File

@@ -34,8 +34,8 @@
"moo": "^0.5.2",
"openai": "^5.0.1",
"typescript": "^5.7.2",
"vike": "0.4.193",
"vite": "^6.3.5",
"vike": "0.4.235",
"vite": "^7.0.0",
"vitest": "^3.1.4",
"wrangler": "^4.18.0",
"zod": "^3.23.8",

View File

@@ -1,4 +1,4 @@
import renderPage from '@open-gsio/client/server';
import { handleSsr } from '@open-gsio/client/server/index.ts';
import { types } from 'mobx-state-tree';
export default types
@@ -15,30 +15,7 @@ export default types
self.ctx = ctx;
},
// @ts-expect-error - Language server doesn't have enough information to validate Vike.PageContext.env
async handleSsr(url: string, headers: Headers, env: Vike.PageContext.env) {
const pageContextInit = {
urlOriginal: url,
headersOriginal: headers,
fetch: (...args: Parameters<typeof fetch>) => fetch(...args),
env,
};
const pageContext = await renderPage(pageContextInit);
const { httpResponse } = pageContext;
if (!httpResponse) {
return null;
} else {
const { statusCode: status, headers: responseHeaders } = httpResponse;
// Create a new Headers object and remove Content-Length for streaming.
const newHeaders = new Headers(responseHeaders);
newHeaders.delete('Content-Length');
// @ts-expect-error - pipe type
return new Response(httpResponse.pipe, { headers: newHeaders, status });
}
},
handleSsr: handleSsr,
async handleStaticAssets(request: Request, env: Env) {
try {
return await env.ASSETS.fetch(request);