inertiax-core 11.0.11 → 11.0.13
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/dist/index.js +116 -25
- package/dist/index.js.map +4 -4
- package/package.json +7 -7
- package/types/events.d.ts +1 -0
- package/types/index.d.ts +2 -0
- package/types/initialVisit.d.ts +1 -1
- package/types/interceptors.d.ts +24 -0
- package/types/page.d.ts +3 -1
- package/types/router.d.ts +1 -0
- package/types/types.d.ts +37 -3
- package/types/uid.d.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -64,8 +64,8 @@ function fireEvent(name, options) {
|
|
|
64
64
|
var fireBeforeEvent = (visit) => {
|
|
65
65
|
return fireEvent("before", { cancelable: true, detail: { visit } });
|
|
66
66
|
};
|
|
67
|
-
var fireErrorEvent = (errors) => {
|
|
68
|
-
return fireEvent("error", { detail: { errors } });
|
|
67
|
+
var fireErrorEvent = (errors, { page: page2, visitId } = {}) => {
|
|
68
|
+
return fireEvent("error", { detail: { errors, page: page2, visitId } });
|
|
69
69
|
};
|
|
70
70
|
var fireNetworkErrorEvent = (error) => {
|
|
71
71
|
return fireEvent("networkError", { cancelable: true, detail: { error } });
|
|
@@ -79,8 +79,11 @@ var fireHttpExceptionEvent = (response) => {
|
|
|
79
79
|
var fireBeforeUpdateEvent = (page2) => {
|
|
80
80
|
return fireEvent("beforeUpdate", { detail: { page: page2 } });
|
|
81
81
|
};
|
|
82
|
-
var fireNavigateEvent = (page2) => {
|
|
83
|
-
return fireEvent("navigate", { detail: { page: page2 } });
|
|
82
|
+
var fireNavigateEvent = (page2, { cached = false, visitId } = {}) => {
|
|
83
|
+
return fireEvent("navigate", { detail: { page: page2, cached, visitId } });
|
|
84
|
+
};
|
|
85
|
+
var fireClientVisitEvent = (page2, { replace, visitId }) => {
|
|
86
|
+
return fireEvent("clientVisit", { detail: { page: page2, replace, visitId } });
|
|
84
87
|
};
|
|
85
88
|
var fireProgressEvent = (progress3) => {
|
|
86
89
|
return fireEvent("progress", { detail: { progress: progress3 } });
|
|
@@ -88,8 +91,8 @@ var fireProgressEvent = (progress3) => {
|
|
|
88
91
|
var fireStartEvent = (visit) => {
|
|
89
92
|
return fireEvent("start", { detail: { visit } });
|
|
90
93
|
};
|
|
91
|
-
var fireSuccessEvent = (page2) => {
|
|
92
|
-
return fireEvent("success", { detail: { page: page2 } });
|
|
94
|
+
var fireSuccessEvent = (page2, { visitId } = {}) => {
|
|
95
|
+
return fireEvent("success", { detail: { page: page2, visitId } });
|
|
93
96
|
};
|
|
94
97
|
var firePrefetchedEvent = (response, visit) => {
|
|
95
98
|
return fireEvent("prefetched", { detail: { fetchedAt: Date.now(), response, visit } });
|
|
@@ -808,11 +811,15 @@ var PrefetchedRequests = class {
|
|
|
808
811
|
use(prefetched, params) {
|
|
809
812
|
const id = `${params.url.pathname}-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
810
813
|
this.currentUseId = id;
|
|
814
|
+
const consumedParams = {
|
|
815
|
+
...params,
|
|
816
|
+
cached: true
|
|
817
|
+
};
|
|
811
818
|
return prefetched.response.then((response) => {
|
|
812
819
|
if (this.currentUseId !== id) {
|
|
813
820
|
return;
|
|
814
821
|
}
|
|
815
|
-
response.mergeParams({ ...
|
|
822
|
+
response.mergeParams({ ...consumedParams, onPrefetched: () => {
|
|
816
823
|
} });
|
|
817
824
|
this.removeSingleUseItems(params);
|
|
818
825
|
return response.handle();
|
|
@@ -848,6 +855,7 @@ var PrefetchedRequests = class {
|
|
|
848
855
|
this.withoutPurposePrefetchHeader(params1),
|
|
849
856
|
this.withoutPurposePrefetchHeader(params2),
|
|
850
857
|
[
|
|
858
|
+
"id",
|
|
851
859
|
"showProgress",
|
|
852
860
|
"replace",
|
|
853
861
|
"prefetch",
|
|
@@ -869,7 +877,8 @@ var PrefetchedRequests = class {
|
|
|
869
877
|
"viewTransition",
|
|
870
878
|
"optimistic",
|
|
871
879
|
"component",
|
|
872
|
-
"pageProps"
|
|
880
|
+
"pageProps",
|
|
881
|
+
"cached"
|
|
873
882
|
]
|
|
874
883
|
);
|
|
875
884
|
}
|
|
@@ -1348,6 +1357,7 @@ var CurrentFramePage = class {
|
|
|
1348
1357
|
constructor(frameId) {
|
|
1349
1358
|
this.frameId = frameId;
|
|
1350
1359
|
}
|
|
1360
|
+
frameId;
|
|
1351
1361
|
page;
|
|
1352
1362
|
swapComponent;
|
|
1353
1363
|
resolveComponent;
|
|
@@ -1383,7 +1393,9 @@ var CurrentFramePage = class {
|
|
|
1383
1393
|
updateBrowserUrl = this.frameId === DEFAULT_FRAME_ID3,
|
|
1384
1394
|
preserveScroll = false,
|
|
1385
1395
|
preserveState = false,
|
|
1386
|
-
viewTransition = false
|
|
1396
|
+
viewTransition = false,
|
|
1397
|
+
cached = false,
|
|
1398
|
+
visitId
|
|
1387
1399
|
} = {}) {
|
|
1388
1400
|
if (Object.keys(page2.deferredProps || {}).length) {
|
|
1389
1401
|
this.pendingDeferredProps = {
|
|
@@ -1452,7 +1464,7 @@ var CurrentFramePage = class {
|
|
|
1452
1464
|
}
|
|
1453
1465
|
this.pendingDeferredProps = null;
|
|
1454
1466
|
if (!replace) {
|
|
1455
|
-
fireNavigateEvent(page2);
|
|
1467
|
+
fireNavigateEvent(page2, { cached, visitId });
|
|
1456
1468
|
}
|
|
1457
1469
|
});
|
|
1458
1470
|
});
|
|
@@ -1793,6 +1805,19 @@ var NavigationType = class {
|
|
|
1793
1805
|
};
|
|
1794
1806
|
var navigationType = new NavigationType();
|
|
1795
1807
|
|
|
1808
|
+
// src/uid.ts
|
|
1809
|
+
function uid() {
|
|
1810
|
+
const cryptoObj = typeof window !== "undefined" ? window.crypto : void 0;
|
|
1811
|
+
if (cryptoObj?.randomUUID) {
|
|
1812
|
+
return cryptoObj.randomUUID();
|
|
1813
|
+
}
|
|
1814
|
+
const randomByte = () => cryptoObj?.getRandomValues ? cryptoObj.getRandomValues(new Uint8Array(1))[0] : Math.floor(Math.random() * 256);
|
|
1815
|
+
return "10000000-1000-4000-8000-100000000000".replace(
|
|
1816
|
+
/[018]/g,
|
|
1817
|
+
(c) => (+c ^ randomByte() & 15 >> +c / 4).toString(16)
|
|
1818
|
+
);
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1796
1821
|
// src/initialVisit.ts
|
|
1797
1822
|
var InitialVisit = class {
|
|
1798
1823
|
static handle(frameId = "_top") {
|
|
@@ -1812,9 +1837,10 @@ var InitialVisit = class {
|
|
|
1812
1837
|
}
|
|
1813
1838
|
const scrollRegions = history.getScrollRegions(frameId);
|
|
1814
1839
|
history.decrypt(null, frameId).then((data) => {
|
|
1815
|
-
|
|
1840
|
+
const visitId = uid();
|
|
1841
|
+
page.set(data, { preserveScroll: true, preserveState: true, visitId }, frameId).then(() => {
|
|
1816
1842
|
Scroll.restore(scrollRegions, frameId);
|
|
1817
|
-
fireNavigateEvent(page.get(frameId));
|
|
1843
|
+
fireNavigateEvent(page.get(frameId), { visitId });
|
|
1818
1844
|
});
|
|
1819
1845
|
}).catch(() => {
|
|
1820
1846
|
eventHandler.onMissingHistoryItem(frameId);
|
|
@@ -1834,17 +1860,19 @@ var InitialVisit = class {
|
|
|
1834
1860
|
page.setUrlHash(window.location.hash, frameId);
|
|
1835
1861
|
}
|
|
1836
1862
|
history.decrypt(page.get(frameId), frameId).then(() => {
|
|
1863
|
+
const visitId = uid();
|
|
1837
1864
|
const rememberedState = history.getState(history.rememberedState, {}, frameId);
|
|
1838
1865
|
const scrollRegions = history.getScrollRegions(frameId);
|
|
1839
1866
|
page.remember(rememberedState, frameId);
|
|
1840
1867
|
page.set(page.get(frameId), {
|
|
1841
1868
|
preserveScroll: locationVisit.preserveScroll,
|
|
1842
|
-
preserveState: true
|
|
1869
|
+
preserveState: true,
|
|
1870
|
+
visitId
|
|
1843
1871
|
}, frameId).then(() => {
|
|
1844
1872
|
if (locationVisit.preserveScroll) {
|
|
1845
1873
|
Scroll.restore(scrollRegions, frameId);
|
|
1846
1874
|
}
|
|
1847
|
-
this.fireInitialEvents(frameId);
|
|
1875
|
+
this.fireInitialEvents(frameId, visitId);
|
|
1848
1876
|
});
|
|
1849
1877
|
}).catch(() => {
|
|
1850
1878
|
eventHandler.onMissingHistoryItem(frameId);
|
|
@@ -1855,18 +1883,19 @@ var InitialVisit = class {
|
|
|
1855
1883
|
if (typeof window !== "undefined") {
|
|
1856
1884
|
page.setUrlHash(window.location.hash, frameId);
|
|
1857
1885
|
}
|
|
1858
|
-
|
|
1886
|
+
const visitId = uid();
|
|
1887
|
+
page.set(page.get(frameId), { preserveScroll: true, preserveState: true, visitId }, frameId).then(() => {
|
|
1859
1888
|
if (navigationType.isReload()) {
|
|
1860
1889
|
Scroll.restore(history.getScrollRegions(frameId), frameId);
|
|
1861
1890
|
} else {
|
|
1862
1891
|
Scroll.scrollToAnchor(frameId);
|
|
1863
1892
|
}
|
|
1864
|
-
this.fireInitialEvents(frameId);
|
|
1893
|
+
this.fireInitialEvents(frameId, visitId);
|
|
1865
1894
|
});
|
|
1866
1895
|
}
|
|
1867
|
-
static fireInitialEvents(frameId
|
|
1896
|
+
static fireInitialEvents(frameId, visitId) {
|
|
1868
1897
|
const page2 = page.get(frameId);
|
|
1869
|
-
fireNavigateEvent(page2);
|
|
1898
|
+
fireNavigateEvent(page2, { visitId });
|
|
1870
1899
|
if (Object.keys(page2.flash).length > 0) {
|
|
1871
1900
|
queueMicrotask(() => fireFlashEvent(page2.flash));
|
|
1872
1901
|
}
|
|
@@ -2265,6 +2294,46 @@ var http = {
|
|
|
2265
2294
|
processError: httpHandlers.processError.bind(httpHandlers)
|
|
2266
2295
|
};
|
|
2267
2296
|
|
|
2297
|
+
// src/interceptors.ts
|
|
2298
|
+
var VisitInterceptors = class {
|
|
2299
|
+
requestHandlers = [];
|
|
2300
|
+
responseHandlers = [];
|
|
2301
|
+
onVisitRequest(handler) {
|
|
2302
|
+
this.requestHandlers.push(handler);
|
|
2303
|
+
return () => {
|
|
2304
|
+
this.requestHandlers = this.requestHandlers.filter((h) => h !== handler);
|
|
2305
|
+
};
|
|
2306
|
+
}
|
|
2307
|
+
onVisitResponse(handler) {
|
|
2308
|
+
this.responseHandlers.push(handler);
|
|
2309
|
+
return () => {
|
|
2310
|
+
this.responseHandlers = this.responseHandlers.filter((h) => h !== handler);
|
|
2311
|
+
};
|
|
2312
|
+
}
|
|
2313
|
+
async processRequest(visit, config2) {
|
|
2314
|
+
let result = config2;
|
|
2315
|
+
for (const handler of this.requestHandlers) {
|
|
2316
|
+
result = await handler(visit, result);
|
|
2317
|
+
}
|
|
2318
|
+
return result;
|
|
2319
|
+
}
|
|
2320
|
+
async processResponse(visit, response) {
|
|
2321
|
+
let result = response;
|
|
2322
|
+
for (const handler of this.responseHandlers) {
|
|
2323
|
+
result = await handler(visit, result);
|
|
2324
|
+
}
|
|
2325
|
+
return result;
|
|
2326
|
+
}
|
|
2327
|
+
};
|
|
2328
|
+
var interceptors = new VisitInterceptors();
|
|
2329
|
+
function exposeInterceptors() {
|
|
2330
|
+
if (typeof window === "undefined") {
|
|
2331
|
+
return;
|
|
2332
|
+
}
|
|
2333
|
+
;
|
|
2334
|
+
window.__inertia_interceptors__ = interceptors;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2268
2337
|
// src/requestParams.ts
|
|
2269
2338
|
var RequestParams = class _RequestParams {
|
|
2270
2339
|
callbacks = [];
|
|
@@ -2514,6 +2583,10 @@ var Response = class _Response {
|
|
|
2514
2583
|
this.originatingPage = originatingPage;
|
|
2515
2584
|
this.router = router2;
|
|
2516
2585
|
}
|
|
2586
|
+
requestParams;
|
|
2587
|
+
response;
|
|
2588
|
+
originatingPage;
|
|
2589
|
+
router;
|
|
2517
2590
|
wasPrefetched = false;
|
|
2518
2591
|
processed = false;
|
|
2519
2592
|
static create(params, response, originatingPage, router2) {
|
|
@@ -2571,14 +2644,14 @@ var Response = class _Response {
|
|
|
2571
2644
|
const errors = page.get(frameId).props.errors || {};
|
|
2572
2645
|
if (Object.keys(errors).length > 0) {
|
|
2573
2646
|
const scopedErrors = this.getScopedErrors(errors);
|
|
2574
|
-
fireErrorEvent(scopedErrors);
|
|
2647
|
+
fireErrorEvent(scopedErrors, { page: page.get(), visitId: this.requestParams.all().id });
|
|
2575
2648
|
return this.requestParams.all().onError(scopedErrors);
|
|
2576
2649
|
}
|
|
2577
2650
|
this.router?.flushByCacheTags(this.requestParams.all().invalidateCacheTags || []);
|
|
2578
2651
|
if (!this.wasPrefetched) {
|
|
2579
2652
|
this.router?.flush(page.get(frameId).url);
|
|
2580
2653
|
}
|
|
2581
|
-
fireSuccessEvent(page.get(frameId));
|
|
2654
|
+
fireSuccessEvent(page.get(frameId), { visitId: this.requestParams.all().id });
|
|
2582
2655
|
await this.requestParams.all().onSuccess(page.get(frameId));
|
|
2583
2656
|
history.preserveUrl = false;
|
|
2584
2657
|
}
|
|
@@ -2664,6 +2737,7 @@ var Response = class _Response {
|
|
|
2664
2737
|
if (!this.shouldSetPage(pageResponse)) {
|
|
2665
2738
|
return Promise.resolve();
|
|
2666
2739
|
}
|
|
2740
|
+
this.response = await interceptors.processResponse(this.requestParams.all(), this.response);
|
|
2667
2741
|
this.mergeProps(pageResponse);
|
|
2668
2742
|
page.mergeOncePropsIntoResponse(pageResponse, {}, frameId);
|
|
2669
2743
|
this.preserveOptimisticProps(pageResponse);
|
|
@@ -2678,7 +2752,9 @@ var Response = class _Response {
|
|
|
2678
2752
|
updateBrowserUrl: this.requestParams.all().updateBrowserUrl,
|
|
2679
2753
|
preserveScroll: this.requestParams.all().preserveScroll,
|
|
2680
2754
|
preserveState: this.requestParams.all().preserveState,
|
|
2681
|
-
viewTransition: this.requestParams.all().viewTransition
|
|
2755
|
+
viewTransition: this.requestParams.all().viewTransition,
|
|
2756
|
+
cached: this.requestParams.all().cached,
|
|
2757
|
+
visitId: this.requestParams.all().id
|
|
2682
2758
|
}, frameId);
|
|
2683
2759
|
}
|
|
2684
2760
|
getDataFromResponse(response) {
|
|
@@ -2942,6 +3018,7 @@ var Request = class _Request {
|
|
|
2942
3018
|
this.optimistic = optimistic;
|
|
2943
3019
|
this.router = router2;
|
|
2944
3020
|
}
|
|
3021
|
+
page;
|
|
2945
3022
|
response;
|
|
2946
3023
|
cancelToken;
|
|
2947
3024
|
requestParams;
|
|
@@ -2969,14 +3046,16 @@ var Request = class _Request {
|
|
|
2969
3046
|
firePrefetchingEvent(this.requestParams.all());
|
|
2970
3047
|
}
|
|
2971
3048
|
const originallyPrefetch = this.requestParams.all().prefetch;
|
|
2972
|
-
|
|
3049
|
+
const config2 = {
|
|
2973
3050
|
method: this.requestParams.all().method,
|
|
2974
3051
|
url: urlWithoutHash(this.requestParams.all().url).href,
|
|
2975
3052
|
data: this.requestParams.data(),
|
|
2976
3053
|
signal: this.cancelToken.signal,
|
|
2977
3054
|
headers: this.getHeaders(),
|
|
2978
3055
|
onUploadProgress: this.onProgress.bind(this)
|
|
2979
|
-
}
|
|
3056
|
+
};
|
|
3057
|
+
const processedConfig = await interceptors.processRequest(this.requestParams.all(), config2);
|
|
3058
|
+
return http.getClient().request(processedConfig).then((response) => {
|
|
2980
3059
|
this.response = Response.create(this.requestParams, response, this.page, this.router);
|
|
2981
3060
|
return this.response.handle();
|
|
2982
3061
|
}).catch((error) => {
|
|
@@ -3381,6 +3460,7 @@ var Router = class {
|
|
|
3381
3460
|
if (visit.component) {
|
|
3382
3461
|
history.processQueue().then(() => {
|
|
3383
3462
|
this.performInstantSwap(visit).then(() => {
|
|
3463
|
+
requestParams.preserveScroll = true;
|
|
3384
3464
|
requestParams.preserveState = true;
|
|
3385
3465
|
requestParams.replace = true;
|
|
3386
3466
|
requestParams.viewTransition = false;
|
|
@@ -3550,13 +3630,16 @@ var Router = class {
|
|
|
3550
3630
|
};
|
|
3551
3631
|
const preserveScroll = RequestParams.resolvePreserveOption(params.preserveScroll ?? false, page2);
|
|
3552
3632
|
const preserveState = RequestParams.resolvePreserveOption(params.preserveState ?? false, page2);
|
|
3633
|
+
const visitId = this.createVisitId();
|
|
3553
3634
|
return page.set(page2, {
|
|
3554
3635
|
replace,
|
|
3555
3636
|
updateBrowserUrl: params.updateBrowserUrl ?? this.frameId === DEFAULT_FRAME_ID4,
|
|
3556
3637
|
preserveScroll,
|
|
3557
3638
|
preserveState,
|
|
3558
|
-
viewTransition
|
|
3639
|
+
viewTransition,
|
|
3640
|
+
visitId
|
|
3559
3641
|
}, this.frameId).then(() => {
|
|
3642
|
+
fireClientVisitEvent(page.get(this.frameId), { replace, visitId });
|
|
3560
3643
|
const currentFlash = page.get(this.frameId).flash;
|
|
3561
3644
|
if (Object.keys(currentFlash).length > 0) {
|
|
3562
3645
|
fireFlashEvent(currentFlash);
|
|
@@ -3598,7 +3681,8 @@ var Router = class {
|
|
|
3598
3681
|
updateBrowserUrl: visit.updateBrowserUrl,
|
|
3599
3682
|
preserveScroll: RequestParams.resolvePreserveOption(visit.preserveScroll, intermediatePage),
|
|
3600
3683
|
preserveState: false,
|
|
3601
|
-
viewTransition: visit.viewTransition
|
|
3684
|
+
viewTransition: visit.viewTransition,
|
|
3685
|
+
visitId: visit.id
|
|
3602
3686
|
}, this.frameId);
|
|
3603
3687
|
}
|
|
3604
3688
|
getPrefetchParams(href, options) {
|
|
@@ -3613,6 +3697,9 @@ var Router = class {
|
|
|
3613
3697
|
...this.getVisitEvents(options)
|
|
3614
3698
|
};
|
|
3615
3699
|
}
|
|
3700
|
+
createVisitId() {
|
|
3701
|
+
return uid();
|
|
3702
|
+
}
|
|
3616
3703
|
getPendingVisit(href, options) {
|
|
3617
3704
|
if (isUrlMethodPair(href)) {
|
|
3618
3705
|
const urlMethodPair = href;
|
|
@@ -3646,6 +3733,7 @@ var Router = class {
|
|
|
3646
3733
|
viewTransition: false,
|
|
3647
3734
|
component: null,
|
|
3648
3735
|
pageProps: null,
|
|
3736
|
+
cached: false,
|
|
3649
3737
|
...stripTopLevelUndefined(options),
|
|
3650
3738
|
...stripTopLevelUndefined(configuredOptions)
|
|
3651
3739
|
};
|
|
@@ -3657,6 +3745,7 @@ var Router = class {
|
|
|
3657
3745
|
mergedOptions.queryStringArrayFormat
|
|
3658
3746
|
);
|
|
3659
3747
|
const visit = {
|
|
3748
|
+
id: this.createVisitId(),
|
|
3660
3749
|
cancelled: false,
|
|
3661
3750
|
completed: false,
|
|
3662
3751
|
interrupted: false,
|
|
@@ -5373,12 +5462,14 @@ export {
|
|
|
5373
5462
|
createHeadManager,
|
|
5374
5463
|
createLayoutPropsStore,
|
|
5375
5464
|
createRouter,
|
|
5465
|
+
exposeInterceptors,
|
|
5376
5466
|
formDataToObject,
|
|
5377
5467
|
getInitialPageFromDOM,
|
|
5378
5468
|
getScrollableParent,
|
|
5379
5469
|
hasFiles,
|
|
5380
5470
|
hrefToUrl,
|
|
5381
5471
|
http,
|
|
5472
|
+
interceptors,
|
|
5382
5473
|
isPathOrSubPath,
|
|
5383
5474
|
isPropsObject,
|
|
5384
5475
|
isPropsObjectOrCallback,
|