@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 +1 -1
- package/src/core/sync/write_server.js +2 -0
- package/src/exports/public.d.ts +118 -14
- package/src/runtime/client/client.js +90 -38
- package/src/runtime/server/page/render.js +28 -26
- package/src/version.js +1 -1
- package/types/index.d.ts +118 -14
- package/types/index.d.ts.map +7 -1
package/package.json
CHANGED
|
@@ -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)}] ?? "") + "`
|
package/src/exports/public.d.ts
CHANGED
|
@@ -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
|
|
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:
|
|
1237
|
+
type: 'enter';
|
|
1238
|
+
|
|
1226
1239
|
/**
|
|
1227
|
-
*
|
|
1240
|
+
* In case of a history back/forward navigation, the number of steps to go back/forward
|
|
1228
1241
|
*/
|
|
1229
|
-
|
|
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?:
|
|
1266
|
+
delta?: undefined;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
export interface NavigationFormSubmit extends NavigationBase {
|
|
1234
1270
|
/**
|
|
1235
|
-
*
|
|
1236
|
-
*
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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({
|
|
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
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
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
|
-
|
|
1556
|
-
|
|
1557
|
-
return
|
|
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 {
|
|
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
|
-
|
|
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
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
|
|
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:
|
|
1213
|
+
type: 'enter';
|
|
1214
|
+
|
|
1202
1215
|
/**
|
|
1203
|
-
*
|
|
1216
|
+
* In case of a history back/forward navigation, the number of steps to go back/forward
|
|
1204
1217
|
*/
|
|
1205
|
-
|
|
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?:
|
|
1242
|
+
delta?: undefined;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
export interface NavigationFormSubmit extends NavigationBase {
|
|
1210
1246
|
/**
|
|
1211
|
-
*
|
|
1212
|
-
*
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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.
|
package/types/index.d.ts.map
CHANGED
|
@@ -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": ";;;;;;;;;;;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,UAAUA
|
|
196
|
+
"mappings": "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",
|
|
191
197
|
"ignoreList": []
|
|
192
198
|
}
|