@inertiajs/core 2.1.0 → 2.1.1
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.esm.js +157 -8
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +157 -8
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/prefetched.d.ts +1 -0
- package/types/requestParams.d.ts +1 -0
- package/types/resetFormFields.d.ts +1 -0
- package/types/router.d.ts +4 -4
- package/types/types.d.ts +92 -40
- package/types/url.d.ts +3 -1
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Router } from './router';
|
|
2
2
|
export { objectToFormData } from './formData';
|
|
3
3
|
export { formDataToObject } from './formObject';
|
|
4
|
+
export { resetFormFields } from './resetFormFields';
|
|
4
5
|
export { default as createHeadManager } from './head';
|
|
5
6
|
export { hide as hideProgress, reveal as revealProgress, default as setupProgress } from './progress';
|
|
6
7
|
export { default as shouldIntercept } from './shouldIntercept';
|
package/types/prefetched.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ declare class PrefetchedRequests {
|
|
|
8
8
|
add(params: ActiveVisit, sendFunc: (params: InternalActiveVisit) => void, { cacheFor }: PrefetchOptions): Promise<void> | Promise<Response>;
|
|
9
9
|
removeAll(): void;
|
|
10
10
|
remove(params: ActiveVisit): void;
|
|
11
|
+
protected removeFromInFlight(params: ActiveVisit): void;
|
|
11
12
|
protected extractStaleValues(cacheFor: PrefetchOptions['cacheFor']): [number, number];
|
|
12
13
|
protected cacheForToStaleAndExpires(cacheFor: PrefetchOptions['cacheFor']): [CacheForOption, CacheForOption];
|
|
13
14
|
protected clearTimer(params: ActiveVisit): void;
|
package/types/requestParams.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare class RequestParams {
|
|
|
23
23
|
onStart(): void;
|
|
24
24
|
onPrefetching(): void;
|
|
25
25
|
onPrefetchResponse(response: Response): void;
|
|
26
|
+
onPrefetchError(error: Error): void;
|
|
26
27
|
all(): InternalActiveVisit;
|
|
27
28
|
headers(): AxiosRequestConfig['headers'];
|
|
28
29
|
setPreserveOptions(page: Page): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resetFormFields(formElement: HTMLFormElement, defaults: FormData, fieldNames?: string[]): void;
|
package/types/router.d.ts
CHANGED
|
@@ -24,13 +24,13 @@ export declare class Router {
|
|
|
24
24
|
flush(href: string | URL, options?: VisitOptions): void;
|
|
25
25
|
flushAll(): void;
|
|
26
26
|
getPrefetching(href: string | URL, options?: VisitOptions): InFlightPrefetch | PrefetchedResponse | null;
|
|
27
|
-
prefetch(href: string | URL, options: Partial<Visit<RequestPayload> & VisitCallbacks
|
|
27
|
+
prefetch(href: string | URL, options: Partial<Visit<RequestPayload> & VisitCallbacks<RequestPayload>> | undefined, { cacheFor }: PrefetchOptions): void;
|
|
28
28
|
clearHistory(): void;
|
|
29
29
|
decryptHistory(): Promise<Page>;
|
|
30
30
|
resolveComponent(component: string): Promise<Component>;
|
|
31
|
-
replace(params: ClientSideVisitOptions): void;
|
|
32
|
-
push(params: ClientSideVisitOptions): void;
|
|
33
|
-
protected clientVisit(params: ClientSideVisitOptions
|
|
31
|
+
replace<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>): void;
|
|
32
|
+
push<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>): void;
|
|
33
|
+
protected clientVisit<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>, { replace }?: {
|
|
34
34
|
replace?: boolean;
|
|
35
35
|
}): void;
|
|
36
36
|
protected getPrefetchParams(href: string | URL, options: VisitOptions): ActiveVisit;
|
package/types/types.d.ts
CHANGED
|
@@ -5,13 +5,49 @@ declare module 'axios' {
|
|
|
5
5
|
percentage: number | undefined;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
export type
|
|
8
|
+
export type DefaultInertiaConfig = {
|
|
9
|
+
errorValueType: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Designed to allow overriding of some core types using TypeScript
|
|
13
|
+
* interface declaration merging.
|
|
14
|
+
*
|
|
15
|
+
* @see {@link DefaultInertiaConfig} for keys to override
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* declare module '@inertiajs/core' {
|
|
19
|
+
* export interface InertiaConfig {
|
|
20
|
+
* errorValueType: string[]
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export interface InertiaConfig {
|
|
26
|
+
}
|
|
27
|
+
export type InertiaConfigFor<Key extends keyof DefaultInertiaConfig> = Key extends keyof InertiaConfig ? InertiaConfig[Key] : DefaultInertiaConfig[Key];
|
|
28
|
+
export type ErrorValue = InertiaConfigFor<'errorValueType'>;
|
|
29
|
+
export type Errors = Record<string, ErrorValue>;
|
|
9
30
|
export type ErrorBag = Record<string, Errors>;
|
|
31
|
+
export type FormDataConvertibleValue = Blob | FormDataEntryValue | Date | boolean | number | null | undefined;
|
|
10
32
|
export type FormDataConvertible = Array<FormDataConvertible> | {
|
|
11
33
|
[key: string]: FormDataConvertible;
|
|
12
|
-
} |
|
|
13
|
-
export type
|
|
14
|
-
|
|
34
|
+
} | FormDataConvertibleValue;
|
|
35
|
+
export type FormDataType<T extends object> = {
|
|
36
|
+
[K in keyof T]: T[K] extends FormDataConvertibleValue ? T[K] : T[K] extends (...args: unknown[]) => unknown ? never : T[K] extends object | Array<unknown> ? FormDataType<T[K]> : never;
|
|
37
|
+
};
|
|
38
|
+
export type FormDataKeys<T> = T extends Function | FormDataConvertibleValue ? never : T extends Array<unknown> ? number extends T['length'] ? `${number}` | `${number}.${FormDataKeys<T[number]>}` : Extract<keyof T, `${number}`> | {
|
|
39
|
+
[Key in Extract<keyof T, `${number}`>]: `${Key & string}.${FormDataKeys<T[Key & string]> & string}`;
|
|
40
|
+
}[Extract<keyof T, `${number}`>] : string extends keyof T ? string : Extract<keyof T, string> | {
|
|
41
|
+
[Key in Extract<keyof T, string>]: `${Key}.${FormDataKeys<T[Key]> & string}`;
|
|
42
|
+
}[Extract<keyof T, string>];
|
|
43
|
+
type PartialFormDataErrors<T> = {
|
|
44
|
+
[K in string extends keyof T ? string : Extract<keyof FormDataError<T>, string>]?: ErrorValue;
|
|
45
|
+
};
|
|
46
|
+
export type FormDataErrors<T> = PartialFormDataErrors<T> & {
|
|
47
|
+
[K in keyof PartialFormDataErrors<T>]: NonNullable<PartialFormDataErrors<T>[K]>;
|
|
48
|
+
};
|
|
49
|
+
export type FormDataValues<T, K extends FormDataKeys<T>> = K extends `${infer P}.${infer Rest}` ? T extends unknown[] ? P extends `${infer I extends number}` ? Rest extends FormDataKeys<T[I]> ? FormDataValues<T[I], Rest> : never : never : P extends keyof T ? Rest extends FormDataKeys<T[P]> ? FormDataValues<T[P], Rest> : never : never : K extends keyof T ? T[K] : T extends unknown[] ? T[K & number] : never;
|
|
50
|
+
export type FormDataError<T> = Partial<Record<FormDataKeys<T>, ErrorValue>>;
|
|
15
51
|
export type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';
|
|
16
52
|
export type RequestPayload = Record<string, FormDataConvertible> | FormData;
|
|
17
53
|
export interface PageProps {
|
|
@@ -38,17 +74,17 @@ export type ScrollRegion = {
|
|
|
38
74
|
top: number;
|
|
39
75
|
left: number;
|
|
40
76
|
};
|
|
41
|
-
export interface ClientSideVisitOptions {
|
|
77
|
+
export interface ClientSideVisitOptions<TProps = Page['props']> {
|
|
42
78
|
component?: Page['component'];
|
|
43
79
|
url?: Page['url'];
|
|
44
|
-
props?: ((props:
|
|
80
|
+
props?: ((props: TProps) => PageProps) | PageProps;
|
|
45
81
|
clearHistory?: Page['clearHistory'];
|
|
46
82
|
encryptHistory?: Page['encryptHistory'];
|
|
47
83
|
preserveScroll?: VisitOptions['preserveScroll'];
|
|
48
84
|
preserveState?: VisitOptions['preserveState'];
|
|
49
85
|
errorBag?: string | null;
|
|
50
86
|
onError?: (errors: Errors) => void;
|
|
51
|
-
onFinish?: (visit: ClientSideVisitOptions) => void;
|
|
87
|
+
onFinish?: (visit: ClientSideVisitOptions<TProps>) => void;
|
|
52
88
|
onSuccess?: (page: Page) => void;
|
|
53
89
|
}
|
|
54
90
|
export type PageResolver = (name: string) => Component;
|
|
@@ -81,18 +117,18 @@ export type Visit<T extends RequestPayload = RequestPayload> = {
|
|
|
81
117
|
reset: string[];
|
|
82
118
|
preserveUrl: boolean;
|
|
83
119
|
};
|
|
84
|
-
export type GlobalEventsMap = {
|
|
120
|
+
export type GlobalEventsMap<T extends RequestPayload = RequestPayload> = {
|
|
85
121
|
before: {
|
|
86
|
-
parameters: [PendingVisit];
|
|
122
|
+
parameters: [PendingVisit<T>];
|
|
87
123
|
details: {
|
|
88
|
-
visit: PendingVisit
|
|
124
|
+
visit: PendingVisit<T>;
|
|
89
125
|
};
|
|
90
126
|
result: boolean | void;
|
|
91
127
|
};
|
|
92
128
|
start: {
|
|
93
|
-
parameters: [PendingVisit];
|
|
129
|
+
parameters: [PendingVisit<T>];
|
|
94
130
|
details: {
|
|
95
|
-
visit: PendingVisit
|
|
131
|
+
visit: PendingVisit<T>;
|
|
96
132
|
};
|
|
97
133
|
result: void;
|
|
98
134
|
};
|
|
@@ -104,9 +140,9 @@ export type GlobalEventsMap = {
|
|
|
104
140
|
result: void;
|
|
105
141
|
};
|
|
106
142
|
finish: {
|
|
107
|
-
parameters: [ActiveVisit];
|
|
143
|
+
parameters: [ActiveVisit<T>];
|
|
108
144
|
details: {
|
|
109
|
-
visit: ActiveVisit
|
|
145
|
+
visit: ActiveVisit<T>;
|
|
110
146
|
};
|
|
111
147
|
result: void;
|
|
112
148
|
};
|
|
@@ -151,48 +187,48 @@ export type GlobalEventsMap = {
|
|
|
151
187
|
result: boolean | void;
|
|
152
188
|
};
|
|
153
189
|
prefetched: {
|
|
154
|
-
parameters: [AxiosResponse, ActiveVisit];
|
|
190
|
+
parameters: [AxiosResponse, ActiveVisit<T>];
|
|
155
191
|
details: {
|
|
156
192
|
response: AxiosResponse;
|
|
157
193
|
fetchedAt: number;
|
|
158
|
-
visit: ActiveVisit
|
|
194
|
+
visit: ActiveVisit<T>;
|
|
159
195
|
};
|
|
160
196
|
result: void;
|
|
161
197
|
};
|
|
162
198
|
prefetching: {
|
|
163
|
-
parameters: [ActiveVisit];
|
|
199
|
+
parameters: [ActiveVisit<T>];
|
|
164
200
|
details: {
|
|
165
|
-
visit: ActiveVisit
|
|
201
|
+
visit: ActiveVisit<T>;
|
|
166
202
|
};
|
|
167
203
|
result: void;
|
|
168
204
|
};
|
|
169
205
|
};
|
|
170
206
|
export type PageEvent = 'newComponent' | 'firstLoad';
|
|
171
|
-
export type GlobalEventNames = keyof GlobalEventsMap
|
|
172
|
-
export type GlobalEvent<TEventName extends GlobalEventNames> = CustomEvent<GlobalEventDetails<TEventName>>;
|
|
173
|
-
export type GlobalEventParameters<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['parameters'];
|
|
174
|
-
export type GlobalEventResult<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['result'];
|
|
175
|
-
export type GlobalEventDetails<TEventName extends GlobalEventNames> = GlobalEventsMap[TEventName]['details'];
|
|
176
|
-
export type GlobalEventTrigger<TEventName extends GlobalEventNames> = (...params: GlobalEventParameters<TEventName>) => GlobalEventResult<TEventName>;
|
|
177
|
-
export type GlobalEventCallback<TEventName extends GlobalEventNames> = (...params: GlobalEventParameters<TEventName>) => GlobalEventResult<TEventName>;
|
|
207
|
+
export type GlobalEventNames<T extends RequestPayload = RequestPayload> = keyof GlobalEventsMap<T>;
|
|
208
|
+
export type GlobalEvent<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = CustomEvent<GlobalEventDetails<TEventName, T>>;
|
|
209
|
+
export type GlobalEventParameters<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['parameters'];
|
|
210
|
+
export type GlobalEventResult<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['result'];
|
|
211
|
+
export type GlobalEventDetails<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['details'];
|
|
212
|
+
export type GlobalEventTrigger<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = (...params: GlobalEventParameters<TEventName, T>) => GlobalEventResult<TEventName, T>;
|
|
213
|
+
export type GlobalEventCallback<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = (...params: GlobalEventParameters<TEventName, T>) => GlobalEventResult<TEventName, T>;
|
|
178
214
|
export type InternalEvent = 'missingHistoryItem' | 'loadDeferredProps';
|
|
179
|
-
export type VisitCallbacks = {
|
|
215
|
+
export type VisitCallbacks<T extends RequestPayload = RequestPayload> = {
|
|
180
216
|
onCancelToken: {
|
|
181
217
|
({ cancel }: {
|
|
182
218
|
cancel: VoidFunction;
|
|
183
219
|
}): void;
|
|
184
220
|
};
|
|
185
|
-
onBefore: GlobalEventCallback<'before'>;
|
|
186
|
-
onStart: GlobalEventCallback<'start'>;
|
|
187
|
-
onProgress: GlobalEventCallback<'progress'>;
|
|
188
|
-
onFinish: GlobalEventCallback<'finish'>;
|
|
189
|
-
onCancel: GlobalEventCallback<'cancel'>;
|
|
190
|
-
onSuccess: GlobalEventCallback<'success'>;
|
|
191
|
-
onError: GlobalEventCallback<'error'>;
|
|
192
|
-
onPrefetched: GlobalEventCallback<'prefetched'>;
|
|
193
|
-
onPrefetching: GlobalEventCallback<'prefetching'>;
|
|
221
|
+
onBefore: GlobalEventCallback<'before', T>;
|
|
222
|
+
onStart: GlobalEventCallback<'start', T>;
|
|
223
|
+
onProgress: GlobalEventCallback<'progress', T>;
|
|
224
|
+
onFinish: GlobalEventCallback<'finish', T>;
|
|
225
|
+
onCancel: GlobalEventCallback<'cancel', T>;
|
|
226
|
+
onSuccess: GlobalEventCallback<'success', T>;
|
|
227
|
+
onError: GlobalEventCallback<'error', T>;
|
|
228
|
+
onPrefetched: GlobalEventCallback<'prefetched', T>;
|
|
229
|
+
onPrefetching: GlobalEventCallback<'prefetching', T>;
|
|
194
230
|
};
|
|
195
|
-
export type VisitOptions<T extends RequestPayload = RequestPayload> = Partial<Visit<T> & VisitCallbacks
|
|
231
|
+
export type VisitOptions<T extends RequestPayload = RequestPayload> = Partial<Visit<T> & VisitCallbacks<T>>;
|
|
196
232
|
export type ReloadOptions<T extends RequestPayload = RequestPayload> = Omit<VisitOptions<T>, 'preserveScroll' | 'preserveState'>;
|
|
197
233
|
export type PollOptions = {
|
|
198
234
|
keepAlive?: boolean;
|
|
@@ -210,10 +246,11 @@ export type PendingVisitOptions = {
|
|
|
210
246
|
cancelled: boolean;
|
|
211
247
|
interrupted: boolean;
|
|
212
248
|
};
|
|
213
|
-
export type PendingVisit = Visit & PendingVisitOptions;
|
|
214
|
-
export type ActiveVisit = PendingVisit & Required<VisitOptions
|
|
249
|
+
export type PendingVisit<T extends RequestPayload = RequestPayload> = Visit<T> & PendingVisitOptions;
|
|
250
|
+
export type ActiveVisit<T extends RequestPayload = RequestPayload> = PendingVisit<T> & Required<VisitOptions<T>>;
|
|
215
251
|
export type InternalActiveVisit = ActiveVisit & {
|
|
216
252
|
onPrefetchResponse?: (response: Response) => void;
|
|
253
|
+
onPrefetchError?: (error: Error) => void;
|
|
217
254
|
};
|
|
218
255
|
export type VisitId = unknown;
|
|
219
256
|
export type Component = unknown;
|
|
@@ -226,6 +263,16 @@ export type CacheForOption = number | string;
|
|
|
226
263
|
export type PrefetchOptions = {
|
|
227
264
|
cacheFor: CacheForOption | CacheForOption[];
|
|
228
265
|
};
|
|
266
|
+
export interface LinkComponentBaseProps extends Partial<Pick<Visit<RequestPayload>, 'data' | 'method' | 'replace' | 'preserveScroll' | 'preserveState' | 'only' | 'except' | 'headers' | 'queryStringArrayFormat' | 'async'> & Omit<VisitCallbacks, 'onCancelToken'> & {
|
|
267
|
+
href: string | {
|
|
268
|
+
url: string;
|
|
269
|
+
method: Method;
|
|
270
|
+
};
|
|
271
|
+
onCancelToken: (cancelToken: import('axios').CancelTokenSource) => void;
|
|
272
|
+
prefetch: boolean | LinkPrefetchOption | LinkPrefetchOption[];
|
|
273
|
+
cacheFor: CacheForOption | CacheForOption[];
|
|
274
|
+
}> {
|
|
275
|
+
}
|
|
229
276
|
type PrefetchObject = {
|
|
230
277
|
params: ActiveVisit;
|
|
231
278
|
response: Promise<Response>;
|
|
@@ -264,22 +311,27 @@ export type ProgressSettings = {
|
|
|
264
311
|
color: string;
|
|
265
312
|
};
|
|
266
313
|
export type FormComponentOptions = Pick<VisitOptions, 'preserveScroll' | 'preserveState' | 'preserveUrl' | 'replace' | 'only' | 'except' | 'reset'>;
|
|
267
|
-
export type FormComponentProps = Partial<Pick<Visit, '
|
|
314
|
+
export type FormComponentProps = Partial<Pick<Visit, 'headers' | 'queryStringArrayFormat' | 'errorBag' | 'showProgress'> & Omit<VisitCallbacks, 'onPrefetched' | 'onPrefetching'>> & {
|
|
315
|
+
method?: Method | Uppercase<Method>;
|
|
268
316
|
action?: string | {
|
|
269
317
|
url: string;
|
|
270
318
|
method: Method;
|
|
271
319
|
};
|
|
272
320
|
transform?: (data: Record<string, FormDataConvertible>) => Record<string, FormDataConvertible>;
|
|
273
321
|
options?: FormComponentOptions;
|
|
322
|
+
onSubmitComplete?: (props: FormComponentonSubmitCompleteArguments) => void;
|
|
323
|
+
disableWhileProcessing?: boolean;
|
|
274
324
|
};
|
|
275
325
|
export type FormComponentMethods = {
|
|
276
326
|
clearErrors: (...fields: string[]) => void;
|
|
277
327
|
resetAndClearErrors: (...fields: string[]) => void;
|
|
278
328
|
setError(field: string, value: string): void;
|
|
279
329
|
setError(errors: Record<string, string>): void;
|
|
280
|
-
reset: () => void;
|
|
330
|
+
reset: (...fields: string[]) => void;
|
|
281
331
|
submit: () => void;
|
|
332
|
+
defaults: () => void;
|
|
282
333
|
};
|
|
334
|
+
export type FormComponentonSubmitCompleteArguments = Pick<FormComponentMethods, 'reset' | 'defaults'>;
|
|
283
335
|
export type FormComponentState = {
|
|
284
336
|
errors: Record<string, string>;
|
|
285
337
|
hasErrors: boolean;
|
package/types/url.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { FormDataConvertible, Method, RequestPayload, VisitOptions } from './types';
|
|
2
2
|
export declare function hrefToUrl(href: string | URL): URL;
|
|
3
3
|
export declare const transformUrlAndData: (href: string | URL, data: RequestPayload, method: Method, forceFormData: VisitOptions['forceFormData'], queryStringArrayFormat: VisitOptions['queryStringArrayFormat']) => [URL, RequestPayload];
|
|
4
|
-
|
|
4
|
+
type MergeDataIntoQueryStringDataReturnType<T extends RequestPayload> = T extends Record<string, FormDataConvertible> ? Record<string, FormDataConvertible> : RequestPayload;
|
|
5
|
+
export declare function mergeDataIntoQueryString<T extends RequestPayload>(method: Method, href: URL | string, data: T, qsArrayFormat?: 'indices' | 'brackets'): [string, MergeDataIntoQueryStringDataReturnType<T>];
|
|
5
6
|
export declare function urlWithoutHash(url: URL | Location): URL;
|
|
6
7
|
export declare const setHashIfSameUrl: (originUrl: URL | Location, destinationUrl: URL | Location) => void;
|
|
7
8
|
export declare const isSameUrlWithoutHash: (url1: URL | Location, url2: URL | Location) => boolean;
|
|
9
|
+
export {};
|