1
1
import { installPolyfills } from '@sveltejs/kit/node/polyfills' ;
2
- import { getRequest , setResponse , createReadableStream } from '@sveltejs/kit/node' ;
2
+ import { createReadableStream } from '@sveltejs/kit/node' ;
3
3
import { Server } from 'SERVER' ;
4
4
import { manifest } from 'MANIFEST' ;
5
5
import process from 'node:process' ;
@@ -15,33 +15,31 @@ await server.init({
15
15
16
16
const DATA_SUFFIX = '/__data.json' ;
17
17
18
- /**
19
- * @param { import('http').IncomingMessage } req
20
- * @param {import('http').ServerResponse } res
21
- */
22
- export default async ( req , res ) => {
23
- if ( req . url ) {
24
- const [ path , search ] = req . url . split ( '?' ) ;
25
-
26
- const params = new URLSearchParams ( search ) ;
27
- let pathname = params . get ( '__pathname' ) ;
18
+ export default {
19
+ /**
20
+ * @param {Request } request
21
+ * @returns { Promise<Response> }
22
+ */
23
+ fetch ( request ) {
24
+ // If this is an ISR request, the requested pathname is encoded
25
+ // as a search parameter, so we need to extract it
26
+ const url = new URL ( request . url ) ;
27
+ let pathname = url . searchParams . get ( '__pathname' ) ;
28
28
29
29
if ( pathname ) {
30
- params . delete ( '__pathname' ) ;
31
30
// Optional routes' pathname replacements look like `/foo/$1/bar` which means we could end up with an url like /foo//bar
32
31
pathname = pathname . replace ( / \/ + / g, '/' ) ;
33
- req . url = `${ pathname } ${ path . endsWith ( DATA_SUFFIX ) ? DATA_SUFFIX : '' } ?${ params } ` ;
34
- }
35
- }
36
32
37
- const request = await getRequest ( { base : `https://${ req . headers . host } ` , request : req } ) ;
33
+ url . pathname = pathname + ( url . pathname . endsWith ( DATA_SUFFIX ) ? DATA_SUFFIX : '' ) ;
34
+ url . searchParams . delete ( '__pathname' ) ;
38
35
39
- void setResponse (
40
- res ,
41
- await server . respond ( request , {
36
+ request = new Request ( url , request ) ;
37
+ }
38
+
39
+ return server . respond ( request , {
42
40
getClientAddress ( ) {
43
41
return /** @type {string } */ ( request . headers . get ( 'x-forwarded-for' ) ) ;
44
42
}
45
- } )
46
- ) ;
43
+ } ) ;
44
+ }
47
45
} ;
0 commit comments