@sveltejs/kit 2.39.1 → 2.41.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.39.1",
3
+ "version": "2.41.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -7,6 +7,7 @@ import { load_error_page, load_template } from '../config/index.js';
7
7
  import { runtime_directory } from '../utils.js';
8
8
  import { isSvelte5Plus, write_if_changed } from './utils.js';
9
9
  import colors from 'kleur';
10
+ import { escape_html } from '../../utils/escape.js';
10
11
 
11
12
  /**
12
13
  * @param {{
@@ -54,6 +55,7 @@ export const options = {
54
55
  .replace('%sveltekit.body%', '" + body + "')
55
56
  .replace(/%sveltekit\.assets%/g, '" + assets + "')
56
57
  .replace(/%sveltekit\.nonce%/g, '" + nonce + "')
58
+ .replace(/%sveltekit\.version%/g, escape_html(config.kit.version.name))
57
59
  .replace(
58
60
  /%sveltekit\.env\.([^%]+)%/g,
59
61
  (_match, capture) => `" + (env[${s(capture)}] ?? "") + "`
@@ -1205,7 +1205,7 @@ export interface NavigationTarget<
1205
1205
  */
1206
1206
  export type NavigationType = 'enter' | 'form' | 'leave' | 'link' | 'goto' | 'popstate';
1207
1207
 
1208
- export interface Navigation {
1208
+ export interface NavigationBase {
1209
1209
  /**
1210
1210
  * Where navigation was triggered from
1211
1211
  */
@@ -1214,6 +1214,18 @@ export interface Navigation {
1214
1214
  * Where navigation is going to/has gone to
1215
1215
  */
1216
1216
  to: NavigationTarget | null;
1217
+ /**
1218
+ * Whether or not the navigation will result in the page being unloaded (i.e. not a client-side navigation)
1219
+ */
1220
+ willUnload: boolean;
1221
+ /**
1222
+ * A promise that resolves once the navigation is complete, and rejects if the navigation
1223
+ * fails or is aborted. In the case of a `willUnload` navigation, the promise will never resolve
1224
+ */
1225
+ complete: Promise<void>;
1226
+ }
1227
+
1228
+ export interface NavigationEnter extends NavigationBase {
1217
1229
  /**
1218
1230
  * The type of navigation:
1219
1231
  * - `form`: The user submitted a `<form method="GET">`
@@ -1222,36 +1234,128 @@ export interface Navigation {
1222
1234
  * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1223
1235
  * - `popstate`: Navigation was triggered by back/forward navigation
1224
1236
  */
1225
- type: Exclude<NavigationType, 'enter'>;
1237
+ type: 'enter';
1238
+
1226
1239
  /**
1227
- * Whether or not the navigation will result in the page being unloaded (i.e. not a client-side navigation)
1240
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1228
1241
  */
1229
- willUnload: boolean;
1242
+ delta?: undefined;
1243
+
1244
+ /**
1245
+ * Dispatched `Event` object when navigation occured by `popstate` or `link`.
1246
+ */
1247
+ event?: undefined;
1248
+ }
1249
+
1250
+ export interface NavigationExternal extends NavigationBase {
1251
+ /**
1252
+ * The type of navigation:
1253
+ * - `form`: The user submitted a `<form method="GET">`
1254
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1255
+ * - `link`: Navigation was triggered by a link click
1256
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1257
+ * - `popstate`: Navigation was triggered by back/forward navigation
1258
+ */
1259
+ type: Exclude<NavigationType, 'enter' | 'popstate' | 'link' | 'form'>;
1260
+
1261
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1262
+ // (would possibly be a breaking change to do it prior to that)
1230
1263
  /**
1231
1264
  * In case of a history back/forward navigation, the number of steps to go back/forward
1232
1265
  */
1233
- delta?: number;
1266
+ delta?: undefined;
1267
+ }
1268
+
1269
+ export interface NavigationFormSubmit extends NavigationBase {
1234
1270
  /**
1235
- * A promise that resolves once the navigation is complete, and rejects if the navigation
1236
- * fails or is aborted. In the case of a `willUnload` navigation, the promise will never resolve
1271
+ * The type of navigation:
1272
+ * - `form`: The user submitted a `<form method="GET">`
1273
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1274
+ * - `link`: Navigation was triggered by a link click
1275
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1276
+ * - `popstate`: Navigation was triggered by back/forward navigation
1237
1277
  */
1238
- complete: Promise<void>;
1278
+ type: 'form';
1279
+
1280
+ /**
1281
+ * The `SubmitEvent` that caused the navigation
1282
+ */
1283
+ event: SubmitEvent;
1284
+
1285
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1286
+ // (would possibly be a breaking change to do it prior to that)
1287
+ /**
1288
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1289
+ */
1290
+ delta?: undefined;
1291
+ }
1292
+
1293
+ export interface NavigationPopState extends NavigationBase {
1294
+ /**
1295
+ * The type of navigation:
1296
+ * - `form`: The user submitted a `<form method="GET">`
1297
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1298
+ * - `link`: Navigation was triggered by a link click
1299
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1300
+ * - `popstate`: Navigation was triggered by back/forward navigation
1301
+ */
1302
+ type: 'popstate';
1303
+
1304
+ /**
1305
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1306
+ */
1307
+ delta: number;
1308
+
1309
+ /**
1310
+ * The `PopStateEvent` that caused the navigation
1311
+ */
1312
+ event: PopStateEvent;
1313
+ }
1314
+
1315
+ export interface NavigationLink extends NavigationBase {
1316
+ /**
1317
+ * The type of navigation:
1318
+ * - `form`: The user submitted a `<form method="GET">`
1319
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1320
+ * - `link`: Navigation was triggered by a link click
1321
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1322
+ * - `popstate`: Navigation was triggered by back/forward navigation
1323
+ */
1324
+ type: 'link';
1325
+
1326
+ /**
1327
+ * The `PointerEvent` that caused the navigation
1328
+ */
1329
+ event: PointerEvent;
1330
+
1331
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1332
+ // (would possibly be a breaking change to do it prior to that)
1333
+ /**
1334
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1335
+ */
1336
+ delta?: undefined;
1239
1337
  }
1240
1338
 
1339
+ export type Navigation =
1340
+ | NavigationExternal
1341
+ | NavigationFormSubmit
1342
+ | NavigationPopState
1343
+ | NavigationLink;
1344
+
1241
1345
  /**
1242
1346
  * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/$app-navigation#beforeNavigate) callbacks.
1243
1347
  */
1244
- export interface BeforeNavigate extends Navigation {
1348
+ export type BeforeNavigate = Navigation & {
1245
1349
  /**
1246
1350
  * Call this to prevent the navigation from starting.
1247
1351
  */
1248
1352
  cancel: () => void;
1249
- }
1353
+ };
1250
1354
 
1251
1355
  /**
1252
1356
  * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/$app-navigation#onNavigate) callbacks.
1253
1357
  */
1254
- export interface OnNavigate extends Navigation {
1358
+ export type OnNavigate = Navigation & {
1255
1359
  /**
1256
1360
  * The type of navigation:
1257
1361
  * - `form`: The user submitted a `<form method="GET">`
@@ -1264,12 +1368,12 @@ export interface OnNavigate extends Navigation {
1264
1368
  * Since `onNavigate` callbacks are called immediately before a client-side navigation, they will never be called with a navigation that unloads the page.
1265
1369
  */
1266
1370
  willUnload: false;
1267
- }
1371
+ };
1268
1372
 
1269
1373
  /**
1270
1374
  * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/$app-navigation#afterNavigate) callbacks.
1271
1375
  */
1272
- export interface AfterNavigate extends Omit<Navigation, 'type'> {
1376
+ export type AfterNavigate = (Navigation | NavigationEnter) & {
1273
1377
  /**
1274
1378
  * The type of navigation:
1275
1379
  * - `enter`: The app has hydrated/started
@@ -1283,7 +1387,7 @@ export interface AfterNavigate extends Omit<Navigation, 'type'> {
1283
1387
  * Since `afterNavigate` callbacks are called after a navigation completes, they will never be called with a navigation that unloads the page.
1284
1388
  */
1285
1389
  willUnload: false;
1286
- }
1390
+ };
1287
1391
 
1288
1392
  /**
1289
1393
  * The shape of the [`page`](https://svelte.dev/docs/kit/$app-state#page) reactive object and the [`$page`](https://svelte.dev/docs/kit/$app-stores) store.
@@ -149,9 +149,14 @@ function clear_onward_history(current_history_index, current_navigation_index) {
149
149
  * Returns a `Promise` that never resolves (to prevent any
150
150
  * subsequent work, e.g. history manipulation, from happening)
151
151
  * @param {URL} url
152
+ * @param {boolean} [replace] If `true`, will replace the current `history` entry rather than creating a new one with `pushState`
152
153
  */
153
- function native_navigation(url) {
154
- location.href = url.href;
154
+ function native_navigation(url, replace = false) {
155
+ if (replace) {
156
+ location.replace(url.href);
157
+ } else {
158
+ location.href = url.href;
159
+ }
155
160
  return new Promise(() => {});
156
161
  }
157
162
 
@@ -185,10 +190,7 @@ let target;
185
190
  export let app;
186
191
 
187
192
  /** @type {Record<string, any>} */
188
- // we have to conditionally access the properties of `__SVELTEKIT_PAYLOAD__`
189
- // because it will be `undefined` when users import the exports from this module.
190
- // It's only defined when the server renders a page.
191
- export const remote_responses = __SVELTEKIT_PAYLOAD__?.data ?? {};
193
+ export let remote_responses = {};
192
194
 
193
195
  /** @type {Array<((url: URL) => boolean)>} */
194
196
  const invalidated = [];
@@ -289,6 +291,10 @@ export async function start(_app, _target, hydrate) {
289
291
  );
290
292
  }
291
293
 
294
+ if (__SVELTEKIT_PAYLOAD__.data) {
295
+ remote_responses = __SVELTEKIT_PAYLOAD__?.data;
296
+ }
297
+
292
298
  // detect basic auth credentials in the current URL
293
299
  // https://github.com/sveltejs/kit/pull/11179
294
300
  // if so, refresh the page without credentials
@@ -388,7 +394,12 @@ async function _invalidate(include_load_functions = true, reset_page_state = tru
388
394
  if (!navigation_result || nav_token !== token) return;
389
395
 
390
396
  if (navigation_result.type === 'redirect') {
391
- return _goto(new URL(navigation_result.location, current.url).href, {}, 1, nav_token);
397
+ return _goto(
398
+ new URL(navigation_result.location, current.url).href,
399
+ { replaceState: true },
400
+ 1,
401
+ nav_token
402
+ );
392
403
  }
393
404
 
394
405
  // This is a bit hacky but allows us not having to pass that boolean around, making things harder to reason about
@@ -443,7 +454,14 @@ function persist_state() {
443
454
  export async function _goto(url, options, redirect_count, nav_token) {
444
455
  /** @type {string[]} */
445
456
  let query_keys;
446
- const result = await navigate({
457
+
458
+ // Clear preload cache when invalidateAll is true to ensure fresh data
459
+ // after form submissions or explicit invalidations
460
+ if (options.invalidateAll) {
461
+ load_cache = null;
462
+ }
463
+
464
+ await navigate({
447
465
  type: 'goto',
448
466
  url: resolve_url(url),
449
467
  keepfocus: options.keepFocus,
@@ -463,6 +481,7 @@ export async function _goto(url, options, redirect_count, nav_token) {
463
481
  }
464
482
  }
465
483
  });
484
+
466
485
  if (options.invalidateAll) {
467
486
  // TODO the ticks shouldn't be necessary, something inside Svelte itself is buggy
468
487
  // when a query in a layout that still exists after page change is refreshed earlier than this
@@ -478,7 +497,6 @@ export async function _goto(url, options, redirect_count, nav_token) {
478
497
  });
479
498
  });
480
499
  }
481
- return result;
482
500
  }
483
501
 
484
502
  /** @param {import('./types.js').NavigationIntent} intent */
@@ -1265,6 +1283,7 @@ async function load_root_error_page({ status, error, url, route }) {
1265
1283
  });
1266
1284
  } catch (error) {
1267
1285
  if (error instanceof Redirect) {
1286
+ // @ts-expect-error TODO investigate this
1268
1287
  return _goto(new URL(error.location, location.href), {}, 0);
1269
1288
  }
1270
1289
 
@@ -1402,9 +1421,10 @@ function get_page_key(url) {
1402
1421
  * type: import('@sveltejs/kit').Navigation["type"];
1403
1422
  * intent?: import('./types.js').NavigationIntent;
1404
1423
  * delta?: number;
1424
+ * event?: PopStateEvent | MouseEvent;
1405
1425
  * }} opts
1406
1426
  */
1407
- function _before_navigate({ url, type, intent, delta }) {
1427
+ function _before_navigate({ url, type, intent, delta, event }) {
1408
1428
  let should_block = false;
1409
1429
 
1410
1430
  const nav = create_navigation(current, intent, url, type);
@@ -1413,6 +1433,11 @@ function _before_navigate({ url, type, intent, delta }) {
1413
1433
  nav.navigation.delta = delta;
1414
1434
  }
1415
1435
 
1436
+ if (event !== undefined) {
1437
+ // @ts-ignore
1438
+ nav.navigation.event = event;
1439
+ }
1440
+
1416
1441
  const cancellable = {
1417
1442
  ...nav.navigation,
1418
1443
  cancel: () => {
@@ -1446,6 +1471,7 @@ function _before_navigate({ url, type, intent, delta }) {
1446
1471
  * nav_token?: {};
1447
1472
  * accept?: () => void;
1448
1473
  * block?: () => void;
1474
+ * event?: Event
1449
1475
  * }} opts
1450
1476
  */
1451
1477
  async function navigate({
@@ -1459,7 +1485,8 @@ async function navigate({
1459
1485
  redirect_count = 0,
1460
1486
  nav_token = {},
1461
1487
  accept = noop,
1462
- block = noop
1488
+ block = noop,
1489
+ event
1463
1490
  }) {
1464
1491
  const prev_token = token;
1465
1492
  token = nav_token;
@@ -1468,7 +1495,14 @@ async function navigate({
1468
1495
  const nav =
1469
1496
  type === 'enter'
1470
1497
  ? create_navigation(current, intent, url, type)
1471
- : _before_navigate({ url, type, delta: popped?.delta, intent });
1498
+ : _before_navigate({
1499
+ url,
1500
+ type,
1501
+ delta: popped?.delta,
1502
+ intent,
1503
+ // @ts-ignore
1504
+ event
1505
+ });
1472
1506
 
1473
1507
  if (!nav) {
1474
1508
  block();
@@ -1510,10 +1544,11 @@ async function navigate({
1510
1544
  route: { id: null }
1511
1545
  }
1512
1546
  ),
1513
- 404
1547
+ 404,
1548
+ replace_state
1514
1549
  );
1515
1550
  } else {
1516
- return await native_navigation(url);
1551
+ return await native_navigation(url, replace_state);
1517
1552
  }
1518
1553
  } else {
1519
1554
  navigation_result = await server_fallback(
@@ -1524,7 +1559,8 @@ async function navigate({
1524
1559
  params: {},
1525
1560
  route: { id: null }
1526
1561
  }),
1527
- 404
1562
+ 404,
1563
+ replace_state
1528
1564
  );
1529
1565
  }
1530
1566
  }
@@ -1541,27 +1577,39 @@ async function navigate({
1541
1577
 
1542
1578
  if (navigation_result.type === 'redirect') {
1543
1579
  // whatwg fetch spec https://fetch.spec.whatwg.org/#http-redirect-fetch says to error after 20 redirects
1544
- if (redirect_count >= 20) {
1545
- navigation_result = await load_root_error_page({
1546
- status: 500,
1547
- error: await handle_error(new Error('Redirect loop'), {
1548
- url,
1549
- params: {},
1550
- route: { id: null }
1551
- }),
1552
- url,
1553
- route: { id: null }
1580
+ if (redirect_count < 20) {
1581
+ await navigate({
1582
+ type,
1583
+ url: new URL(navigation_result.location, url),
1584
+ popped,
1585
+ keepfocus,
1586
+ noscroll,
1587
+ replace_state,
1588
+ state,
1589
+ redirect_count: redirect_count + 1,
1590
+ nav_token
1554
1591
  });
1555
- } else {
1556
- await _goto(new URL(navigation_result.location, url).href, {}, redirect_count + 1, nav_token);
1557
- return false;
1592
+
1593
+ nav.fulfil(undefined);
1594
+ return;
1558
1595
  }
1596
+
1597
+ navigation_result = await load_root_error_page({
1598
+ status: 500,
1599
+ error: await handle_error(new Error('Redirect loop'), {
1600
+ url,
1601
+ params: {},
1602
+ route: { id: null }
1603
+ }),
1604
+ url,
1605
+ route: { id: null }
1606
+ });
1559
1607
  } else if (/** @type {number} */ (navigation_result.props.page.status) >= 400) {
1560
1608
  const updated = await stores.updated.check();
1561
1609
  if (updated) {
1562
1610
  // Before reloading, try to update the service worker if it exists
1563
1611
  await update_service_worker();
1564
- await native_navigation(url);
1612
+ await native_navigation(url, replace_state);
1565
1613
  }
1566
1614
  }
1567
1615
 
@@ -1703,9 +1751,10 @@ async function navigate({
1703
1751
  * @param {{ id: string | null }} route
1704
1752
  * @param {App.Error} error
1705
1753
  * @param {number} status
1754
+ * @param {boolean} [replace_state]
1706
1755
  * @returns {Promise<import('./types.js').NavigationFinished>}
1707
1756
  */
1708
- async function server_fallback(url, route, error, status) {
1757
+ async function server_fallback(url, route, error, status, replace_state) {
1709
1758
  if (url.origin === origin && url.pathname === location.pathname && !hydrated) {
1710
1759
  // We would reload the same page we're currently on, which isn't hydrated,
1711
1760
  // which means no SSR, which means we would end up in an endless loop
@@ -1725,7 +1774,7 @@ async function server_fallback(url, route, error, status) {
1725
1774
  debugger; // eslint-disable-line
1726
1775
  }
1727
1776
 
1728
- return await native_navigation(url);
1777
+ return await native_navigation(url, replace_state);
1729
1778
  }
1730
1779
 
1731
1780
  if (import.meta.hot) {
@@ -2381,7 +2430,7 @@ function _start_router() {
2381
2430
 
2382
2431
  // Ignore the following but fire beforeNavigate
2383
2432
  if (external || (options.reload && (!same_pathname || !hash))) {
2384
- if (_before_navigate({ url, type: 'link' })) {
2433
+ if (_before_navigate({ url, type: 'link', event })) {
2385
2434
  // set `navigating` to `true` to prevent `beforeNavigate` callbacks
2386
2435
  // being called when the page unloads
2387
2436
  is_navigating = true;
@@ -2450,7 +2499,8 @@ function _start_router() {
2450
2499
  url,
2451
2500
  keepfocus: options.keepfocus,
2452
2501
  noscroll: options.noscroll,
2453
- replace_state: options.replace_state ?? url.href === location.href
2502
+ replace_state: options.replace_state ?? url.href === location.href,
2503
+ event
2454
2504
  });
2455
2505
  });
2456
2506
 
@@ -2501,7 +2551,8 @@ function _start_router() {
2501
2551
  url,
2502
2552
  keepfocus: options.keepfocus,
2503
2553
  noscroll: options.noscroll,
2504
- replace_state: options.replace_state ?? url.href === location.href
2554
+ replace_state: options.replace_state ?? url.href === location.href,
2555
+ event
2505
2556
  });
2506
2557
  });
2507
2558
 
@@ -2559,7 +2610,8 @@ function _start_router() {
2559
2610
  block: () => {
2560
2611
  history.go(-delta);
2561
2612
  },
2562
- nav_token: token
2613
+ nav_token: token,
2614
+ event
2563
2615
  });
2564
2616
  } else {
2565
2617
  // since popstate event is also emitted when an anchor referencing the same
@@ -2995,8 +3047,8 @@ function create_navigation(current, intent, url, type) {
2995
3047
  // Handle any errors off-chain so that it doesn't show up as an unhandled rejection
2996
3048
  complete.catch(() => {});
2997
3049
 
2998
- /** @type {Omit<import('@sveltejs/kit').Navigation, 'type'> & { type: T }} */
2999
- const navigation = {
3050
+ /** @type {(import('@sveltejs/kit').Navigation | import('@sveltejs/kit').AfterNavigate) & { type: T }} */
3051
+ const navigation = /** @type {any} */ ({
3000
3052
  from: {
3001
3053
  params: current.params,
3002
3054
  route: { id: current.route?.id ?? null },
@@ -3010,7 +3062,7 @@ function create_navigation(current, intent, url, type) {
3010
3062
  willUnload: !intent,
3011
3063
  type,
3012
3064
  complete
3013
- };
3065
+ });
3014
3066
 
3015
3067
  return {
3016
3068
  navigation,
@@ -408,29 +408,6 @@ export async function render_response({
408
408
  }`);
409
409
  }
410
410
 
411
- const { remote_data } = event_state;
412
-
413
- if (remote_data) {
414
- /** @type {Record<string, any>} */
415
- const remote = {};
416
-
417
- for (const key in remote_data) {
418
- remote[key] = await remote_data[key];
419
- }
420
-
421
- // TODO this is repeated in a few places — dedupe it
422
- const replacer = (/** @type {any} */ thing) => {
423
- for (const key in options.hooks.transport) {
424
- const encoded = options.hooks.transport[key].encode(thing);
425
- if (encoded) {
426
- return `app.decode('${key}', ${devalue.uneval(encoded, replacer)})`;
427
- }
428
- }
429
- };
430
-
431
- properties.push(`data: ${devalue.uneval(remote, replacer)}`);
432
- }
433
-
434
411
  // create this before declaring `data`, which may contain references to `${global}`
435
412
  blocks.push(`${global} = {
436
413
  ${properties.join(',\n\t\t\t\t\t\t')}
@@ -482,20 +459,45 @@ export async function render_response({
482
459
  args.push(`{\n${indent}\t${hydrate.join(`,\n${indent}\t`)}\n${indent}}`);
483
460
  }
484
461
 
462
+ const { remote_data } = event_state;
463
+
464
+ let serialized_remote_data = '';
465
+
466
+ if (remote_data) {
467
+ /** @type {Record<string, any>} */
468
+ const remote = {};
469
+
470
+ for (const key in remote_data) {
471
+ remote[key] = await remote_data[key];
472
+ }
473
+
474
+ // TODO this is repeated in a few places — dedupe it
475
+ const replacer = (/** @type {any} */ thing) => {
476
+ for (const key in options.hooks.transport) {
477
+ const encoded = options.hooks.transport[key].encode(thing);
478
+ if (encoded) {
479
+ return `app.decode('${key}', ${devalue.uneval(encoded, replacer)})`;
480
+ }
481
+ }
482
+ };
483
+
484
+ serialized_remote_data = `${global}.data = ${devalue.uneval(remote, replacer)};\n\n\t\t\t\t\t\t`;
485
+ }
486
+
485
487
  // `client.app` is a proxy for `bundleStrategy === 'split'`
486
488
  const boot = client.inline
487
489
  ? `${client.inline.script}
488
490
 
489
- __sveltekit_${options.version_hash}.app.start(${args.join(', ')});`
491
+ ${serialized_remote_data}${global}.app.start(${args.join(', ')});`
490
492
  : client.app
491
493
  ? `Promise.all([
492
494
  import(${s(prefixed(client.start))}),
493
495
  import(${s(prefixed(client.app))})
494
496
  ]).then(([kit, app]) => {
495
- kit.start(app, ${args.join(', ')});
497
+ ${serialized_remote_data}kit.start(app, ${args.join(', ')});
496
498
  });`
497
499
  : `import(${s(prefixed(client.start))}).then((app) => {
498
- app.start(${args.join(', ')})
500
+ ${serialized_remote_data}app.start(${args.join(', ')})
499
501
  });`;
500
502
 
501
503
  if (load_env_eagerly) {
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.39.1';
4
+ export const VERSION = '2.41.0';
package/types/index.d.ts CHANGED
@@ -1181,7 +1181,7 @@ declare module '@sveltejs/kit' {
1181
1181
  */
1182
1182
  export type NavigationType = 'enter' | 'form' | 'leave' | 'link' | 'goto' | 'popstate';
1183
1183
 
1184
- export interface Navigation {
1184
+ export interface NavigationBase {
1185
1185
  /**
1186
1186
  * Where navigation was triggered from
1187
1187
  */
@@ -1190,6 +1190,18 @@ declare module '@sveltejs/kit' {
1190
1190
  * Where navigation is going to/has gone to
1191
1191
  */
1192
1192
  to: NavigationTarget | null;
1193
+ /**
1194
+ * Whether or not the navigation will result in the page being unloaded (i.e. not a client-side navigation)
1195
+ */
1196
+ willUnload: boolean;
1197
+ /**
1198
+ * A promise that resolves once the navigation is complete, and rejects if the navigation
1199
+ * fails or is aborted. In the case of a `willUnload` navigation, the promise will never resolve
1200
+ */
1201
+ complete: Promise<void>;
1202
+ }
1203
+
1204
+ export interface NavigationEnter extends NavigationBase {
1193
1205
  /**
1194
1206
  * The type of navigation:
1195
1207
  * - `form`: The user submitted a `<form method="GET">`
@@ -1198,36 +1210,128 @@ declare module '@sveltejs/kit' {
1198
1210
  * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1199
1211
  * - `popstate`: Navigation was triggered by back/forward navigation
1200
1212
  */
1201
- type: Exclude<NavigationType, 'enter'>;
1213
+ type: 'enter';
1214
+
1202
1215
  /**
1203
- * Whether or not the navigation will result in the page being unloaded (i.e. not a client-side navigation)
1216
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1204
1217
  */
1205
- willUnload: boolean;
1218
+ delta?: undefined;
1219
+
1220
+ /**
1221
+ * Dispatched `Event` object when navigation occured by `popstate` or `link`.
1222
+ */
1223
+ event?: undefined;
1224
+ }
1225
+
1226
+ export interface NavigationExternal extends NavigationBase {
1227
+ /**
1228
+ * The type of navigation:
1229
+ * - `form`: The user submitted a `<form method="GET">`
1230
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1231
+ * - `link`: Navigation was triggered by a link click
1232
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1233
+ * - `popstate`: Navigation was triggered by back/forward navigation
1234
+ */
1235
+ type: Exclude<NavigationType, 'enter' | 'popstate' | 'link' | 'form'>;
1236
+
1237
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1238
+ // (would possibly be a breaking change to do it prior to that)
1206
1239
  /**
1207
1240
  * In case of a history back/forward navigation, the number of steps to go back/forward
1208
1241
  */
1209
- delta?: number;
1242
+ delta?: undefined;
1243
+ }
1244
+
1245
+ export interface NavigationFormSubmit extends NavigationBase {
1210
1246
  /**
1211
- * A promise that resolves once the navigation is complete, and rejects if the navigation
1212
- * fails or is aborted. In the case of a `willUnload` navigation, the promise will never resolve
1247
+ * The type of navigation:
1248
+ * - `form`: The user submitted a `<form method="GET">`
1249
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1250
+ * - `link`: Navigation was triggered by a link click
1251
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1252
+ * - `popstate`: Navigation was triggered by back/forward navigation
1213
1253
  */
1214
- complete: Promise<void>;
1254
+ type: 'form';
1255
+
1256
+ /**
1257
+ * The `SubmitEvent` that caused the navigation
1258
+ */
1259
+ event: SubmitEvent;
1260
+
1261
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1262
+ // (would possibly be a breaking change to do it prior to that)
1263
+ /**
1264
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1265
+ */
1266
+ delta?: undefined;
1267
+ }
1268
+
1269
+ export interface NavigationPopState extends NavigationBase {
1270
+ /**
1271
+ * The type of navigation:
1272
+ * - `form`: The user submitted a `<form method="GET">`
1273
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1274
+ * - `link`: Navigation was triggered by a link click
1275
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1276
+ * - `popstate`: Navigation was triggered by back/forward navigation
1277
+ */
1278
+ type: 'popstate';
1279
+
1280
+ /**
1281
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1282
+ */
1283
+ delta: number;
1284
+
1285
+ /**
1286
+ * The `PopStateEvent` that caused the navigation
1287
+ */
1288
+ event: PopStateEvent;
1289
+ }
1290
+
1291
+ export interface NavigationLink extends NavigationBase {
1292
+ /**
1293
+ * The type of navigation:
1294
+ * - `form`: The user submitted a `<form method="GET">`
1295
+ * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring
1296
+ * - `link`: Navigation was triggered by a link click
1297
+ * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect
1298
+ * - `popstate`: Navigation was triggered by back/forward navigation
1299
+ */
1300
+ type: 'link';
1301
+
1302
+ /**
1303
+ * The `PointerEvent` that caused the navigation
1304
+ */
1305
+ event: PointerEvent;
1306
+
1307
+ // TODO 3.0 remove this property, so that it only exists when type is 'popstate'
1308
+ // (would possibly be a breaking change to do it prior to that)
1309
+ /**
1310
+ * In case of a history back/forward navigation, the number of steps to go back/forward
1311
+ */
1312
+ delta?: undefined;
1215
1313
  }
1216
1314
 
1315
+ export type Navigation =
1316
+ | NavigationExternal
1317
+ | NavigationFormSubmit
1318
+ | NavigationPopState
1319
+ | NavigationLink;
1320
+
1217
1321
  /**
1218
1322
  * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/$app-navigation#beforeNavigate) callbacks.
1219
1323
  */
1220
- export interface BeforeNavigate extends Navigation {
1324
+ export type BeforeNavigate = Navigation & {
1221
1325
  /**
1222
1326
  * Call this to prevent the navigation from starting.
1223
1327
  */
1224
1328
  cancel: () => void;
1225
- }
1329
+ };
1226
1330
 
1227
1331
  /**
1228
1332
  * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/$app-navigation#onNavigate) callbacks.
1229
1333
  */
1230
- export interface OnNavigate extends Navigation {
1334
+ export type OnNavigate = Navigation & {
1231
1335
  /**
1232
1336
  * The type of navigation:
1233
1337
  * - `form`: The user submitted a `<form method="GET">`
@@ -1240,12 +1344,12 @@ declare module '@sveltejs/kit' {
1240
1344
  * Since `onNavigate` callbacks are called immediately before a client-side navigation, they will never be called with a navigation that unloads the page.
1241
1345
  */
1242
1346
  willUnload: false;
1243
- }
1347
+ };
1244
1348
 
1245
1349
  /**
1246
1350
  * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/$app-navigation#afterNavigate) callbacks.
1247
1351
  */
1248
- export interface AfterNavigate extends Omit<Navigation, 'type'> {
1352
+ export type AfterNavigate = (Navigation | NavigationEnter) & {
1249
1353
  /**
1250
1354
  * The type of navigation:
1251
1355
  * - `enter`: The app has hydrated/started
@@ -1259,7 +1363,7 @@ declare module '@sveltejs/kit' {
1259
1363
  * Since `afterNavigate` callbacks are called after a navigation completes, they will never be called with a navigation that unloads the page.
1260
1364
  */
1261
1365
  willUnload: false;
1262
- }
1366
+ };
1263
1367
 
1264
1368
  /**
1265
1369
  * The shape of the [`page`](https://svelte.dev/docs/kit/$app-state#page) reactive object and the [`$page`](https://svelte.dev/docs/kit/$app-stores) store.
@@ -29,6 +29,12 @@
29
29
  "NavigationEvent",
30
30
  "NavigationTarget",
31
31
  "NavigationType",
32
+ "NavigationBase",
33
+ "NavigationEnter",
34
+ "NavigationExternal",
35
+ "NavigationFormSubmit",
36
+ "NavigationPopState",
37
+ "NavigationLink",
32
38
  "Navigation",
33
39
  "BeforeNavigate",
34
40
  "OnNavigate",
@@ -187,6 +193,6 @@
187
193
  null,
188
194
  null
189
195
  ],
190
- "mappings": "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",
196
+ "mappings": ";;;;;;;;;;;kBAkCiBA,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;MAQrBC,aAAaA;;;;;OAKJC,YAAYA;;kBAETC,aAAaA;;;;;;MAMzBC,qBAAqBA;;;;;;;;;;;kBAWTC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8IPC,MAAMA;;;;;;;;;;;kBAWNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAqkBdC,MAAMA;;;;;;;;;;;aAWNC,iBAAiBA;;;;;;;;;;;;aAYjBC,qBAAqBA;;;;;;;;;aASrBC,iBAAiBA;;;;;;;;;;aAUjBC,WAAWA;;;;;;;;;;aAUXC,UAAUA;;;;;;aAMVC,UAAUA;;;;;;aAMVC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;aA0BPC,SAASA;;;;;kBAKJC,WAAWA;;;;;;;;;;;;aAYhBC,IAAIA;;;;;;;;;;;;kBAYCC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyHTC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0BfC,gBAAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAgCrBC,cAAcA;;kBAETC,cAAcA;;;;;;;;;;;;;;;;;;;;kBAoBdC,eAAeA;;;;;;;;;;;;;;;;;;;;;;kBAsBfC,kBAAkBA;;;;;;;;;;;;;;;;;;;kBAmBlBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBpBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;kBAsBlBC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;aAwBnBC,UAAUA;;;;;;;;;aASVC,cAAcA;;;;;;;;;;aAUdC,UAAUA;;;;;;;;;;;;;;;;;;aAkBVC,aAAaA;;;;;;;;;;;;;;;;;;;kBAmBRC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CTC,YAAYA;;kBAEPC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA+GjBC,cAAcA;;;;;kBAKTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;kBAuBdC,eAAeA;;;;;;;;;;;;;;;cAenBC,MAAMA;;;;;;kBAMFC,iBAAiBA;;;;;;;kBAOjBC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;aAyBhBC,UAAUA;;;;;;;kBAOLC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAkFpBC,MAAMA;;;;;;;;;;aAUNC,OAAOA;;;;;;;;;;;;;;;;aAgBPC,YAAYA;;;;;;;;;;;;kBCrtDXC,SAASA;;;;;;;;;;kBAqBTC,QAAQA;;;;;;;aD6tDTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6BTC,QAAQA;;;;;;;;aAQbC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAoEVC,aAAaA;;;;;;;;aAQbC,cAAcA;;;;;;;;;;;;;;;;;;aAkBdC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqCNC,mBAAmBA;;;;;;;;aAQxBC,uBAAuBA;;;;;aAKvBC,mBAAmBA;WEj6DdC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkDZC,GAAGA;;;;;;;;;;;;;;;;;;;;;WAqBHC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmElBC,UAAUA;;WAELC,MAAMA;;;;;;;;;MASXC,YAAYA;;WAEPC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmCXC,yBAAyBA;;;;;;;;;;WAUzBC,yBAAyBA;;;;WAIzBC,sCAAsCA;;;;WAItCC,4BAA4BA;;;;MAIjCC,8BAA8BA;MAC9BC,8BAA8BA;MAC9BC,iCAAiCA;;;;;MAKjCC,2CAA2CA;;;;;;aAM3CC,eAAeA;;WAIVC,cAAcA;;;;;WAKdC,YAAYA;;;;;;MAMjBC,aAAaA;WC/LRC,KAAKA;;;;;;WAeLC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuHTC,YAAYA;;;;;;;;;;;;;WAkBZC,QAAQA;;;;;;;;;;;;;;MAgCbC,iBAAiBA;;;;;;;;;WAWZC,UAAUA;;;;;;;;;;;;;WAaVC,SAASA;;;;;;;;;;;;;;;;;;;;;;;WAsHTC,YAAYA;;;;;;;;;;;;;;;;MAgBjBC,kBAAkBA;;WAEbC,aAAaA;;;;;;;;;;WAUbC,UAAUA;;;;;;;;;;;WAWVC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;MAuBZC,aAAaA;;WA6BRC,eAAeA;;;;;;MAMpBC,uBAAuBA;;MAGvBC,WAAWA;;;;;;;;WAQNC,QAAQA;;;;;;;;;WASRC,cAAcA;;;;;;;;;MA+CnBC,eAAeA;;;;;MAKfC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC3cdC,WAAWA;;;;;;;;;;;;;;;;;;;iBAsBXC,QAAQA;;;;;iBAiBRC,UAAUA;;;;;;iBASVC,IAAIA;;;;;;iBA4BJC,IAAIA;;;;;;;;;;;;;;;;iBAkDJC,eAAeA;;;;;;;;;;;;;;iBAmBfC,YAAYA;;;;;;;cCrOfC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC4EJC,QAAQA;;;;;;iBC4BFC,UAAUA;;;;;;iBAkCVC,WAAWA;;;;;iBAgFjBC,oBAAoBA;;;;;;;;;;;iBC3MpBC,gBAAgBA;;;;;;;;;iBCsHVC,SAASA;;;;;;;;;cCrIlBC,OAAOA;;;;;cAKPC,GAAGA;;;;;cAKHC,QAAQA;;;;;cAKRC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;iBCYJC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;iBAgDXC,OAAOA;;;;;;;iBCupEDC,WAAWA;;;;;;;;;;;iBA9UjBC,aAAaA;;;;;;;;;;;;iBAiBbC,cAAcA;;;;;;;;;;iBAedC,UAAUA;;;;;iBASVC,qBAAqBA;;;;;;;;;;iBA8BrBC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;iBAsCJC,UAAUA;;;;iBA0BVC,aAAaA;;;;;iBAebC,UAAUA;;;;;;;;;;;;;;iBAqBJC,WAAWA;;;;;;;;;;;;;;;;;;iBAoCXC,WAAWA;;;;;iBAsCjBC,SAASA;;;;;iBA+CTC,YAAYA;MVhiEhBlE,YAAYA;;;;;;;;;;;;;;YWlJbmE,IAAIA;;;;;;;;;YASJC,MAAMA;;MAEZC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBAC,OAAOA;;;;;;;;;;;;;;;;;iBAiBPC,KAAKA;;;;;iBAKLC,YAAYA;;;;;;;;;;;;;;;;;;;;;;iBChDZC,IAAIA;;;;;;;;iBCOJC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCTfC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Mb0cRC,8BAA8BA;MDhU9B5E,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ce1GX6E,IAAIA;;;;;cAQJC,UAAUA;;;;;;;;;;;cAMVC,OAAOA;;;;;;;;;iBCrDPC,SAASA;;;;;;;;;;;;;;;cAyBTH,IAAIA;;;;;;;;;;cAiBJC,UAAUA;;;;;;;;cAeVC,OAAOA",
191
197
  "ignoreList": []
192
198
  }