Repository: inertiajs/inertia Branch: master Commit: c2e81025e817 Files: 1604 Total size: 2.9 MB Directory structure: gitextract_nfe091gr/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── ISSUE_TEMPLATE/ │ │ ├── 0-bug-report.yml │ │ ├── 1-bug-report-react.yml │ │ ├── 2-bug-report-vue.yml │ │ ├── 3-bug-report-svelte.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── SECURITY.md │ ├── SUPPORT.md │ └── workflows/ │ ├── build.yml │ ├── coding-standards.yml │ ├── es2020-compatibility.yml │ ├── playwright-chromium.yml │ ├── playwright-firefox.yml │ ├── playwright-webkit.yml │ ├── publish.yml │ ├── test-app-quality.yml │ └── update-changelog.yml ├── .gitignore ├── .prettierignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── package.json ├── packages/ │ ├── core/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── build.js │ │ ├── package.json │ │ ├── readme.md │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── debounce.ts │ │ │ ├── debug.ts │ │ │ ├── dialog.ts │ │ │ ├── domUtils.ts │ │ │ ├── encryption.ts │ │ │ ├── eventHandler.ts │ │ │ ├── events.ts │ │ │ ├── files.ts │ │ │ ├── formData.ts │ │ │ ├── formObject.ts │ │ │ ├── head.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ ├── infiniteScroll/ │ │ │ │ ├── data.ts │ │ │ │ ├── elements.ts │ │ │ │ ├── queryString.ts │ │ │ │ └── scrollPreservation.ts │ │ │ ├── infiniteScroll.ts │ │ │ ├── initialVisit.ts │ │ │ ├── intersectionObservers.ts │ │ │ ├── modal.ts │ │ │ ├── navigationEvents.ts │ │ │ ├── navigationType.ts │ │ │ ├── objectUtils.ts │ │ │ ├── page.ts │ │ │ ├── poll.ts │ │ │ ├── polls.ts │ │ │ ├── prefetched.ts │ │ │ ├── progress-component.ts │ │ │ ├── progress.ts │ │ │ ├── queue.ts │ │ │ ├── request.ts │ │ │ ├── requestParams.ts │ │ │ ├── requestStream.ts │ │ │ ├── resetFormFields.ts │ │ │ ├── response.ts │ │ │ ├── router.ts │ │ │ ├── scroll.ts │ │ │ ├── server.ts │ │ │ ├── sessionStorage.ts │ │ │ ├── time.ts │ │ │ ├── types.ts │ │ │ ├── url.ts │ │ │ └── useFormUtils.ts │ │ └── tsconfig.json │ ├── react/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── build.js │ │ ├── package.json │ │ ├── readme.md │ │ ├── resources/ │ │ │ └── boost/ │ │ │ ├── guidelines/ │ │ │ │ └── core.blade.php │ │ │ └── skills/ │ │ │ └── inertia-react-development/ │ │ │ └── SKILL.blade.php │ │ ├── src/ │ │ │ ├── App.ts │ │ │ ├── Deferred.ts │ │ │ ├── Form.ts │ │ │ ├── Head.ts │ │ │ ├── HeadContext.ts │ │ │ ├── InfiniteScroll.ts │ │ │ ├── Link.ts │ │ │ ├── PageContext.ts │ │ │ ├── WhenVisible.ts │ │ │ ├── createInertiaApp.ts │ │ │ ├── index.ts │ │ │ ├── react.ts │ │ │ ├── server.ts │ │ │ ├── types.ts │ │ │ ├── useForm.ts │ │ │ ├── usePage.ts │ │ │ ├── usePoll.ts │ │ │ ├── usePrefetch.ts │ │ │ └── useRemember.ts │ │ ├── test-app/ │ │ │ ├── Layouts/ │ │ │ │ ├── NestedLayout.tsx │ │ │ │ ├── Prefetch.tsx │ │ │ │ ├── SWR.tsx │ │ │ │ ├── SiteLayout.tsx │ │ │ │ ├── WithScrollRegion.tsx │ │ │ │ └── WithoutScrollRegion.tsx │ │ │ ├── Pages/ │ │ │ │ ├── Article.tsx │ │ │ │ ├── ClientSideVisit/ │ │ │ │ │ ├── Page1.tsx │ │ │ │ │ ├── Page2.tsx │ │ │ │ │ ├── Props.tsx │ │ │ │ │ └── Sequential.tsx │ │ │ │ ├── ComplexMergeSelective.tsx │ │ │ │ ├── CustomConfig.tsx │ │ │ │ ├── DeepMergeProps.tsx │ │ │ │ ├── DeferredProps/ │ │ │ │ │ ├── BackButton/ │ │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ │ └── PageB.tsx │ │ │ │ │ ├── InstantReload.tsx │ │ │ │ │ ├── ManyGroups.tsx │ │ │ │ │ ├── Page1.tsx │ │ │ │ │ ├── Page2.tsx │ │ │ │ │ ├── Page3.tsx │ │ │ │ │ ├── PartialReloads.tsx │ │ │ │ │ ├── RapidNavigation.tsx │ │ │ │ │ ├── ReloadWithoutOptionalChaining.tsx │ │ │ │ │ ├── WithErrors.tsx │ │ │ │ │ ├── WithPartialReload.tsx │ │ │ │ │ ├── WithQueryParams.tsx │ │ │ │ │ └── WithReload.tsx │ │ │ │ ├── Dump.tsx │ │ │ │ ├── ErrorModal.tsx │ │ │ │ ├── Events.tsx │ │ │ │ ├── Flash/ │ │ │ │ │ ├── ClientSideVisits.tsx │ │ │ │ │ ├── Events.tsx │ │ │ │ │ ├── InitialFlash.tsx │ │ │ │ │ ├── Partial.tsx │ │ │ │ │ ├── RouterFlash.tsx │ │ │ │ │ ├── WithDeferred.tsx │ │ │ │ │ └── WithInfiniteScroll.tsx │ │ │ │ ├── FormComponent/ │ │ │ │ │ ├── ChildComponent.tsx │ │ │ │ │ ├── Context/ │ │ │ │ │ │ ├── ChildComponent.tsx │ │ │ │ │ │ ├── DeeplyNestedComponent.tsx │ │ │ │ │ │ ├── Default.tsx │ │ │ │ │ │ ├── Methods.tsx │ │ │ │ │ │ ├── MethodsTestComponent.tsx │ │ │ │ │ │ ├── Multiple.tsx │ │ │ │ │ │ ├── NestedComponent.tsx │ │ │ │ │ │ └── OutsideFormComponent.tsx │ │ │ │ │ ├── DataMethods.tsx │ │ │ │ │ ├── DefaultValue.tsx │ │ │ │ │ ├── DisableWhileProcessing.tsx │ │ │ │ │ ├── DottedKeys.tsx │ │ │ │ │ ├── Elements.tsx │ │ │ │ │ ├── EmptyAction.tsx │ │ │ │ │ ├── Errors.tsx │ │ │ │ │ ├── Events.tsx │ │ │ │ │ ├── FormTarget.tsx │ │ │ │ │ ├── Headers.tsx │ │ │ │ │ ├── InvalidateTags.tsx │ │ │ │ │ ├── Methods.tsx │ │ │ │ │ ├── MixedKeySerialization.tsx │ │ │ │ │ ├── Options.tsx │ │ │ │ │ ├── Precognition/ │ │ │ │ │ │ ├── BeforeValidation.tsx │ │ │ │ │ │ ├── Callbacks.tsx │ │ │ │ │ │ ├── Cancel.tsx │ │ │ │ │ │ ├── Default.tsx │ │ │ │ │ │ ├── DynamicArrayInputs.tsx │ │ │ │ │ │ ├── ErrorSync.tsx │ │ │ │ │ │ ├── Files.tsx │ │ │ │ │ │ ├── Headers.tsx │ │ │ │ │ │ ├── Methods.tsx │ │ │ │ │ │ ├── Transform.tsx │ │ │ │ │ │ ├── TransformKeys.tsx │ │ │ │ │ │ ├── WithAllErrors.tsx │ │ │ │ │ │ ├── WithAllErrorsConfig.tsx │ │ │ │ │ │ └── WithoutAllErrors.tsx │ │ │ │ │ ├── Progress.tsx │ │ │ │ │ ├── Ref.tsx │ │ │ │ │ ├── Reset.tsx │ │ │ │ │ ├── ResetAttributes/ │ │ │ │ │ │ ├── ResetOnError.tsx │ │ │ │ │ │ ├── ResetOnErrorFields.tsx │ │ │ │ │ │ ├── ResetOnSuccess.tsx │ │ │ │ │ │ └── ResetOnSuccessFields.tsx │ │ │ │ │ ├── SetDefaultsOnSuccess.tsx │ │ │ │ │ ├── SubmitButton.tsx │ │ │ │ │ ├── SubmitComplete/ │ │ │ │ │ │ ├── Defaults.tsx │ │ │ │ │ │ ├── Redirect.tsx │ │ │ │ │ │ └── Reset.tsx │ │ │ │ │ ├── Transform.tsx │ │ │ │ │ ├── UppercaseMethod.tsx │ │ │ │ │ ├── ViewTransition.tsx │ │ │ │ │ └── Wayfinder.tsx │ │ │ │ ├── FormHelper/ │ │ │ │ │ ├── Data.tsx │ │ │ │ │ ├── Dirty.tsx │ │ │ │ │ ├── EffectCount.tsx │ │ │ │ │ ├── EmptyForm.tsx │ │ │ │ │ ├── Errors.tsx │ │ │ │ │ ├── ErrorsClearOnResubmit.tsx │ │ │ │ │ ├── Events.tsx │ │ │ │ │ ├── Methods.tsx │ │ │ │ │ ├── Nested.tsx │ │ │ │ │ ├── Precognition/ │ │ │ │ │ │ ├── BeforeValidation.tsx │ │ │ │ │ │ ├── Callbacks.tsx │ │ │ │ │ │ ├── Cancel.tsx │ │ │ │ │ │ ├── Compatibility.tsx │ │ │ │ │ │ ├── Default.tsx │ │ │ │ │ │ ├── DynamicArrayInputs.tsx │ │ │ │ │ │ ├── ErrorSync.tsx │ │ │ │ │ │ ├── Files.tsx │ │ │ │ │ │ ├── Headers.tsx │ │ │ │ │ │ ├── Instantiate.tsx │ │ │ │ │ │ ├── Methods.tsx │ │ │ │ │ │ ├── Transform.tsx │ │ │ │ │ │ ├── TransformKeys.tsx │ │ │ │ │ │ ├── WithAllErrors.tsx │ │ │ │ │ │ ├── WithAllErrorsConfig.tsx │ │ │ │ │ │ └── WithoutAllErrors.tsx │ │ │ │ │ ├── RememberEdit.tsx │ │ │ │ │ ├── RememberIndex.tsx │ │ │ │ │ ├── Transform.tsx │ │ │ │ │ └── TypeScript/ │ │ │ │ │ ├── Any.tsx │ │ │ │ │ ├── Child.tsx │ │ │ │ │ ├── CircularlReferences.tsx │ │ │ │ │ ├── Data.tsx │ │ │ │ │ ├── DynamicInputName.tsx │ │ │ │ │ ├── Errors.tsx │ │ │ │ │ ├── Generic.tsx │ │ │ │ │ ├── Nullable.tsx │ │ │ │ │ ├── NullableNestedObject.tsx │ │ │ │ │ ├── OptionalProps.tsx │ │ │ │ │ ├── Parent.tsx │ │ │ │ │ ├── Precognition.tsx │ │ │ │ │ └── ValidationKey.tsx │ │ │ │ ├── Head/ │ │ │ │ │ ├── Conditional.tsx │ │ │ │ │ ├── Dataset.tsx │ │ │ │ │ ├── Mixed.tsx │ │ │ │ │ ├── Reactive.tsx │ │ │ │ │ ├── WithTitle.tsx │ │ │ │ │ └── WithoutTitle.tsx │ │ │ │ ├── Head.tsx │ │ │ │ ├── History/ │ │ │ │ │ ├── Page.tsx │ │ │ │ │ └── Version.tsx │ │ │ │ ├── HistoryQuota/ │ │ │ │ │ └── Page.tsx │ │ │ │ ├── HistoryThrottle.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── InfiniteScroll/ │ │ │ │ │ ├── CustomElement.tsx │ │ │ │ │ ├── CustomTriggersRef.tsx │ │ │ │ │ ├── CustomTriggersRefObject.tsx │ │ │ │ │ ├── CustomTriggersSelector.tsx │ │ │ │ │ ├── DataTable.tsx │ │ │ │ │ ├── Deferred.tsx │ │ │ │ │ ├── DualContainers.tsx │ │ │ │ │ ├── DualSibling.tsx │ │ │ │ │ ├── Empty.tsx │ │ │ │ │ ├── Filtering.tsx │ │ │ │ │ ├── FilteringManual.tsx │ │ │ │ │ ├── FilteringReset.tsx │ │ │ │ │ ├── Grid.tsx │ │ │ │ │ ├── HorizontalScroll.tsx │ │ │ │ │ ├── InfiniteScrollWithLink.tsx │ │ │ │ │ ├── InvisibleFirstChild.tsx │ │ │ │ │ ├── Links.tsx │ │ │ │ │ ├── Manual.tsx │ │ │ │ │ ├── ManualAfter.tsx │ │ │ │ │ ├── OverflowX.tsx │ │ │ │ │ ├── PreserveUrl.tsx │ │ │ │ │ ├── ProgrammaticRef.tsx │ │ │ │ │ ├── ReloadUnrelated.tsx │ │ │ │ │ ├── RememberState.tsx │ │ │ │ │ ├── Reverse.tsx │ │ │ │ │ ├── ReverseShortContent.tsx │ │ │ │ │ ├── ScrollContainer.tsx │ │ │ │ │ ├── ShortContent.tsx │ │ │ │ │ ├── Toggles.tsx │ │ │ │ │ ├── TriggerBoth.tsx │ │ │ │ │ ├── TriggerEndBuffer.tsx │ │ │ │ │ ├── TriggerStartBuffer.tsx │ │ │ │ │ ├── UpdateQueryString.tsx │ │ │ │ │ └── UserCard.tsx │ │ │ │ ├── Links/ │ │ │ │ │ ├── AsComponent.tsx │ │ │ │ │ ├── AsElement.tsx │ │ │ │ │ ├── AsWarning.tsx │ │ │ │ │ ├── AsWarningFalse.tsx │ │ │ │ │ ├── AutomaticCancellation.tsx │ │ │ │ │ ├── CancelSyncRequest.tsx │ │ │ │ │ ├── Data/ │ │ │ │ │ │ ├── AutoConverted.tsx │ │ │ │ │ │ ├── FormData.tsx │ │ │ │ │ │ └── Object.tsx │ │ │ │ │ ├── DataLoading.tsx │ │ │ │ │ ├── Headers.tsx │ │ │ │ │ ├── Location.tsx │ │ │ │ │ ├── Method.tsx │ │ │ │ │ ├── PartialReloads.tsx │ │ │ │ │ ├── PathTraversal.tsx │ │ │ │ │ ├── PreserveScroll.tsx │ │ │ │ │ ├── PreserveScrollFalse.tsx │ │ │ │ │ ├── PreserveState.tsx │ │ │ │ │ ├── PreserveUrl.tsx │ │ │ │ │ ├── PropUpdate.tsx │ │ │ │ │ ├── Reactivity.tsx │ │ │ │ │ ├── Replace.tsx │ │ │ │ │ ├── ScrollRegionList.tsx │ │ │ │ │ └── UrlFragments.tsx │ │ │ │ ├── MatchPropsOnKey.tsx │ │ │ │ ├── MergeNestedProps.tsx │ │ │ │ ├── MergeProps.tsx │ │ │ │ ├── NavigateNonInertia.tsx │ │ │ │ ├── NetworkError.tsx │ │ │ │ ├── OnceProps/ │ │ │ │ │ ├── ClientSideVisit.tsx │ │ │ │ │ ├── CustomKeyPageA.tsx │ │ │ │ │ ├── CustomKeyPageB.tsx │ │ │ │ │ ├── DeferredPageA.tsx │ │ │ │ │ ├── DeferredPageB.tsx │ │ │ │ │ ├── DeferredPageC.tsx │ │ │ │ │ ├── MergePageA.tsx │ │ │ │ │ ├── MergePageB.tsx │ │ │ │ │ ├── OptionalPageA.tsx │ │ │ │ │ ├── OptionalPageB.tsx │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ ├── PageB.tsx │ │ │ │ │ ├── PageC.tsx │ │ │ │ │ ├── PageD.tsx │ │ │ │ │ ├── PageE.tsx │ │ │ │ │ ├── PartialReloadA.tsx │ │ │ │ │ ├── PartialReloadB.tsx │ │ │ │ │ ├── SlowDeferredPageA.tsx │ │ │ │ │ ├── SlowDeferredPageB.tsx │ │ │ │ │ ├── TtlPageA.tsx │ │ │ │ │ ├── TtlPageB.tsx │ │ │ │ │ └── TtlPageC.tsx │ │ │ │ ├── PersistentLayouts/ │ │ │ │ │ ├── RenderFunction/ │ │ │ │ │ │ ├── Nested/ │ │ │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ │ │ └── PageB.tsx │ │ │ │ │ │ └── Simple/ │ │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ │ └── PageB.tsx │ │ │ │ │ └── Shorthand/ │ │ │ │ │ ├── Nested/ │ │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ │ └── PageB.tsx │ │ │ │ │ └── Simple/ │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ └── PageB.tsx │ │ │ │ ├── Poll/ │ │ │ │ │ ├── Hook.tsx │ │ │ │ │ ├── HookManual.tsx │ │ │ │ │ ├── RouterManual.tsx │ │ │ │ │ └── UnchangedData.tsx │ │ │ │ ├── Prefetch/ │ │ │ │ │ ├── AfterError.tsx │ │ │ │ │ ├── Form.tsx │ │ │ │ │ ├── Page.tsx │ │ │ │ │ ├── PreserveState.tsx │ │ │ │ │ ├── SWR.tsx │ │ │ │ │ ├── Tags.tsx │ │ │ │ │ ├── TestPage.tsx │ │ │ │ │ └── Wayfinder.tsx │ │ │ │ ├── PreserveEqualProps.tsx │ │ │ │ ├── Progress.tsx │ │ │ │ ├── ProgressComponent.tsx │ │ │ │ ├── Reload/ │ │ │ │ │ ├── Concurrent.tsx │ │ │ │ │ └── ConcurrentWithData.tsx │ │ │ │ ├── Remember/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── ComponentA.tsx │ │ │ │ │ │ └── ComponentB.tsx │ │ │ │ │ ├── Default.tsx │ │ │ │ │ ├── FormHelper/ │ │ │ │ │ │ ├── Default.tsx │ │ │ │ │ │ ├── Password.tsx │ │ │ │ │ │ └── Remember.tsx │ │ │ │ │ ├── MultipleComponents.tsx │ │ │ │ │ ├── Object.tsx │ │ │ │ │ └── Router.tsx │ │ │ │ ├── SSR/ │ │ │ │ │ ├── Page1.tsx │ │ │ │ │ ├── Page2.tsx │ │ │ │ │ └── PageWithScriptElement.tsx │ │ │ │ ├── ScrollAfterRender.tsx │ │ │ │ ├── ScrollRegionPreserveUrl.tsx │ │ │ │ ├── ScrollSmooth.tsx │ │ │ │ ├── ScrollableParent.tsx │ │ │ │ ├── TypeScriptCreateInertiaApp.ts │ │ │ │ ├── TypeScriptFlash.tsx │ │ │ │ ├── TypeScriptProps.tsx │ │ │ │ ├── ViewTransition/ │ │ │ │ │ ├── FormErrors.tsx │ │ │ │ │ ├── PageA.tsx │ │ │ │ │ └── PageB.tsx │ │ │ │ ├── Visits/ │ │ │ │ │ ├── AfterError.tsx │ │ │ │ │ ├── AutomaticCancellation.tsx │ │ │ │ │ ├── Data/ │ │ │ │ │ │ ├── AutoConverted.tsx │ │ │ │ │ │ ├── FormData.tsx │ │ │ │ │ │ └── Object.tsx │ │ │ │ │ ├── ErrorBags.tsx │ │ │ │ │ ├── Headers.tsx │ │ │ │ │ ├── Location.tsx │ │ │ │ │ ├── Method.tsx │ │ │ │ │ ├── PartialReloads.tsx │ │ │ │ │ ├── PreserveScroll.tsx │ │ │ │ │ ├── PreserveScrollFalse.tsx │ │ │ │ │ ├── PreserveState.tsx │ │ │ │ │ ├── ReloadOnMount.tsx │ │ │ │ │ ├── Replace.tsx │ │ │ │ │ ├── UrlFragments.tsx │ │ │ │ │ └── Wayfinder.tsx │ │ │ │ ├── WhenVisible.tsx │ │ │ │ ├── WhenVisibleArrayReload.tsx │ │ │ │ ├── WhenVisibleBackButton.tsx │ │ │ │ ├── WhenVisibleFetching.tsx │ │ │ │ ├── WhenVisibleMergeParams.tsx │ │ │ │ ├── WhenVisibleParamsUpdate.tsx │ │ │ │ └── WhenVisibleReload.tsx │ │ │ ├── app.tsx │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── ssr.tsx │ │ │ ├── tsconfig.json │ │ │ ├── types.d.ts │ │ │ └── vite.config.ts │ │ └── tsconfig.json │ ├── svelte/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── package.json │ │ ├── readme.md │ │ ├── resources/ │ │ │ └── boost/ │ │ │ ├── guidelines/ │ │ │ │ └── core.blade.php │ │ │ └── skills/ │ │ │ └── inertia-svelte-development/ │ │ │ └── SKILL.blade.php │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── App.svelte │ │ │ │ ├── Deferred.svelte │ │ │ │ ├── Form.svelte │ │ │ │ ├── InfiniteScroll.svelte │ │ │ │ ├── Link.svelte │ │ │ │ ├── Render.svelte │ │ │ │ ├── WhenVisible.svelte │ │ │ │ └── formContext.ts │ │ │ ├── createInertiaApp.ts │ │ │ ├── index.ts │ │ │ ├── link.ts │ │ │ ├── page.ts │ │ │ ├── server.ts │ │ │ ├── types.ts │ │ │ ├── useForm.ts │ │ │ ├── usePoll.ts │ │ │ ├── usePrefetch.ts │ │ │ └── useRemember.ts │ │ ├── svelte.config.js │ │ ├── test-app/ │ │ │ ├── .gitignore │ │ │ ├── Layouts/ │ │ │ │ ├── NestedLayout.svelte │ │ │ │ ├── Prefetch.svelte │ │ │ │ ├── SWR.svelte │ │ │ │ ├── SiteLayout.svelte │ │ │ │ ├── WithScrollRegion.svelte │ │ │ │ └── WithoutScrollRegion.svelte │ │ │ ├── Pages/ │ │ │ │ ├── Article.svelte │ │ │ │ ├── ClientSideVisit/ │ │ │ │ │ ├── Page1.svelte │ │ │ │ │ ├── Page2.svelte │ │ │ │ │ ├── Props.svelte │ │ │ │ │ └── Sequential.svelte │ │ │ │ ├── ComplexMergeSelective.svelte │ │ │ │ ├── CustomConfig.svelte │ │ │ │ ├── DeepMergeProps.svelte │ │ │ │ ├── DeferredProps/ │ │ │ │ │ ├── BackButton/ │ │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ │ └── PageB.svelte │ │ │ │ │ ├── InstantReload.svelte │ │ │ │ │ ├── ManyGroups.svelte │ │ │ │ │ ├── Page1.svelte │ │ │ │ │ ├── Page2.svelte │ │ │ │ │ ├── Page3.svelte │ │ │ │ │ ├── PartialReloads.svelte │ │ │ │ │ ├── RapidNavigation.svelte │ │ │ │ │ ├── ReloadResults.svelte │ │ │ │ │ ├── ReloadWithoutOptionalChaining.svelte │ │ │ │ │ ├── WithErrors.svelte │ │ │ │ │ ├── WithQueryParams.svelte │ │ │ │ │ └── WithReload.svelte │ │ │ │ ├── Dump.svelte │ │ │ │ ├── ErrorModal.svelte │ │ │ │ ├── Events.svelte │ │ │ │ ├── Flash/ │ │ │ │ │ ├── ClientSideVisits.svelte │ │ │ │ │ ├── Events.svelte │ │ │ │ │ ├── InitialFlash.svelte │ │ │ │ │ ├── Partial.svelte │ │ │ │ │ ├── RouterFlash.svelte │ │ │ │ │ ├── WithDeferred.svelte │ │ │ │ │ └── WithInfiniteScroll.svelte │ │ │ │ ├── FormComponent/ │ │ │ │ │ ├── Context/ │ │ │ │ │ │ ├── ChildComponent.svelte │ │ │ │ │ │ ├── DeeplyNestedComponent.svelte │ │ │ │ │ │ ├── Default.svelte │ │ │ │ │ │ ├── Methods.svelte │ │ │ │ │ │ ├── MethodsTestComponent.svelte │ │ │ │ │ │ ├── Multiple.svelte │ │ │ │ │ │ ├── NestedComponent.svelte │ │ │ │ │ │ └── OutsideFormComponent.svelte │ │ │ │ │ ├── DataMethods.svelte │ │ │ │ │ ├── DefaultValue.svelte │ │ │ │ │ ├── DisableWhileProcessing.svelte │ │ │ │ │ ├── DottedKeys.svelte │ │ │ │ │ ├── Elements.svelte │ │ │ │ │ ├── EmptyAction.svelte │ │ │ │ │ ├── Errors.svelte │ │ │ │ │ ├── Events.svelte │ │ │ │ │ ├── FormTarget.svelte │ │ │ │ │ ├── Headers.svelte │ │ │ │ │ ├── InvalidateTags.svelte │ │ │ │ │ ├── Methods.svelte │ │ │ │ │ ├── MixedKeySerialization.svelte │ │ │ │ │ ├── Options.svelte │ │ │ │ │ ├── Precognition/ │ │ │ │ │ │ ├── BeforeValidation.svelte │ │ │ │ │ │ ├── Callbacks.svelte │ │ │ │ │ │ ├── Cancel.svelte │ │ │ │ │ │ ├── Default.svelte │ │ │ │ │ │ ├── DynamicArrayInputs.svelte │ │ │ │ │ │ ├── ErrorSync.svelte │ │ │ │ │ │ ├── Files.svelte │ │ │ │ │ │ ├── Headers.svelte │ │ │ │ │ │ ├── Methods.svelte │ │ │ │ │ │ ├── Transform.svelte │ │ │ │ │ │ ├── TransformKeys.svelte │ │ │ │ │ │ ├── WithAllErrors.svelte │ │ │ │ │ │ ├── WithAllErrorsConfig.svelte │ │ │ │ │ │ └── WithoutAllErrors.svelte │ │ │ │ │ ├── Progress.svelte │ │ │ │ │ ├── Ref.svelte │ │ │ │ │ ├── Reset.svelte │ │ │ │ │ ├── ResetAttributes/ │ │ │ │ │ │ ├── ResetOnError.svelte │ │ │ │ │ │ ├── ResetOnErrorFields.svelte │ │ │ │ │ │ ├── ResetOnSuccess.svelte │ │ │ │ │ │ └── ResetOnSuccessFields.svelte │ │ │ │ │ ├── SetDefaultsOnSuccess.svelte │ │ │ │ │ ├── SubmitButton.svelte │ │ │ │ │ ├── SubmitComplete/ │ │ │ │ │ │ ├── Defaults.svelte │ │ │ │ │ │ ├── Redirect.svelte │ │ │ │ │ │ └── Reset.svelte │ │ │ │ │ ├── Transform.svelte │ │ │ │ │ ├── UppercaseMethod.svelte │ │ │ │ │ ├── ViewTransition.svelte │ │ │ │ │ └── Wayfinder.svelte │ │ │ │ ├── FormHelper/ │ │ │ │ │ ├── Data.svelte │ │ │ │ │ ├── Dirty.svelte │ │ │ │ │ ├── EmptyForm.svelte │ │ │ │ │ ├── Errors.svelte │ │ │ │ │ ├── ErrorsClearOnResubmit.svelte │ │ │ │ │ ├── Events.svelte │ │ │ │ │ ├── Methods.svelte │ │ │ │ │ ├── Nested.svelte │ │ │ │ │ ├── Precognition/ │ │ │ │ │ │ ├── BeforeValidation.svelte │ │ │ │ │ │ ├── Callbacks.svelte │ │ │ │ │ │ ├── Cancel.svelte │ │ │ │ │ │ ├── Compatibility.svelte │ │ │ │ │ │ ├── Default.svelte │ │ │ │ │ │ ├── DynamicArrayInputs.svelte │ │ │ │ │ │ ├── ErrorSync.svelte │ │ │ │ │ │ ├── Files.svelte │ │ │ │ │ │ ├── Headers.svelte │ │ │ │ │ │ ├── Instantiate.svelte │ │ │ │ │ │ ├── Methods.svelte │ │ │ │ │ │ ├── Transform.svelte │ │ │ │ │ │ ├── TransformKeys.svelte │ │ │ │ │ │ ├── WithAllErrors.svelte │ │ │ │ │ │ ├── WithAllErrorsConfig.svelte │ │ │ │ │ │ └── WithoutAllErrors.svelte │ │ │ │ │ ├── RememberEdit.svelte │ │ │ │ │ ├── RememberIndex.svelte │ │ │ │ │ ├── ReservedKeys.svelte │ │ │ │ │ ├── Transform.svelte │ │ │ │ │ └── TypeScript/ │ │ │ │ │ ├── Any.svelte │ │ │ │ │ ├── Child.svelte │ │ │ │ │ ├── CircularReferences.svelte │ │ │ │ │ ├── Data.svelte │ │ │ │ │ ├── DynamicInputName.svelte │ │ │ │ │ ├── Errors.svelte │ │ │ │ │ ├── FormDataCallback.svelte │ │ │ │ │ ├── Generic.svelte │ │ │ │ │ ├── Nullable.svelte │ │ │ │ │ ├── NullableNestedObject.svelte │ │ │ │ │ ├── OptionalProps.svelte │ │ │ │ │ ├── Parent.svelte │ │ │ │ │ ├── Precognition.svelte │ │ │ │ │ ├── ValidationKey.svelte │ │ │ │ │ ├── WrapperChild.svelte │ │ │ │ │ └── WrapperParent.svelte │ │ │ │ ├── History/ │ │ │ │ │ ├── Page.svelte │ │ │ │ │ └── Version.svelte │ │ │ │ ├── HistoryQuota/ │ │ │ │ │ └── Page.svelte │ │ │ │ ├── HistoryThrottle.svelte │ │ │ │ ├── Home.svelte │ │ │ │ ├── InfiniteScroll/ │ │ │ │ │ ├── CustomElement.svelte │ │ │ │ │ ├── CustomTriggersRef.svelte │ │ │ │ │ ├── CustomTriggersRefObject.svelte │ │ │ │ │ ├── CustomTriggersSelector.svelte │ │ │ │ │ ├── DataTable.svelte │ │ │ │ │ ├── Deferred.svelte │ │ │ │ │ ├── DualContainers.svelte │ │ │ │ │ ├── DualSibling.svelte │ │ │ │ │ ├── Empty.svelte │ │ │ │ │ ├── Filtering.svelte │ │ │ │ │ ├── FilteringManual.svelte │ │ │ │ │ ├── FilteringReset.svelte │ │ │ │ │ ├── Grid.svelte │ │ │ │ │ ├── HorizontalScroll.svelte │ │ │ │ │ ├── InfiniteScrollWithLink.svelte │ │ │ │ │ ├── InvisibleFirstChild.svelte │ │ │ │ │ ├── Links.svelte │ │ │ │ │ ├── Manual.svelte │ │ │ │ │ ├── ManualAfter.svelte │ │ │ │ │ ├── OverflowX.svelte │ │ │ │ │ ├── PreserveUrl.svelte │ │ │ │ │ ├── ProgrammaticRef.svelte │ │ │ │ │ ├── ReloadUnrelated.svelte │ │ │ │ │ ├── RememberState.svelte │ │ │ │ │ ├── Reverse.svelte │ │ │ │ │ ├── ReverseShortContent.svelte │ │ │ │ │ ├── ScrollContainer.svelte │ │ │ │ │ ├── ShortContent.svelte │ │ │ │ │ ├── Toggles.svelte │ │ │ │ │ ├── TriggerBoth.svelte │ │ │ │ │ ├── TriggerEndBuffer.svelte │ │ │ │ │ ├── TriggerStartBuffer.svelte │ │ │ │ │ ├── UpdateQueryString.svelte │ │ │ │ │ └── UserCard.svelte │ │ │ │ ├── Links/ │ │ │ │ │ ├── AsWarning.svelte │ │ │ │ │ ├── AsWarningFalse.svelte │ │ │ │ │ ├── AutomaticCancellation.svelte │ │ │ │ │ ├── CancelSyncRequest.svelte │ │ │ │ │ ├── Data/ │ │ │ │ │ │ ├── AutoConverted.svelte │ │ │ │ │ │ ├── FormData.svelte │ │ │ │ │ │ └── Object.svelte │ │ │ │ │ ├── DataLoading.svelte │ │ │ │ │ ├── Headers.svelte │ │ │ │ │ ├── Location.svelte │ │ │ │ │ ├── Method.svelte │ │ │ │ │ ├── PartialReloads.svelte │ │ │ │ │ ├── PathTraversal.svelte │ │ │ │ │ ├── PreserveScroll.svelte │ │ │ │ │ ├── PreserveScrollFalse.svelte │ │ │ │ │ ├── PreserveState.svelte │ │ │ │ │ ├── PreserveUrl.svelte │ │ │ │ │ ├── PropUpdate.svelte │ │ │ │ │ ├── Reactivity.svelte │ │ │ │ │ ├── Replace.svelte │ │ │ │ │ ├── ScrollRegionList.svelte │ │ │ │ │ └── UrlFragments.svelte │ │ │ │ ├── MatchPropsOnKey.svelte │ │ │ │ ├── MergeNestedProps.svelte │ │ │ │ ├── MergeProps.svelte │ │ │ │ ├── NavigateNonInertia.svelte │ │ │ │ ├── NetworkError.svelte │ │ │ │ ├── OnceProps/ │ │ │ │ │ ├── ClientSideVisit.svelte │ │ │ │ │ ├── CustomKeyPageA.svelte │ │ │ │ │ ├── CustomKeyPageB.svelte │ │ │ │ │ ├── DeferredPageA.svelte │ │ │ │ │ ├── DeferredPageB.svelte │ │ │ │ │ ├── DeferredPageC.svelte │ │ │ │ │ ├── MergePageA.svelte │ │ │ │ │ ├── MergePageB.svelte │ │ │ │ │ ├── OptionalPageA.svelte │ │ │ │ │ ├── OptionalPageB.svelte │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ ├── PageB.svelte │ │ │ │ │ ├── PageC.svelte │ │ │ │ │ ├── PageD.svelte │ │ │ │ │ ├── PageE.svelte │ │ │ │ │ ├── PartialReloadA.svelte │ │ │ │ │ ├── PartialReloadB.svelte │ │ │ │ │ ├── SlowDeferredPageA.svelte │ │ │ │ │ ├── SlowDeferredPageB.svelte │ │ │ │ │ ├── TtlPageA.svelte │ │ │ │ │ ├── TtlPageB.svelte │ │ │ │ │ └── TtlPageC.svelte │ │ │ │ ├── PersistentLayouts/ │ │ │ │ │ ├── RenderFunction/ │ │ │ │ │ │ ├── Nested/ │ │ │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ │ │ └── PageB.svelte │ │ │ │ │ │ └── Simple/ │ │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ │ └── PageB.svelte │ │ │ │ │ └── Shorthand/ │ │ │ │ │ ├── Nested/ │ │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ │ └── PageB.svelte │ │ │ │ │ └── Simple/ │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ └── PageB.svelte │ │ │ │ ├── Poll/ │ │ │ │ │ ├── Hook.svelte │ │ │ │ │ ├── HookManual.svelte │ │ │ │ │ ├── RouterManual.svelte │ │ │ │ │ └── UnchangedData.svelte │ │ │ │ ├── Prefetch/ │ │ │ │ │ ├── AfterError.svelte │ │ │ │ │ ├── Form.svelte │ │ │ │ │ ├── Page.svelte │ │ │ │ │ ├── PreserveState.svelte │ │ │ │ │ ├── SWR.svelte │ │ │ │ │ ├── Tags.svelte │ │ │ │ │ ├── TestPage.svelte │ │ │ │ │ └── Wayfinder.svelte │ │ │ │ ├── PreserveEqualProps.svelte │ │ │ │ ├── ProgressComponent.svelte │ │ │ │ ├── Reload/ │ │ │ │ │ ├── Concurrent.svelte │ │ │ │ │ └── ConcurrentWithData.svelte │ │ │ │ ├── Remember/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── ComponentA.svelte │ │ │ │ │ │ └── ComponentB.svelte │ │ │ │ │ ├── Default.svelte │ │ │ │ │ ├── FormHelper/ │ │ │ │ │ │ ├── Default.svelte │ │ │ │ │ │ ├── Password.svelte │ │ │ │ │ │ └── Remember.svelte │ │ │ │ │ ├── MultipleComponents.svelte │ │ │ │ │ ├── Object.svelte │ │ │ │ │ └── Router.svelte │ │ │ │ ├── SSR/ │ │ │ │ │ ├── Page1.svelte │ │ │ │ │ ├── Page2.svelte │ │ │ │ │ └── PageWithScriptElement.svelte │ │ │ │ ├── ScrollAfterRender.svelte │ │ │ │ ├── ScrollRegionPreserveUrl.svelte │ │ │ │ ├── ScrollSmooth.svelte │ │ │ │ ├── ScrollableParent.svelte │ │ │ │ ├── Svelte/ │ │ │ │ │ └── PropsAndPageStore.svelte │ │ │ │ ├── TypeScriptCreateInertiaApp.ts │ │ │ │ ├── TypeScriptFlash.svelte │ │ │ │ ├── TypeScriptProps.svelte │ │ │ │ ├── ViewTransition/ │ │ │ │ │ ├── FormErrors.svelte │ │ │ │ │ ├── PageA.svelte │ │ │ │ │ └── PageB.svelte │ │ │ │ ├── Visits/ │ │ │ │ │ ├── AfterError.svelte │ │ │ │ │ ├── AutomaticCancellation.svelte │ │ │ │ │ ├── Data/ │ │ │ │ │ │ ├── AutoConverted.svelte │ │ │ │ │ │ ├── FormData.svelte │ │ │ │ │ │ └── Object.svelte │ │ │ │ │ ├── ErrorBags.svelte │ │ │ │ │ ├── Headers.svelte │ │ │ │ │ ├── Location.svelte │ │ │ │ │ ├── Method.svelte │ │ │ │ │ ├── PartialReloads.svelte │ │ │ │ │ ├── PreserveScroll.svelte │ │ │ │ │ ├── PreserveScrollFalse.svelte │ │ │ │ │ ├── PreserveState.svelte │ │ │ │ │ ├── ReloadOnMount.svelte │ │ │ │ │ ├── Replace.svelte │ │ │ │ │ ├── UrlFragments.svelte │ │ │ │ │ └── Wayfinder.svelte │ │ │ │ ├── WhenVisible.svelte │ │ │ │ ├── WhenVisibleArrayReload.svelte │ │ │ │ ├── WhenVisibleBackButton.svelte │ │ │ │ ├── WhenVisibleFetching.svelte │ │ │ │ ├── WhenVisibleMergeParams.svelte │ │ │ │ ├── WhenVisibleParamsUpdate.svelte │ │ │ │ └── WhenVisibleReload.svelte │ │ │ ├── app.ts │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── ssr.ts │ │ │ ├── svelte-html.d.ts │ │ │ ├── svelte.config.js │ │ │ ├── tsconfig.json │ │ │ ├── types.d.ts │ │ │ ├── vite-env.d.ts │ │ │ └── vite.config.js │ │ ├── tsconfig.json │ │ ├── vite-with-deps.config.js │ │ └── vite.config.js │ └── vue3/ │ ├── .gitignore │ ├── LICENSE │ ├── build.js │ ├── package.json │ ├── readme.md │ ├── resources/ │ │ └── boost/ │ │ ├── guidelines/ │ │ │ └── core.blade.php │ │ └── skills/ │ │ └── inertia-vue-development/ │ │ └── SKILL.blade.php │ ├── src/ │ │ ├── app.ts │ │ ├── createInertiaApp.ts │ │ ├── deferred.ts │ │ ├── form.ts │ │ ├── head.ts │ │ ├── index.ts │ │ ├── infiniteScroll.ts │ │ ├── link.ts │ │ ├── remember.ts │ │ ├── server.ts │ │ ├── types.ts │ │ ├── useForm.ts │ │ ├── usePoll.ts │ │ ├── usePrefetch.ts │ │ ├── useRemember.ts │ │ └── whenVisible.ts │ ├── test-app/ │ │ ├── .gitignore │ │ ├── Layouts/ │ │ │ ├── NestedLayout.vue │ │ │ ├── Prefetch.vue │ │ │ ├── SWR.vue │ │ │ ├── SiteLayout.vue │ │ │ ├── WithScrollRegion.vue │ │ │ └── WithoutScrollRegion.vue │ │ ├── Pages/ │ │ │ ├── Article.vue │ │ │ ├── ClientSideVisit/ │ │ │ │ ├── Page1.vue │ │ │ │ ├── Page2.vue │ │ │ │ ├── Props.vue │ │ │ │ └── Sequential.vue │ │ │ ├── ComplexMergeSelective.vue │ │ │ ├── CustomConfig.vue │ │ │ ├── DeepMergeProps.vue │ │ │ ├── DeferredProps/ │ │ │ │ ├── BackButton/ │ │ │ │ │ ├── PageA.vue │ │ │ │ │ └── PageB.vue │ │ │ │ ├── InstantReload.vue │ │ │ │ ├── ManyGroups.vue │ │ │ │ ├── Page1.vue │ │ │ │ ├── Page2.vue │ │ │ │ ├── Page3.vue │ │ │ │ ├── PartialReloads.vue │ │ │ │ ├── RapidNavigation.vue │ │ │ │ ├── ReloadWithoutOptionalChaining.vue │ │ │ │ ├── WithErrors.vue │ │ │ │ ├── WithQueryParams.vue │ │ │ │ └── WithReload.vue │ │ │ ├── Dump.vue │ │ │ ├── ErrorModal.vue │ │ │ ├── Events.vue │ │ │ ├── Flash/ │ │ │ │ ├── ClientSideVisits.vue │ │ │ │ ├── Events.vue │ │ │ │ ├── InitialFlash.vue │ │ │ │ ├── Partial.vue │ │ │ │ ├── RouterFlash.vue │ │ │ │ ├── WithDeferred.vue │ │ │ │ └── WithInfiniteScroll.vue │ │ │ ├── FormComponent/ │ │ │ │ ├── Context/ │ │ │ │ │ ├── ChildComponent.vue │ │ │ │ │ ├── DeeplyNestedComponent.vue │ │ │ │ │ ├── Default.vue │ │ │ │ │ ├── Methods.vue │ │ │ │ │ ├── MethodsTestComponent.vue │ │ │ │ │ ├── Multiple.vue │ │ │ │ │ ├── NestedComponent.vue │ │ │ │ │ └── OutsideFormComponent.vue │ │ │ │ ├── DataMethods.vue │ │ │ │ ├── DefaultValue.vue │ │ │ │ ├── DisableWhileProcessing.vue │ │ │ │ ├── DottedKeys.vue │ │ │ │ ├── Elements.vue │ │ │ │ ├── EmptyAction.vue │ │ │ │ ├── Errors.vue │ │ │ │ ├── Events.vue │ │ │ │ ├── FormTarget.vue │ │ │ │ ├── Headers.vue │ │ │ │ ├── InvalidateTags.vue │ │ │ │ ├── Methods.vue │ │ │ │ ├── MixedKeySerialization.vue │ │ │ │ ├── Options.vue │ │ │ │ ├── Precognition/ │ │ │ │ │ ├── BeforeValidation.vue │ │ │ │ │ ├── Callbacks.vue │ │ │ │ │ ├── Cancel.vue │ │ │ │ │ ├── Default.vue │ │ │ │ │ ├── DynamicArrayInputs.vue │ │ │ │ │ ├── ErrorSync.vue │ │ │ │ │ ├── Files.vue │ │ │ │ │ ├── Headers.vue │ │ │ │ │ ├── Methods.vue │ │ │ │ │ ├── Transform.vue │ │ │ │ │ ├── TransformKeys.vue │ │ │ │ │ ├── WithAllErrors.vue │ │ │ │ │ ├── WithAllErrorsConfig.vue │ │ │ │ │ └── WithoutAllErrors.vue │ │ │ │ ├── Progress.vue │ │ │ │ ├── Ref.vue │ │ │ │ ├── Reset.vue │ │ │ │ ├── ResetAttributes/ │ │ │ │ │ ├── ResetOnError.vue │ │ │ │ │ ├── ResetOnErrorFields.vue │ │ │ │ │ ├── ResetOnSuccess.vue │ │ │ │ │ └── ResetOnSuccessFields.vue │ │ │ │ ├── SetDefaultsOnSuccess.vue │ │ │ │ ├── SubmitButton.vue │ │ │ │ ├── SubmitComplete/ │ │ │ │ │ ├── Defaults.vue │ │ │ │ │ ├── Redirect.vue │ │ │ │ │ └── Reset.vue │ │ │ │ ├── Transform.vue │ │ │ │ ├── UppercaseMethod.vue │ │ │ │ ├── ViewTransition.vue │ │ │ │ └── Wayfinder.vue │ │ │ ├── FormHelper/ │ │ │ │ ├── Data.vue │ │ │ │ ├── Dirty.vue │ │ │ │ ├── EmptyForm.vue │ │ │ │ ├── Errors.vue │ │ │ │ ├── ErrorsClearOnResubmit.vue │ │ │ │ ├── Events.vue │ │ │ │ ├── Methods.vue │ │ │ │ ├── Nested.vue │ │ │ │ ├── NestedError.vue │ │ │ │ ├── OptionsApi.vue │ │ │ │ ├── Precognition/ │ │ │ │ │ ├── BeforeValidation.vue │ │ │ │ │ ├── Callbacks.vue │ │ │ │ │ ├── Cancel.vue │ │ │ │ │ ├── Compatibility.vue │ │ │ │ │ ├── Default.vue │ │ │ │ │ ├── DynamicArrayInputs.vue │ │ │ │ │ ├── ErrorSync.vue │ │ │ │ │ ├── Files.vue │ │ │ │ │ ├── Headers.vue │ │ │ │ │ ├── Instantiate.vue │ │ │ │ │ ├── Methods.vue │ │ │ │ │ ├── Transform.vue │ │ │ │ │ ├── TransformKeys.vue │ │ │ │ │ ├── WithAllErrors.vue │ │ │ │ │ ├── WithAllErrorsConfig.vue │ │ │ │ │ └── WithoutAllErrors.vue │ │ │ │ ├── RememberEdit.vue │ │ │ │ ├── RememberIndex.vue │ │ │ │ ├── ReservedKeys.vue │ │ │ │ ├── Transform.vue │ │ │ │ └── TypeScript/ │ │ │ │ ├── Any.vue │ │ │ │ ├── Child.vue │ │ │ │ ├── CircularReferences.vue │ │ │ │ ├── Data.vue │ │ │ │ ├── DynamicInputName.vue │ │ │ │ ├── Errors.vue │ │ │ │ ├── FormDataCallback.vue │ │ │ │ ├── Generic.vue │ │ │ │ ├── Nullable.vue │ │ │ │ ├── NullableNestedObject.vue │ │ │ │ ├── OptionalProps.vue │ │ │ │ ├── Parent.vue │ │ │ │ ├── Precognition.vue │ │ │ │ ├── ValidationKey.vue │ │ │ │ ├── WrapperChild.vue │ │ │ │ └── WrapperParent.vue │ │ │ ├── Head/ │ │ │ │ ├── Conditional.vue │ │ │ │ ├── Dataset.vue │ │ │ │ ├── Mixed.vue │ │ │ │ ├── Reactive.vue │ │ │ │ ├── WithTitle.vue │ │ │ │ └── WithoutTitle.vue │ │ │ ├── Head.vue │ │ │ ├── History/ │ │ │ │ ├── Page.vue │ │ │ │ └── Version.vue │ │ │ ├── HistoryQuota/ │ │ │ │ └── Page.vue │ │ │ ├── HistoryThrottle.vue │ │ │ ├── Home.vue │ │ │ ├── InfiniteScroll/ │ │ │ │ ├── CustomElement.vue │ │ │ │ ├── CustomTriggersRef.vue │ │ │ │ ├── CustomTriggersRefObject.vue │ │ │ │ ├── CustomTriggersSelector.vue │ │ │ │ ├── DataTable.vue │ │ │ │ ├── Deferred.vue │ │ │ │ ├── DualContainers.vue │ │ │ │ ├── DualSibling.vue │ │ │ │ ├── Empty.vue │ │ │ │ ├── Filtering.vue │ │ │ │ ├── FilteringManual.vue │ │ │ │ ├── FilteringReset.vue │ │ │ │ ├── Grid.vue │ │ │ │ ├── HorizontalScroll.vue │ │ │ │ ├── InfiniteScrollWithLink.vue │ │ │ │ ├── InvisibleFirstChild.vue │ │ │ │ ├── Links.vue │ │ │ │ ├── Manual.vue │ │ │ │ ├── ManualAfter.vue │ │ │ │ ├── ManualReverse.vue │ │ │ │ ├── ManualToggle.vue │ │ │ │ ├── OverflowX.vue │ │ │ │ ├── PreserveUrl.vue │ │ │ │ ├── ProgrammaticRef.vue │ │ │ │ ├── ReloadUnrelated.vue │ │ │ │ ├── RememberState.vue │ │ │ │ ├── Reverse.vue │ │ │ │ ├── ReverseShortContent.vue │ │ │ │ ├── ScrollContainer.vue │ │ │ │ ├── ShortContent.vue │ │ │ │ ├── Toggles.vue │ │ │ │ ├── TriggerBoth.vue │ │ │ │ ├── TriggerEndBuffer.vue │ │ │ │ ├── TriggerStartBuffer.vue │ │ │ │ ├── TriggerToggle.vue │ │ │ │ ├── UpdateQueryString.vue │ │ │ │ └── UserCard.vue │ │ │ ├── Links/ │ │ │ │ ├── AsComponent.vue │ │ │ │ ├── AsElement.vue │ │ │ │ ├── AsWarning.vue │ │ │ │ ├── AsWarningFalse.vue │ │ │ │ ├── AutomaticCancellation.vue │ │ │ │ ├── CancelSyncRequest.vue │ │ │ │ ├── Data/ │ │ │ │ │ ├── AutoConverted.vue │ │ │ │ │ ├── FormData.vue │ │ │ │ │ └── Object.vue │ │ │ │ ├── DataLoading.vue │ │ │ │ ├── Headers.vue │ │ │ │ ├── Location.vue │ │ │ │ ├── Method.vue │ │ │ │ ├── PartialReloads.vue │ │ │ │ ├── PathTraversal.vue │ │ │ │ ├── PreserveScroll.vue │ │ │ │ ├── PreserveScrollFalse.vue │ │ │ │ ├── PreserveState.vue │ │ │ │ ├── PreserveUrl.vue │ │ │ │ ├── PropUpdate.vue │ │ │ │ ├── Reactivity.vue │ │ │ │ ├── Replace.vue │ │ │ │ ├── ScrollRegionList.vue │ │ │ │ └── UrlFragments.vue │ │ │ ├── MatchPropsOnKey.vue │ │ │ ├── MergeNestedProps.vue │ │ │ ├── MergeProps.vue │ │ │ ├── NavigateNonInertia.vue │ │ │ ├── NetworkError.vue │ │ │ ├── OnceProps/ │ │ │ │ ├── ClientSideVisit.vue │ │ │ │ ├── CustomKeyPageA.vue │ │ │ │ ├── CustomKeyPageB.vue │ │ │ │ ├── DeferredPageA.vue │ │ │ │ ├── DeferredPageB.vue │ │ │ │ ├── DeferredPageC.vue │ │ │ │ ├── MergePageA.vue │ │ │ │ ├── MergePageB.vue │ │ │ │ ├── OptionalPageA.vue │ │ │ │ ├── OptionalPageB.vue │ │ │ │ ├── PageA.vue │ │ │ │ ├── PageB.vue │ │ │ │ ├── PageC.vue │ │ │ │ ├── PageD.vue │ │ │ │ ├── PageE.vue │ │ │ │ ├── PartialReloadA.vue │ │ │ │ ├── PartialReloadB.vue │ │ │ │ ├── SlowDeferredPageA.vue │ │ │ │ ├── SlowDeferredPageB.vue │ │ │ │ ├── TtlPageA.vue │ │ │ │ ├── TtlPageB.vue │ │ │ │ └── TtlPageC.vue │ │ │ ├── PersistentLayouts/ │ │ │ │ ├── RenderFunction/ │ │ │ │ │ ├── Nested/ │ │ │ │ │ │ ├── PageA.vue │ │ │ │ │ │ └── PageB.vue │ │ │ │ │ └── Simple/ │ │ │ │ │ ├── PageA.vue │ │ │ │ │ └── PageB.vue │ │ │ │ └── Shorthand/ │ │ │ │ ├── Nested/ │ │ │ │ │ ├── PageA.vue │ │ │ │ │ └── PageB.vue │ │ │ │ └── Simple/ │ │ │ │ ├── PageA.vue │ │ │ │ └── PageB.vue │ │ │ ├── Poll/ │ │ │ │ ├── Hook.vue │ │ │ │ ├── HookManual.vue │ │ │ │ ├── RouterManual.vue │ │ │ │ └── UnchangedData.vue │ │ │ ├── Prefetch/ │ │ │ │ ├── AfterError.vue │ │ │ │ ├── Form.vue │ │ │ │ ├── Page.vue │ │ │ │ ├── PreserveState.vue │ │ │ │ ├── SWR.vue │ │ │ │ ├── Tags.vue │ │ │ │ ├── TestPage.vue │ │ │ │ └── Wayfinder.vue │ │ │ ├── PreserveEqualProps.vue │ │ │ ├── ProgressComponent.vue │ │ │ ├── Reload/ │ │ │ │ ├── Concurrent.vue │ │ │ │ └── ConcurrentWithData.vue │ │ │ ├── Remember/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── ComponentA.vue │ │ │ │ │ └── ComponentB.vue │ │ │ │ ├── Default.vue │ │ │ │ ├── FormHelper/ │ │ │ │ │ ├── Default.vue │ │ │ │ │ ├── Password.vue │ │ │ │ │ └── Remember.vue │ │ │ │ ├── MultipleComponents.vue │ │ │ │ ├── Object.vue │ │ │ │ └── Router.vue │ │ │ ├── SSR/ │ │ │ │ ├── Page1.vue │ │ │ │ ├── Page2.vue │ │ │ │ └── PageWithScriptElement.vue │ │ │ ├── ScrollAfterRender.vue │ │ │ ├── ScrollRegionPreserveUrl.vue │ │ │ ├── ScrollSmooth.vue │ │ │ ├── ScrollableParent.vue │ │ │ ├── TypeScriptCreateInertiaApp.ts │ │ │ ├── TypeScriptFlash.vue │ │ │ ├── TypeScriptProps.vue │ │ │ ├── ViewTransition/ │ │ │ │ ├── FormErrors.vue │ │ │ │ ├── PageA.vue │ │ │ │ └── PageB.vue │ │ │ ├── Visits/ │ │ │ │ ├── AfterError.vue │ │ │ │ ├── AutomaticCancellation.vue │ │ │ │ ├── Data/ │ │ │ │ │ ├── AutoConverted.vue │ │ │ │ │ ├── FormData.vue │ │ │ │ │ └── Object.vue │ │ │ │ ├── ErrorBags.vue │ │ │ │ ├── Headers.vue │ │ │ │ ├── Location.vue │ │ │ │ ├── Method.vue │ │ │ │ ├── PartialReloads.vue │ │ │ │ ├── PreserveScroll.vue │ │ │ │ ├── PreserveScrollFalse.vue │ │ │ │ ├── PreserveState.vue │ │ │ │ ├── Proxy.vue │ │ │ │ ├── ReloadOnMount.vue │ │ │ │ ├── Replace.vue │ │ │ │ ├── UrlFragments.vue │ │ │ │ └── Wayfinder.vue │ │ │ ├── WhenVisible.vue │ │ │ ├── WhenVisibleArrayReload.vue │ │ │ ├── WhenVisibleBackButton.vue │ │ │ ├── WhenVisibleFetching.vue │ │ │ ├── WhenVisibleMergeParams.vue │ │ │ ├── WhenVisibleParamsUpdate.vue │ │ │ └── WhenVisibleReload.vue │ │ ├── app.ts │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── ssr.ts │ │ ├── tsconfig.json │ │ ├── types.d.ts │ │ └── vite.config.ts │ └── tsconfig.json ├── playgrounds/ │ ├── react/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── Console/ │ │ │ │ └── Kernel.php │ │ │ ├── Exceptions/ │ │ │ │ └── Handler.php │ │ │ ├── Http/ │ │ │ │ ├── Controllers/ │ │ │ │ │ └── Controller.php │ │ │ │ ├── Kernel.php │ │ │ │ ├── Middleware/ │ │ │ │ │ ├── Authenticate.php │ │ │ │ │ ├── EncryptCookies.php │ │ │ │ │ ├── HandleInertiaRequests.php │ │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ │ ├── TrimStrings.php │ │ │ │ │ ├── TrustHosts.php │ │ │ │ │ ├── TrustProxies.php │ │ │ │ │ ├── ValidateSignature.php │ │ │ │ │ └── VerifyCsrfToken.php │ │ │ │ ├── Requests/ │ │ │ │ │ └── PrecognitionFormRequest.php │ │ │ │ └── Resources/ │ │ │ │ └── UserResource.php │ │ │ ├── Models/ │ │ │ │ ├── ChatMessage.php │ │ │ │ └── User.php │ │ │ └── Providers/ │ │ │ ├── AppServiceProvider.php │ │ │ ├── AuthServiceProvider.php │ │ │ ├── BroadcastServiceProvider.php │ │ │ ├── EventServiceProvider.php │ │ │ └── RouteServiceProvider.php │ │ ├── artisan │ │ ├── bootstrap/ │ │ │ ├── app.php │ │ │ └── cache/ │ │ │ └── .gitignore │ │ ├── composer.json │ │ ├── config/ │ │ │ ├── app.php │ │ │ ├── auth.php │ │ │ ├── broadcasting.php │ │ │ ├── cache.php │ │ │ ├── cors.php │ │ │ ├── database.php │ │ │ ├── filesystems.php │ │ │ ├── hashing.php │ │ │ ├── inertia.php │ │ │ ├── logging.php │ │ │ ├── mail.php │ │ │ ├── prism.php │ │ │ ├── queue.php │ │ │ ├── sanctum.php │ │ │ ├── services.php │ │ │ ├── session.php │ │ │ └── view.php │ │ ├── database/ │ │ │ ├── .gitignore │ │ │ ├── factories/ │ │ │ │ ├── ChatMessageFactory.php │ │ │ │ └── UserFactory.php │ │ │ ├── migrations/ │ │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ │ │ └── 2025_08_29_115526_create_chat_messages_table.php │ │ │ └── seeders/ │ │ │ ├── DatabaseSeeder.php │ │ │ └── conversation.json │ │ ├── init.sh │ │ ├── lang/ │ │ │ └── en/ │ │ │ ├── auth.php │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ │ ├── package.json │ │ ├── phpunit.xml │ │ ├── public/ │ │ │ ├── .htaccess │ │ │ ├── index.php │ │ │ └── robots.txt │ │ ├── resources/ │ │ │ ├── css/ │ │ │ │ └── app.css │ │ │ ├── js/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── DeferredFood.tsx │ │ │ │ │ ├── DeferredOrganizations.tsx │ │ │ │ │ ├── DeferredUsers.tsx │ │ │ │ │ ├── Image.tsx │ │ │ │ │ ├── Layout.tsx │ │ │ │ │ ├── Message.tsx │ │ │ │ │ ├── PaperAirplaneIcon.tsx │ │ │ │ │ ├── Spinner.tsx │ │ │ │ │ ├── StreamingIndicator.tsx │ │ │ │ │ ├── TestGrid.tsx │ │ │ │ │ ├── TestGridItem.tsx │ │ │ │ │ └── Textarea.tsx │ │ │ │ ├── Pages/ │ │ │ │ │ ├── Article.tsx │ │ │ │ │ ├── Async.tsx │ │ │ │ │ ├── Chat.tsx │ │ │ │ │ ├── DataTable.tsx │ │ │ │ │ ├── Defer.tsx │ │ │ │ │ ├── Flash.tsx │ │ │ │ │ ├── Form.tsx │ │ │ │ │ ├── FormComponent.tsx │ │ │ │ │ ├── FormComponentPrecognition.tsx │ │ │ │ │ ├── Home.tsx │ │ │ │ │ ├── Login.tsx │ │ │ │ │ ├── Once/ │ │ │ │ │ │ ├── First.tsx │ │ │ │ │ │ ├── Fourth.tsx │ │ │ │ │ │ ├── Layout.tsx │ │ │ │ │ │ ├── Second.tsx │ │ │ │ │ │ └── Third.tsx │ │ │ │ │ ├── PhotoGrid.tsx │ │ │ │ │ ├── PhotoHorizontal.tsx │ │ │ │ │ ├── Poll.tsx │ │ │ │ │ ├── User.tsx │ │ │ │ │ └── Users.tsx │ │ │ │ ├── app.tsx │ │ │ │ ├── ssr.tsx │ │ │ │ ├── types/ │ │ │ │ │ └── globals.d.ts │ │ │ │ └── vite.d.ts │ │ │ └── views/ │ │ │ └── app.blade.php │ │ ├── routes/ │ │ │ ├── api.php │ │ │ ├── channels.php │ │ │ ├── console.php │ │ │ └── web.php │ │ ├── storage/ │ │ │ ├── app/ │ │ │ │ └── .gitignore │ │ │ ├── framework/ │ │ │ │ ├── .gitignore │ │ │ │ ├── cache/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── sessions/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── testing/ │ │ │ │ │ └── .gitignore │ │ │ │ └── views/ │ │ │ │ └── .gitignore │ │ │ └── logs/ │ │ │ └── .gitignore │ │ ├── tests/ │ │ │ ├── CreatesApplication.php │ │ │ ├── Feature/ │ │ │ │ └── ExampleTest.php │ │ │ ├── TestCase.php │ │ │ └── Unit/ │ │ │ └── ExampleTest.php │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── svelte4/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── Console/ │ │ │ │ └── Kernel.php │ │ │ ├── Exceptions/ │ │ │ │ └── Handler.php │ │ │ ├── Http/ │ │ │ │ ├── Controllers/ │ │ │ │ │ └── Controller.php │ │ │ │ ├── Kernel.php │ │ │ │ ├── Middleware/ │ │ │ │ │ ├── Authenticate.php │ │ │ │ │ ├── EncryptCookies.php │ │ │ │ │ ├── HandleInertiaRequests.php │ │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ │ ├── TrimStrings.php │ │ │ │ │ ├── TrustHosts.php │ │ │ │ │ ├── TrustProxies.php │ │ │ │ │ ├── ValidateSignature.php │ │ │ │ │ └── VerifyCsrfToken.php │ │ │ │ └── Requests/ │ │ │ │ └── PrecognitionFormRequest.php │ │ │ ├── Models/ │ │ │ │ └── User.php │ │ │ └── Providers/ │ │ │ ├── AppServiceProvider.php │ │ │ ├── AuthServiceProvider.php │ │ │ ├── BroadcastServiceProvider.php │ │ │ ├── EventServiceProvider.php │ │ │ └── RouteServiceProvider.php │ │ ├── artisan │ │ ├── bootstrap/ │ │ │ ├── app.php │ │ │ └── cache/ │ │ │ └── .gitignore │ │ ├── composer.json │ │ ├── config/ │ │ │ ├── app.php │ │ │ ├── auth.php │ │ │ ├── broadcasting.php │ │ │ ├── cache.php │ │ │ ├── cors.php │ │ │ ├── database.php │ │ │ ├── filesystems.php │ │ │ ├── hashing.php │ │ │ ├── inertia.php │ │ │ ├── logging.php │ │ │ ├── mail.php │ │ │ ├── queue.php │ │ │ ├── sanctum.php │ │ │ ├── services.php │ │ │ ├── session.php │ │ │ └── view.php │ │ ├── database/ │ │ │ ├── .gitignore │ │ │ ├── factories/ │ │ │ │ └── UserFactory.php │ │ │ ├── migrations/ │ │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ │ └── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ │ └── seeders/ │ │ │ └── DatabaseSeeder.php │ │ ├── init.sh │ │ ├── lang/ │ │ │ └── en/ │ │ │ ├── auth.php │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ │ ├── package.json │ │ ├── phpunit.xml │ │ ├── public/ │ │ │ ├── .htaccess │ │ │ ├── index.php │ │ │ └── robots.txt │ │ ├── resources/ │ │ │ ├── css/ │ │ │ │ └── app.css │ │ │ ├── js/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── Image.svelte │ │ │ │ │ ├── Layout.svelte │ │ │ │ │ ├── Spinner.svelte │ │ │ │ │ ├── TestGrid.svelte │ │ │ │ │ └── TestGridItem.svelte │ │ │ │ ├── Pages/ │ │ │ │ │ ├── Article.svelte │ │ │ │ │ ├── Async.svelte │ │ │ │ │ ├── DataTable.svelte │ │ │ │ │ ├── Defer.svelte │ │ │ │ │ ├── Flash.svelte │ │ │ │ │ ├── Form.svelte │ │ │ │ │ ├── FormComponent.svelte │ │ │ │ │ ├── FormComponentPrecognition.svelte │ │ │ │ │ ├── Home.svelte │ │ │ │ │ ├── InfiniteScroll.svelte │ │ │ │ │ ├── Login.svelte │ │ │ │ │ ├── Once/ │ │ │ │ │ │ ├── First.svelte │ │ │ │ │ │ ├── Fourth.svelte │ │ │ │ │ │ ├── Layout.svelte │ │ │ │ │ │ ├── Second.svelte │ │ │ │ │ │ └── Third.svelte │ │ │ │ │ ├── PhotoGrid.svelte │ │ │ │ │ ├── PhotoHorizontal.svelte │ │ │ │ │ ├── Poll.svelte │ │ │ │ │ ├── User.svelte │ │ │ │ │ └── Users.svelte │ │ │ │ ├── app.ts │ │ │ │ ├── ssr.ts │ │ │ │ ├── types/ │ │ │ │ │ └── globals.d.ts │ │ │ │ └── vite-env.d.ts │ │ │ └── views/ │ │ │ └── app.blade.php │ │ ├── routes/ │ │ │ ├── api.php │ │ │ ├── channels.php │ │ │ ├── console.php │ │ │ └── web.php │ │ ├── storage/ │ │ │ ├── app/ │ │ │ │ └── .gitignore │ │ │ ├── framework/ │ │ │ │ ├── .gitignore │ │ │ │ ├── cache/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── sessions/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── testing/ │ │ │ │ │ └── .gitignore │ │ │ │ └── views/ │ │ │ │ └── .gitignore │ │ │ └── logs/ │ │ │ └── .gitignore │ │ ├── svelte.config.js │ │ ├── tests/ │ │ │ ├── CreatesApplication.php │ │ │ ├── Feature/ │ │ │ │ └── ExampleTest.php │ │ │ ├── TestCase.php │ │ │ └── Unit/ │ │ │ └── ExampleTest.php │ │ ├── tsconfig.json │ │ └── vite.config.js │ ├── svelte5/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── Console/ │ │ │ │ └── Kernel.php │ │ │ ├── Exceptions/ │ │ │ │ └── Handler.php │ │ │ ├── Http/ │ │ │ │ ├── Controllers/ │ │ │ │ │ └── Controller.php │ │ │ │ ├── Kernel.php │ │ │ │ ├── Middleware/ │ │ │ │ │ ├── Authenticate.php │ │ │ │ │ ├── EncryptCookies.php │ │ │ │ │ ├── HandleInertiaRequests.php │ │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ │ ├── TrimStrings.php │ │ │ │ │ ├── TrustHosts.php │ │ │ │ │ ├── TrustProxies.php │ │ │ │ │ ├── ValidateSignature.php │ │ │ │ │ └── VerifyCsrfToken.php │ │ │ │ └── Requests/ │ │ │ │ └── PrecognitionFormRequest.php │ │ │ ├── Models/ │ │ │ │ └── User.php │ │ │ └── Providers/ │ │ │ ├── AppServiceProvider.php │ │ │ ├── AuthServiceProvider.php │ │ │ ├── BroadcastServiceProvider.php │ │ │ ├── EventServiceProvider.php │ │ │ └── RouteServiceProvider.php │ │ ├── artisan │ │ ├── bootstrap/ │ │ │ ├── app.php │ │ │ └── cache/ │ │ │ └── .gitignore │ │ ├── composer.json │ │ ├── config/ │ │ │ ├── app.php │ │ │ ├── auth.php │ │ │ ├── broadcasting.php │ │ │ ├── cache.php │ │ │ ├── cors.php │ │ │ ├── database.php │ │ │ ├── filesystems.php │ │ │ ├── hashing.php │ │ │ ├── inertia.php │ │ │ ├── logging.php │ │ │ ├── mail.php │ │ │ ├── queue.php │ │ │ ├── sanctum.php │ │ │ ├── services.php │ │ │ ├── session.php │ │ │ └── view.php │ │ ├── database/ │ │ │ ├── .gitignore │ │ │ ├── factories/ │ │ │ │ └── UserFactory.php │ │ │ ├── migrations/ │ │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ │ └── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ │ └── seeders/ │ │ │ └── DatabaseSeeder.php │ │ ├── init.sh │ │ ├── lang/ │ │ │ └── en/ │ │ │ ├── auth.php │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ │ ├── package.json │ │ ├── phpunit.xml │ │ ├── public/ │ │ │ ├── .htaccess │ │ │ ├── index.php │ │ │ └── robots.txt │ │ ├── resources/ │ │ │ ├── css/ │ │ │ │ └── app.css │ │ │ ├── js/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── Image.svelte │ │ │ │ │ ├── Layout.svelte │ │ │ │ │ ├── Spinner.svelte │ │ │ │ │ ├── TestGrid.svelte │ │ │ │ │ └── TestGridItem.svelte │ │ │ │ ├── Pages/ │ │ │ │ │ ├── Article.svelte │ │ │ │ │ ├── Async.svelte │ │ │ │ │ ├── DataTable.svelte │ │ │ │ │ ├── Flash.svelte │ │ │ │ │ ├── Form.svelte │ │ │ │ │ ├── FormComponent.svelte │ │ │ │ │ ├── FormComponentPrecognition.svelte │ │ │ │ │ ├── Home.svelte │ │ │ │ │ ├── Login.svelte │ │ │ │ │ ├── Once/ │ │ │ │ │ │ ├── First.svelte │ │ │ │ │ │ ├── Fourth.svelte │ │ │ │ │ │ ├── Layout.svelte │ │ │ │ │ │ ├── Second.svelte │ │ │ │ │ │ └── Third.svelte │ │ │ │ │ ├── PhotoGrid.svelte │ │ │ │ │ ├── PhotoHorizontal.svelte │ │ │ │ │ ├── Poll.svelte │ │ │ │ │ ├── User.svelte │ │ │ │ │ └── Users.svelte │ │ │ │ ├── app.ts │ │ │ │ ├── ssr.ts │ │ │ │ ├── types/ │ │ │ │ │ └── globals.d.ts │ │ │ │ └── vite-env.d.ts │ │ │ └── views/ │ │ │ └── app.blade.php │ │ ├── routes/ │ │ │ ├── api.php │ │ │ ├── channels.php │ │ │ ├── console.php │ │ │ └── web.php │ │ ├── storage/ │ │ │ ├── app/ │ │ │ │ └── .gitignore │ │ │ ├── framework/ │ │ │ │ ├── .gitignore │ │ │ │ ├── cache/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── sessions/ │ │ │ │ │ └── .gitignore │ │ │ │ ├── testing/ │ │ │ │ │ └── .gitignore │ │ │ │ └── views/ │ │ │ │ └── .gitignore │ │ │ └── logs/ │ │ │ └── .gitignore │ │ ├── tests/ │ │ │ ├── CreatesApplication.php │ │ │ ├── Feature/ │ │ │ │ └── ExampleTest.php │ │ │ ├── TestCase.php │ │ │ └── Unit/ │ │ │ └── ExampleTest.php │ │ ├── tsconfig.json │ │ └── vite.config.js │ └── vue3/ │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── app/ │ │ ├── Console/ │ │ │ └── Kernel.php │ │ ├── Exceptions/ │ │ │ └── Handler.php │ │ ├── Http/ │ │ │ ├── Controllers/ │ │ │ │ └── Controller.php │ │ │ ├── Kernel.php │ │ │ ├── Middleware/ │ │ │ │ ├── Authenticate.php │ │ │ │ ├── EncryptCookies.php │ │ │ │ ├── HandleInertiaRequests.php │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ ├── TrimStrings.php │ │ │ │ ├── TrustHosts.php │ │ │ │ ├── TrustProxies.php │ │ │ │ ├── ValidateSignature.php │ │ │ │ └── VerifyCsrfToken.php │ │ │ ├── Requests/ │ │ │ │ └── PrecognitionFormRequest.php │ │ │ └── Resources/ │ │ │ └── UserResource.php │ │ ├── Models/ │ │ │ ├── ChatMessage.php │ │ │ └── User.php │ │ └── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ ├── artisan │ ├── bootstrap/ │ │ ├── app.php │ │ └── cache/ │ │ └── .gitignore │ ├── composer.json │ ├── config/ │ │ ├── app.php │ │ ├── auth.php │ │ ├── broadcasting.php │ │ ├── cache.php │ │ ├── cors.php │ │ ├── database.php │ │ ├── filesystems.php │ │ ├── hashing.php │ │ ├── inertia.php │ │ ├── logging.php │ │ ├── mail.php │ │ ├── prism.php │ │ ├── queue.php │ │ ├── sanctum.php │ │ ├── services.php │ │ ├── session.php │ │ └── view.php │ ├── database/ │ │ ├── .gitignore │ │ ├── factories/ │ │ │ ├── ChatMessageFactory.php │ │ │ └── UserFactory.php │ │ ├── migrations/ │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ │ └── 2025_08_29_115526_create_chat_messages_table.php │ │ └── seeders/ │ │ ├── DatabaseSeeder.php │ │ └── conversation.json │ ├── init.sh │ ├── lang/ │ │ └── en/ │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php │ ├── package.json │ ├── phpunit.xml │ ├── public/ │ │ ├── .htaccess │ │ ├── index.php │ │ └── robots.txt │ ├── resources/ │ │ ├── css/ │ │ │ └── app.css │ │ ├── js/ │ │ │ ├── Components/ │ │ │ │ ├── Image.vue │ │ │ │ ├── Layout.vue │ │ │ │ ├── Message.vue │ │ │ │ ├── PaperAirplaneIcon.vue │ │ │ │ ├── PhotoIcon.vue │ │ │ │ ├── Spinner.vue │ │ │ │ ├── StreamingIndicator.vue │ │ │ │ ├── TestGrid.vue │ │ │ │ ├── TestGridItem.vue │ │ │ │ └── Textarea.vue │ │ │ ├── Pages/ │ │ │ │ ├── Article.vue │ │ │ │ ├── Async.vue │ │ │ │ ├── Chat.vue │ │ │ │ ├── DataTable.vue │ │ │ │ ├── Defer.vue │ │ │ │ ├── Flash.vue │ │ │ │ ├── Form.vue │ │ │ │ ├── FormComponent.vue │ │ │ │ ├── FormComponentPrecognition.vue │ │ │ │ ├── Home.vue │ │ │ │ ├── InfiniteScroll.vue │ │ │ │ ├── Login.vue │ │ │ │ ├── Once/ │ │ │ │ │ ├── First.vue │ │ │ │ │ ├── Fourth.vue │ │ │ │ │ ├── Layout.vue │ │ │ │ │ ├── Second.vue │ │ │ │ │ └── Third.vue │ │ │ │ ├── PhotoGrid.vue │ │ │ │ ├── PhotoHorizontal.vue │ │ │ │ ├── Poll.vue │ │ │ │ ├── User.vue │ │ │ │ └── Users.vue │ │ │ ├── app.ts │ │ │ ├── ssr.ts │ │ │ ├── types/ │ │ │ │ └── globals.d.ts │ │ │ └── vite-env.d.ts │ │ └── views/ │ │ └── app.blade.php │ ├── routes/ │ │ ├── api.php │ │ ├── channels.php │ │ ├── console.php │ │ └── web.php │ ├── storage/ │ │ ├── app/ │ │ │ └── .gitignore │ │ ├── framework/ │ │ │ ├── .gitignore │ │ │ ├── cache/ │ │ │ │ └── .gitignore │ │ │ ├── sessions/ │ │ │ │ └── .gitignore │ │ │ ├── testing/ │ │ │ │ └── .gitignore │ │ │ └── views/ │ │ │ └── .gitignore │ │ └── logs/ │ │ └── .gitignore │ ├── tests/ │ │ ├── CreatesApplication.php │ │ ├── Feature/ │ │ │ └── ExampleTest.php │ │ ├── TestCase.php │ │ └── Unit/ │ │ └── ExampleTest.php │ ├── tsconfig.json │ └── vite.config.ts ├── playwright.config.ts ├── playwright.js ├── pnpm-workspace.yaml ├── prettier.config.js ├── release.sh └── tests/ ├── app/ │ ├── eloquent.js │ ├── helpers.js │ ├── package.json │ ├── server-status.js │ ├── server.js │ └── ssr.js ├── client-side-visits-props.spec.ts ├── client-side-visits-sequential.spec.ts ├── client-side-visits.spec.ts ├── config.spec.ts ├── core/ │ ├── config.test.ts │ ├── formObject.test.ts │ ├── objectUtils.test.ts │ └── url.test.ts ├── deep-merge-props.spec.ts ├── deferred-props-cancellation.spec.ts ├── deferred-props.spec.ts ├── domUtils.spec.ts ├── error-modal.spec.ts ├── events.spec.ts ├── flash.spec.ts ├── form-component-context.spec.ts ├── form-component.spec.ts ├── form-helper.spec.ts ├── head.spec.ts ├── history-quota.spec.ts ├── history-throttle.spec.ts ├── history.spec.ts ├── inertia.spec.ts ├── infinite-scroll.spec.ts ├── initial-visit.spec.ts ├── links.spec.ts ├── manual-visits.spec.ts ├── match-props-on-key.spec.ts ├── merge-props.spec.ts ├── network-error.spec.ts ├── once-props.spec.ts ├── pages.spec.ts ├── plugin.spec.ts ├── poll.spec.ts ├── precognition.spec.ts ├── prefetch.spec.ts ├── progress-component.spec.ts ├── remember.spec.ts ├── scroll-smooth.spec.ts ├── ssr.spec.ts ├── support.ts ├── svelte.spec.ts ├── view-transitions.spec.ts └── when-visible.spec.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true [*.{php,xml,htaccess}] indent_size = 4 [*.blade.php] indent_size = 2 ================================================ FILE: .gitattributes ================================================ # exclude playgrounds/ since otherwise the project gets classified as mainly php based. # https://github.com/github-linguist/linguist/blob/master/docs/overrides.md#summary playgrounds/** linguist-vendored * text=auto ================================================ FILE: .github/CODE_OF_CONDUCT.md ================================================ # Code of Conduct The Laravel Code of Conduct can be found in the [Laravel documentation](https://laravel.com/docs/contributions#code-of-conduct). ================================================ FILE: .github/ISSUE_TEMPLATE/0-bug-report.yml ================================================ name: Bug Report description: 'Submit an issue.' body: - type: markdown attributes: value: | Please read [our full contribution guide](https://laravel.com/docs/contributions#bug-reports) before submitting bug reports. Before submitting, please confirm: - You have **upgraded to the latest version** of both the JS package (`@inertiajs/{adapter}`) and the server-side adapter (`inertiajs/inertia-laravel`) and confirmed the issue still exists - Only Inertia **2.x** and **3.x (beta)** are supported. Issues for 0.x or 1.x will be closed. - type: dropdown attributes: label: Inertia version description: Which major version of Inertia are you using? options: - 2.x (stable) - 3.x (beta) validations: required: true - type: checkboxes attributes: label: Inertia adapter(s) affected description: Select all frontend adapters that are impacted by this issue. options: - label: React - label: Vue 3 - label: Svelte - label: Not Applicable - type: input attributes: label: 'JS package version' description: Provide the exact version of `@inertiajs/{adapter}` you are using (e.g. 2.0.3 or 3.0.0-beta.2). placeholder: 2.0.3 validations: required: true - type: textarea attributes: label: Backend stack (optional) description: If this bug depends on backend integration, provide details such as Laravel version, PHP version, or other relevant environment info. placeholder: | Laravel 12.x PHP 8.4 validations: required: false - type: textarea attributes: label: Describe the problem description: Explain the behavior you're seeing that you think is a bug, and describe how you expect it to behave instead. validations: required: true - type: textarea attributes: label: Steps to reproduce description: Provide clear steps to reproduce the issue. Include a minimal code example that clearly shows the problem. validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/1-bug-report-react.yml ================================================ name: Bug Report - React description: 'Submit a React related issue.' labels: [react] body: - type: markdown attributes: value: | Please read [our full contribution guide](https://laravel.com/docs/contributions#bug-reports) before submitting bug reports. Before submitting, please confirm: - You have **upgraded to the latest version** of both `@inertiajs/react` and `inertiajs/inertia-laravel` and confirmed the issue still exists - Only Inertia **2.x** and **3.x (beta)** are supported. Issues for 0.x or 1.x will be closed. - type: dropdown attributes: label: Inertia version description: Which major version of Inertia are you using? options: - 2.x (stable) - 3.x (beta) validations: required: true - type: input attributes: label: '@inertiajs/react Version' description: Provide the exact version of `@inertiajs/react` you are using (e.g. 2.0.3 or 3.0.0-beta.2). placeholder: 2.0.3 validations: required: true - type: textarea attributes: label: Backend stack (optional) description: If this bug depends on backend integration, provide details such as Laravel version, PHP version, or other relevant environment info. placeholder: | Laravel 12.x PHP 8.4 validations: required: false - type: textarea attributes: label: Describe the problem description: Explain the behavior you're seeing that you think is a bug, and describe how you expect it to behave instead. validations: required: true - type: textarea attributes: label: Steps to reproduce description: Provide clear steps to reproduce the issue. Include a minimal code example that clearly shows the problem. validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/2-bug-report-vue.yml ================================================ name: Bug Report - Vue 3 description: 'Submit a Vue 3 related issue.' labels: ['vue 3'] body: - type: markdown attributes: value: | Please read [our full contribution guide](https://laravel.com/docs/contributions#bug-reports) before submitting bug reports. Before submitting, please confirm: - You have **upgraded to the latest version** of both `@inertiajs/vue3` and `inertiajs/inertia-laravel` and confirmed the issue still exists - Only Inertia **2.x** and **3.x (beta)** are supported. Issues for 0.x or 1.x will be closed. - type: dropdown attributes: label: Inertia version description: Which major version of Inertia are you using? options: - 2.x (stable) - 3.x (beta) validations: required: true - type: input attributes: label: '@inertiajs/vue3 Version' description: Provide the exact version of `@inertiajs/vue3` you are using (e.g. 2.0.3 or 3.0.0-beta.2). placeholder: 2.0.3 validations: required: true - type: textarea attributes: label: Backend stack (optional) description: If this bug depends on backend integration, provide details such as Laravel version, PHP version, or other relevant environment info. placeholder: | Laravel 12.x PHP 8.4 validations: required: false - type: textarea attributes: label: Describe the problem description: Explain the behavior you're seeing that you think is a bug, and describe how you expect it to behave instead. validations: required: true - type: textarea attributes: label: Steps to reproduce description: Provide clear steps to reproduce the issue. Include a minimal code example that clearly shows the problem. validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/3-bug-report-svelte.yml ================================================ name: Bug Report - Svelte description: 'Submit a Svelte related issue.' labels: [svelte] assignees: - pedroborges body: - type: markdown attributes: value: | Please read [our full contribution guide](https://laravel.com/docs/contributions#bug-reports) before submitting bug reports. Before submitting, please confirm: - You have **upgraded to the latest version** of both `@inertiajs/svelte` and `inertiajs/inertia-laravel` and confirmed the issue still exists - Only Inertia **2.x** and **3.x (beta)** are supported. Issues for 0.x or 1.x will be closed. - type: dropdown attributes: label: Inertia version description: Which major version of Inertia are you using? options: - 2.x (stable) - 3.x (beta) validations: required: true - type: input attributes: label: '@inertiajs/svelte Version' description: Provide the exact version of `@inertiajs/svelte` you are using (e.g. 2.0.3 or 3.0.0-beta.2). placeholder: 2.0.3 validations: required: true - type: textarea attributes: label: Backend stack (optional) description: If this bug depends on backend integration, provide details such as Laravel version, PHP version, or other relevant environment info. placeholder: | Laravel 12.x PHP 8.4 validations: required: false - type: textarea attributes: label: Describe the problem description: Explain the behavior you're seeing that you think is a bug, and describe how you expect it to behave instead. validations: required: true - type: textarea attributes: label: Steps to reproduce description: Provide clear steps to reproduce the issue. Include a minimal code example that clearly shows the problem. validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Feature Request url: https://github.com/inertiajs/inertia/discussions/new?category=ideas about: 'For ideas or feature requests, start a new discussion' - name: Support Questions & Other url: https://github.com/inertiajs/inertia/discussions/new?category=help about: 'This repository is only for reporting bugs. If you have a question or need help using the library, click:' - name: Documentation issue url: https://github.com/inertiajs/docs about: For documentation issues, open a pull request at the inertiajs/docs repository ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ================================================ FILE: .github/SECURITY.md ================================================ # Security Policy **PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY, [SEE BELOW](#reporting-a-vulnerability).** ## Supported Versions Only the latest major version receives security fixes. ## Reporting a Vulnerability If you discover a security vulnerability within Laravel, please send an email to Taylor Otwell at taylor@laravel.com. All security vulnerabilities will be promptly addressed. ### Public PGP Key ``` -----BEGIN PGP PUBLIC KEY BLOCK----- Version: OpenPGP v2.0.8 Comment: Report Security Vulnerabilities to taylor@laravel.com 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 WBGOG/qJGDlNiqBYYt2xNqzHCJoC =zXOv -----END PGP PUBLIC KEY BLOCK----- ``` ================================================ FILE: .github/SUPPORT.md ================================================ # Support Questions The Laravel support guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions#support-questions). ================================================ FILE: .github/workflows/build.yml ================================================ name: Build on: [push, pull_request] jobs: build: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository timeout-minutes: 15 runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm build:all ================================================ FILE: .github/workflows/coding-standards.yml ================================================ name: Coding Standards on: push: branches: - master pull_request: jobs: format: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Install dependencies run: pnpm install - name: Format code run: pnpm run format - name: Commit linted files uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: 'Fix code style' ================================================ FILE: .github/workflows/es2020-compatibility.yml ================================================ name: Compatibility Checks on: [push, pull_request] jobs: es2020-compatibility: name: ES2020 (${{ matrix.adapter }}) if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository runs-on: ubuntu-24.04 timeout-minutes: 15 strategy: fail-fast: false matrix: adapter: ['core', 'react', 'vue', 'svelte'] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build core package if: matrix.adapter != 'core' run: pnpm -r --filter ./packages/core build - name: Validate ES2020 compatibility run: pnpm -r --filter ./packages/${{ matrix.adapter }}* es2020-check ================================================ FILE: .github/workflows/playwright-chromium.yml ================================================ name: Playwright Tests on Chromium on: [push, pull_request] jobs: test-chromium: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository name: Chromium (${{ matrix.adapter }}) timeout-minutes: 15 runs-on: ubuntu-24.04 strategy: matrix: adapter: ['vue', 'react', 'svelte'] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }}* build - name: Install Playwright Browsers run: pnpm playwright install chromium - name: Run Playwright Tests run: pnpm test:${{ matrix.adapter }} - name: Upload failure screenshots if: failure() uses: actions/upload-artifact@v4 with: name: playwright-failure-screenshots-${{ matrix.adapter }}-chromium path: test-results test-chromium-ssr: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository name: Chromium SSR (${{ matrix.adapter }}) timeout-minutes: 15 runs-on: ubuntu-24.04 strategy: matrix: adapter: ['vue', 'react', 'svelte'] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }}* build - name: Install Playwright Browsers run: pnpm playwright install chromium - name: Run Playwright SSR Tests run: pnpm test:ssr:${{ matrix.adapter }} --project=chromium - name: Upload failure screenshots if: failure() uses: actions/upload-artifact@v4 with: name: playwright-failure-screenshots-${{ matrix.adapter }}-chromium-ssr path: test-results ================================================ FILE: .github/workflows/playwright-firefox.yml ================================================ name: Playwright Tests on Firefox on: [push, pull_request] jobs: test-firefox: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository name: Firefox (${{ matrix.adapter }}) - shard ${{ matrix.shard }} of 3) timeout-minutes: 15 runs-on: ubuntu-24.04 strategy: matrix: adapter: ['vue', 'react', 'svelte'] shard: ['1', '2', '3'] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }}* build - name: Install Playwright Browsers run: pnpm playwright install firefox - name: Run Playwright Tests run: pnpm test:${{ matrix.adapter }} --firefox --shard=${{ matrix.shard }}/3 - name: Upload failure screenshots if: failure() uses: actions/upload-artifact@v4 with: name: playwright-failure-screenshots-${{ matrix.adapter }}-firefox-shard-${{ matrix.shard }} path: test-results ================================================ FILE: .github/workflows/playwright-webkit.yml ================================================ name: Playwright Tests on WebKit on: [push, pull_request] jobs: test-webkit: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository name: WebKit (${{ matrix.adapter }} - shard ${{ matrix.shard }} of 4) timeout-minutes: 15 runs-on: macos-15 strategy: matrix: adapter: ['vue', 'react', 'svelte'] shard: ['1', '2', '3', '4'] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }}* build - name: Install Playwright Browsers run: pnpm playwright install webkit - name: Run Playwright Tests run: pnpm test:${{ matrix.adapter }} --webkit --shard=${{ matrix.shard }}/4 - name: Upload failure screenshots if: failure() uses: actions/upload-artifact@v4 with: name: playwright-failure-screenshots-${{ matrix.adapter }}-webkit-shard-${{ matrix.shard }} path: test-results ================================================ FILE: .github/workflows/publish.yml ================================================ name: Publish Packages on: release: types: [released, prereleased] permissions: id-token: write # Required for OIDC contents: read jobs: publish: runs-on: ubuntu-latest strategy: matrix: adapter: ['core', 'vue3', 'react', 'svelte'] steps: - name: Checkout uses: actions/checkout@v6 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - uses: actions/setup-node@v6 with: node-version: 24 registry-url: 'https://registry.npmjs.org' cache: pnpm # Ensure npm 11.5.1 or later is installed - name: Update npm run: npm install -g npm@latest - name: Install dependencies run: pnpm install - name: 'Publish ${{ matrix.adapter }}' run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }} build - name: 'Publish ${{ matrix.adapter }} to npm' run: cd ./packages/${{ matrix.adapter }} && pnpm publish --no-git-checks ================================================ FILE: .github/workflows/test-app-quality.yml ================================================ name: Test App Quality on: [push, pull_request] jobs: test-app-quality: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository timeout-minutes: 15 runs-on: ubuntu-24.04 strategy: matrix: adapter: ['vue', 'react', 'svelte'] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22.14 cache: pnpm - name: Install dependencies run: pnpm install - name: Build Inertia run: pnpm -r --filter ./packages/core --filter ./packages/${{ matrix.adapter }}* build - name: Type-check test-app run: cd packages/${{ matrix.adapter == 'vue' && 'vue3' || matrix.adapter }}/test-app && pnpm run type-check - name: ESLint test-app run: cd packages/${{ matrix.adapter == 'vue' && 'vue3' || matrix.adapter }}/test-app && pnpm run lint ================================================ FILE: .github/workflows/update-changelog.yml ================================================ name: update changelog on: release: types: [released] permissions: {} jobs: update: permissions: contents: write uses: laravel/.github/.github/workflows/update-changelog.yml@main ================================================ FILE: .gitignore ================================================ .DS_Store .idea /packages/*/test-app/test-results/.last-run.json /packages/svelte/test-app/vite.config.js.timestamp-*.mjs /playwright-report /test-results node_modules ================================================ FILE: .prettierignore ================================================ # Dependencies node_modules/ **/vendor/ # Build outputs **/dist/ **/.svelte-kit **/bootstrap/ssr **/public/build # Files we don't want to format pnpm-lock.yaml *.lock *.md *.timestamp-*.mjs # Vue files with parsing issues (dual script blocks) packages/vue3/test-app/Pages/PersistentLayouts/RenderFunction/Nested/PageA.vue packages/vue3/test-app/Pages/PersistentLayouts/RenderFunction/Nested/PageB.vue packages/vue3/test-app/Pages/PersistentLayouts/RenderFunction/Simple/PageA.vue packages/vue3/test-app/Pages/PersistentLayouts/RenderFunction/Simple/PageB.vue packages/vue3/test-app/Pages/PersistentLayouts/Shorthand/Nested/PageA.vue packages/vue3/test-app/Pages/PersistentLayouts/Shorthand/Nested/PageB.vue # Directories we don't want to format **/test-results/ ================================================ FILE: CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For changes prior to v1.0.0, see the [legacy releases](https://legacy.inertiajs.com/releases). ## [Unreleased](https://github.com/inertiajs/inertia/compare/v2.3.18...master) - Nothing yet ## [v2.3.18](https://github.com/inertiajs/inertia/compare/v2.3.17...v2.3.18) - 2026-03-12 ### What's Changed * Bump [@sveltejs](https://github.com/sveltejs)/kit from 2.53.2 to 2.53.3 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2919 * Bump multer from 2.0.2 to 2.1.1 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2923 * [2.x] Remove request from stream on network failure by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2948 * Use SharedPageProps in GlobalEventsMap event types by [@hamedelasma](https://github.com/hamedelasma) in https://github.com/inertiajs/inertia/pull/2946 * [2.x] fix: include SharedPageProps in createInertiaApp and onSuccess types by [@isaackaara](https://github.com/isaackaara) in https://github.com/inertiajs/inertia/pull/2931 * [2.x] Remove `server-renderer` dependency from Vue adapter type by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2955 * [2.x] fix(types): module augmentation example by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2954 * [2.x] fix: always fire flash event regardless of partial reload equality by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2953 * fix: skip view transition when document visibility is hidden by [@mortenhauberg](https://github.com/mortenhauberg) in https://github.com/inertiajs/inertia/pull/2957 ### New Contributors * [@hamedelasma](https://github.com/hamedelasma) made their first contribution in https://github.com/inertiajs/inertia/pull/2946 * [@mortenhauberg](https://github.com/mortenhauberg) made their first contribution in https://github.com/inertiajs/inertia/pull/2957 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.17...v2.3.18 ## [v2.3.17](https://github.com/inertiajs/inertia/compare/v2.3.16...v2.3.17) - 2026-02-26 ### What's Changed * Include resources directory in published packages by [@pushpak1300](https://github.com/pushpak1300) in https://github.com/inertiajs/inertia/pull/2914 * [2.x] Bump deps by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2916 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.16...v2.3.17 ## [v2.3.16](https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16) - 2026-02-24 ### What's Changed * Bump [@sveltejs](https://github.com/sveltejs)/kit from 2.50.2 to 2.52.2 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2904 * Add Boost Guidelines & Skills by [@pushpak1300](https://github.com/pushpak1300) in https://github.com/inertiajs/inertia/pull/2896 ### New Contributors * [@pushpak1300](https://github.com/pushpak1300) made their first contribution in https://github.com/inertiajs/inertia/pull/2896 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16 ## [v2.3.15](https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15) - 2026-02-13 ### What's Changed * Bump axios from 1.13.2 to 1.13.5 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2888 * [2.x] Fix flash data being cleared by `history.replaceState` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2889 * [2.x] Handle `bfcache` restoration for encrypted history by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2890 * [2.x] Bump dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2891 * [2.x] Fix InfiniteScroll loading all pages in reverse mode with flex/grid layouts by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2893 * [2.x] Improve flaky tests and test app quality by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2895 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15 ## [v2.3.14](https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14) - 2026-02-11 ### What's Changed * [2.x] Shut down entire cluster on SSR shutdown by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2876 * [2.x] Fix `useForm` type inference when passing data as callback by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2878 * Add global configuration support for withAllErrors in form components by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2865 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14 ## [v2.3.13](https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13) - 2026-01-30 ### What's Changed * Fix `useForm` type inference in generic wrapper components by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2851 * Support wildcard paths in `validate()` method by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2854 **Full Changelog**: https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13 ## [v2.3.12](https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12) - 2026-01-27 ### What's Changed * Bump lodash from 4.17.21 to 4.17.23 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2835 * Bump lodash-es from 4.17.22 to 4.17.23 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2836 * Fix cancellation of concurrent partial reloads with query parameters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2843 * Support for the `formTarget` attribute in the `