Skip to content

Commit 07a6624

Browse files
committed
add server-side handleLoad
1 parent 183681d commit 07a6624

File tree

6 files changed

+15
-6
lines changed

6 files changed

+15
-6
lines changed

packages/kit/src/runtime/server/ambient.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ declare module '__SERVER__/internal.js' {
44
handle?: import('types').Handle;
55
handleError?: import('types').HandleServerError;
66
handleFetch?: import('types').HandleFetch;
7+
handleLoad?: import('types').HandleLoad;
78
}>;
89
}

packages/kit/src/runtime/server/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ export class Server {
4141
handle: module.handle || (({ event, resolve }) => resolve(event)),
4242
// @ts-expect-error
4343
handleError: module.handleError || (({ error }) => console.error(error?.stack)),
44-
handleFetch: module.handleFetch || (({ request, fetch }) => fetch(request))
44+
handleFetch: module.handleFetch || (({ request, fetch }) => fetch(request)),
45+
handleLoad: module.handleLoad || (({ event, resolve }) => resolve(event))
4546
};
4647
}
4748
}

packages/kit/src/runtime/server/page/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ export async function render_page(event, page, options, manifest, state, resolve
180180
resolve_opts,
181181
server_data_promise: server_promises[i],
182182
state,
183-
csr
183+
csr,
184+
handleLoad: options.hooks.handleLoad
184185
});
185186
} catch (e) {
186187
load_error = /** @type {Error} */ (e);

packages/kit/src/runtime/server/page/load_data.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ export async function load_server_data({ event, state, node, parent }) {
140140
* server_data_promise: Promise<import('types').ServerDataNode | null>;
141141
* state: import('types').SSRState;
142142
* csr: boolean;
143+
* handleLoad: import('types').HandleLoad;
143144
* }} opts
144145
* @returns {Promise<Record<string, any | Promise<any>> | null>}
145146
*/
@@ -151,15 +152,16 @@ export async function load_data({
151152
server_data_promise,
152153
state,
153154
resolve_opts,
154-
csr
155+
csr,
156+
handleLoad
155157
}) {
156158
const server_data_node = await server_data_promise;
157159

158160
if (!node?.universal?.load) {
159161
return server_data_node?.data ?? null;
160162
}
161163

162-
const result = await node.universal.load.call(null, {
164+
const load_event = {
163165
url: event.url,
164166
params: event.params,
165167
data: server_data_node?.data ?? null,
@@ -168,7 +170,9 @@ export async function load_data({
168170
setHeaders: event.setHeaders,
169171
depends: () => {},
170172
parent
171-
});
173+
};
174+
175+
const result = await handleLoad({ event: load_event, resolve: node.universal.load });
172176

173177
const data = result ? await unwrap_promises(result) : null;
174178
if (__SVELTEKIT_DEV__) {

packages/kit/src/runtime/server/page/respond_with_error.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ export async function respond_with_error({
5757
resolve_opts,
5858
server_data_promise,
5959
state,
60-
csr
60+
csr,
61+
handleLoad: options.hooks.handleLoad
6162
});
6263

6364
branch.push(

packages/kit/types/internal.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export interface ServerHooks {
9595
handleFetch: HandleFetch;
9696
handle: Handle;
9797
handleError: HandleServerError;
98+
handleLoad: HandleLoad;
9899
}
99100

100101
export interface ClientHooks {

0 commit comments

Comments
 (0)