@inertiajs/core 2.2.18 → 2.2.20

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.2.18",
3
+ "version": "2.2.20",
4
4
  "license": "MIT",
5
5
  "description": "A framework for creating server-driven single page apps.",
6
6
  "contributors": [
@@ -54,9 +54,9 @@
54
54
  "@types/node": "^18.19.130",
55
55
  "@types/nprogress": "^0.2.3",
56
56
  "@types/qs": "^6.14.0",
57
- "es-check": "^9.4.4",
57
+ "es-check": "^9.4.5",
58
58
  "esbuild": "^0.25.12",
59
- "esbuild-node-externals": "^1.19.1",
59
+ "esbuild-node-externals": "^1.20.1",
60
60
  "typescript": "^5.9.3"
61
61
  },
62
62
  "scripts": {
@@ -1,3 +1,4 @@
1
1
  export declare const getScrollableParent: (element: HTMLElement | null) => HTMLElement | null;
2
2
  export declare const getElementsInViewportFromCollection: (elements: HTMLElement[], referenceElement?: HTMLElement) => HTMLElement[];
3
3
  export declare const requestAnimationFrame: (cb: () => void, times?: number) => void;
4
+ export declare const getInitialPageFromDOM: <T>(id: string, useScriptElement?: boolean) => T | null;
package/types/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Config } from './config';
2
2
  import { Router } from './router';
3
3
  export { config } from './config';
4
- export { getScrollableParent } from './domUtils';
4
+ export { getInitialPageFromDOM, getScrollableParent } from './domUtils';
5
5
  export { objectToFormData } from './formData';
6
6
  export { formDataToObject } from './formObject';
7
7
  export { default as createHeadManager } from './head';
package/types/page.d.ts CHANGED
@@ -24,6 +24,7 @@ declare class CurrentPage {
24
24
  clear(): void;
25
25
  isCleared(): boolean;
26
26
  get(): Page;
27
+ hasOnceProps(): boolean;
27
28
  merge(data: Partial<Page>): void;
28
29
  setUrlHash(hash: string): void;
29
30
  remember(data: Page['rememberedState']): void;
@@ -37,6 +38,9 @@ declare class CurrentPage {
37
38
  isTheSame(page: Page): boolean;
38
39
  on(event: PageEvent, callback: VoidFunction): VoidFunction;
39
40
  fireEventsFor(event: PageEvent): void;
41
+ mergeOncePropsIntoResponse(response: Page, { force }?: {
42
+ force?: boolean;
43
+ }): void;
40
44
  }
41
45
  export declare const page: CurrentPage;
42
46
  export {};
@@ -1,5 +1,5 @@
1
1
  import { Response } from './response';
2
- import { ActiveVisit, CacheForOption, InFlightPrefetch, InternalActiveVisit, PrefetchedResponse, PrefetchOptions, PrefetchRemovalTimer } from './types';
2
+ import { ActiveVisit, CacheForOption, InFlightPrefetch, InternalActiveVisit, Page, PrefetchedResponse, PrefetchOptions, PrefetchRemovalTimer } from './types';
3
3
  declare class PrefetchedRequests {
4
4
  protected cached: PrefetchedResponse[];
5
5
  protected inFlightRequests: InFlightPrefetch[];
@@ -21,6 +21,8 @@ declare class PrefetchedRequests {
21
21
  findInFlight(params: ActiveVisit): InFlightPrefetch | null;
22
22
  protected withoutPurposePrefetchHeader(params: ActiveVisit): ActiveVisit;
23
23
  protected paramsAreEqual(params1: ActiveVisit, params2: ActiveVisit): boolean;
24
+ updateCachedOncePropsFromCurrentPage(): void;
25
+ protected getShortestOncePropTtl(page: Page): number | null;
24
26
  }
25
27
  export declare const prefetchedRequests: PrefetchedRequests;
26
28
  export {};
@@ -12,6 +12,7 @@ export declare class RequestParams {
12
12
  data(): import("./types").RequestPayload | null;
13
13
  queryParams(): import("./types").RequestPayload;
14
14
  isPartial(): boolean;
15
+ isDeferredPropsRequest(): boolean;
15
16
  onCancelToken(cb: VoidFunction): void;
16
17
  markAsFinished(): void;
17
18
  markAsCancelled({ cancelled, interrupted }: {
@@ -12,6 +12,7 @@ export declare class Response {
12
12
  handle(): Promise<void>;
13
13
  process(): Promise<boolean | void>;
14
14
  mergeParams(params: ActiveVisit): void;
15
+ getPageResponse(): Page;
15
16
  protected handleNonInertiaResponse(): Promise<boolean | void>;
16
17
  protected isInertiaResponse(): boolean;
17
18
  protected hasStatus(status: number): boolean;
package/types/router.d.ts CHANGED
@@ -1,8 +1,10 @@
1
+ import Queue from './queue';
1
2
  import { RequestStream } from './requestStream';
2
3
  import { ActiveVisit, ClientSideVisitOptions, Component, GlobalEvent, GlobalEventNames, GlobalEventResult, InFlightPrefetch, Page, PendingVisit, PendingVisitOptions, PollOptions, PrefetchedResponse, PrefetchOptions, ReloadOptions, RequestPayload, RouterInitParams, UrlMethodPair, VisitCallbacks, VisitHelperOptions, VisitOptions } from './types';
3
4
  export declare class Router {
4
5
  protected syncRequestStream: RequestStream;
5
6
  protected asyncRequestStream: RequestStream;
7
+ protected clientVisitQueue: Queue<Promise<void>>;
6
8
  init<ComponentType = Component>({ initialPage, resolveComponent, swapComponent, }: RouterInitParams<ComponentType>): void;
7
9
  get<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
8
10
  post<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
@@ -10,6 +12,9 @@ export declare class Router {
10
12
  patch<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, data?: T, options?: VisitHelperOptions<T>): void;
11
13
  delete<T extends RequestPayload = RequestPayload>(url: URL | string | UrlMethodPair, options?: Omit<VisitOptions<T>, 'method'>): void;
12
14
  reload<T extends RequestPayload = RequestPayload>(options?: ReloadOptions<T>): void;
15
+ protected doReload<T extends RequestPayload = RequestPayload>(options?: ReloadOptions<T> & {
16
+ deferredProps?: boolean;
17
+ }): void;
13
18
  remember(data: unknown, key?: string): void;
14
19
  restore<T = unknown>(key?: string): T | undefined;
15
20
  on<TEventName extends GlobalEventNames>(type: TEventName, callback: (event: GlobalEvent<TEventName>) => GlobalEventResult<TEventName>): VoidFunction;
@@ -37,6 +42,9 @@ export declare class Router {
37
42
  protected clientVisit<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>, { replace }?: {
38
43
  replace?: boolean;
39
44
  }): void;
45
+ protected performClientVisit<TProps = Page['props']>(params: ClientSideVisitOptions<TProps>, { replace }?: {
46
+ replace?: boolean;
47
+ }): Promise<void>;
40
48
  protected getPrefetchParams(href: string | URL | UrlMethodPair, options: VisitOptions): ActiveVisit;
41
49
  protected getPendingVisit(href: string | URL | UrlMethodPair, options: VisitOptions, pendingVisitOptions?: Partial<PendingVisitOptions>): PendingVisit;
42
50
  protected getVisitEvents(options: VisitOptions): VisitCallbacks;
package/types/scroll.d.ts CHANGED
@@ -3,6 +3,7 @@ export declare class Scroll {
3
3
  static save(): void;
4
4
  protected static regions(): NodeListOf<Element>;
5
5
  static reset(): void;
6
+ static scrollToAnchor(): void;
6
7
  static restore(scrollRegions: ScrollRegion[]): void;
7
8
  static restoreScrollRegions(scrollRegions: ScrollRegion[]): void;
8
9
  static restoreDocument(): void;
package/types/types.d.ts CHANGED
@@ -44,7 +44,7 @@ export type FormDataType<T extends object> = {
44
44
  /**
45
45
  * Uses `0 extends 1 & T` to detect `any` type and prevent infinite recursion.
46
46
  */
47
- export type FormDataKeys<T> = T extends Function | FormDataConvertibleValue ? never : T extends unknown[] ? ArrayFormDataKeys<T> : T extends Record<string, unknown> ? ObjectFormDataKeys<T> : never;
47
+ export type FormDataKeys<T> = T extends Function | FormDataConvertibleValue ? never : T extends unknown[] ? ArrayFormDataKeys<T> : T extends object ? ObjectFormDataKeys<T> : never;
48
48
  /**
49
49
  * Helper type for array form data keys
50
50
  */
@@ -54,8 +54,8 @@ type ArrayFormDataKeys<T extends unknown[]> = number extends T['length'] ? `${nu
54
54
  /**
55
55
  * Helper type for object form data keys
56
56
  */
57
- type ObjectFormDataKeys<T extends Record<string, unknown>> = string extends keyof T ? string : Extract<keyof T, string> | {
58
- [Key in Extract<keyof T, string>]: 0 extends 1 & T[Key] ? never : T[Key] extends FormDataConvertibleValue ? never : T[Key] extends any[] ? `${Key}.${FormDataKeys<T[Key]> & string}` : T[Key] extends Record<string, any> ? `${Key}.${FormDataKeys<T[Key]> & string}` : never;
57
+ type ObjectFormDataKeys<T extends object> = string extends keyof T ? string : Extract<keyof T, string> | {
58
+ [Key in Extract<keyof T, string>]: 0 extends 1 & T[Key] ? never : T[Key] extends FormDataConvertibleValue ? never : T[Key] extends any[] ? `${Key}.${FormDataKeys<T[Key]> & string}` : T[Key] extends Record<string, any> ? `${Key}.${FormDataKeys<T[Key]> & string}` : Exclude<T[Key], null | undefined> extends any[] ? never : Exclude<T[Key], null | undefined> extends Record<string, any> ? `${Key}.${FormDataKeys<Exclude<T[Key], null | undefined>> & string}` : never;
59
59
  }[Extract<keyof T, string>];
60
60
  type PartialFormDataErrors<T> = {
61
61
  [K in string extends keyof T ? string : Extract<keyof FormDataError<T>, string>]?: ErrorValue;
@@ -93,6 +93,10 @@ export interface Page<SharedProps extends PageProps = PageProps> {
93
93
  deepMergeProps?: string[];
94
94
  matchPropsOn?: string[];
95
95
  scrollProps?: Record<keyof PageProps, ScrollProp>;
96
+ onceProps?: Record<string, {
97
+ prop: keyof PageProps;
98
+ expiresAt?: number | null;
99
+ }>;
96
100
  /** @internal */
97
101
  rememberedState: Record<string, unknown>;
98
102
  }
@@ -289,6 +293,7 @@ export type ActiveVisit<T extends RequestPayload = RequestPayload> = PendingVisi
289
293
  export type InternalActiveVisit = ActiveVisit & {
290
294
  onPrefetchResponse?: (response: Response) => void;
291
295
  onPrefetchError?: (error: Error) => void;
296
+ deferredProps?: boolean;
292
297
  };
293
298
  export type VisitId = unknown;
294
299
  export type Component = unknown;
@@ -352,6 +357,7 @@ export type InertiaAppConfig = {
352
357
  preserveEqualProps: boolean;
353
358
  useDataInertiaHeadAttribute: boolean;
354
359
  useDialogForErrorModal: boolean;
360
+ useScriptElementForInitialPage: boolean;
355
361
  };
356
362
  prefetch: {
357
363
  cacheFor: CacheForOption | CacheForOption[];
@@ -381,6 +387,7 @@ export type PrefetchCancellationToken = {
381
387
  export type PrefetchedResponse = PrefetchObject & {
382
388
  staleTimestamp: number;
383
389
  timestamp: number;
390
+ expiresAt: number;
384
391
  singleUse: boolean;
385
392
  inFlight: false;
386
393
  tags: string[];
@@ -423,8 +430,8 @@ export type FormComponentProps = Partial<Pick<Visit, 'headers' | 'queryStringArr
423
430
  export type FormComponentMethods = {
424
431
  clearErrors: (...fields: string[]) => void;
425
432
  resetAndClearErrors: (...fields: string[]) => void;
426
- setError(field: string, value: string): void;
427
- setError(errors: Record<string, string>): void;
433
+ setError(field: string, value: ErrorValue): void;
434
+ setError(errors: Record<string, ErrorValue>): void;
428
435
  reset: (...fields: string[]) => void;
429
436
  submit: () => void;
430
437
  defaults: () => void;
@@ -433,7 +440,7 @@ export type FormComponentMethods = {
433
440
  };
434
441
  export type FormComponentonSubmitCompleteArguments = Pick<FormComponentMethods, 'reset' | 'defaults'>;
435
442
  export type FormComponentState = {
436
- errors: Record<string, string>;
443
+ errors: Record<string, ErrorValue>;
437
444
  hasErrors: boolean;
438
445
  processing: boolean;
439
446
  progress: Progress | null;