@v4fire/client
Version:
V4Fire client core library
109 lines (78 loc) • 2.55 kB
text/typescript
/*!
* V4Fire Client Core
* https://github.com/V4Fire/Client
*
* Released under the MIT license
* https://github.com/V4Fire/Client/blob/master/LICENSE
*/
//#if runtime has core/data
import type {
RequestBody,
ModelMethod,
RequestQuery,
CreateRequestOptions as BaseCreateRequestOptions
} from 'core/data';
//#endif
import type { AsyncOptions } from 'core/async';
import type { UnsafeIBlock } from 'super/i-block/i-block';
import type iData from 'super/i-data/i-data';
export interface RequestFilterOptions<D = unknown> {
isEmpty: boolean;
method: ModelMethod;
params: CreateRequestOptions<D>;
}
export interface RequestFilterFn<D = unknown> {
(data: RequestQuery | RequestBody, opts: RequestFilterOptions<D>): boolean;
}
export type RequestFilter<D = unknown> =
boolean |
RequestFilterFn<D>;
export type DefaultRequest<D = unknown> = [RequestQuery | RequestBody, CreateRequestOptions<D>];
export type RequestParams<D = unknown> = Partial<Record<ModelMethod, Request<D>>>;
export type Request<D = unknown> =
RequestQuery |
RequestBody |
DefaultRequest<D>;
export interface CreateRequestOptions<T = unknown> extends BaseCreateRequestOptions<T>, AsyncOptions {
showProgress?: boolean;
hideProgress?: boolean;
}
export interface RetryRequestFn<T = unknown> {
(): Promise<CanUndef<T>>;
}
export interface ComponentConverter<T = unknown, CTX extends iData = iData> {
(value: unknown, ctx: CTX): T;
}
export interface CheckDBEqualityFn<T = unknown> {
(value: CanUndef<T>, oldValue: CanUndef<T>): boolean;
}
export type CheckDBEquality<T = unknown> =
boolean |
CheckDBEqualityFn<T>;
// @ts-ignore (extend)
export interface UnsafeIData<CTX extends iData = iData> extends UnsafeIBlock<CTX> {
// @ts-ignore (access)
dataProviderEmitter: CTX['dataProviderEmitter'];
// @ts-ignore (access)
requestParams: CTX['requestParams'];
// @ts-ignore (access)
dbStore: CTX['dbStore'];
// @ts-ignore (access)
dp: CTX['dp'];
// @ts-ignore (access)
saveDataToRootStore: CTX['saveDataToRootStore'];
// @ts-ignore (access)
convertDataToDB: CTX['convertDataToDB'];
// @ts-ignore (access)
convertDBToComponent: CTX['convertDBToComponent'];
// @ts-ignore (access)
initRemoteData: CTX['initRemoteData'];
// @ts-ignore (access)
syncRequestParamsWatcher: CTX['syncRequestParamsWatcher'];
// @ts-ignore (access)
syncDataProviderWatcher: CTX['syncDataProviderWatcher'];
// @ts-ignore (access)
getDefaultRequestParams: CTX['getDefaultRequestParams'];
// @ts-ignore (access)
createRequest: CTX['createRequest'];
}