inertiax-core 11.0.36 → 11.0.37
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 +86 -16
- package/dist/index.js.map +3 -3
- package/dist/server.js +6 -5
- package/dist/server.js.map +2 -2
- package/dist/ssrErrors.js +6 -5
- package/dist/ssrErrors.js.map +2 -2
- package/package.json +1 -1
- package/types/events.d.ts +1 -0
- package/types/head.d.ts +3 -2
- package/types/index.d.ts +1 -1
- package/types/navigationEvents.d.ts +1 -1
- package/types/requestParams.d.ts +1 -0
- package/types/router.d.ts +1 -0
- package/types/ssrErrors.d.ts +1 -1
- package/types/types.d.ts +19 -3
package/dist/index.js
CHANGED
|
@@ -103,6 +103,9 @@ var firePrefetchingEvent = (visit) => {
|
|
|
103
103
|
var fireFlashEvent = (flash) => {
|
|
104
104
|
return fireEvent("flash", { detail: { flash } });
|
|
105
105
|
};
|
|
106
|
+
var fireLocationEvent = (url, versionChange) => {
|
|
107
|
+
return fireEvent("location", { cancelable: true, detail: { url, versionChange } });
|
|
108
|
+
};
|
|
106
109
|
|
|
107
110
|
// src/history.ts
|
|
108
111
|
import { cloneDeep, isEqual } from "es-toolkit";
|
|
@@ -1544,6 +1547,8 @@ var CurrentFramePage = class {
|
|
|
1544
1547
|
const viewTransitionCallback = typeof viewTransition === "boolean" ? () => null : viewTransition;
|
|
1545
1548
|
return new Promise((resolve) => {
|
|
1546
1549
|
const transitionResult = document.startViewTransition(() => doSwap().then(resolve));
|
|
1550
|
+
transitionResult.ready.catch(() => {
|
|
1551
|
+
});
|
|
1547
1552
|
viewTransitionCallback(transitionResult);
|
|
1548
1553
|
});
|
|
1549
1554
|
}
|
|
@@ -2155,11 +2160,17 @@ function parseHeaders(xhr) {
|
|
|
2155
2160
|
});
|
|
2156
2161
|
return headers;
|
|
2157
2162
|
}
|
|
2163
|
+
function isFormDataRequestBody(value) {
|
|
2164
|
+
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
2165
|
+
}
|
|
2166
|
+
function isRawRequestBody(value) {
|
|
2167
|
+
return typeof value === "string" || isFormDataRequestBody(value) || typeof Blob !== "undefined" && value instanceof Blob || typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer || typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(value) || typeof URLSearchParams !== "undefined" && value instanceof URLSearchParams;
|
|
2168
|
+
}
|
|
2158
2169
|
function setHeaders(xhr, config2) {
|
|
2159
2170
|
if (!config2.headers) {
|
|
2160
2171
|
return;
|
|
2161
2172
|
}
|
|
2162
|
-
const isFormData2 = config2.data
|
|
2173
|
+
const isFormData2 = isFormDataRequestBody(config2.data);
|
|
2163
2174
|
Object.entries(config2.headers).forEach(([key, value]) => {
|
|
2164
2175
|
if (key.toLowerCase() !== "content-type" || !isFormData2) {
|
|
2165
2176
|
xhr.setRequestHeader(key, String(value));
|
|
@@ -2201,9 +2212,15 @@ var XhrHttpClient = class {
|
|
|
2201
2212
|
if (xsrfToken) {
|
|
2202
2213
|
xhr.setRequestHeader(this.xsrfHeaderName, xsrfToken);
|
|
2203
2214
|
}
|
|
2215
|
+
const hasRequestedWithHeader = Object.keys(config2.headers ?? {}).some(
|
|
2216
|
+
(key) => key.toLowerCase() === "x-requested-with"
|
|
2217
|
+
);
|
|
2218
|
+
if (!hasRequestedWithHeader) {
|
|
2219
|
+
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
|
2220
|
+
}
|
|
2204
2221
|
let body = null;
|
|
2205
2222
|
if (config2.data !== null && config2.data !== void 0) {
|
|
2206
|
-
if (config2.data
|
|
2223
|
+
if (isRawRequestBody(config2.data)) {
|
|
2207
2224
|
body = config2.data;
|
|
2208
2225
|
} else if (typeof config2.data === "object") {
|
|
2209
2226
|
body = JSON.stringify(config2.data);
|
|
@@ -2398,6 +2415,9 @@ var RequestParams = class _RequestParams {
|
|
|
2398
2415
|
isDeferredPropsRequest() {
|
|
2399
2416
|
return this.params.deferredProps === true;
|
|
2400
2417
|
}
|
|
2418
|
+
isPollRequest() {
|
|
2419
|
+
return this.params.poll === true;
|
|
2420
|
+
}
|
|
2401
2421
|
onCancelToken(cb) {
|
|
2402
2422
|
this.params.onCancelToken({
|
|
2403
2423
|
cancel: cb
|
|
@@ -2728,9 +2748,6 @@ var Response = class _Response {
|
|
|
2728
2748
|
*/
|
|
2729
2749
|
locationVisit(url) {
|
|
2730
2750
|
try {
|
|
2731
|
-
SessionStorage.set(SessionStorage.locationVisitKey, {
|
|
2732
|
-
preserveScroll: this.requestParams.all().preserveScroll === true
|
|
2733
|
-
});
|
|
2734
2751
|
if (typeof window === "undefined") {
|
|
2735
2752
|
return;
|
|
2736
2753
|
}
|
|
@@ -2738,6 +2755,17 @@ var Response = class _Response {
|
|
|
2738
2755
|
window.location.reload();
|
|
2739
2756
|
return;
|
|
2740
2757
|
}
|
|
2758
|
+
const responseVersion = this.getHeader("x-inertia-version");
|
|
2759
|
+
const versionChange = !!responseVersion && responseVersion !== page.get().version;
|
|
2760
|
+
if (!fireLocationEvent(url, versionChange)) {
|
|
2761
|
+
return;
|
|
2762
|
+
}
|
|
2763
|
+
if (versionChange && this.requestParams.all().async) {
|
|
2764
|
+
return;
|
|
2765
|
+
}
|
|
2766
|
+
SessionStorage.set(SessionStorage.locationVisitKey, {
|
|
2767
|
+
preserveScroll: this.requestParams.all().preserveScroll === true
|
|
2768
|
+
});
|
|
2741
2769
|
if (isSameUrlWithoutHash(window.location, url)) {
|
|
2742
2770
|
window.location.reload();
|
|
2743
2771
|
} else {
|
|
@@ -3407,7 +3435,8 @@ var Router = class {
|
|
|
3407
3435
|
interval,
|
|
3408
3436
|
({ onStart, onFinish }) => {
|
|
3409
3437
|
const resolved = typeof requestOptions === "function" ? requestOptions() : requestOptions;
|
|
3410
|
-
this.
|
|
3438
|
+
this.doReload({
|
|
3439
|
+
poll: true,
|
|
3411
3440
|
preserveErrors: true,
|
|
3412
3441
|
...resolved,
|
|
3413
3442
|
onCancelToken: (token) => {
|
|
@@ -3974,6 +4003,12 @@ function normalizeHeaders(headers) {
|
|
|
3974
4003
|
}
|
|
3975
4004
|
return normalized;
|
|
3976
4005
|
}
|
|
4006
|
+
function isBinaryRequestBody(value) {
|
|
4007
|
+
return typeof Blob !== "undefined" && value instanceof Blob || typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer || typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(value);
|
|
4008
|
+
}
|
|
4009
|
+
function hasContentTypeHeader(headers) {
|
|
4010
|
+
return Object.keys(headers ?? {}).some((key) => key.toLowerCase() === "content-type");
|
|
4011
|
+
}
|
|
3977
4012
|
function toHttpProgressEvent(axiosEvent) {
|
|
3978
4013
|
return {
|
|
3979
4014
|
progress: axiosEvent.progress,
|
|
@@ -4014,13 +4049,17 @@ var AxiosHttpClient = class {
|
|
|
4014
4049
|
}
|
|
4015
4050
|
async doRequest(config2) {
|
|
4016
4051
|
const axios = await this.getAxios();
|
|
4052
|
+
const headers = { ...config2.headers ?? {} };
|
|
4053
|
+
if (isBinaryRequestBody(config2.data) && !hasContentTypeHeader(config2.headers)) {
|
|
4054
|
+
headers["Content-Type"] = false;
|
|
4055
|
+
}
|
|
4017
4056
|
try {
|
|
4018
4057
|
const response = await axios({
|
|
4019
4058
|
method: config2.method,
|
|
4020
4059
|
url: config2.url,
|
|
4021
4060
|
data: config2.data,
|
|
4022
4061
|
params: config2.params,
|
|
4023
|
-
headers
|
|
4062
|
+
headers,
|
|
4024
4063
|
signal: config2.signal,
|
|
4025
4064
|
responseType: "text",
|
|
4026
4065
|
onUploadProgress: config2.onUploadProgress ? (event) => config2.onUploadProgress(toHttpProgressEvent(event)) : void 0
|
|
@@ -4148,6 +4187,23 @@ function formDataToObject(source) {
|
|
|
4148
4187
|
}
|
|
4149
4188
|
|
|
4150
4189
|
// src/head.ts
|
|
4190
|
+
var serverHeadProviderId = "server";
|
|
4191
|
+
function ensureElementHasInertiaAttribute(element, index) {
|
|
4192
|
+
if (element.match(/\sdata-inertia(=|\s|>)/)) {
|
|
4193
|
+
return element;
|
|
4194
|
+
}
|
|
4195
|
+
return element.replace(/^<([a-zA-Z][^\s/>]*)/, `<$1 data-inertia="server-head-${index}"`);
|
|
4196
|
+
}
|
|
4197
|
+
function resolveServerHead(page2, serverHead) {
|
|
4198
|
+
if (!serverHead) {
|
|
4199
|
+
return [];
|
|
4200
|
+
}
|
|
4201
|
+
const elements = typeof serverHead === "function" ? serverHead(page2) : page2.props[serverHead === true ? "head" : serverHead];
|
|
4202
|
+
if (!Array.isArray(elements)) {
|
|
4203
|
+
return [];
|
|
4204
|
+
}
|
|
4205
|
+
return elements.map((element) => typeof element === "string" ? element.trim() : element).filter((element) => typeof element === "string" && element.length > 0).map(ensureElementHasInertiaAttribute);
|
|
4206
|
+
}
|
|
4151
4207
|
var Renderer = {
|
|
4152
4208
|
buildDOMElement(tag) {
|
|
4153
4209
|
const template = document.createElement("template");
|
|
@@ -4197,8 +4253,8 @@ var Renderer = {
|
|
|
4197
4253
|
});
|
|
4198
4254
|
}, 1)
|
|
4199
4255
|
};
|
|
4200
|
-
function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
4201
|
-
const states = {};
|
|
4256
|
+
function createHeadManager(isServer3, titleCallback, onUpdate, initialServerHead = []) {
|
|
4257
|
+
const states = initialServerHead.length ? { [serverHeadProviderId]: initialServerHead } : {};
|
|
4202
4258
|
let lastProviderId = 0;
|
|
4203
4259
|
function connect() {
|
|
4204
4260
|
const id = lastProviderId += 1;
|
|
@@ -4223,12 +4279,22 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4223
4279
|
}
|
|
4224
4280
|
commit();
|
|
4225
4281
|
}
|
|
4282
|
+
function updateServerHead(elements = []) {
|
|
4283
|
+
if (elements.length) {
|
|
4284
|
+
states[serverHeadProviderId] = elements;
|
|
4285
|
+
} else {
|
|
4286
|
+
delete states[serverHeadProviderId];
|
|
4287
|
+
}
|
|
4288
|
+
commit();
|
|
4289
|
+
}
|
|
4226
4290
|
function collect() {
|
|
4227
4291
|
const title = titleCallback("");
|
|
4292
|
+
const serverHead = states[serverHeadProviderId] || [];
|
|
4293
|
+
const providerHead = Object.keys(states).filter((id) => id !== serverHeadProviderId).flatMap((id) => states[id]);
|
|
4228
4294
|
const defaults = {
|
|
4229
4295
|
...title ? { title: `<title data-inertia="">${title}</title>` } : {}
|
|
4230
4296
|
};
|
|
4231
|
-
const elements =
|
|
4297
|
+
const elements = serverHead.concat(providerHead).reduce((carry, element) => {
|
|
4232
4298
|
if (element.indexOf("<") === -1) {
|
|
4233
4299
|
return carry;
|
|
4234
4300
|
}
|
|
@@ -4237,7 +4303,7 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4237
4303
|
carry.title = title2 ? `${title2[1]}${titleCallback(title2[2])}${title2[3]}` : element;
|
|
4238
4304
|
return carry;
|
|
4239
4305
|
}
|
|
4240
|
-
const match = element.match(/ data-inertia="[^"]
|
|
4306
|
+
const match = element.match(/ data-inertia=(["'])[^"']+\1/);
|
|
4241
4307
|
if (match) {
|
|
4242
4308
|
carry[match[0]] = element;
|
|
4243
4309
|
} else {
|
|
@@ -4253,6 +4319,7 @@ function createHeadManager(isServer3, titleCallback, onUpdate) {
|
|
|
4253
4319
|
commit();
|
|
4254
4320
|
return {
|
|
4255
4321
|
forceUpdate: commit,
|
|
4322
|
+
updateServerHead,
|
|
4256
4323
|
createProvider: function() {
|
|
4257
4324
|
const id = connect();
|
|
4258
4325
|
return {
|
|
@@ -4904,7 +4971,8 @@ function isContentEditableOrPrevented(event) {
|
|
|
4904
4971
|
}
|
|
4905
4972
|
function shouldIntercept(event) {
|
|
4906
4973
|
const isLink = event.currentTarget.tagName.toLowerCase() === "a";
|
|
4907
|
-
|
|
4974
|
+
const target = isLink ? event.currentTarget.target : "";
|
|
4975
|
+
return !(isContentEditableOrPrevented(event) || isLink && event.altKey || isLink && event.ctrlKey || isLink && event.metaKey || isLink && event.shiftKey || isLink && target !== "" && target !== "_self" || isLink && "button" in event && event.button !== 0);
|
|
4908
4976
|
}
|
|
4909
4977
|
function shouldNavigate(event) {
|
|
4910
4978
|
const isButton = event.currentTarget.tagName.toLowerCase() === "button";
|
|
@@ -4922,17 +4990,17 @@ var settings = {
|
|
|
4922
4990
|
trickle: true,
|
|
4923
4991
|
trickleSpeed: 200,
|
|
4924
4992
|
showSpinner: true,
|
|
4925
|
-
barSelector: '[role="bar"]',
|
|
4926
|
-
spinnerSelector: '[role="spinner"]',
|
|
4993
|
+
barSelector: '.bar, [role="bar"]',
|
|
4994
|
+
spinnerSelector: '.spinner, [role="spinner"]',
|
|
4927
4995
|
parent: "body",
|
|
4928
4996
|
color: "#29d",
|
|
4929
4997
|
includeCSS: true,
|
|
4930
4998
|
popover: null,
|
|
4931
4999
|
template: [
|
|
4932
|
-
'<div class="bar"
|
|
5000
|
+
'<div class="bar">',
|
|
4933
5001
|
'<div class="peg"></div>',
|
|
4934
5002
|
"</div>",
|
|
4935
|
-
'<div class="spinner"
|
|
5003
|
+
'<div class="spinner">',
|
|
4936
5004
|
'<div class="spinner-icon"></div>',
|
|
4937
5005
|
"</div>"
|
|
4938
5006
|
].join("")
|
|
@@ -4947,6 +5015,7 @@ var configure = (options) => {
|
|
|
4947
5015
|
}
|
|
4948
5016
|
progress2 = document.createElement("div");
|
|
4949
5017
|
progress2.id = baseComponentSelector;
|
|
5018
|
+
progress2.setAttribute("aria-hidden", "true");
|
|
4950
5019
|
progress2.innerHTML = settings.template;
|
|
4951
5020
|
if (usePopover) {
|
|
4952
5021
|
progress2.popover = "manual";
|
|
@@ -5502,6 +5571,7 @@ export {
|
|
|
5502
5571
|
partialReloadRequestsSomeProps,
|
|
5503
5572
|
progress,
|
|
5504
5573
|
resetFormFields,
|
|
5574
|
+
resolveServerHead,
|
|
5505
5575
|
resolveUrlMethodPairComponent,
|
|
5506
5576
|
router,
|
|
5507
5577
|
setupProgress,
|