@ethlete/query 5.21.0 → 5.22.0
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/CHANGELOG.md +12 -0
- package/fesm2022/ethlete-query.mjs +419 -228
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/experimental/http-request.d.ts +3 -1
- package/lib/experimental/index.d.ts +1 -0
- package/lib/experimental/paged-query.d.ts +35 -0
- package/lib/experimental/query-errors.d.ts +7 -1
- package/lib/experimental/query-stack.d.ts +4 -2
- package/package.json +5 -7
- package/esm2022/ethlete-query.mjs +0 -5
- package/esm2022/index.mjs +0 -21
- package/esm2022/lib/auth/auth-provider.types.mjs +0 -2
- package/esm2022/lib/auth/auth-provider.utils.mjs +0 -25
- package/esm2022/lib/auth/basic-auth-provider.mjs +0 -15
- package/esm2022/lib/auth/bearer-auth-provider.mjs +0 -168
- package/esm2022/lib/auth/custom-header-auth-provider.mjs +0 -12
- package/esm2022/lib/auth/index.mjs +0 -6
- package/esm2022/lib/class-validator/class-validator.types.mjs +0 -2
- package/esm2022/lib/class-validator/class-validator.utils.mjs +0 -4
- package/esm2022/lib/class-validator/index.mjs +0 -3
- package/esm2022/lib/devtools/components/query-devtools/index.mjs +0 -2
- package/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +0 -297
- package/esm2022/lib/devtools/pipes/index.mjs +0 -2
- package/esm2022/lib/devtools/pipes/query-short-name.pipe.mjs +0 -24
- package/esm2022/lib/devtools/utils/index.mjs +0 -2
- package/esm2022/lib/devtools/utils/query-client.utils.mjs +0 -13
- package/esm2022/lib/directives/index.mjs +0 -4
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +0 -56
- package/esm2022/lib/directives/infinity-query.directive.mjs +0 -147
- package/esm2022/lib/directives/query.directive.mjs +0 -123
- package/esm2022/lib/entity/entity-store.mjs +0 -127
- package/esm2022/lib/entity/entity.types.mjs +0 -2
- package/esm2022/lib/entity/entity.utils.mjs +0 -29
- package/esm2022/lib/entity/index.mjs +0 -4
- package/esm2022/lib/experimental/bearer-auth-provider-config.mjs +0 -19
- package/esm2022/lib/experimental/bearer-auth-provider.mjs +0 -245
- package/esm2022/lib/experimental/http-request.mjs +0 -154
- package/esm2022/lib/experimental/index.mjs +0 -22
- package/esm2022/lib/experimental/query-client-config.mjs +0 -13
- package/esm2022/lib/experimental/query-client.mjs +0 -16
- package/esm2022/lib/experimental/query-creator-templates.mjs +0 -33
- package/esm2022/lib/experimental/query-creator.mjs +0 -28
- package/esm2022/lib/experimental/query-dependencies.mjs +0 -14
- package/esm2022/lib/experimental/query-errors.mjs +0 -61
- package/esm2022/lib/experimental/query-execute-utils.mjs +0 -54
- package/esm2022/lib/experimental/query-execute.mjs +0 -14
- package/esm2022/lib/experimental/query-features.mjs +0 -126
- package/esm2022/lib/experimental/query-repository.mjs +0 -97
- package/esm2022/lib/experimental/query-snapshot.mjs +0 -45
- package/esm2022/lib/experimental/query-stack.mjs +0 -65
- package/esm2022/lib/experimental/query-state.mjs +0 -20
- package/esm2022/lib/experimental/query-utils.mjs +0 -176
- package/esm2022/lib/experimental/query.mjs +0 -29
- package/esm2022/lib/experimental/secure-query-creator.mjs +0 -15
- package/esm2022/lib/experimental/secure-query-execute.mjs +0 -80
- package/esm2022/lib/experimental/secure-query.mjs +0 -33
- package/esm2022/lib/gql/gql.mjs +0 -23
- package/esm2022/lib/gql/index.mjs +0 -2
- package/esm2022/lib/infinite-query/index.mjs +0 -4
- package/esm2022/lib/infinite-query/infinity-query.mjs +0 -171
- package/esm2022/lib/infinite-query/infinity-query.types.mjs +0 -2
- package/esm2022/lib/infinite-query/infinity-query.utils.mjs +0 -3
- package/esm2022/lib/logger/index.mjs +0 -2
- package/esm2022/lib/logger/logger.mjs +0 -16
- package/esm2022/lib/query/index.mjs +0 -4
- package/esm2022/lib/query/query.mjs +0 -431
- package/esm2022/lib/query/query.types.mjs +0 -2
- package/esm2022/lib/query/query.utils.mjs +0 -253
- package/esm2022/lib/query-client/index.mjs +0 -4
- package/esm2022/lib/query-client/query-client.mjs +0 -80
- package/esm2022/lib/query-client/query-client.types.mjs +0 -2
- package/esm2022/lib/query-client/query-client.utils.mjs +0 -20
- package/esm2022/lib/query-creator/index.mjs +0 -3
- package/esm2022/lib/query-creator/query-creator.mjs +0 -55
- package/esm2022/lib/query-creator/query-creator.types.mjs +0 -2
- package/esm2022/lib/query-form/index.mjs +0 -4
- package/esm2022/lib/query-form/query-form.mjs +0 -412
- package/esm2022/lib/query-form/query-form.types.mjs +0 -2
- package/esm2022/lib/query-form/query-form.utils.mjs +0 -97
- package/esm2022/lib/query-store/index.mjs +0 -2
- package/esm2022/lib/query-store/query-store.mjs +0 -144
- package/esm2022/lib/request/index.mjs +0 -4
- package/esm2022/lib/request/request.mjs +0 -196
- package/esm2022/lib/request/request.types.mjs +0 -2
- package/esm2022/lib/request/request.util.mjs +0 -252
- package/esm2022/lib/symfony/index.mjs +0 -3
- package/esm2022/lib/symfony/symfony.types.mjs +0 -2
- package/esm2022/lib/symfony/symfony.utils.mjs +0 -31
- package/esm2022/lib/utils/data.utils.mjs +0 -138
- package/esm2022/lib/utils/deep-freeze.util.mjs +0 -17
- package/esm2022/lib/utils/def.util.mjs +0 -8
- package/esm2022/lib/utils/index.mjs +0 -4
|
@@ -91,7 +91,9 @@ export type HttpRequestLoadingProgressState = {
|
|
|
91
91
|
};
|
|
92
92
|
export type HttpRequest<TArgs extends QueryArgs> = {
|
|
93
93
|
/** Executes the request */
|
|
94
|
-
execute: (
|
|
94
|
+
execute: (options?: {
|
|
95
|
+
skipCache?: boolean;
|
|
96
|
+
}) => boolean;
|
|
95
97
|
/** Destroys the request (cancels it if in progress) */
|
|
96
98
|
destroy: () => boolean;
|
|
97
99
|
/** The loading state of the request */
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ContentfulGqlLikePaginated, DynLikePaginated, GgLikePaginated, NormalizedPagination, Paginated } from '@ethlete/types';
|
|
2
|
+
import { Query, QueryArgs, RequestArgs, ResponseType } from './query';
|
|
3
|
+
import { QueryCreator } from './query-creator';
|
|
4
|
+
export declare const ethletePaginationAdapter: <T>(response: Paginated<T>) => NormalizedPagination<T>;
|
|
5
|
+
export declare const ggLikePaginationAdapter: <T>(response: GgLikePaginated<T>) => NormalizedPagination<T>;
|
|
6
|
+
export declare const dynLikePaginationAdapter: <T>(response: DynLikePaginated<T>) => NormalizedPagination<T>;
|
|
7
|
+
export declare const contentfulGqlLikePaginationAdapter: <T>(response: ContentfulGqlLikePaginated<T>) => NormalizedPagination<T>;
|
|
8
|
+
export type CreatePagedQueryOptions<TArgs extends QueryArgs> = {
|
|
9
|
+
responseNormalizer: (response: ResponseType<TArgs>) => NormalizedPagination<ResponseType<TArgs>>;
|
|
10
|
+
queryCreator: QueryCreator<TArgs>;
|
|
11
|
+
args: (page: number) => RequestArgs<TArgs>;
|
|
12
|
+
initialPage?: number;
|
|
13
|
+
};
|
|
14
|
+
export type PagedQueryResetOptions = {
|
|
15
|
+
initialPage?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const createPagedQuery: <TArgs extends QueryArgs>(options: CreatePagedQueryOptions<TArgs>) => {
|
|
18
|
+
pagination: import("@angular/core").Signal<NormalizedPagination<ResponseType<TArgs>> | null>;
|
|
19
|
+
fetchPreviousPage: () => void;
|
|
20
|
+
fetchNextPage: () => void;
|
|
21
|
+
canFetchPreviousPage: import("@angular/core").Signal<boolean>;
|
|
22
|
+
canFetchNextPage: import("@angular/core").Signal<boolean>;
|
|
23
|
+
items: import("@angular/core").Signal<ResponseType<TArgs>[]>;
|
|
24
|
+
direction: import("@angular/core").Signal<"next" | "previous">;
|
|
25
|
+
loading: import("@angular/core").Signal<boolean>;
|
|
26
|
+
error: import("@angular/core").Signal<import("@angular/common/http").HttpErrorResponse | null>;
|
|
27
|
+
lastQuery: import("@angular/core").Signal<Query<TArgs> | null>;
|
|
28
|
+
isFirstLoad: import("@angular/core").Signal<boolean>;
|
|
29
|
+
queries: Query<TArgs>[];
|
|
30
|
+
reset: (resetOptions?: PagedQueryResetOptions) => void;
|
|
31
|
+
execute: (options?: {
|
|
32
|
+
where?: (items: ResponseType<TArgs>) => boolean;
|
|
33
|
+
skipCache?: boolean;
|
|
34
|
+
}) => void;
|
|
35
|
+
};
|
|
@@ -20,7 +20,10 @@ export declare const enum RuntimeErrorCode {
|
|
|
20
20
|
UNABLE_TO_DECRYPT_BEARER_TOKEN = 210,
|
|
21
21
|
BEARER_EXPIRES_IN_PROPERTY_NOT_NUMBER = 211,
|
|
22
22
|
UNCACHEABLE_REQUEST_HAS_CACHE_KEY_PARAM = 300,
|
|
23
|
-
UNCACHEABLE_REQUEST_HAS_SKIP_CACHE_PARAM = 301
|
|
23
|
+
UNCACHEABLE_REQUEST_HAS_SKIP_CACHE_PARAM = 301,
|
|
24
|
+
PAGED_QUERY_PAGE_BIGGER_THAN_TOTAL_PAGES = 400,
|
|
25
|
+
PAGED_QUERY_NEXT_PAGE_CALLED_WITHOUT_PREVIOUS_PAGE = 401,
|
|
26
|
+
PAGED_QUERY_PREVIOUS_PAGE_CALLED_BUT_ALREADY_AT_FIRST_PAGE = 402
|
|
24
27
|
}
|
|
25
28
|
export declare const queryFeatureUsedMultipleTimes: (type: QueryFeatureType) => RuntimeError<RuntimeErrorCode.QUERY_FEATURE_USED_MULTIPLE_TIMES>;
|
|
26
29
|
export declare const withArgsQueryFeatureMissingButRouteIsFunction: () => RuntimeError<RuntimeErrorCode.WITH_ARGS_QUERY_FEATURE_MISSING_BUT_ROUTE_IS_FUNCTION>;
|
|
@@ -41,3 +44,6 @@ export declare const unableToDecryptBearerToken: (token: string) => RuntimeError
|
|
|
41
44
|
export declare const bearerExpiresInPropertyNotNumber: (expiresIn: unknown) => RuntimeError<RuntimeErrorCode.BEARER_EXPIRES_IN_PROPERTY_NOT_NUMBER>;
|
|
42
45
|
export declare const uncacheableRequestHasCacheKeyParam: (key: string) => RuntimeError<RuntimeErrorCode.UNCACHEABLE_REQUEST_HAS_CACHE_KEY_PARAM>;
|
|
43
46
|
export declare const uncacheableRequestHasSkipCacheParam: () => RuntimeError<RuntimeErrorCode.UNCACHEABLE_REQUEST_HAS_SKIP_CACHE_PARAM>;
|
|
47
|
+
export declare const pagedQueryPageBiggerThanTotalPages: (page: number, totalPages: number) => RuntimeError<RuntimeErrorCode.PAGED_QUERY_PAGE_BIGGER_THAN_TOTAL_PAGES>;
|
|
48
|
+
export declare const pagedQueryNextPageCalledWithoutPreviousPage: () => RuntimeError<RuntimeErrorCode.PAGED_QUERY_NEXT_PAGE_CALLED_WITHOUT_PREVIOUS_PAGE>;
|
|
49
|
+
export declare const pagedQueryPreviousPageCalledButAlreadyAtFirstPage: () => RuntimeError<RuntimeErrorCode.PAGED_QUERY_PREVIOUS_PAGE_CALLED_BUT_ALREADY_AT_FIRST_PAGE>;
|
|
@@ -13,7 +13,9 @@ export type QueryStack<T extends AnyQuery, J = ReturnType<T['response']>[]> = {
|
|
|
13
13
|
/** Contains the responses of all queries in the stack. Will be `null` for queries that are loading or errored. */
|
|
14
14
|
response: Signal<J>;
|
|
15
15
|
/** Executes all queries in the stack. */
|
|
16
|
-
execute: (
|
|
16
|
+
execute: (options?: {
|
|
17
|
+
skipCache?: boolean;
|
|
18
|
+
}) => void;
|
|
17
19
|
/** Destroys all queries in the stack and empties it. This should only be used if `append` is true. */
|
|
18
20
|
clear: () => void;
|
|
19
21
|
};
|
|
@@ -43,4 +45,4 @@ export declare const transformArrayResponse: <T extends (unknown | null)[]>(resp
|
|
|
43
45
|
export declare const transformPaginatedResponse: <T extends ({
|
|
44
46
|
items: unknown[];
|
|
45
47
|
} | null)[]>(responses: T) => NonNullable<NonNullable<T[0]>["items"]>;
|
|
46
|
-
export declare const createQueryStack: <T extends AnyQuery, J = ReturnType<T["response"]>[]>(computation: () => T | T[], options?: CreateQueryStackOptions<T, J>) => QueryStack<T, J>;
|
|
48
|
+
export declare const createQueryStack: <T extends AnyQuery, J = ReturnType<T["response"]>[]>(computation: () => T | T[] | null, options?: CreateQueryStackOptions<T, J>) => QueryStack<T, J>;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.22.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^18.1.0",
|
|
6
|
-
"@angular/core": "^18.1.0",
|
|
7
|
-
"@angular/forms": "^18.1.0",
|
|
8
|
-
"@angular/router": "^18.1.0",
|
|
5
|
+
"@angular/common": "^18.1.0 || ^19.0.0",
|
|
6
|
+
"@angular/core": "^18.1.0 || ^19.0.0",
|
|
7
|
+
"@angular/forms": "^18.1.0 || ^19.0.0",
|
|
8
|
+
"@angular/router": "^18.1.0 || ^19.0.0",
|
|
9
9
|
"@ethlete/core": "^4.0.3",
|
|
10
10
|
"@ethlete/types": "^1.6.2",
|
|
11
11
|
"rxjs": "^7.8.1"
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
},
|
|
19
19
|
".": {
|
|
20
20
|
"types": "./index.d.ts",
|
|
21
|
-
"esm2022": "./esm2022/ethlete-query.mjs",
|
|
22
|
-
"esm": "./esm2022/ethlete-query.mjs",
|
|
23
21
|
"default": "./fesm2022/ethlete-query.mjs"
|
|
24
22
|
}
|
|
25
23
|
},
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRobGV0ZS1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2V0aGxldGUtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
package/esm2022/index.mjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export * from './lib/auth';
|
|
2
|
-
export * from './lib/class-validator';
|
|
3
|
-
export * from './lib/devtools/components/query-devtools';
|
|
4
|
-
export * from './lib/devtools/pipes';
|
|
5
|
-
export * from './lib/devtools/utils';
|
|
6
|
-
export * from './lib/directives';
|
|
7
|
-
export * from './lib/entity';
|
|
8
|
-
export * as ExperimentalQuery from './lib/experimental';
|
|
9
|
-
export * from './lib/gql';
|
|
10
|
-
export * from './lib/infinite-query';
|
|
11
|
-
export * from './lib/logger';
|
|
12
|
-
export * from './lib/query';
|
|
13
|
-
export * from './lib/query-client';
|
|
14
|
-
export * from './lib/query-creator';
|
|
15
|
-
export * from './lib/query-form';
|
|
16
|
-
export * from './lib/query-store';
|
|
17
|
-
export * from './lib/request';
|
|
18
|
-
export * from './lib/symfony';
|
|
19
|
-
export * from './lib/utils';
|
|
20
|
-
// Burst cache
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsT0FBTyxLQUFLLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hELGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUU1QixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzcy12YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV2dG9vbHMvY29tcG9uZW50cy9xdWVyeS1kZXZ0b29scyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXZ0b29scy9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXZ0b29scy91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudGl0eSc7XG5leHBvcnQgKiBhcyBFeHBlcmltZW50YWxRdWVyeSBmcm9tICcuL2xpYi9leHBlcmltZW50YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3FsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luZmluaXRlLXF1ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2dlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWVyeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWVyeS1jbGllbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcXVlcnktY3JlYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWVyeS1mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3F1ZXJ5LXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3ltZm9ueSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XG5cbi8vIEJ1cnN0IGNhY2hlXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgUXVlcnlBcmdzT2YsIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlciB7XG4gIC8qKlxuICAgKiBUaGUgdXAgdG8gZGF0ZSBhdXRoIGhlYWRlci5cbiAgICogVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IGluamVjdGVkIGludG8gZXZlcnkgcXVlcnkgdGhhdCBoYXMgdGhlIGBzZWN1cmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBoZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENsZWFudXAgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBvbmNlIHRoZSBhdXRoIHByb3ZpZGVyIGdldHMgZGVzdHJveWVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNsZWFuVXAoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUHJvdmlkZXJCYXNpY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHVzZXJuYW1lXG4gICAqL1xuICB1c2VybmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNpYyBhdXRoIHBhc3N3b3JkXG4gICAqL1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIGhlYWRlciBuYW1lXG4gICAqIEBleGFtcGxlIGBYLUFwaS1LZXlgXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gaGVhZGVyIHZhbHVlXG4gICAqIEBleGFtcGxlIGBteUFwaUtleWBcbiAgICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFByb3ZpZGVyQmVhcmVyQ29uZmlnPFQgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3I+IHtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIGp3dFxuICAgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdG9rZW4gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVmcmVzaENvbmZpZz86IEJlYXJlclJlZnJlc2hDb25maWc8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmVhcmVyUmVmcmVzaENvbmZpZzxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPiB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgdXNlZCB0byB0cmFkZSB0aGUgcmVmcmVzaCB0b2tlbiBmb3IgYSBuZXcgdG9rZW4gcmVzcG9uc2UuXG4gICAqL1xuICBxdWVyeUNyZWF0b3I6IFQ7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRva2VuIHNob3VsZCBiZSByZWZyZXNoZWQgaWYgKiphbnkqKiBxdWVyeSByZXR1cm5zIGEgNDAxIHJlc3BvbnNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHJlZnJlc2ggdG9rZW5cbiAgICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29va2llIG5hbWUgd2hlcmUgdGhlIHJlZnJlc2ggdG9rZW4gaXMgc3RvcmVkXG4gICAqL1xuICBjb29raWVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG9mIHRoZSBjb29raWUuIElmIG5vdCBzZXQsIHRoZSBjdXJyZW50IG9yaWdpbiB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiIC0+IFwiZXhhbXBsZS5jb21cIlxuICAgKiBcImh0dHBzOi8vc3ViLmV4YW1wbGUuY29tXCIgLT4gXCJleGFtcGxlLmNvbVwiXG4gICAqL1xuICBjb29raWVEb21haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXlzIHVudGlsIHRoZSBjb29raWUgZXhwaXJlc1xuICAgKiBAZGVmYXVsdCAzMFxuICAgKi9cbiAgY29va2llRXhwaXJlc0luRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGNvb2tpZVxuICAgKiBAZGVmYXVsdCAnLydcbiAgICovXG4gIGNvb2tpZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBjb29raWVcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY29va2llRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIHNpdGUgcHJvcGVydHkgb2YgdGhlIGNvb2tpZVxuICAgKiBAZGVmYXVsdCAnbGF4J1xuICAgKi9cbiAgY29va2llU2FtZVNpdGU/OiAnc3RyaWN0JyB8ICdub25lJyB8ICdsYXgnO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSB0b2tlbiBleHBpcmVzIHdoZW4gdGhlIHJlZnJlc2ggc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICogQGRlZmF1bHQgMzAwMDAwICg1IG1pbnV0ZXMpXG4gICAqL1xuICByZWZyZXNoQnVmZmVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwaXJlcyBpbiBwcm9wZXJ0eSBuYW1lIGluc2lkZSB0aGUgand0IGJvZHlcbiAgICogQGRlZmF1bHQgJ2V4cCdcbiAgICovXG4gIGV4cGlyZXNJblByb3BlcnR5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGVuIHRoZSB0b2tlbiBzaG91bGQgYmUgcmVmcmVzaGVkLlxuICAgKiBAZGVmYXVsdCBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb25cbiAgICovXG4gIHN0cmF0ZWd5PzogQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneTtcblxuICAvKipcbiAgICogQWRhcHRlciBmdW5jdGlvbiB1c2VkIHRvIGJ1aWxkIHRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSByZWZyZXNoIHJlcXVlc3QuXG4gICAqIEBkZWZhdWx0IHsgYm9keTogeyByZWZyZXNoVG9rZW46IFwicmVmcmVzaFRva2VuXCIgfSB9XG4gICAqL1xuICByZXF1ZXN0QXJnc0FkYXB0ZXI/OiAodG9rZW5zOiB7IHRva2VuOiBzdHJpbmcgfCBudWxsOyByZWZyZXNoVG9rZW46IHN0cmluZyB9KSA9PiBRdWVyeUFyZ3NPZjxUPjtcblxuICAvKipcbiAgICogQWRhcHRlciBmdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3QgdGhlIHRva2VuIGFuZCByZWZyZXNoVG9rZW4gZnJvbSB0aGUgcmVzcG9uc2UuXG4gICAqIEBkZWZhdWx0IHsgdG9rZW46IFwidG9rZW5cIiwgcmVmcmVzaFRva2VuOiBcInJlZnJlc2hUb2tlblwiIH1cbiAgICovXG4gIHJlc3BvbnNlQWRhcHRlcj86IChyZXNwb25zZTogTm9uTnVsbGFibGU8UXVlcnlSZXNwb25zZU9mPFQ+PikgPT4gVG9rZW5SZXNwb25zZTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlZnJlc2ggdGhlIHRva2VuIDUgbWludXRlcyBiZWZvcmUgZXhwaXJhdGlvbi5cbiAgICogVGhlIHRpbWUgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgYHJlZnJlc2hCdWZmZXJgIHByb3BlcnR5LlxuICAgKi9cbiAgQmVmb3JlRXhwaXJhdGlvbiA9ICdiZWZvcmVFeHBpcmF0aW9uJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlblJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBhY2Nlc3MgdG9rZW4gdXNlZCBpbnNpZGUgdGhlIGF1dGhvcml6YXRpb24gaHR0cCBoZWFkZXIuXG4gICAqL1xuICB0b2tlbjogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHJlZnJlc2ggdG9rZW4gdXNlZCBmb3IgcmVxdWVzdGluZyBhIG5ldyB0b2tlbiByZXNwb25zZSBvbmNlIHRoZSBjdXJyZW50IHRva2VzIGlzIGV4cGlyZWQuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgaWYgdGhlIGJlYXJlciByZWZyZXNoIGNvbmZpZyBpcyBzZXQuXG4gICAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { BasicAuthProvider } from './basic-auth-provider';
|
|
2
|
-
import { BearerAuthProvider } from './bearer-auth-provider';
|
|
3
|
-
import { CustomHeaderAuthProvider } from './custom-header-auth-provider';
|
|
4
|
-
export const isBasicAuthProvider = (authProvider) => authProvider instanceof BasicAuthProvider;
|
|
5
|
-
export const isBearerAuthProvider = (authProvider) => authProvider instanceof BearerAuthProvider;
|
|
6
|
-
export const isCustomHeaderAuthProvider = (authProvider) => authProvider instanceof CustomHeaderAuthProvider;
|
|
7
|
-
export const decryptBearer = (token) => {
|
|
8
|
-
try {
|
|
9
|
-
const base64Url = token.split('.')[1];
|
|
10
|
-
if (!base64Url) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
14
|
-
const jsonPayload = decodeURIComponent(atob(base64)
|
|
15
|
-
.split('')
|
|
16
|
-
.map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
17
|
-
.join(''));
|
|
18
|
-
return JSON.parse(jsonPayload);
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
console.error(`Invalid bearer token: ${token}`, error);
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wcm92aWRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2F1dGgtcHJvdmlkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxZQUEwQixFQUFxQyxFQUFFLENBQ25HLFlBQVksWUFBWSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxZQUEwQixFQUNhLEVBQUUsQ0FBQyxZQUFZLFlBQVksa0JBQWtCLENBQUM7QUFFdkYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxZQUEwQixFQUE0QyxFQUFFLENBQ2pILFlBQVksWUFBWSx3QkFBd0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBbUMsS0FBYSxFQUFFLEVBQUU7SUFDL0UsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ1QsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFXLENBQUM7SUFDM0MsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5pbXBvcnQgeyBCYXNpY0F1dGhQcm92aWRlciB9IGZyb20gJy4vYmFzaWMtYXV0aC1wcm92aWRlcic7XG5pbXBvcnQgeyBCZWFyZXJBdXRoUHJvdmlkZXIgfSBmcm9tICcuL2JlYXJlci1hdXRoLXByb3ZpZGVyJztcbmltcG9ydCB7IEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciB9IGZyb20gJy4vY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyJztcblxuZXhwb3J0IGNvbnN0IGlzQmFzaWNBdXRoUHJvdmlkZXIgPSAoYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBhdXRoUHJvdmlkZXIgaXMgQmFzaWNBdXRoUHJvdmlkZXIgPT5cbiAgYXV0aFByb3ZpZGVyIGluc3RhbmNlb2YgQmFzaWNBdXRoUHJvdmlkZXI7XG5cbmV4cG9ydCBjb25zdCBpc0JlYXJlckF1dGhQcm92aWRlciA9IDxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPihcbiAgYXV0aFByb3ZpZGVyOiBBdXRoUHJvdmlkZXIsXG4pOiBhdXRoUHJvdmlkZXIgaXMgQmVhcmVyQXV0aFByb3ZpZGVyPFQ+ID0+IGF1dGhQcm92aWRlciBpbnN0YW5jZW9mIEJlYXJlckF1dGhQcm92aWRlcjtcblxuZXhwb3J0IGNvbnN0IGlzQ3VzdG9tSGVhZGVyQXV0aFByb3ZpZGVyID0gKGF1dGhQcm92aWRlcjogQXV0aFByb3ZpZGVyKTogYXV0aFByb3ZpZGVyIGlzIEN1c3RvbUhlYWRlckF1dGhQcm92aWRlciA9PlxuICBhdXRoUHJvdmlkZXIgaW5zdGFuY2VvZiBDdXN0b21IZWFkZXJBdXRoUHJvdmlkZXI7XG5cbmV4cG9ydCBjb25zdCBkZWNyeXB0QmVhcmVyID0gPFJlc3VsdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih0b2tlbjogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYmFzZTY0VXJsID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcblxuICAgIGlmICghYmFzZTY0VXJsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICBjb25zdCBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICAgIGF0b2IoYmFzZTY0KVxuICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgIC5tYXAoKGMpID0+ICclJyArICgnMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKVxuICAgICAgICAuam9pbignJyksXG4gICAgKTtcblxuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25QYXlsb2FkKSBhcyBSZXN1bHQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBiZWFyZXIgdG9rZW46ICR7dG9rZW59YCwgZXJyb3IpO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export class BasicAuthProvider {
|
|
2
|
-
get header() {
|
|
3
|
-
return { Authorization: `Basic ${this._basicAuthString}` };
|
|
4
|
-
}
|
|
5
|
-
get _basicAuthString() {
|
|
6
|
-
return btoa(`${this._config.username}:${this._config.password}`);
|
|
7
|
-
}
|
|
8
|
-
constructor(_config) {
|
|
9
|
-
this._config = _config;
|
|
10
|
-
}
|
|
11
|
-
cleanUp() {
|
|
12
|
-
// noop
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtYXV0aC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9hdXRoL2Jhc2ljLWF1dGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLE1BQU07UUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFlBQW1CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQUcsQ0FBQztJQUV2RCxPQUFPO1FBQ0wsT0FBTztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhQcm92aWRlciwgQXV0aFByb3ZpZGVyQmFzaWNDb25maWcgfSBmcm9tICcuL2F1dGgtcHJvdmlkZXIudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQmFzaWNBdXRoUHJvdmlkZXIgaW1wbGVtZW50cyBBdXRoUHJvdmlkZXIge1xuICBnZXQgaGVhZGVyKCkge1xuICAgIHJldHVybiB7IEF1dGhvcml6YXRpb246IGBCYXNpYyAke3RoaXMuX2Jhc2ljQXV0aFN0cmluZ31gIH07XG4gIH1cblxuICBwcml2YXRlIGdldCBfYmFzaWNBdXRoU3RyaW5nKCkge1xuICAgIHJldHVybiBidG9hKGAke3RoaXMuX2NvbmZpZy51c2VybmFtZX06JHt0aGlzLl9jb25maWcucGFzc3dvcmR9YCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NvbmZpZzogQXV0aFByb3ZpZGVyQmFzaWNDb25maWcpIHt9XG5cbiAgY2xlYW5VcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { deleteCookie, getCookie, setCookie } from '@ethlete/core';
|
|
2
|
-
import { BehaviorSubject, Subject, takeUntil, tap, timer } from 'rxjs';
|
|
3
|
-
import { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, switchQueryState, takeUntilResponse, } from '../query';
|
|
4
|
-
import { decryptBearer } from './auth-provider.utils';
|
|
5
|
-
export class BearerAuthProvider {
|
|
6
|
-
get header() {
|
|
7
|
-
return { Authorization: `Bearer ${this._tokens$.getValue().token}` };
|
|
8
|
-
}
|
|
9
|
-
get tokens$() {
|
|
10
|
-
return this._tokens$.asObservable();
|
|
11
|
-
}
|
|
12
|
-
get tokens() {
|
|
13
|
-
return this._tokens$.getValue();
|
|
14
|
-
}
|
|
15
|
-
get currentRefreshQuery$() {
|
|
16
|
-
return this._currentRefreshQuery$.asObservable();
|
|
17
|
-
}
|
|
18
|
-
get currentRefreshQuery() {
|
|
19
|
-
return this._currentRefreshQuery$.getValue();
|
|
20
|
-
}
|
|
21
|
-
get shouldRefreshOnUnauthorizedResponse() {
|
|
22
|
-
return (!!this._config.refreshConfig &&
|
|
23
|
-
(this._config.refreshConfig.refreshOnUnauthorizedResponse === undefined ||
|
|
24
|
-
this._config.refreshConfig.refreshOnUnauthorizedResponse));
|
|
25
|
-
}
|
|
26
|
-
constructor(_config) {
|
|
27
|
-
this._config = _config;
|
|
28
|
-
this._destroy$ = new Subject();
|
|
29
|
-
this._currentRefreshQuery$ = new BehaviorSubject(null);
|
|
30
|
-
this._tokens$ = new BehaviorSubject({
|
|
31
|
-
token: null,
|
|
32
|
-
refreshToken: null,
|
|
33
|
-
});
|
|
34
|
-
const cookieEnabled = _config.refreshConfig?.cookieEnabled ?? true;
|
|
35
|
-
const cookieToken = _config.refreshConfig?.cookieName && cookieEnabled ? getCookie(_config.refreshConfig.cookieName) ?? null : null;
|
|
36
|
-
this._tokens$.next({
|
|
37
|
-
token: _config.token || null,
|
|
38
|
-
refreshToken: _config.refreshConfig?.token || cookieToken || null,
|
|
39
|
-
});
|
|
40
|
-
if (!this.tokens.token && !this.tokens.refreshToken) {
|
|
41
|
-
if (!_config.refreshConfig?.cookieName) {
|
|
42
|
-
console.error('A BearerAuthProvider was created without token or refresh token. You should provide at least a cookieName where the refresh token might be stored.');
|
|
43
|
-
}
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (this.tokens.token) {
|
|
47
|
-
this._prepareForRefresh();
|
|
48
|
-
if (this.tokens.refreshToken && this._config.refreshConfig?.cookieName && cookieEnabled) {
|
|
49
|
-
this._setCookie();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else if (this.tokens.refreshToken) {
|
|
53
|
-
this._refreshQuery();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
cleanUp() {
|
|
57
|
-
this._destroy$.next(true);
|
|
58
|
-
this._destroy$.unsubscribe();
|
|
59
|
-
this._currentRefreshQuery$.next(null);
|
|
60
|
-
if (this._config.refreshConfig?.cookieName) {
|
|
61
|
-
this._deleteCookie();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
enableCookie() {
|
|
65
|
-
if (!this._config.refreshConfig?.cookieName) {
|
|
66
|
-
throw new Error('No cookie name was provided');
|
|
67
|
-
}
|
|
68
|
-
if (!this.tokens.refreshToken) {
|
|
69
|
-
throw new Error('No refresh token was provided');
|
|
70
|
-
}
|
|
71
|
-
this._config.refreshConfig.cookieEnabled = true;
|
|
72
|
-
this._setCookie();
|
|
73
|
-
}
|
|
74
|
-
disableCookie() {
|
|
75
|
-
if (!this._config.refreshConfig?.cookieName) {
|
|
76
|
-
throw new Error('No cookie name was provided');
|
|
77
|
-
}
|
|
78
|
-
this._config.refreshConfig.cookieEnabled = false;
|
|
79
|
-
this._deleteCookie();
|
|
80
|
-
}
|
|
81
|
-
_setCookie() {
|
|
82
|
-
if (!this._config.refreshConfig?.cookieName || !this.tokens.refreshToken)
|
|
83
|
-
return;
|
|
84
|
-
setCookie(this._config.refreshConfig.cookieName, this.tokens.refreshToken, this._config.refreshConfig.cookieExpiresInDays, this._config.refreshConfig.cookieDomain, this._config.refreshConfig.cookiePath, this._config.refreshConfig.cookieSameSite);
|
|
85
|
-
}
|
|
86
|
-
_deleteCookie() {
|
|
87
|
-
if (!this._config.refreshConfig?.cookieName)
|
|
88
|
-
return;
|
|
89
|
-
deleteCookie(this._config.refreshConfig.cookieName, this._config.refreshConfig.cookiePath, this._config.refreshConfig.cookieDomain);
|
|
90
|
-
}
|
|
91
|
-
_prepareForRefresh() {
|
|
92
|
-
if (!this.tokens.token || !this._config.refreshConfig) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const bearer = decryptBearer(this.tokens.token);
|
|
96
|
-
if (!bearer) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const expiresInPropertyName = this._config.refreshConfig.expiresInPropertyName || 'exp';
|
|
100
|
-
const expiresIn = bearer[expiresInPropertyName];
|
|
101
|
-
const fiveMinutes = 5 * 60 * 1000;
|
|
102
|
-
const refreshBuffer = this._config.refreshConfig.refreshBuffer ?? fiveMinutes;
|
|
103
|
-
if (expiresIn === undefined) {
|
|
104
|
-
throw new Error(`Bearer token does not contain an '${expiresInPropertyName}' property`);
|
|
105
|
-
}
|
|
106
|
-
const remainingTime = new Date(expiresIn * 1000).getTime() - refreshBuffer - new Date().getTime();
|
|
107
|
-
const strategy = this._config.refreshConfig.strategy ?? "beforeExpiration" /* AuthBearerRefreshStrategy.BeforeExpiration */;
|
|
108
|
-
switch (strategy) {
|
|
109
|
-
case "beforeExpiration" /* AuthBearerRefreshStrategy.BeforeExpiration */:
|
|
110
|
-
timer(remainingTime)
|
|
111
|
-
.pipe(takeUntil(this._destroy$))
|
|
112
|
-
.subscribe(() => this._refreshQuery());
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @internal
|
|
118
|
-
*/
|
|
119
|
-
_refreshQuery() {
|
|
120
|
-
const currentQuery = this._currentRefreshQuery$.getValue();
|
|
121
|
-
if (isQueryStateLoading(currentQuery?.rawState)) {
|
|
122
|
-
return currentQuery;
|
|
123
|
-
}
|
|
124
|
-
const currentRefreshToken = this.tokens.refreshToken;
|
|
125
|
-
if (!currentRefreshToken || !this._config.refreshConfig) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const args = this._config.refreshConfig.requestArgsAdapter?.({
|
|
129
|
-
token: this.tokens.token,
|
|
130
|
-
refreshToken: currentRefreshToken,
|
|
131
|
-
}) ?? {
|
|
132
|
-
body: { refreshToken: currentRefreshToken },
|
|
133
|
-
};
|
|
134
|
-
const query = this._config.refreshConfig.queryCreator.prepare(args).execute({ skipCache: true });
|
|
135
|
-
this._currentRefreshQuery$.next(query);
|
|
136
|
-
this._currentRefreshQuery$
|
|
137
|
-
.pipe(switchQueryState(), tap((state) => {
|
|
138
|
-
if (isQueryStateSuccess(state)) {
|
|
139
|
-
if (this._config.refreshConfig?.responseAdapter) {
|
|
140
|
-
const tokens = this._config.refreshConfig.responseAdapter(state.response);
|
|
141
|
-
this._tokens$.next(tokens);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
this._tokens$.next({
|
|
145
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
146
|
-
token: state.response['token'],
|
|
147
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
148
|
-
refreshToken: state.response['refreshToken'],
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
const cookieEnabled = this._config.refreshConfig?.cookieEnabled ?? true;
|
|
152
|
-
if (this._config.refreshConfig?.cookieName && this.tokens.refreshToken && cookieEnabled) {
|
|
153
|
-
this._setCookie();
|
|
154
|
-
}
|
|
155
|
-
this._prepareForRefresh();
|
|
156
|
-
}
|
|
157
|
-
else if (isQueryStateFailure(state)) {
|
|
158
|
-
this._tokens$.next({ token: null, refreshToken: null });
|
|
159
|
-
if (this._config.refreshConfig?.cookieName) {
|
|
160
|
-
this._deleteCookie();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}), takeUntilResponse(), takeUntil(this._destroy$))
|
|
164
|
-
.subscribe();
|
|
165
|
-
return query;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhcmVyLWF1dGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9iZWFyZXItYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxVQUFVLENBQUM7QUFRbEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxtQ0FBbUM7UUFDckMsT0FB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QUFDLENBQUMsRUFDRixpQkFBaUIsRUFBRSxFQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxldGVDb29raWUsIGdldENvb2tpZSwgc2V0Q29va2llIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgc3dpdGNoUXVlcnlTdGF0ZSxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHtcbiAgQXV0aEJlYXJlclJlZnJlc2hTdHJhdGVneSxcbiAgQXV0aFByb3ZpZGVyLFxuICBBdXRoUHJvdmlkZXJCZWFyZXJDb25maWcsXG4gIFRva2VuUmVzcG9uc2UsXG59IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5pbXBvcnQgeyBkZWNyeXB0QmVhcmVyIH0gZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIEJlYXJlckF1dGhQcm92aWRlcjxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yPiBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFJlZnJlc2hRdWVyeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbnN0cnVjdFF1ZXJ5PFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9rZW5SZXNwb25zZT4oe1xuICAgIHRva2VuOiBudWxsLFxuICAgIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgfSk7XG5cbiAgZ2V0IGhlYWRlcigpIHtcbiAgICByZXR1cm4geyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5fdG9rZW5zJC5nZXRWYWx1ZSgpLnRva2VufWAgfTtcbiAgfVxuXG4gIGdldCB0b2tlbnMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b2tlbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHRva2VucygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5zJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZWZyZXNoUXVlcnkkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVmcmVzaFF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFJlZnJlc2hPblVuYXV0aG9yaXplZFJlc3BvbnNlKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnICYmXG4gICAgICAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVmcmVzaE9uVW5hdXRob3JpemVkUmVzcG9uc2UgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5yZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZSlcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIF9jb25maWc6IEF1dGhQcm92aWRlckJlYXJlckNvbmZpZzxUPikge1xuICAgIGNvbnN0IGNvb2tpZUVuYWJsZWQgPSBfY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZUVuYWJsZWQgPz8gdHJ1ZTtcbiAgICBjb25zdCBjb29raWVUb2tlbiA9XG4gICAgICBfY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUgJiYgY29va2llRW5hYmxlZCA/IGdldENvb2tpZShfY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llTmFtZSkgPz8gbnVsbCA6IG51bGw7XG5cbiAgICB0aGlzLl90b2tlbnMkLm5leHQoe1xuICAgICAgdG9rZW46IF9jb25maWcudG9rZW4gfHwgbnVsbCxcbiAgICAgIHJlZnJlc2hUb2tlbjogX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy50b2tlbiB8fCBjb29raWVUb2tlbiB8fCBudWxsLFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLnRva2Vucy50b2tlbiAmJiAhdGhpcy50b2tlbnMucmVmcmVzaFRva2VuKSB7XG4gICAgICBpZiAoIV9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdBIEJlYXJlckF1dGhQcm92aWRlciB3YXMgY3JlYXRlZCB3aXRob3V0IHRva2VuIG9yIHJlZnJlc2ggdG9rZW4uIFlvdSBzaG91bGQgcHJvdmlkZSBhdCBsZWFzdCBhIGNvb2tpZU5hbWUgd2hlcmUgdGhlIHJlZnJlc2ggdG9rZW4gbWlnaHQgYmUgc3RvcmVkLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMudG9rZW4pIHtcbiAgICAgIHRoaXMuX3ByZXBhcmVGb3JSZWZyZXNoKCk7XG5cbiAgICAgIGlmICh0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4gJiYgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUgJiYgY29va2llRW5hYmxlZCkge1xuICAgICAgICB0aGlzLl9zZXRDb29raWUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbikge1xuICAgICAgdGhpcy5fcmVmcmVzaFF1ZXJ5KCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYW5VcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSQubmV4dChudWxsKTtcblxuICAgIGlmICh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSkge1xuICAgICAgdGhpcy5fZGVsZXRlQ29va2llKCk7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlQ29va2llKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY29va2llIG5hbWUgd2FzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVmcmVzaCB0b2tlbiB3YXMgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVFbmFibGVkID0gdHJ1ZTtcblxuICAgIHRoaXMuX3NldENvb2tpZSgpO1xuICB9XG5cbiAgZGlzYWJsZUNvb2tpZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvb2tpZSBuYW1lIHdhcyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZUVuYWJsZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuX2RlbGV0ZUNvb2tpZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29va2llKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUgfHwgIXRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbikgcmV0dXJuO1xuXG4gICAgc2V0Q29va2llKFxuICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llTmFtZSxcbiAgICAgIHRoaXMudG9rZW5zLnJlZnJlc2hUb2tlbixcbiAgICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZUV4cGlyZXNJbkRheXMsXG4gICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVEb21haW4sXG4gICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVQYXRoLFxuICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llU2FtZVNpdGUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGV0ZUNvb2tpZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVOYW1lKSByZXR1cm47XG5cbiAgICBkZWxldGVDb29raWUoXG4gICAgICB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5jb29raWVOYW1lLFxuICAgICAgdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuY29va2llUGF0aCxcbiAgICAgIHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLmNvb2tpZURvbWFpbixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUZvclJlZnJlc2goKSB7XG4gICAgaWYgKCF0aGlzLnRva2Vucy50b2tlbiB8fCAhdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiZWFyZXIgPSBkZWNyeXB0QmVhcmVyKHRoaXMudG9rZW5zLnRva2VuKTtcblxuICAgIGlmICghYmVhcmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwaXJlc0luUHJvcGVydHlOYW1lID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcuZXhwaXJlc0luUHJvcGVydHlOYW1lIHx8ICdleHAnO1xuICAgIGNvbnN0IGV4cGlyZXNJbiA9IGJlYXJlcltleHBpcmVzSW5Qcm9wZXJ0eU5hbWVdIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDUgKiA2MCAqIDEwMDA7XG4gICAgY29uc3QgcmVmcmVzaEJ1ZmZlciA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnLnJlZnJlc2hCdWZmZXIgPz8gZml2ZU1pbnV0ZXM7XG5cbiAgICBpZiAoZXhwaXJlc0luID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmVhcmVyIHRva2VuIGRvZXMgbm90IGNvbnRhaW4gYW4gJyR7ZXhwaXJlc0luUHJvcGVydHlOYW1lfScgcHJvcGVydHlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZW1haW5pbmdUaW1lID0gbmV3IERhdGUoZXhwaXJlc0luICogMTAwMCkuZ2V0VGltZSgpIC0gcmVmcmVzaEJ1ZmZlciAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5zdHJhdGVneSA/PyBBdXRoQmVhcmVyUmVmcmVzaFN0cmF0ZWd5LkJlZm9yZUV4cGlyYXRpb247XG5cbiAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEF1dGhCZWFyZXJSZWZyZXNoU3RyYXRlZ3kuQmVmb3JlRXhwaXJhdGlvbjpcbiAgICAgICAgdGltZXIocmVtYWluaW5nVGltZSlcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFF1ZXJ5KCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfcmVmcmVzaFF1ZXJ5KCkge1xuICAgIGNvbnN0IGN1cnJlbnRRdWVyeSA9IHRoaXMuX2N1cnJlbnRSZWZyZXNoUXVlcnkkLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyhjdXJyZW50UXVlcnk/LnJhd1N0YXRlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRRdWVyeTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50UmVmcmVzaFRva2VuID0gdGhpcy50b2tlbnMucmVmcmVzaFRva2VuO1xuXG4gICAgaWYgKCFjdXJyZW50UmVmcmVzaFRva2VuIHx8ICF0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5yZXF1ZXN0QXJnc0FkYXB0ZXI/Lih7XG4gICAgICB0b2tlbjogdGhpcy50b2tlbnMudG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IGN1cnJlbnRSZWZyZXNoVG9rZW4sXG4gICAgfSkgPz8ge1xuICAgICAgYm9keTogeyByZWZyZXNoVG9rZW46IGN1cnJlbnRSZWZyZXNoVG9rZW4gfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZy5xdWVyeUNyZWF0b3IucHJlcGFyZShhcmdzKS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5fY3VycmVudFJlZnJlc2hRdWVyeSQubmV4dChxdWVyeSBhcyBDb25zdHJ1Y3RRdWVyeTxUPik7XG5cbiAgICB0aGlzLl9jdXJyZW50UmVmcmVzaFF1ZXJ5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaFF1ZXJ5U3RhdGUoKSxcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5yZXNwb25zZUFkYXB0ZXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWcucmVzcG9uc2VBZGFwdGVyKHN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5UmVzcG9uc2VPZjxUPik7XG5cbiAgICAgICAgICAgICAgdGhpcy5fdG9rZW5zJC5uZXh0KHRva2Vucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl90b2tlbnMkLm5leHQoe1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgdG9rZW46IChzdGF0ZS5yZXNwb25zZSBhcyBhbnkpWyd0b2tlbiddLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuOiAoc3RhdGUucmVzcG9uc2UgYXMgYW55KVsncmVmcmVzaFRva2VuJ10sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29va2llRW5hYmxlZCA9IHRoaXMuX2NvbmZpZy5yZWZyZXNoQ29uZmlnPy5jb29raWVFbmFibGVkID8/IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVmcmVzaENvbmZpZz8uY29va2llTmFtZSAmJiB0aGlzLnRva2Vucy5yZWZyZXNoVG9rZW4gJiYgY29va2llRW5hYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLl9zZXRDb29raWUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUZvclJlZnJlc2goKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUoc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl90b2tlbnMkLm5leHQoeyB0b2tlbjogbnVsbCwgcmVmcmVzaFRva2VuOiBudWxsIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlZnJlc2hDb25maWc/LmNvb2tpZU5hbWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQ29va2llKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsUmVzcG9uc2UoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class CustomHeaderAuthProvider {
|
|
2
|
-
get header() {
|
|
3
|
-
return { [this._config.name]: this._config.value };
|
|
4
|
-
}
|
|
5
|
-
constructor(_config) {
|
|
6
|
-
this._config = _config;
|
|
7
|
-
}
|
|
8
|
-
cleanUp() {
|
|
9
|
-
// noop
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2F1dGgvY3VzdG9tLWhlYWRlci1hdXRoLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxZQUFtQixPQUF1QztRQUF2QyxZQUFPLEdBQVAsT0FBTyxDQUFnQztJQUFHLENBQUM7SUFFOUQsT0FBTztRQUNMLE9BQU87SUFDVCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoUHJvdmlkZXIsIEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZyB9IGZyb20gJy4vYXV0aC1wcm92aWRlci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21IZWFkZXJBdXRoUHJvdmlkZXIgaW1wbGVtZW50cyBBdXRoUHJvdmlkZXIge1xuICBnZXQgaGVhZGVyKCkge1xuICAgIHJldHVybiB7IFt0aGlzLl9jb25maWcubmFtZV06IHRoaXMuX2NvbmZpZy52YWx1ZSB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIF9jb25maWc6IEF1dGhQcm92aWRlckN1c3RvbUhlYWRlckNvbmZpZykge31cblxuICBjbGVhblVwKCk6IHZvaWQge1xuICAgIC8vIG5vb3BcbiAgfVxufVxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './custom-header-auth-provider';
|
|
2
|
-
export * from './basic-auth-provider';
|
|
3
|
-
export * from './bearer-auth-provider';
|
|
4
|
-
export * from './auth-provider.types';
|
|
5
|
-
export * from './auth-provider.utils';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2N1c3RvbS1oZWFkZXItYXV0aC1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2ljLWF1dGgtcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9iZWFyZXItYXV0aC1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtcHJvdmlkZXIudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLXByb3ZpZGVyLnV0aWxzJztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtdmFsaWRhdG9yLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2NsYXNzLXZhbGlkYXRvci9jbGFzcy12YWxpZGF0b3IudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JFcnJvciB7XG4gIHN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmdbXTtcbiAgZXJyb3I6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export const isClassValidatorError = (error) => {
|
|
2
|
-
return typeof error === 'object' && error !== null && 'statusCode' in error && 'message' in error && 'error' in error;
|
|
3
|
-
};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtdmFsaWRhdG9yLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2NsYXNzLXZhbGlkYXRvci9jbGFzcy12YWxpZGF0b3IudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFjLEVBQWdDLEVBQUU7SUFDcEYsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxZQUFZLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQztBQUN4SCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc1ZhbGlkYXRvckVycm9yIH0gZnJvbSAnLi9jbGFzcy12YWxpZGF0b3IudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNDbGFzc1ZhbGlkYXRvckVycm9yID0gKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgQ2xhc3NWYWxpZGF0b3JFcnJvciA9PiB7XG4gIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmICdzdGF0dXNDb2RlJyBpbiBlcnJvciAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgJ2Vycm9yJyBpbiBlcnJvcjtcbn07XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './class-validator.types';
|
|
2
|
-
export * from './class-validator.utils';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvY2xhc3MtdmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2xhc3MtdmFsaWRhdG9yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3MtdmFsaWRhdG9yLnV0aWxzJztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './query-devtools.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZGV2dG9vbHMvY29tcG9uZW50cy9xdWVyeS1kZXZ0b29scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9xdWVyeS1kZXZ0b29scy5jb21wb25lbnQnO1xuIl19
|