inertiax-core 11.0.11 → 11.0.12
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 +110 -25
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
- 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
|
}
|
|
@@ -1383,7 +1392,9 @@ var CurrentFramePage = class {
|
|
|
1383
1392
|
updateBrowserUrl = this.frameId === DEFAULT_FRAME_ID3,
|
|
1384
1393
|
preserveScroll = false,
|
|
1385
1394
|
preserveState = false,
|
|
1386
|
-
viewTransition = false
|
|
1395
|
+
viewTransition = false,
|
|
1396
|
+
cached = false,
|
|
1397
|
+
visitId
|
|
1387
1398
|
} = {}) {
|
|
1388
1399
|
if (Object.keys(page2.deferredProps || {}).length) {
|
|
1389
1400
|
this.pendingDeferredProps = {
|
|
@@ -1452,7 +1463,7 @@ var CurrentFramePage = class {
|
|
|
1452
1463
|
}
|
|
1453
1464
|
this.pendingDeferredProps = null;
|
|
1454
1465
|
if (!replace) {
|
|
1455
|
-
fireNavigateEvent(page2);
|
|
1466
|
+
fireNavigateEvent(page2, { cached, visitId });
|
|
1456
1467
|
}
|
|
1457
1468
|
});
|
|
1458
1469
|
});
|
|
@@ -1793,6 +1804,19 @@ var NavigationType = class {
|
|
|
1793
1804
|
};
|
|
1794
1805
|
var navigationType = new NavigationType();
|
|
1795
1806
|
|
|
1807
|
+
// src/uid.ts
|
|
1808
|
+
function uid() {
|
|
1809
|
+
const cryptoObj = typeof window !== "undefined" ? window.crypto : void 0;
|
|
1810
|
+
if (cryptoObj?.randomUUID) {
|
|
1811
|
+
return cryptoObj.randomUUID();
|
|
1812
|
+
}
|
|
1813
|
+
const randomByte = () => cryptoObj?.getRandomValues ? cryptoObj.getRandomValues(new Uint8Array(1))[0] : Math.floor(Math.random() * 256);
|
|
1814
|
+
return "10000000-1000-4000-8000-100000000000".replace(
|
|
1815
|
+
/[018]/g,
|
|
1816
|
+
(c) => (+c ^ randomByte() & 15 >> +c / 4).toString(16)
|
|
1817
|
+
);
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1796
1820
|
// src/initialVisit.ts
|
|
1797
1821
|
var InitialVisit = class {
|
|
1798
1822
|
static handle(frameId = "_top") {
|
|
@@ -1812,9 +1836,10 @@ var InitialVisit = class {
|
|
|
1812
1836
|
}
|
|
1813
1837
|
const scrollRegions = history.getScrollRegions(frameId);
|
|
1814
1838
|
history.decrypt(null, frameId).then((data) => {
|
|
1815
|
-
|
|
1839
|
+
const visitId = uid();
|
|
1840
|
+
page.set(data, { preserveScroll: true, preserveState: true, visitId }, frameId).then(() => {
|
|
1816
1841
|
Scroll.restore(scrollRegions, frameId);
|
|
1817
|
-
fireNavigateEvent(page.get(frameId));
|
|
1842
|
+
fireNavigateEvent(page.get(frameId), { visitId });
|
|
1818
1843
|
});
|
|
1819
1844
|
}).catch(() => {
|
|
1820
1845
|
eventHandler.onMissingHistoryItem(frameId);
|
|
@@ -1834,17 +1859,19 @@ var InitialVisit = class {
|
|
|
1834
1859
|
page.setUrlHash(window.location.hash, frameId);
|
|
1835
1860
|
}
|
|
1836
1861
|
history.decrypt(page.get(frameId), frameId).then(() => {
|
|
1862
|
+
const visitId = uid();
|
|
1837
1863
|
const rememberedState = history.getState(history.rememberedState, {}, frameId);
|
|
1838
1864
|
const scrollRegions = history.getScrollRegions(frameId);
|
|
1839
1865
|
page.remember(rememberedState, frameId);
|
|
1840
1866
|
page.set(page.get(frameId), {
|
|
1841
1867
|
preserveScroll: locationVisit.preserveScroll,
|
|
1842
|
-
preserveState: true
|
|
1868
|
+
preserveState: true,
|
|
1869
|
+
visitId
|
|
1843
1870
|
}, frameId).then(() => {
|
|
1844
1871
|
if (locationVisit.preserveScroll) {
|
|
1845
1872
|
Scroll.restore(scrollRegions, frameId);
|
|
1846
1873
|
}
|
|
1847
|
-
this.fireInitialEvents(frameId);
|
|
1874
|
+
this.fireInitialEvents(frameId, visitId);
|
|
1848
1875
|
});
|
|
1849
1876
|
}).catch(() => {
|
|
1850
1877
|
eventHandler.onMissingHistoryItem(frameId);
|
|
@@ -1855,18 +1882,19 @@ var InitialVisit = class {
|
|
|
1855
1882
|
if (typeof window !== "undefined") {
|
|
1856
1883
|
page.setUrlHash(window.location.hash, frameId);
|
|
1857
1884
|
}
|
|
1858
|
-
|
|
1885
|
+
const visitId = uid();
|
|
1886
|
+
page.set(page.get(frameId), { preserveScroll: true, preserveState: true, visitId }, frameId).then(() => {
|
|
1859
1887
|
if (navigationType.isReload()) {
|
|
1860
1888
|
Scroll.restore(history.getScrollRegions(frameId), frameId);
|
|
1861
1889
|
} else {
|
|
1862
1890
|
Scroll.scrollToAnchor(frameId);
|
|
1863
1891
|
}
|
|
1864
|
-
this.fireInitialEvents(frameId);
|
|
1892
|
+
this.fireInitialEvents(frameId, visitId);
|
|
1865
1893
|
});
|
|
1866
1894
|
}
|
|
1867
|
-
static fireInitialEvents(frameId
|
|
1895
|
+
static fireInitialEvents(frameId, visitId) {
|
|
1868
1896
|
const page2 = page.get(frameId);
|
|
1869
|
-
fireNavigateEvent(page2);
|
|
1897
|
+
fireNavigateEvent(page2, { visitId });
|
|
1870
1898
|
if (Object.keys(page2.flash).length > 0) {
|
|
1871
1899
|
queueMicrotask(() => fireFlashEvent(page2.flash));
|
|
1872
1900
|
}
|
|
@@ -2265,6 +2293,46 @@ var http = {
|
|
|
2265
2293
|
processError: httpHandlers.processError.bind(httpHandlers)
|
|
2266
2294
|
};
|
|
2267
2295
|
|
|
2296
|
+
// src/interceptors.ts
|
|
2297
|
+
var VisitInterceptors = class {
|
|
2298
|
+
requestHandlers = [];
|
|
2299
|
+
responseHandlers = [];
|
|
2300
|
+
onVisitRequest(handler) {
|
|
2301
|
+
this.requestHandlers.push(handler);
|
|
2302
|
+
return () => {
|
|
2303
|
+
this.requestHandlers = this.requestHandlers.filter((h) => h !== handler);
|
|
2304
|
+
};
|
|
2305
|
+
}
|
|
2306
|
+
onVisitResponse(handler) {
|
|
2307
|
+
this.responseHandlers.push(handler);
|
|
2308
|
+
return () => {
|
|
2309
|
+
this.responseHandlers = this.responseHandlers.filter((h) => h !== handler);
|
|
2310
|
+
};
|
|
2311
|
+
}
|
|
2312
|
+
async processRequest(visit, config2) {
|
|
2313
|
+
let result = config2;
|
|
2314
|
+
for (const handler of this.requestHandlers) {
|
|
2315
|
+
result = await handler(visit, result);
|
|
2316
|
+
}
|
|
2317
|
+
return result;
|
|
2318
|
+
}
|
|
2319
|
+
async processResponse(visit, response) {
|
|
2320
|
+
let result = response;
|
|
2321
|
+
for (const handler of this.responseHandlers) {
|
|
2322
|
+
result = await handler(visit, result);
|
|
2323
|
+
}
|
|
2324
|
+
return result;
|
|
2325
|
+
}
|
|
2326
|
+
};
|
|
2327
|
+
var interceptors = new VisitInterceptors();
|
|
2328
|
+
function exposeInterceptors() {
|
|
2329
|
+
if (typeof window === "undefined") {
|
|
2330
|
+
return;
|
|
2331
|
+
}
|
|
2332
|
+
;
|
|
2333
|
+
window.__inertia_interceptors__ = interceptors;
|
|
2334
|
+
}
|
|
2335
|
+
|
|
2268
2336
|
// src/requestParams.ts
|
|
2269
2337
|
var RequestParams = class _RequestParams {
|
|
2270
2338
|
callbacks = [];
|
|
@@ -2571,14 +2639,14 @@ var Response = class _Response {
|
|
|
2571
2639
|
const errors = page.get(frameId).props.errors || {};
|
|
2572
2640
|
if (Object.keys(errors).length > 0) {
|
|
2573
2641
|
const scopedErrors = this.getScopedErrors(errors);
|
|
2574
|
-
fireErrorEvent(scopedErrors);
|
|
2642
|
+
fireErrorEvent(scopedErrors, { page: page.get(), visitId: this.requestParams.all().id });
|
|
2575
2643
|
return this.requestParams.all().onError(scopedErrors);
|
|
2576
2644
|
}
|
|
2577
2645
|
this.router?.flushByCacheTags(this.requestParams.all().invalidateCacheTags || []);
|
|
2578
2646
|
if (!this.wasPrefetched) {
|
|
2579
2647
|
this.router?.flush(page.get(frameId).url);
|
|
2580
2648
|
}
|
|
2581
|
-
fireSuccessEvent(page.get(frameId));
|
|
2649
|
+
fireSuccessEvent(page.get(frameId), { visitId: this.requestParams.all().id });
|
|
2582
2650
|
await this.requestParams.all().onSuccess(page.get(frameId));
|
|
2583
2651
|
history.preserveUrl = false;
|
|
2584
2652
|
}
|
|
@@ -2664,6 +2732,7 @@ var Response = class _Response {
|
|
|
2664
2732
|
if (!this.shouldSetPage(pageResponse)) {
|
|
2665
2733
|
return Promise.resolve();
|
|
2666
2734
|
}
|
|
2735
|
+
this.response = await interceptors.processResponse(this.requestParams.all(), this.response);
|
|
2667
2736
|
this.mergeProps(pageResponse);
|
|
2668
2737
|
page.mergeOncePropsIntoResponse(pageResponse, {}, frameId);
|
|
2669
2738
|
this.preserveOptimisticProps(pageResponse);
|
|
@@ -2678,7 +2747,9 @@ var Response = class _Response {
|
|
|
2678
2747
|
updateBrowserUrl: this.requestParams.all().updateBrowserUrl,
|
|
2679
2748
|
preserveScroll: this.requestParams.all().preserveScroll,
|
|
2680
2749
|
preserveState: this.requestParams.all().preserveState,
|
|
2681
|
-
viewTransition: this.requestParams.all().viewTransition
|
|
2750
|
+
viewTransition: this.requestParams.all().viewTransition,
|
|
2751
|
+
cached: this.requestParams.all().cached,
|
|
2752
|
+
visitId: this.requestParams.all().id
|
|
2682
2753
|
}, frameId);
|
|
2683
2754
|
}
|
|
2684
2755
|
getDataFromResponse(response) {
|
|
@@ -2969,14 +3040,16 @@ var Request = class _Request {
|
|
|
2969
3040
|
firePrefetchingEvent(this.requestParams.all());
|
|
2970
3041
|
}
|
|
2971
3042
|
const originallyPrefetch = this.requestParams.all().prefetch;
|
|
2972
|
-
|
|
3043
|
+
const config2 = {
|
|
2973
3044
|
method: this.requestParams.all().method,
|
|
2974
3045
|
url: urlWithoutHash(this.requestParams.all().url).href,
|
|
2975
3046
|
data: this.requestParams.data(),
|
|
2976
3047
|
signal: this.cancelToken.signal,
|
|
2977
3048
|
headers: this.getHeaders(),
|
|
2978
3049
|
onUploadProgress: this.onProgress.bind(this)
|
|
2979
|
-
}
|
|
3050
|
+
};
|
|
3051
|
+
const processedConfig = await interceptors.processRequest(this.requestParams.all(), config2);
|
|
3052
|
+
return http.getClient().request(processedConfig).then((response) => {
|
|
2980
3053
|
this.response = Response.create(this.requestParams, response, this.page, this.router);
|
|
2981
3054
|
return this.response.handle();
|
|
2982
3055
|
}).catch((error) => {
|
|
@@ -3381,6 +3454,7 @@ var Router = class {
|
|
|
3381
3454
|
if (visit.component) {
|
|
3382
3455
|
history.processQueue().then(() => {
|
|
3383
3456
|
this.performInstantSwap(visit).then(() => {
|
|
3457
|
+
requestParams.preserveScroll = true;
|
|
3384
3458
|
requestParams.preserveState = true;
|
|
3385
3459
|
requestParams.replace = true;
|
|
3386
3460
|
requestParams.viewTransition = false;
|
|
@@ -3550,13 +3624,16 @@ var Router = class {
|
|
|
3550
3624
|
};
|
|
3551
3625
|
const preserveScroll = RequestParams.resolvePreserveOption(params.preserveScroll ?? false, page2);
|
|
3552
3626
|
const preserveState = RequestParams.resolvePreserveOption(params.preserveState ?? false, page2);
|
|
3627
|
+
const visitId = this.createVisitId();
|
|
3553
3628
|
return page.set(page2, {
|
|
3554
3629
|
replace,
|
|
3555
3630
|
updateBrowserUrl: params.updateBrowserUrl ?? this.frameId === DEFAULT_FRAME_ID4,
|
|
3556
3631
|
preserveScroll,
|
|
3557
3632
|
preserveState,
|
|
3558
|
-
viewTransition
|
|
3633
|
+
viewTransition,
|
|
3634
|
+
visitId
|
|
3559
3635
|
}, this.frameId).then(() => {
|
|
3636
|
+
fireClientVisitEvent(page.get(this.frameId), { replace, visitId });
|
|
3560
3637
|
const currentFlash = page.get(this.frameId).flash;
|
|
3561
3638
|
if (Object.keys(currentFlash).length > 0) {
|
|
3562
3639
|
fireFlashEvent(currentFlash);
|
|
@@ -3598,7 +3675,8 @@ var Router = class {
|
|
|
3598
3675
|
updateBrowserUrl: visit.updateBrowserUrl,
|
|
3599
3676
|
preserveScroll: RequestParams.resolvePreserveOption(visit.preserveScroll, intermediatePage),
|
|
3600
3677
|
preserveState: false,
|
|
3601
|
-
viewTransition: visit.viewTransition
|
|
3678
|
+
viewTransition: visit.viewTransition,
|
|
3679
|
+
visitId: visit.id
|
|
3602
3680
|
}, this.frameId);
|
|
3603
3681
|
}
|
|
3604
3682
|
getPrefetchParams(href, options) {
|
|
@@ -3613,6 +3691,9 @@ var Router = class {
|
|
|
3613
3691
|
...this.getVisitEvents(options)
|
|
3614
3692
|
};
|
|
3615
3693
|
}
|
|
3694
|
+
createVisitId() {
|
|
3695
|
+
return uid();
|
|
3696
|
+
}
|
|
3616
3697
|
getPendingVisit(href, options) {
|
|
3617
3698
|
if (isUrlMethodPair(href)) {
|
|
3618
3699
|
const urlMethodPair = href;
|
|
@@ -3646,6 +3727,7 @@ var Router = class {
|
|
|
3646
3727
|
viewTransition: false,
|
|
3647
3728
|
component: null,
|
|
3648
3729
|
pageProps: null,
|
|
3730
|
+
cached: false,
|
|
3649
3731
|
...stripTopLevelUndefined(options),
|
|
3650
3732
|
...stripTopLevelUndefined(configuredOptions)
|
|
3651
3733
|
};
|
|
@@ -3657,6 +3739,7 @@ var Router = class {
|
|
|
3657
3739
|
mergedOptions.queryStringArrayFormat
|
|
3658
3740
|
);
|
|
3659
3741
|
const visit = {
|
|
3742
|
+
id: this.createVisitId(),
|
|
3660
3743
|
cancelled: false,
|
|
3661
3744
|
completed: false,
|
|
3662
3745
|
interrupted: false,
|
|
@@ -5373,12 +5456,14 @@ export {
|
|
|
5373
5456
|
createHeadManager,
|
|
5374
5457
|
createLayoutPropsStore,
|
|
5375
5458
|
createRouter,
|
|
5459
|
+
exposeInterceptors,
|
|
5376
5460
|
formDataToObject,
|
|
5377
5461
|
getInitialPageFromDOM,
|
|
5378
5462
|
getScrollableParent,
|
|
5379
5463
|
hasFiles,
|
|
5380
5464
|
hrefToUrl,
|
|
5381
5465
|
http,
|
|
5466
|
+
interceptors,
|
|
5382
5467
|
isPathOrSubPath,
|
|
5383
5468
|
isPropsObject,
|
|
5384
5469
|
isPropsObjectOrCallback,
|