@sveltejs/kit 3.0.0-next.25 → 3.0.0-next.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/package.json +5 -7
  2. package/src/core/adapt/builder.js +127 -31
  3. package/src/core/adapt/index.js +3 -0
  4. package/src/core/config/index.js +4 -7
  5. package/src/core/env.js +36 -8
  6. package/src/core/generate_manifest/index.js +42 -43
  7. package/src/core/postbuild/analyse.js +4 -4
  8. package/src/core/postbuild/fallback.js +1 -1
  9. package/src/core/postbuild/prerender.js +2 -2
  10. package/src/core/sync/create_manifest_data/index.js +0 -1
  11. package/src/core/sync/write_app_manifest.js +3 -2
  12. package/src/exports/public.d.ts +100 -48
  13. package/src/exports/vite/build/index.js +1173 -0
  14. package/src/exports/vite/build/remote.js +4 -4
  15. package/src/exports/vite/dev/generate_manifest.js +308 -0
  16. package/src/exports/vite/dev/index.js +28 -284
  17. package/src/exports/vite/index.js +117 -1308
  18. package/src/exports/vite/plugins/env-vars.js +11 -34
  19. package/src/exports/vite/plugins/guard.js +19 -7
  20. package/src/exports/vite/plugins/remote.js +237 -0
  21. package/src/exports/vite/preview/index.js +8 -8
  22. package/src/exports/vite/static_analysis/index.js +15 -15
  23. package/src/exports/vite/utils.js +1 -1
  24. package/src/runner.js +4 -3
  25. package/src/runtime/app/paths/server.js +2 -2
  26. package/src/runtime/app/server/index.js +3 -3
  27. package/src/runtime/app/server/public.d.ts +114 -57
  28. package/src/runtime/app/server/remote/requested.js +31 -15
  29. package/src/runtime/app/state/client.svelte.js +3 -1
  30. package/src/runtime/client/client.js +39 -194
  31. package/src/runtime/client/fetcher.js +6 -6
  32. package/src/runtime/client/focus.js +120 -0
  33. package/src/runtime/client/remote-functions/command.svelte.js +20 -9
  34. package/src/runtime/client/remote-functions/form.svelte.js +12 -7
  35. package/src/runtime/client/remote-functions/query/instance.svelte.js +19 -5
  36. package/src/runtime/client/remote-functions/shared.svelte.js +22 -1
  37. package/src/runtime/client/scroll.js +39 -0
  38. package/src/runtime/client/utils.js +28 -0
  39. package/src/runtime/form-utils.js +243 -245
  40. package/src/runtime/server/data/index.js +3 -10
  41. package/src/runtime/server/fetch.js +13 -15
  42. package/src/runtime/server/index.js +8 -7
  43. package/src/runtime/server/internal.js +1 -2
  44. package/src/runtime/server/page/index.js +10 -15
  45. package/src/runtime/server/page/load_data.js +2 -2
  46. package/src/runtime/server/page/render.js +8 -13
  47. package/src/runtime/server/page/respond_with_error.js +4 -5
  48. package/src/runtime/server/page/server_routing.js +21 -27
  49. package/src/runtime/server/remote-functions.js +14 -14
  50. package/src/runtime/server/respond.js +17 -40
  51. package/src/runtime/server/state.js +1 -0
  52. package/src/runtime/server/utils.js +4 -4
  53. package/src/runtime/shared.js +9 -0
  54. package/src/types/ambient-private.d.ts +1 -2
  55. package/src/types/internal.d.ts +49 -6
  56. package/src/utils/filesystem.js +43 -27
  57. package/src/version.js +1 -1
  58. package/types/index.d.ts +215 -92
  59. package/types/index.d.ts.map +6 -2
@@ -109,8 +109,9 @@ export function get_remote_request_headers() {
109
109
  /**
110
110
  * @param {string} url
111
111
  * @param {RequestInit} [init]
112
+ * @param {Set<string> | null} [refreshes]
112
113
  */
113
- export async function remote_request(url, init) {
114
+ export async function remote_request(url, init, refreshes) {
114
115
  const response = await fetch(url, init);
115
116
  const status = response.status;
116
117
 
@@ -158,6 +159,7 @@ export async function remote_request(url, init) {
158
159
  // update queries with refreshed data
159
160
  if (data.q) {
160
161
  for (const key in data.q) {
162
+ refreshes?.delete(key);
161
163
  const parts = split_remote_key(key);
162
164
  const entry = query_map.get(parts.id)?.get(parts.payload);
163
165
 
@@ -168,6 +170,7 @@ export async function remote_request(url, init) {
168
170
  // reconnect live queries
169
171
  if (data.l) {
170
172
  for (const key in data.l) {
173
+ refreshes?.delete(key);
171
174
  const parts = split_remote_key(key);
172
175
  const entry = live_query_map.get(parts.id)?.get(parts.payload);
173
176
 
@@ -182,9 +185,27 @@ export async function remote_request(url, init) {
182
185
  }
183
186
  }
184
187
 
188
+ for (const key of data.i ?? []) refreshes?.delete(key);
189
+
185
190
  return data;
186
191
  }
187
192
 
193
+ /** @param {Set<string> | null} refreshes */
194
+ export function fail_unhandled_refreshes(refreshes) {
195
+ for (const key of refreshes ?? []) {
196
+ const parts = split_remote_key(key);
197
+ const entry =
198
+ query_map.get(parts.id)?.get(parts.payload) ??
199
+ live_query_map.get(parts.id)?.get(parts.payload);
200
+ entry?.resource.fail(
201
+ new HttpError({
202
+ status: 400,
203
+ message: 'Requested update was not handled by the remote function'
204
+ })
205
+ );
206
+ }
207
+ }
208
+
188
209
  /**
189
210
  * @param {RemoteFunctionResponse} response
190
211
  * @returns {Promise<Extract<RemoteFunctionResponse, { type: 'result' }>>}
@@ -0,0 +1,39 @@
1
+ import { hash_routing } from '$app/paths/internal/client';
2
+ import { reset_focus } from './focus.js';
3
+ import { get_hash_element } from './utils.js';
4
+
5
+ let autoscroll = true;
6
+
7
+ export function disable_scroll_handling() {
8
+ autoscroll = false;
9
+ }
10
+
11
+ /**
12
+ * @param {URL} url
13
+ * @param {{ x: number; y: number } | null | undefined} scroll
14
+ * @param {boolean} reset
15
+ * @param {Element | null} active_element
16
+ */
17
+ export function reset_scroll_and_focus(url, scroll, reset, active_element) {
18
+ /** @type {Element | null} */
19
+ let deep_linked = null;
20
+
21
+ if (autoscroll) {
22
+ if (scroll) {
23
+ scrollTo(scroll.x, scroll.y);
24
+ } else if ((deep_linked = get_hash_element(url, hash_routing))) {
25
+ deep_linked.scrollIntoView();
26
+ } else {
27
+ scrollTo(0, 0);
28
+ }
29
+ }
30
+
31
+ const changed_focus =
32
+ document.activeElement !== active_element && document.activeElement !== document.body;
33
+
34
+ if (reset && !changed_focus) {
35
+ reset_focus(url, !deep_linked);
36
+ }
37
+
38
+ autoscroll = true;
39
+ }
@@ -238,6 +238,34 @@ export function is_external_url(url, base, hash_routing) {
238
238
  return false;
239
239
  }
240
240
 
241
+ /**
242
+ * @param {URL} url
243
+ * @param {boolean} hash_routing
244
+ * @returns {string}
245
+ */
246
+ export function get_id(url, hash_routing) {
247
+ let id;
248
+
249
+ if (hash_routing) {
250
+ const [, , second] = url.hash.split('#', 3);
251
+ id = second ?? '';
252
+ } else {
253
+ id = url.hash.slice(1);
254
+ }
255
+
256
+ return decodeURIComponent(id);
257
+ }
258
+
259
+ /**
260
+ * @param {URL} url
261
+ * @param {boolean} hash_routing
262
+ * @returns {Element | null}
263
+ */
264
+ export function get_hash_element(url, hash_routing) {
265
+ const id = get_id(url, hash_routing);
266
+ return id ? document.getElementById(id) : null;
267
+ }
268
+
241
269
  /** @type {Set<string> | null} */
242
270
  let seen = null;
243
271