fix: type error

This commit is contained in:
ClarkXia 2025-02-25 17:12:52 +08:00
parent bfc6dda579
commit 0de6c8ca8b
5 changed files with 28 additions and 11 deletions

View File

@ -31,7 +31,8 @@
"@types/react-dom": "^19.0.0", "@types/react-dom": "^19.0.0",
"@tanstack/react-router": "^1.106.0", "@tanstack/react-router": "^1.106.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0" "react-dom": "^19.0.0",
"typescript": "^5.7.3"
}, },
"dependencies": { "dependencies": {
"@ice/runtime-kit": "^0.1.0" "@ice/runtime-kit": "^0.1.0"

View File

@ -1,4 +1,4 @@
import React from 'react'; import * as React from 'react';
import ReactDOM from 'react-dom/client'; import ReactDOM from 'react-dom/client';
import { defineAppConfig, getAppConfig } from '@ice/runtime-kit'; import { defineAppConfig, getAppConfig } from '@ice/runtime-kit';
import type { RunClientAppOptions } from '@ice/runtime-kit'; import type { RunClientAppOptions } from '@ice/runtime-kit';
@ -12,6 +12,7 @@ const runClientApp = (options: RunClientAppOptions) => {
// Create router with optimized defaults // Create router with optimized defaults
const router = createRouter({ const router = createRouter({
// @ts-ignore
routeTree: createRoutes, routeTree: createRoutes,
defaultPreload: 'intent', defaultPreload: 'intent',
defaultStaleTime: DEFAULT_STALE_TIME, defaultStaleTime: DEFAULT_STALE_TIME,

View File

@ -31,8 +31,8 @@ interface Piper {
} }
interface Response { interface Response {
statusCode?: number; statusCode: number;
statusText?: string; statusText: string;
value?: string | Piper; value?: string | Piper;
headers?: Record<string, string>; headers?: Record<string, string>;
} }
@ -56,10 +56,10 @@ export async function sendResponse(
} }
} }
export const getDocumentResponse = ( export const getDocumentResponse = async (
serverContext: ServerContext, serverContext: ServerContext,
renderOptions: any, renderOptions: any,
): Response => { ): Promise<Response> => {
// TODO: get matches by serverContext. // TODO: get matches by serverContext.
const { const {
assetsManifest, assetsManifest,
@ -90,15 +90,18 @@ export const getDocumentResponse = (
const documentContext = { main: null }; const documentContext = { main: null };
const htmlStr = ReactDOMServer.renderToString( const htmlStr = ReactDOMServer.renderToString(
// @ts-ignore fix the type error by union react types.
<AppContextProvider value={appContext}> <AppContextProvider value={appContext}>
{/* @ts-ignore fix the type error by union react types */}
<DocumentContextProvider value={documentContext}> <DocumentContextProvider value={documentContext}>
{Document && <Document pagePath={routePath} />} {Document ? <Document pagePath={routePath} /> : null}
</DocumentContextProvider> </DocumentContextProvider>
</AppContextProvider>, </AppContextProvider>,
); );
return { return {
value: `<!DOCTYPE html>${htmlStr}`, value: `<!DOCTYPE html>${htmlStr}`,
statusText: '',
headers: { headers: {
'Content-Type': 'text/html; charset=utf-8', 'Content-Type': 'text/html; charset=utf-8',
}, },
@ -112,7 +115,9 @@ export const renderDocumentToResponse = async (
): Promise<void> => { ): Promise<void> => {
const { req, res } = serverContext; const { req, res } = serverContext;
const response = await getDocumentResponse(serverContext, renderOptions); const response = await getDocumentResponse(serverContext, renderOptions);
if (req && res) {
await sendResponse(req, res, response); await sendResponse(req, res, response);
}
}; };
export { getAppConfig }; export { getAppConfig };

View File

@ -4,7 +4,8 @@
"baseUrl": "./", "baseUrl": "./",
"rootDir": "src", "rootDir": "src",
"outDir": "esm", "outDir": "esm",
"module": "ES2020" "module": "ES2020",
"strictNullChecks": true
}, },
"include": ["src"] "include": ["src"]
} }

View File

@ -2564,6 +2564,9 @@ importers:
react-dom: react-dom:
specifier: ^19.0.0 specifier: ^19.0.0
version: 19.0.0(react@19.0.0) version: 19.0.0(react@19.0.0)
typescript:
specifier: ^5.7.3
version: 5.7.3
packages/shared: packages/shared:
devDependencies: devDependencies:
@ -23694,6 +23697,12 @@ packages:
engines: {node: '>=4.2.0'} engines: {node: '>=4.2.0'}
hasBin: true hasBin: true
/typescript@5.7.3:
resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
/ua-parser-js@1.0.40: /ua-parser-js@1.0.40:
resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==}
hasBin: true hasBin: true
@ -24472,7 +24481,7 @@ packages:
on-finished: 2.4.1 on-finished: 2.4.1
range-parser: 1.2.1 range-parser: 1.2.1
schema-utils: 4.3.0 schema-utils: 4.3.0
webpack: 5.88.2(@swc/core@1.3.80)(esbuild@0.25.0) webpack: 5.88.2(esbuild@0.25.0)
dev: true dev: true
/webpack-dev-server@4.15.0(debug@4.4.0)(webpack@5.88.2): /webpack-dev-server@4.15.0(debug@4.4.0)(webpack@5.88.2):
@ -24617,7 +24626,7 @@ packages:
serve-index: 1.9.1 serve-index: 1.9.1
sockjs: 0.3.24 sockjs: 0.3.24
spdy: 4.0.2 spdy: 4.0.2
webpack: 5.88.2(@swc/core@1.3.80)(esbuild@0.25.0) webpack: 5.88.2(esbuild@0.25.0)
webpack-dev-middleware: 7.4.2(webpack@5.88.2) webpack-dev-middleware: 7.4.2(webpack@5.88.2)
ws: 8.18.0 ws: 8.18.0
transitivePeerDependencies: transitivePeerDependencies: