@ng-atomic/common 15.1.1 → 16.1.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/esm2022/interceptors/authorization/authorization.interceptor.mjs +26 -0
- package/esm2022/interceptors/authorization/index.mjs +2 -0
- package/esm2022/interceptors/authorization/ng-atomic-common-interceptors-authorization.mjs +5 -0
- package/esm2022/interceptors/throttle/index.mjs +2 -0
- package/esm2022/interceptors/throttle/ng-atomic-common-interceptors-throttle.mjs +5 -0
- package/esm2022/interceptors/throttle/throttle.interceptor.mjs +63 -0
- package/esm2022/interceptors/token/authorization.interceptor.mjs +26 -0
- package/esm2022/interceptors/token/index.mjs +2 -0
- package/esm2022/interceptors/token/ng-atomic-common-interceptors-token.mjs +5 -0
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +33 -0
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs +70 -0
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-interceptors-token.mjs +33 -0
- package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -0
- package/interceptors/authorization/authorization.interceptor.d.ts +13 -0
- package/interceptors/authorization/index.d.ts +1 -0
- package/interceptors/throttle/index.d.ts +1 -0
- package/interceptors/throttle/throttle.interceptor.d.ts +23 -0
- package/interceptors/token/authorization.interceptor.d.ts +13 -0
- package/interceptors/token/index.d.ts +1 -0
- package/package.json +20 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable, InjectionToken, inject } from '@angular/core';
|
|
2
|
+
import { from } from 'rxjs';
|
|
3
|
+
import { mergeMap, take } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
|
|
6
|
+
export class AuthorizationInterceptor {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.provide = inject(PROVIDE_AUTHORIZATION);
|
|
9
|
+
}
|
|
10
|
+
intercept(req, next) {
|
|
11
|
+
if (!req.url.startsWith('/api'))
|
|
12
|
+
return next.handle(req);
|
|
13
|
+
return from(this.provide())
|
|
14
|
+
.pipe(take(1))
|
|
15
|
+
.pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
|
|
16
|
+
}
|
|
17
|
+
getRequestWithToken(req, token) {
|
|
18
|
+
return req.clone({ setHeaders: { Authorization: token } });
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdoRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsdUJBQXVCLENBQUMsQ0FBQztBQUd2RyxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBR1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBYWpEO0lBWEMsU0FBUyxDQUFDLEdBQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUF5QixFQUFFLEtBQWE7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDOytHQWRVLHdCQUF3QjttSEFBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBQcm92aWRlQXV0aG9yaXphdGlvbiA9ICgpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gfCBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuZXhwb3J0IGNvbnN0IFBST1ZJREVfQVVUSE9SSVpBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcm92aWRlQXV0aG9yaXphdGlvbj4oJ1BST1ZJREVfQVVUSE9SSVpBVElPTicpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIHByb3ZpZGUgPSBpbmplY3QoUFJPVklERV9BVVRIT1JJWkFUSU9OKTtcblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgIGlmICghcmVxLnVybC5zdGFydHNXaXRoKCcvYXBpJykpIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5wcm92aWRlKCkpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoaWRUb2tlbiA9PiBuZXh0LmhhbmRsZShpZFRva2VuID8gdGhpcy5nZXRSZXF1ZXN0V2l0aFRva2VuKHJlcSwgaWRUb2tlbikgOiByZXEpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3RXaXRoVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXEuY2xvbmUoeyBzZXRIZWFkZXJzOiB7QXV0aG9yaXphdGlvbjogdG9rZW59IH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './authorization.interceptor';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy9hdXRob3JpemF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGhvcml6YXRpb24uaW50ZXJjZXB0b3InO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1pbnRlcmNlcHRvcnMtYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2F1dGhvcml6YXRpb24vbmctYXRvbWljLWNvbW1vbi1pbnRlcmNlcHRvcnMtYXV0aG9yaXphdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './throttle.interceptor';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy90aHJvdHRsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90aHJvdHRsZS5pbnRlcmNlcHRvcic7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1pbnRlcmNlcHRvcnMtdGhyb3R0bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy90aHJvdHRsZS9uZy1hdG9taWMtY29tbW9uLWludGVyY2VwdG9ycy10aHJvdHRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ReplaySubject, throwError } from 'rxjs';
|
|
3
|
+
import { catchError, finalize, tap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
class IcedCacheService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.cache = {};
|
|
8
|
+
}
|
|
9
|
+
has(key) {
|
|
10
|
+
return !!this.cache?.[key];
|
|
11
|
+
}
|
|
12
|
+
get(key) {
|
|
13
|
+
return this.cache[key];
|
|
14
|
+
}
|
|
15
|
+
set(key, value) {
|
|
16
|
+
this.cache[key] = value;
|
|
17
|
+
this.removeAfter(key, 10 * 1000);
|
|
18
|
+
}
|
|
19
|
+
removeAfter(key, ms = 1000) {
|
|
20
|
+
setTimeout(() => this.remove(key), ms);
|
|
21
|
+
}
|
|
22
|
+
remove(key) {
|
|
23
|
+
delete this.cache?.[key];
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, providedIn: 'root' }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root'
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
export class ThrottleInterceptor {
|
|
35
|
+
constructor(cache) {
|
|
36
|
+
this.cache = cache;
|
|
37
|
+
}
|
|
38
|
+
intercept(req, next) {
|
|
39
|
+
if (!this.test(req))
|
|
40
|
+
return next.handle(req);
|
|
41
|
+
const key = this.buildKey(req);
|
|
42
|
+
if (!this.cache.has(key)) {
|
|
43
|
+
const subject = new ReplaySubject(1);
|
|
44
|
+
next.handle(req).pipe(tap(event => subject.next(event)), catchError((error) => (subject.error(error), throwError(error))), finalize(() => subject.complete())).subscribe(() => { });
|
|
45
|
+
this.cache.set(key, subject);
|
|
46
|
+
}
|
|
47
|
+
return this.cache.get(key);
|
|
48
|
+
}
|
|
49
|
+
test(req) {
|
|
50
|
+
if (req.method !== 'GET')
|
|
51
|
+
return false;
|
|
52
|
+
return req.url.startsWith('/api');
|
|
53
|
+
}
|
|
54
|
+
buildKey(req) {
|
|
55
|
+
return `${req.url}`;
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor, deps: [{ token: IcedCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor, decorators: [{
|
|
61
|
+
type: Injectable
|
|
62
|
+
}], ctorParameters: function () { return [{ type: IcedCacheService }]; } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy90aHJvdHRsZS90aHJvdHRsZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxhQUFhLEVBQVcsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUcxRCxNQUdNLGdCQUFnQjtJQUh0QjtRQUlFLFVBQUssR0FBRyxFQUFFLENBQUM7S0FzQlo7SUFwQkMsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWtDO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFhLElBQUk7UUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBdEJHLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRlIsTUFBTTs7NEZBRWQsZ0JBQWdCO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUEyQkQsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFvQixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtJQUFJLENBQUM7SUFFaEQsU0FBUyxDQUFDLEdBQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxDQUFxQixDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNqQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNoRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ25DLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5QjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLElBQUksQ0FBQyxHQUF5QjtRQUN0QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUF5QjtRQUN4QyxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7K0dBN0JVLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmNsYXNzIEljZWRDYWNoZVNlcnZpY2Uge1xuICBjYWNoZSA9IHt9O1xuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY2FjaGU/LltrZXldO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogU3ViamVjdDxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVtrZXldO1xuICB9XG5cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogU3ViamVjdDxIdHRwRXZlbnQ8dW5rbm93bj4+KTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZVtrZXldID0gdmFsdWU7XG4gICAgdGhpcy5yZW1vdmVBZnRlcihrZXksIDEwICogMTAwMCk7XG4gIH1cblxuICByZW1vdmVBZnRlcihrZXk6IHN0cmluZywgbXM6IG51bWJlciA9IDEwMDApIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKGtleSksIG1zKTtcbiAgfVxuXG4gIHJlbW92ZShrZXk6IHN0cmluZykge1xuICAgIGRlbGV0ZSB0aGlzLmNhY2hlPy5ba2V5XTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGhyb3R0bGVJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWNoZTogSWNlZENhY2hlU2VydmljZSkgeyB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcbiAgICBpZiAoIXRoaXMudGVzdChyZXEpKSByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcblxuICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRLZXkocmVxKTtcblxuICAgIGlmICghdGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuICAgICAgY29uc3Qgc3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEh0dHBFdmVudDx1bmtub3duPj4oMSk7XG4gICAgICBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICAgIHRhcChldmVudCA9PiBzdWJqZWN0Lm5leHQoZXZlbnQpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IChzdWJqZWN0LmVycm9yKGVycm9yKSwgdGhyb3dFcnJvcihlcnJvcikpKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gc3ViamVjdC5jb21wbGV0ZSgpKSxcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgc3ViamVjdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGVzdChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgaWYgKHJlcS5tZXRob2QgIT09ICdHRVQnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHJlcS51cmwuc3RhcnRzV2l0aCgnL2FwaScpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEtleShyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cmVxLnVybH1gO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable, InjectionToken, inject } from '@angular/core';
|
|
2
|
+
import { from } from 'rxjs';
|
|
3
|
+
import { mergeMap, take } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
|
|
6
|
+
export class AuthorizationInterceptor {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.provide = inject(PROVIDE_AUTHORIZATION);
|
|
9
|
+
}
|
|
10
|
+
intercept(req, next) {
|
|
11
|
+
if (!req.url.startsWith('/api'))
|
|
12
|
+
return next.handle(req);
|
|
13
|
+
return from(this.provide())
|
|
14
|
+
.pipe(take(1))
|
|
15
|
+
.pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
|
|
16
|
+
}
|
|
17
|
+
getRequestWithToken(req, token) {
|
|
18
|
+
return req.clone({ setHeaders: { Authorization: token } });
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL3Rva2VuL2F1dGhvcml6YXRpb24uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHVCQUF1QixDQUFDLENBQUM7QUFHdkcsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUdVLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztLQWFqRDtJQVhDLFNBQVMsQ0FBQyxHQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBeUIsRUFBRSxLQUFhO1FBQ2xFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQzsrR0FkVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZU1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgUHJvdmlkZUF1dGhvcml6YXRpb24gPSAoKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbmV4cG9ydCBjb25zdCBQUk9WSURFX0FVVEhPUklaQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48UHJvdmlkZUF1dGhvcml6YXRpb24+KCdQUk9WSURFX0FVVEhPUklaQVRJT04nKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25JbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBwcm92aWRlID0gaW5qZWN0KFBST1ZJREVfQVVUSE9SSVpBVElPTik7XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcbiAgICBpZiAoIXJlcS51cmwuc3RhcnRzV2l0aCgnL2FwaScpKSByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMucHJvdmlkZSgpKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5waXBlKG1lcmdlTWFwKGlkVG9rZW4gPT4gbmV4dC5oYW5kbGUoaWRUb2tlbiA/IHRoaXMuZ2V0UmVxdWVzdFdpdGhUb2tlbihyZXEsIGlkVG9rZW4pIDogcmVxKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXF1ZXN0V2l0aFRva2VuKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxLmNsb25lKHsgc2V0SGVhZGVyczoge0F1dGhvcml6YXRpb246IHRva2VufSB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './authorization.interceptor';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy90b2tlbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRob3JpemF0aW9uLmludGVyY2VwdG9yJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1pbnRlcmNlcHRvcnMtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL2ludGVyY2VwdG9ycy90b2tlbi9uZy1hdG9taWMtY29tbW9uLWludGVyY2VwdG9ycy10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { from } from 'rxjs';
|
|
4
|
+
import { take, mergeMap } from 'rxjs/operators';
|
|
5
|
+
|
|
6
|
+
const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
|
|
7
|
+
class AuthorizationInterceptor {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.provide = inject(PROVIDE_AUTHORIZATION);
|
|
10
|
+
}
|
|
11
|
+
intercept(req, next) {
|
|
12
|
+
if (!req.url.startsWith('/api'))
|
|
13
|
+
return next.handle(req);
|
|
14
|
+
return from(this.provide())
|
|
15
|
+
.pipe(take(1))
|
|
16
|
+
.pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
|
|
17
|
+
}
|
|
18
|
+
getRequestWithToken(req, token) {
|
|
19
|
+
return req.clone({ setHeaders: { Authorization: token } });
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}] });
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Generated bundle index. Do not edit.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
export { AuthorizationInterceptor, PROVIDE_AUTHORIZATION };
|
|
33
|
+
//# sourceMappingURL=ng-atomic-common-interceptors-authorization.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const PROVIDE_AUTHORIZATION = new InjectionToken<ProvideAuthorization>('PROVIDE_AUTHORIZATION');\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private provide = inject(PROVIDE_AUTHORIZATION);\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api')) return next.handle(req);\n\n return from(this.provide())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,EAAE;MAG1F,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAajD,KAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACnG;IAEO,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC;KAC1D;+GAdU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACRX;;AAEG;;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ReplaySubject, throwError } from 'rxjs';
|
|
4
|
+
import { tap, catchError, finalize } from 'rxjs/operators';
|
|
5
|
+
|
|
6
|
+
class IcedCacheService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.cache = {};
|
|
9
|
+
}
|
|
10
|
+
has(key) {
|
|
11
|
+
return !!this.cache?.[key];
|
|
12
|
+
}
|
|
13
|
+
get(key) {
|
|
14
|
+
return this.cache[key];
|
|
15
|
+
}
|
|
16
|
+
set(key, value) {
|
|
17
|
+
this.cache[key] = value;
|
|
18
|
+
this.removeAfter(key, 10 * 1000);
|
|
19
|
+
}
|
|
20
|
+
removeAfter(key, ms = 1000) {
|
|
21
|
+
setTimeout(() => this.remove(key), ms);
|
|
22
|
+
}
|
|
23
|
+
remove(key) {
|
|
24
|
+
delete this.cache?.[key];
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
27
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, providedIn: 'root' }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IcedCacheService, decorators: [{
|
|
30
|
+
type: Injectable,
|
|
31
|
+
args: [{
|
|
32
|
+
providedIn: 'root'
|
|
33
|
+
}]
|
|
34
|
+
}] });
|
|
35
|
+
class ThrottleInterceptor {
|
|
36
|
+
constructor(cache) {
|
|
37
|
+
this.cache = cache;
|
|
38
|
+
}
|
|
39
|
+
intercept(req, next) {
|
|
40
|
+
if (!this.test(req))
|
|
41
|
+
return next.handle(req);
|
|
42
|
+
const key = this.buildKey(req);
|
|
43
|
+
if (!this.cache.has(key)) {
|
|
44
|
+
const subject = new ReplaySubject(1);
|
|
45
|
+
next.handle(req).pipe(tap(event => subject.next(event)), catchError((error) => (subject.error(error), throwError(error))), finalize(() => subject.complete())).subscribe(() => { });
|
|
46
|
+
this.cache.set(key, subject);
|
|
47
|
+
}
|
|
48
|
+
return this.cache.get(key);
|
|
49
|
+
}
|
|
50
|
+
test(req) {
|
|
51
|
+
if (req.method !== 'GET')
|
|
52
|
+
return false;
|
|
53
|
+
return req.url.startsWith('/api');
|
|
54
|
+
}
|
|
55
|
+
buildKey(req) {
|
|
56
|
+
return `${req.url}`;
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor, deps: [{ token: IcedCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ThrottleInterceptor, decorators: [{
|
|
62
|
+
type: Injectable
|
|
63
|
+
}], ctorParameters: function () { return [{ type: IcedCacheService }]; } });
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Generated bundle index. Do not edit.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
export { ThrottleInterceptor };
|
|
70
|
+
//# sourceMappingURL=ng-atomic-common-interceptors-throttle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-interceptors-throttle.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/throttle.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/ng-atomic-common-interceptors-throttle.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, ReplaySubject, Subject, throwError } from 'rxjs';\nimport { catchError, finalize, tap} from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nclass IcedCacheService {\n cache = {};\n\n has(key: string): boolean {\n return !!this.cache?.[key];\n }\n\n get(key: string): Subject<HttpEvent<unknown>> {\n return this.cache[key];\n }\n\n set(key: string, value: Subject<HttpEvent<unknown>>): void {\n this.cache[key] = value;\n this.removeAfter(key, 10 * 1000);\n }\n\n removeAfter(key: string, ms: number = 1000) {\n setTimeout(() => this.remove(key), ms);\n }\n\n remove(key: string) {\n delete this.cache?.[key];\n }\n}\n\n@Injectable()\nexport class ThrottleInterceptor implements HttpInterceptor {\n\n constructor(private cache: IcedCacheService) { }\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!this.test(req)) return next.handle(req);\n\n const key = this.buildKey(req);\n\n if (!this.cache.has(key)) {\n const subject = new ReplaySubject<HttpEvent<unknown>>(1);\n next.handle(req).pipe(\n tap(event => subject.next(event)),\n catchError((error) => (subject.error(error), throwError(error))),\n finalize(() => subject.complete()),\n ).subscribe(() => {});\n this.cache.set(key, subject);\n }\n\n return this.cache.get(key);\n }\n\n protected test(req: HttpRequest<unknown>): boolean {\n if (req.method !== 'GET') return false;\n return req.url.startsWith('/api');\n }\n\n private buildKey(req: HttpRequest<unknown>): string {\n return `${req.url}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { from } from 'rxjs';
|
|
4
|
+
import { take, mergeMap } from 'rxjs/operators';
|
|
5
|
+
|
|
6
|
+
const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
|
|
7
|
+
class AuthorizationInterceptor {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.provide = inject(PROVIDE_AUTHORIZATION);
|
|
10
|
+
}
|
|
11
|
+
intercept(req, next) {
|
|
12
|
+
if (!req.url.startsWith('/api'))
|
|
13
|
+
return next.handle(req);
|
|
14
|
+
return from(this.provide())
|
|
15
|
+
.pipe(take(1))
|
|
16
|
+
.pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
|
|
17
|
+
}
|
|
18
|
+
getRequestWithToken(req, token) {
|
|
19
|
+
return req.clone({ setHeaders: { Authorization: token } });
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}] });
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Generated bundle index. Do not edit.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
export { AuthorizationInterceptor, PROVIDE_AUTHORIZATION };
|
|
33
|
+
//# sourceMappingURL=ng-atomic-common-interceptors-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-interceptors-token.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/token/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/token/ng-atomic-common-interceptors-token.ts"],"sourcesContent":["import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const PROVIDE_AUTHORIZATION = new InjectionToken<ProvideAuthorization>('PROVIDE_AUTHORIZATION');\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private provide = inject(PROVIDE_AUTHORIZATION);\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api')) return next.handle(req);\n\n return from(this.provide())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,EAAE;MAG1F,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAajD,KAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACnG;IAEO,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC;KAC1D;+GAdU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACRX;;AAEG;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;
|
|
6
|
+
export declare const PROVIDE_AUTHORIZATION: InjectionToken<ProvideAuthorization>;
|
|
7
|
+
export declare class AuthorizationInterceptor implements HttpInterceptor {
|
|
8
|
+
private provide;
|
|
9
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
10
|
+
private getRequestWithToken;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizationInterceptor, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizationInterceptor>;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './authorization.interceptor';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './throttle.interceptor';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable, Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
declare class IcedCacheService {
|
|
5
|
+
cache: {};
|
|
6
|
+
has(key: string): boolean;
|
|
7
|
+
get(key: string): Subject<HttpEvent<unknown>>;
|
|
8
|
+
set(key: string, value: Subject<HttpEvent<unknown>>): void;
|
|
9
|
+
removeAfter(key: string, ms?: number): void;
|
|
10
|
+
remove(key: string): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IcedCacheService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<IcedCacheService>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ThrottleInterceptor implements HttpInterceptor {
|
|
15
|
+
private cache;
|
|
16
|
+
constructor(cache: IcedCacheService);
|
|
17
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
18
|
+
protected test(req: HttpRequest<unknown>): boolean;
|
|
19
|
+
private buildKey;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThrottleInterceptor, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ThrottleInterceptor>;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;
|
|
6
|
+
export declare const PROVIDE_AUTHORIZATION: InjectionToken<ProvideAuthorization>;
|
|
7
|
+
export declare class AuthorizationInterceptor implements HttpInterceptor {
|
|
8
|
+
private provide;
|
|
9
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
10
|
+
private getRequestWithToken;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizationInterceptor, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizationInterceptor>;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './authorization.interceptor';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-atomic/common",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/cdk": "^16.0.0",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@angular/router": "^16.0.0",
|
|
13
13
|
"@ngrx/component-store": "^16.0.0",
|
|
14
14
|
"@ngrx/entity": "^16.0.0",
|
|
15
|
-
"@nx-ddd/core": "
|
|
15
|
+
"@nx-ddd/core": "16.1.0",
|
|
16
16
|
"dayjs": "1.11.10",
|
|
17
17
|
"firebase": "^9.0.0",
|
|
18
18
|
"flat": "^5.0.2",
|
|
@@ -55,6 +55,24 @@
|
|
|
55
55
|
"esm": "./esm2022/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs",
|
|
56
56
|
"default": "./fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs"
|
|
57
57
|
},
|
|
58
|
+
"./interceptors/authorization": {
|
|
59
|
+
"types": "./interceptors/authorization/index.d.ts",
|
|
60
|
+
"esm2022": "./esm2022/interceptors/authorization/ng-atomic-common-interceptors-authorization.mjs",
|
|
61
|
+
"esm": "./esm2022/interceptors/authorization/ng-atomic-common-interceptors-authorization.mjs",
|
|
62
|
+
"default": "./fesm2022/ng-atomic-common-interceptors-authorization.mjs"
|
|
63
|
+
},
|
|
64
|
+
"./interceptors/throttle": {
|
|
65
|
+
"types": "./interceptors/throttle/index.d.ts",
|
|
66
|
+
"esm2022": "./esm2022/interceptors/throttle/ng-atomic-common-interceptors-throttle.mjs",
|
|
67
|
+
"esm": "./esm2022/interceptors/throttle/ng-atomic-common-interceptors-throttle.mjs",
|
|
68
|
+
"default": "./fesm2022/ng-atomic-common-interceptors-throttle.mjs"
|
|
69
|
+
},
|
|
70
|
+
"./interceptors/token": {
|
|
71
|
+
"types": "./interceptors/token/index.d.ts",
|
|
72
|
+
"esm2022": "./esm2022/interceptors/token/ng-atomic-common-interceptors-token.mjs",
|
|
73
|
+
"esm": "./esm2022/interceptors/token/ng-atomic-common-interceptors-token.mjs",
|
|
74
|
+
"default": "./fesm2022/ng-atomic-common-interceptors-token.mjs"
|
|
75
|
+
},
|
|
58
76
|
"./pipes/actions": {
|
|
59
77
|
"types": "./pipes/actions/index.d.ts",
|
|
60
78
|
"esm2022": "./esm2022/pipes/actions/ng-atomic-common-pipes-actions.mjs",
|