@kimesh/query 0.0.1 → 0.1.0-nightly.20260119171158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -2
- package/dist/index.mjs +1 -2
- package/package.json +1 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -790,5 +790,4 @@ declare function useSuspenseQuery<T extends QueryOptionsOutput<unknown, QueryKey
|
|
|
790
790
|
declare function useSuspenseInfiniteQuery<T extends QueryOptionsOutput<unknown, QueryKey$1>>(options: T): Promise<UseInfiniteQueryReturnType<InferQueryData<T>, Error>>;
|
|
791
791
|
type UseSuspenseQueryReturnType<TData = unknown> = UseSuspenseQueryResult<TData>;
|
|
792
792
|
//#endregion
|
|
793
|
-
export { $fetch, type DeferrableQueryOptions, type FetchContext, type FetchError, type FetchPluginOptions, type FetchResponse, type FetchRuntimeConfig, KimeshQueryPlugin, type KimeshQueryPluginOptions, type KmAsyncDataContext, type KmAsyncDataResult, type KmFetchCreateOptions, type KmFetchInstance, type KmFetchRequestOptions, type LayerFetchPluginOptions, type LoadableComponent, type LoaderDefinition, QueryClient, type QueryKey, type QueryKeyFactory, type QueryPrefetchOptions, type UseKmAsyncDataOptions, type UseKmFetchOptions, type UseQueryReturnType, type UseSuspenseQueryReturnType, VueQueryPlugin, createKimeshQueryClient, createKmFetch, createNamedFetchPlugin, createPrefetcher, createQueryKeyFactory, defer, deferWithPromises, defineMutation, defineQuery, defineQueryOptions, executeLoader, extractLoaders, fetchPlugin, getCurrentLayer, getLayerFetch, hasLoader, initGlobalFetch, initLayerFetch, isLayerFetchInitialized, layerFetchPlugin, queryOptions, setCurrentLayer, setupQueryPrefetching, useGlobalFetch, useInfiniteQuery, useKmAsyncData, useKmData, useKmFetch, useLazyKmAsyncData, useLazyKmFetch, useMutation, useQuery, useQueryClient, useSuspenseInfiniteQuery, useSuspenseQuery };
|
|
794
|
-
//# sourceMappingURL=index.d.mts.map
|
|
793
|
+
export { $fetch, type DeferrableQueryOptions, type FetchContext, type FetchError, type FetchPluginOptions, type FetchResponse, type FetchRuntimeConfig, KimeshQueryPlugin, type KimeshQueryPluginOptions, type KmAsyncDataContext, type KmAsyncDataResult, type KmFetchCreateOptions, type KmFetchInstance, type KmFetchRequestOptions, type LayerFetchPluginOptions, type LoadableComponent, type LoaderDefinition, QueryClient, type QueryKey, type QueryKeyFactory, type QueryPrefetchOptions, type UseKmAsyncDataOptions, type UseKmFetchOptions, type UseQueryReturnType, type UseSuspenseQueryReturnType, VueQueryPlugin, createKimeshQueryClient, createKmFetch, createNamedFetchPlugin, createPrefetcher, createQueryKeyFactory, defer, deferWithPromises, defineMutation, defineQuery, defineQueryOptions, executeLoader, extractLoaders, fetchPlugin, getCurrentLayer, getLayerFetch, hasLoader, initGlobalFetch, initLayerFetch, isLayerFetchInitialized, layerFetchPlugin, queryOptions, setCurrentLayer, setupQueryPrefetching, useGlobalFetch, useInfiniteQuery, useKmAsyncData, useKmData, useKmFetch, useLazyKmAsyncData, useLazyKmFetch, useMutation, useQuery, useQueryClient, useSuspenseInfiniteQuery, useSuspenseQuery };
|
package/dist/index.mjs
CHANGED
|
@@ -1001,5 +1001,4 @@ async function useSuspenseInfiniteQuery(options) {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
|
|
1003
1003
|
//#endregion
|
|
1004
|
-
export { $fetch, KimeshQueryPlugin, QueryClient, VueQueryPlugin, createKimeshQueryClient, createKmFetch, createNamedFetchPlugin, createPrefetcher, createQueryKeyFactory, defer, deferWithPromises, defineMutation, defineQuery, defineQueryOptions, executeLoader, extractLoaders, fetchPlugin, getCurrentLayer, getLayerFetch, hasLoader, initGlobalFetch, initLayerFetch, isLayerFetchInitialized, layerFetchPlugin, queryOptions, setCurrentLayer, setupQueryPrefetching, useGlobalFetch, useInfiniteQuery, useKmAsyncData, useKmData, useKmFetch, useLazyKmAsyncData, useLazyKmFetch, useMutation, useQuery, useQueryClient, useSuspenseInfiniteQuery, useSuspenseQuery };
|
|
1005
|
-
//# sourceMappingURL=index.mjs.map
|
|
1004
|
+
export { $fetch, KimeshQueryPlugin, QueryClient, VueQueryPlugin, createKimeshQueryClient, createKmFetch, createNamedFetchPlugin, createPrefetcher, createQueryKeyFactory, defer, deferWithPromises, defineMutation, defineQuery, defineQueryOptions, executeLoader, extractLoaders, fetchPlugin, getCurrentLayer, getLayerFetch, hasLoader, initGlobalFetch, initLayerFetch, isLayerFetchInitialized, layerFetchPlugin, queryOptions, setCurrentLayer, setupQueryPrefetching, useGlobalFetch, useInfiniteQuery, useKmAsyncData, useKmData, useKmFetch, useLazyKmAsyncData, useLazyKmFetch, useMutation, useQuery, useQueryClient, useSuspenseInfiniteQuery, useSuspenseQuery };
|
package/package.json
CHANGED
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/plugin.ts","../src/fetch/types.ts","../src/fetch/create-fetch.ts","../src/fetch/fetch-plugin.ts","../src/fetch/layer-fetch.ts","../src/fetch/global-fetch.ts","../src/loader.ts","../src/prefetch.ts","../src/types.ts","../src/composables/useKmFetch.ts","../src/composables/useKmAsyncData.ts","../src/composables/useKmData.ts","../src/define-query.ts","../src/define-mutation.ts","../src/query-keys.ts","../src/defer.ts","../src/suspense.ts"],"mappings":";;;;;;;;;AAkBA;;UAAiB,wBAAA,SAAiC,IAAA,CAAK,qBAAA;EAAA;EAAA,WAAA,GAEvC,aAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;EAAA;EAAA,KAAA;EAAA;EAAA,oBAAA;AAAA;AAAA;;;AAoBhB;AAmCA;;;;ACjEA;ADUgB,iBAoBA,uBAAA,CAAA,OAAA,GAAiC,wBAAA,GAAgC,aAAA;AAAA;AAmCjF;;;;ACjEA;;;;;;;;;;;;;;;AAgBA;;ADciF,cAmCpE,iBAAA,EAAmB,MAAA,CAAO,wBAAA;;;;ACjEvC;;;UAAiB,aAAA;EAAA,OAAA;EAAA,OAAA,GAEL,MAAA;EAAA,OAAA;EAAA,KAAA;EAAA,UAAA;EAAA,WAAA,GAII,kBAAA;EAAA,SAAA,IAAA,OAAA,EACQ,cAAA,YAAwB,OAAA;EAAA,cAAA,IAAA,OAAA,EACnB,cAAA;IAAA,KAAA,EAAwB,KAAA;EAAA,aAAmB,OAAA;EAAA,UAAA,IAAA,OAAA,EAC/C,cAAA;IAAA,QAAA,EAA2B,eAAA;EAAA,aAAoC,OAAA;EAAA,eAAA,IAAA,OAAA,EAC1D,cAAA;IAAA,QAAA,EAA2B,eAAA;EAAA,aAAoC,OAAA;AAAA;AAAA;;AAM7F;AAN6F,UAM5E,qBAAA,SAA8B,aAAA;EAAA,MAAA;EAAA,KAAA,GAErC,MAAA;EAAA,MAAA,GACC,MAAA;EAAA,IAAA;EAAA,YAAA;AAAA;AAAA;;;AAAA,UAQM,eAAA;EAAA,cAAA,GAAA,UAAA,OAAA,GACsB,qBAAA,GAAwB,OAAA,CAAQ,CAAA;EAAA,GAAA,cAAA,GAAA,UAAA,OAAA,GAC7B,qBAAA,GAAwB,OAAA,CAAQ,eAAA,CAAc,CAAA;EAAA,MAAA,CAAA,QAAA,EACrE,aAAA,GAAgB,eAAA;AAAA;AAAA,KAIvB,oBAAA,GAAuB,aAAA;AAAA,KACvB,kBAAA,GAAqB,aAAA;;;;ACzBjC;;;;ACGA;AAIC;;;;;;;iBDPe,aAAA,CAAA,MAAA,GAAsB,aAAA,GAAqB,eAAA;;;UCG1C,kBAAA;EAAA,MAAA,GACN,aAAA;EAAA,GAAA;EAAA,iBAAA;AAAA;AAAA,UAKD,gBAAA;EAAA,OAAA,EACC,MAAA;EAAA,aAAA,EACM,MAAA,SAAe,MAAA;EAAA,MAAA;IAAA,UAAA,GAAA,KAAA,GAAA,EAAA;MAAA,OAAA,EAEQ,KAAA;QAAA,IAAA;QAAA,IAAA;UAAA,aAAA;QAAA;MAAA;IAAA;EAAA;EAAA,KAAA;IAAA,IAAA,GAAA,IAAA,UAAA,QAAA,GAAA,GAAA;MAAA,EAAA;QAAA,OAAA,EAGkB,KAAA;UAAA,IAAA;UAAA,IAAA;YAAA,aAAA;UAAA;QAAA;MAAA;IAAA;EAAA;EAAA,OAAA,MAAA,IAAA,UAAA,KAAA,EAEtB,CAAA;AAAA;AAAA;;AAwCpC;;;;;AAmDA;;;;;AAIA;AAqBA;;;;ACtFA;;;;AD9BoC,iBAwCpB,WAAA,CAAA,OAAA,GAAqB,kBAAA,IAAA,GAAA,EAGd,gBAAA;EAAA,OAAA;IAAA,CAAA,CAAA;;;;;AAgDvB;;;;;AAIA;AAqBA;;iBAzBgB,sBAAA,CAAA,IAAA,UAAA,MAAA,GAA6C,aAAA,IAAA,GAAA,EAhDtC,gBAAA;EAAA,OAAA;IAAA,CAAA,CAAA;;;UAoDN,uBAAA;EAAA,KAAA;EAAA,SAAA,IAAA,GAAA;IAAA,OAAA;IAAA,OAAA,EAE+B,MAAA;EAAA;EAAA,UAAA,IAAA,GAAA;IAAA,OAAA;IAAA,QAAA;MAAA,MAAA;IAAA;EAAA;AAAA;AAAA;AAmBhD;;;;ACtFA;;;;;AAuBA;AAIA;AAQA;AAgBA;AAoBA;ADJgD,iBAmBhC,gBAAA,CAAA,OAAA,EAA0B,uBAAA;;;;ACtF1C;;iBAAgB,cAAA,CAAA,OAAA;EAAA,MAAA,EACN,MAAA,SAAe,aAAA;EAAA,OAAA,EACd,aAAA;AAAA;AAAA,iBAqBK,eAAA,CAAA,KAAA;AAAA,iBAIA,eAAA,CAAA;AAAA;AAQhB;AAgBA;AAoBA;AA5CgB,iBAQA,aAAA,CAAA,KAAA,YAA+B,eAAA;AAAA,iBAgB/B,uBAAA,CAAA;AAAA;AAoBhB;;;;AC9HA;AAeA;;;;ACfA;;;;;AAUA;AFgGgB,cAoBH,MAAA,EAAQ,eAAA;;;;AC9HrB;AAeA;;iBAfgB,eAAA,CAAA,MAAA;EAAA,OAAA;EAAA,KAAA,GAAoD,aAAA;AAAA,IAAkB,eAAA;AAAA;AAetF;;AAfsF,iBAetE,cAAA,CAAA,GAAkB,eAAA;;;;ACflC;;UAAiB,gBAAA;EAAA,QAAA,EACL,UAAA;EAAA,OAAA,QACK,OAAA,CAAQ,KAAA;EAAA,SAAA;EAAA,MAAA;AAAA;AAAA;;;AAAA,KAQb,QAAA,qBAAA,EAAA,EACN,uBAAA,KACD,gBAAA,CAAiB,KAAA,IAAS,gBAAA,CAAiB,KAAA;AAAA;;;AAAA,UAK/B,iBAAA;EAAA,MAAA,EACP,QAAA;AAAA;AAAA;AAaV;;AAbU,iBAaY,aAAA,CAAA,WAAA,EACP,aAAA,EAAA,MAAA,EACL,gBAAA,GAAmB,gBAAA,KAC1B,OAAA;AAAA;;AAkBH;AAlBG,iBAkBa,SAAA,CAAA,SAAA,YAAA,SAAA,IAA4C,iBAAA;AAAA;AAU5D;;AAV4D,iBAU5C,cAAA,CAAA,EAAA,EAAmB,uBAAA,GAA0B,gBAAA;;;;AC9D7D;;UAAiB,oBAAA;EAAA;EAAA,OAAA,IAAA,EAAA,EAEA,uBAAA,EAAA,OAAA,EAAkC,gBAAA;EAAA;EAAA,UAAA,IAAA,EAAA,EAE/B,uBAAA,EAAA,OAAA,EAAkC,gBAAA;EAAA;EAAA,OAAA,IAAA,KAAA,WAAA,EAAA,EAErB,uBAAA;EAAA;EAAA,OAAA,aAEX,MAAA;EAAA;EAAA,OAAA,aAEA,MAAA;AAAA;AAAA;;AAuDtB;;;;;AA0CA;;;;;;;;ACnHA;;;ADkBsB,iBAuDN,qBAAA,CAAA,MAAA,EACN,MAAA,EAAA,WAAA,EACK,aAAA,EAAA,OAAA,GACJ,oBAAA;AAAA;;AAuCX;;;;;;;;ACnHA;AD4EW,iBAuCK,gBAAA,CAAA,WAAA,EAA8B,aAAA,EAAA,MAAA,EAAqB,MAAA,IAAA,IAAA,aACnB,OAAA;;;;ACpHhD;;UAAiB,iBAAA;EAAA;EAAA,IAAA,EAET,GAAA,CAAI,CAAA;EAAA;EAAA,OAAA,EAED,WAAA;EAAA;EAAA,KAAA,EAEF,GAAA,CAAI,KAAA;EAAA;EAAA,MAAA,EAEH,WAAA;EAAA;EAAA,OAAA,QAEO,OAAA;EAAA;EAAA,OAAA,QAEA,OAAA;EAAA;EAAA,KAAA;AAAA;AAAA;;AAQjB;AARiB,KAQL,eAAA,qCAAoD,MAAA,WAAA,GAAA;EAAA,GAAA,kBACzC,KAAA;AAAA,kBAET,KAAA,GAAQ,KAAA,CAAM,CAAA,iCACN,KAAA,EAAO,CAAA,IACvB,KAAA,CAAM,CAAA,YAAA,GAAA,0BAAA,GAAA,EACE,CAAA,eAAgB,KAAA,EAAO,CAAA,EAAG,CAAA;;;;ACjBxC;;UAAiB,iBAAA;EAAA;EAAA,MAAA,GAGN,gBAAA;EAAA;EAAA,KAAA,GAED,gBAAA,CAAiB,MAAA;EAAA;EAAA,MAAA,GAEhB,gBAAA,CAAiB,MAAA;EAAA;EAAA,IAAA,GAEnB,gBAAA;EAAA;EAAA,OAAA,GAEG,gBAAA,CAAiB,MAAA;EAAA;EAAA,OAAA,GAEjB,gBAAA;EAAA;EAAA,OAAA,GAEA,gBAAA;EAAA;EAAA,SAAA,IAAA,OAAA,EAIY,YAAA,YAAwB,OAAA;EAAA;EAAA,cAAA,IAAA,OAAA,EAEnB,YAAA;IAAA,KAAA,EAAwB,KAAA;EAAA,aAAmB,OAAA;EAAA;EAAA,UAAA,IAAA,OAAA,EAE/C,YAAA;IAAA,QAAA,EAA2B,aAAA;EAAA,aAAoC,OAAA;EAAA;EAAA,eAAA,IAAA,OAAA,EAE1D,YAAA;IAAA,QAAA,EAA2B,aAAA;EAAA,aAAoC,OAAA;EAAA;EAAA,GAAA;EAAA;EAAA,SAAA;EAAA;EAAA,KAAA,GAQnF,WAAA;EAAA;EAAA,SAAA,IAAA,IAAA,cAEuB,CAAA;EAAA;EAAA,OAAA,SAEf,CAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;EAAA;EAAA,MAAA,GAUP,eAAA;AAAA;AAAA;;AAkFX;;;;;;;AAyEA;;;;;;;;;;AC3MA;AAQA;;;;;;AA0EA;;;;;ADlCW,iBAkFK,UAAA,GAAA,CAAA,GAAA,EACT,gBAAA,UAAA,OAAA,GACI,iBAAA,CAAkB,CAAA,IAC1B,iBAAA,CAAkB,CAAA;AAAA;;;AAsErB;;;AAtEqB,iBAsEL,cAAA,GAAA,CAAA,GAAA,EACT,gBAAA,UAAA,OAAA,GACI,iBAAA,CAAkB,CAAA,IAC1B,iBAAA,CAAkB,CAAA;;;;AC9MrB;AAQA;UARiB,kBAAA;EAAA;EAAA,MAAA,EAEP,eAAA;AAAA;AAAA;AAMV;;AANU,UAMO,qBAAA;EAAA;EAAA,SAAA;EAAA;EAAA,KAAA,GAIP,WAAA;EAAA;EAAA,SAAA,IAAA,IAAA,cAEuB,CAAA;EAAA;EAAA,OAAA,SAEf,CAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;EAAA;EAAA,MAAA,GAMP,eAAA;AAAA;AAAA;;AA4DX;;;;;;;;;AAkCA;;;;;;;;;;AA9FW,iBA4DK,cAAA,GAAA,CAAA,GAAA,UAAA,OAAA,GAAA,GAAA,EAEC,kBAAA,KAAuB,OAAA,CAAQ,CAAA,GAAA,OAAA,GACrC,qBAAA,CAAsB,CAAA,IAC9B,iBAAA,CAAkB,CAAA;AAAA;;;AA8BrB;;;AA9BqB,iBA8BL,kBAAA,GAAA,CAAA,GAAA,UAAA,OAAA,GAAA,GAAA,EAEC,kBAAA,KAAuB,OAAA,CAAQ,CAAA,GAAA,OAAA,GACrC,qBAAA,CAAsB,CAAA,IAC9B,iBAAA,CAAkB,CAAA;;;;ACxHrB;;;;;;;;ACbmD;iBDanC,SAAA,GAAA,CAAA,GAAA,WAAwB,IAAA,CAAA,mBAAA,CAAA,CAAA,cAAA,CAAA;;;;ACbW;AAMvB;UAAlB,kBAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;AAAA;AAAA;AAAkB;;AAAlB,UAUA,iBAAA,0BAA2C,UAAA,GAAW,UAAA,UAAkB,kBAAA;EAAA;EAAA,GAAA,EAE3E,SAAA;EAAA;EAAA,KAAA,SAES,OAAA,CAAQ,KAAA;EAAA;EAAA,OAAA,SAEN,OAAA,CAAQ,KAAA;EAAA;EAAA,OAAA;AAAA;AAAA;;;AAAA,UAQT,kBAAA,0BAA4C,UAAA,GAAW,UAAA,UAAkB,kBAAA;EAAA,GAAA,EACnF,SAAA;EAAA,KAAA,QACQ,OAAA,CAAQ,KAAA;EAAA,QAAA,EACX,SAAA;EAAA,OAAA,QACK,OAAA,CAAQ,KAAA;EAAA,OAAA;AAAA;AAAA;;;;AAqCzB;;;;;;;;;;AA8BA;;;;;;;;AAnEyB,iBAqCT,kBAAA,0BAA4C,UAAA,GAAW,UAAA,CAAA,CAAA,OAAA,EAC5D,iBAAA,CAAkB,KAAA,EAAO,SAAA,IACjC,kBAAA,CAAmB,KAAA,EAAO,SAAA;AAAA;;;AA4B7B;;;;;;;;;;;AA5B6B,iBA4Bb,WAAA,OAAA,CAAA,OAAA;EAAA,GAAA,EACT,UAAA;EAAA,KAAA,SACS,OAAA,CAAQ,KAAA;EAAA,OAAA,SACN,OAAA,CAAQ,KAAA;EAAA,SAAA;EAAA,MAAA;AAAA,UAGzB,oBAAA,CAAA,kBAAA,CAAA,KAAA,EAAA,KAAA;;;;ACrEoD;;UAjC3C,eAAA,6BAA4C,KAAA;EAAA;EAAA,QAAA,GAAA,SAAA,EAE9B,UAAA,KAAe,OAAA,CAAQ,KAAA;EAAA;EAAA,SAAA,IAAA,IAAA,EAE1B,KAAA,EAAA,SAAA,EAAkB,UAAA;EAAA;EAAA,OAAA,IAAA,KAAA,EAEnB,MAAA,EAAA,SAAA,EAAmB,UAAA;EAAA;EAAA,SAAA,IAAA,IAAA,EAElB,KAAA,cAAA,KAAA,EAA0B,MAAA,SAAA,SAAA,EAA0B,UAAA;AAAA;AAAA;;AAwBzE;;;;;;;;;;;;;;;;;;;AAxByE,iBAwBzD,cAAA,6BAA2C,KAAA,CAAA,CAAA,OAAA,EAChD,eAAA,CAAgB,KAAA,EAAO,UAAA,EAAY,MAAA,UAAO,oBAAA,CAAA,qBAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,WAAA,IAAA,CAAA,oBAAA,CAAA,0BAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,kCAAA,IAAA,CAAA,oBAAA,CAAA,6BAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,kCAAA,IAAA,CAAA,oBAAA,CAAA,2BAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA,kCAAA,IAAA,CAAA,oBAAA,CAAA,6BAAA,CAAA,KAAA,EAAA,MAAA,EAAA,UAAA;;;;;;KCnChD,qBAAA,qCAEW,MAAA,WAAA,GAAA;EAAA,GAAA,kBAEO,KAAA;AAAA,kBAET,KAAA,GAAQ,KAAA,CAAM,CAAA,iCACN,KAAA,EAAO,CAAA,IACvB,KAAA,CAAM,CAAA,YAAA,GAAA,0BAAA,GAAA,EACE,CAAA,eAAgB,KAAA,EAAO,CAAA,EAAG,CAAA;AAAA;;AA8BxC;;;;;;;;;;;AC7BA;AA4CA;AAuBA;;;;;;;;AC9DwD;;;AFNhB,iBA8BxB,qBAAA,qCAEA,MAAA,WAAA,GAAA,6BAAA,CAAA,IAAA,EACR,KAAA,EAAA,IAAA,EAAa,KAAA,GAAQ,qBAAA,CAAsB,KAAA,EAAO,KAAA;;;;AChC1D;AA4CA;UA5CiB,sBAAA;EAAA,QAAA,EACL,UAAA;EAAA,OAAA,QACK,OAAA;EAAA,SAAA;EAAA,MAAA;AAAA;AAAA;AA0CjB;AAuBA;;;;;;;;AC9DwD;;;;;AAUxD;;;;;;;;;;ADbiB,iBA0CD,KAAA,CAAA,WAAA,EAAmB,aAAA,KAAA,OAAA,EAAyB,sBAAA;AAAA;AAuB5D;;;;;;;;AC9DwD;;;;;AAUxD;;;AD6B4D,iBAuB5C,iBAAA,CAAA,WAAA,EACD,aAAA,KAAA,OAAA,EACD,sBAAA,KACX,OAAA;;;;ACjEqD;;KAKnD,cAAA,MAAoB,CAAA,SAAU,kBAAA,cAAgC,UAAA,IAAA,KAAA;AAAA;;;AAAA,UAKlD,sBAAA;EAAA,IAAA,EACT,GAAA,CAAI,KAAA;EAAA,KAAA,EACH,GAAA,CAAI,KAAA;EAAA,SAAA,EACA,GAAA;EAAA,UAAA,EACC,GAAA;EAAA,OAAA,EACH,GAAA;EAAA,SAAA,EACE,GAAA;EAAA,OAAA,QACI,OAAA,CAAQ,KAAA;AAAA;AAAA;;;AAyBzB;;;;;;;;;AAyBA;;;;;;;;;;AAlDyB,iBAyBH,gBAAA,WAA2B,kBAAA,UAA4B,UAAA,EAAA,CAAA,OAAA,EAClE,CAAA,GACR,OAAA,CAAQ,sBAAA,CAAuB,cAAA,CAAe,CAAA;AAAA;;;;;AAuBjD;;AAvBiD,iBAuB3B,wBAAA,WAAmC,kBAAA,UAA4B,UAAA,EAAA,CAAA,OAAA,EAC1E,CAAA,GACR,OAAA,CAAQ,0BAAA,CAA2B,cAAA,CAAe,CAAA,GAAI,KAAA;AAAA,KAiB7C,0BAAA,oBAA8C,sBAAA,CAAuB,KAAA"}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["QueryClient","VueQueryPlugin","defaultConfig","layerAwareFetch","$fetch","buildAsyncDataResult","useQueryClient","useQuery","useQueryClient","useQuery","useQueryClient","useQuery","useMutation","useQuery","useInfiniteQuery"],"sources":["../src/plugin.ts","../src/fetch/create-fetch.ts","../src/fetch/layer-fetch.ts","../src/fetch/fetch-plugin.ts","../src/fetch/global-fetch.ts","../src/loader.ts","../src/prefetch.ts","../src/composables/useKmFetch.ts","../src/composables/useKmAsyncData.ts","../src/composables/useKmData.ts","../src/define-query.ts","../src/define-mutation.ts","../src/query-keys.ts","../src/defer.ts","../src/suspense.ts"],"sourcesContent":["/**\n * @kimesh/query - KimeshQueryPlugin\n *\n * Centralized Vue plugin for TanStack Query with sensible defaults.\n */\n\nimport type { Plugin, App } from 'vue'\nimport { QueryClient, VueQueryPlugin, type VueQueryPluginOptions } from '@tanstack/vue-query'\n\n/** Default timing values */\nconst DEFAULT_STALE_TIME = 5 * 1000 // 5 seconds\nconst DEFAULT_GC_TIME = 5 * 60 * 1000 // 5 minutes\nconst DEFAULT_RETRY = 1\nconst DEFAULT_REFETCH_ON_WINDOW_FOCUS = false\n\n/**\n * Options for KimeshQueryPlugin\n */\nexport interface KimeshQueryPluginOptions extends Omit<VueQueryPluginOptions, 'queryClient'> {\n /** Custom QueryClient instance */\n queryClient?: QueryClient\n /** Default stale time in ms (default: 5s) */\n staleTime?: number\n /** Default GC time in ms (default: 5 min) */\n gcTime?: number\n /** Number of retries on error (default: 1) */\n retry?: number\n /** Refetch on window focus (default: false) */\n refetchOnWindowFocus?: boolean\n}\n\n/**\n * Create a QueryClient with Kimesh-optimized defaults\n *\n * Defaults are designed for typical SPA usage:\n * - Short stale time (5s) for responsive UX\n * - Longer GC time (5min) to preserve cache during navigation\n * - Single retry to recover from transient errors\n * - No refetch on focus to reduce unnecessary requests\n */\nexport function createKimeshQueryClient(options: KimeshQueryPluginOptions = {}): QueryClient {\n return new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: options.staleTime ?? DEFAULT_STALE_TIME,\n gcTime: options.gcTime ?? DEFAULT_GC_TIME,\n retry: options.retry ?? DEFAULT_RETRY,\n refetchOnWindowFocus: options.refetchOnWindowFocus ?? DEFAULT_REFETCH_ON_WINDOW_FOCUS,\n },\n },\n })\n}\n\n/**\n * KimeshQueryPlugin - Centralized query plugin with sensible defaults\n *\n * @example\n * ```ts\n * import { KimeshQueryPlugin } from '@kimesh/query'\n *\n * // Basic usage with defaults\n * app.use(KimeshQueryPlugin)\n *\n * // With custom options\n * app.use(KimeshQueryPlugin, {\n * staleTime: 10 * 1000,\n * retry: 2,\n * })\n *\n * // With custom QueryClient\n * app.use(KimeshQueryPlugin, {\n * queryClient: myCustomQueryClient,\n * })\n * ```\n */\nexport const KimeshQueryPlugin: Plugin<KimeshQueryPluginOptions | undefined> = {\n install(app: App, options: KimeshQueryPluginOptions = {}) {\n const queryClient = options.queryClient ?? createKimeshQueryClient(options)\n\n app.use(VueQueryPlugin, {\n ...options,\n queryClient,\n })\n },\n}\n\nexport { QueryClient } from '@tanstack/vue-query'\n","/**\n * Factory function for creating configured fetch instances.\n */\n\nimport { ofetch, type $Fetch } from 'ofetch'\nimport type { KmFetchConfig, KmFetchInstance } from './types'\n\n/**\n * Create a configured fetch instance.\n *\n * @example\n * ```ts\n * const api = createKmFetch({\n * baseURL: 'https://api.example.com',\n * timeout: 5000,\n * })\n *\n * const users = await api('/users')\n * ```\n */\nexport function createKmFetch(config: KmFetchConfig = {}): KmFetchInstance {\n const instance = ofetch.create(config) as $Fetch\n\n const fetchInstance = instance as KmFetchInstance\n fetchInstance.create = (defaults: KmFetchConfig) =>\n createKmFetch({\n ...config,\n ...defaults,\n headers: { ...config.headers, ...defaults.headers },\n })\n\n return fetchInstance\n}\n","/**\n * Layer-aware fetch system.\n *\n * Provides fetch instances that automatically switch based on the current route's layer.\n * This enables layer-specific API configurations (e.g., blog layer uses blog-api.com).\n */\n\nimport { ref } from 'vue'\nimport type { Router, RouteLocationNormalizedLoaded } from 'vue-router'\nimport type { KmFetchConfig, KmFetchInstance } from './types'\nimport { createKmFetch } from './create-fetch'\n\n// State\nconst currentLayer = ref<string>('app')\nconst layerInstances = new Map<string, KmFetchInstance>()\nconst layerInterceptors = new Map<string, LayerInterceptors>()\nlet defaultConfig: KmFetchConfig = {}\nlet isInitialized = false\nlet routerRef: Router | null = null\nlet pendingRoute: RouteLocationNormalizedLoaded | null = null\n\nexport interface LayerInterceptors {\n onRequest?: (ctx: { request: string; options: Record<string, unknown> }) => void\n onResponse?: (ctx: { request: string; response: { status: number } }) => void\n}\n\nexport function registerLayerInterceptors(layer: string, interceptors: LayerInterceptors): void {\n layerInterceptors.set(layer, interceptors)\n}\n\nexport function getLayerInterceptors(layer: string): LayerInterceptors | undefined {\n return layerInterceptors.get(layer)\n}\n\n/**\n * Set router reference for layer detection.\n * Installs navigation hooks to track pending route during navigation.\n */\nexport function setRouter(router: Router): void {\n routerRef = router\n router.beforeEach((to) => {\n pendingRoute = to as RouteLocationNormalizedLoaded\n })\n router.afterEach(() => {\n pendingRoute = null\n })\n}\n\nfunction getLayerFromRoute(route: RouteLocationNormalizedLoaded): string {\n const layer = [...route.matched]\n .reverse()\n .find((r) => r.meta.__kimeshLayer)?.meta.__kimeshLayer as string | undefined\n return layer ?? 'app'\n}\n\nfunction detectCurrentLayer(): string {\n if (pendingRoute) {\n return getLayerFromRoute(pendingRoute)\n }\n if (routerRef) {\n return getLayerFromRoute(routerRef.currentRoute.value)\n }\n return currentLayer.value\n}\n\n/**\n * Initialize the layer-aware fetch system.\n */\nexport function initLayerFetch(configs: {\n layers: Record<string, KmFetchConfig>\n default: KmFetchConfig\n}): void {\n defaultConfig = configs.default\n layerInstances.clear()\n\n for (const [layer, config] of Object.entries(configs.layers)) {\n const mergedConfig: KmFetchConfig = {\n ...defaultConfig,\n ...config,\n headers: { ...defaultConfig.headers, ...config.headers },\n }\n layerInstances.set(layer, createKmFetch(mergedConfig))\n }\n\n if (!layerInstances.has('app')) {\n layerInstances.set('app', createKmFetch(defaultConfig))\n }\n\n isInitialized = true\n}\n\nexport function setCurrentLayer(layer: string): void {\n currentLayer.value = layer\n}\n\nexport function getCurrentLayer(): string {\n return currentLayer.value\n}\n\n/**\n * Get fetch instance for a specific layer.\n * Falls back to 'app' layer if the requested layer is not found.\n */\nexport function getLayerFetch(layer?: string): KmFetchInstance {\n const targetLayer = layer ?? detectCurrentLayer()\n\n if (layerInstances.has(targetLayer)) {\n return layerInstances.get(targetLayer)!\n }\n\n if (layerInstances.has('app')) {\n return layerInstances.get('app')!\n }\n\n // Last resort: create and cache default instance\n layerInstances.set('app', createKmFetch(defaultConfig))\n return layerInstances.get('app')!\n}\n\nexport function isLayerFetchInitialized(): boolean {\n return isInitialized\n}\n\n/**\n * Layer-aware $fetch proxy.\n *\n * Automatically routes requests through the current layer's fetch instance.\n * When navigating to /blog/*, the current layer becomes 'blog' and uses\n * the blog layer's configuration.\n *\n * @example\n * ```ts\n * // In a blog route component - uses blog layer's baseURL\n * const posts = await $fetch('/posts')\n *\n * // Force specific layer\n * const hostData = await getLayerFetch('app')('/data')\n * ```\n */\nexport const $fetch: KmFetchInstance = new Proxy((() => {}) as unknown as KmFetchInstance, {\n get(_target, prop: string | symbol) {\n const instance = getLayerFetch()\n const value = (instance as unknown as Record<string | symbol, unknown>)[prop]\n return typeof value === 'function' ? value.bind(instance) : value\n },\n apply(_target, _thisArg, args: [string, Record<string, unknown>?]) {\n const layer = detectCurrentLayer()\n const instance = getLayerFetch(layer)\n const interceptors = layerInterceptors.get(layer)\n\n if (interceptors?.onRequest) {\n interceptors.onRequest({ request: args[0], options: args[1] ?? {} })\n }\n\n const promise = instance(args[0], args[1])\n\n if (interceptors?.onResponse) {\n return promise.then((response: unknown) => {\n interceptors.onResponse!({ request: args[0], response: { status: 200 } })\n return response\n })\n }\n\n return promise\n },\n})\n","/**\n * Kimesh runtime plugin for $fetch.\n *\n * Automatically initializes $fetch from config and provides it globally.\n * Supports layer-aware fetch where routes from different layers use different configurations.\n *\n * @example\n * ```typescript\n * // plugins/fetch.ts\n * import { fetchPlugin } from '@kimesh/query'\n * export default fetchPlugin()\n * ```\n */\n\nimport type { KmFetchConfig, KmFetchInstance } from './types'\nimport { createKmFetch } from './create-fetch'\nimport {\n initLayerFetch,\n setRouter,\n registerLayerInterceptors,\n $fetch as layerAwareFetch,\n} from './layer-fetch'\n\nexport interface FetchPluginOptions {\n config?: KmFetchConfig\n key?: string\n disableLayerAware?: boolean\n}\n\ninterface KimeshAppContext {\n $config: Record<string, unknown>\n $layersConfig: Record<string, Record<string, unknown>>\n router: {\n beforeEach: (guard: (to: { matched: Array<{ path: string; meta: { __kimeshLayer?: string } }> }) => void) => void\n }\n hooks: {\n hook: (name: string, callback: (ctx: { to: { matched: Array<{ path: string; meta: { __kimeshLayer?: string } }> } }) => void) => void\n }\n provide: <T>(name: string, value: T) => void\n}\n\nfunction extractFetchConfig(config: Record<string, unknown> | undefined): KmFetchConfig {\n if (!config) return {}\n return {\n baseURL: config.baseURL as string | undefined,\n timeout: config.timeout as number | undefined,\n retry: config.retry as number | false | undefined,\n retryDelay: config.retryDelay as number | undefined,\n credentials: config.credentials as RequestCredentials | undefined,\n headers: config.headers as Record<string, string> | undefined,\n }\n}\n\nfunction mergeHeaders(...headerSets: (Record<string, string> | undefined)[]): Record<string, string> {\n return Object.assign({}, ...headerSets.filter(Boolean))\n}\n\n/**\n * Create a Kimesh runtime plugin for $fetch.\n *\n * @example Basic usage\n * ```typescript\n * import { fetchPlugin } from '@kimesh/query'\n * export default fetchPlugin()\n * ```\n *\n * @example With custom config\n * ```typescript\n * import { fetchPlugin } from '@kimesh/query'\n * export default fetchPlugin({\n * config: {\n * onRequest: ({ options }) => {\n * options.headers = { ...options.headers, 'X-Custom': 'value' }\n * },\n * },\n * })\n * ```\n */\nexport function fetchPlugin(options: FetchPluginOptions = {}) {\n const { config: overrideConfig = {}, key = 'fetch', disableLayerAware = false } = options\n\n const plugin = (app: KimeshAppContext) => {\n const defaultFetchConfig = extractFetchConfig(app.$config?.fetch as Record<string, unknown>)\n\n const defaultConfig: KmFetchConfig = {\n ...defaultFetchConfig,\n ...overrideConfig,\n headers: mergeHeaders(defaultFetchConfig.headers, overrideConfig.headers),\n }\n\n const layersConfig = app.$layersConfig ?? {}\n const hasLayerConfigs = Object.keys(layersConfig).length > 0\n\n if (!disableLayerAware && hasLayerConfigs) {\n const layerFetchConfigs: Record<string, KmFetchConfig> = {}\n\n for (const [layerName, layerConfig] of Object.entries(layersConfig)) {\n const fetchConfig = extractFetchConfig(layerConfig.fetch as Record<string, unknown>)\n if (Object.keys(fetchConfig).some((k) => fetchConfig[k as keyof KmFetchConfig] !== undefined)) {\n layerFetchConfigs[layerName] = fetchConfig\n }\n }\n\n initLayerFetch({ layers: layerFetchConfigs, default: defaultConfig })\n setRouter(app.router as any)\n\n return { provide: { [key]: layerAwareFetch } }\n }\n\n return { provide: { [key]: createKmFetch(defaultConfig) } }\n }\n\n ;(plugin as any).__kimesh_plugin = true\n ;(plugin as any)._name = 'kimesh:fetch'\n ;(plugin as any).meta = { name: 'kimesh:fetch', enforce: 'pre' }\n\n return plugin\n}\n\n/**\n * Create a named fetch plugin for multi-instance scenarios.\n *\n * @example\n * ```typescript\n * export const blogFetch = createNamedFetchPlugin('blogFetch', {\n * baseURL: 'https://blog-api.example.com',\n * })\n * ```\n */\nexport function createNamedFetchPlugin(name: string, config: KmFetchConfig = {}) {\n return fetchPlugin({ key: name, config })\n}\n\nexport interface LayerFetchPluginOptions {\n layer: string\n onRequest?: (ctx: { request: string; options: Record<string, unknown> }) => void\n onResponse?: (ctx: { request: string; response: { status: number } }) => void\n}\n\n/**\n * Create a layer-specific fetch interceptor plugin.\n * Use this in layer plugins to add logging or modify requests for that layer only.\n *\n * @example\n * ```typescript\n * // blog/src/plugins/01.fetch.ts\n * import { layerFetchPlugin } from '@kimesh/query'\n *\n * export default layerFetchPlugin({\n * layer: 'blog',\n * onRequest: ({ request }) => console.log(`[Blog] Fetching: ${request}`),\n * })\n * ```\n */\nexport function layerFetchPlugin(options: LayerFetchPluginOptions) {\n const { layer, onRequest, onResponse } = options\n\n const plugin = () => {\n registerLayerInterceptors(layer, { onRequest, onResponse })\n }\n\n ;(plugin as any).__kimesh_plugin = true\n ;(plugin as any)._name = `kimesh:fetch:${layer}`\n\n return plugin\n}\n\nexport type { KmFetchInstance }\n","/**\n * Global $fetch instance configured from runtime config.\n */\n\nimport { createKmFetch } from './create-fetch'\nimport type { KmFetchInstance, KmFetchConfig } from './types'\n\nlet globalInstance: KmFetchInstance | null = null\n\n/**\n * Initialize the global $fetch instance with runtime config.\n * Called automatically by Kimesh during app initialization.\n */\nexport function initGlobalFetch(config: { apiBase?: string; fetch?: KmFetchConfig }): KmFetchInstance {\n globalInstance = createKmFetch({\n baseURL: config.fetch?.baseURL ?? config.apiBase,\n headers: config.fetch?.headers,\n timeout: config.fetch?.timeout,\n retry: config.fetch?.retry,\n retryDelay: config.fetch?.retryDelay,\n credentials: config.fetch?.credentials,\n })\n return globalInstance\n}\n\n/**\n * Get the global fetch instance. Creates a default instance if not initialized.\n */\nexport function useGlobalFetch(): KmFetchInstance {\n if (!globalInstance) {\n globalInstance = createKmFetch({})\n }\n return globalInstance\n}\n\n/**\n * Global $fetch proxy that lazily accesses the global fetch instance.\n *\n * @example\n * ```ts\n * const users = await $fetch('/api/users')\n * const user = await $fetch('/api/users', { method: 'POST', body: { name: 'John' } })\n * ```\n */\nexport const $fetch: KmFetchInstance = new Proxy((() => {}) as unknown as KmFetchInstance, {\n get(_target, prop: string | symbol) {\n const instance = useGlobalFetch()\n const value = (instance as unknown as Record<string | symbol, unknown>)[prop]\n return typeof value === 'function' ? value.bind(instance) : value\n },\n apply(_target, _thisArg, args: [string, Record<string, unknown>?]) {\n return useGlobalFetch()(args[0], args[1])\n },\n})\n","/**\n * @kimesh/query - Route Loader Utilities\n *\n * Provides utilities for defining route-level data requirements\n * that can be prefetched on navigation.\n */\n\nimport type { RouteLocationNormalized } from 'vue-router'\nimport type { QueryKey, QueryClient } from '@tanstack/vue-query'\n\n/**\n * Loader definition for route data prefetching\n */\nexport interface LoaderDefinition<TData = unknown> {\n queryKey: QueryKey\n queryFn: () => Promise<TData>\n staleTime?: number\n gcTime?: number\n}\n\n/**\n * Loader function signature for route components\n */\nexport type LoaderFn<TData = unknown> = (\n to: RouteLocationNormalized\n) => LoaderDefinition<TData> | LoaderDefinition<TData>[] | null\n\n/**\n * Route component with loader support\n */\nexport interface LoadableComponent {\n loader: LoaderFn\n}\n\n/**\n * Normalizes a loader result to an array\n */\nfunction normalizeLoaders(loader: LoaderDefinition | LoaderDefinition[]): LoaderDefinition[] {\n return Array.isArray(loader) ? loader : [loader]\n}\n\n/**\n * Execute a loader and prefetch data\n */\nexport async function executeLoader(\n queryClient: QueryClient,\n loader: LoaderDefinition | LoaderDefinition[]\n): Promise<void> {\n const loaders = normalizeLoaders(loader)\n\n await Promise.all(\n loaders.map((def) =>\n queryClient.prefetchQuery({\n queryKey: def.queryKey,\n queryFn: def.queryFn,\n staleTime: def.staleTime,\n gcTime: def.gcTime,\n })\n )\n )\n}\n\n/**\n * Type guard to check if a component has a loader function\n */\nexport function hasLoader(component: unknown): component is LoadableComponent {\n if (typeof component !== 'object' || component === null) {\n return false\n }\n return 'loader' in component && typeof (component as LoadableComponent).loader === 'function'\n}\n\n/**\n * Extract loaders from route matched components\n */\nexport function extractLoaders(to: RouteLocationNormalized): LoaderDefinition[] {\n const loaders: LoaderDefinition[] = []\n\n for (const matched of to.matched) {\n const component = matched.components?.default\n if (!hasLoader(component)) continue\n\n const result = component.loader(to)\n if (!result) continue\n\n loaders.push(...normalizeLoaders(result))\n }\n\n return loaders\n}\n","/**\n * @kimesh/query - Route Prefetching\n *\n * Router guard that prefetches data on navigation based on route loaders.\n */\n\nimport type { Router, RouteLocationNormalized } from 'vue-router'\nimport type { QueryClient } from '@tanstack/vue-query'\nimport { extractLoaders, executeLoader, type LoaderDefinition } from './loader'\n\n/**\n * Options for setupQueryPrefetching\n */\nexport interface QueryPrefetchOptions {\n /** Called when prefetching starts */\n onStart?: (to: RouteLocationNormalized, loaders: LoaderDefinition[]) => void\n /** Called when prefetching completes */\n onComplete?: (to: RouteLocationNormalized, loaders: LoaderDefinition[]) => void\n /** Called on prefetch error */\n onError?: (error: unknown, to: RouteLocationNormalized) => void\n /** Skip prefetching for these paths (regex or string) */\n exclude?: (string | RegExp)[]\n /** Only prefetch for these paths */\n include?: (string | RegExp)[]\n}\n\n/**\n * Check if a path matches a single pattern (string or regex)\n */\nfunction matchesSinglePattern(path: string, pattern: string | RegExp): boolean {\n if (typeof pattern === 'string') {\n return path === pattern || path.startsWith(pattern + '/')\n }\n return pattern.test(path)\n}\n\n/**\n * Check if a path matches any pattern in the array\n */\nfunction matchesAnyPattern(path: string, patterns: (string | RegExp)[]): boolean {\n return patterns.some((pattern) => matchesSinglePattern(path, pattern))\n}\n\n/**\n * Determines if a path should be prefetched based on include/exclude patterns\n */\nfunction shouldPrefetch(\n path: string,\n exclude: (string | RegExp)[],\n include?: (string | RegExp)[]\n): boolean {\n if (exclude.length > 0 && matchesAnyPattern(path, exclude)) {\n return false\n }\n if (include && !matchesAnyPattern(path, include)) {\n return false\n }\n return true\n}\n\n/**\n * Setup query prefetching on route navigation\n *\n * @example\n * ```ts\n * import { setupQueryPrefetching } from '@kimesh/query'\n *\n * const router = createRouter({ ... })\n * const queryClient = new QueryClient()\n *\n * setupQueryPrefetching(router, queryClient, {\n * onStart: (to) => console.log('Prefetching', to.path),\n * onError: (error) => console.error('Prefetch failed', error),\n * })\n * ```\n *\n * @returns Function to remove the guard\n */\nexport function setupQueryPrefetching(\n router: Router,\n queryClient: QueryClient,\n options: QueryPrefetchOptions = {}\n): () => void {\n const { onStart, onComplete, onError, exclude = [], include } = options\n\n const removeGuard = router.beforeResolve(async (to: RouteLocationNormalized) => {\n if (!shouldPrefetch(to.path, exclude, include)) {\n return\n }\n\n const loaders = extractLoaders(to)\n if (loaders.length === 0) {\n return\n }\n\n onStart?.(to, loaders)\n\n try {\n await Promise.all(loaders.map((loader) => executeLoader(queryClient, loader)))\n onComplete?.(to, loaders)\n } catch (error) {\n onError?.(error, to)\n // Continue navigation even on error - component will handle error state\n }\n })\n\n return removeGuard\n}\n\n/**\n * Create a prefetch function for manual prefetching (e.g., on hover)\n *\n * @example\n * ```ts\n * const prefetch = createPrefetcher(queryClient, router)\n *\n * // Prefetch on hover\n * <RouterLink :to=\"{ name: 'user' }\" @mouseenter=\"prefetch('/user/123')\">\n * ```\n */\nexport function createPrefetcher(queryClient: QueryClient, router: Router) {\n return async function prefetch(path: string): Promise<void> {\n const resolved = router.resolve(path)\n const loaders = extractLoaders(resolved as RouteLocationNormalized)\n\n if (loaders.length === 0) {\n return\n }\n\n await Promise.all(loaders.map((loader) => executeLoader(queryClient, loader)))\n }\n}\n","import { computed, toValue, watch, type MaybeRefOrGetter, type Ref, type WatchSource } from 'vue'\nimport { useQuery, useQueryClient, type UseQueryReturnType } from '@tanstack/vue-query'\nimport { hash } from 'ohash'\nimport { useGlobalFetch } from '../fetch/global-fetch'\nimport type { KmFetchInstance, FetchContext, FetchResponse } from '../fetch/types'\nimport type { KmAsyncDataResult } from '../types'\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Options for useKmFetch composable.\n */\nexport interface UseKmFetchOptions<T> {\n // HTTP options\n /** HTTP method */\n method?: MaybeRefOrGetter<'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'>\n /** Query parameters */\n query?: MaybeRefOrGetter<Record<string, unknown>>\n /** Alias for query */\n params?: MaybeRefOrGetter<Record<string, unknown>>\n /** Request body (auto-serialized) */\n body?: MaybeRefOrGetter<unknown>\n /** Request headers */\n headers?: MaybeRefOrGetter<Record<string, string>>\n /** Base URL (overrides global config) */\n baseURL?: MaybeRefOrGetter<string>\n /** Timeout in milliseconds */\n timeout?: MaybeRefOrGetter<number>\n\n // Interceptors\n /** Called before each request */\n onRequest?: (context: FetchContext) => void | Promise<void>\n /** Called when request fails */\n onRequestError?: (context: FetchContext & { error: Error }) => void | Promise<void>\n /** Called after each response */\n onResponse?: (context: FetchContext & { response: FetchResponse<unknown> }) => void | Promise<void>\n /** Called when response has error status */\n onResponseError?: (context: FetchContext & { response: FetchResponse<unknown> }) => void | Promise<void>\n\n // Async data options\n /** Custom cache key (auto-generated if not provided) */\n key?: string\n /** Execute immediately (default: true) */\n immediate?: boolean\n /** Watch sources for auto-refetch (false to disable) */\n watch?: WatchSource[] | false\n /** Transform response data */\n transform?: (data: unknown) => T\n /** Default value factory */\n default?: () => T\n\n // TanStack Query options\n /** Stale time in ms */\n staleTime?: number\n /** GC time in ms */\n gcTime?: number\n\n // Custom fetch instance\n /** Custom $fetch instance (uses global if not provided) */\n $fetch?: KmFetchInstance\n}\n\n// ============================================================================\n// Internal Helpers\n// ============================================================================\n\n/**\n * Builds a Nuxt-style result from a TanStack Query result.\n */\nfunction buildAsyncDataResult<T>(\n query: UseQueryReturnType<T, Error>,\n queryKey: readonly unknown[],\n queryClient: ReturnType<typeof useQueryClient>\n): KmAsyncDataResult<T> {\n const pending = computed(() => query.isLoading.value || query.isFetching.value)\n\n const status = computed(() => {\n if (query.isLoading.value) return 'pending'\n if (query.isError.value) return 'error'\n if (query.isSuccess.value) return 'success'\n return 'idle'\n })\n\n return {\n data: query.data as Ref<T | undefined>,\n pending,\n error: query.error as Ref<Error | null>,\n status,\n refresh: async () => { await query.refetch() },\n execute: async () => { await query.refetch() },\n clear: () => { queryClient.removeQueries({ queryKey: [...queryKey] }) },\n }\n}\n\n/**\n * Generate a unique cache key from URL and options.\n */\nfunction generateKey(\n url: string,\n method: string,\n query: Record<string, unknown> | undefined,\n body: unknown\n): string {\n return `kmFetch:${hash({ url, method, query, body })}`\n}\n\n// ============================================================================\n// Composables\n// ============================================================================\n\n/**\n * Nuxt-style fetch composable built on $fetch and TanStack Query.\n *\n * @example\n * ```ts\n * // Simple GET\n * const { data, pending, error } = useKmFetch('/api/users')\n *\n * // With query params\n * const { data } = useKmFetch('/api/users', {\n * query: { page: 1, limit: 10 },\n * })\n *\n * // POST with body\n * const { data } = useKmFetch('/api/users', {\n * method: 'POST',\n * body: { name: 'John' },\n * })\n *\n * // With interceptors\n * const { data } = useKmFetch('/api/protected', {\n * onRequest({ options }) {\n * options.headers.set('Authorization', `Bearer ${token}`)\n * },\n * })\n *\n * // Reactive URL\n * const userId = ref(1)\n * const { data } = useKmFetch(() => `/api/users/${userId.value}`)\n * ```\n */\nexport function useKmFetch<T>(\n url: MaybeRefOrGetter<string>,\n options: UseKmFetchOptions<T> = {}\n): KmAsyncDataResult<T> {\n const queryClient = useQueryClient()\n const fetchInstance = options.$fetch ?? useGlobalFetch()\n\n // Resolve reactive values\n const resolvedUrl = computed(() => toValue(url))\n const resolvedMethod = computed(() => toValue(options.method) ?? 'GET')\n const resolvedQuery = computed(() => toValue(options.query ?? options.params))\n const resolvedBody = computed(() => toValue(options.body))\n const resolvedHeaders = computed(() => toValue(options.headers))\n const resolvedBaseURL = computed(() => toValue(options.baseURL))\n const resolvedTimeout = computed(() => toValue(options.timeout))\n\n // Generate cache key\n const queryKey = computed(() => {\n const key = options.key ?? generateKey(\n resolvedUrl.value,\n resolvedMethod.value,\n resolvedQuery.value,\n resolvedBody.value\n )\n return [key] as const\n })\n\n const query = useQuery({\n queryKey: queryKey.value,\n queryFn: async () => {\n const response = await fetchInstance(resolvedUrl.value, {\n method: resolvedMethod.value,\n query: resolvedQuery.value,\n body: resolvedBody.value,\n headers: resolvedHeaders.value,\n baseURL: resolvedBaseURL.value,\n timeout: resolvedTimeout.value,\n onRequest: options.onRequest,\n onRequestError: options.onRequestError,\n onResponse: options.onResponse,\n onResponseError: options.onResponseError,\n })\n\n return (options.transform ? options.transform(response) : response) as T\n },\n enabled: options.immediate !== false,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n initialData: options.default,\n })\n\n // Auto-refetch on watch sources\n if (options.watch !== false) {\n const watchSources = options.watch ?? [\n resolvedUrl,\n resolvedMethod,\n resolvedQuery,\n resolvedBody,\n ]\n if (watchSources.length > 0) {\n watch(watchSources, () => { query.refetch() })\n }\n }\n\n return buildAsyncDataResult(query, queryKey.value, queryClient)\n}\n\n/**\n * Lazy variant - starts fetching immediately (non-blocking pattern).\n *\n * Note: Despite the \"lazy\" name (Nuxt convention), this starts immediately.\n * Use this when data loading shouldn't block rendering.\n */\nexport function useLazyKmFetch<T>(\n url: MaybeRefOrGetter<string>,\n options: UseKmFetchOptions<T> = {}\n): KmAsyncDataResult<T> {\n return useKmFetch(url, { ...options, immediate: true })\n}\n","import { computed, watch, type Ref, type WatchSource } from 'vue'\nimport { useQuery, useQueryClient, type UseQueryReturnType } from '@tanstack/vue-query'\nimport { useGlobalFetch } from '../fetch/global-fetch'\nimport type { KmFetchInstance } from '../fetch/types'\nimport type { KmAsyncDataResult } from '../types'\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Context passed to async data handler.\n */\nexport interface KmAsyncDataContext {\n /** Global $fetch instance */\n $fetch: KmFetchInstance\n}\n\n/**\n * Options for useKmAsyncData composable.\n */\nexport interface UseKmAsyncDataOptions<T> {\n /** Execute immediately (default: true) */\n immediate?: boolean\n /** Watch sources for auto-refetch */\n watch?: WatchSource[]\n /** Transform response data */\n transform?: (data: unknown) => T\n /** Default value factory */\n default?: () => T\n /** Stale time in ms */\n staleTime?: number\n /** GC time in ms */\n gcTime?: number\n /** Custom $fetch instance */\n $fetch?: KmFetchInstance\n}\n\n// ============================================================================\n// Internal Helpers\n// ============================================================================\n\n/**\n * Builds a Nuxt-style result from a TanStack Query result.\n */\nfunction buildAsyncDataResult<T>(\n query: UseQueryReturnType<T, Error>,\n queryKey: readonly unknown[],\n queryClient: ReturnType<typeof useQueryClient>\n): KmAsyncDataResult<T> {\n const pending = computed(() => query.isLoading.value || query.isFetching.value)\n\n const status = computed(() => {\n if (query.isLoading.value) return 'pending'\n if (query.isError.value) return 'error'\n if (query.isSuccess.value) return 'success'\n return 'idle'\n })\n\n return {\n data: query.data as Ref<T | undefined>,\n pending,\n error: query.error as Ref<Error | null>,\n status,\n refresh: async () => { await query.refetch() },\n execute: async () => { await query.refetch() },\n clear: () => { queryClient.removeQueries({ queryKey: [...queryKey] }) },\n }\n}\n\n// ============================================================================\n// Composables\n// ============================================================================\n\n/**\n * Generic async data composable.\n *\n * @example\n * ```ts\n * // Basic usage\n * const { data, pending } = useKmAsyncData('currentUser', async () => {\n * return await api.users.getCurrentUser()\n * })\n *\n * // With $fetch from context\n * const { data } = useKmAsyncData('users', async ({ $fetch }) => {\n * return await $fetch('/api/users')\n * })\n *\n * // With transform\n * const { data } = useKmAsyncData('posts', fetchPosts, {\n * transform: (data) => data.items,\n * })\n * ```\n */\nexport function useKmAsyncData<T>(\n key: string,\n handler: (ctx: KmAsyncDataContext) => Promise<T>,\n options: UseKmAsyncDataOptions<T> = {}\n): KmAsyncDataResult<T> {\n const queryClient = useQueryClient()\n const fetchInstance = options.$fetch ?? useGlobalFetch()\n const queryKey = [key] as const\n\n const query = useQuery({\n queryKey,\n queryFn: async (): Promise<T> => {\n const raw = await handler({ $fetch: fetchInstance })\n return options.transform ? options.transform(raw) as T : raw\n },\n enabled: options.immediate !== false,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n initialData: options.default,\n })\n\n if (options.watch?.length) {\n watch(options.watch, () => { query.refetch() })\n }\n\n return buildAsyncDataResult(query, queryKey, queryClient)\n}\n\n/**\n * Lazy variant - starts fetching immediately (non-blocking pattern).\n *\n * Note: Despite the \"lazy\" name (Nuxt convention), this starts immediately.\n * Use this when data loading shouldn't block rendering.\n */\nexport function useLazyKmAsyncData<T>(\n key: string,\n handler: (ctx: KmAsyncDataContext) => Promise<T>,\n options: UseKmAsyncDataOptions<T> = {}\n): KmAsyncDataResult<T> {\n return useKmAsyncData(key, handler, { ...options, immediate: true })\n}\n","import { computed } from 'vue'\nimport { useQueryClient } from '@tanstack/vue-query'\n\n/**\n * Access cached data by key\n *\n * @example\n * ```ts\n * const user = useKmData<User>('currentUser')\n * // Can also update\n * user.value = { ...user.value, name: 'New Name' }\n * ```\n */\nexport function useKmData<T>(key: string) {\n const queryClient = useQueryClient()\n\n return computed({\n get: () => queryClient.getQueryData<T>([key]),\n set: (value: T | undefined) => {\n queryClient.setQueryData([key], value)\n },\n })\n}\n","import type { QueryKey } from '@tanstack/vue-query'\nimport { useQuery } from '@tanstack/vue-query'\n\n/**\n * Shared query timing options\n */\ninterface QueryTimingOptions {\n /** Time in ms before data is considered stale */\n staleTime?: number\n /** Time in ms before unused data is garbage collected */\n gcTime?: number\n}\n\n/**\n * Query options input with Pinia Colada naming\n */\ninterface QueryOptionsInput<TData, TQueryKey extends QueryKey = QueryKey> extends QueryTimingOptions {\n /** Query key (unique identifier for cache) */\n key: TQueryKey\n /** Query function - Pinia Colada style naming */\n query?: () => Promise<TData>\n /** Query function - TanStack style naming (alias for query) */\n queryFn?: () => Promise<TData>\n /** Whether the query is enabled */\n enabled?: boolean\n}\n\n/**\n * Output type for defineQueryOptions - compatible with both Pinia Colada and TanStack Query\n */\nexport interface QueryOptionsOutput<TData, TQueryKey extends QueryKey = QueryKey> extends QueryTimingOptions {\n key: TQueryKey\n query: () => Promise<TData>\n queryKey: TQueryKey\n queryFn: () => Promise<TData>\n enabled?: boolean\n}\n\n/**\n * Extracts the query function from options, supporting both naming styles\n */\nfunction extractQueryFn<TData>(options: { query?: () => Promise<TData>; queryFn?: () => Promise<TData> }): () => Promise<TData> {\n const queryFn = options.query ?? options.queryFn\n if (!queryFn) {\n throw new Error('Query function required: provide either \"query\" or \"queryFn\"')\n }\n return queryFn\n}\n\n/**\n * Define static query options (Pinia Colada style)\n *\n * @example\n * ```ts\n * // Pinia Colada naming (preferred)\n * export const postsListQuery = defineQueryOptions({\n * key: ['posts', 'list'],\n * query: () => api.posts.getAll(),\n * staleTime: 5 * 60 * 1000,\n * })\n *\n * // TanStack naming (also supported)\n * export const postsListQuery = defineQueryOptions({\n * key: ['posts', 'list'],\n * queryFn: () => api.posts.getAll(),\n * })\n *\n * // Usage with useQuery\n * const { data } = useQuery(postsListQuery)\n * ```\n */\nexport function defineQueryOptions<TData, TQueryKey extends QueryKey = QueryKey>(\n options: QueryOptionsInput<TData, TQueryKey>\n): QueryOptionsOutput<TData, TQueryKey> {\n const queryFn = extractQueryFn(options)\n\n return {\n key: options.key,\n query: queryFn,\n queryKey: options.key,\n queryFn,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n enabled: options.enabled,\n }\n}\n\n/**\n * Create a reusable query composable (Pinia Colada style)\n *\n * @example\n * ```ts\n * export const useCurrentUser = defineQuery({\n * key: ['user', 'current'],\n * query: () => api.users.getCurrentUser(),\n * })\n *\n * // State is shared across components!\n * const { data: user } = useCurrentUser()\n * ```\n */\nexport function defineQuery<TData>(options: {\n key: QueryKey\n query?: () => Promise<TData>\n queryFn?: () => Promise<TData>\n staleTime?: number\n gcTime?: number\n}) {\n const queryFn = extractQueryFn(options)\n\n return function useDefinedQuery() {\n return useQuery({\n queryKey: options.key,\n queryFn,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n })\n }\n}\n","import { useMutation } from '@tanstack/vue-query'\n\n/**\n * Options for defineMutation\n */\ninterface MutationOptions<TData, TVariables, TError = Error> {\n /** The mutation function that performs the actual operation */\n mutation: (variables: TVariables) => Promise<TData>\n /** Called on successful mutation */\n onSuccess?: (data: TData, variables: TVariables) => void\n /** Called on mutation error */\n onError?: (error: TError, variables: TVariables) => void\n /** Called after mutation settles (success or error) */\n onSettled?: (data: TData | undefined, error: TError | null, variables: TVariables) => void\n}\n\n/**\n * Define a reusable mutation composable (Pinia Colada style)\n *\n * Creates a composable that can be imported and used across multiple components.\n * The mutation configuration is defined once and reused everywhere.\n *\n * @example\n * ```ts\n * // Define the mutation\n * export const useCreatePost = defineMutation({\n * mutation: (data: { title: string; body: string }) => api.posts.create(data),\n * onSuccess: (data, variables) => {\n * queryClient.invalidateQueries({ queryKey: ['posts'] })\n * },\n * })\n *\n * // Use in component\n * const { mutate, mutateAsync, isPending } = useCreatePost()\n * mutate({ title: 'New Post', body: 'Content...' })\n * ```\n */\nexport function defineMutation<TData, TVariables, TError = Error>(\n options: MutationOptions<TData, TVariables, TError>\n) {\n return function useDefinedMutation() {\n return useMutation({\n mutationFn: options.mutation,\n onSuccess: options.onSuccess,\n onError: options.onError,\n onSettled: options.onSettled,\n })\n }\n}\n","/**\n * Result type for a query key factory\n */\ntype QueryKeyFactoryResult<\n TRoot extends string,\n TKeys extends Record<string, ((arg: never) => unknown) | null>\n> = {\n all: () => readonly [TRoot]\n} & {\n [K in keyof TKeys]: TKeys[K] extends null\n ? () => readonly [TRoot, K]\n : TKeys[K] extends (arg: infer A) => infer R\n ? (arg: A) => readonly [TRoot, K, R]\n : never\n}\n\n/**\n * Create a type-safe query key factory\n *\n * Creates a factory object with methods that generate consistent, hierarchical\n * query keys. This helps maintain cache invalidation patterns and ensures\n * type safety across your application.\n *\n * @example\n * ```ts\n * export const postKeys = createQueryKeyFactory('posts', {\n * lists: null, // () => ['posts', 'lists']\n * list: (filters: { page: number }) => filters, // (f) => ['posts', 'list', f]\n * details: null, // () => ['posts', 'details']\n * detail: (id: string) => id, // (id) => ['posts', 'detail', id]\n * })\n *\n * // Usage\n * postKeys.all() // ['posts']\n * postKeys.lists() // ['posts', 'lists']\n * postKeys.list({ page: 1 }) // ['posts', 'list', { page: 1 }]\n * postKeys.detail('123') // ['posts', 'detail', '123']\n *\n * // Invalidation example\n * queryClient.invalidateQueries({ queryKey: postKeys.all() })\n * ```\n */\nexport function createQueryKeyFactory<\n TRoot extends string,\n TKeys extends Record<string, ((arg: never) => unknown) | null>\n>(root: TRoot, keys: TKeys): QueryKeyFactoryResult<TRoot, TKeys> {\n const factory: Record<string, unknown> = {\n all: () => [root] as const,\n }\n\n for (const [key, handler] of Object.entries(keys)) {\n if (handler === null) {\n factory[key] = () => [root, key] as const\n } else {\n factory[key] = (arg: unknown) => [root, key, (handler as (arg: unknown) => unknown)(arg)] as const\n }\n }\n\n return factory as QueryKeyFactoryResult<TRoot, TKeys>\n}\n","/**\n * @kimesh/query - Deferred Data Loading Helper\n *\n * Utilities for starting query fetches without blocking navigation.\n * Use these in route loaders to prefetch non-critical data that will\n * be displayed by components wrapped in <Suspense>.\n */\n\nimport type { QueryClient, QueryKey } from '@tanstack/vue-query'\n\n/**\n * Query options compatible with defer functions\n */\nexport interface DeferrableQueryOptions {\n queryKey: QueryKey\n queryFn: () => Promise<unknown>\n staleTime?: number\n gcTime?: number\n}\n\n/**\n * Prefetches a single query using the query client\n */\nfunction prefetchSingleQuery(queryClient: QueryClient, query: DeferrableQueryOptions): Promise<void> {\n return queryClient.prefetchQuery({\n queryKey: query.queryKey,\n queryFn: query.queryFn,\n staleTime: query.staleTime,\n gcTime: query.gcTime,\n })\n}\n\n/**\n * Start fetching queries without blocking navigation (fire-and-forget).\n *\n * Use this in route loaders for non-critical data. The queries will start\n * fetching in the background, and components using useSuspenseQuery will\n * suspend until the data is ready.\n *\n * @example\n * ```ts\n * export const Route = createFileRoute('/users/:userId')({\n * loader: async ({ params, context }) => {\n * const { queryClient } = context\n *\n * // Critical - blocks navigation until ready\n * await queryClient.ensureQueryData(userQuery(params.userId))\n *\n * // Deferred - starts fetching without blocking navigation\n * defer(queryClient,\n * userActivityQuery(params.userId),\n * userRecommendationsQuery(params.userId),\n * )\n * },\n * })\n * ```\n */\nexport function defer(queryClient: QueryClient, ...queries: DeferrableQueryOptions[]): void {\n for (const query of queries) {\n prefetchSingleQuery(queryClient, query)\n }\n}\n\n/**\n * Start fetching queries and return promises for optional awaiting.\n *\n * Unlike defer(), this returns the prefetch promises, allowing you to\n * optionally await them later (e.g., for analytics or debugging).\n *\n * @example\n * ```ts\n * // Start fetching\n * const promises = deferWithPromises(queryClient, slowQuery1, slowQuery2)\n *\n * // Continue with other work...\n *\n * // Later, if you need to know when they complete:\n * await Promise.all(promises)\n * ```\n */\nexport function deferWithPromises(\n queryClient: QueryClient,\n ...queries: DeferrableQueryOptions[]\n): Promise<void>[] {\n return queries.map((query) => prefetchSingleQuery(queryClient, query))\n}\n","/**\n * @kimesh/query - Suspense Query Composables\n *\n * Provides a simple API for suspense-compatible data fetching.\n * Uses top-level await in <script setup> to trigger Vue's Suspense.\n *\n * @example\n * ```vue\n * <script setup>\n * // Top-level await triggers Suspense automatically\n * const { data } = await useSuspenseQuery(postsQuery)\n * </script>\n * ```\n */\n\nimport { useQuery, useInfiniteQuery } from '@tanstack/vue-query'\nimport type { QueryKey, UseInfiniteQueryReturnType } from '@tanstack/vue-query'\nimport type { Ref } from 'vue'\nimport type { QueryOptionsOutput } from './define-query'\n\n/**\n * Infer TData from QueryOptionsOutput\n */\ntype InferQueryData<T> = T extends QueryOptionsOutput<infer TData, QueryKey> ? TData : never\n\n/**\n * Return type for useSuspenseQuery with guaranteed data (not undefined after suspense resolves)\n */\nexport interface UseSuspenseQueryResult<TData> {\n data: Ref<TData>\n error: Ref<Error | null>\n isLoading: Ref<boolean>\n isFetching: Ref<boolean>\n isError: Ref<boolean>\n isSuccess: Ref<boolean>\n refetch: () => Promise<TData>\n}\n\n/**\n * Suspense-compatible query hook for Vue.\n *\n * Returns a Promise that resolves to the query result when data is ready.\n * Use with top-level await in <script setup> to trigger Suspense.\n *\n * @example\n * ```vue\n * <script setup>\n * import { useSuspenseQuery } from '@kimesh/query'\n * import { postsQuery } from './posts.data'\n *\n * // Awaiting triggers Suspense - component suspends until data ready\n * // data is typed as Ref<Post[]> (not Ref<Post[] | undefined>)\n * const { data: posts } = await useSuspenseQuery(postsQuery)\n * </script>\n *\n * <template>\n * <div v-for=\"post in posts\" :key=\"post.id\">{{ post.title }}</div>\n * </template>\n * ```\n */\nexport async function useSuspenseQuery<T extends QueryOptionsOutput<unknown, QueryKey>>(\n options: T\n): Promise<UseSuspenseQueryResult<InferQueryData<T>>> {\n // Use type assertion for Vue Query's complex reactive type requirements\n const result = useQuery({\n queryKey: options.queryKey as QueryKey,\n queryFn: options.queryFn,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n enabled: options.enabled,\n })\n\n await result.suspense()\n\n // After suspense(), data is guaranteed to be TData (not undefined)\n return result as unknown as UseSuspenseQueryResult<InferQueryData<T>>\n}\n\n/**\n * Suspense-compatible infinite query hook for Vue.\n *\n * Note: This is a basic implementation. For full infinite query support,\n * you may need to extend the options interface to include initialPageParam\n * and getNextPageParam configuration.\n */\nexport async function useSuspenseInfiniteQuery<T extends QueryOptionsOutput<unknown, QueryKey>>(\n options: T\n): Promise<UseInfiniteQueryReturnType<InferQueryData<T>, Error>> {\n // Use type assertion for Vue Query's complex reactive type requirements\n const result = useInfiniteQuery({\n queryKey: options.queryKey as QueryKey,\n queryFn: options.queryFn,\n staleTime: options.staleTime,\n gcTime: options.gcTime,\n enabled: options.enabled,\n initialPageParam: 0,\n getNextPageParam: () => undefined,\n } as Parameters<typeof useInfiniteQuery>[0])\n\n await result.suspense()\n\n return result as UseInfiniteQueryReturnType<InferQueryData<T>, Error>\n}\n\nexport type UseSuspenseQueryReturnType<TData = unknown> = UseSuspenseQueryResult<TData>\n"],"mappings":"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"}
|