angular-base-lib 17.0.2 → 17.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +267 -0
  2. package/esm2022/lib/auth/base-auth.service.mjs +47 -0
  3. package/esm2022/lib/auth/guards/index.mjs +3 -0
  4. package/esm2022/lib/auth/guards/logged-in.guard.mjs +14 -0
  5. package/esm2022/lib/auth/guards/logged-out.guard.mjs +14 -0
  6. package/esm2022/lib/auth/index.mjs +4 -0
  7. package/esm2022/lib/auth/models/base-auth-state.mjs +2 -0
  8. package/esm2022/lib/auth/models/index.mjs +4 -0
  9. package/esm2022/lib/auth/models/logged-in-auth-state.mjs +7 -0
  10. package/esm2022/lib/auth/models/login-state.type.mjs +2 -0
  11. package/esm2022/lib/auth/models/not-logged-in-auth-state.mjs +7 -0
  12. package/esm2022/lib/auth/models/pending-auth-state.mjs +7 -0
  13. package/esm2022/lib/dao/converted-http-base-dao.mjs +37 -0
  14. package/esm2022/lib/dao/converted-promise-http-base-dao.mjs +37 -0
  15. package/esm2022/lib/dao/converter.mjs +3 -0
  16. package/esm2022/lib/dao/dao-id.mjs +2 -0
  17. package/esm2022/lib/dao/http-base-dao-options.mjs +4 -0
  18. package/esm2022/lib/dao/http-base-dao.mjs +22 -0
  19. package/esm2022/lib/dao/index.mjs +8 -0
  20. package/esm2022/lib/dao/interfaces/identifiable.mjs +2 -0
  21. package/esm2022/lib/dao/interfaces/index.mjs +2 -0
  22. package/esm2022/lib/dao/internal/internal-http-base-dao.mjs +44 -0
  23. package/esm2022/lib/dao/promise-http-base-dao.mjs +23 -0
  24. package/esm2022/lib/index.mjs +3 -1
  25. package/fesm2022/angular-base-lib.mjs +249 -1
  26. package/fesm2022/angular-base-lib.mjs.map +1 -1
  27. package/lib/auth/base-auth.service.d.ts +24 -0
  28. package/lib/auth/guards/index.d.ts +2 -0
  29. package/lib/auth/guards/logged-in.guard.d.ts +2 -0
  30. package/lib/auth/guards/logged-out.guard.d.ts +2 -0
  31. package/lib/auth/index.d.ts +3 -0
  32. package/lib/auth/models/base-auth-state.d.ts +5 -0
  33. package/lib/auth/models/index.d.ts +5 -0
  34. package/lib/auth/models/logged-in-auth-state.d.ts +7 -0
  35. package/lib/auth/models/login-state.type.d.ts +1 -0
  36. package/lib/auth/models/not-logged-in-auth-state.d.ts +6 -0
  37. package/lib/auth/models/pending-auth-state.d.ts +6 -0
  38. package/lib/dao/converted-http-base-dao.d.ts +16 -0
  39. package/lib/dao/converted-promise-http-base-dao.d.ts +15 -0
  40. package/lib/dao/converter.d.ts +4 -0
  41. package/lib/dao/dao-id.d.ts +1 -0
  42. package/lib/dao/http-base-dao-options.d.ts +6 -0
  43. package/lib/dao/http-base-dao.d.ts +12 -0
  44. package/lib/dao/index.d.ts +8 -0
  45. package/lib/dao/interfaces/identifiable.d.ts +4 -0
  46. package/lib/dao/interfaces/index.d.ts +1 -0
  47. package/lib/dao/internal/internal-http-base-dao.d.ts +16 -0
  48. package/lib/dao/promise-http-base-dao.d.ts +11 -0
  49. package/lib/index.d.ts +2 -0
  50. package/package.json +15 -3
package/README.md CHANGED
@@ -1,3 +1,270 @@
1
+ # AngularBaseDao
2
+
3
+ This library helps you to create dao-services that include all **CURDL** methods out of the box without needing to implement them by your own.
4
+ Complex models that are received from the REST requests can simply be **converted/mapped** using the provided **HttpBaseDao** and **IConverter**.
5
+
6
+ > **CURLD** => **C**reate **R**ead **U**pdate **D**elete **L**ist
7
+
8
+ ## Basic Usage
9
+
10
+ To create a service that provides all CRUDL functions out of the box follow these steps:
11
+
12
+ **Step 1: Create an entity-class which implements the **IIdentifiable** interface**
13
+
14
+ ```ts
15
+ export interface UserModel implements IIdentifiable {
16
+ id: string;
17
+ name: string;
18
+ }
19
+ ```
20
+
21
+ **Step 2: Create an entity-dao-service, which extends from the NoConversionHttpBaseDao-class**
22
+
23
+ By default, the service will set **withCredentials** to true, to make use of http-only cookie authentication.
24
+ If this is not wanted, you can specify it in the super-constructor call.
25
+
26
+ If you prefer a different kind of authentication method, you can pass custom http-headers to the affected **CRUDL** method. (`this.dao.list(false, { ...httpOptions })`)
27
+
28
+ ```ts
29
+ @Injectable({ providedIn: 'root' })
30
+ export class UserDaoService extends NoConversionHttpBaseDao<UserModel> {
31
+ constructor() {
32
+ super('https://api.net/user');
33
+ }
34
+ }
35
+ ```
36
+
37
+ **Step 3: Use the service**
38
+
39
+ ```ts
40
+ @Component(...)
41
+ export class AppComponent {
42
+ private readonly userDao = inject(UserDaoService);
43
+
44
+ constructor() {
45
+ this.userDao.create({ name: 'Max' }); // returns Promise<UserModel>
46
+ this.userDao.read('my-id'); // returns Promise<UserModel>
47
+ this.userDao.update({ id: 'max-id', name: 'Max' }); // returns Promise<UserModel>
48
+ this.userDao.delete({ id: 'max-id', name: 'Max' }); // returns Promise<void>
49
+ this.userDao.list(); // returns Promise<UserModel[]>
50
+ }
51
+ }
52
+ ```
53
+
54
+ ### Using converters to convert http body to models (optional)
55
+
56
+ **Step 1: Create the request interface that the server sends back to the client**
57
+
58
+ ```ts
59
+ export interface UserResponse implements IIdentifiable {
60
+ id: string;
61
+ creationDateString: string; // ISO string
62
+ }
63
+ ```
64
+
65
+ **Step 2: Create the interface that the dao-service should return**
66
+
67
+ ```ts
68
+ export interface UserModel implements IIdentifiable {
69
+ id: string;
70
+ creationDate: Date; // Real date object
71
+ }
72
+ ```
73
+
74
+ **Step 3: Create a mapper-service that maps between those two models**
75
+
76
+ ```ts
77
+ @Injectable({ providedIn: 'root' })
78
+ export class PersonConverterService implements IConverter<UserResponse, UserModel> {
79
+ // Converts the model that was returned by the server to the model that should be used in the applciation
80
+ fromJson(response: UserResponse): UserModel {
81
+ return {
82
+ id: response.id,
83
+ creationDate: new Date(response.creationDateString), // Converts the date-string to a date
84
+ };
85
+ }
86
+
87
+ // Prepares the object that will be sent to the server for CREATE or UPDATE
88
+ toJson(model: UserModel): unknown {
89
+ return {
90
+ id: model.id,
91
+ creationDate: model.creationDate.toISOString(),
92
+ };
93
+ }
94
+ }
95
+ ```
96
+
97
+ **Step 4: Create the entity-dao-service and provide the created converter-service**
98
+
99
+ ```ts
100
+ @Injectable({ providedIn: 'root' })
101
+ export class UserDaoService extends HttpBaseDao<UserResponse, PersonModel> {
102
+ constructor() {
103
+ super('https://api.net/user', inject(HttpClient), inject(PersonConverterService));
104
+ }
105
+ }
106
+ ```
107
+
108
+ ## Server Requirements
109
+
110
+ - REST server
111
+ - HTTP methods are used to differentiate between the different CRUDL request
112
+
113
+ - **POST** (CREATE)
114
+
115
+ - url: https://api.net/entity
116
+ - request body: **json object**
117
+ - response body: **json object**
118
+
119
+ - **GET** (READ)
120
+
121
+ - url: https://api.net/entity/:id
122
+ - request body: -
123
+ - response body: **json object**
124
+
125
+ - **PUT** (UPDATE)
126
+
127
+ - url: https://api.net/entity/:id
128
+ - request body: **json object**
129
+ - response body: **json object**
130
+
131
+ - **DELETE** (DELETE)
132
+
133
+ - url: https://api.net/entity/:id
134
+ - request body: -
135
+ - response body: -
136
+
137
+ - **GET** (LIST)
138
+
139
+ - url: https://api.net/entity
140
+ - request body: -
141
+ - response body: **json array**
142
+
143
+ # Angular Base Authentication
144
+ This library contains an abstract auth-service and guards that can be used out of the box, by just extending the `BaseAuthService<TUSER>`.
145
+
146
+ ## Usage
147
+
148
+ **Step 1: Create a user model**
149
+
150
+ ```js
151
+ interface UserModel {
152
+ id: string;
153
+ email: string;
154
+ isAdmin: boolean;
155
+ }
156
+ ```
157
+
158
+ **Step 2: Extend the base-auth-service using the user-model**
159
+
160
+ ```js
161
+ @Injectable({ providedIn: 'root' })
162
+ export class MyOwnAuthService extends BaseAuthService<UserModel>...
163
+ ```
164
+
165
+ **Step 3: Set the initial login state inside the constructor**
166
+
167
+ With local auth-cookie:
168
+ ```js
169
+ constructor() {
170
+ const user = loginUsingAuthCookie(); // Validate and check your local auth-cookie
171
+ if (user) {
172
+ this.userLoggedIn(user); // Sets the login state to logged-in
173
+ } else {
174
+ this.userLoggedOut(); // Sets the login state to logged-out
175
+ }
176
+ }
177
+ ```
178
+
179
+ Without local tokens:
180
+ ```js
181
+ constructor() {
182
+ this.userLoggedOut(); // Sets the initial login state to logged-out
183
+ }
184
+ ```
185
+
186
+ > Important: Make sure the initial login state is set right after the application is started by calling `userLoggedIn`or `userLoggedOut`. If you do NOT do this the login-state will be `pending` and the provided auth-guards be waiting for the 'readyLoginState$' forever.
187
+
188
+ ****
189
+
190
+ ```js
191
+ constructor() {
192
+ this.userLoggedOut(); // If you do not do this, the login-state will be pending
193
+ }
194
+ ```
195
+
196
+ **Step 4: Implement the login-logout functions and call the provided functions of the base-class**
197
+
198
+ ```js
199
+ async login(loginData): Promise<void> {
200
+ try {
201
+ const result$ = this.http.post<UserModel>(login, loginData);
202
+ const user = await firstValueFrom(result$);
203
+ this.userLoggedIn(user); // Sets the login state to logged-in
204
+ } catch (ex) {
205
+ this.userLoggedOut(); // Sets the login state to logged-out
206
+ return ex;
207
+ }
208
+ }
209
+ ```
210
+
211
+ **Step 5: Provide your service implementation as `BaseAuthService`**
212
+ app.config.ts
213
+ ```js
214
+ export const appConfig: ApplicationConfig = {
215
+ providers: [
216
+ provideHttpClient(),
217
+ {
218
+ provide: BaseAuthService,
219
+ useExisting: MyOwnAuthService
220
+ },
221
+ ...
222
+ ]
223
+ };
224
+ ```
225
+
226
+ **Step 6: Use it**
227
+
228
+ Now you can use the provided route-guards without any configuration.
229
+ ```js
230
+ {
231
+ ...
232
+ path: 'login',
233
+ canActivate: [loggedOutGuardFn], //Only allow when logged-out
234
+ ...
235
+ },
236
+ {
237
+ ...
238
+ path: 'account',
239
+ canActivate: [loggedInGuardFn], // Only allow when logged-in
240
+ ...
241
+ },
242
+ ```
243
+
244
+ The `BaseAuthService` also provides a list of handy observables that represent the current auth-state like:
245
+ ```js
246
+ loginState$(): Observable<LoginState>
247
+ readyLoginState$(): Observable<LoginState>
248
+ readyAuthState$(): Observable<BaseAuthState<T>>
249
+ user$(): Observable<T | null>
250
+ isLoggedIn$(): Observable<boolean>
251
+ loginRoute(): string
252
+ ```
253
+
254
+ ### loginState$ vs readyLoginState$
255
+
256
+ #### loginState$
257
+
258
+ Emits all login states. Initial value will be `{ loginState: 'pending', user: null }`
259
+
260
+ #### readyLoginState$
261
+
262
+ Only emits non `pending` auth-states. Therefor handy for auth-guards.
263
+
264
+ #### Explanation
265
+
266
+ When a page is initially loaded, and the user is logged in using the stored auth-cookie. The auth state will be `pending` until the cookie is verified, until this the auth guard should not check if the route can be activated. Only if `this.userLoggedOut()` or `this.userLoggedIn(user)` was called, the auth guard will check the access. This prevents the application from blocking a page from the user because login-state is not settled jet.
267
+
1
268
  # angular-base
2
269
 
3
270
  Library with different abstract components and utilities that come in handy for simple angular-applications.
@@ -0,0 +1,47 @@
1
+ import { BehaviorSubject, filter } from 'rxjs';
2
+ import { LoggedInAuthState, NotLoggedInAuthState, PendingAuthState } from './models';
3
+ import { map } from 'rxjs/operators';
4
+ export class BaseAuthService {
5
+ get authState$() {
6
+ return this._authState$;
7
+ }
8
+ get loginState$() {
9
+ return this._loginState$;
10
+ }
11
+ get readyLoginState$() {
12
+ return this._readyLoginState$;
13
+ }
14
+ get readyAuthState$() {
15
+ return this._readyAuthState$;
16
+ }
17
+ get user$() {
18
+ return this._user$;
19
+ }
20
+ get readyUser$() {
21
+ return this._readyUser$;
22
+ }
23
+ get isLoggedIn$() {
24
+ return this._isLoggedIn$;
25
+ }
26
+ get loginRoute() {
27
+ return this.defaultLoginRoute;
28
+ }
29
+ constructor() {
30
+ this.authStateSubject = new BehaviorSubject(new PendingAuthState());
31
+ this.defaultLoginRoute = '/auth/login';
32
+ this._authState$ = this.authStateSubject.asObservable();
33
+ this._user$ = this._authState$.pipe(map((elem) => elem.user));
34
+ this._loginState$ = this._authState$.pipe(map((elem) => elem.loginState));
35
+ this._isLoggedIn$ = this._loginState$.pipe(map((state) => state === 'logged-in'));
36
+ this._readyAuthState$ = this._authState$.pipe(filter((elem) => elem.loginState !== 'pending'));
37
+ this._readyLoginState$ = this._readyAuthState$.pipe(map((elem) => elem.loginState));
38
+ this._readyUser$ = this._readyAuthState$.pipe(map((elem) => elem.user));
39
+ }
40
+ userLoggedIn(user) {
41
+ this.authStateSubject.next(new LoggedInAuthState(user));
42
+ }
43
+ userLoggedOut() {
44
+ this.authStateSubject.next(new NotLoggedInAuthState());
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2F1dGgvYmFzZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFpQixpQkFBaUIsRUFBYyxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsTUFBTSxPQUFnQixlQUFlO0lBV25DLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7UUExQ2lCLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFtQixJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQVFqRixzQkFBaUIsR0FBRyxhQUFhLENBQUM7UUFtQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBTztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRVMsYUFBYTtRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlQXV0aFN0YXRlLCBMb2dnZWRJbkF1dGhTdGF0ZSwgTG9naW5TdGF0ZSwgTm90TG9nZ2VkSW5BdXRoU3RhdGUsIFBlbmRpbmdBdXRoU3RhdGUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXV0aFNlcnZpY2U8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2VBdXRoU3RhdGU8VD4+KG5ldyBQZW5kaW5nQXV0aFN0YXRlKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRoU3RhdGUkOiBPYnNlcnZhYmxlPEJhc2VBdXRoU3RhdGU8VD4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dpblN0YXRlJDogT2JzZXJ2YWJsZTxMb2dpblN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZHlMb2dpblN0YXRlJDogT2JzZXJ2YWJsZTxMb2dpblN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZHlBdXRoU3RhdGUkOiBPYnNlcnZhYmxlPEJhc2VBdXRoU3RhdGU8VD4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF91c2VyJDogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWR5VXNlciQ6IE9ic2VydmFibGU8VCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0xvZ2dlZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TG9naW5Sb3V0ZSA9ICcvYXV0aC9sb2dpbic7XG5cbiAgZ2V0IGF1dGhTdGF0ZSQoKTogT2JzZXJ2YWJsZTxCYXNlQXV0aFN0YXRlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhTdGF0ZSQ7XG4gIH1cblxuICBnZXQgbG9naW5TdGF0ZSQoKTogT2JzZXJ2YWJsZTxMb2dpblN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luU3RhdGUkO1xuICB9XG5cbiAgZ2V0IHJlYWR5TG9naW5TdGF0ZSQoKTogT2JzZXJ2YWJsZTxMb2dpblN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5TG9naW5TdGF0ZSQ7XG4gIH1cblxuICBnZXQgcmVhZHlBdXRoU3RhdGUkKCk6IE9ic2VydmFibGU8QmFzZUF1dGhTdGF0ZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkeUF1dGhTdGF0ZSQ7XG4gIH1cblxuICBnZXQgdXNlciQoKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl91c2VyJDtcbiAgfVxuXG4gIGdldCByZWFkeVVzZXIkKCk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlVc2VyJDtcbiAgfVxuXG4gIGdldCBpc0xvZ2dlZEluJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNMb2dnZWRJbiQ7XG4gIH1cblxuICBnZXQgbG9naW5Sb3V0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRMb2dpblJvdXRlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2F1dGhTdGF0ZSQgPSB0aGlzLmF1dGhTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5fdXNlciQgPSB0aGlzLl9hdXRoU3RhdGUkLnBpcGUobWFwKChlbGVtKSA9PiBlbGVtLnVzZXIpKTtcbiAgICB0aGlzLl9sb2dpblN0YXRlJCA9IHRoaXMuX2F1dGhTdGF0ZSQucGlwZShtYXAoKGVsZW0pID0+IGVsZW0ubG9naW5TdGF0ZSkpO1xuICAgIHRoaXMuX2lzTG9nZ2VkSW4kID0gdGhpcy5fbG9naW5TdGF0ZSQucGlwZShtYXAoKHN0YXRlKSA9PiBzdGF0ZSA9PT0gJ2xvZ2dlZC1pbicpKTtcblxuICAgIHRoaXMuX3JlYWR5QXV0aFN0YXRlJCA9IHRoaXMuX2F1dGhTdGF0ZSQucGlwZShmaWx0ZXIoKGVsZW0pID0+IGVsZW0ubG9naW5TdGF0ZSAhPT0gJ3BlbmRpbmcnKSk7XG4gICAgdGhpcy5fcmVhZHlMb2dpblN0YXRlJCA9IHRoaXMuX3JlYWR5QXV0aFN0YXRlJC5waXBlKG1hcCgoZWxlbSkgPT4gZWxlbS5sb2dpblN0YXRlKSk7XG4gICAgdGhpcy5fcmVhZHlVc2VyJCA9IHRoaXMuX3JlYWR5QXV0aFN0YXRlJC5waXBlKG1hcCgoZWxlbSkgPT4gZWxlbS51c2VyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXNlckxvZ2dlZEluKHVzZXI6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTdGF0ZVN1YmplY3QubmV4dChuZXcgTG9nZ2VkSW5BdXRoU3RhdGU8VD4odXNlcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVzZXJMb2dnZWRPdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU3RhdGVTdWJqZWN0Lm5leHQobmV3IE5vdExvZ2dlZEluQXV0aFN0YXRlKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { loggedInGuardFn } from './logged-in.guard';
2
+ export { loggedOutGuardFn } from './logged-out.guard';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2F1dGgvZ3VhcmRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGxvZ2dlZEluR3VhcmRGbiB9IGZyb20gJy4vbG9nZ2VkLWluLmd1YXJkJztcbmV4cG9ydCB7IGxvZ2dlZE91dEd1YXJkRm4gfSBmcm9tICcuL2xvZ2dlZC1vdXQuZ3VhcmQnO1xuIl19
@@ -0,0 +1,14 @@
1
+ import { inject } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { map } from 'rxjs/operators';
4
+ import { BaseAuthService } from '../base-auth.service';
5
+ export const loggedInGuardFn = () => {
6
+ const router = inject(Router);
7
+ return inject(BaseAuthService).readyAuthState$.pipe(map((state) => {
8
+ if (state.loginState === 'logged-in') {
9
+ return true;
10
+ }
11
+ return router.createUrlTree(['/auth/login']);
12
+ }));
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VkLWluLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9hdXRoL2d1YXJkcy9sb2dnZWQtaW4uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrQixHQUFrQyxFQUFFO0lBQ2hGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2VBdXRoU2VydmljZSB9IGZyb20gJy4uL2Jhc2UtYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCBjb25zdCBsb2dnZWRJbkd1YXJkRm46IENhbkFjdGl2YXRlRm4gPSAoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gPT4ge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcmV0dXJuIGluamVjdChCYXNlQXV0aFNlcnZpY2UpLnJlYWR5QXV0aFN0YXRlJC5waXBlKFxuICAgIG1hcCgoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2dpblN0YXRlID09PSAnbG9nZ2VkLWluJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL2F1dGgvbG9naW4nXSk7XG4gICAgfSksXG4gICk7XG59O1xuIl19
@@ -0,0 +1,14 @@
1
+ import { inject } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { map } from 'rxjs/operators';
4
+ import { BaseAuthService } from '../base-auth.service';
5
+ export const loggedOutGuardFn = () => {
6
+ const router = inject(Router);
7
+ return inject(BaseAuthService).readyLoginState$.pipe(map((state) => {
8
+ if (state !== 'logged-in') {
9
+ return true;
10
+ }
11
+ return router.createUrlTree(['/']);
12
+ }));
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VkLW91dC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvYXV0aC9ndWFyZHMvbG9nZ2VkLW91dC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBaUIsTUFBTSxFQUFXLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBa0IsR0FBa0MsRUFBRTtJQUNqRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsT0FBTyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS1hdXRoLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgbG9nZ2VkT3V0R3VhcmRGbjogQ2FuQWN0aXZhdGVGbiA9ICgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICByZXR1cm4gaW5qZWN0KEJhc2VBdXRoU2VydmljZSkucmVhZHlMb2dpblN0YXRlJC5waXBlKFxuICAgIG1hcCgoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZSAhPT0gJ2xvZ2dlZC1pbicpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy8nXSk7XG4gICAgfSksXG4gICk7XG59O1xuIl19
@@ -0,0 +1,4 @@
1
+ export { BaseAuthService } from './base-auth.service';
2
+ export * from './models';
3
+ export * from './guards';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWF1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcyc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hdXRoLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9hdXRoL21vZGVscy9iYXNlLWF1dGgtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2luU3RhdGUgfSBmcm9tICcuL2xvZ2luLXN0YXRlLnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBdXRoU3RhdGU8VD4ge1xuICBsb2dpblN0YXRlOiBMb2dpblN0YXRlO1xuICB1c2VyOiBUIHwgbnVsbDtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export { PendingAuthState } from './pending-auth-state';
2
+ export { LoggedInAuthState } from './logged-in-auth-state';
3
+ export { NotLoggedInAuthState } from './not-logged-in-auth-state';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2F1dGgvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQmFzZUF1dGhTdGF0ZSB9IGZyb20gJy4vYmFzZS1hdXRoLXN0YXRlJztcbmV4cG9ydCB7IExvZ2luU3RhdGUgfSBmcm9tICcuL2xvZ2luLXN0YXRlLnR5cGUnO1xuZXhwb3J0IHsgUGVuZGluZ0F1dGhTdGF0ZSB9IGZyb20gJy4vcGVuZGluZy1hdXRoLXN0YXRlJztcbmV4cG9ydCB7IExvZ2dlZEluQXV0aFN0YXRlIH0gZnJvbSAnLi9sb2dnZWQtaW4tYXV0aC1zdGF0ZSc7XG5leHBvcnQgeyBOb3RMb2dnZWRJbkF1dGhTdGF0ZSB9IGZyb20gJy4vbm90LWxvZ2dlZC1pbi1hdXRoLXN0YXRlJztcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class LoggedInAuthState {
2
+ constructor(user) {
3
+ this.loginState = 'logged-in';
4
+ this.user = user;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VkLWluLWF1dGgtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2F1dGgvbW9kZWxzL2xvZ2dlZC1pbi1hdXRoLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxJQUFPO1FBSFYsZUFBVSxHQUFlLFdBQVcsQ0FBQztRQUk1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQXV0aFN0YXRlIH0gZnJvbSAnLi9iYXNlLWF1dGgtc3RhdGUnO1xuaW1wb3J0IHsgTG9naW5TdGF0ZSB9IGZyb20gJy4vbG9naW4tc3RhdGUudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2dnZWRJbkF1dGhTdGF0ZTxUPiBpbXBsZW1lbnRzIEJhc2VBdXRoU3RhdGU8VD4ge1xuICByZWFkb25seSBsb2dpblN0YXRlOiBMb2dpblN0YXRlID0gJ2xvZ2dlZC1pbic7XG4gIHJlYWRvbmx5IHVzZXI6IFQ7XG5cbiAgY29uc3RydWN0b3IodXNlcjogVCkge1xuICAgIHRoaXMudXNlciA9IHVzZXI7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc3RhdGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvYXV0aC9tb2RlbHMvbG9naW4tc3RhdGUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTG9naW5TdGF0ZSA9ICdwZW5kaW5nJyB8ICdsb2dnZWQtaW4nIHwgJ2xvZ2dlZC1vdXQnO1xuIl19
@@ -0,0 +1,7 @@
1
+ export class NotLoggedInAuthState {
2
+ constructor() {
3
+ this.loginState = 'logged-out';
4
+ this.user = null;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWxvZ2dlZC1pbi1hdXRoLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9hdXRoL21vZGVscy9ub3QtbG9nZ2VkLWluLWF1dGgtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQUNXLGVBQVUsR0FBZSxZQUFZLENBQUM7UUFDdEMsU0FBSSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQXV0aFN0YXRlIH0gZnJvbSAnLi9iYXNlLWF1dGgtc3RhdGUnO1xuaW1wb3J0IHsgTG9naW5TdGF0ZSB9IGZyb20gJy4vbG9naW4tc3RhdGUudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBOb3RMb2dnZWRJbkF1dGhTdGF0ZSBpbXBsZW1lbnRzIEJhc2VBdXRoU3RhdGU8dW5rbm93bj4ge1xuICByZWFkb25seSBsb2dpblN0YXRlOiBMb2dpblN0YXRlID0gJ2xvZ2dlZC1vdXQnO1xuICByZWFkb25seSB1c2VyID0gbnVsbDtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class PendingAuthState {
2
+ constructor() {
3
+ this.loginState = 'pending';
4
+ this.user = null;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1hdXRoLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9hdXRoL21vZGVscy9wZW5kaW5nLWF1dGgtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNXLGVBQVUsR0FBZSxTQUFTLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQXV0aFN0YXRlIH0gZnJvbSAnLi9iYXNlLWF1dGgtc3RhdGUnO1xuaW1wb3J0IHsgTG9naW5TdGF0ZSB9IGZyb20gJy4vbG9naW4tc3RhdGUudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBQZW5kaW5nQXV0aFN0YXRlIGltcGxlbWVudHMgQmFzZUF1dGhTdGF0ZTx1bmtub3duPiB7XG4gIHJlYWRvbmx5IGxvZ2luU3RhdGU6IExvZ2luU3RhdGUgPSAncGVuZGluZyc7XG4gIHJlYWRvbmx5IHVzZXIgPSBudWxsO1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { map } from 'rxjs';
2
+ import { InternalHttpBaseDao } from './internal/internal-http-base-dao';
3
+ export class ConvertedHttpBaseDao extends InternalHttpBaseDao {
4
+ constructor(routeUrl, converter, options = {}) {
5
+ super(routeUrl, options);
6
+ this.converter = converter;
7
+ }
8
+ list(customOptions = {}) {
9
+ return this.listInternal(customOptions).pipe(this.mapServerInterfaceListToModelList);
10
+ }
11
+ create(entry, customOptions = {}) {
12
+ const createData = this.converter.toJson(entry);
13
+ return this.createInternal(createData, customOptions).pipe(this.mapServerInterfaceToModel);
14
+ }
15
+ update(id, entry, customOptions = {}) {
16
+ const updateData = this.converter.toJson(entry);
17
+ return this.updateInternal(id, updateData, customOptions).pipe(this.mapServerInterfaceToModel);
18
+ }
19
+ delete(id, customOptions = {}) {
20
+ return this.deleteInternal(id, customOptions).pipe(this.mapServerInterfaceToModel);
21
+ }
22
+ read(id, customOptions = {}) {
23
+ return this.readInternal(id, customOptions).pipe(this.mapServerInterfaceToModel);
24
+ }
25
+ mapServerInterfaceListToModelList(source$) {
26
+ return source$.pipe(map((list) => {
27
+ if (!list?.length) {
28
+ return [];
29
+ }
30
+ return list.map((elem) => this.converter.fromJson(elem));
31
+ }));
32
+ }
33
+ mapServerInterfaceToModel(source$) {
34
+ return source$.pipe(map((element) => this.converter.fromJson(element)));
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVkLWh0dHAtYmFzZS1kYW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2Rhby9jb252ZXJ0ZWQtaHR0cC1iYXNlLWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3hFLE1BQU0sT0FBZ0Isb0JBQTZCLFNBQVEsbUJBQXVCO0lBRWhGLFlBQXNCLFFBQWdCLEVBQUUsU0FBNEIsRUFBRSxVQUE4QixFQUFFO1FBQ3BHLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBb0MsRUFBRTtRQUN6QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBUyxFQUFFLGdCQUFvQyxFQUFFO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBUyxFQUFFLEtBQWtCLEVBQUUsZ0JBQW9DLEVBQUU7UUFDMUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBUyxFQUFFLGdCQUFvQyxFQUFFO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUMsRUFBUyxFQUFFLGdCQUFvQyxFQUFFO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTyxpQ0FBaUMsQ0FBQyxPQUF5QjtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxPQUF1QjtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQmFzZURhb09wdGlvbnMgfSBmcm9tICcuL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5pbXBvcnQgeyBEYW9JZCB9IGZyb20gJy4vZGFvLWlkJztcbmltcG9ydCB7IEludGVybmFsSHR0cEJhc2VEYW8gfSBmcm9tICcuL2ludGVybmFsL2ludGVybmFsLWh0dHAtYmFzZS1kYW8nO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSAnLi9jb252ZXJ0ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udmVydGVkSHR0cEJhc2VEYW88VEksIFRNPiBleHRlbmRzIEludGVybmFsSHR0cEJhc2VEYW88VEk+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnZlcnRlcjogQ29udmVydGVyPFRJLCBUTT47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihyb3V0ZVVybDogc3RyaW5nLCBjb252ZXJ0ZXI6IENvbnZlcnRlcjxUSSwgVE0+LCBvcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHJvdXRlVXJsLCBvcHRpb25zKTtcbiAgICB0aGlzLmNvbnZlcnRlciA9IGNvbnZlcnRlcjtcbiAgfVxuXG4gIGxpc3QoY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFRNW10+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0SW50ZXJuYWwoY3VzdG9tT3B0aW9ucykucGlwZSh0aGlzLm1hcFNlcnZlckludGVyZmFjZUxpc3RUb01vZGVsTGlzdCk7XG4gIH1cblxuICBjcmVhdGUoZW50cnk6IFRNLCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VE0+IHtcbiAgICBjb25zdCBjcmVhdGVEYXRhID0gdGhpcy5jb252ZXJ0ZXIudG9Kc29uKGVudHJ5KTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVJbnRlcm5hbChjcmVhdGVEYXRhLCBjdXN0b21PcHRpb25zKS5waXBlKHRoaXMubWFwU2VydmVySW50ZXJmYWNlVG9Nb2RlbCk7XG4gIH1cblxuICB1cGRhdGUoaWQ6IERhb0lkLCBlbnRyeTogUGFydGlhbDxUTT4sIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUTT4ge1xuICAgIGNvbnN0IHVwZGF0ZURhdGEgPSB0aGlzLmNvbnZlcnRlci50b0pzb24oZW50cnkpO1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZUludGVybmFsKGlkLCB1cGRhdGVEYXRhLCBjdXN0b21PcHRpb25zKS5waXBlKHRoaXMubWFwU2VydmVySW50ZXJmYWNlVG9Nb2RlbCk7XG4gIH1cblxuICBkZWxldGUoaWQ6IERhb0lkLCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VE0+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVJbnRlcm5hbChpZCwgY3VzdG9tT3B0aW9ucykucGlwZSh0aGlzLm1hcFNlcnZlckludGVyZmFjZVRvTW9kZWwpO1xuICB9XG5cbiAgcmVhZChpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUTT4ge1xuICAgIHJldHVybiB0aGlzLnJlYWRJbnRlcm5hbChpZCwgY3VzdG9tT3B0aW9ucykucGlwZSh0aGlzLm1hcFNlcnZlckludGVyZmFjZVRvTW9kZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXJ2ZXJJbnRlcmZhY2VMaXN0VG9Nb2RlbExpc3Qoc291cmNlJDogT2JzZXJ2YWJsZTxUSVtdPik6IE9ic2VydmFibGU8VE1bXT4ge1xuICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICBtYXAoKGxpc3QpID0+IHtcbiAgICAgICAgaWYgKCFsaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGVsZW0pID0+IHRoaXMuY29udmVydGVyLmZyb21Kc29uKGVsZW0pKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNlcnZlckludGVyZmFjZVRvTW9kZWwoc291cmNlJDogT2JzZXJ2YWJsZTxUST4pOiBPYnNlcnZhYmxlPFRNPiB7XG4gICAgcmV0dXJuIHNvdXJjZSQucGlwZShtYXAoKGVsZW1lbnQpID0+IHRoaXMuY29udmVydGVyLmZyb21Kc29uKGVsZW1lbnQpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { firstValueFrom, map } from 'rxjs';
2
+ import { InternalHttpBaseDao } from './internal/internal-http-base-dao';
3
+ export class ConvertedPromiseHttpBaseDao extends InternalHttpBaseDao {
4
+ constructor(routeUrl, converter, options = {}) {
5
+ super(routeUrl, options);
6
+ this.converter = converter;
7
+ }
8
+ list(customOptions = {}) {
9
+ return firstValueFrom(this.listInternal(customOptions).pipe(this.mapServerInterfaceListToModelList.bind(this)));
10
+ }
11
+ create(entry, customOptions = {}) {
12
+ const createData = this.converter.toJson(entry);
13
+ return firstValueFrom(this.createInternal(createData, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
14
+ }
15
+ update(id, entry, customOptions = {}) {
16
+ const updateData = this.converter.toJson(entry);
17
+ return firstValueFrom(this.updateInternal(id, updateData, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
18
+ }
19
+ delete(id, customOptions = {}) {
20
+ return firstValueFrom(this.deleteInternal(id, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
21
+ }
22
+ read(id, customOptions = {}) {
23
+ return firstValueFrom(this.readInternal(id, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
24
+ }
25
+ mapServerInterfaceListToModelList(source$) {
26
+ return source$.pipe(map((list) => {
27
+ if (!list?.length) {
28
+ return [];
29
+ }
30
+ return list.map((elem) => this.converter.fromJson(elem));
31
+ }));
32
+ }
33
+ mapServerInterfaceToModel(source$) {
34
+ return source$.pipe(map((element) => this.converter.fromJson(element)));
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVkLXByb21pc2UtaHR0cC1iYXNlLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvZGFvL2NvbnZlcnRlZC1wcm9taXNlLWh0dHAtYmFzZS1kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHeEUsTUFBTSxPQUFnQiwyQkFBb0MsU0FBUSxtQkFBdUI7SUFFdkYsWUFBc0IsUUFBZ0IsRUFBRSxTQUE0QixFQUFFLFVBQThCLEVBQUU7UUFDcEcsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFvQyxFQUFFO1FBQ3pDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBUyxFQUFFLGdCQUFvQyxFQUFFO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE9BQU8sY0FBYyxDQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMvRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFTLEVBQUUsS0FBa0IsRUFBRSxnQkFBb0MsRUFBRTtRQUMxRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ25HLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVMsRUFBRSxnQkFBb0MsRUFBRTtRQUN0RCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFTLEVBQUUsZ0JBQW9DLEVBQUU7UUFDcEQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFTyxpQ0FBaUMsQ0FBQyxPQUF5QjtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxPQUF1QjtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cEJhc2VEYW9PcHRpb25zIH0gZnJvbSAnLi9odHRwLWJhc2UtZGFvLW9wdGlvbnMnO1xuaW1wb3J0IHsgRGFvSWQgfSBmcm9tICcuL2Rhby1pZCc7XG5pbXBvcnQgeyBJbnRlcm5hbEh0dHBCYXNlRGFvIH0gZnJvbSAnLi9pbnRlcm5hbC9pbnRlcm5hbC1odHRwLWJhc2UtZGFvJztcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gJy4vY29udmVydGVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnZlcnRlZFByb21pc2VIdHRwQmFzZURhbzxUSSwgVE0+IGV4dGVuZHMgSW50ZXJuYWxIdHRwQmFzZURhbzxUST4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udmVydGVyOiBDb252ZXJ0ZXI8VEksIFRNPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJvdXRlVXJsOiBzdHJpbmcsIGNvbnZlcnRlcjogQ29udmVydGVyPFRJLCBUTT4sIG9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocm91dGVVcmwsIG9wdGlvbnMpO1xuICAgIHRoaXMuY29udmVydGVyID0gY29udmVydGVyO1xuICB9XG5cbiAgbGlzdChjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IFByb21pc2U8VE1bXT4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmxpc3RJbnRlcm5hbChjdXN0b21PcHRpb25zKS5waXBlKHRoaXMubWFwU2VydmVySW50ZXJmYWNlTGlzdFRvTW9kZWxMaXN0LmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIGNyZWF0ZShlbnRyeTogVE0sIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUTT4ge1xuICAgIGNvbnN0IGNyZWF0ZURhdGEgPSB0aGlzLmNvbnZlcnRlci50b0pzb24oZW50cnkpO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuY3JlYXRlSW50ZXJuYWwoY3JlYXRlRGF0YSwgY3VzdG9tT3B0aW9ucykucGlwZSh0aGlzLm1hcFNlcnZlckludGVyZmFjZVRvTW9kZWwuYmluZCh0aGlzKSksXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZShpZDogRGFvSWQsIGVudHJ5OiBQYXJ0aWFsPFRNPiwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBQcm9taXNlPFRNPiB7XG4gICAgY29uc3QgdXBkYXRlRGF0YSA9IHRoaXMuY29udmVydGVyLnRvSnNvbihlbnRyeSk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy51cGRhdGVJbnRlcm5hbChpZCwgdXBkYXRlRGF0YSwgY3VzdG9tT3B0aW9ucykucGlwZSh0aGlzLm1hcFNlcnZlckludGVyZmFjZVRvTW9kZWwuYmluZCh0aGlzKSksXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUTT4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmRlbGV0ZUludGVybmFsKGlkLCBjdXN0b21PcHRpb25zKS5waXBlKHRoaXMubWFwU2VydmVySW50ZXJmYWNlVG9Nb2RlbC5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICByZWFkKGlkOiBEYW9JZCwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBQcm9taXNlPFRNPiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMucmVhZEludGVybmFsKGlkLCBjdXN0b21PcHRpb25zKS5waXBlKHRoaXMubWFwU2VydmVySW50ZXJmYWNlVG9Nb2RlbC5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNlcnZlckludGVyZmFjZUxpc3RUb01vZGVsTGlzdChzb3VyY2UkOiBPYnNlcnZhYmxlPFRJW10+KTogT2JzZXJ2YWJsZTxUTVtdPiB7XG4gICAgcmV0dXJuIHNvdXJjZSQucGlwZShcbiAgICAgIG1hcCgobGlzdCkgPT4ge1xuICAgICAgICBpZiAoIWxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0Lm1hcCgoZWxlbSkgPT4gdGhpcy5jb252ZXJ0ZXIuZnJvbUpzb24oZWxlbSkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2VydmVySW50ZXJmYWNlVG9Nb2RlbChzb3VyY2UkOiBPYnNlcnZhYmxlPFRJPik6IE9ic2VydmFibGU8VE0+IHtcbiAgICByZXR1cm4gc291cmNlJC5waXBlKG1hcCgoZWxlbWVudCkgPT4gdGhpcy5jb252ZXJ0ZXIuZnJvbUpzb24oZWxlbWVudCkpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export class Converter {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9kYW8vY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsU0FBUztDQUc5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb252ZXJ0ZXI8VEksIFRNPiB7XG4gIGFic3RyYWN0IGZyb21Kc29uKHJlc3BvbnNlOiBUSSk6IFRNO1xuICBhYnN0cmFjdCB0b0pzb24obW9kZWw6IFBhcnRpYWw8VE0+KTogUGFydGlhbDxUST47XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFvLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9kYW8vZGFvLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEYW9JZCA9IHN0cmluZyB8IG51bWJlcjtcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export const DEFAULT_OPTIONS = {
2
+ withCredentials: true,
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1iYXNlLWRhby1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9kYW8vaHR0cC1iYXNlLWRhby1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBdUI7SUFDakQsZUFBZSxFQUFFLElBQUk7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBCYXNlRGFvT3B0aW9ucyB7XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BUSU9OUzogSHR0cEJhc2VEYW9PcHRpb25zID0ge1xuICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG59O1xuIl19
@@ -0,0 +1,22 @@
1
+ import { InternalHttpBaseDao } from './internal/internal-http-base-dao';
2
+ export class HttpBaseDao extends InternalHttpBaseDao {
3
+ constructor(routeUrl, options = {}) {
4
+ super(routeUrl, options);
5
+ }
6
+ list(customOptions = {}) {
7
+ return this.listInternal(customOptions);
8
+ }
9
+ create(entry, customOptions = {}) {
10
+ return this.createInternal(entry, customOptions);
11
+ }
12
+ update(id, entry, customOptions = {}) {
13
+ return this.updateInternal(id, entry, customOptions);
14
+ }
15
+ delete(id, customOptions = {}) {
16
+ return this.deleteInternal(id, customOptions);
17
+ }
18
+ read(id, customOptions = {}) {
19
+ return this.readInternal(id, customOptions);
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1iYXNlLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvZGFvL2h0dHAtYmFzZS1kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsTUFBTSxPQUFnQixXQUFnQixTQUFRLG1CQUF1QjtJQUNuRSxZQUFzQixRQUFnQixFQUFFLFVBQThCLEVBQUU7UUFDdEUsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFvQyxFQUFFO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWtCLEVBQUUsZ0JBQW9DLEVBQUU7UUFDL0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVMsRUFBRSxLQUFrQixFQUFFLGdCQUFvQyxFQUFFO1FBQzFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsRUFBUyxFQUFFLGdCQUFvQyxFQUFFO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFTLEVBQUUsZ0JBQW9DLEVBQUU7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQmFzZURhb09wdGlvbnMgfSBmcm9tICcuL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5pbXBvcnQgeyBEYW9JZCB9IGZyb20gJy4vZGFvLWlkJztcbmltcG9ydCB7IEludGVybmFsSHR0cEJhc2VEYW8gfSBmcm9tICcuL2ludGVybmFsL2ludGVybmFsLWh0dHAtYmFzZS1kYW8nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSHR0cEJhc2VEYW88VEk+IGV4dGVuZHMgSW50ZXJuYWxIdHRwQmFzZURhbzxUST4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iocm91dGVVcmw6IHN0cmluZywgb3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihyb3V0ZVVybCwgb3B0aW9ucyk7XG4gIH1cblxuICBsaXN0KGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUSVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEludGVybmFsKGN1c3RvbU9wdGlvbnMpO1xuICB9XG5cbiAgY3JlYXRlKGVudHJ5OiBQYXJ0aWFsPFRJPiwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFRJPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJuYWwoZW50cnksIGN1c3RvbU9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlKGlkOiBEYW9JZCwgZW50cnk6IFBhcnRpYWw8VEk+LCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VEk+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVJbnRlcm5hbChpZCwgZW50cnksIGN1c3RvbU9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBEYW9JZCwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFRJPiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlSW50ZXJuYWwoaWQsIGN1c3RvbU9wdGlvbnMpO1xuICB9XG5cbiAgcmVhZChpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUST4ge1xuICAgIHJldHVybiB0aGlzLnJlYWRJbnRlcm5hbChpZCwgY3VzdG9tT3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export { DEFAULT_OPTIONS } from './http-base-dao-options';
2
+ export { HttpBaseDao } from './http-base-dao';
3
+ export { PromiseHttpBaseDao } from './promise-http-base-dao';
4
+ export { ConvertedHttpBaseDao } from './converted-http-base-dao';
5
+ export { ConvertedPromiseHttpBaseDao } from './converted-promise-http-base-dao';
6
+ export { Converter } from './converter';
7
+ export * from './interfaces';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2Rhby9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgREVGQVVMVF9PUFRJT05TLCBIdHRwQmFzZURhb09wdGlvbnMgfSBmcm9tICcuL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5leHBvcnQgeyBIdHRwQmFzZURhbyB9IGZyb20gJy4vaHR0cC1iYXNlLWRhbyc7XG5leHBvcnQgeyBQcm9taXNlSHR0cEJhc2VEYW8gfSBmcm9tICcuL3Byb21pc2UtaHR0cC1iYXNlLWRhbyc7XG5leHBvcnQgeyBDb252ZXJ0ZWRIdHRwQmFzZURhbyB9IGZyb20gJy4vY29udmVydGVkLWh0dHAtYmFzZS1kYW8nO1xuZXhwb3J0IHsgQ29udmVydGVkUHJvbWlzZUh0dHBCYXNlRGFvIH0gZnJvbSAnLi9jb252ZXJ0ZWQtcHJvbWlzZS1odHRwLWJhc2UtZGFvJztcbmV4cG9ydCB7IENvbnZlcnRlciB9IGZyb20gJy4vY29udmVydGVyJztcbmV4cG9ydCB7IERhb0lkIH0gZnJvbSAnLi9kYW8taWQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9kYW8vaW50ZXJmYWNlcy9pZGVudGlmaWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhb0lkIH0gZnJvbSAnLi4vZGFvLWlkJztcblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGlmaWFibGU8VCBleHRlbmRzIERhb0lkID0gRGFvSWQ+IHtcbiAgaWQ6IFQ7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2Rhby9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBJZGVudGlmaWFibGUgfSBmcm9tICcuL2lkZW50aWZpYWJsZSc7XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { inject } from '@angular/core';
3
+ import { DEFAULT_OPTIONS } from '../http-base-dao-options';
4
+ export class InternalHttpBaseDao {
5
+ constructor(routeUrl, options = {}) {
6
+ this.http = inject(HttpClient);
7
+ this.routeUrl = routeUrl;
8
+ this.options = {
9
+ ...DEFAULT_OPTIONS,
10
+ ...options
11
+ };
12
+ }
13
+ listInternal(customOptions = {}) {
14
+ return this.http.get(this.routeUrl, this.mergeCustomOptions(customOptions));
15
+ }
16
+ createInternal(data, customOptions = {}) {
17
+ if (!data) {
18
+ throw new Error('Entry must exist to be created');
19
+ }
20
+ return this.http.post(this.routeUrl, data, this.mergeCustomOptions(customOptions));
21
+ }
22
+ updateInternal(id, data, customOptions = {}) {
23
+ if (!id) {
24
+ throw new Error('Entry must exist to be updated');
25
+ }
26
+ return this.http.put(this.routeUrl + '/' + id, data, this.mergeCustomOptions(customOptions));
27
+ }
28
+ deleteInternal(id, customOptions = {}) {
29
+ if (!id) {
30
+ throw new Error('Entry must exist to be deleted');
31
+ }
32
+ return this.http.delete(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
33
+ }
34
+ readInternal(id, customOptions = {}) {
35
+ return this.http.get(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
36
+ }
37
+ mergeCustomOptions(customOptions) {
38
+ return {
39
+ ...this.options,
40
+ ...customOptions
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtaHR0cC1iYXNlLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvZGFvL2ludGVybmFsL2ludGVybmFsLWh0dHAtYmFzZS1kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQztBQUcvRSxNQUFNLE9BQWdCLG1CQUFtQjtJQUt2QyxZQUFzQixRQUFnQixFQUFFLFVBQThCLEVBQUU7UUFKckQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUszQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxlQUFlO1lBQ2xCLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDO0lBRVMsWUFBWSxDQUFDLGdCQUFvQyxFQUFFO1FBQzNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRVMsY0FBYyxDQUFDLElBQVksRUFBRSxnQkFBb0MsRUFBRTtRQUMzRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRVMsY0FBYyxDQUFDLEVBQVMsRUFBRSxJQUFZLEVBQUUsZ0JBQW9DLEVBQUU7UUFDdEYsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUssSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRVMsY0FBYyxDQUFDLEVBQVMsRUFBRSxnQkFBb0MsRUFBRTtRQUN4RSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVTLFlBQVksQ0FBQyxFQUFTLEVBQUUsZ0JBQW9DLEVBQUU7UUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGFBQWlDO1FBQzFELE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2YsR0FBRyxhQUFhO1NBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX09QVElPTlMsIEh0dHBCYXNlRGFvT3B0aW9ucyB9IGZyb20gJy4uL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5pbXBvcnQgeyBEYW9JZCB9IGZyb20gJy4uL2Rhby1pZCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnRlcm5hbEh0dHBCYXNlRGFvPFRJPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVVcmw6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iocm91dGVVcmw6IHN0cmluZywgb3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnJvdXRlVXJsID0gcm91dGVVcmw7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgbGlzdEludGVybmFsKGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUSVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VElbXT4odGhpcy5yb3V0ZVVybCwgdGhpcy5tZXJnZUN1c3RvbU9wdGlvbnMoY3VzdG9tT3B0aW9ucykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUludGVybmFsKGRhdGE6IG9iamVjdCwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFRJPiB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudHJ5IG11c3QgZXhpc3QgdG8gYmUgY3JlYXRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUST4odGhpcy5yb3V0ZVVybCwgZGF0YSwgdGhpcy5tZXJnZUN1c3RvbU9wdGlvbnMoY3VzdG9tT3B0aW9ucykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsKGlkOiBEYW9JZCwgZGF0YTogb2JqZWN0LCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VEk+IHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudHJ5IG11c3QgZXhpc3QgdG8gYmUgdXBkYXRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFRJPih0aGlzLnJvdXRlVXJsICsgJy8nICsgaWQsIGRhdGEsIHRoaXMubWVyZ2VDdXN0b21PcHRpb25zKGN1c3RvbU9wdGlvbnMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVJbnRlcm5hbChpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUST4ge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50cnkgbXVzdCBleGlzdCB0byBiZSBkZWxldGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFRJPih0aGlzLnJvdXRlVXJsICsgJy8nICsgaWQsIHRoaXMubWVyZ2VDdXN0b21PcHRpb25zKGN1c3RvbU9wdGlvbnMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkSW50ZXJuYWwoaWQ6IERhb0lkLCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VEk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUST4odGhpcy5yb3V0ZVVybCArICcvJyArIGlkLCB0aGlzLm1lcmdlQ3VzdG9tT3B0aW9ucyhjdXN0b21PcHRpb25zKSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tT3B0aW9ucyhjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMpOiBIdHRwQmFzZURhb09wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5jdXN0b21PcHRpb25zXG4gICAgfTtcbiAgfVxufVxuIl19