@ethlete/query 2.9.2 → 3.0.1

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.
Files changed (53) hide show
  1. package/esm2020/index.mjs +2 -1
  2. package/esm2020/lib/auth/auth-provider.types.mjs +1 -1
  3. package/esm2020/lib/auth/auth-provider.utils.mjs +1 -1
  4. package/esm2020/lib/auth/bearer-auth-provider.mjs +2 -2
  5. package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +4 -4
  6. package/esm2020/lib/directives/infinity-query.directive.mjs +18 -24
  7. package/esm2020/lib/directives/query.directive.mjs +9 -11
  8. package/esm2020/lib/entity/entity-store.mjs +73 -119
  9. package/esm2020/lib/entity/entity.types.mjs +1 -1
  10. package/esm2020/lib/entity/entity.utils.mjs +5 -0
  11. package/esm2020/lib/entity/index.mjs +2 -1
  12. package/esm2020/lib/infinite-query/infinity-query.mjs +47 -71
  13. package/esm2020/lib/infinite-query/infinity-query.types.mjs +1 -1
  14. package/esm2020/lib/infinite-query/infinity-query.utils.mjs +1 -1
  15. package/esm2020/lib/query/query.mjs +118 -211
  16. package/esm2020/lib/query/query.types.mjs +1 -1
  17. package/esm2020/lib/query/query.utils.mjs +1 -1
  18. package/esm2020/lib/query-client/query-client.mjs +3 -31
  19. package/esm2020/lib/query-client/query-client.types.mjs +1 -1
  20. package/esm2020/lib/query-creator/index.mjs +3 -0
  21. package/esm2020/lib/query-creator/query-creator.mjs +35 -0
  22. package/esm2020/lib/query-creator/query-creator.types.mjs +2 -0
  23. package/esm2020/lib/request/request.types.mjs +1 -1
  24. package/esm2020/lib/request/request.util.mjs +1 -7
  25. package/fesm2015/ethlete-query.mjs +314 -473
  26. package/fesm2015/ethlete-query.mjs.map +1 -1
  27. package/fesm2020/ethlete-query.mjs +308 -476
  28. package/fesm2020/ethlete-query.mjs.map +1 -1
  29. package/index.d.ts +1 -0
  30. package/lib/auth/auth-provider.types.d.ts +3 -4
  31. package/lib/auth/auth-provider.utils.d.ts +2 -2
  32. package/lib/auth/bearer-auth-provider.d.ts +1 -1
  33. package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
  34. package/lib/directives/infinity-query.directive.d.ts +6 -11
  35. package/lib/directives/query.directive.d.ts +7 -7
  36. package/lib/entity/entity-store.d.ts +13 -27
  37. package/lib/entity/entity.types.d.ts +0 -5
  38. package/lib/entity/entity.utils.d.ts +2 -0
  39. package/lib/entity/index.d.ts +1 -0
  40. package/lib/infinite-query/infinity-query.d.ts +10 -19
  41. package/lib/infinite-query/infinity-query.types.d.ts +4 -4
  42. package/lib/infinite-query/infinity-query.utils.d.ts +2 -3
  43. package/lib/query/query.d.ts +19 -12
  44. package/lib/query/query.types.d.ts +86 -51
  45. package/lib/query/query.utils.d.ts +16 -14
  46. package/lib/query-client/query-client.d.ts +12 -10
  47. package/lib/query-client/query-client.types.d.ts +2 -22
  48. package/lib/query-creator/index.d.ts +2 -0
  49. package/lib/query-creator/query-creator.d.ts +14 -0
  50. package/lib/query-creator/query-creator.types.d.ts +13 -0
  51. package/lib/request/request.types.d.ts +1 -1
  52. package/lib/request/request.util.d.ts +0 -1
  53. package/package.json +1 -1
@@ -1,42 +1,44 @@
1
1
  import { Paginated } from '@ethlete/types';
2
2
  import { BehaviorSubject, Observable } from 'rxjs';
3
- import { AnyQueryCreator, QueryClient, QueryCreator, QueryCreatorArgs, QueryCreatorEntity, QueryCreatorMethod, QueryCreatorResponse, QueryCreatorResponseTransformer, ResponseTransformerType } from '../query-client';
3
+ import { EntityStore } from '../entity';
4
+ import { QueryClient } from '../query-client';
5
+ import { AnyQueryCreator, QueryArgsOf, QueryCreator, QueryDataOf, QueryResponseOf, QueryStoreIdOf, QueryStoreOf } from '../query-creator';
4
6
  import { Method, RequestHeaders, RequestHeadersMethodMap } from '../request';
5
- import { AnyGqlQueryConfig, AnyQuery, AnyQueryCreatorCollection, AnyQueryOfCreatorCollection, AnyRestQueryConfig, BaseArguments, Cancelled, Failure, GqlQueryConfig, Loading, Prepared, QueryRawResponseType, QueryResponseType, QueryState, QueryStateData, QueryStateRawData, QueryStateType, RouteType, Success } from './query.types';
7
+ import { AnyGqlQueryConfig, AnyQuery, AnyQueryCreatorCollection, AnyRestQueryConfig, BaseArguments, Cancelled, Failure, GqlQueryConfig, Loading, Prepared, QueryCollectionOf, QueryState, QueryStateResponseOf, QueryStateType, RouteType, Success } from './query.types';
6
8
  type OmitNull<T> = T extends null ? never : T;
7
- export declare function filterSuccess(): <T extends QueryState<unknown, unknown> | null, Response_1 extends QueryStateData<OmitNull<T>>, RawResponse extends QueryStateRawData<OmitNull<T>>>(source: Observable<T>) => Observable<Success<Response_1, RawResponse>>;
8
- export declare function ignoreAutoRefresh(): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
9
- export declare function filterFailure(): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<Failure>;
10
- export declare function filterQueryStates(allowedStates: QueryStateType[]): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
9
+ export declare function filterSuccess(): <T extends QueryState<unknown> | null, Response_1 extends QueryStateResponseOf<OmitNull<T>>>(source: Observable<T>) => Observable<Success<Response_1>>;
10
+ export declare function ignoreAutoRefresh(): <T extends QueryState<unknown> | null>(source: Observable<T>) => Observable<T>;
11
+ export declare function filterFailure(): <T extends QueryState<unknown> | null>(source: Observable<T>) => Observable<Failure>;
12
+ export declare function filterQueryStates(allowedStates: QueryStateType[]): <T extends QueryState<unknown> | null>(source: Observable<T>) => Observable<T>;
11
13
  export declare function takeUntilResponse(config?: {
12
14
  excludeNull?: boolean;
13
- }): <T extends QueryState<unknown, unknown> | null>(source: Observable<T>) => Observable<T>;
15
+ }): <T extends QueryState<unknown> | null>(source: Observable<T>) => Observable<T>;
14
16
  export declare function filterNull(): <T>(source: Observable<T>) => Observable<OmitNull<T>>;
15
- export declare function switchQueryState(): <T extends AnyQuery | null, Response_1 extends QueryResponseType<OmitNull<T>>, RawResponse extends QueryRawResponseType<OmitNull<T>>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>, OmitNull<RawResponse>> | null>;
17
+ export declare function switchQueryState(): <T extends AnyQuery | null, Response_1 extends QueryResponseOf<OmitNull<T>>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>> | null>;
16
18
  export declare function switchQueryCollectionState(): <T extends {
17
19
  type: string;
18
20
  query: import("@ethlete/query").Query<any, any, any, any, any, any>;
19
- } | null, Response_1 extends QueryResponseType<OmitNull<T>["query"]>, RawResponse extends QueryRawResponseType<OmitNull<T>["query"]>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>, OmitNull<RawResponse>> | null>;
21
+ } | null, Response_1 extends QueryResponseOf<OmitNull<T>["query"]>>(source: Observable<T>) => Observable<QueryState<OmitNull<Response_1>> | null>;
20
22
  export declare const isQueryStateLoading: (state: QueryState | null | undefined) => state is Loading;
21
- export declare const isQueryStateSuccess: (state: QueryState | null | undefined) => state is Success<unknown, unknown>;
23
+ export declare const isQueryStateSuccess: (state: QueryState | null | undefined) => state is Success<unknown>;
22
24
  export declare const isQueryStateFailure: (state: QueryState | null | undefined) => state is Failure;
23
25
  export declare const isQueryStateCancelled: (state: QueryState | null | undefined) => state is Cancelled;
24
26
  export declare const isQueryStatePrepared: (state: QueryState | null | undefined) => state is Prepared;
25
27
  export declare const isAutoRefresh: (state: QueryState | null | undefined) => boolean;
26
28
  export declare const mergeHeaders: (...headers: Array<RequestHeaders | null | undefined>) => RequestHeaders | null | undefined;
27
- export declare const isGqlQueryConfig: <Response_1, Arguments extends BaseArguments | undefined, Route extends RouteType<Arguments> | undefined, ResponseTransformer extends ResponseTransformerType<Response_1> | undefined, Entity = unknown>(config: unknown) => config is GqlQueryConfig<Route, Response_1, Arguments, ResponseTransformer, Entity>;
29
+ export declare const isGqlQueryConfig: <Response_1, Arguments extends BaseArguments | undefined, Route extends RouteType<Arguments> | undefined, Store extends EntityStore<unknown>, Data, Id>(config: unknown) => config is GqlQueryConfig<Route, Response_1, Arguments, Store, Data, Id>;
28
30
  export declare const isQuery: <T extends AnyQuery>(query: unknown) => query is T;
29
- export declare const createQueryCollection: <T extends AnyQueryCreatorCollection, R extends AnyQueryOfCreatorCollection<T>>(queryMap: T) => BehaviorSubject<R | null>;
31
+ export declare const createQueryCollection: <T extends AnyQueryCreatorCollection, R extends QueryCollectionOf<T>>(queryMap: T) => BehaviorSubject<R | null>;
30
32
  export declare const extractQuery: <T extends AnyQuery | {
31
33
  type: string;
32
34
  query: import("@ethlete/query").Query<any, any, any, any, any, any>;
33
35
  } | null>(v: T) => import("@ethlete/query").Query<any, any, any, any, any, any> | null;
34
36
  export declare const getDefaultHeaders: (headers: RequestHeaders | RequestHeadersMethodMap | null | undefined, method: Method) => RequestHeaders;
35
- export declare const castQueryCreatorTypes: <QC extends AnyQueryCreator, Arguments extends QueryCreatorArgs<QC>, Method_1 extends QueryCreatorMethod<QC>, Response_1 extends QueryCreatorResponse<QC>, Route extends RouteType<Arguments>, ResponseTransformer extends QueryCreatorResponseTransformer<QC>, Entity extends QueryCreatorEntity<QC>, OverrideArguments extends BaseArguments | undefined, OverrideResponse extends Response_1 | undefined>(config: {
37
+ export declare const castQueryCreatorTypes: <QC extends AnyQueryCreator, Arguments extends QueryArgsOf<QC>, Response_1 extends QueryResponseOf<QC>, Store extends QueryStoreOf<QC>, Data extends QueryDataOf<QC>, Route extends RouteType<Arguments>, Id extends QueryStoreIdOf<QC>, OverrideArguments extends BaseArguments | undefined, OverrideResponse extends Response_1 | undefined>(config: {
36
38
  creator: QC;
37
39
  args?: OverrideArguments | undefined;
38
40
  response?: OverrideResponse | undefined;
39
- }) => QueryCreator<OverrideArguments, Method_1, OverrideResponse, Route, ResponseTransformer, Entity>;
41
+ }) => QueryCreator<OverrideArguments, OverrideResponse, Route, Store, Data, Id>;
40
42
  export declare const computeQueryMethod: (config: {
41
43
  config: AnyRestQueryConfig | AnyGqlQueryConfig;
42
44
  client: QueryClient;
@@ -1,7 +1,9 @@
1
1
  import { AuthProvider } from '../auth';
2
+ import { EntityStore } from '../entity';
2
3
  import { BaseArguments, GqlQueryConfig, GqlQueryConfigWithoutMethod, QueryConfigWithoutMethod, RestQueryConfig, RouteType } from '../query';
3
- import { Method as MethodType, RequestHeaders, RequestHeadersMethodMap } from '../request';
4
- import { DefaultResponseTransformer, QueryClientConfig, QueryCreator, ResponseTransformerType } from './query-client.types';
4
+ import { QueryCreator } from '../query-creator';
5
+ import { RequestHeaders, RequestHeadersMethodMap } from '../request';
6
+ import { QueryClientConfig } from './query-client.types';
5
7
  export declare class QueryClient {
6
8
  private _clientConfig;
7
9
  private readonly _store;
@@ -10,14 +12,14 @@ export declare class QueryClient {
10
12
  get authProvider$(): import("rxjs").Observable<AuthProvider | null>;
11
13
  private readonly _authProvider$;
12
14
  constructor(_clientConfig: QueryClientConfig);
13
- get: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "GET", Response_1, Route, ResponseTransformer, Entity>;
14
- post: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "POST", Response_1, Route, ResponseTransformer, Entity>;
15
- put: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "PUT", Response_1, Route, ResponseTransformer, Entity>;
16
- patch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "PATCH", Response_1, Route, ResponseTransformer, Entity>;
17
- delete: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "DELETE", Response_1, Route, ResponseTransformer, Entity>;
18
- gqlQuery: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "GQL_QUERY", Response_1, Route, ResponseTransformer, Entity>;
19
- gqlMutate: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined = undefined, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, "GQL_MUTATE", Response_1, Route, ResponseTransformer, Entity>;
20
- fetch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, Method extends MethodType, ResponseTransformer extends ResponseTransformerType<Response_1> = DefaultResponseTransformer<Response_1>, Entity = unknown>(queryConfig: RestQueryConfig<Route, Response_1, Arguments, ResponseTransformer, Entity> | GqlQueryConfig<Route, Response_1, Arguments, ResponseTransformer, Entity>) => QueryCreator<Arguments, Method, Response_1, Route, ResponseTransformer, Entity>;
15
+ get: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
16
+ post: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
17
+ put: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
18
+ patch: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
19
+ delete: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: QueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
20
+ gqlQuery: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
21
+ gqlMutate: <Route extends RouteType<Arguments>, Response_1, Id, Data = Response_1, Arguments extends BaseArguments | undefined = undefined, Store extends EntityStore<unknown> = EntityStore<unknown>>(queryConfig: GqlQueryConfigWithoutMethod<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
22
+ fetch: <Route extends RouteType<Arguments>, Response_1, Arguments extends BaseArguments | undefined, Id, Store extends EntityStore<unknown> = EntityStore<unknown>, Data = Response_1>(queryConfig: RestQueryConfig<Route, Response_1, Arguments, Store, Data, Id> | GqlQueryConfig<Route, Response_1, Arguments, Store, Data, Id>) => QueryCreator<Arguments, Response_1, Route, Store, Data, Id>;
21
23
  setAuthProvider: (authProvider: AuthProvider) => void;
22
24
  setDefaultHeaders: (config: {
23
25
  headers: RequestHeaders | RequestHeadersMethodMap | null;
@@ -1,7 +1,5 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- import { Query } from '../query/query';
3
- import { BaseArguments, EmptyObject, GqlTransferOption, RouteType, WithHeaders, WithUseResultIn } from '../query/query.types';
4
- import { CacheAdapterFn, Method as MethodType, RequestHeaders, RequestHeadersMethodMap, RequestRetryFn } from '../request';
1
+ import { GqlTransferOption } from '../query/query.types';
2
+ import { CacheAdapterFn, RequestHeaders, RequestHeadersMethodMap, RequestRetryFn } from '../request';
5
3
  import { QueryClient } from './query-client';
6
4
  export interface QueryClientConfig {
7
5
  /**
@@ -73,21 +71,3 @@ export interface QueryClientConfig {
73
71
  */
74
72
  parent?: QueryClient;
75
73
  }
76
- export type QueryCreator<Arguments extends BaseArguments | undefined, Method extends MethodType, Response, Route extends RouteType<Arguments>, ResponseTransformer extends ResponseTransformerType<Response>, Entity> = (Arguments extends BaseArguments ? {
77
- prepare: (args: Arguments & WithHeaders & WithUseResultIn<Response, ResponseTransformer>) => Query<Response, Arguments, Route, Method, ResponseTransformer, Entity>;
78
- } : {
79
- prepare: (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders & WithUseResultIn<Response, ResponseTransformer>) => Query<Response, Arguments, Route, Method, ResponseTransformer, Entity>;
80
- }) & {
81
- behaviorSubject: <T extends Query<Response, Arguments, Route, Method, ResponseTransformer, Entity>>(initialValue?: T | null) => BehaviorSubject<T | null>;
82
- };
83
- export type AnyQueryCreator = QueryCreator<any, any, any, any, any, any>;
84
- export type QueryCreatorArgs<T extends AnyQueryCreator> = T extends QueryCreator<infer Args, any, any, any, any, any> ? Args : never;
85
- export type QueryCreatorMethod<Q extends AnyQueryCreator> = Q extends QueryCreator<any, infer Method, any, any, any, any> ? Method : never;
86
- export type QueryCreatorResponse<T extends AnyQueryCreator> = T extends QueryCreator<any, any, infer Response, any, any, any> ? Response : never;
87
- export type QueryCreatorRoute<Q extends AnyQueryCreator> = Q extends QueryCreator<infer Args, any, any, any, any, any> ? RouteType<Args> : never;
88
- export type QueryCreatorResponseTransformer<Q extends AnyQueryCreator> = Q extends QueryCreator<any, any, any, any, infer ResponseTransformer, any> ? ResponseTransformer : never;
89
- export type QueryCreatorEntity<Q extends AnyQueryCreator> = Q extends QueryCreator<any, any, any, any, any, infer Entity> ? Entity : never;
90
- export type ResponseTransformerType<Response> = (response: Response) => unknown;
91
- export type DefaultResponseTransformer<Response> = (response: Response) => Response;
92
- export type ResponseTransformerReturnType<T, J> = T extends (response: Response) => infer R ? R : J;
93
- export type QueryCreatorReturnType<T extends AnyQueryCreator> = ReturnType<T['prepare']>;
@@ -0,0 +1,2 @@
1
+ export * from './query-creator';
2
+ export * from './query-creator.types';
@@ -0,0 +1,14 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { EntityStore } from '../entity';
3
+ import { QueryClient } from '../query-client';
4
+ import { QueryStore } from '../query-store';
5
+ import { BaseArguments, GqlQueryConfig, RestQueryConfig, RouteType } from '../query/query.types';
6
+ import { QueryPrepareFn } from './query-creator.types';
7
+ export declare class QueryCreator<Arguments extends BaseArguments | undefined, Response, Route extends RouteType<Arguments>, Store extends EntityStore<unknown>, Data, Id> {
8
+ private _queryConfig;
9
+ private _client;
10
+ private _store;
11
+ constructor(_queryConfig: RestQueryConfig<Route, Response, Arguments, Store, Data, Id> | GqlQueryConfig<Route, Response, Arguments, Store, Data, Id>, _client: QueryClient, _store: QueryStore);
12
+ prepare: QueryPrepareFn<Arguments, Response, Route, Store, Data, Id>;
13
+ behaviorSubject: (initialValue?: ReturnType<typeof this.prepare> | null) => BehaviorSubject<ReturnType<QueryPrepareFn<Arguments, Response, Route, Store, Data, Id>> | null>;
14
+ }
@@ -0,0 +1,13 @@
1
+ import { EntityStore } from '../entity';
2
+ import { Query } from '../query/query';
3
+ import { AnyQuery, BaseArguments, EmptyObject, RouteType, WithHeaders } from '../query/query.types';
4
+ import { QueryCreator } from './query-creator';
5
+ export type QueryPrepareFn<Arguments extends BaseArguments | undefined, Response, Route extends RouteType<Arguments>, Store extends EntityStore<unknown>, Data, Id> = Arguments extends BaseArguments ? (args: Arguments & WithHeaders) => Query<Response, Arguments, Route, Store, Data, Id> : (args?: (Arguments extends EmptyObject ? Arguments : EmptyObject) & WithHeaders) => Query<Response, Arguments, Route, Store, Data, Id>;
6
+ export type AnyQueryCreator = QueryCreator<any, any, any, any, any, any>;
7
+ export type QueryArgsOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<infer Args, any, any, any, any, any> ? Args : T extends Query<any, infer Args, any, any, any, any> ? Args : never;
8
+ export type QueryResponseOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, infer Response, any, any, any, any> ? Response : T extends Query<infer Response, any, any, any, any, any> ? Response : never;
9
+ export type QueryRouteOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, infer Route, any, any, any> ? Route : T extends Query<any, any, infer Route, any, any, any> ? Route : never;
10
+ export type QueryStoreOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, infer Store, any, any> ? Store : T extends Query<any, any, any, infer Store, any, any> ? Store : never;
11
+ export type QueryDataOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, any, infer Data, any> ? Data : T extends Query<any, any, any, any, infer Data, any> ? Data : never;
12
+ export type QueryStoreIdOf<T extends AnyQueryCreator | AnyQuery | null> = T extends QueryCreator<any, any, any, any, any, infer StoreId> ? StoreId : T extends Query<any, any, any, any, any, infer StoreId> ? StoreId : never;
13
+ export type ConstructQuery<T extends AnyQueryCreator> = ReturnType<T['prepare']>;
@@ -11,7 +11,7 @@ export type Params = Record<string | number | symbol, ParamPrimitive | ParamArra
11
11
  export type ParamArray = Array<ParamPrimitive>;
12
12
  export type UnfilteredParamPrimitive = string | number | boolean | null | undefined;
13
13
  export type QueryParams = {
14
- [key: string | number | symbol]: UnfilteredParamPrimitive | UnfilteredParamArray | QueryParams;
14
+ [key: string]: UnfilteredParamPrimitive | UnfilteredParamArray | QueryParams;
15
15
  };
16
16
  export type PathParams = Record<string, string | number>;
17
17
  export type UnfilteredParamArray = Array<UnfilteredParamPrimitive>;
@@ -9,7 +9,6 @@ export declare const buildRoute: (options: {
9
9
  export declare const buildQueryString: (params: QueryParams) => string | null;
10
10
  export declare const buildQueryArrayString: (key: string, array: ParamArray) => string;
11
11
  export declare const buildQueryObjectString: (key: string, object: QueryParams) => string;
12
- export declare const isFetchResponse: (response: unknown) => response is Response;
13
12
  export declare const filterInvalidParams: (params: QueryParams) => Params;
14
13
  export declare const isParamValid: (primitive: UnfilteredParamPrimitive) => boolean;
15
14
  export declare const extractExpiresInSeconds: (headers: RequestHeaders) => number | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethlete/query",
3
- "version": "2.9.2",
3
+ "version": "3.0.1",
4
4
  "dependencies": {
5
5
  "tslib": "^2.5.0"
6
6
  },