Skip to content

Commit 9dfc6c1

Browse files
committed
fix: Allow overriding server fetch dependency (#9803)
* Fixes #9803 by allowing custom `fetch` invalidation dependcy in server `load` which prevents default behavior of exposing all (including private) urls to clients.
1 parent 39f1631 commit 9dfc6c1

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ export async function load_server_data({ event, state, node, parent }) {
5151
);
5252
}
5353

54-
uses.dependencies.add(url.href);
54+
// @ts-expect-error: Property 'svelte' does not exist on type 'RequestInit'.
55+
uses.dependencies.add(init?.svelte?.depends ?? url.href);
5556

5657
return event.fetch(info, init);
5758
},
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/** @type {import('./$types').PageServerLoad} */
2+
3+
import { PRIVATE_STATIC } from '$env/static/private';
4+
5+
export async function load({ fetch }) {
6+
return {
7+
time: fetch(`http://worldtimeapi.org/api/ip?PRIVATE=${encodeURIComponent(PRIVATE_STATIC)}`, {
8+
svelte: { depends: 'app:hidden-time-api' }
9+
}).then((res) => res.json())
10+
};
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<script>
2+
import { invalidate } from '$app/navigation';
3+
4+
export let data;
5+
</script>
6+
7+
<h1>Server Private Fetch</h1>
8+
9+
<p>Time: {new Date(data.time.datetime)}</p>
10+
11+
<p>
12+
<button on:click={e => invalidate('app:hidden-time-api')}>
13+
Fetch Current Time
14+
</button>
15+
</p>

0 commit comments

Comments
 (0)