@inertiajs/core 2.1.0 → 2.1.2

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/core",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "license": "MIT",
5
5
  "description": "A framework for creating server-driven single page apps.",
6
6
  "contributors": [
package/types/index.d.ts CHANGED
@@ -1,10 +1,11 @@
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';
7
8
  export * from './types';
8
- export { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash } from './url';
9
+ export { hrefToUrl, mergeDataIntoQueryString, urlWithoutHash, isUrlMethodPair } from './url';
9
10
  export { type Router };
10
11
  export declare const router: Router;
@@ -5,9 +5,11 @@ declare class PrefetchedRequests {
5
5
  protected inFlightRequests: InFlightPrefetch[];
6
6
  protected removalTimers: PrefetchRemovalTimer[];
7
7
  protected currentUseId: string | null;
8
- add(params: ActiveVisit, sendFunc: (params: InternalActiveVisit) => void, { cacheFor }: PrefetchOptions): Promise<void> | Promise<Response>;
8
+ add(params: ActiveVisit, sendFunc: (params: InternalActiveVisit) => void, { cacheFor, cacheTags }: PrefetchOptions): Promise<void> | Promise<Response>;
9
9
  removeAll(): void;
10
+ removeByTags(tags: string[]): void;
10
11
  remove(params: ActiveVisit): void;
12
+ protected removeFromInFlight(params: ActiveVisit): void;
11
13
  protected extractStaleValues(cacheFor: PrefetchOptions['cacheFor']): [number, number];
12
14
  protected cacheForToStaleAndExpires(cacheFor: PrefetchOptions['cacheFor']): [CacheForOption, CacheForOption];
13
15
  protected clearTimer(params: ActiveVisit): void;
@@ -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
@@ -1,14 +1,14 @@
1
1
  import { RequestStream } from './requestStream';
2
- import { ActiveVisit, ClientSideVisitOptions, Component, GlobalEvent, GlobalEventNames, GlobalEventResult, InFlightPrefetch, Page, PendingVisit, PendingVisitOptions, PollOptions, PrefetchedResponse, PrefetchOptions, ReloadOptions, RequestPayload, RouterInitParams, Visit, VisitCallbacks, VisitHelperOptions, VisitOptions } from './types';
2
+ import { ActiveVisit, ClientSideVisitOptions, Component, GlobalEvent, GlobalEventNames, GlobalEventResult, InFlightPrefetch, Page, PendingVisit, PendingVisitOptions, PollOptions, PrefetchedResponse, PrefetchOptions, ReloadOptions, RequestPayload, RouterInitParams, UrlMethodPair, VisitCallbacks, VisitHelperOptions, VisitOptions } from './types';
3
3
  export declare class Router {
4
4
  protected syncRequestStream: RequestStream;
5
5
  protected asyncRequestStream: RequestStream;
6
6
  init({ initialPage, resolveComponent, swapComponent }: RouterInitParams): void;
7
- get<T extends RequestPayload = RequestPayload>(url: URL | string, data?: T, options?: VisitHelperOptions<T>): void;
8
- post<T extends RequestPayload = RequestPayload>(url: URL | string, data?: T, options?: VisitHelperOptions<T>): void;
9
- put<T extends RequestPayload = RequestPayload>(url: URL | string, data?: T, options?: VisitHelperOptions<T>): void;
10
- patch<T extends RequestPayload = RequestPayload>(url: URL | string, data?: T, options?: VisitHelperOptions<T>): void;
11
- delete<T extends RequestPayload = RequestPayload>(url: URL | string, options?: Omit<VisitOptions<T>, 'method'>): void;
7
+ get<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
8
+ post<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
9
+ put<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
10
+ patch<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
11
+ delete<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, options?: Omit<VisitOptions<T>, 'method'>): void;
12
12
  reload<T extends RequestPayload = RequestPayload>(options?: ReloadOptions<T>): void;
13
13
  remember(data: unknown, key?: string): void;
14
14
  restore(key?: string): unknown;
@@ -19,22 +19,23 @@ export declare class Router {
19
19
  stop: VoidFunction;
20
20
  start: VoidFunction;
21
21
  };
22
- visit<T extends RequestPayload = RequestPayload>(href: string | URL, options?: VisitOptions<T>): void;
23
- getCached(href: string | URL, options?: VisitOptions): InFlightPrefetch | PrefetchedResponse | null;
24
- flush(href: string | URL, options?: VisitOptions): void;
22
+ visit<T extends RequestPayload = RequestPayload>(href: string | URL | UrlMethodPair, options?: VisitOptions<T>): void;
23
+ getCached(href: string | URL | UrlMethodPair, options?: VisitOptions): InFlightPrefetch | PrefetchedResponse | null;
24
+ flush(href: string | URL | UrlMethodPair, options?: VisitOptions): void;
25
25
  flushAll(): void;
26
- getPrefetching(href: string | URL, options?: VisitOptions): InFlightPrefetch | PrefetchedResponse | null;
27
- prefetch(href: string | URL, options: Partial<Visit<RequestPayload> & VisitCallbacks> | undefined, { cacheFor }: PrefetchOptions): void;
26
+ flushByCacheTags(tags: string | string[]): void;
27
+ getPrefetching(href: string | URL | UrlMethodPair, options?: VisitOptions): InFlightPrefetch | PrefetchedResponse | null;
28
+ prefetch(href: string | URL | UrlMethodPair, options?: VisitOptions, prefetchOptions?: Partial<PrefetchOptions>): void;
28
29
  clearHistory(): void;
29
30
  decryptHistory(): Promise<Page>;
30
31
  resolveComponent(component: string): Promise<Component>;
31
- replace(params: ClientSideVisitOptions): void;
32
- push(params: ClientSideVisitOptions): void;
33
- protected clientVisit(params: ClientSideVisitOptions, { replace }?: {
32
+ replace<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>): void;
33
+ push<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>): void;
34
+ protected clientVisit<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>, { replace }?: {
34
35
  replace?: boolean;
35
36
  }): void;
36
- protected getPrefetchParams(href: string | URL, options: VisitOptions): ActiveVisit;
37
- protected getPendingVisit(href: string | URL, options: VisitOptions, pendingVisitOptions?: Partial<PendingVisitOptions>): PendingVisit;
37
+ protected getPrefetchParams(href: string | URL | UrlMethodPair, options: VisitOptions): ActiveVisit;
38
+ protected getPendingVisit(href: string | URL | UrlMethodPair, options: VisitOptions, pendingVisitOptions?: Partial<PendingVisitOptions>): PendingVisit;
38
39
  protected getVisitEvents(options: VisitOptions): VisitCallbacks;
39
40
  protected loadDeferredProps(): void;
40
41
  }
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 Errors = Record<string, string>;
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
- } | Blob | FormDataEntryValue | Date | boolean | number | null | undefined;
13
- export type FormDataKeys<T extends Record<any, any>> = T extends T ? keyof T extends infer Key extends Extract<keyof T, string> ? Key extends Key ? T[Key] extends Record<any, any> ? `${Key}.${FormDataKeys<T[Key]>}` | Key : Key : never : never : never;
14
- export type FormDataValues<T extends Record<any, any>, K extends FormDataKeys<T>> = K extends `${infer P}.${infer Rest}` ? P extends keyof T ? Rest extends FormDataKeys<T[P]> ? FormDataValues<T[P], Rest> : never : never : K extends keyof T ? T[K] : never;
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: Page['props']) => Page['props']) | Page['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;
@@ -80,19 +116,20 @@ export type Visit<T extends RequestPayload = RequestPayload> = {
80
116
  fresh: boolean;
81
117
  reset: string[];
82
118
  preserveUrl: boolean;
119
+ invalidateCacheTags: string | string[];
83
120
  };
84
- export type GlobalEventsMap = {
121
+ export type GlobalEventsMap<T extends RequestPayload = RequestPayload> = {
85
122
  before: {
86
- parameters: [PendingVisit];
123
+ parameters: [PendingVisit<T>];
87
124
  details: {
88
- visit: PendingVisit;
125
+ visit: PendingVisit<T>;
89
126
  };
90
127
  result: boolean | void;
91
128
  };
92
129
  start: {
93
- parameters: [PendingVisit];
130
+ parameters: [PendingVisit<T>];
94
131
  details: {
95
- visit: PendingVisit;
132
+ visit: PendingVisit<T>;
96
133
  };
97
134
  result: void;
98
135
  };
@@ -104,9 +141,9 @@ export type GlobalEventsMap = {
104
141
  result: void;
105
142
  };
106
143
  finish: {
107
- parameters: [ActiveVisit];
144
+ parameters: [ActiveVisit<T>];
108
145
  details: {
109
- visit: ActiveVisit;
146
+ visit: ActiveVisit<T>;
110
147
  };
111
148
  result: void;
112
149
  };
@@ -151,48 +188,48 @@ export type GlobalEventsMap = {
151
188
  result: boolean | void;
152
189
  };
153
190
  prefetched: {
154
- parameters: [AxiosResponse, ActiveVisit];
191
+ parameters: [AxiosResponse, ActiveVisit<T>];
155
192
  details: {
156
193
  response: AxiosResponse;
157
194
  fetchedAt: number;
158
- visit: ActiveVisit;
195
+ visit: ActiveVisit<T>;
159
196
  };
160
197
  result: void;
161
198
  };
162
199
  prefetching: {
163
- parameters: [ActiveVisit];
200
+ parameters: [ActiveVisit<T>];
164
201
  details: {
165
- visit: ActiveVisit;
202
+ visit: ActiveVisit<T>;
166
203
  };
167
204
  result: void;
168
205
  };
169
206
  };
170
207
  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>;
208
+ export type GlobalEventNames<T extends RequestPayload = RequestPayload> = keyof GlobalEventsMap<T>;
209
+ export type GlobalEvent<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = CustomEvent<GlobalEventDetails<TEventName, T>>;
210
+ export type GlobalEventParameters<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['parameters'];
211
+ export type GlobalEventResult<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['result'];
212
+ export type GlobalEventDetails<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = GlobalEventsMap<T>[TEventName]['details'];
213
+ export type GlobalEventTrigger<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = (...params: GlobalEventParameters<TEventName, T>) => GlobalEventResult<TEventName, T>;
214
+ export type GlobalEventCallback<TEventName extends GlobalEventNames<T>, T extends RequestPayload = RequestPayload> = (...params: GlobalEventParameters<TEventName, T>) => GlobalEventResult<TEventName, T>;
178
215
  export type InternalEvent = 'missingHistoryItem' | 'loadDeferredProps';
179
- export type VisitCallbacks = {
216
+ export type VisitCallbacks<T extends RequestPayload = RequestPayload> = {
180
217
  onCancelToken: {
181
218
  ({ cancel }: {
182
219
  cancel: VoidFunction;
183
220
  }): void;
184
221
  };
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'>;
222
+ onBefore: GlobalEventCallback<'before', T>;
223
+ onStart: GlobalEventCallback<'start', T>;
224
+ onProgress: GlobalEventCallback<'progress', T>;
225
+ onFinish: GlobalEventCallback<'finish', T>;
226
+ onCancel: GlobalEventCallback<'cancel', T>;
227
+ onSuccess: GlobalEventCallback<'success', T>;
228
+ onError: GlobalEventCallback<'error', T>;
229
+ onPrefetched: GlobalEventCallback<'prefetched', T>;
230
+ onPrefetching: GlobalEventCallback<'prefetching', T>;
194
231
  };
195
- export type VisitOptions<T extends RequestPayload = RequestPayload> = Partial<Visit<T> & VisitCallbacks>;
232
+ export type VisitOptions<T extends RequestPayload = RequestPayload> = Partial<Visit<T> & VisitCallbacks<T>>;
196
233
  export type ReloadOptions<T extends RequestPayload = RequestPayload> = Omit<VisitOptions<T>, 'preserveScroll' | 'preserveState'>;
197
234
  export type PollOptions = {
198
235
  keepAlive?: boolean;
@@ -210,10 +247,11 @@ export type PendingVisitOptions = {
210
247
  cancelled: boolean;
211
248
  interrupted: boolean;
212
249
  };
213
- export type PendingVisit = Visit & PendingVisitOptions;
214
- export type ActiveVisit = PendingVisit & Required<VisitOptions>;
250
+ export type PendingVisit<T extends RequestPayload = RequestPayload> = Visit<T> & PendingVisitOptions;
251
+ export type ActiveVisit<T extends RequestPayload = RequestPayload> = PendingVisit<T> & Required<VisitOptions<T>>;
215
252
  export type InternalActiveVisit = ActiveVisit & {
216
253
  onPrefetchResponse?: (response: Response) => void;
254
+ onPrefetchError?: (error: Error) => void;
217
255
  };
218
256
  export type VisitId = unknown;
219
257
  export type Component = unknown;
@@ -225,7 +263,16 @@ export type LinkPrefetchOption = 'mount' | 'hover' | 'click';
225
263
  export type CacheForOption = number | string;
226
264
  export type PrefetchOptions = {
227
265
  cacheFor: CacheForOption | CacheForOption[];
266
+ cacheTags: string | string[];
228
267
  };
268
+ export interface LinkComponentBaseProps extends Partial<Pick<Visit<RequestPayload>, 'data' | 'method' | 'replace' | 'preserveScroll' | 'preserveState' | 'only' | 'except' | 'headers' | 'queryStringArrayFormat' | 'async'> & Omit<VisitCallbacks, 'onCancelToken'> & {
269
+ href: string | UrlMethodPair;
270
+ onCancelToken: (cancelToken: import('axios').CancelTokenSource) => void;
271
+ prefetch: boolean | LinkPrefetchOption | LinkPrefetchOption[];
272
+ cacheFor: CacheForOption | CacheForOption[];
273
+ cacheTags: string | string[];
274
+ }> {
275
+ }
229
276
  type PrefetchObject = {
230
277
  params: ActiveVisit;
231
278
  response: Promise<Response>;
@@ -243,6 +290,7 @@ export type PrefetchedResponse = PrefetchObject & {
243
290
  timestamp: number;
244
291
  singleUse: boolean;
245
292
  inFlight: false;
293
+ tags: string[];
246
294
  };
247
295
  export type PrefetchRemovalTimer = {
248
296
  params: ActiveVisit;
@@ -263,23 +311,32 @@ export type ProgressSettings = {
263
311
  includeCSS: boolean;
264
312
  color: string;
265
313
  };
314
+ export type UrlMethodPair = {
315
+ url: string;
316
+ method: Method;
317
+ };
266
318
  export type FormComponentOptions = Pick<VisitOptions, 'preserveScroll' | 'preserveState' | 'preserveUrl' | 'replace' | 'only' | 'except' | 'reset'>;
267
- export type FormComponentProps = Partial<Pick<Visit, 'method' | 'headers' | 'queryStringArrayFormat' | 'errorBag' | 'showProgress'> & Omit<VisitCallbacks, 'onPrefetched' | 'onPrefetching'>> & {
268
- action?: string | {
269
- url: string;
270
- method: Method;
271
- };
319
+ export type FormComponentProps = Partial<Pick<Visit, 'headers' | 'queryStringArrayFormat' | 'errorBag' | 'showProgress' | 'invalidateCacheTags'> & Omit<VisitCallbacks, 'onPrefetched' | 'onPrefetching'>> & {
320
+ method?: Method | Uppercase<Method>;
321
+ action?: string | UrlMethodPair;
272
322
  transform?: (data: Record<string, FormDataConvertible>) => Record<string, FormDataConvertible>;
273
323
  options?: FormComponentOptions;
324
+ onSubmitComplete?: (props: FormComponentonSubmitCompleteArguments) => void;
325
+ disableWhileProcessing?: boolean;
326
+ resetOnSuccess?: boolean | string[];
327
+ resetOnError?: boolean | string[];
328
+ setDefaultsOnSuccess?: boolean;
274
329
  };
275
330
  export type FormComponentMethods = {
276
331
  clearErrors: (...fields: string[]) => void;
277
332
  resetAndClearErrors: (...fields: string[]) => void;
278
333
  setError(field: string, value: string): void;
279
334
  setError(errors: Record<string, string>): void;
280
- reset: () => void;
335
+ reset: (...fields: string[]) => void;
281
336
  submit: () => void;
337
+ defaults: () => void;
282
338
  };
339
+ export type FormComponentonSubmitCompleteArguments = Pick<FormComponentMethods, 'reset' | 'defaults'>;
283
340
  export type FormComponentState = {
284
341
  errors: Record<string, string>;
285
342
  hasErrors: boolean;
package/types/url.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { FormDataConvertible, Method, RequestPayload, VisitOptions } from './types';
1
+ import { FormDataConvertible, Method, RequestPayload, UrlMethodPair, 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
- export declare function mergeDataIntoQueryString(method: Method, href: URL | string, data: Record<string, FormDataConvertible>, qsArrayFormat?: 'indices' | 'brackets'): [string, Record<string, FormDataConvertible>];
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 declare function isUrlMethodPair(href: unknown): href is UrlMethodPair;
10
+ export {};