@yuuvis/client-core 0.6.5

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 (153) hide show
  1. package/README.md +111 -0
  2. package/esm2022/index.mjs +65 -0
  3. package/esm2022/lib/client-core.module.mjs +117 -0
  4. package/esm2022/lib/client-core.shared.module.mjs +18 -0
  5. package/esm2022/lib/common/pipes/filesize.pipe.mjs +37 -0
  6. package/esm2022/lib/common/pipes/index.mjs +6 -0
  7. package/esm2022/lib/common/pipes/keys.pipe.mjs +17 -0
  8. package/esm2022/lib/common/pipes/locale-date.pipe.mjs +45 -0
  9. package/esm2022/lib/common/pipes/locale-number.pipe.mjs +115 -0
  10. package/esm2022/lib/common/pipes/safe-html.pipe.mjs +44 -0
  11. package/esm2022/lib/common/services/native-notifications.interface.mjs +2 -0
  12. package/esm2022/lib/common/services/native-notifications.mjs +40 -0
  13. package/esm2022/lib/model/dms-object.interface.mjs +2 -0
  14. package/esm2022/lib/model/dms-object.model.mjs +79 -0
  15. package/esm2022/lib/model/object-flavor.interface.mjs +2 -0
  16. package/esm2022/lib/model/range-value.interface.mjs +2 -0
  17. package/esm2022/lib/model/yuv-error.model.mjs +37 -0
  18. package/esm2022/lib/model/yuv-user.model.mjs +38 -0
  19. package/esm2022/lib/service/audit/audit.interface.mjs +2 -0
  20. package/esm2022/lib/service/audit/audit.service.mjs +135 -0
  21. package/esm2022/lib/service/auth/auth.interceptor.mjs +50 -0
  22. package/esm2022/lib/service/auth/auth.interface.mjs +7 -0
  23. package/esm2022/lib/service/auth/auth.service.mjs +130 -0
  24. package/esm2022/lib/service/auth/oidc.service.mjs +81 -0
  25. package/esm2022/lib/service/backend/api.enum.mjs +11 -0
  26. package/esm2022/lib/service/backend/backend.interface.mjs +2 -0
  27. package/esm2022/lib/service/backend/backend.service.mjs +206 -0
  28. package/esm2022/lib/service/bpm/bpm.interface.mjs +8 -0
  29. package/esm2022/lib/service/bpm/bpm.service.mjs +51 -0
  30. package/esm2022/lib/service/cache/app-cache.service.mjs +51 -0
  31. package/esm2022/lib/service/catalog/catalog.interface.mjs +2 -0
  32. package/esm2022/lib/service/catalog/catalog.service.mjs +13 -0
  33. package/esm2022/lib/service/clipboard/clipboard.interface.mjs +2 -0
  34. package/esm2022/lib/service/clipboard/clipboard.service.mjs +90 -0
  35. package/esm2022/lib/service/config/config.interface.mjs +6 -0
  36. package/esm2022/lib/service/config/config.service.mjs +115 -0
  37. package/esm2022/lib/service/config/core-config.mjs +20 -0
  38. package/esm2022/lib/service/config/core-config.tokens.mjs +9 -0
  39. package/esm2022/lib/service/connection/connection.service.mjs +36 -0
  40. package/esm2022/lib/service/connection/offline.interceptor.mjs +28 -0
  41. package/esm2022/lib/service/core-init/core-init.service.mjs +29 -0
  42. package/esm2022/lib/service/core-init/missing-translation-handler.mjs +10 -0
  43. package/esm2022/lib/service/core-init/translate-json-loader.mjs +117 -0
  44. package/esm2022/lib/service/device/device.interface.mjs +6 -0
  45. package/esm2022/lib/service/device/device.service.mjs +144 -0
  46. package/esm2022/lib/service/dms/dms.service.interface.mjs +2 -0
  47. package/esm2022/lib/service/dms/dms.service.mjs +440 -0
  48. package/esm2022/lib/service/event/event.interface.mjs +2 -0
  49. package/esm2022/lib/service/event/event.service.mjs +38 -0
  50. package/esm2022/lib/service/event/events.mjs +14 -0
  51. package/esm2022/lib/service/idm/idm.interface.mjs +2 -0
  52. package/esm2022/lib/service/idm/idm.service.mjs +34 -0
  53. package/esm2022/lib/service/logger/logger-console.service.mjs +73 -0
  54. package/esm2022/lib/service/logger/logger.interface.mjs +2 -0
  55. package/esm2022/lib/service/logger/logger.mjs +27 -0
  56. package/esm2022/lib/service/notification/notification.service.mjs +131 -0
  57. package/esm2022/lib/service/object-config/object-config.interface.mjs +2 -0
  58. package/esm2022/lib/service/object-config/object-config.service.mjs +229 -0
  59. package/esm2022/lib/service/pending-changes/pending-changes-component.interface.mjs +5 -0
  60. package/esm2022/lib/service/pending-changes/pending-changes-guard.service.mjs +25 -0
  61. package/esm2022/lib/service/pending-changes/pending-changes.service.mjs +123 -0
  62. package/esm2022/lib/service/prediction/prediction.interface.mjs +2 -0
  63. package/esm2022/lib/service/prediction/prediction.service.mjs +60 -0
  64. package/esm2022/lib/service/search/search.service.interface.mjs +39 -0
  65. package/esm2022/lib/service/search/search.service.mjs +178 -0
  66. package/esm2022/lib/service/session-storage/session-storage.service.mjs +50 -0
  67. package/esm2022/lib/service/system/object-form.interface.mjs +2 -0
  68. package/esm2022/lib/service/system/system.enum.mjs +179 -0
  69. package/esm2022/lib/service/system/system.interface.mjs +2 -0
  70. package/esm2022/lib/service/system/system.service.mjs +597 -0
  71. package/esm2022/lib/service/upload/upload.interface.mjs +2 -0
  72. package/esm2022/lib/service/upload/upload.service.mjs +228 -0
  73. package/esm2022/lib/service/user/user.service.mjs +211 -0
  74. package/esm2022/lib/util/utils.helper.enum.mjs +15 -0
  75. package/esm2022/lib/util/utils.mjs +373 -0
  76. package/esm2022/yuuvis-client-core.mjs +5 -0
  77. package/fesm2022/yuuvis-client-core.mjs +4775 -0
  78. package/fesm2022/yuuvis-client-core.mjs.map +1 -0
  79. package/index.d.ts +61 -0
  80. package/lib/client-core.module.d.ts +20 -0
  81. package/lib/client-core.shared.module.d.ts +10 -0
  82. package/lib/common/pipes/filesize.pipe.d.ts +18 -0
  83. package/lib/common/pipes/index.d.ts +5 -0
  84. package/lib/common/pipes/keys.pipe.d.ts +10 -0
  85. package/lib/common/pipes/locale-date.pipe.d.ts +12 -0
  86. package/lib/common/pipes/locale-number.pipe.d.ts +47 -0
  87. package/lib/common/pipes/safe-html.pipe.d.ts +28 -0
  88. package/lib/common/services/native-notifications.d.ts +8 -0
  89. package/lib/common/services/native-notifications.interface.d.ts +5 -0
  90. package/lib/model/dms-object.interface.d.ts +16 -0
  91. package/lib/model/dms-object.model.d.ts +26 -0
  92. package/lib/model/object-flavor.interface.d.ts +30 -0
  93. package/lib/model/range-value.interface.d.ts +9 -0
  94. package/lib/model/yuv-error.model.d.ts +18 -0
  95. package/lib/model/yuv-user.model.d.ts +44 -0
  96. package/lib/service/audit/audit.interface.d.ts +47 -0
  97. package/lib/service/audit/audit.service.d.ts +35 -0
  98. package/lib/service/auth/auth.interceptor.d.ts +12 -0
  99. package/lib/service/auth/auth.interface.d.ts +34 -0
  100. package/lib/service/auth/auth.service.d.ts +50 -0
  101. package/lib/service/auth/oidc.service.d.ts +16 -0
  102. package/lib/service/backend/api.enum.d.ts +7 -0
  103. package/lib/service/backend/backend.interface.d.ts +29 -0
  104. package/lib/service/backend/backend.service.d.ts +118 -0
  105. package/lib/service/bpm/bpm.interface.d.ts +86 -0
  106. package/lib/service/bpm/bpm.service.d.ts +19 -0
  107. package/lib/service/cache/app-cache.service.d.ts +18 -0
  108. package/lib/service/catalog/catalog.interface.d.ts +12 -0
  109. package/lib/service/catalog/catalog.service.d.ts +5 -0
  110. package/lib/service/clipboard/clipboard.interface.d.ts +11 -0
  111. package/lib/service/clipboard/clipboard.service.d.ts +23 -0
  112. package/lib/service/config/config.interface.d.ts +34 -0
  113. package/lib/service/config/config.service.d.ts +45 -0
  114. package/lib/service/config/core-config.d.ts +14 -0
  115. package/lib/service/config/core-config.tokens.d.ts +7 -0
  116. package/lib/service/connection/connection.service.d.ts +25 -0
  117. package/lib/service/connection/offline.interceptor.d.ts +15 -0
  118. package/lib/service/core-init/core-init.service.d.ts +11 -0
  119. package/lib/service/core-init/missing-translation-handler.d.ts +8 -0
  120. package/lib/service/core-init/translate-json-loader.d.ts +20 -0
  121. package/lib/service/device/device.interface.d.ts +15 -0
  122. package/lib/service/device/device.service.d.ts +54 -0
  123. package/lib/service/dms/dms.service.d.ts +153 -0
  124. package/lib/service/dms/dms.service.interface.d.ts +59 -0
  125. package/lib/service/event/event.interface.d.ts +13 -0
  126. package/lib/service/event/event.service.d.ts +23 -0
  127. package/lib/service/event/events.d.ts +12 -0
  128. package/lib/service/idm/idm.interface.d.ts +5 -0
  129. package/lib/service/idm/idm.service.d.ts +9 -0
  130. package/lib/service/logger/logger-console.service.d.ts +20 -0
  131. package/lib/service/logger/logger.d.ts +17 -0
  132. package/lib/service/logger/logger.interface.d.ts +10 -0
  133. package/lib/service/notification/notification.service.d.ts +71 -0
  134. package/lib/service/object-config/object-config.interface.d.ts +62 -0
  135. package/lib/service/object-config/object-config.service.d.ts +38 -0
  136. package/lib/service/pending-changes/pending-changes-component.interface.d.ts +6 -0
  137. package/lib/service/pending-changes/pending-changes-guard.service.d.ts +14 -0
  138. package/lib/service/pending-changes/pending-changes.service.d.ts +57 -0
  139. package/lib/service/prediction/prediction.interface.d.ts +18 -0
  140. package/lib/service/prediction/prediction.service.d.ts +15 -0
  141. package/lib/service/search/search.service.d.ts +46 -0
  142. package/lib/service/search/search.service.interface.d.ts +119 -0
  143. package/lib/service/session-storage/session-storage.service.d.ts +15 -0
  144. package/lib/service/system/object-form.interface.d.ts +46 -0
  145. package/lib/service/system/system.enum.d.ts +141 -0
  146. package/lib/service/system/system.interface.d.ts +146 -0
  147. package/lib/service/system/system.service.d.ts +168 -0
  148. package/lib/service/upload/upload.interface.d.ts +55 -0
  149. package/lib/service/upload/upload.service.d.ts +34 -0
  150. package/lib/service/user/user.service.d.ts +69 -0
  151. package/lib/util/utils.d.ts +118 -0
  152. package/lib/util/utils.helper.enum.d.ts +13 -0
  153. package/package.json +33 -0
@@ -0,0 +1,130 @@
1
+ import { inject, Inject, Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { map, switchMap, tap } from 'rxjs/operators';
4
+ import { YuvUser } from '../../model/yuv-user.model';
5
+ import { Utils } from '../../util/utils';
6
+ import { BackendService } from '../backend/backend.service';
7
+ import { AppCacheService } from '../cache/app-cache.service';
8
+ import { CoreConfig } from '../config/core-config';
9
+ import { CORE_CONFIG } from '../config/core-config.tokens';
10
+ import { EventService } from '../event/event.service';
11
+ import { YuvEventType } from '../event/events';
12
+ import { SystemService } from '../system/system.service';
13
+ import { UserService } from '../user/user.service';
14
+ import { ObjectConfigService } from '../object-config/object-config.service';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../config/core-config";
17
+ /**
18
+ * Service handling authentication related issues.
19
+ */
20
+ export class AuthService {
21
+ #eventService;
22
+ #userService;
23
+ #objectConfigService;
24
+ #appCache;
25
+ #systemService;
26
+ #backend;
27
+ #INITAL_REQUEST_STORAGE_KEY;
28
+ #authenticated;
29
+ #authSource;
30
+ #authData;
31
+ constructor(coreConfig) {
32
+ this.coreConfig = coreConfig;
33
+ this.#eventService = inject(EventService);
34
+ this.#userService = inject(UserService);
35
+ this.#objectConfigService = inject(ObjectConfigService);
36
+ this.#appCache = inject(AppCacheService);
37
+ this.#systemService = inject(SystemService);
38
+ this.#backend = inject(BackendService);
39
+ this.#INITAL_REQUEST_STORAGE_KEY = 'yuv.core.auth.initialrequest';
40
+ this.USER_FETCH_URI = '/idm/whoami';
41
+ this.#authenticated = false;
42
+ this.#authSource = new BehaviorSubject(false);
43
+ this.authenticated$ = this.#authSource.asObservable();
44
+ }
45
+ isLoggedIn() {
46
+ return this.#authenticated;
47
+ }
48
+ /**
49
+ * Called while app/core is initialized (APP_INITIALIZER)
50
+ * @ignore
51
+ */
52
+ initUser() {
53
+ return this.fetchUser();
54
+ }
55
+ /**
56
+ * Get the current tenant or the previous one persisted locally
57
+ */
58
+ getTenant() {
59
+ return this.#authData?.tenant;
60
+ }
61
+ /**
62
+ * Fetch information about the user currently logged in
63
+ */
64
+ fetchUser() {
65
+ return this.#backend.get(this.USER_FETCH_URI).pipe(tap(() => {
66
+ this.#authenticated = true;
67
+ this.#authSource.next(this.#authenticated);
68
+ }), switchMap((userJson) => this.#initApp(userJson)));
69
+ }
70
+ /**
71
+ * Logs out the current user.
72
+ */
73
+ logout() {
74
+ this.#authenticated = false;
75
+ this.#authSource.next(this.#authenticated);
76
+ this.#eventService.trigger(YuvEventType.LOGOUT);
77
+ }
78
+ // called on core init
79
+ setInitialRequestUri() {
80
+ const ignore = ['/', '/index.html'];
81
+ let uri = `${location.pathname}${location.search}`.replace(Utils.getBaseHref(), '');
82
+ uri = !uri.startsWith('/') ? `/${uri}` : uri;
83
+ if (!ignore.includes(uri)) {
84
+ this.#appCache
85
+ .setItem(this.#INITAL_REQUEST_STORAGE_KEY, {
86
+ uri: uri,
87
+ timestamp: Date.now()
88
+ })
89
+ .subscribe();
90
+ }
91
+ }
92
+ /**
93
+ * Get the URL that entered the app. May be a deep link that could then be
94
+ * picked up again after user has been authenticated.
95
+ */
96
+ getInitialRequestUri() {
97
+ return this.#appCache.getItem(this.#INITAL_REQUEST_STORAGE_KEY);
98
+ }
99
+ resetInitialRequestUri() {
100
+ return this.#appCache.removeItem(this.#INITAL_REQUEST_STORAGE_KEY);
101
+ }
102
+ /**
103
+ * Initialize/setup the application for a given user. This involves fetching
104
+ * settings and schema information.
105
+ * @param userJson Data retrieved from the backend
106
+ */
107
+ #initApp(userJson) {
108
+ return this.#userService.fetchUserSettings().pipe(switchMap((userSettings) => {
109
+ const currentUser = new YuvUser(userJson, userSettings);
110
+ this.#userService.setCurrentUser(currentUser);
111
+ this.#authData = {
112
+ tenant: currentUser.tenant,
113
+ language: currentUser.getClientLocale()
114
+ };
115
+ return this.#systemService.getSystemDefinition(this.#authData).pipe(switchMap(() => this.#objectConfigService.init()), map(() => currentUser));
116
+ }));
117
+ }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, deps: [{ token: CORE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
119
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, providedIn: 'root' }); }
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, decorators: [{
122
+ type: Injectable,
123
+ args: [{
124
+ providedIn: 'root'
125
+ }]
126
+ }], ctorParameters: () => [{ type: i1.CoreConfig, decorators: [{
127
+ type: Inject,
128
+ args: [CORE_CONFIG]
129
+ }] }] });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBZ0IsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUU3RTs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLGFBQWEsQ0FBd0I7SUFDckMsWUFBWSxDQUF1QjtJQUNuQyxvQkFBb0IsQ0FB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QUUsTUFBTTtpQkFDbkI7OzBCQW9CYyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzLCBZdXZVc2VyIH0gZnJvbSAnLi4vLi4vbW9kZWwveXV2LXVzZXIubW9kZWwnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7IEJhY2tlbmRTZXJ2aWNlIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29yZUNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJRyB9IGZyb20gJy4uL2NvbmZpZy9jb3JlLWNvbmZpZy50b2tlbnMnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBZdXZFdmVudFR5cGUgfSBmcm9tICcuLi9ldmVudC9ldmVudHMnO1xuaW1wb3J0IHsgU3lzdGVtU2VydmljZSB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFl1dkluaXRFcnJvciB9IGZyb20gJy4vYXV0aC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL29iamVjdC1jb25maWcvb2JqZWN0LWNvbmZpZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGhhbmRsaW5nIGF1dGhlbnRpY2F0aW9uIHJlbGF0ZWQgaXNzdWVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gICNldmVudFNlcnZpY2UgPSBpbmplY3QoRXZlbnRTZXJ2aWNlKTtcbiAgI3VzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgI29iamVjdENvbmZpZ1NlcnZpY2UgPSBpbmplY3QoT2JqZWN0Q29uZmlnU2VydmljZSk7XG4gICNhcHBDYWNoZSA9IGluamVjdChBcHBDYWNoZVNlcnZpY2UpO1xuICAjc3lzdGVtU2VydmljZSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcbiAgI2JhY2tlbmQgPSBpbmplY3QoQmFja2VuZFNlcnZpY2UpO1xuXG4gICNJTklUQUxfUkVRVUVTVF9TVE9SQUdFX0tFWSA9ICd5dXYuY29yZS5hdXRoLmluaXRpYWxyZXF1ZXN0JztcbiAgcmVhZG9ubHkgVVNFUl9GRVRDSF9VUkkgPSAnL2lkbS93aG9hbWknO1xuXG4gICNhdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICNhdXRoU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGF1dGhlbnRpY2F0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy4jYXV0aFNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAjYXV0aERhdGEhOiBBdXRoRGF0YTtcbiAgLy8gc2V0IGJ5IGNvcmUtaW5pdFxuICBpbml0RXJyb3I/OiBZdXZJbml0RXJyb3I7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcpIHt9XG5cbiAgaXNMb2dnZWRJbigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXV0aGVudGljYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hpbGUgYXBwL2NvcmUgaXMgaW5pdGlhbGl6ZWQgKEFQUF9JTklUSUFMSVpFUilcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaW5pdFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHRlbmFudCBvciB0aGUgcHJldmlvdXMgb25lIHBlcnNpc3RlZCBsb2NhbGx5XG4gICAqL1xuICBnZXRUZW5hbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jYXV0aERhdGE/LnRlbmFudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlciBjdXJyZW50bHkgbG9nZ2VkIGluXG4gICAqL1xuICBmZXRjaFVzZXIoKTogT2JzZXJ2YWJsZTxZdXZVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KHRoaXMuVVNFUl9GRVRDSF9VUkkpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhdXRoZW50aWNhdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy4jYXV0aFNvdXJjZS5uZXh0KHRoaXMuI2F1dGhlbnRpY2F0ZWQpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKHVzZXJKc29uOiBhbnkpID0+IHRoaXMuI2luaXRBcHAodXNlckpzb24pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGxvZ291dCgpIHtcbiAgICB0aGlzLiNhdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgdGhpcy4jYXV0aFNvdXJjZS5uZXh0KHRoaXMuI2F1dGhlbnRpY2F0ZWQpO1xuICAgIHRoaXMuI2V2ZW50U2VydmljZS50cmlnZ2VyKFl1dkV2ZW50VHlwZS5MT0dPVVQpO1xuICB9XG5cbiAgLy8gY2FsbGVkIG9uIGNvcmUgaW5pdFxuICBzZXRJbml0aWFsUmVxdWVzdFVyaSgpIHtcbiAgICBjb25zdCBpZ25vcmUgPSBbJy8nLCAnL2luZGV4Lmh0bWwnXTtcbiAgICBsZXQgdXJpID0gYCR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9YC5yZXBsYWNlKFV0aWxzLmdldEJhc2VIcmVmKCksICcnKTtcbiAgICB1cmkgPSAhdXJpLnN0YXJ0c1dpdGgoJy8nKSA/IGAvJHt1cml9YCA6IHVyaTtcblxuICAgIGlmICghaWdub3JlLmluY2x1ZGVzKHVyaSkpIHtcbiAgICAgIHRoaXMuI2FwcENhY2hlXG4gICAgICAgIC5zZXRJdGVtKHRoaXMuI0lOSVRBTF9SRVFVRVNUX1NUT1JBR0VfS0VZLCB7XG4gICAgICAgICAgdXJpOiB1cmksXG4gICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBVUkwgdGhhdCBlbnRlcmVkIHRoZSBhcHAuIE1heSBiZSBhIGRlZXAgbGluayB0aGF0IGNvdWxkIHRoZW4gYmVcbiAgICogcGlja2VkIHVwIGFnYWluIGFmdGVyIHVzZXIgaGFzIGJlZW4gYXV0aGVudGljYXRlZC5cbiAgICovXG4gIGdldEluaXRpYWxSZXF1ZXN0VXJpKCk6IE9ic2VydmFibGU8eyB1cmk6IHN0cmluZzsgdGltZXN0YW1wOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB0aGlzLiNhcHBDYWNoZS5nZXRJdGVtKHRoaXMuI0lOSVRBTF9SRVFVRVNUX1NUT1JBR0VfS0VZKTtcbiAgfVxuXG4gIHJlc2V0SW5pdGlhbFJlcXVlc3RVcmkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jYXBwQ2FjaGUucmVtb3ZlSXRlbSh0aGlzLiNJTklUQUxfUkVRVUVTVF9TVE9SQUdFX0tFWSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZS9zZXR1cCB0aGUgYXBwbGljYXRpb24gZm9yIGEgZ2l2ZW4gdXNlci4gVGhpcyBpbnZvbHZlcyBmZXRjaGluZ1xuICAgKiBzZXR0aW5ncyBhbmQgc2NoZW1hIGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0gdXNlckpzb24gRGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgYmFja2VuZFxuICAgKi9cbiAgI2luaXRBcHAodXNlckpzb246IGFueSk6IE9ic2VydmFibGU8WXV2VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLiN1c2VyU2VydmljZS5mZXRjaFVzZXJTZXR0aW5ncygpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHVzZXJTZXR0aW5nczogVXNlclNldHRpbmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gbmV3IFl1dlVzZXIodXNlckpzb24sIHVzZXJTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuI3VzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKGN1cnJlbnRVc2VyKTtcbiAgICAgICAgdGhpcy4jYXV0aERhdGEgPSB7XG4gICAgICAgICAgdGVuYW50OiBjdXJyZW50VXNlci50ZW5hbnQsXG4gICAgICAgICAgbGFuZ3VhZ2U6IGN1cnJlbnRVc2VyLmdldENsaWVudExvY2FsZSgpXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLiNzeXN0ZW1TZXJ2aWNlLmdldFN5c3RlbURlZmluaXRpb24odGhpcy4jYXV0aERhdGEpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuI29iamVjdENvbmZpZ1NlcnZpY2UuaW5pdCgpKSxcbiAgICAgICAgICBtYXAoKCkgPT4gY3VycmVudFVzZXIpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoRGF0YSB7XG4gIHRlbmFudDogc3RyaW5nO1xuICBsYW5ndWFnZTogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,81 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { OAuthModuleConfig, OAuthService } from 'angular-oauth2-oidc';
3
+ import { from, Observable, of } from 'rxjs';
4
+ import { map } from 'rxjs/operators';
5
+ import { CoreConfig } from '../config/core-config';
6
+ import { CORE_CONFIG } from '../config/core-config.tokens';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "angular-oauth2-oidc";
9
+ import * as i2 from "../config/core-config";
10
+ export class OidcService {
11
+ constructor(oAuthConfig, config, oauthService) {
12
+ this.oAuthConfig = oAuthConfig;
13
+ this.config = config;
14
+ this.oauthService = oauthService;
15
+ }
16
+ initOpenIdConnect(oidc) {
17
+ oidc = this.config.oidc = oidc || this.config.oidc;
18
+ if (oidc?.host) {
19
+ oidc.host = oidc.host.endsWith('/') ? oidc.host.substring(0, -1) : oidc.host;
20
+ }
21
+ else
22
+ return of(undefined);
23
+ this.oAuthConfig.resourceServer = {
24
+ sendAccessToken: true,
25
+ allowedUrls: [oidc.host]
26
+ };
27
+ const authConfig = {
28
+ strictDiscoveryDocumentValidation: false,
29
+ issuer: oidc.issuer,
30
+ redirectUri: oidc.redirectUri || window.location.origin + '/',
31
+ postLogoutRedirectUri: oidc.postLogoutRedirectUri || window.location.origin + '/',
32
+ clientId: oidc.clientId,
33
+ responseType: 'code',
34
+ scope: 'openid profile email offline_access',
35
+ showDebugInformation: false,
36
+ requireHttps: false,
37
+ disableAtHashCheck: true,
38
+ sessionCheckIntervall: 60000,
39
+ sessionChecksEnabled: true,
40
+ clearHashAfterLogin: false,
41
+ silentRefreshTimeout: 5000 // For faster testing
42
+ };
43
+ this.oauthService.configure(authConfig);
44
+ this.oauthService.setupAutomaticSilentRefresh();
45
+ return from(this.oauthService.loadDiscoveryDocumentAndLogin()).pipe(map(() => this.config.oidc));
46
+ }
47
+ logout() {
48
+ this.oauthService.logOut();
49
+ }
50
+ setupCookie(viewer, path, headers) {
51
+ return new Observable((subscriber) => {
52
+ let iframe = document.querySelector('body > iframe#__oidc');
53
+ if (!iframe) {
54
+ iframe = document.createElement('iframe');
55
+ iframe.style.display = 'none';
56
+ iframe.id = '__oidc';
57
+ iframe.onload = () => {
58
+ iframe.subscriber.next({});
59
+ iframe.subscriber.complete();
60
+ };
61
+ }
62
+ iframe.subscriber = subscriber;
63
+ iframe.setAttribute('src', `${viewer}/download?setCookie=/&path=${encodeURIComponent(path)}&headers=${encodeURIComponent(JSON.stringify(headers))}`);
64
+ document.body.appendChild(iframe);
65
+ });
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OidcService, deps: [{ token: i1.OAuthModuleConfig, optional: true }, { token: CORE_CONFIG }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
68
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OidcService, providedIn: 'root' }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OidcService, decorators: [{
71
+ type: Injectable,
72
+ args: [{
73
+ providedIn: 'root'
74
+ }]
75
+ }], ctorParameters: () => [{ type: i1.OAuthModuleConfig, decorators: [{
76
+ type: Optional
77
+ }] }, { type: i2.CoreConfig, decorators: [{
78
+ type: Inject,
79
+ args: [CORE_CONFIG]
80
+ }] }, { type: i1.OAuthService }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvb2lkYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBSzNELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ3NCLFdBQThCLEVBQ3RCLE1BQWtCLEVBQ3RDLFlBQTBCO1FBRmQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKLGlCQUFpQixDQUFDLElBQThCO1FBQzlDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVB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VSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aE1vZHVsZUNvbmZpZywgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3BlbklkQ29uZmlnIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb3JlQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2NvcmUtY29uZmlnJztcbmltcG9ydCB7IENPUkVfQ09ORklHIH0gZnJvbSAnLi4vY29uZmlnL2NvcmUtY29uZmlnLnRva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9pZGNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBvQXV0aENvbmZpZzogT0F1dGhNb2R1bGVDb25maWcsXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQ29yZUNvbmZpZyxcbiAgICBwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlXG4gICkge31cblxuICBpbml0T3BlbklkQ29ubmVjdChvaWRjOiBPcGVuSWRDb25maWcgfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPE9wZW5JZENvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICAgIG9pZGMgPSB0aGlzLmNvbmZpZy5vaWRjID0gb2lkYyB8fCB0aGlzLmNvbmZpZy5vaWRjO1xuICAgIGlmIChvaWRjPy5ob3N0KSB7XG4gICAgICBvaWRjLmhvc3QgPSBvaWRjLmhvc3QuZW5kc1dpdGgoJy8nKSA/IG9pZGMuaG9zdC5zdWJzdHJpbmcoMCwgLTEpIDogb2lkYy5ob3N0O1xuICAgIH0gZWxzZSByZXR1cm4gb2YodW5kZWZpbmVkKTtcblxuICAgIHRoaXMub0F1dGhDb25maWcucmVzb3VyY2VTZXJ2ZXIgPSB7XG4gICAgICBzZW5kQWNjZXNzVG9rZW46IHRydWUsXG4gICAgICBhbGxvd2VkVXJsczogW29pZGMuaG9zdF1cbiAgICB9O1xuXG4gICAgY29uc3QgYXV0aENvbmZpZzogQXV0aENvbmZpZyA9IHtcbiAgICAgIHN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbjogZmFsc2UsXG4gICAgICBpc3N1ZXI6IG9pZGMuaXNzdWVyLFxuICAgICAgcmVkaXJlY3RVcmk6IG9pZGMucmVkaXJlY3RVcmkgfHwgd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvJyxcbiAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogb2lkYy5wb3N0TG9nb3V0UmVkaXJlY3RVcmkgfHwgd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvJyxcbiAgICAgIGNsaWVudElkOiBvaWRjLmNsaWVudElkLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzY29wZTogJ29wZW5pZCBwcm9maWxlIGVtYWlsIG9mZmxpbmVfYWNjZXNzJyxcbiAgICAgIHNob3dEZWJ1Z0luZm9ybWF0aW9uOiBmYWxzZSxcbiAgICAgIHJlcXVpcmVIdHRwczogZmFsc2UsXG4gICAgICBkaXNhYmxlQXRIYXNoQ2hlY2s6IHRydWUsXG4gICAgICBzZXNzaW9uQ2hlY2tJbnRlcnZhbGw6IDYwMDAwLFxuICAgICAgc2Vzc2lvbkNoZWNrc0VuYWJsZWQ6IHRydWUsXG4gICAgICBjbGVhckhhc2hBZnRlckxvZ2luOiBmYWxzZSxcbiAgICAgIHNpbGVudFJlZnJlc2hUaW1lb3V0OiA1MDAwIC8vIEZvciBmYXN0ZXIgdGVzdGluZ1xuICAgIH07XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUoYXV0aENvbmZpZyk7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XG4gICAgcmV0dXJuIGZyb20odGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50QW5kTG9naW4oKSkucGlwZShtYXAoKCkgPT4gdGhpcy5jb25maWcub2lkYykpO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmxvZ091dCgpO1xuICB9XG5cbiAgc2V0dXBDb29raWUodmlld2VyOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgaGVhZGVyczogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBsZXQgaWZyYW1lOiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5ID4gaWZyYW1lI19fb2lkYycpIGFzIEhUTUxJRnJhbWVFbGVtZW50O1xuICAgICAgaWYgKCFpZnJhbWUpIHtcbiAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBpZnJhbWUuaWQgPSAnX19vaWRjJztcbiAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICBpZnJhbWUuc3Vic2NyaWJlci5uZXh0KHt9KTtcbiAgICAgICAgICBpZnJhbWUuc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZnJhbWUuc3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG5cbiAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIGAke3ZpZXdlcn0vZG93bmxvYWQ/c2V0Q29va2llPS8mcGF0aD0ke2VuY29kZVVSSUNvbXBvbmVudChwYXRoKX0maGVhZGVycz0ke2VuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShoZWFkZXJzKSl9YCk7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ // enumeration of API endpoints provided by the backend
2
+ export var ApiBase;
3
+ (function (ApiBase) {
4
+ ApiBase["core"] = "api";
5
+ ApiBase["apiWeb"] = "api-web/api";
6
+ ApiBase["predict"] = "predict-api/api";
7
+ // TODO: all custom services are deployed using this base
8
+ ApiBase["custom"] = "custom";
9
+ ApiBase["none"] = "";
10
+ })(ApiBase || (ApiBase = {}));
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvYmFja2VuZC9hcGkuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFOLElBQVksT0FPWDtBQVBELFdBQVksT0FBTztJQUNqQix1QkFBWSxDQUFBO0lBQ1osaUNBQXNCLENBQUE7SUFDdEIsc0NBQTJCLENBQUE7SUFDM0IseURBQXlEO0lBQ3pELDRCQUFpQixDQUFBO0lBQ2pCLG9CQUFTLENBQUE7QUFDWCxDQUFDLEVBUFcsT0FBTyxLQUFQLE9BQU8sUUFPbEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlbnVtZXJhdGlvbiBvZiBBUEkgZW5kcG9pbnRzIHByb3ZpZGVkIGJ5IHRoZSBiYWNrZW5kXG5leHBvcnQgZW51bSBBcGlCYXNlIHtcbiAgY29yZSA9ICdhcGknLFxuICBhcGlXZWIgPSAnYXBpLXdlYi9hcGknLFxuICBwcmVkaWN0ID0gJ3ByZWRpY3QtYXBpL2FwaScsXG4gIC8vIFRPRE86IGFsbCBjdXN0b20gc2VydmljZXMgYXJlIGRlcGxveWVkIHVzaW5nIHRoaXMgYmFzZVxuICBjdXN0b20gPSAnY3VzdG9tJyxcbiAgbm9uZSA9ICcnXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvYmFja2VuZC9iYWNrZW5kLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZyB7XG4gIGhvc3Q6IHN0cmluZztcbiAgdGVuYW50OiBzdHJpbmc7XG4gIGlzc3Vlcjogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICAvLyBVUkwgb2YgdGhlIFNQQSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhZnRlciBsb2dpblxuICByZWRpcmVjdFVyaT86IHN0cmluZztcbiAgcG9zdExvZ291dFJlZGlyZWN0VXJpPzogc3RyaW5nO1xufVxuLyoqXG4gKiBIdHRwT3B0aW9ucyBmb3IgaHR0cCByZXF1ZXN0XG4gKiBAcGFyYW0gb2JzZXJ2ZTogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnXG4gKiBAcGFyYW0gcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cE9wdGlvbnMge1xuICBoZWFkZXJzPzpcbiAgICB8IEh0dHBIZWFkZXJzXG4gICAgfCB7XG4gICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgb2JzZXJ2ZT86IGFueTtcbiAgcGFyYW1zPzpcbiAgICB8IEh0dHBQYXJhbXNcbiAgICB8IHtcbiAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VUeXBlPzogYW55O1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBEZWxldGVPcHRpb25zIGV4dGVuZHMgSHR0cE9wdGlvbnMge1xuICBib2R5PzogYW55O1xufVxuIl19
@@ -0,0 +1,206 @@
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { forkJoin, of } from 'rxjs';
4
+ import { catchError, finalize, shareReplay, tap } from 'rxjs/operators';
5
+ import { ConfigService } from '../config/config.service';
6
+ import { Logger } from '../logger/logger';
7
+ import { ApiBase } from './api.enum';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Service for providing an yuuvis Backend
11
+ */
12
+ export class BackendService {
13
+ constructor() {
14
+ this.#http = inject(HttpClient);
15
+ this.#logger = inject(Logger);
16
+ this.configService = inject(ConfigService);
17
+ this.#cache = new Map();
18
+ this.#temp = new Map();
19
+ this.#headers = new HttpHeaders({
20
+ 'Content-Type': 'application/json'
21
+ });
22
+ }
23
+ #http;
24
+ #logger;
25
+ #cache;
26
+ #temp;
27
+ #headers;
28
+ authUsesOpenIdConnect() {
29
+ return this.configService.authUsesOpenIdConnect();
30
+ }
31
+ /**
32
+ * OpenIdConnect authorization headers
33
+ */
34
+ getAuthHeaders() {
35
+ return this.configService.getAuthHeaders();
36
+ }
37
+ /**
38
+ * Add a new header.
39
+ * @param key The headers name
40
+ * @param value The value to be added to the headers. Setting this to null
41
+ * will remove the header
42
+ */
43
+ setHeader(key, value) {
44
+ if (value && value.length) {
45
+ this.#headers = this.#headers.set(key, value);
46
+ }
47
+ else {
48
+ this.#headers = this.#headers.delete(key);
49
+ }
50
+ }
51
+ /**
52
+ * Wrapped HTTP GET method
53
+ * @param uri The REST URI to be queried
54
+ * @param base The Base URI (backend service) to be used
55
+ * @param requestOptions Additional request options
56
+ * @returns The data retrieved from the given endpoint
57
+ */
58
+ get(uri, base, requestOptions) {
59
+ return this.#http.get(this.getApiBase(base) + uri, this.getHttpOptions(requestOptions));
60
+ }
61
+ /**
62
+ * Wrapped HTTP POST method
63
+ * @param uri The target REST URI
64
+ * @param data Data to be 'posted'
65
+ * @param base The Base URI (backend service) to be used
66
+ * @param requestOptions Additional request options
67
+ * @returns The return value of the target POST endpoint
68
+ */
69
+ post(uri, data, base, requestOptions) {
70
+ const baseUri = this.getApiBase(base);
71
+ const payload = data && typeof data === 'object' ? JSON.stringify(data) : data || '';
72
+ return this.#http.post(`${baseUri}${uri}`, payload, this.getHttpOptions(requestOptions));
73
+ }
74
+ /**
75
+ * Performs a multipart form data POST request.
76
+ * @param uri The target REST URI
77
+ * @param formData FormData to be 'posted'
78
+ * @param base The Base URI (backend service) to be used
79
+ * @param requestOptions Additional request options
80
+ * @returns The return value of the target POST endpoint
81
+ */
82
+ postMultiPart(uri, formData, base, requestOptions) {
83
+ return this.#http.post(`${this.getApiBase(base)}${uri}`, formData, this.getHttpOptions(requestOptions));
84
+ }
85
+ /**
86
+ * Wrapped HTTP PATCH method
87
+ * @param uri The target REST URI
88
+ * @param data Data to be 'patched'
89
+ * @param base The Base URI (backend service) to be used
90
+ * @param requestOptions Additional request options
91
+ * @returns The return value of the target PATCH endpoint
92
+ */
93
+ patch(uri, data, base, requestOptions) {
94
+ const baseUri = this.getApiBase(base);
95
+ const payload = data ? JSON.stringify(data) : '';
96
+ return this.#http.patch(`${baseUri}${uri}`, payload, this.getHttpOptions(requestOptions));
97
+ }
98
+ /**
99
+ * Wrapped HTTP PUT method
100
+ * @param uri The target REST URI
101
+ * @param data Data to be 'posted'
102
+ * @param base The Base URI (backend service) to be used
103
+ * @param requestOptions Additional request options
104
+ * @returns The return value of the target PUT endpoint
105
+ */
106
+ put(uri, data, base, requestOptions) {
107
+ return this.#http.put(this.getApiBase(base) + uri, data, this.getHttpOptions(requestOptions));
108
+ }
109
+ /**
110
+ * Wrapped HTTP DELETE method
111
+ * @param uri The target REST URI
112
+ * @param base The Base URI (backend service) to be used
113
+ * @param requestOptions Additional request options
114
+ * @returns The return value of the target DELETE endpoint
115
+ */
116
+ delete(uri, base, requestOptions) {
117
+ return this.#http.delete(this.getApiBase(base) + uri, this.getHttpOptions(requestOptions));
118
+ }
119
+ /**
120
+ * @ignore
121
+ * Cache for small requests like icons and configs
122
+ *
123
+ * @param string uri
124
+ * @returns Observable<any>
125
+ */
126
+ getViaCache(uri) {
127
+ if (this.#cache.has(uri)) {
128
+ return of(this.#cache.get(uri));
129
+ }
130
+ else {
131
+ const requestOptions = {
132
+ responseType: 'text',
133
+ headers: this.getAuthHeaders()
134
+ };
135
+ return this.getViaTempCache(uri, () => this.#http.get(uri, requestOptions).pipe(tap((text) => this.#cache.set(uri, text))));
136
+ }
137
+ }
138
+ /**
139
+ * @ignore
140
+ * Temporary Cache for multiple identical requests
141
+ *
142
+ * @param string id
143
+ * @param Function request
144
+ * @returns Observable<any>
145
+ */
146
+ getViaTempCache(id, request) {
147
+ if (this.#temp.has(id)) {
148
+ return this.#temp.get(id);
149
+ }
150
+ else {
151
+ const resp = (request ? request() : this.get(id)).pipe(finalize(() => this.#temp.delete(id)), shareReplay(1));
152
+ this.#temp.set(id, resp);
153
+ return resp;
154
+ }
155
+ }
156
+ download(uri, filename) {
157
+ if (document && document.body) {
158
+ const a = document.createElement('a');
159
+ a.setAttribute('href', uri);
160
+ a.style.display = 'none';
161
+ a.setAttribute('download', filename || 'download');
162
+ document.body.appendChild(a);
163
+ a.click();
164
+ document.body.removeChild(a);
165
+ }
166
+ else {
167
+ this.#logger.error('Environment not supported. Downloading contents relies on a DOM being available.');
168
+ }
169
+ }
170
+ /**
171
+ * Gets the base URI for an API endpoint
172
+ * @param api The API to get the base URI for. Leaving this blank will return
173
+ * base URI for the web API
174
+ * @param origin The flag to include location origin
175
+ * @returns Base URI for the given API.
176
+ */
177
+ getApiBase(api = ApiBase.apiWeb, origin = false) {
178
+ return this.configService.getApiBase(api, origin);
179
+ }
180
+ /**
181
+ * @ignore
182
+ */
183
+ getHttpOptions(requestOptions) {
184
+ // Object.entries(this.getAuthHeaders()).forEach(([h, v]) => this.setHeader(h, v as string));
185
+ this.getAuthHeaders()
186
+ .keys()
187
+ .forEach((k) => this.setHeader(k, this.getAuthHeaders().get(k)));
188
+ return Object.assign({ headers: this.#headers }, requestOptions);
189
+ }
190
+ /**
191
+ * Batch service
192
+ */
193
+ batch(requests) {
194
+ const httpRequests = requests.map((r) => this[(r.method || 'get').toLowerCase()]
195
+ .apply(this, [r.uri, r.body, r.base, r.requestOptions].filter((a) => a))
196
+ .pipe(catchError((err) => of({ _error: err }))));
197
+ return forkJoin(httpRequests);
198
+ }
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BackendService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
200
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BackendService, providedIn: 'root' }); }
201
+ }
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BackendService, decorators: [{
203
+ type: Injectable,
204
+ args: [{ providedIn: 'root' }]
205
+ }] });
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHckM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVFLFVBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0QyxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUNoQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDM0MsYUFBUSxHQUFHLElBQUksV0FBVyxDQUFDO1lBQ3pCLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQyxDQUFDO0tBK0xKO0lBdk1DLEtBQUssQ0FBc0I7SUFDM0IsT0FBTyxDQUFrQjtJQUd6QixNQUFNLENBQTBCO0lBQ2hDLEtBQUssQ0FBc0M7SUFDM0MsUUFBUSxDQUVMO0lBRUgscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2xDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWEsRUFBRSxjQUE0QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBVSxFQUFFLElBQWEsRUFBRSxjQUE0QjtRQUM5RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksYUFBYSxDQUFDLEdBQVcsRUFBRSxRQUFrQixFQUFFLElBQWEsRUFBRSxjQUE0QjtRQUMvRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsSUFBYSxFQUFFLGNBQTRCO1FBQy9FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sR0FBRyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsSUFBYSxFQUFFLGNBQTRCO1FBQzdFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFhLEVBQUUsY0FBa0M7UUFDMUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxHQUFXO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxjQUFjLEdBQVE7Z0JBQzFCLFlBQVksRUFBRSxNQUFNO2dCQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUMvQixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FBQyxFQUFVLEVBQUUsT0FBa0M7UUFDbkUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNyQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUM1QyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDekIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztRQUN6RyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxNQUFjLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUs7UUFDckQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLGNBQTRCO1FBQ3pDLDZGQUE2RjtRQUM3RixJQUFJLENBQUMsY0FBYyxFQUFFO2FBQ2xCLElBQUksRUFBRTthQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBcUc7UUFDekcsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3JDLElBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDN0MsS0FBSyxDQUNKLElBQUksRUFDSixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUMzRDthQUNBLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDbEQsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBc0IsQ0FBQztJQUNyRCxDQUFDOytHQXZNVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XG5pbXBvcnQgeyBBcGlCYXNlIH0gZnJvbSAnLi9hcGkuZW51bSc7XG5pbXBvcnQgeyBIdHRwRGVsZXRlT3B0aW9ucywgSHR0cE9wdGlvbnMgfSBmcm9tICcuL2JhY2tlbmQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBwcm92aWRpbmcgYW4geXV1dmlzIEJhY2tlbmRcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBCYWNrZW5kU2VydmljZSB7XG4gICNodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAjbG9nZ2VyID0gaW5qZWN0KExvZ2dlcik7XG4gIGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoQ29uZmlnU2VydmljZSk7XG5cbiAgI2NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgI3RlbXAgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xuICAjaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICB9KTtcblxuICBhdXRoVXNlc09wZW5JZENvbm5lY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5hdXRoVXNlc09wZW5JZENvbm5lY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuSWRDb25uZWN0IGF1dGhvcml6YXRpb24gaGVhZGVyc1xuICAgKi9cbiAgZ2V0QXV0aEhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5nZXRBdXRoSGVhZGVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBoZWFkZXIuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGhlYWRlcnMgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGFkZGVkIHRvIHRoZSBoZWFkZXJzLiBTZXR0aW5nIHRoaXMgdG8gbnVsbFxuICAgKiB3aWxsIHJlbW92ZSB0aGUgaGVhZGVyXG4gICAqL1xuICBzZXRIZWFkZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLiNoZWFkZXJzID0gdGhpcy4jaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2hlYWRlcnMgPSB0aGlzLiNoZWFkZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVkIEhUVFAgR0VUIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSBSRVNUIFVSSSB0byBiZSBxdWVyaWVkXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBUaGUgZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgZ2l2ZW4gZW5kcG9pbnRcbiAgICovXG4gIGdldCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2h0dHAuZ2V0KHRoaXMuZ2V0QXBpQmFzZShiYXNlKSArIHVyaSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBQT1NUIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwb3N0KHVyaTogc3RyaW5nLCBkYXRhPzogYW55LCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBiYXNlVXJpID0gdGhpcy5nZXRBcGlCYXNlKGJhc2UpO1xuICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogZGF0YSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy4jaHR0cC5wb3N0KGAke2Jhc2VVcml9JHt1cml9YCwgcGF5bG9hZCwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgbXVsdGlwYXJ0IGZvcm0gZGF0YSBQT1NUIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxuICAgKiBAcGFyYW0gZm9ybURhdGEgRm9ybURhdGEgdG8gYmUgJ3Bvc3RlZCdcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQT1NUIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcG9zdE11bHRpUGFydCh1cmk6IHN0cmluZywgZm9ybURhdGE6IEZvcm1EYXRhLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jaHR0cC5wb3N0KGAke3RoaXMuZ2V0QXBpQmFzZShiYXNlKX0ke3VyaX1gLCBmb3JtRGF0YSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBQQVRDSCBtZXRob2RcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3BhdGNoZWQnXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUEFUQ0ggZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwYXRjaCh1cmk6IHN0cmluZywgZGF0YT86IGFueSwgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYmFzZVVyaSA9IHRoaXMuZ2V0QXBpQmFzZShiYXNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0gZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogJyc7XG4gICAgcmV0dXJuIHRoaXMuI2h0dHAucGF0Y2goYCR7YmFzZVVyaX0ke3VyaX1gLCBwYXlsb2FkLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlZCBIVFRQIFBVVCBtZXRob2RcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3Bvc3RlZCdcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQVVQgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwdXQodXJpOiBzdHJpbmcsIGRhdGE/OiBhbnksIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiNodHRwLnB1dCh0aGlzLmdldEFwaUJhc2UoYmFzZSkgKyB1cmksIGRhdGEsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVkIEhUVFAgREVMRVRFIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBERUxFVEUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBkZWxldGUodXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cERlbGV0ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiNodHRwLmRlbGV0ZSh0aGlzLmdldEFwaUJhc2UoYmFzZSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIENhY2hlIGZvciBzbWFsbCByZXF1ZXN0cyBsaWtlIGljb25zIGFuZCBjb25maWdzXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgdXJpXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcHVibGljIGdldFZpYUNhY2hlKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy4jY2FjaGUuaGFzKHVyaSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLiNjYWNoZS5nZXQodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBhbnkgPSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEF1dGhIZWFkZXJzKClcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLiNodHRwLmdldCh1cmksIHJlcXVlc3RPcHRpb25zKS5waXBlKHRhcCgodGV4dCkgPT4gdGhpcy4jY2FjaGUuc2V0KHVyaSwgdGV4dCkpKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogVGVtcG9yYXJ5IENhY2hlIGZvciBtdWx0aXBsZSBpZGVudGljYWwgcmVxdWVzdHNcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBpZFxuICAgKiBAcGFyYW0gRnVuY3Rpb24gcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHB1YmxpYyBnZXRWaWFUZW1wQ2FjaGUoaWQ6IHN0cmluZywgcmVxdWVzdD86ICgpID0+IE9ic2VydmFibGU8b2JqZWN0Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMuI3RlbXAuaGFzKGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuI3RlbXAuZ2V0KGlkKSE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3AgPSAocmVxdWVzdCA/IHJlcXVlc3QoKSA6IHRoaXMuZ2V0KGlkKSkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jdGVtcC5kZWxldGUoaWQpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgICB0aGlzLiN0ZW1wLnNldChpZCwgcmVzcCk7XG4gICAgICByZXR1cm4gcmVzcDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWQodXJpOiBzdHJpbmcsIGZpbGVuYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVyaSk7XG4gICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBhLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSB8fCAnZG93bmxvYWQnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICBhLmNsaWNrKCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNsb2dnZXIuZXJyb3IoJ0Vudmlyb25tZW50IG5vdCBzdXBwb3J0ZWQuIERvd25sb2FkaW5nIGNvbnRlbnRzIHJlbGllcyBvbiBhIERPTSBiZWluZyBhdmFpbGFibGUuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciBhbiBBUEkgZW5kcG9pbnRcbiAgICogQHBhcmFtIGFwaSBUaGUgQVBJIHRvIGdldCB0aGUgYmFzZSBVUkkgZm9yLiBMZWF2aW5nIHRoaXMgYmxhbmsgd2lsbCByZXR1cm5cbiAgICogYmFzZSBVUkkgZm9yIHRoZSB3ZWIgQVBJXG4gICAqIEBwYXJhbSBvcmlnaW4gVGhlIGZsYWcgdG8gaW5jbHVkZSBsb2NhdGlvbiBvcmlnaW5cbiAgICogQHJldHVybnMgQmFzZSBVUkkgZm9yIHRoZSBnaXZlbiBBUEkuXG4gICAqL1xuICBnZXRBcGlCYXNlKGFwaTogc3RyaW5nID0gQXBpQmFzZS5hcGlXZWIsIG9yaWdpbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldEFwaUJhc2UoYXBpLCBvcmlnaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBIdHRwT3B0aW9ucyB7XG4gICAgLy8gT2JqZWN0LmVudHJpZXModGhpcy5nZXRBdXRoSGVhZGVycygpKS5mb3JFYWNoKChbaCwgdl0pID0+IHRoaXMuc2V0SGVhZGVyKGgsIHYgYXMgc3RyaW5nKSk7XG4gICAgdGhpcy5nZXRBdXRoSGVhZGVycygpXG4gICAgICAua2V5cygpXG4gICAgICAuZm9yRWFjaCgoaykgPT4gdGhpcy5zZXRIZWFkZXIoaywgdGhpcy5nZXRBdXRoSGVhZGVycygpLmdldChrKSEpKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IGhlYWRlcnM6IHRoaXMuI2hlYWRlcnMgfSwgcmVxdWVzdE9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhdGNoIHNlcnZpY2VcbiAgICovXG4gIGJhdGNoKHJlcXVlc3RzOiB7IG1ldGhvZD86IHN0cmluZzsgdXJpOiBzdHJpbmc7IGJvZHk/OiBhbnk7IGJhc2U/OiBzdHJpbmc7IHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMgfVtdKSB7XG4gICAgY29uc3QgaHR0cFJlcXVlc3RzID0gcmVxdWVzdHMubWFwKChyKSA9PlxuICAgICAgKHRoaXMgYXMgYW55KVsoci5tZXRob2QgfHwgJ2dldCcpLnRvTG93ZXJDYXNlKCldXG4gICAgICAgIC5hcHBseShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFtyLnVyaSwgci5ib2R5LCByLmJhc2UsIHIucmVxdWVzdE9wdGlvbnNdLmZpbHRlcigoYSkgPT4gYSlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnIpID0+IG9mKHsgX2Vycm9yOiBlcnIgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIGZvcmtKb2luKGh0dHBSZXF1ZXN0cykgYXMgT2JzZXJ2YWJsZTxhbnlbXT47XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export const ProcessAction = {
2
+ complete: 'complete',
3
+ claim: 'claim',
4
+ delegate: 'delegate',
5
+ resolve: 'resolve',
6
+ save: 'save'
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1jb3JlL3NyYy9saWIvc2VydmljZS9icG0vYnBtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsUUFBUSxFQUFFLFVBQVU7SUFDcEIsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjb25zdCBQcm9jZXNzQWN0aW9uID0ge1xuICBjb21wbGV0ZTogJ2NvbXBsZXRlJyxcbiAgY2xhaW06ICdjbGFpbScsXG4gIGRlbGVnYXRlOiAnZGVsZWdhdGUnLFxuICByZXNvbHZlOiAncmVzb2x2ZScsXG4gIHNhdmU6ICdzYXZlJ1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzIHtcbiAgaWQ6IHN0cmluZztcbiAgLy8gb2JqZWN0cyAoSURzKSBhdHRhY2hlZCB0byB0aGUgcHJvY2Vzc1xuICBhdHRhY2htZW50czogc3RyaW5nW107XG4gIGJ1c2luZXNzS2V5OiBzdHJpbmc7IC8vXG4gIGRlbGV0ZVJlYXNvbjogc3RyaW5nO1xuICBkdXJhdGlvbkluTWlsbGlzOiBudW1iZXI7IC8vXG4gIGVuZEFjdGl2aXR5SWQ6IHN0cmluZztcbiAgZW5kVGltZTogRGF0ZTtcbiAgaW5pdGlhdG9yOiBQcm9jZXNzVXNlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbjogeyBkZXNjcmlwdGlvbjogc3RyaW5nOyBpZDogc3RyaW5nOyBpZFByZWZpeDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfTtcbiAgc3RhcnRBY3Rpdml0eUlkOiBzdHJpbmc7XG4gIHN0YXJ0VGltZTogRGF0ZTtcbiAgc3RhcnRVc2VySWQ6IHN0cmluZztcbiAgLy8gc3ViamVjdDogc3RyaW5nO1xuICBzdXNwZW5kZWQ/OiBib29sZWFuO1xuICB2YXJpYWJsZXM6IFByb2Nlc3NWYXJpYWJsZVtdOyAvLyB0ZW5hbnQgYWRtaW4gb25seVxufVxuXG5cbi8vIHBheWxvYWQgZm9yIHN0YXJ0aW5nIGEgbmV3IHByb2Nlc3NcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0NyZWF0ZVBheWxvYWQgZXh0ZW5kcyBQcm9jZXNzUG9zdFBheWxvYWQge1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBidXNpbmVzc0tleT86IHN0cmluZztcbiAgcmV0dXJuVmFyaWFibGVzPzogYm9vbGVhbjtcbn1cblxuLy8gcGF5bG9hZCBmb3IgcG9zdCByZXF1ZXN0cyB0byB0aGUgYnBtIGJhY2tlbmRcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1Bvc3RQYXlsb2FkIHtcbiAgdmFyaWFibGVzPzogUHJvY2Vzc1ZhcmlhYmxlW107XG4gIGF0dGFjaG1lbnRzPzogc3RyaW5nW107XG4gIHN1YmplY3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1ZhcmlhYmxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICAvLyBUT0RPOiBOb3QgeWV0IHN1cHBvcnRlZCBieSBCUE0tRW5naW5lXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgc2NvcGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGFza3MgYXJlIGJhc2ljYWxseSBhY3Rpdml0aWVzIGRlZmluZWQgYnkgYSBwcm9jZXNzLlxuICogUHJvY2Vzc2VzIG1heSBjb250YWluIHNldmVyYWwgdGFza3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5ib3hUYXNrIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIC8vIElEIG9mIHRoZSBwcm9jZXNzIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhpcyB0YXNrL2FjdGl2aXR5XG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcbiAgICBhc3NpZ25lZTogUHJvY2Vzc1VzZXI7XG4gICAgY2xhaW1UaW1lOiBEYXRlO1xuICAgIGNyZWF0ZVRpbWU6IERhdGU7XG4gICAgZHVlRGF0ZTogRGF0ZTtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIC8vIHRhc2tNZXNzYWdlcz86IFRhc2tNZXNzYWdlW107XG4gICAgLy8gdGFza0Zvcm0/OiB7XG4gICAgLy8gICBzY2hlbWFQcm9wZXJ0aWVzPzogc3RyaW5nW107XG4gICAgLy8gICBtb2RlbD86IGFueTtcbiAgICAvLyAgIGRhdGE/OiBhbnk7XG4gICAgLy8gICBvdXRjb21lcz86IFRhc2tPdXRjb21lW107XG4gICAgLy8gfTtcbiAgICBkZWxlZ2F0aW9uU3RhdGU/OiBzdHJpbmc7XG4gICAgZm9ybUtleTogc3RyaW5nO1xuICAgIGluaXRpYXRvcjogUHJvY2Vzc1VzZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG93bmVyOiBQcm9jZXNzVXNlcjtcbiAgICBwYXJlbnRUYXNrSWQ6IHN0cmluZztcbiAgICBwcm9jZXNzRGVmaW5pdGlvbjoge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGlkUHJlZml4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvLyBzdWJqZWN0OiBzdHJpbmc7XG4gICAgc3VzcGVuZGVkOiBmYWxzZTtcbiAgICB2YXJpYWJsZXM6IFByb2Nlc3NWYXJpYWJsZVtdO1xuICAgIHJlc29sdmVkVmFsdWVzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGF0dGFjaG1lbnRzOiBzdHJpbmdbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1VzZXIge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hUYXNrT3B0aW9ucyB7XG4gICAgYnVzaW5lc3NLZXk/OiBzdHJpbmc7XG4gICAgaW5jbHVkZVByb2Nlc3NWYXI/OiBib29sZWFuO1xuICAgIGlzQ29tcGxldGVkPzogYm9vbGVhbjtcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleT86IHN0cmluZztcbiAgfSJdfQ==
@@ -0,0 +1,51 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { BackendService } from '../backend/backend.service';
3
+ import { ProcessAction } from './bpm.interface';
4
+ import { map, of } from 'rxjs';
5
+ import { ApiBase } from '../backend/api.enum';
6
+ import { Utils } from '../../util/utils';
7
+ import * as i0 from "@angular/core";
8
+ export class BpmService {
9
+ #backend = inject(BackendService);
10
+ startProcess(payload) {
11
+ return this.#backend.post('/bpm/processes', payload, ApiBase.apiWeb);
12
+ }
13
+ /**
14
+ * Finsihes a task.
15
+ * @param taskId ID of the taks to finish
16
+ * @param payload Data to be send with the complete request (may contain attachments, a new subject or variables)
17
+ */
18
+ completeTask(taskId, payload) {
19
+ return this.#putTask(taskId, ProcessAction.complete, payload || {});
20
+ }
21
+ updateTask(taskId, payload) {
22
+ return this.#putTask(taskId, ProcessAction.save, payload || {});
23
+ }
24
+ //TODO: replace with propper service call
25
+ getProcessPoll() {
26
+ const random = Math.random();
27
+ console.log('getProcessPoll: ', { random });
28
+ return of([{ title: `task title ${random}`, duedate: new Date() }]);
29
+ }
30
+ getProcessInstance(processDefinitionKey, options) {
31
+ return this.#backend
32
+ .get(`/bpm/processes${Utils.optionsToURLParams({ ...options, processDefinitionKey })}`, ApiBase.apiWeb)
33
+ .pipe(map(({ objects }) => objects[0]));
34
+ }
35
+ deleteProcess(processInstanceId) {
36
+ return this.#backend.delete(`/bpm/processes/${processInstanceId}`, ApiBase.apiWeb);
37
+ }
38
+ #putTask(taskId, action, payload) {
39
+ const pl = { ...payload, action: action };
40
+ return this.#backend.put(`/bpm/tasks/${taskId}`, pl, ApiBase.apiWeb);
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BpmService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BpmService, providedIn: 'root' }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BpmService, decorators: [{
46
+ type: Injectable,
47
+ args: [{
48
+ providedIn: 'root'
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQTZCLGFBQWEsRUFBNEMsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUt6QyxNQUFNLE9BQU8sVUFBVTtJQUNyQixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxDLFlBQVksQ0FBQyxPQUE2QjtRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsTUFBYyxFQUFFLE9BQTRCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBNEI7UUFDckQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLGNBQWM7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFNUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxjQUFjLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxvQkFBNEIsRUFBRSxPQUEwQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2pCLEdBQUcsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUN0RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsYUFBYSxDQUFDLGlCQUF5QjtRQUNyQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGtCQUFrQixpQkFBaUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsT0FBMkI7UUFDbEUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQzsrR0F6Q1UsVUFBVTttSEFBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhY2tlbmRTZXJ2aWNlIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmV0Y2hUYXNrT3B0aW9ucywgUHJvY2VzcywgUHJvY2Vzc0FjdGlvbiwgUHJvY2Vzc0NyZWF0ZVBheWxvYWQsIFByb2Nlc3NQb3N0UGF5bG9hZCB9IGZyb20gJy4vYnBtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlCYXNlIH0gZnJvbSAnLi4vYmFja2VuZC9hcGkuZW51bSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCcG1TZXJ2aWNlIHtcbiAgI2JhY2tlbmQgPSBpbmplY3QoQmFja2VuZFNlcnZpY2UpO1xuXG4gIHN0YXJ0UHJvY2VzcyhwYXlsb2FkOiBQcm9jZXNzQ3JlYXRlUGF5bG9hZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQucG9zdCgnL2JwbS9wcm9jZXNzZXMnLCBwYXlsb2FkLCBBcGlCYXNlLmFwaVdlYik7XG4gIH1cblxuICAvKipcbiAgICogRmluc2loZXMgYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIElEIG9mIHRoZSB0YWtzIHRvIGZpbmlzaFxuICAgKiBAcGFyYW0gcGF5bG9hZCBEYXRhIHRvIGJlIHNlbmQgd2l0aCB0aGUgY29tcGxldGUgcmVxdWVzdCAobWF5IGNvbnRhaW4gYXR0YWNobWVudHMsIGEgbmV3IHN1YmplY3Qgb3IgdmFyaWFibGVzKVxuICAgKi9cbiAgY29tcGxldGVUYXNrKHRhc2tJZDogc3RyaW5nLCBwYXlsb2FkPzogUHJvY2Vzc1Bvc3RQYXlsb2FkKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jcHV0VGFzayh0YXNrSWQsIFByb2Nlc3NBY3Rpb24uY29tcGxldGUsIHBheWxvYWQgfHwge30pO1xuICB9XG5cbiAgdXBkYXRlVGFzayh0YXNrSWQ6IHN0cmluZywgcGF5bG9hZD86IFByb2Nlc3NQb3N0UGF5bG9hZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3B1dFRhc2sodGFza0lkLCBQcm9jZXNzQWN0aW9uLnNhdmUsIHBheWxvYWQgfHwge30pO1xuICB9XG5cbiAgLy9UT0RPOiByZXBsYWNlIHdpdGggcHJvcHBlciBzZXJ2aWNlIGNhbGxcbiAgZ2V0UHJvY2Vzc1BvbGwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByYW5kb20gPSBNYXRoLnJhbmRvbSgpO1xuICAgIGNvbnNvbGUubG9nKCdnZXRQcm9jZXNzUG9sbDogJywgeyByYW5kb20gfSk7XG5cbiAgICByZXR1cm4gb2YoW3sgdGl0bGU6IGB0YXNrIHRpdGxlICR7cmFuZG9tfWAsIGR1ZWRhdGU6IG5ldyBEYXRlKCkgfV0pO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0luc3RhbmNlKHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaFRhc2tPcHRpb25zKTogT2JzZXJ2YWJsZTxQcm9jZXNzPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5nZXQoYC9icG0vcHJvY2Vzc2VzJHtVdGlscy5vcHRpb25zVG9VUkxQYXJhbXMoeyAuLi5vcHRpb25zLCBwcm9jZXNzRGVmaW5pdGlvbktleSB9KX1gLCBBcGlCYXNlLmFwaVdlYilcbiAgICAgIC5waXBlKG1hcCgoeyBvYmplY3RzIH0pID0+IG9iamVjdHNbMF0pKTtcbiAgfVxuXG4gIGRlbGV0ZVByb2Nlc3MocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZGVsZXRlKGAvYnBtL3Byb2Nlc3Nlcy8ke3Byb2Nlc3NJbnN0YW5jZUlkfWAsIEFwaUJhc2UuYXBpV2ViKTtcbiAgfVxuXG4gICNwdXRUYXNrKHRhc2tJZDogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgcGF5bG9hZDogUHJvY2Vzc1Bvc3RQYXlsb2FkKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwbCA9IHsgLi4ucGF5bG9hZCwgYWN0aW9uOiBhY3Rpb24gfTtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5wdXQoYC9icG0vdGFza3MvJHt0YXNrSWR9YCwgcGwsIEFwaUJhc2UuYXBpV2ViKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,51 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { StorageMap } from '@ngx-pwa/local-storage';
3
+ import { forkJoin, Observable, of } from 'rxjs';
4
+ import { first, map, switchMap } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Service for saving or caching data on the users device. It uses the most efficient storage
8
+ * available (IndexDB, localstorage, ...) on the device. Depending on the type of storage used,
9
+ * its limitations apply.
10
+ */
11
+ export class AppCacheService {
12
+ #storage = inject(StorageMap);
13
+ setItem(key, value) {
14
+ return this.#storage.set(key, value).pipe(map(() => true));
15
+ }
16
+ getItem(key) {
17
+ return this.#storage.get(key);
18
+ }
19
+ removeItem(key) {
20
+ return this.#storage.delete(key).pipe(map(() => true));
21
+ }
22
+ clear(filter) {
23
+ return filter
24
+ ? this.getStorageKeys().pipe(switchMap((keys) => {
25
+ const list = keys.filter((k) => filter(k)).map((k) => this.removeItem(k));
26
+ return list.length ? forkJoin(list).pipe(map(() => true)) : of(true);
27
+ }))
28
+ : this.#storage.clear().pipe(map(() => true));
29
+ }
30
+ getStorageKeys() {
31
+ return new Observable((observer) => {
32
+ const keys = [];
33
+ this.#storage.keys().subscribe({
34
+ next: (key) => keys.push(key),
35
+ complete: () => observer.next(keys)
36
+ });
37
+ }).pipe(first());
38
+ }
39
+ setStorage(options) {
40
+ return forkJoin(Object.keys(options || {}).map((k) => this.setItem(k, options[k])));
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppCacheService, providedIn: 'root' }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppCacheService, decorators: [{
46
+ type: Injectable,
47
+ args: [{
48
+ providedIn: 'root'
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNhY2hlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFdkQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFOUIsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUE4QjtRQUNsQyxPQUFPLE1BQU07WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDeEIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FDSDtZQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxVQUFVLENBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQzdCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQVk7UUFDckIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQzsrR0F0Q1UsZUFBZTttSEFBZixlQUFlLGNBRmQsTUFBTTs7NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHNhdmluZyBvciBjYWNoaW5nIGRhdGEgb24gdGhlIHVzZXJzIGRldmljZS4gSXQgdXNlcyB0aGUgbW9zdCBlZmZpY2llbnQgc3RvcmFnZVxuICogYXZhaWxhYmxlICAoSW5kZXhEQiwgbG9jYWxzdG9yYWdlLCAuLi4pIG9uIHRoZSBkZXZpY2UuIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBzdG9yYWdlIHVzZWQsXG4gKiBpdHMgbGltaXRhdGlvbnMgYXBwbHkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcENhY2hlU2VydmljZSB7XG4gICNzdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2VNYXApO1xuXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy4jc3RvcmFnZS5zZXQoa2V5LCB2YWx1ZSkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuICB9XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3N0b3JhZ2UuZ2V0KGtleSk7XG4gIH1cblxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuI3N0b3JhZ2UuZGVsZXRlKGtleSkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuICB9XG5cbiAgY2xlYXIoZmlsdGVyPzogKGtleTogYW55KSA9PiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZpbHRlclxuICAgICAgPyB0aGlzLmdldFN0b3JhZ2VLZXlzKCkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGtleXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBrZXlzLmZpbHRlcigoazogYW55KSA9PiBmaWx0ZXIoaykpLm1hcCgoazogYW55KSA9PiB0aGlzLnJlbW92ZUl0ZW0oaykpO1xuICAgICAgICAgICAgcmV0dXJuIGxpc3QubGVuZ3RoID8gZm9ya0pvaW4obGlzdCkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpIDogb2YodHJ1ZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLiNzdG9yYWdlLmNsZWFyKCkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuICB9XG5cbiAgZ2V0U3RvcmFnZUtleXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nW10+KChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIHRoaXMuI3N0b3JhZ2Uua2V5cygpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChrZXkpID0+IGtleXMucHVzaChrZXkpLFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gb2JzZXJ2ZXIubmV4dChrZXlzKVxuICAgICAgfSk7XG4gICAgfSkucGlwZShmaXJzdCgpKTtcbiAgfVxuXG4gIHNldFN0b3JhZ2Uob3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oT2JqZWN0LmtleXMob3B0aW9ucyB8fCB7fSkubWFwKChrKSA9PiB0aGlzLnNldEl0ZW0oaywgb3B0aW9uc1trXSkpKTtcbiAgfVxufVxuIl19