@ethlete/query 4.5.0 → 4.6.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.
- package/esm2022/index.mjs +2 -1
- package/esm2022/lib/class-validator/class-validator.types.mjs +2 -0
- package/esm2022/lib/class-validator/class-validator.utils.mjs +4 -0
- package/esm2022/lib/class-validator/index.mjs +3 -0
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2022/lib/directives/infinity-query.directive.mjs +3 -3
- package/esm2022/lib/directives/query.directive.mjs +10 -7
- package/esm2022/lib/entity/entity-store.mjs +28 -12
- package/esm2022/lib/entity/entity.types.mjs +1 -1
- package/esm2022/lib/entity/entity.utils.mjs +26 -2
- package/esm2022/lib/query/query.types.mjs +1 -1
- package/esm2022/lib/query/query.utils.mjs +10 -1
- package/esm2022/lib/query-form/query-form.mjs +10 -5
- package/esm2022/lib/request/request.util.mjs +2 -1
- package/esm2022/lib/symfony/symfony.utils.mjs +4 -1
- package/fesm2022/ethlete-query.mjs +92 -27
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/auth/auth-provider.types.d.ts +0 -5
- package/lib/auth/bearer-auth-provider.d.ts +0 -4
- package/lib/class-validator/class-validator.types.d.ts +6 -0
- package/lib/class-validator/class-validator.utils.d.ts +2 -0
- package/lib/class-validator/index.d.ts +2 -0
- package/lib/directives/query.directive.d.ts +9 -5
- package/lib/entity/entity-store.d.ts +4 -0
- package/lib/entity/entity.types.d.ts +20 -0
- package/lib/entity/entity.utils.d.ts +10 -0
- package/lib/query/query.d.ts +0 -16
- package/lib/query/query.types.d.ts +1 -14
- package/lib/query/query.utils.d.ts +4 -0
- package/lib/symfony/symfony.utils.d.ts +2 -0
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -5,11 +5,6 @@ export interface AuthProvider {
|
|
|
5
5
|
* This will automatically get injected into every query that has the `secure` property set to `true`.
|
|
6
6
|
*/
|
|
7
7
|
header: Record<string, string>;
|
|
8
|
-
/**
|
|
9
|
-
* Cleanup function that gets called once the auth provider gets destroyed.
|
|
10
|
-
* @internal
|
|
11
|
-
*/
|
|
12
|
-
cleanUp(): void;
|
|
13
8
|
}
|
|
14
9
|
export interface AuthProviderBasicConfig {
|
|
15
10
|
/**
|
|
@@ -18,8 +18,4 @@ export declare class BearerAuthProvider<T extends AnyQueryCreator> implements Au
|
|
|
18
18
|
enableCookie(): void;
|
|
19
19
|
disableCookie(): void;
|
|
20
20
|
private _prepareForRefresh;
|
|
21
|
-
/**
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
_refreshQuery(): import("../query").Query<any, any, any, any, any, any> | null | undefined;
|
|
25
21
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { AnyQuery, AnyQueryCollection, QueryOf } from '../query';
|
|
2
|
+
import { AnyQuery, AnyQueryCollection, QueryCollectionKeysOf, QueryOf } from '../query';
|
|
3
3
|
import { QueryDataOf } from '../query-creator';
|
|
4
4
|
import { RequestError, RequestProgress } from '../request';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
interface QueryContext<Q extends AnyQuery | null> {
|
|
6
|
+
interface QueryContext<Q extends AnyQuery | AnyQueryCollection | null> {
|
|
7
7
|
/**
|
|
8
8
|
* The queries's response data.
|
|
9
9
|
*/
|
|
10
|
-
$implicit: QueryDataOf<Q
|
|
10
|
+
$implicit: QueryDataOf<QueryOf<Q>> | null;
|
|
11
11
|
/**
|
|
12
12
|
* The queries's response data.
|
|
13
13
|
*/
|
|
14
|
-
etQuery: QueryDataOf<Q
|
|
14
|
+
etQuery: QueryDataOf<QueryOf<Q>> | null;
|
|
15
15
|
/**
|
|
16
16
|
* Is true when the query is triggered by user interaction.
|
|
17
17
|
*/
|
|
@@ -28,6 +28,10 @@ interface QueryContext<Q extends AnyQuery | null> {
|
|
|
28
28
|
* The query's error state.
|
|
29
29
|
*/
|
|
30
30
|
error: RequestError<unknown> | null;
|
|
31
|
+
/**
|
|
32
|
+
* The query's scope (only available when the query is a collection)
|
|
33
|
+
*/
|
|
34
|
+
scope: QueryCollectionKeysOf<Q> | null;
|
|
31
35
|
}
|
|
32
36
|
export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | null> implements OnInit, OnDestroy {
|
|
33
37
|
private _mainTemplateRef;
|
|
@@ -43,7 +47,7 @@ export declare class QueryDirective<Q extends AnyQuery | AnyQueryCollection | nu
|
|
|
43
47
|
get cache(): boolean;
|
|
44
48
|
set cache(v: boolean);
|
|
45
49
|
private _cache;
|
|
46
|
-
static ngTemplateContextGuard<Q extends AnyQuery | AnyQueryCollection | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<
|
|
50
|
+
static ngTemplateContextGuard<Q extends AnyQuery | AnyQueryCollection | null>(dir: QueryDirective<Q>, ctx: unknown): ctx is QueryContext<Q>;
|
|
47
51
|
ngOnInit(): void;
|
|
48
52
|
ngOnDestroy(): void;
|
|
49
53
|
private _subscribeToQuery;
|
|
@@ -7,17 +7,21 @@ export declare class EntityStore<T> {
|
|
|
7
7
|
constructor(_config: EntityStoreConfig);
|
|
8
8
|
select(key: EntityKey): Observable<T | null>;
|
|
9
9
|
select(keys: EntityKey[]): Observable<T[]>;
|
|
10
|
+
select(keys: EntityKey[][]): Observable<T[]>;
|
|
10
11
|
/**
|
|
11
12
|
* **Note:** Prefer `select` over `selectWhere` when possible.
|
|
12
13
|
*/
|
|
13
14
|
selectWhere(predicate: (value: T) => boolean): Observable<T[]>;
|
|
14
15
|
set(key: EntityKey, value: T): void;
|
|
15
16
|
set(keys: EntityKey[], values: T[]): void;
|
|
17
|
+
set(keys: EntityKey[][], values: T[][]): void;
|
|
16
18
|
remove(key: EntityKey): void;
|
|
17
19
|
remove(keys: EntityKey[]): void;
|
|
20
|
+
remove(keys: EntityKey[][]): void;
|
|
18
21
|
logState(): void;
|
|
19
22
|
private _select;
|
|
20
23
|
private _selectMany;
|
|
21
24
|
private _set;
|
|
22
25
|
private _remove;
|
|
26
|
+
private _normalizeKeys;
|
|
23
27
|
}
|
|
@@ -3,3 +3,23 @@ export interface EntityStoreConfig {
|
|
|
3
3
|
name: string;
|
|
4
4
|
logActions?: boolean;
|
|
5
5
|
}
|
|
6
|
+
export interface InsertFromConfig<OriginStoreType, OriginKeys extends keyof NonNullable<OriginStoreType>, IdFn extends (value: NonNullable<OriginStoreType>) => EntityKey | EntityKey[]> {
|
|
7
|
+
/**
|
|
8
|
+
* The property key of which the value should be replaced.
|
|
9
|
+
*/
|
|
10
|
+
for: OriginKeys;
|
|
11
|
+
/**
|
|
12
|
+
* A function that returns the id of the entity. Can also return an array of ids.
|
|
13
|
+
*/
|
|
14
|
+
id: IdFn;
|
|
15
|
+
}
|
|
16
|
+
export interface RemoveFromConfig<T> {
|
|
17
|
+
/**
|
|
18
|
+
* The where function to select the entities to remove.
|
|
19
|
+
*/
|
|
20
|
+
where: (entity: T) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* A function that returns the id of the entity.
|
|
23
|
+
*/
|
|
24
|
+
id: (entity: T) => EntityKey;
|
|
25
|
+
}
|
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
import { Paginated } from '@ethlete/types';
|
|
2
|
+
import { EntityStore } from './entity-store';
|
|
3
|
+
import { EntityKey, InsertFromConfig, RemoveFromConfig } from './entity.types';
|
|
2
4
|
export declare function mapToPaginated<T>(response: Paginated<T>): import("rxjs").OperatorFunction<unknown, Paginated<T>>;
|
|
5
|
+
/**
|
|
6
|
+
* Use an other store to represent a property of the current entity.
|
|
7
|
+
*/
|
|
8
|
+
export declare const insertFrom: <OriginStoreType, OriginKeys extends keyof NonNullable<OriginStoreType>, SubStoreType extends NonNullable<OriginStoreType>[OriginKeys] extends (infer U)[] ? U : NonNullable<OriginStoreType>[OriginKeys], IdFn extends (value: NonNullable<OriginStoreType>) => EntityKey | EntityKey[], ComputedEntityType extends ReturnType<IdFn> extends unknown[] ? OriginStoreType : Omit<OriginStoreType, OriginKeys> & { [K in OriginKeys]: SubStoreType | null; }>(store: EntityStore<SubStoreType>, { for: key, id }: InsertFromConfig<OriginStoreType, OriginKeys, IdFn>) => import("rxjs").OperatorFunction<OriginStoreType, ComputedEntityType | null>;
|
|
9
|
+
/**
|
|
10
|
+
* Remove entities from a store based on a where function.
|
|
11
|
+
*/
|
|
12
|
+
export declare const removeFrom: <T>(store: EntityStore<T>, { where, id }: RemoveFromConfig<T>) => void;
|
package/lib/query/query.d.ts
CHANGED
|
@@ -12,10 +12,6 @@ export declare class Query<Response, Arguments extends BaseArguments | undefined
|
|
|
12
12
|
private _requestSubscription;
|
|
13
13
|
private _onAbort$;
|
|
14
14
|
private _currentPollConfig;
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
_isPollingPaused: boolean;
|
|
19
15
|
private readonly _state$;
|
|
20
16
|
private get _nextId();
|
|
21
17
|
get state$(): Observable<QueryState<Data>>;
|
|
@@ -30,14 +26,6 @@ export declare class Query<Response, Arguments extends BaseArguments | undefined
|
|
|
30
26
|
get isInUse(): boolean;
|
|
31
27
|
get isPolling(): boolean;
|
|
32
28
|
get autoRefreshOnConfig(): Readonly<QueryAutoRefreshConfig>;
|
|
33
|
-
/**
|
|
34
|
-
* @internal
|
|
35
|
-
*/
|
|
36
|
-
get _enableSmartPolling(): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
40
|
-
get _arguments(): Arguments;
|
|
41
29
|
get store(): Store | null;
|
|
42
30
|
constructor(_client: QueryClient, _queryConfig: RestQueryConfig<Route, Response, Arguments, Store, Data, Id> | GqlQueryConfig<Route, Response, Arguments, Store, Data, Id>, _routeWithParams: Route, _args: Arguments);
|
|
43
31
|
execute(options?: ExecuteQueryOptions): this;
|
|
@@ -46,10 +34,6 @@ export declare class Query<Response, Arguments extends BaseArguments | undefined
|
|
|
46
34
|
stopPolling(): this;
|
|
47
35
|
pausePolling(): this;
|
|
48
36
|
resumePolling(): this;
|
|
49
|
-
/**
|
|
50
|
-
* @internal
|
|
51
|
-
*/
|
|
52
|
-
_destroy(): void;
|
|
53
37
|
private _getBearerAuthProvider;
|
|
54
38
|
private _updateEntityState;
|
|
55
39
|
private _transformState;
|
|
@@ -196,20 +196,6 @@ export interface ExecuteQueryOptions {
|
|
|
196
196
|
* @default false
|
|
197
197
|
*/
|
|
198
198
|
skipCache?: boolean;
|
|
199
|
-
/**
|
|
200
|
-
* The trigger type for this query.
|
|
201
|
-
* - `program`: The query was triggered by the user.
|
|
202
|
-
* - `poll`: The query was triggered by polling.
|
|
203
|
-
* - `auto`: The query was triggered by an auto refresh event.
|
|
204
|
-
* @default 'program'
|
|
205
|
-
* @internal
|
|
206
|
-
*/
|
|
207
|
-
_triggeredVia?: QueryTrigger;
|
|
208
|
-
/**
|
|
209
|
-
* Whether this is a retry of an unauthorized request.
|
|
210
|
-
* @internal
|
|
211
|
-
*/
|
|
212
|
-
_isUnauthorizedRetry?: boolean;
|
|
213
199
|
}
|
|
214
200
|
export type RouteType<Arguments extends BaseArguments | undefined> = Arguments extends {
|
|
215
201
|
pathParams: infer PathParams;
|
|
@@ -288,6 +274,7 @@ export type AnyQueryCollection = QueryCollectionOf<AnyQueryCreatorCollection>;
|
|
|
288
274
|
export type QueryOf<T extends AnyQueryCollection | AnyQuery | null> = T extends AnyQuery ? T : T extends AnyQueryCollection ? T['query'] : never;
|
|
289
275
|
export type AnyQueryCollectionResponse<T extends AnyQueryCollection> = QueryResponseOf<T['query']>;
|
|
290
276
|
export type AnyQueryCollectionData<T extends AnyQueryCollection> = QueryDataOf<T['query']>;
|
|
277
|
+
export type QueryCollectionKeysOf<T extends AnyQueryCollection | AnyQuery | null> = T extends AnyQueryCollection ? T['type'] : never;
|
|
291
278
|
export interface ResetPageOnErrorOperatorConfig<J extends QueryForm<any>> {
|
|
292
279
|
/**
|
|
293
280
|
* The query form to reset the page of.
|
|
@@ -30,6 +30,10 @@ export declare const isAutoRefresh: (state: QueryState | null | undefined) => bo
|
|
|
30
30
|
export declare const mergeHeaders: (...headers: Array<RequestHeaders | null | undefined>) => RequestHeaders | null | undefined;
|
|
31
31
|
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>;
|
|
32
32
|
export declare const isQuery: <T extends AnyQuery>(query: unknown) => query is T;
|
|
33
|
+
export declare const isQueryCollection: <T extends {
|
|
34
|
+
type: string;
|
|
35
|
+
query: import("@ethlete/query").Query<any, any, any, any, any, any>;
|
|
36
|
+
}>(query: unknown) => query is T;
|
|
33
37
|
export declare const createQueryCollection: <T extends AnyQueryCreatorCollection, R extends QueryCollectionOf<T>>(queryMap: T) => BehaviorSubject<R | null>;
|
|
34
38
|
export declare const extractQuery: <T extends AnyQuery | {
|
|
35
39
|
type: string;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { FormViolationListView } from '@ethlete/types';
|
|
1
2
|
import { SymfonyError } from './symfony.types';
|
|
2
3
|
export declare const isSymfonyError: (error: unknown) => error is SymfonyError;
|
|
3
4
|
export declare const isSymfonyPagerfantaOutOfRangeError: (error: unknown) => error is SymfonyError;
|
|
5
|
+
export declare const isSymfonyFormViolationListError: (error: unknown) => error is FormViolationListView;
|