zova-module-a-model 5.1.12 → 5.1.16
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bean.model.useState.d.ts","sourceRoot":"","sources":["../../../src/bean/bean.model/bean.model.useState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,WAAW,EACX,QAAQ,EAER,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAK5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bean.model.useState.d.ts","sourceRoot":"","sources":["../../../src/bean/bean.model/bean.model.useState.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BeanBase, BeanInfo, BeanScopeBase, BeanSimple, SymbolBeanFullName, Virtual, cast, createBeanDecorator, deepExtend
|
|
1
|
+
import { BeanBase, BeanInfo, BeanScopeBase, BeanSimple, SymbolBeanFullName, Virtual, cast, createBeanDecorator, deepExtend } from "zova";
|
|
2
2
|
import { Bean, Scope, Service } from "zova-module-a-bean";
|
|
3
3
|
import { QueryCache, QueryClient, VueQueryPlugin, defaultShouldDehydrateQuery, dehydrate, hashKey, hydrate, useMutation, useQuery, useQueryClient } from "@tanstack/vue-query";
|
|
4
4
|
import { checkErrorJwtExpired } from "@cabloy/utils";
|
|
@@ -357,7 +357,7 @@ var BeanModelUseState = class extends BeanModelUseQuery {
|
|
|
357
357
|
}
|
|
358
358
|
});
|
|
359
359
|
const self = this;
|
|
360
|
-
return
|
|
360
|
+
return this.$customRef(() => {
|
|
361
361
|
return {
|
|
362
362
|
get() {
|
|
363
363
|
return self._handleAsyncDataGet(options, queryClient, true);
|
|
@@ -386,7 +386,7 @@ var BeanModelUseState = class extends BeanModelUseQuery {
|
|
|
386
386
|
} }
|
|
387
387
|
});
|
|
388
388
|
const self = this;
|
|
389
|
-
return
|
|
389
|
+
return this.$customRef(() => {
|
|
390
390
|
return {
|
|
391
391
|
get() {
|
|
392
392
|
return self._handleSyncDataGet(options, queryClient, true);
|
|
@@ -416,7 +416,7 @@ var BeanModelUseState = class extends BeanModelUseQuery {
|
|
|
416
416
|
} }
|
|
417
417
|
});
|
|
418
418
|
const self = this;
|
|
419
|
-
return
|
|
419
|
+
return this.$customRef(() => {
|
|
420
420
|
return {
|
|
421
421
|
get() {
|
|
422
422
|
return self._handleSyncDataGet(options, queryClient, true);
|
|
@@ -434,7 +434,7 @@ var BeanModelUseState = class extends BeanModelUseQuery {
|
|
|
434
434
|
meta: { persister: false }
|
|
435
435
|
});
|
|
436
436
|
const self = this;
|
|
437
|
-
return
|
|
437
|
+
return this.$customRef(() => {
|
|
438
438
|
return {
|
|
439
439
|
get() {
|
|
440
440
|
return self._handleSyncDataGet(options, queryClient, false);
|
|
@@ -447,7 +447,7 @@ var BeanModelUseState = class extends BeanModelUseQuery {
|
|
|
447
447
|
}
|
|
448
448
|
$useStateComputed(options) {
|
|
449
449
|
const queryHash = hashKey(this.self._forceQueryKeyPrefix(options.queryKey));
|
|
450
|
-
if (!this[SymbolUseComputeds][queryHash]) this[SymbolUseComputeds][queryHash] = this.$
|
|
450
|
+
if (!this[SymbolUseComputeds][queryHash]) this[SymbolUseComputeds][queryHash] = this.$computed(options.queryFn, options.debugOptions);
|
|
451
451
|
return this[SymbolUseComputeds][queryHash];
|
|
452
452
|
}
|
|
453
453
|
$useStateData(options, queryClient) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/types/query.ts","../src/.metadata/this.ts","../src/common/cookieWrapper.ts","../src/bean/bean.model/bean.model.last.ts","../src/bean/bean.model/bean.model.persister.ts","../src/bean/bean.model/bean.model.local.ts","../src/bean/bean.model/bean.model.cookie.ts","../src/bean/bean.model/bean.model.query.ts","../src/bean/bean.model/bean.model.useQuery.ts","../src/bean/bean.model/bean.model.useState.ts","../src/bean/bean.model/bean.model.useStateGeneral.ts","../src/bean/bean.model/bean.model.useMutation.ts","../src/bean/bean.model/bean.model.first.ts","../src/bean/bean.modelBase.ts","../src/service/storage.ts","../src/config/config.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/model.ts","../src/lib/utils.ts"],"sourcesContent":["import type {\n DefaultError,\n DehydratedState,\n Query,\n QueryKey,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/vue-query';\nimport type { DebuggerOptions, UnwrapNestedRefs } from 'vue';\n\nimport 'zova';\n\ndeclare module 'zova' {\n export interface BeanBase {\n $queryClient: ReturnType<typeof useQueryClient>;\n }\n}\n\ndeclare module 'zova-module-a-ssr' {\n export interface SSRContextStateDefer {\n query: DehydratedState;\n }\n}\n\ndeclare module '@tanstack/vue-query' {\n export interface Register {\n queryMeta: MyQueryMeta;\n mutationMeta: MyMutationMeta;\n }\n}\n\nexport type { UseQueryOptions } from '@tanstack/vue-query';\n\nexport interface MyQueryMetaBase extends Record<string, unknown> {\n defaultData?: (() => any) | any;\n ssr?: QueryMetaSSR;\n persister?: QueryMetaPersister | boolean;\n disableErrorEffect?: boolean;\n disableSuspenseOnInit?: boolean;\n}\n\nexport interface MyQueryMeta extends MyQueryMetaBase {\n errorInfo?: ((error, query) => string) | string;\n}\n\nexport interface MyMutationMeta extends MyQueryMetaBase {\n errorInfo?: ((error, variables, context) => string) | string;\n}\n\nexport interface QueryMetaSSR {\n /** default is true */\n dehydrate?: boolean;\n}\n\nexport type QueryMetaPersisterStorage = 'cookie' | 'local' | 'db' | undefined;\n\nexport type QueryMetaPersisterCookieType =\n | 'auto'\n | 'boolean'\n | 'number'\n | 'date'\n | 'string'\n | undefined;\n\nexport type StateType = 'db' | 'local' | 'cookie' | 'mem' | 'data';\n\nexport type StaleTime = number;\nexport type StaleTimeFunction<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = StaleTime | ((query: Query<TQueryFnData, TError, TData, TQueryKey>) => StaleTime);\n\nexport type MaxAgeTime = StaleTime;\nexport type MaxAgeTimeFunction<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>;\n\nexport interface QueryMetaPersister {\n /** default is false */\n sync?: boolean;\n /** default is db if async, local if sync */\n storage?: QueryMetaPersisterStorage;\n /** default is false if db, true if local/cookie */\n storageKeySimplify?: boolean;\n /** default is 24 hours */\n maxAge?: MaxAgeTime;\n /**\n * How to serialize the data to storage.\n * @default `JSON.stringify`\n */\n serialize?: (persistedQuery: any, serializeDefault: (persistedQuery: any) => any) => any;\n serializeDefault?: (persistedQuery: any) => any;\n /**\n * How to deserialize the data from storage.\n * @default `JSON.parse`\n */\n deserialize?: (cachedString: any, deserializeDefault: (cachedString: any) => any) => any;\n deserializeDefault?: (cachedString: any) => any;\n prefix?: string;\n buster?: string;\n cookieType?: QueryMetaPersisterCookieType;\n refetchOnRestore?: boolean | 'always';\n}\n\nexport type DataQuery<TData> = UnwrapNestedRefs<\n ReturnType<typeof useQuery<TData | undefined, Error | null>>\n>;\n\nexport type DataMutation<TData = unknown, TVariables = void, TContext = unknown> = UnwrapNestedRefs<\n ReturnType<typeof useMutation<TData, DefaultError, TVariables, TContext>>\n>;\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): StaleTime | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime;\n}\n\nexport function resolveMaxAgeTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n maxAge: undefined | MaxAgeTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): MaxAgeTime | undefined {\n return typeof maxAge === 'function' ? maxAge(query) : maxAge;\n}\n\nexport type UseQueryComputedFn<TDATA> = (oldValue?: TDATA) => TDATA;\n\nexport interface UseQueryComputedOptions<TDATA, TQueryKey> {\n queryKey: TQueryKey;\n queryFn: UseQueryComputedFn<TDATA>;\n debugOptions?: DebuggerOptions;\n}\n","export const __ThisModule__ = 'a-model';\nexport { ScopeModuleAModel as ScopeModule } from './index.js';\n","import type { Query } from '@tanstack/vue-query';\nimport type { CookieOptions } from 'zova';\n\nimport { BeanSimple } from 'zova';\n\nimport type { QueryMetaPersister } from '../types/index.js';\n\nimport { __ThisModule__ } from '../.metadata/this.js';\nimport { resolveMaxAgeTime } from '../types/index.js';\n\nexport class CookieWrapper extends BeanSimple {\n options: QueryMetaPersister;\n query: Query;\n\n protected __init__(options: QueryMetaPersister, query: Query) {\n this.options = options;\n this.query = query;\n }\n\n getItem(key: string): string | undefined {\n return this.app.meta.cookie.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n const configScope = this.bean.scope(__ThisModule__).config;\n const opts: CookieOptions = { ...configScope.persister.cookie.options };\n let maxAge = resolveMaxAgeTime(this.options.maxAge, this.query);\n if (maxAge !== undefined) {\n if (maxAge === Infinity) maxAge = 1000 * 60 * 60 * 24 * 365;\n opts.expires = new Date(Date.now() + maxAge);\n }\n this.app.meta.cookie.setItem(key, value, opts);\n }\n\n removeItem(key: string): void {\n this.app.meta.cookie.removeItem(key);\n }\n}\n","import { BeanBase, cast } from 'zova';\n\nimport type { ScopeModule } from '../../.metadata/this.js';\nimport type { IDecoratorModelOptions } from '../../types/model.js';\nimport type { BeanModelBase } from '../bean.modelBase.js';\n\nimport { __ThisModule__ } from '../../.metadata/this.js';\n\nexport class BeanModelLast extends BeanBase {\n public selector: string;\n\n constructor(selector?: unknown) {\n super();\n if (this.$onionOptions?.enableSelector) {\n this.selector = (selector as string) ?? '';\n }\n }\n\n protected async __init__(_selector?: unknown) {\n // do nothing\n }\n\n public get $onionOptions(): IDecoratorModelOptions | undefined {\n return super.$onionOptions as IDecoratorModelOptions | undefined;\n }\n\n get self() {\n return cast<BeanModelBase>(this);\n }\n\n get scopeSelf(): ScopeModule {\n return this.bean.scope(__ThisModule__);\n }\n}\n","import type { Query, QueryKey } from '@tanstack/vue-query';\n\nimport { experimental_createQueryPersister } from '@tanstack/query-persist-client-core';\nimport localforage from 'localforage';\nimport { SymbolBeanFullName } from 'zova';\n\nimport type { QueryMetaPersister } from '../../types/index.js';\n\nimport { CookieWrapper } from '../../common/cookieWrapper.js';\nimport { resolveMaxAgeTime } from '../../types/index.js';\nimport { BeanModelLast } from './bean.model.last.js';\n\nexport class BeanModelPersister extends BeanModelLast {\n private _persisterLoad_inner<T>(\n storage: Storage,\n storageKey: string,\n storedData: any,\n query: Query,\n options: QueryMetaPersister,\n ): T | undefined {\n if (!storedData) return undefined;\n const persistedQuery = options.deserialize\n ? options.deserialize(storedData as string, options.deserializeDefault!)\n : options.deserializeDefault!(storedData as string);\n\n if (persistedQuery.state.dataUpdatedAt) {\n const queryAge = Date.now() - persistedQuery.state.dataUpdatedAt;\n const expired = queryAge > (resolveMaxAgeTime(options.maxAge, query) ?? Infinity);\n const busted = persistedQuery.buster !== options.buster;\n if (expired || busted) {\n storage.removeItem(storageKey);\n } else {\n // Set proper updatedAt, since resolving in the first pass overrides those values\n query.setState({\n dataUpdatedAt: persistedQuery.state.dataUpdatedAt,\n errorUpdatedAt: persistedQuery.state.errorUpdatedAt,\n });\n return persistedQuery.state.data as T;\n }\n } else {\n storage.removeItem(storageKey);\n }\n }\n\n $persisterLoad<T>(queryKey: QueryKey): Promise<T | undefined> | T | undefined {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return undefined;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return undefined;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return undefined;\n const storageKey = this._getPersisterStorageKey(options, query);\n try {\n const storedData = storage.getItem(storageKey);\n if (options.sync) {\n return this._persisterLoad_inner(storage as any, storageKey, storedData, query, options);\n } else {\n return (storedData as Promise<T>).then(storedData => {\n return this._persisterLoad_inner(storage as any, storageKey, storedData, query, options);\n });\n }\n } catch (err) {\n if (process.env.DEV) {\n console.error(err);\n console.warn(\n 'Encountered an error attempting to restore query cache from persisted location.',\n );\n }\n storage.removeItem(storageKey);\n }\n }\n\n $persisterSave(queryKey: QueryKey) {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return;\n const storageKey = this._getPersisterStorageKey(options, query);\n const params = {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n buster: options.buster,\n };\n const data = options.serialize\n ? options.serialize(params, options.serializeDefault!)\n : options.serializeDefault!(params);\n if (options.sync === true) {\n storage.setItem(storageKey, data);\n } else {\n // Persist if we have storage defined, we use timeout to get proper state to be persisted\n setTimeout(() => {\n storage.setItem(storageKey, data);\n }, 0);\n }\n }\n\n $persisterRemove(queryKey: QueryKey) {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return;\n const storageKey = this._getPersisterStorageKey(options, query);\n if (options.sync === true) {\n storage.removeItem(storageKey);\n } else {\n // Persist if we have storage defined, we use timeout to get proper state to be persisted\n setTimeout(() => {\n storage.removeItem(storageKey);\n }, 0);\n }\n }\n\n protected _createPersister(options?: QueryMetaPersister | boolean): any {\n options = this._adjustPersisterOptions(options);\n if (!options) return undefined;\n return experimental_createQueryPersister({\n storage: this._getPersisterStorage(options) as any,\n maxAge: options.maxAge as number,\n refetchOnRestore: options.refetchOnRestore,\n prefix: options.prefix,\n buster: options.buster,\n }).persisterFn;\n }\n\n protected _adjustPersisterOptions(options?: QueryMetaPersister | boolean) {\n if (options === false) return undefined;\n if (options === undefined || options === true) {\n options = {};\n } else {\n options = { ...options };\n }\n options.storage = options.storage ?? (options.sync ? 'local' : 'db');\n options.maxAge = options.maxAge ?? this.scopeSelf.config.persister.maxAge[options.storage];\n options.refetchOnRestore =\n options.refetchOnRestore ?? this.scopeSelf.config.persister.refetchOnRestore;\n options.prefix = options.prefix ?? this._getPersisterPrefix();\n options.buster = options.buster ?? this._getPersisterBuster();\n options.serializeDefault = options.serializeDefault ?? JSON.stringify;\n options.deserializeDefault = options.deserializeDefault ?? JSON.parse;\n return options;\n }\n\n protected _getPersisterStorageKey(options: QueryMetaPersister, query: Query) {\n if (options.storageKeySimplify) return String(query.queryKey[query.queryKey.length - 1]);\n return `${options.prefix}-${query.queryHash}`;\n }\n\n protected _getPersisterStorage(options?: QueryMetaPersister | boolean, query?: Query) {\n options = this._adjustPersisterOptions(options);\n if (!options) return undefined;\n // cookie\n if (options.storage === 'cookie')\n return this.bean._newBeanSimple(CookieWrapper, false, options, query);\n // check server\n if (process.env.SERVER) return undefined;\n // local\n if (options.storage === 'local') return localStorage;\n // db\n if (options.storage === 'db') return localforage;\n }\n\n protected _getPersisterPrefix() {\n return `${this.sys.env.APP_NAME}-query`;\n }\n\n protected _getPersisterBuster() {\n return this.sys.env.APP_VERSION;\n }\n\n protected _forceQueryKeyPrefix(queryKey?: QueryKey): QueryKey {\n if (!queryKey) queryKey = [];\n if (!this._prefixIsBeanFullName(queryKey[0])) {\n const prefixes = [this[SymbolBeanFullName]];\n if (this.$onionOptions?.enableSelector) {\n prefixes.push(this.selector);\n }\n queryKey = prefixes.concat(queryKey as any);\n }\n return queryKey;\n }\n\n private _prefixIsBeanFullName(prefix?: any) {\n return prefix === this[SymbolBeanFullName];\n // return (prefix && typeof prefix === 'string' && prefix.split('.').length === 3);\n }\n}\n","import type { Query } from '@tanstack/vue-query';\n\nimport { BeanModelPersister } from './bean.model.persister.js';\n\nexport class BeanModelLocal extends BeanModelPersister {\n $serializeLocal(obj?: Query) {\n return JSON.stringify(obj?.state?.data);\n }\n\n $deserializeLocal(value?: string) {\n return {\n state: {\n data: value ? JSON.parse(value) : undefined,\n dataUpdateCount: 0,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: 'success',\n fetchStatus: 'idle',\n },\n queryKey: undefined,\n queryHash: undefined,\n buster: this._getPersisterBuster(),\n };\n }\n}\n","import type { Query } from '@tanstack/vue-query';\n\nimport type { QueryMetaPersisterCookieType } from '../../types/index.js';\n\nimport { BeanModelLocal } from './bean.model.local.js';\n\nexport class BeanModelCookie extends BeanModelLocal {\n $serializeCookie(obj?: Query) {\n return String(obj?.state?.data ?? '');\n }\n\n $deserializeCookie(value?: any) {\n return {\n state: {\n data: value,\n dataUpdateCount: 0,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: 'success',\n fetchStatus: 'idle',\n },\n queryKey: undefined,\n queryHash: undefined,\n buster: this._getPersisterBuster(),\n };\n }\n\n protected _cookieCoerce(value?: string, cookieType?: QueryMetaPersisterCookieType) {\n if (value === undefined || value === '') return undefined; // string of '' means should delete the cookie\n if (!cookieType || cookieType === 'auto') {\n return value === 'true' ? true : value === 'false' ? false : value;\n } else if (cookieType === 'boolean') {\n return value === 'true' ? true : value === 'false' ? false : Boolean(Number(value));\n } else if (cookieType === 'number') {\n return Number(value);\n } else if (cookieType === 'date') {\n return new Date(value);\n } else if (cookieType === 'string') {\n return value;\n }\n return value;\n }\n}\n","import type {\n DataTag,\n DefaultError,\n InvalidateOptions,\n InvalidateQueryFilters,\n Query,\n QueryFilters,\n QueryKey,\n RefetchOptions,\n RefetchQueryFilters,\n SetDataOptions,\n Updater,\n} from '@tanstack/vue-query';\n\nimport localforage from 'localforage';\nimport { cast } from 'zova';\n\nimport type { MaybeRefDeep, NoUnknown } from '../../common/types.js';\n\nimport { BeanModelCookie } from './bean.model.cookie.js';\n\nexport class BeanModelQuery extends BeanModelCookie {\n $setQueryData<\n TQueryFnData,\n TTaggedQueryKey extends QueryKey,\n TData = TTaggedQueryKey extends DataTag<unknown, infer TaggedValue>\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,\n persisterSave?: boolean,\n options?: MaybeRefDeep<SetDataOptions>,\n ): TData | undefined;\n $setQueryData<TQueryFnData, TData = NoUnknown<TQueryFnData>>(\n queryKey: MaybeRefDeep<QueryKey>,\n updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,\n persisterSave?: boolean,\n options?: MaybeRefDeep<SetDataOptions>,\n ): TData | undefined;\n $setQueryData(queryKey, updater, persisterSave, options) {\n queryKey = this._forceQueryKeyPrefix(queryKey);\n const data = this.$queryClient.setQueryData(queryKey, updater, options);\n if (data === undefined) {\n if (persisterSave) {\n this.$persisterRemove(queryKey);\n }\n this.$setQueryDataDirect(queryKey, data);\n } else {\n if (persisterSave) {\n this.$persisterSave(queryKey);\n }\n }\n return data;\n }\n\n $queryFind<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.getQueryCache().find(filters as any);\n }\n\n $invalidateQueries(\n filters?: InvalidateQueryFilters,\n options?: MaybeRefDeep<InvalidateOptions>,\n ): Promise<void> {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.invalidateQueries(filters, options);\n }\n\n $refetchQueries(\n filters?: RefetchQueryFilters,\n options?: MaybeRefDeep<RefetchOptions>,\n ): Promise<void> {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.refetchQueries(filters, options);\n }\n\n $setQueryDataDirect(queryKey: QueryKey, value: any) {\n const query = this.$queryFind({ queryKey, exact: true });\n query?.setData(value);\n }\n\n async $clear() {\n const queries = this.$queryClient.getQueryCache().getAll();\n for (const query of queries) {\n query?.setData(undefined);\n }\n // remove all db cache\n await localforage.clear();\n }\n\n $normalizeFilters<T extends {}>(filters?: T): T {\n if (!filters) filters = {} as T;\n const queryKey = this._forceQueryKeyPrefix(cast(filters).queryKey);\n return { ...filters, queryKey };\n }\n}\n","import type {\n DefaultError,\n QueryClient,\n QueryKey,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { checkErrorJwtExpired } from '@cabloy/utils';\nimport { useQuery } from '@tanstack/vue-query';\nimport { cast } from 'zova';\n\nimport type {\n DefinedInitialQueryOptions,\n UndefinedInitialQueryOptions,\n} from '../../common/types.js';\n\nimport { resolveStaleTime } from '../../types/index.js';\nimport { BeanModelQuery } from './bean.model.query.js';\n\nexport class BeanModelUseQuery extends BeanModelQuery {\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useQuery(options, queryClient) {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const persister = this._createPersister(options.meta?.persister);\n const optionsDefault: any = {};\n if (!cast(options).meta?.disableErrorEffect) {\n optionsDefault.throwOnError = (error: Error, query) => {\n let errorInfo = cast(options).meta?.errorInfo;\n if (typeof errorInfo === 'function') {\n errorInfo = errorInfo(error, query);\n }\n if (!error.message.includes('useQuery:') && !checkErrorJwtExpired(error)) {\n error.message = `useQuery: [${queryKey.join(', ')}]: ${error.message}`;\n }\n this.$errorHandler(error, errorInfo ?? 'useQuery');\n return false;\n };\n }\n options = Object.assign(optionsDefault, options, { queryKey, persister });\n // staleTime\n const sync = typeof options.meta?.persister === 'object' && options.meta?.persister?.sync;\n if (sync !== true) {\n const staleTime = options.staleTime ?? this.scopeSelf.config.query.staleTime.async;\n const queryCache = this.$queryFind({ queryKey });\n const queryCacheExists = queryCache?.state.data !== undefined;\n options.staleTime = query => {\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration && queryCacheExists) {\n return resolveStaleTime(this.scopeSelf.config.query.staleTime.ssr, query);\n }\n return resolveStaleTime(staleTime, query);\n };\n }\n return this.ctx.util.instanceScope(() => {\n return useQuery(options, queryClient);\n });\n }\n}\n","import type {\n DefaultError,\n Query,\n QueryClient,\n QueryKey,\n QueryMeta,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { hashKey } from '@tanstack/vue-query';\nimport { deepExtend, useCustomRef } from 'zova';\n\nimport type {\n DefinedInitialQueryOptions,\n UndefinedInitialQueryOptions,\n} from '../../common/types.js';\nimport type { QueryMetaPersister, UseQueryComputedOptions } from '../../types/query.js';\n\nimport { BeanModelUseQuery } from './bean.model.useQuery.js';\n\nconst SymbolUseQueries = Symbol('SymbolUseQueries');\nconst SymbolUseComputeds = Symbol('SymbolUseComputeds');\n\nexport class BeanModelUseState extends BeanModelUseQuery {\n private [SymbolUseQueries]: Record<string, unknown> = {};\n private [SymbolUseComputeds]: Record<string, unknown> = {};\n\n async $loadStateDb<T>(dbData: T): Promise<T> {\n return await dbData;\n }\n\n $useStateDb<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n maxAge: this.scopeSelf.config.persister.maxAge.local,\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n ssr: {\n dehydrate: false,\n },\n persister: { storage: 'db', sync: false },\n } satisfies QueryMeta,\n },\n );\n const self = this;\n return useCustomRef(() => {\n return {\n get() {\n return self._handleAsyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n }\n\n $useStateLocal<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n persister: {\n serializeDefault: (obj?: Query) => {\n return this.$serializeLocal(obj);\n },\n deserializeDefault: (value?: string) => {\n return this.$deserializeLocal(value);\n },\n storageKeySimplify: true,\n },\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: { storage: 'local', sync: true } satisfies QueryMetaPersister,\n },\n },\n );\n const self = this;\n return useCustomRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, true);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, true, value);\n // },\n // });\n }\n\n $useStateCookie<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n persister: {\n serializeDefault: (obj?: Query) => {\n return this.$serializeCookie(obj);\n },\n deserializeDefault: (value?: string) => {\n const cookieType = options.meta.persister.cookieType;\n return this.$deserializeCookie(this._cookieCoerce(value, cookieType));\n },\n storageKeySimplify: true,\n },\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: { storage: 'cookie', sync: true } satisfies QueryMetaPersister,\n },\n },\n );\n const self = this;\n return useCustomRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, true);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, true, value);\n // },\n // });\n }\n\n $useStateMem<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem(options, queryClient) {\n options = deepExtend({}, options, {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: false,\n },\n });\n const self = this;\n return useCustomRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, false);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, false, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, false);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, false, value);\n // },\n // });\n }\n\n $useStateComputed<TDATA, TQueryKey extends QueryKey>(\n options: UseQueryComputedOptions<TDATA, TQueryKey>,\n ): TDATA {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const queryHash = hashKey(queryKey);\n if (!this[SymbolUseComputeds][queryHash]) {\n this[SymbolUseComputeds][queryHash] = this.$useComputed(\n options.queryFn,\n options.debugOptions,\n );\n }\n return this[SymbolUseComputeds][queryHash] as unknown as TDATA;\n }\n\n $useStateData<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useStateData<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useStateData<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useStateData(options, queryClient) {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const queryHash = hashKey(queryKey);\n if (!this[SymbolUseQueries][queryHash]) {\n const useQuery = this.$useQuery(options, queryClient);\n this[SymbolUseQueries][queryHash] = useQuery;\n if (!options.meta?.disableSuspenseOnInit) {\n useQuery.suspense();\n }\n }\n return this[SymbolUseQueries][queryHash];\n }\n\n private _handleAsyncDataGet(options, queryClient, persister) {\n const query = this.$useStateData(options, queryClient);\n if (query.data !== undefined) return query.data;\n return this._handleAsyncDataGet_inner(options, queryClient, persister);\n }\n\n private async _handleAsyncDataGet_inner(options, queryClient, persister) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n if (persister) {\n const data = await this.$persisterLoad(queryKey);\n if (data !== undefined) {\n this.$setQueryData(queryKey, data, false);\n }\n }\n if (query.data === undefined) {\n this._handleSyncDataGet_defaultData(queryKey, options);\n }\n return query.data;\n }\n\n private _handleSyncDataGet(options, queryClient, persister) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n if (query.data !== undefined) return query.data;\n if (persister) {\n const data = this.$persisterLoad(queryKey);\n if (data !== undefined) {\n this.$setQueryData(queryKey, data, false);\n }\n }\n if (query.data === undefined) {\n this._handleSyncDataGet_defaultData(queryKey, options);\n }\n return query.data;\n }\n\n private _handleSyncDataGet_defaultData(queryKey, options) {\n let defaultData = options.meta?.defaultData;\n if (typeof defaultData === 'function') {\n defaultData = defaultData();\n }\n if (defaultData !== undefined) {\n // need not persister save\n this.$setQueryData(queryKey, defaultData, false);\n }\n }\n\n private _handleSyncDataSet(options, queryClient, persister, value) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n this.$setQueryData(queryKey, value, persister);\n return query;\n }\n}\n","import type {\n DefaultError,\n QueryClient,\n QueryKey,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport type {\n DefinedInitialQueryOptions,\n UndefinedInitialQueryOptions,\n} from '../../common/types.js';\nimport type { StateType } from '../../types/query.js';\n\nimport { BeanModelUseState } from './bean.model.useState.js';\n\nexport class BeanModelUseStateGeneral extends BeanModelUseState {\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useState(stateType: StateType, options, queryClient) {\n switch (stateType) {\n case 'db':\n return this.$useStateDb(options, queryClient);\n case 'local':\n return this.$useStateLocal(options, queryClient);\n case 'cookie':\n return this.$useStateCookie(options, queryClient);\n case 'mem':\n return this.$useStateMem(options, queryClient);\n case 'data':\n return this.$useStateData(options, queryClient);\n }\n }\n}\n","import type {\n DefaultError,\n MutationKey,\n MutationObserverOptions,\n QueryClient,\n UseMutationReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { hashKey, useMutation } from '@tanstack/vue-query';\nimport { cast } from 'zova';\n\nimport type { MaybeRefDeep } from '../../common/types.js';\n\nimport { BeanModelUseStateGeneral } from './bean.model.useStateGeneral.js';\n\nconst SymbolUseMutations = Symbol('SymbolUseMutations');\n\nexport class BeanModelUseMutation extends BeanModelUseStateGeneral {\n private [SymbolUseMutations]: Record<string, unknown> = {};\n\n $useMutation<TData = unknown, TVariables = void, TContext = unknown>(\n mutationOptions: MaybeRefDeep<\n MutationObserverOptions<TData, DefaultError, TVariables, TContext>\n >,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseMutationReturnType<TData, DefaultError, TVariables, TContext>> {\n return this.ctx.util.instanceScope(() => {\n return useMutation(mutationOptions, queryClient) as any;\n });\n }\n\n $useMutationData<TData = unknown, TVariables = void, TContext = unknown>(\n mutationOptions: MaybeRefDeep<\n MutationObserverOptions<TData, DefaultError, TVariables, TContext>\n >,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseMutationReturnType<TData, DefaultError, TVariables, TContext>> {\n let mutationKey: MutationKey = cast(mutationOptions).mutationKey;\n if (!mutationKey || mutationKey.length === 0) throw new Error('should specify mutationKey');\n mutationKey = this.self._forceQueryKeyPrefix(mutationKey);\n const mutationHash = hashKey(mutationKey);\n if (!this[SymbolUseMutations][mutationHash]) {\n const optionsDefault: any = {};\n if (!cast(mutationOptions).meta?.disableErrorEffect) {\n optionsDefault.onError = (error, variables, context) => {\n let errorInfo = cast(mutationOptions).meta?.errorInfo;\n if (typeof errorInfo === 'function') {\n errorInfo = errorInfo(error, variables, context);\n }\n this.$errorHandler(error, errorInfo ?? 'useMutationData');\n };\n }\n mutationOptions = Object.assign(optionsDefault, mutationOptions, { mutationKey });\n this[SymbolUseMutations][mutationHash] = this.$useMutation(mutationOptions, queryClient);\n }\n return this[SymbolUseMutations][mutationHash] as UnwrapNestedRefs<\n UseMutationReturnType<TData, DefaultError, TVariables, TContext>\n >;\n }\n}\n","import { BeanModelUseMutation } from './bean.model.useMutation.js';\n\nexport class BeanModelFirst extends BeanModelUseMutation {}\n","import { Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport { BeanModelFirst } from './bean.model/bean.model.first.js';\n\n@Bean()\n@Virtual()\nexport class BeanModelBase extends BeanModelFirst {}\n","import type { VueQueryPluginOptions } from '@tanstack/vue-query';\n\nimport { dehydrate, hydrate, QueryCache, QueryClient, VueQueryPlugin } from '@tanstack/vue-query';\nimport { BeanBase, deepExtend } from 'zova';\nimport { Service } from 'zova-module-a-bean';\n\n@Service()\nexport class ServiceStorage extends BeanBase {\n private _queryClient: QueryClient;\n\n async moduleLoaded() {\n // options\n let options = this.scope.config.queryClientConfig.defaultOptions;\n if (process.env.SERVER) {\n options = deepExtend({}, options, {\n queries: { gcTime: Infinity },\n });\n }\n // queryCache\n const queryCache = new QueryCache();\n // queryClient\n const queryClient = (this._queryClient = new QueryClient({\n defaultOptions: options,\n queryCache,\n }));\n // use plugin\n const vueQueryPluginOptions: VueQueryPluginOptions = { queryClient };\n this.app.vue.use(VueQueryPlugin, vueQueryPluginOptions);\n }\n\n async appInitialize() {\n // onRendered\n if (process.env.SERVER) {\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (!err) {\n this.ctx.meta.$ssr.stateDefer.query = dehydrate(this._queryClient, {\n shouldDehydrateMutation: () => {\n return false;\n },\n });\n }\n this._queryClient.clear();\n });\n }\n // client\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n hydrate(this._queryClient, this.ctx.meta.$ssr.stateDefer.query);\n }\n }\n}\n","import type { DefaultOptions } from '@tanstack/vue-query';\nimport type { CookieOptions, ZovaSys } from 'zova';\n\nimport { defaultShouldDehydrateQuery } from '@tanstack/vue-query';\n\nimport type { MaxAgeTime, StaleTimeFunction } from '../types/index.js';\n\nconst defaultOptions: DefaultOptions = {\n queries: {\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: true,\n gcTime: 1000 * 60 * 5,\n },\n dehydrate: {\n shouldDehydrateQuery(query) {\n if (query.meta?.ssr?.dehydrate === false) return false;\n // mem query return true, because mem persister is false\n if (typeof query.meta?.persister === 'object' && query.meta?.persister?.sync) return false;\n return defaultShouldDehydrateQuery(query);\n },\n shouldDehydrateMutation(_mutation) {\n return false;\n },\n },\n};\n\nexport const config = (_sys: ZovaSys) => {\n return {\n persister: {\n maxAge: {\n cookie: undefined as MaxAgeTime | undefined, // undefined: session cookie\n local: Infinity as MaxAgeTime,\n db: (1000 * 60 * 60 * 24) as number, // 24 hours\n },\n cookie: {\n options: {} as Omit<CookieOptions, 'expires'>,\n },\n refetchOnRestore: true,\n },\n query: {\n staleTime: {\n async: 0 as StaleTimeFunction,\n ssr: Infinity as StaleTimeFunction,\n },\n },\n queryClientConfig: {\n defaultOptions,\n },\n };\n};\n","import type { IModule } from '@cabloy/module-info';\nimport type { BeanBase, BeanContainer, IMonkeyAppInitialize, IMonkeyBeanInit } from 'zova';\n\nimport { useQueryClient } from '@tanstack/vue-query';\nimport { markRaw } from 'vue';\nimport { BeanSimple } from 'zova';\n\nimport { ServiceStorage } from './service/storage.js';\n\nexport class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyBeanInit {\n private _moduleSelf: IModule;\n private _storage: ServiceStorage;\n\n constructor(moduleSelf: IModule) {\n super();\n this._moduleSelf = moduleSelf;\n }\n\n private async getStorage() {\n if (!this._storage) {\n this._storage = await this.bean._newBean(ServiceStorage, false);\n }\n return this._storage;\n }\n\n async appInitialize() {\n const storage = await this.getStorage();\n await storage.appInitialize();\n }\n\n async moduleLoading(_module: IModule) {}\n async moduleLoaded(module: IModule) {\n // self\n if (this._moduleSelf === module) {\n const storage = await this.getStorage();\n await storage.moduleLoaded();\n }\n }\n\n async beanInit(bean: BeanContainer, beanInstance: BeanBase) {\n bean.defineProperty(beanInstance, '$queryClient', {\n enumerable: false,\n configurable: true,\n get() {\n return markRaw(useQueryClient());\n },\n });\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.modelBase.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-model' {\n \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanModelBase } from '../bean/bean.modelBase.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-model.bean.modelBase': BeanModelBase;\n }\n}\n/** bean: end */\n/** service: begin */\nexport * from '../service/storage.js';\n\nimport 'zova-module-a-bean';\ndeclare module 'zova-module-a-bean' {\n \n export interface IServiceRecord {\n 'a-model:storage': never;\n }\n\n \n}\ndeclare module 'zova-module-a-model' {\n \n export interface ServiceStorage {\n /** @internal */\n get scope(): ScopeModuleAModel;\n }\n\n export interface ServiceStorage {\n get $beanFullName(): 'a-model.service.storage';\n get $onionName(): 'a-model:storage';\n \n } \n}\n/** service: end */\n/** service: begin */\nimport { ServiceStorage } from '../service/storage.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-model.service.storage': ServiceStorage;\n }\n}\n/** service: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAModel extends BeanScopeBase {}\n\nexport interface ScopeModuleAModel {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-model': ScopeModuleAModel;\n }\n \n export interface IBeanScopeConfig {\n 'a-model': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorModelOptions } from '../types/model.js';\n\nexport function Model<T extends IDecoratorModelOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('model', 'ctx', true, options);\n}\n","import type { DataQuery } from '../types/query.js';\n\nexport type TypeQueryAutoLoadFn<T> = () => DataQuery<T> | undefined;\n\nexport async function $QueryAutoLoad<T = any>(fn: TypeQueryAutoLoadFn<T>) {\n return _QueryAutoLoadInner<T>(fn);\n}\n\nexport async function $QueriesAutoLoad<T1 = any, T2 = any, T3 = any, T4 = any, T5 = any>(\n fn1?: TypeQueryAutoLoadFn<T1>,\n fn2?: TypeQueryAutoLoadFn<T2>,\n fn3?: TypeQueryAutoLoadFn<T3>,\n fn4?: TypeQueryAutoLoadFn<T4>,\n fn5?: TypeQueryAutoLoadFn<T5>,\n ...fns: TypeQueryAutoLoadFn<any>[]\n): Promise<\n [\n DataQuery<T1> | undefined,\n DataQuery<T2> | undefined,\n DataQuery<T3> | undefined,\n DataQuery<T4> | undefined,\n DataQuery<T5> | undefined,\n ...DataQuery<any>[],\n ]\n> {\n let promises: any[] = [\n _QueryAutoLoadInner<T1>(fn1),\n _QueryAutoLoadInner<T2>(fn2),\n _QueryAutoLoadInner<T3>(fn3),\n _QueryAutoLoadInner<T4>(fn4),\n _QueryAutoLoadInner<T5>(fn5),\n ];\n if (fns.length > 0) {\n promises = promises.concat(fns.map(fn => _QueryAutoLoadInner(fn)));\n }\n return (await Promise.all(promises)) as any;\n}\n\nasync function _QueryAutoLoadInner<T = any>(fn?: TypeQueryAutoLoadFn<T>) {\n if (!fn) return;\n const query = fn();\n if (query && query.data === undefined) {\n await query.suspense();\n }\n return query;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/types/query.ts","../src/.metadata/this.ts","../src/common/cookieWrapper.ts","../src/bean/bean.model/bean.model.last.ts","../src/bean/bean.model/bean.model.persister.ts","../src/bean/bean.model/bean.model.local.ts","../src/bean/bean.model/bean.model.cookie.ts","../src/bean/bean.model/bean.model.query.ts","../src/bean/bean.model/bean.model.useQuery.ts","../src/bean/bean.model/bean.model.useState.ts","../src/bean/bean.model/bean.model.useStateGeneral.ts","../src/bean/bean.model/bean.model.useMutation.ts","../src/bean/bean.model/bean.model.first.ts","../src/bean/bean.modelBase.ts","../src/service/storage.ts","../src/config/config.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/model.ts","../src/lib/utils.ts"],"sourcesContent":["import type {\n DefaultError,\n DehydratedState,\n Query,\n QueryKey,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/vue-query';\nimport type { DebuggerOptions, UnwrapNestedRefs } from 'vue';\n\nimport 'zova';\n\ndeclare module 'zova' {\n export interface BeanBase {\n $queryClient: ReturnType<typeof useQueryClient>;\n }\n}\n\ndeclare module 'zova-module-a-ssr' {\n export interface SSRContextStateDefer {\n query: DehydratedState;\n }\n}\n\ndeclare module '@tanstack/vue-query' {\n export interface Register {\n queryMeta: MyQueryMeta;\n mutationMeta: MyMutationMeta;\n }\n}\n\nexport type { UseQueryOptions } from '@tanstack/vue-query';\n\nexport interface MyQueryMetaBase extends Record<string, unknown> {\n defaultData?: (() => any) | any;\n ssr?: QueryMetaSSR;\n persister?: QueryMetaPersister | boolean;\n disableErrorEffect?: boolean;\n disableSuspenseOnInit?: boolean;\n}\n\nexport interface MyQueryMeta extends MyQueryMetaBase {\n errorInfo?: ((error, query) => string) | string;\n}\n\nexport interface MyMutationMeta extends MyQueryMetaBase {\n errorInfo?: ((error, variables, context) => string) | string;\n}\n\nexport interface QueryMetaSSR {\n /** default is true */\n dehydrate?: boolean;\n}\n\nexport type QueryMetaPersisterStorage = 'cookie' | 'local' | 'db' | undefined;\n\nexport type QueryMetaPersisterCookieType =\n | 'auto'\n | 'boolean'\n | 'number'\n | 'date'\n | 'string'\n | undefined;\n\nexport type StateType = 'db' | 'local' | 'cookie' | 'mem' | 'data';\n\nexport type StaleTime = number;\nexport type StaleTimeFunction<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = StaleTime | ((query: Query<TQueryFnData, TError, TData, TQueryKey>) => StaleTime);\n\nexport type MaxAgeTime = StaleTime;\nexport type MaxAgeTimeFunction<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>;\n\nexport interface QueryMetaPersister {\n /** default is false */\n sync?: boolean;\n /** default is db if async, local if sync */\n storage?: QueryMetaPersisterStorage;\n /** default is false if db, true if local/cookie */\n storageKeySimplify?: boolean;\n /** default is 24 hours */\n maxAge?: MaxAgeTime;\n /**\n * How to serialize the data to storage.\n * @default `JSON.stringify`\n */\n serialize?: (persistedQuery: any, serializeDefault: (persistedQuery: any) => any) => any;\n serializeDefault?: (persistedQuery: any) => any;\n /**\n * How to deserialize the data from storage.\n * @default `JSON.parse`\n */\n deserialize?: (cachedString: any, deserializeDefault: (cachedString: any) => any) => any;\n deserializeDefault?: (cachedString: any) => any;\n prefix?: string;\n buster?: string;\n cookieType?: QueryMetaPersisterCookieType;\n refetchOnRestore?: boolean | 'always';\n}\n\nexport type DataQuery<TData> = UnwrapNestedRefs<\n ReturnType<typeof useQuery<TData | undefined, Error | null>>\n>;\n\nexport type DataMutation<TData = unknown, TVariables = void, TContext = unknown> = UnwrapNestedRefs<\n ReturnType<typeof useMutation<TData, DefaultError, TVariables, TContext>>\n>;\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): StaleTime | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime;\n}\n\nexport function resolveMaxAgeTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n maxAge: undefined | MaxAgeTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): MaxAgeTime | undefined {\n return typeof maxAge === 'function' ? maxAge(query) : maxAge;\n}\n\nexport type UseQueryComputedFn<TDATA> = (oldValue?: TDATA) => TDATA;\n\nexport interface UseQueryComputedOptions<TDATA, TQueryKey> {\n queryKey: TQueryKey;\n queryFn: UseQueryComputedFn<TDATA>;\n debugOptions?: DebuggerOptions;\n}\n","export const __ThisModule__ = 'a-model';\nexport { ScopeModuleAModel as ScopeModule } from './index.js';\n","import type { Query } from '@tanstack/vue-query';\nimport type { CookieOptions } from 'zova';\n\nimport { BeanSimple } from 'zova';\n\nimport type { QueryMetaPersister } from '../types/index.js';\n\nimport { __ThisModule__ } from '../.metadata/this.js';\nimport { resolveMaxAgeTime } from '../types/index.js';\n\nexport class CookieWrapper extends BeanSimple {\n options: QueryMetaPersister;\n query: Query;\n\n protected __init__(options: QueryMetaPersister, query: Query) {\n this.options = options;\n this.query = query;\n }\n\n getItem(key: string): string | undefined {\n return this.app.meta.cookie.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n const configScope = this.bean.scope(__ThisModule__).config;\n const opts: CookieOptions = { ...configScope.persister.cookie.options };\n let maxAge = resolveMaxAgeTime(this.options.maxAge, this.query);\n if (maxAge !== undefined) {\n if (maxAge === Infinity) maxAge = 1000 * 60 * 60 * 24 * 365;\n opts.expires = new Date(Date.now() + maxAge);\n }\n this.app.meta.cookie.setItem(key, value, opts);\n }\n\n removeItem(key: string): void {\n this.app.meta.cookie.removeItem(key);\n }\n}\n","import { BeanBase, cast } from 'zova';\n\nimport type { ScopeModule } from '../../.metadata/this.js';\nimport type { IDecoratorModelOptions } from '../../types/model.js';\nimport type { BeanModelBase } from '../bean.modelBase.js';\n\nimport { __ThisModule__ } from '../../.metadata/this.js';\n\nexport class BeanModelLast extends BeanBase {\n public selector: string;\n\n constructor(selector?: unknown) {\n super();\n if (this.$onionOptions?.enableSelector) {\n this.selector = (selector as string) ?? '';\n }\n }\n\n protected async __init__(_selector?: unknown) {\n // do nothing\n }\n\n public get $onionOptions(): IDecoratorModelOptions | undefined {\n return super.$onionOptions as IDecoratorModelOptions | undefined;\n }\n\n get self() {\n return cast<BeanModelBase>(this);\n }\n\n get scopeSelf(): ScopeModule {\n return this.bean.scope(__ThisModule__);\n }\n}\n","import type { Query, QueryKey } from '@tanstack/vue-query';\n\nimport { experimental_createQueryPersister } from '@tanstack/query-persist-client-core';\nimport localforage from 'localforage';\nimport { SymbolBeanFullName } from 'zova';\n\nimport type { QueryMetaPersister } from '../../types/index.js';\n\nimport { CookieWrapper } from '../../common/cookieWrapper.js';\nimport { resolveMaxAgeTime } from '../../types/index.js';\nimport { BeanModelLast } from './bean.model.last.js';\n\nexport class BeanModelPersister extends BeanModelLast {\n private _persisterLoad_inner<T>(\n storage: Storage,\n storageKey: string,\n storedData: any,\n query: Query,\n options: QueryMetaPersister,\n ): T | undefined {\n if (!storedData) return undefined;\n const persistedQuery = options.deserialize\n ? options.deserialize(storedData as string, options.deserializeDefault!)\n : options.deserializeDefault!(storedData as string);\n\n if (persistedQuery.state.dataUpdatedAt) {\n const queryAge = Date.now() - persistedQuery.state.dataUpdatedAt;\n const expired = queryAge > (resolveMaxAgeTime(options.maxAge, query) ?? Infinity);\n const busted = persistedQuery.buster !== options.buster;\n if (expired || busted) {\n storage.removeItem(storageKey);\n } else {\n // Set proper updatedAt, since resolving in the first pass overrides those values\n query.setState({\n dataUpdatedAt: persistedQuery.state.dataUpdatedAt,\n errorUpdatedAt: persistedQuery.state.errorUpdatedAt,\n });\n return persistedQuery.state.data as T;\n }\n } else {\n storage.removeItem(storageKey);\n }\n }\n\n $persisterLoad<T>(queryKey: QueryKey): Promise<T | undefined> | T | undefined {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return undefined;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return undefined;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return undefined;\n const storageKey = this._getPersisterStorageKey(options, query);\n try {\n const storedData = storage.getItem(storageKey);\n if (options.sync) {\n return this._persisterLoad_inner(storage as any, storageKey, storedData, query, options);\n } else {\n return (storedData as Promise<T>).then(storedData => {\n return this._persisterLoad_inner(storage as any, storageKey, storedData, query, options);\n });\n }\n } catch (err) {\n if (process.env.DEV) {\n console.error(err);\n console.warn(\n 'Encountered an error attempting to restore query cache from persisted location.',\n );\n }\n storage.removeItem(storageKey);\n }\n }\n\n $persisterSave(queryKey: QueryKey) {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return;\n const storageKey = this._getPersisterStorageKey(options, query);\n const params = {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n buster: options.buster,\n };\n const data = options.serialize\n ? options.serialize(params, options.serializeDefault!)\n : options.serializeDefault!(params);\n if (options.sync === true) {\n storage.setItem(storageKey, data);\n } else {\n // Persist if we have storage defined, we use timeout to get proper state to be persisted\n setTimeout(() => {\n storage.setItem(storageKey, data);\n }, 0);\n }\n }\n\n $persisterRemove(queryKey: QueryKey) {\n const query = this.self.$queryFind({ queryKey });\n if (!query) return;\n const options = this._adjustPersisterOptions(query.meta?.persister);\n if (!options) return;\n const storage = this._getPersisterStorage(options, query);\n if (!storage) return;\n const storageKey = this._getPersisterStorageKey(options, query);\n if (options.sync === true) {\n storage.removeItem(storageKey);\n } else {\n // Persist if we have storage defined, we use timeout to get proper state to be persisted\n setTimeout(() => {\n storage.removeItem(storageKey);\n }, 0);\n }\n }\n\n protected _createPersister(options?: QueryMetaPersister | boolean): any {\n options = this._adjustPersisterOptions(options);\n if (!options) return undefined;\n return experimental_createQueryPersister({\n storage: this._getPersisterStorage(options) as any,\n maxAge: options.maxAge as number,\n refetchOnRestore: options.refetchOnRestore,\n prefix: options.prefix,\n buster: options.buster,\n }).persisterFn;\n }\n\n protected _adjustPersisterOptions(options?: QueryMetaPersister | boolean) {\n if (options === false) return undefined;\n if (options === undefined || options === true) {\n options = {};\n } else {\n options = { ...options };\n }\n options.storage = options.storage ?? (options.sync ? 'local' : 'db');\n options.maxAge = options.maxAge ?? this.scopeSelf.config.persister.maxAge[options.storage];\n options.refetchOnRestore =\n options.refetchOnRestore ?? this.scopeSelf.config.persister.refetchOnRestore;\n options.prefix = options.prefix ?? this._getPersisterPrefix();\n options.buster = options.buster ?? this._getPersisterBuster();\n options.serializeDefault = options.serializeDefault ?? JSON.stringify;\n options.deserializeDefault = options.deserializeDefault ?? JSON.parse;\n return options;\n }\n\n protected _getPersisterStorageKey(options: QueryMetaPersister, query: Query) {\n if (options.storageKeySimplify) return String(query.queryKey[query.queryKey.length - 1]);\n return `${options.prefix}-${query.queryHash}`;\n }\n\n protected _getPersisterStorage(options?: QueryMetaPersister | boolean, query?: Query) {\n options = this._adjustPersisterOptions(options);\n if (!options) return undefined;\n // cookie\n if (options.storage === 'cookie')\n return this.bean._newBeanSimple(CookieWrapper, false, options, query);\n // check server\n if (process.env.SERVER) return undefined;\n // local\n if (options.storage === 'local') return localStorage;\n // db\n if (options.storage === 'db') return localforage;\n }\n\n protected _getPersisterPrefix() {\n return `${this.sys.env.APP_NAME}-query`;\n }\n\n protected _getPersisterBuster() {\n return this.sys.env.APP_VERSION;\n }\n\n protected _forceQueryKeyPrefix(queryKey?: QueryKey): QueryKey {\n if (!queryKey) queryKey = [];\n if (!this._prefixIsBeanFullName(queryKey[0])) {\n const prefixes = [this[SymbolBeanFullName]];\n if (this.$onionOptions?.enableSelector) {\n prefixes.push(this.selector);\n }\n queryKey = prefixes.concat(queryKey as any);\n }\n return queryKey;\n }\n\n private _prefixIsBeanFullName(prefix?: any) {\n return prefix === this[SymbolBeanFullName];\n // return (prefix && typeof prefix === 'string' && prefix.split('.').length === 3);\n }\n}\n","import type { Query } from '@tanstack/vue-query';\n\nimport { BeanModelPersister } from './bean.model.persister.js';\n\nexport class BeanModelLocal extends BeanModelPersister {\n $serializeLocal(obj?: Query) {\n return JSON.stringify(obj?.state?.data);\n }\n\n $deserializeLocal(value?: string) {\n return {\n state: {\n data: value ? JSON.parse(value) : undefined,\n dataUpdateCount: 0,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: 'success',\n fetchStatus: 'idle',\n },\n queryKey: undefined,\n queryHash: undefined,\n buster: this._getPersisterBuster(),\n };\n }\n}\n","import type { Query } from '@tanstack/vue-query';\n\nimport type { QueryMetaPersisterCookieType } from '../../types/index.js';\n\nimport { BeanModelLocal } from './bean.model.local.js';\n\nexport class BeanModelCookie extends BeanModelLocal {\n $serializeCookie(obj?: Query) {\n return String(obj?.state?.data ?? '');\n }\n\n $deserializeCookie(value?: any) {\n return {\n state: {\n data: value,\n dataUpdateCount: 0,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: 'success',\n fetchStatus: 'idle',\n },\n queryKey: undefined,\n queryHash: undefined,\n buster: this._getPersisterBuster(),\n };\n }\n\n protected _cookieCoerce(value?: string, cookieType?: QueryMetaPersisterCookieType) {\n if (value === undefined || value === '') return undefined; // string of '' means should delete the cookie\n if (!cookieType || cookieType === 'auto') {\n return value === 'true' ? true : value === 'false' ? false : value;\n } else if (cookieType === 'boolean') {\n return value === 'true' ? true : value === 'false' ? false : Boolean(Number(value));\n } else if (cookieType === 'number') {\n return Number(value);\n } else if (cookieType === 'date') {\n return new Date(value);\n } else if (cookieType === 'string') {\n return value;\n }\n return value;\n }\n}\n","import type {\n DataTag,\n DefaultError,\n InvalidateOptions,\n InvalidateQueryFilters,\n Query,\n QueryFilters,\n QueryKey,\n RefetchOptions,\n RefetchQueryFilters,\n SetDataOptions,\n Updater,\n} from '@tanstack/vue-query';\n\nimport localforage from 'localforage';\nimport { cast } from 'zova';\n\nimport type { MaybeRefDeep, NoUnknown } from '../../common/types.js';\n\nimport { BeanModelCookie } from './bean.model.cookie.js';\n\nexport class BeanModelQuery extends BeanModelCookie {\n $setQueryData<\n TQueryFnData,\n TTaggedQueryKey extends QueryKey,\n TData = TTaggedQueryKey extends DataTag<unknown, infer TaggedValue>\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,\n persisterSave?: boolean,\n options?: MaybeRefDeep<SetDataOptions>,\n ): TData | undefined;\n $setQueryData<TQueryFnData, TData = NoUnknown<TQueryFnData>>(\n queryKey: MaybeRefDeep<QueryKey>,\n updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,\n persisterSave?: boolean,\n options?: MaybeRefDeep<SetDataOptions>,\n ): TData | undefined;\n $setQueryData(queryKey, updater, persisterSave, options) {\n queryKey = this._forceQueryKeyPrefix(queryKey);\n const data = this.$queryClient.setQueryData(queryKey, updater, options);\n if (data === undefined) {\n if (persisterSave) {\n this.$persisterRemove(queryKey);\n }\n this.$setQueryDataDirect(queryKey, data);\n } else {\n if (persisterSave) {\n this.$persisterSave(queryKey);\n }\n }\n return data;\n }\n\n $queryFind<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.getQueryCache().find(filters as any);\n }\n\n $invalidateQueries(\n filters?: InvalidateQueryFilters,\n options?: MaybeRefDeep<InvalidateOptions>,\n ): Promise<void> {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.invalidateQueries(filters, options);\n }\n\n $refetchQueries(\n filters?: RefetchQueryFilters,\n options?: MaybeRefDeep<RefetchOptions>,\n ): Promise<void> {\n filters = this.$normalizeFilters(filters);\n return this.$queryClient.refetchQueries(filters, options);\n }\n\n $setQueryDataDirect(queryKey: QueryKey, value: any) {\n const query = this.$queryFind({ queryKey, exact: true });\n query?.setData(value);\n }\n\n async $clear() {\n const queries = this.$queryClient.getQueryCache().getAll();\n for (const query of queries) {\n query?.setData(undefined);\n }\n // remove all db cache\n await localforage.clear();\n }\n\n $normalizeFilters<T extends {}>(filters?: T): T {\n if (!filters) filters = {} as T;\n const queryKey = this._forceQueryKeyPrefix(cast(filters).queryKey);\n return { ...filters, queryKey };\n }\n}\n","import type {\n DefaultError,\n QueryClient,\n QueryKey,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { checkErrorJwtExpired } from '@cabloy/utils';\nimport { useQuery } from '@tanstack/vue-query';\nimport { cast } from 'zova';\n\nimport type {\n DefinedInitialQueryOptions,\n UndefinedInitialQueryOptions,\n} from '../../common/types.js';\n\nimport { resolveStaleTime } from '../../types/index.js';\nimport { BeanModelQuery } from './bean.model.query.js';\n\nexport class BeanModelUseQuery extends BeanModelQuery {\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useQuery(options, queryClient) {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const persister = this._createPersister(options.meta?.persister);\n const optionsDefault: any = {};\n if (!cast(options).meta?.disableErrorEffect) {\n optionsDefault.throwOnError = (error: Error, query) => {\n let errorInfo = cast(options).meta?.errorInfo;\n if (typeof errorInfo === 'function') {\n errorInfo = errorInfo(error, query);\n }\n if (!error.message.includes('useQuery:') && !checkErrorJwtExpired(error)) {\n error.message = `useQuery: [${queryKey.join(', ')}]: ${error.message}`;\n }\n this.$errorHandler(error, errorInfo ?? 'useQuery');\n return false;\n };\n }\n options = Object.assign(optionsDefault, options, { queryKey, persister });\n // staleTime\n const sync = typeof options.meta?.persister === 'object' && options.meta?.persister?.sync;\n if (sync !== true) {\n const staleTime = options.staleTime ?? this.scopeSelf.config.query.staleTime.async;\n const queryCache = this.$queryFind({ queryKey });\n const queryCacheExists = queryCache?.state.data !== undefined;\n options.staleTime = query => {\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration && queryCacheExists) {\n return resolveStaleTime(this.scopeSelf.config.query.staleTime.ssr, query);\n }\n return resolveStaleTime(staleTime, query);\n };\n }\n return this.ctx.util.instanceScope(() => {\n return useQuery(options, queryClient);\n });\n }\n}\n","import type {\n DefaultError,\n Query,\n QueryClient,\n QueryKey,\n QueryMeta,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { hashKey } from '@tanstack/vue-query';\nimport { deepExtend } from 'zova';\n\nimport type { DefinedInitialQueryOptions, UndefinedInitialQueryOptions } from '../../common/types.js';\nimport type { QueryMetaPersister, UseQueryComputedOptions } from '../../types/query.js';\n\nimport { BeanModelUseQuery } from './bean.model.useQuery.js';\n\nconst SymbolUseQueries = Symbol('SymbolUseQueries');\nconst SymbolUseComputeds = Symbol('SymbolUseComputeds');\n\nexport class BeanModelUseState extends BeanModelUseQuery {\n private [SymbolUseQueries]: Record<string, unknown> = {};\n private [SymbolUseComputeds]: Record<string, unknown> = {};\n\n async $loadStateDb<T>(dbData: T): Promise<T> {\n return await dbData;\n }\n\n $useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateDb(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n maxAge: this.scopeSelf.config.persister.maxAge.local,\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n ssr: {\n dehydrate: false,\n },\n persister: { storage: 'db', sync: false },\n } satisfies QueryMeta,\n },\n );\n const self = this;\n return this.$customRef(() => {\n return {\n get() {\n return self._handleAsyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n }\n\n $useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateLocal(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n persister: {\n serializeDefault: (obj?: Query) => {\n return this.$serializeLocal(obj);\n },\n deserializeDefault: (value?: string) => {\n return this.$deserializeLocal(value);\n },\n storageKeySimplify: true,\n },\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: { storage: 'local', sync: true } satisfies QueryMetaPersister,\n },\n },\n );\n const self = this;\n return this.$customRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, true);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, true, value);\n // },\n // });\n }\n\n $useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateCookie(options, queryClient) {\n options = deepExtend(\n {\n meta: {\n persister: {\n serializeDefault: (obj?: Query) => {\n return this.$serializeCookie(obj);\n },\n deserializeDefault: (value?: string) => {\n const cookieType = options.meta.persister.cookieType;\n return this.$deserializeCookie(this._cookieCoerce(value, cookieType));\n },\n storageKeySimplify: true,\n },\n } satisfies QueryMeta,\n },\n options,\n {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: { storage: 'cookie', sync: true } satisfies QueryMetaPersister,\n },\n },\n );\n const self = this;\n return this.$customRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, true);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, true, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, true);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, true, value);\n // },\n // });\n }\n\n $useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useStateMem(options, queryClient) {\n options = deepExtend({}, options, {\n enabled: false,\n staleTime: Infinity,\n meta: {\n persister: false,\n },\n });\n const self = this;\n return this.$customRef(() => {\n return {\n get() {\n return self._handleSyncDataGet(options, queryClient, false);\n },\n set(value) {\n self._handleSyncDataSet(options, queryClient, false, value);\n },\n };\n });\n // return useComputed({\n // get() {\n // return self._handleSyncDataGet(options, queryClient, false);\n // },\n // set(value) {\n // self._handleSyncDataSet(options, queryClient, false, value);\n // },\n // });\n }\n\n $useStateComputed<TDATA, TQueryKey extends QueryKey>(options: UseQueryComputedOptions<TDATA, TQueryKey>): TDATA {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const queryHash = hashKey(queryKey);\n if (!this[SymbolUseComputeds][queryHash]) {\n this[SymbolUseComputeds][queryHash] = this.$computed(options.queryFn, options.debugOptions);\n }\n return this[SymbolUseComputeds][queryHash] as unknown as TDATA;\n }\n\n $useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useStateData(options, queryClient) {\n const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);\n const queryHash = hashKey(queryKey);\n if (!this[SymbolUseQueries][queryHash]) {\n const useQuery = this.$useQuery(options, queryClient);\n this[SymbolUseQueries][queryHash] = useQuery;\n if (!options.meta?.disableSuspenseOnInit) {\n useQuery.suspense();\n }\n }\n return this[SymbolUseQueries][queryHash];\n }\n\n private _handleAsyncDataGet(options, queryClient, persister) {\n const query = this.$useStateData(options, queryClient);\n if (query.data !== undefined) return query.data;\n return this._handleAsyncDataGet_inner(options, queryClient, persister);\n }\n\n private async _handleAsyncDataGet_inner(options, queryClient, persister) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n if (persister) {\n const data = await this.$persisterLoad(queryKey);\n if (data !== undefined) {\n this.$setQueryData(queryKey, data, false);\n }\n }\n if (query.data === undefined) {\n this._handleSyncDataGet_defaultData(queryKey, options);\n }\n return query.data;\n }\n\n private _handleSyncDataGet(options, queryClient, persister) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n if (query.data !== undefined) return query.data;\n if (persister) {\n const data = this.$persisterLoad(queryKey);\n if (data !== undefined) {\n this.$setQueryData(queryKey, data, false);\n }\n }\n if (query.data === undefined) {\n this._handleSyncDataGet_defaultData(queryKey, options);\n }\n return query.data;\n }\n\n private _handleSyncDataGet_defaultData(queryKey, options) {\n let defaultData = options.meta?.defaultData;\n if (typeof defaultData === 'function') {\n defaultData = defaultData();\n }\n if (defaultData !== undefined) {\n // need not persister save\n this.$setQueryData(queryKey, defaultData, false);\n }\n }\n\n private _handleSyncDataSet(options, queryClient, persister, value) {\n const queryKey = options.queryKey;\n const query = this.$useStateData(options, queryClient);\n this.$setQueryData(queryKey, value, persister);\n return query;\n }\n}\n","import type {\n DefaultError,\n QueryClient,\n QueryKey,\n UseQueryDefinedReturnType,\n UseQueryOptions,\n UseQueryReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport type {\n DefinedInitialQueryOptions,\n UndefinedInitialQueryOptions,\n} from '../../common/types.js';\nimport type { StateType } from '../../types/query.js';\n\nimport { BeanModelUseState } from './bean.model.useState.js';\n\nexport class BeanModelUseStateGeneral extends BeanModelUseState {\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'db' | 'local' | 'cookie' | 'mem',\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): TData;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;\n $useState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n stateType: 'data',\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;\n $useState(stateType: StateType, options, queryClient) {\n switch (stateType) {\n case 'db':\n return this.$useStateDb(options, queryClient);\n case 'local':\n return this.$useStateLocal(options, queryClient);\n case 'cookie':\n return this.$useStateCookie(options, queryClient);\n case 'mem':\n return this.$useStateMem(options, queryClient);\n case 'data':\n return this.$useStateData(options, queryClient);\n }\n }\n}\n","import type {\n DefaultError,\n MutationKey,\n MutationObserverOptions,\n QueryClient,\n UseMutationReturnType,\n} from '@tanstack/vue-query';\nimport type { UnwrapNestedRefs } from 'vue';\n\nimport { hashKey, useMutation } from '@tanstack/vue-query';\nimport { cast } from 'zova';\n\nimport type { MaybeRefDeep } from '../../common/types.js';\n\nimport { BeanModelUseStateGeneral } from './bean.model.useStateGeneral.js';\n\nconst SymbolUseMutations = Symbol('SymbolUseMutations');\n\nexport class BeanModelUseMutation extends BeanModelUseStateGeneral {\n private [SymbolUseMutations]: Record<string, unknown> = {};\n\n $useMutation<TData = unknown, TVariables = void, TContext = unknown>(\n mutationOptions: MaybeRefDeep<\n MutationObserverOptions<TData, DefaultError, TVariables, TContext>\n >,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseMutationReturnType<TData, DefaultError, TVariables, TContext>> {\n return this.ctx.util.instanceScope(() => {\n return useMutation(mutationOptions, queryClient) as any;\n });\n }\n\n $useMutationData<TData = unknown, TVariables = void, TContext = unknown>(\n mutationOptions: MaybeRefDeep<\n MutationObserverOptions<TData, DefaultError, TVariables, TContext>\n >,\n queryClient?: QueryClient,\n ): UnwrapNestedRefs<UseMutationReturnType<TData, DefaultError, TVariables, TContext>> {\n let mutationKey: MutationKey = cast(mutationOptions).mutationKey;\n if (!mutationKey || mutationKey.length === 0) throw new Error('should specify mutationKey');\n mutationKey = this.self._forceQueryKeyPrefix(mutationKey);\n const mutationHash = hashKey(mutationKey);\n if (!this[SymbolUseMutations][mutationHash]) {\n const optionsDefault: any = {};\n if (!cast(mutationOptions).meta?.disableErrorEffect) {\n optionsDefault.onError = (error, variables, context) => {\n let errorInfo = cast(mutationOptions).meta?.errorInfo;\n if (typeof errorInfo === 'function') {\n errorInfo = errorInfo(error, variables, context);\n }\n this.$errorHandler(error, errorInfo ?? 'useMutationData');\n };\n }\n mutationOptions = Object.assign(optionsDefault, mutationOptions, { mutationKey });\n this[SymbolUseMutations][mutationHash] = this.$useMutation(mutationOptions, queryClient);\n }\n return this[SymbolUseMutations][mutationHash] as UnwrapNestedRefs<\n UseMutationReturnType<TData, DefaultError, TVariables, TContext>\n >;\n }\n}\n","import { BeanModelUseMutation } from './bean.model.useMutation.js';\n\nexport class BeanModelFirst extends BeanModelUseMutation {}\n","import { Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport { BeanModelFirst } from './bean.model/bean.model.first.js';\n\n@Bean()\n@Virtual()\nexport class BeanModelBase extends BeanModelFirst {}\n","import type { VueQueryPluginOptions } from '@tanstack/vue-query';\n\nimport { dehydrate, hydrate, QueryCache, QueryClient, VueQueryPlugin } from '@tanstack/vue-query';\nimport { BeanBase, deepExtend } from 'zova';\nimport { Service } from 'zova-module-a-bean';\n\n@Service()\nexport class ServiceStorage extends BeanBase {\n private _queryClient: QueryClient;\n\n async moduleLoaded() {\n // options\n let options = this.scope.config.queryClientConfig.defaultOptions;\n if (process.env.SERVER) {\n options = deepExtend({}, options, {\n queries: { gcTime: Infinity },\n });\n }\n // queryCache\n const queryCache = new QueryCache();\n // queryClient\n const queryClient = (this._queryClient = new QueryClient({\n defaultOptions: options,\n queryCache,\n }));\n // use plugin\n const vueQueryPluginOptions: VueQueryPluginOptions = { queryClient };\n this.app.vue.use(VueQueryPlugin, vueQueryPluginOptions);\n }\n\n async appInitialize() {\n // onRendered\n if (process.env.SERVER) {\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (!err) {\n this.ctx.meta.$ssr.stateDefer.query = dehydrate(this._queryClient, {\n shouldDehydrateMutation: () => {\n return false;\n },\n });\n }\n this._queryClient.clear();\n });\n }\n // client\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n hydrate(this._queryClient, this.ctx.meta.$ssr.stateDefer.query);\n }\n }\n}\n","import type { DefaultOptions } from '@tanstack/vue-query';\nimport type { CookieOptions, ZovaSys } from 'zova';\n\nimport { defaultShouldDehydrateQuery } from '@tanstack/vue-query';\n\nimport type { MaxAgeTime, StaleTimeFunction } from '../types/index.js';\n\nconst defaultOptions: DefaultOptions = {\n queries: {\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: true,\n gcTime: 1000 * 60 * 5,\n },\n dehydrate: {\n shouldDehydrateQuery(query) {\n if (query.meta?.ssr?.dehydrate === false) return false;\n // mem query return true, because mem persister is false\n if (typeof query.meta?.persister === 'object' && query.meta?.persister?.sync) return false;\n return defaultShouldDehydrateQuery(query);\n },\n shouldDehydrateMutation(_mutation) {\n return false;\n },\n },\n};\n\nexport const config = (_sys: ZovaSys) => {\n return {\n persister: {\n maxAge: {\n cookie: undefined as MaxAgeTime | undefined, // undefined: session cookie\n local: Infinity as MaxAgeTime,\n db: (1000 * 60 * 60 * 24) as number, // 24 hours\n },\n cookie: {\n options: {} as Omit<CookieOptions, 'expires'>,\n },\n refetchOnRestore: true,\n },\n query: {\n staleTime: {\n async: 0 as StaleTimeFunction,\n ssr: Infinity as StaleTimeFunction,\n },\n },\n queryClientConfig: {\n defaultOptions,\n },\n };\n};\n","import type { IModule } from '@cabloy/module-info';\nimport type { BeanBase, BeanContainer, IMonkeyAppInitialize, IMonkeyBeanInit } from 'zova';\n\nimport { useQueryClient } from '@tanstack/vue-query';\nimport { markRaw } from 'vue';\nimport { BeanSimple } from 'zova';\n\nimport { ServiceStorage } from './service/storage.js';\n\nexport class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyBeanInit {\n private _moduleSelf: IModule;\n private _storage: ServiceStorage;\n\n constructor(moduleSelf: IModule) {\n super();\n this._moduleSelf = moduleSelf;\n }\n\n private async getStorage() {\n if (!this._storage) {\n this._storage = await this.bean._newBean(ServiceStorage, false);\n }\n return this._storage;\n }\n\n async appInitialize() {\n const storage = await this.getStorage();\n await storage.appInitialize();\n }\n\n async moduleLoading(_module: IModule) {}\n async moduleLoaded(module: IModule) {\n // self\n if (this._moduleSelf === module) {\n const storage = await this.getStorage();\n await storage.moduleLoaded();\n }\n }\n\n async beanInit(bean: BeanContainer, beanInstance: BeanBase) {\n bean.defineProperty(beanInstance, '$queryClient', {\n enumerable: false,\n configurable: true,\n get() {\n return markRaw(useQueryClient());\n },\n });\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.modelBase.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-model' {\n \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanModelBase } from '../bean/bean.modelBase.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-model.bean.modelBase': BeanModelBase;\n }\n}\n/** bean: end */\n/** service: begin */\nexport * from '../service/storage.js';\n\nimport 'zova-module-a-bean';\ndeclare module 'zova-module-a-bean' {\n \n export interface IServiceRecord {\n 'a-model:storage': never;\n }\n\n \n}\ndeclare module 'zova-module-a-model' {\n \n export interface ServiceStorage {\n /** @internal */\n get scope(): ScopeModuleAModel;\n }\n\n export interface ServiceStorage {\n get $beanFullName(): 'a-model.service.storage';\n get $onionName(): 'a-model:storage';\n \n } \n}\n/** service: end */\n/** service: begin */\nimport { ServiceStorage } from '../service/storage.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-model.service.storage': ServiceStorage;\n }\n}\n/** service: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAModel extends BeanScopeBase {}\n\nexport interface ScopeModuleAModel {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-model': ScopeModuleAModel;\n }\n \n export interface IBeanScopeConfig {\n 'a-model': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorModelOptions } from '../types/model.js';\n\nexport function Model<T extends IDecoratorModelOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('model', 'ctx', true, options);\n}\n","import type { DataQuery } from '../types/query.js';\n\nexport type TypeQueryAutoLoadFn<T> = () => DataQuery<T> | undefined;\n\nexport async function $QueryAutoLoad<T = any>(fn: TypeQueryAutoLoadFn<T>) {\n return _QueryAutoLoadInner<T>(fn);\n}\n\nexport async function $QueriesAutoLoad<T1 = any, T2 = any, T3 = any, T4 = any, T5 = any>(\n fn1?: TypeQueryAutoLoadFn<T1>,\n fn2?: TypeQueryAutoLoadFn<T2>,\n fn3?: TypeQueryAutoLoadFn<T3>,\n fn4?: TypeQueryAutoLoadFn<T4>,\n fn5?: TypeQueryAutoLoadFn<T5>,\n ...fns: TypeQueryAutoLoadFn<any>[]\n): Promise<\n [\n DataQuery<T1> | undefined,\n DataQuery<T2> | undefined,\n DataQuery<T3> | undefined,\n DataQuery<T4> | undefined,\n DataQuery<T5> | undefined,\n ...DataQuery<any>[],\n ]\n> {\n let promises: any[] = [\n _QueryAutoLoadInner<T1>(fn1),\n _QueryAutoLoadInner<T2>(fn2),\n _QueryAutoLoadInner<T3>(fn3),\n _QueryAutoLoadInner<T4>(fn4),\n _QueryAutoLoadInner<T5>(fn5),\n ];\n if (fns.length > 0) {\n promises = promises.concat(fns.map(fn => _QueryAutoLoadInner(fn)));\n }\n return (await Promise.all(promises)) as any;\n}\n\nasync function _QueryAutoLoadInner<T = any>(fn?: TypeQueryAutoLoadFn<T>) {\n if (!fn) return;\n const query = fn();\n if (query && query.data === undefined) {\n await query.suspense();\n }\n return query;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zova-module-a-model",
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "5.1.16",
|
|
4
|
+
"gitHead": "343c61ad189fe3f0fc997ee9f4c710567657e05c",
|
|
5
5
|
"description": "core",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Zova Module"
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
"dist",
|
|
14
14
|
"src",
|
|
15
15
|
"icons",
|
|
16
|
-
"assets"
|
|
17
|
-
"rest"
|
|
16
|
+
"assets"
|
|
18
17
|
],
|
|
19
18
|
"type": "module",
|
|
20
19
|
"exports": {
|
|
@@ -11,12 +11,9 @@ import type {
|
|
|
11
11
|
import type { UnwrapNestedRefs } from 'vue';
|
|
12
12
|
|
|
13
13
|
import { hashKey } from '@tanstack/vue-query';
|
|
14
|
-
import { deepExtend
|
|
14
|
+
import { deepExtend } from 'zova';
|
|
15
15
|
|
|
16
|
-
import type {
|
|
17
|
-
DefinedInitialQueryOptions,
|
|
18
|
-
UndefinedInitialQueryOptions,
|
|
19
|
-
} from '../../common/types.js';
|
|
16
|
+
import type { DefinedInitialQueryOptions, UndefinedInitialQueryOptions } from '../../common/types.js';
|
|
20
17
|
import type { QueryMetaPersister, UseQueryComputedOptions } from '../../types/query.js';
|
|
21
18
|
|
|
22
19
|
import { BeanModelUseQuery } from './bean.model.useQuery.js';
|
|
@@ -32,30 +29,15 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
32
29
|
return await dbData;
|
|
33
30
|
}
|
|
34
31
|
|
|
35
|
-
$useStateDb<
|
|
36
|
-
TQueryFnData = unknown,
|
|
37
|
-
TError = DefaultError,
|
|
38
|
-
TData = TQueryFnData,
|
|
39
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
40
|
-
>(
|
|
32
|
+
$useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
41
33
|
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
42
34
|
queryClient?: QueryClient,
|
|
43
35
|
): TData;
|
|
44
|
-
$useStateDb<
|
|
45
|
-
TQueryFnData = unknown,
|
|
46
|
-
TError = DefaultError,
|
|
47
|
-
TData = TQueryFnData,
|
|
48
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
49
|
-
>(
|
|
36
|
+
$useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
50
37
|
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
51
38
|
queryClient?: QueryClient,
|
|
52
39
|
): TData;
|
|
53
|
-
$useStateDb<
|
|
54
|
-
TQueryFnData = unknown,
|
|
55
|
-
TError = DefaultError,
|
|
56
|
-
TData = TQueryFnData,
|
|
57
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
58
|
-
>(
|
|
40
|
+
$useStateDb<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
59
41
|
options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
60
42
|
queryClient?: QueryClient,
|
|
61
43
|
): TData;
|
|
@@ -79,7 +61,7 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
79
61
|
},
|
|
80
62
|
);
|
|
81
63
|
const self = this;
|
|
82
|
-
return
|
|
64
|
+
return this.$customRef(() => {
|
|
83
65
|
return {
|
|
84
66
|
get() {
|
|
85
67
|
return self._handleAsyncDataGet(options, queryClient, true);
|
|
@@ -91,30 +73,15 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
91
73
|
});
|
|
92
74
|
}
|
|
93
75
|
|
|
94
|
-
$useStateLocal<
|
|
95
|
-
TQueryFnData = unknown,
|
|
96
|
-
TError = DefaultError,
|
|
97
|
-
TData = TQueryFnData,
|
|
98
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
99
|
-
>(
|
|
76
|
+
$useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
100
77
|
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
101
78
|
queryClient?: QueryClient,
|
|
102
79
|
): TData;
|
|
103
|
-
$useStateLocal<
|
|
104
|
-
TQueryFnData = unknown,
|
|
105
|
-
TError = DefaultError,
|
|
106
|
-
TData = TQueryFnData,
|
|
107
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
108
|
-
>(
|
|
80
|
+
$useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
109
81
|
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
110
82
|
queryClient?: QueryClient,
|
|
111
83
|
): TData;
|
|
112
|
-
$useStateLocal<
|
|
113
|
-
TQueryFnData = unknown,
|
|
114
|
-
TError = DefaultError,
|
|
115
|
-
TData = TQueryFnData,
|
|
116
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
117
|
-
>(
|
|
84
|
+
$useStateLocal<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
118
85
|
options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
119
86
|
queryClient?: QueryClient,
|
|
120
87
|
): TData;
|
|
@@ -143,7 +110,7 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
143
110
|
},
|
|
144
111
|
);
|
|
145
112
|
const self = this;
|
|
146
|
-
return
|
|
113
|
+
return this.$customRef(() => {
|
|
147
114
|
return {
|
|
148
115
|
get() {
|
|
149
116
|
return self._handleSyncDataGet(options, queryClient, true);
|
|
@@ -163,30 +130,15 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
163
130
|
// });
|
|
164
131
|
}
|
|
165
132
|
|
|
166
|
-
$useStateCookie<
|
|
167
|
-
TQueryFnData = unknown,
|
|
168
|
-
TError = DefaultError,
|
|
169
|
-
TData = TQueryFnData,
|
|
170
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
171
|
-
>(
|
|
133
|
+
$useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
172
134
|
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
173
135
|
queryClient?: QueryClient,
|
|
174
136
|
): TData;
|
|
175
|
-
$useStateCookie<
|
|
176
|
-
TQueryFnData = unknown,
|
|
177
|
-
TError = DefaultError,
|
|
178
|
-
TData = TQueryFnData,
|
|
179
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
180
|
-
>(
|
|
137
|
+
$useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
181
138
|
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
182
139
|
queryClient?: QueryClient,
|
|
183
140
|
): TData;
|
|
184
|
-
$useStateCookie<
|
|
185
|
-
TQueryFnData = unknown,
|
|
186
|
-
TError = DefaultError,
|
|
187
|
-
TData = TQueryFnData,
|
|
188
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
189
|
-
>(
|
|
141
|
+
$useStateCookie<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
190
142
|
options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
191
143
|
queryClient?: QueryClient,
|
|
192
144
|
): TData;
|
|
@@ -216,7 +168,7 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
216
168
|
},
|
|
217
169
|
);
|
|
218
170
|
const self = this;
|
|
219
|
-
return
|
|
171
|
+
return this.$customRef(() => {
|
|
220
172
|
return {
|
|
221
173
|
get() {
|
|
222
174
|
return self._handleSyncDataGet(options, queryClient, true);
|
|
@@ -236,30 +188,15 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
236
188
|
// });
|
|
237
189
|
}
|
|
238
190
|
|
|
239
|
-
$useStateMem<
|
|
240
|
-
TQueryFnData = unknown,
|
|
241
|
-
TError = DefaultError,
|
|
242
|
-
TData = TQueryFnData,
|
|
243
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
244
|
-
>(
|
|
191
|
+
$useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
245
192
|
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
246
193
|
queryClient?: QueryClient,
|
|
247
194
|
): TData;
|
|
248
|
-
$useStateMem<
|
|
249
|
-
TQueryFnData = unknown,
|
|
250
|
-
TError = DefaultError,
|
|
251
|
-
TData = TQueryFnData,
|
|
252
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
253
|
-
>(
|
|
195
|
+
$useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
254
196
|
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
255
197
|
queryClient?: QueryClient,
|
|
256
198
|
): TData;
|
|
257
|
-
$useStateMem<
|
|
258
|
-
TQueryFnData = unknown,
|
|
259
|
-
TError = DefaultError,
|
|
260
|
-
TData = TQueryFnData,
|
|
261
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
262
|
-
>(
|
|
199
|
+
$useStateMem<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
263
200
|
options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
264
201
|
queryClient?: QueryClient,
|
|
265
202
|
): TData;
|
|
@@ -272,7 +209,7 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
272
209
|
},
|
|
273
210
|
});
|
|
274
211
|
const self = this;
|
|
275
|
-
return
|
|
212
|
+
return this.$customRef(() => {
|
|
276
213
|
return {
|
|
277
214
|
get() {
|
|
278
215
|
return self._handleSyncDataGet(options, queryClient, false);
|
|
@@ -292,44 +229,24 @@ export class BeanModelUseState extends BeanModelUseQuery {
|
|
|
292
229
|
// });
|
|
293
230
|
}
|
|
294
231
|
|
|
295
|
-
$useStateComputed<TDATA, TQueryKey extends QueryKey>(
|
|
296
|
-
options: UseQueryComputedOptions<TDATA, TQueryKey>,
|
|
297
|
-
): TDATA {
|
|
232
|
+
$useStateComputed<TDATA, TQueryKey extends QueryKey>(options: UseQueryComputedOptions<TDATA, TQueryKey>): TDATA {
|
|
298
233
|
const queryKey = this.self._forceQueryKeyPrefix(options.queryKey);
|
|
299
234
|
const queryHash = hashKey(queryKey);
|
|
300
235
|
if (!this[SymbolUseComputeds][queryHash]) {
|
|
301
|
-
this[SymbolUseComputeds][queryHash] = this.$
|
|
302
|
-
options.queryFn,
|
|
303
|
-
options.debugOptions,
|
|
304
|
-
);
|
|
236
|
+
this[SymbolUseComputeds][queryHash] = this.$computed(options.queryFn, options.debugOptions);
|
|
305
237
|
}
|
|
306
238
|
return this[SymbolUseComputeds][queryHash] as unknown as TDATA;
|
|
307
239
|
}
|
|
308
240
|
|
|
309
|
-
$useStateData<
|
|
310
|
-
TQueryFnData = unknown,
|
|
311
|
-
TError = DefaultError,
|
|
312
|
-
TData = TQueryFnData,
|
|
313
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
314
|
-
>(
|
|
241
|
+
$useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
315
242
|
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
316
243
|
queryClient?: QueryClient,
|
|
317
244
|
): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;
|
|
318
|
-
$useStateData<
|
|
319
|
-
TQueryFnData = unknown,
|
|
320
|
-
TError = DefaultError,
|
|
321
|
-
TData = TQueryFnData,
|
|
322
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
323
|
-
>(
|
|
245
|
+
$useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
324
246
|
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
325
247
|
queryClient?: QueryClient,
|
|
326
248
|
): UnwrapNestedRefs<UseQueryDefinedReturnType<TData, TError>>;
|
|
327
|
-
$useStateData<
|
|
328
|
-
TQueryFnData = unknown,
|
|
329
|
-
TError = DefaultError,
|
|
330
|
-
TData = TQueryFnData,
|
|
331
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
332
|
-
>(
|
|
249
|
+
$useStateData<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
|
|
333
250
|
options: UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
334
251
|
queryClient?: QueryClient,
|
|
335
252
|
): UnwrapNestedRefs<UseQueryReturnType<TData, TError>>;
|