@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,123 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { ReplaySubject } from 'rxjs';
3
+ import { Utils } from '../../util/utils';
4
+ import { Logger } from '../logger/logger';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * EditingObserver service is used to track changes made inside the application, that should prevent
8
+ * doing something or going somewhere before the changes are persisted or ignored. For example when
9
+ * the user starts editing form data and tries to navigate away before saving the changes, this service
10
+ * will take care of notifying the user.
11
+ *
12
+ * It is working kind of like a registry for ongoing tasks that need to be monitored. Every component
13
+ * that needs to be aware of changes to be persisted can start a task and finish it when everything is done.
14
+ *
15
+ * Other components can ask the service for pending tasks to know whether or not to execute an action
16
+ * (e.g. list component will subscribe and prevent selecting another list item, if changes to the previous one haven't be finished)
17
+ *
18
+ * app.component will prevent relevant route changes while tasks are pending.
19
+ */
20
+ export class PendingChangesService {
21
+ constructor() {
22
+ this.#logger = inject(Logger);
23
+ this.#tasks = [];
24
+ this.#tasksSource = new ReplaySubject();
25
+ this.tasks$ = this.#tasksSource.asObservable();
26
+ // private customMsg = '';
27
+ this.#defaultMsg = 'You are currently editing the index data of a form that has not been saved. Unsaved data will be lost.';
28
+ }
29
+ #logger;
30
+ #tasks;
31
+ #tasksSource;
32
+ // private customMsg = '';
33
+ #defaultMsg;
34
+ /**
35
+ * Registers a task to be pending.
36
+ * @param message alert message
37
+ * @returns Unique id to be used for finishing this task
38
+ */
39
+ startTask(message) {
40
+ const taskId = Utils.uuid();
41
+ this.#tasks.push({ id: taskId, message: message });
42
+ this.#logger.debug('started pending task: ' + taskId);
43
+ this.#tasksSource.next(this.#tasks);
44
+ return taskId;
45
+ }
46
+ /**
47
+ * Finishes a task
48
+ * @param id The id of the task to be finished. This is the one the component got from startTask()
49
+ */
50
+ finishTask(id) {
51
+ if (id) {
52
+ this.#tasks = this.#tasks.filter((t) => t.id !== id);
53
+ this.#tasksSource.next(this.#tasks);
54
+ this.#logger.debug('finished pending task: ' + id);
55
+ }
56
+ }
57
+ /**
58
+ * Returns whether or not the service has pending tasks.
59
+ * If an id is provided, the method will check existence of one specific task.
60
+ *
61
+ * @param id The id of the task to be checked
62
+ * @returns
63
+ */
64
+ hasPendingTask(id) {
65
+ return !id ? !!this.#tasks.length : Array.isArray(id) ? this.#tasks.some((value) => id.includes(value.id)) : this.#tasks.map((t) => t.id).includes(id);
66
+ }
67
+ /**
68
+ * Returns whether or not the component|service has pending tasks.
69
+ * Checks via confirm dialog
70
+ * @param component
71
+ * @returns
72
+ */
73
+ check(component) {
74
+ if (component && component.hasPendingChanges ? !component.hasPendingChanges() : !this.hasPendingTask()) {
75
+ return false;
76
+ }
77
+ else {
78
+ const confirmed = confirm(this.#getConfirmMessage());
79
+ if (confirmed) {
80
+ this.clear();
81
+ }
82
+ return !confirmed;
83
+ }
84
+ }
85
+ checkForPendingTasks(taskIds) {
86
+ if (this.hasPendingTask(taskIds)) {
87
+ const confirmed = confirm(this.#getConfirmMessage());
88
+ if (confirmed) {
89
+ this.clear();
90
+ }
91
+ return !confirmed;
92
+ }
93
+ else {
94
+ return false;
95
+ }
96
+ }
97
+ #getConfirmMessage() {
98
+ let msg = '';
99
+ this.#tasks.forEach((t) => {
100
+ // do not apply messages twice
101
+ if (msg.indexOf(t.message || this.#defaultMsg) === -1) {
102
+ msg = `${msg}${msg.length > 0 ? '\n---\n' : ''}${t.message || this.#defaultMsg}`;
103
+ }
104
+ });
105
+ return msg;
106
+ }
107
+ /**
108
+ * Clear list of pending tasks
109
+ */
110
+ clear() {
111
+ this.#tasks = [];
112
+ this.#tasksSource.next(this.#tasks);
113
+ }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
115
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingChangesService, providedIn: 'root' }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingChangesService, decorators: [{
118
+ type: Injectable,
119
+ args: [{
120
+ providedIn: 'root'
121
+ }]
122
+ }] });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHMUM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJRSxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLFdBQU0sR0FBdUMsRUFBRSxDQUFDO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxhQUFhLEVBQXNDLENBQUM7UUFDdkUsV0FBTSxHQUFtRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTFGLDBCQUEwQjtRQUMxQixnQkFBVyxHQUFHLHdHQUF3RyxDQUFDO0tBc0Z4SDtJQTdGQyxPQUFPLENBQWtCO0lBRXpCLE1BQU0sQ0FBMEM7SUFDaEQsWUFBWSxDQUEyRDtJQUd2RSwwQkFBMEI7SUFDMUIsV0FBVyxDQUE0RztJQUV2SDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE9BQWU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNu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QUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBN0ZVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcbmltcG9ydCB7IFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi9wZW5kaW5nLWNoYW5nZXMtY29tcG9uZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogRWRpdGluZ09ic2VydmVyIHNlcnZpY2UgaXMgdXNlZCB0byB0cmFjayBjaGFuZ2VzIG1hZGUgaW5zaWRlIHRoZSBhcHBsaWNhdGlvbiwgdGhhdCBzaG91bGQgcHJldmVudFxuICogZG9pbmcgc29tZXRoaW5nIG9yIGdvaW5nIHNvbWV3aGVyZSBiZWZvcmUgdGhlIGNoYW5nZXMgYXJlIHBlcnNpc3RlZCBvciBpZ25vcmVkLiBGb3IgZXhhbXBsZSB3aGVuXG4gKiB0aGUgdXNlciBzdGFydHMgZWRpdGluZyBmb3JtIGRhdGEgYW5kIHRyaWVzIHRvIG5hdmlnYXRlIGF3YXkgYmVmb3JlIHNhdmluZyB0aGUgY2hhbmdlcywgdGhpcyBzZXJ2aWNlXG4gKiB3aWxsIHRha2UgY2FyZSBvZiBub3RpZnlpbmcgdGhlIHVzZXIuXG4gKlxuICogSXQgaXMgd29ya2luZyBraW5kIG9mIGxpa2UgYSByZWdpc3RyeSBmb3Igb25nb2luZyB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgbW9uaXRvcmVkLiBFdmVyeSBjb21wb25lbnRcbiAqIHRoYXQgbmVlZHMgdG8gYmUgYXdhcmUgb2YgY2hhbmdlcyB0byBiZSBwZXJzaXN0ZWQgY2FuIHN0YXJ0IGEgdGFzayBhbmQgZmluaXNoIGl0IHdoZW4gZXZlcnl0aGluZyBpcyBkb25lLlxuICpcbiAqIE90aGVyIGNvbXBvbmVudHMgY2FuIGFzayB0aGUgc2VydmljZSBmb3IgcGVuZGluZyB0YXNrcyB0byBrbm93IHdoZXRoZXIgb3Igbm90IHRvIGV4ZWN1dGUgYW4gYWN0aW9uXG4gKiAoZS5nLiBsaXN0IGNvbXBvbmVudCB3aWxsIHN1YnNjcmliZSBhbmQgcHJldmVudCBzZWxlY3RpbmcgYW5vdGhlciBsaXN0IGl0ZW0sIGlmIGNoYW5nZXMgdG8gdGhlIHByZXZpb3VzIG9uZSBoYXZlbid0IGJlIGZpbmlzaGVkKVxuICpcbiAqIGFwcC5jb21wb25lbnQgd2lsbCBwcmV2ZW50IHJlbGV2YW50IHJvdXRlIGNoYW5nZXMgd2hpbGUgdGFza3MgYXJlIHBlbmRpbmcuXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ0NoYW5nZXNTZXJ2aWNlIHtcbiAgI2xvZ2dlciA9IGluamVjdChMb2dnZXIpO1xuXG4gICN0YXNrczogeyBpZDogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH1bXSA9IFtdO1xuICAjdGFza3NTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDx7IGlkOiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfVtdPigpO1xuICB0YXNrcyQ6IE9ic2VydmFibGU8eyBpZDogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH1bXT4gPSB0aGlzLiN0YXNrc1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvLyBwcml2YXRlIGN1c3RvbU1zZyA9ICcnO1xuICAjZGVmYXVsdE1zZyA9ICdZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIHRoZSBpbmRleCBkYXRhIG9mIGEgZm9ybSB0aGF0IGhhcyBub3QgYmVlbiBzYXZlZC4gVW5zYXZlZCBkYXRhIHdpbGwgYmUgbG9zdC4nO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0YXNrIHRvIGJlIHBlbmRpbmcuXG4gICAqIEBwYXJhbSBtZXNzYWdlIGFsZXJ0IG1lc3NhZ2VcbiAgICogQHJldHVybnMgVW5pcXVlIGlkIHRvIGJlIHVzZWQgZm9yIGZpbmlzaGluZyB0aGlzIHRhc2tcbiAgICovXG4gIHN0YXJ0VGFzayhtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhc2tJZCA9IFV0aWxzLnV1aWQoKTtcbiAgICB0aGlzLiN0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgbWVzc2FnZTogbWVzc2FnZSB9KTtcbiAgICB0aGlzLiNsb2dnZXIuZGVidWcoJ3N0YXJ0ZWQgcGVuZGluZyB0YXNrOiAnICsgdGFza0lkKTtcbiAgICB0aGlzLiN0YXNrc1NvdXJjZS5uZXh0KHRoaXMuI3Rhc2tzKTtcbiAgICByZXR1cm4gdGFza0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmlzaGVzIGEgdGFza1xuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSB0YXNrIHRvIGJlIGZpbmlzaGVkLiBUaGlzIGlzIHRoZSBvbmUgdGhlIGNvbXBvbmVudCBnb3QgZnJvbSBzdGFydFRhc2soKVxuICAgKi9cbiAgZmluaXNoVGFzayhpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLiN0YXNrcyA9IHRoaXMuI3Rhc2tzLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gaWQpO1xuICAgICAgdGhpcy4jdGFza3NTb3VyY2UubmV4dCh0aGlzLiN0YXNrcyk7XG4gICAgICB0aGlzLiNsb2dnZXIuZGVidWcoJ2ZpbmlzaGVkIHBlbmRpbmcgdGFzazogJyArIGlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VydmljZSBoYXMgcGVuZGluZyB0YXNrcy5cbiAgICogSWYgYW4gaWQgaXMgcHJvdmlkZWQsIHRoZSBtZXRob2Qgd2lsbCBjaGVjayBleGlzdGVuY2Ugb2Ygb25lIHNwZWNpZmljIHRhc2suXG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIHRhc2sgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgaGFzUGVuZGluZ1Rhc2soaWQ/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaWQgPyAhIXRoaXMuI3Rhc2tzLmxlbmd0aCA6IEFycmF5LmlzQXJyYXkoaWQpID8gdGhpcy4jdGFza3Muc29tZSgodmFsdWUpID0+IGlkLmluY2x1ZGVzKHZhbHVlLmlkKSkgOiB0aGlzLiN0YXNrcy5tYXAoKHQpID0+IHQuaWQpLmluY2x1ZGVzKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBjb21wb25lbnR8c2VydmljZSBoYXMgcGVuZGluZyB0YXNrcy5cbiAgICogQ2hlY2tzIHZpYSBjb25maXJtIGRpYWxvZ1xuICAgKiBAcGFyYW0gY29tcG9uZW50XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjaGVjayhjb21wb25lbnQ/OiBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Lmhhc1BlbmRpbmdDaGFuZ2VzID8gIWNvbXBvbmVudC5oYXNQZW5kaW5nQ2hhbmdlcygpIDogIXRoaXMuaGFzUGVuZGluZ1Rhc2soKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb25maXJtZWQgPSBjb25maXJtKHRoaXMuI2dldENvbmZpcm1NZXNzYWdlKCkpO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWNvbmZpcm1lZDtcbiAgICB9XG4gIH1cblxuICBjaGVja0ZvclBlbmRpbmdUYXNrcyh0YXNrSWRzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmhhc1BlbmRpbmdUYXNrKHRhc2tJZHMpKSB7XG4gICAgICBjb25zdCBjb25maXJtZWQgPSBjb25maXJtKHRoaXMuI2dldENvbmZpcm1NZXNzYWdlKCkpO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWNvbmZpcm1lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRDb25maXJtTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICB0aGlzLiN0YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAvLyBkbyBub3QgYXBwbHkgbWVzc2FnZXMgdHdpY2VcbiAgICAgIGlmIChtc2cuaW5kZXhPZih0Lm1lc3NhZ2UgfHwgdGhpcy4jZGVmYXVsdE1zZykgPT09IC0xKSB7XG4gICAgICAgIG1zZyA9IGAke21zZ30ke21zZy5sZW5ndGggPiAwID8gJ1xcbi0tLVxcbicgOiAnJ30ke3QubWVzc2FnZSB8fCB0aGlzLiNkZWZhdWx0TXNnfWA7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1zZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBsaXN0IG9mIHBlbmRpbmcgdGFza3NcbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuI3Rhc2tzID0gW107XG4gICAgdGhpcy4jdGFza3NTb3VyY2UubmV4dCh0aGlzLiN0YXNrcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvcHJlZGljdGlvbi9wcmVkaWN0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aW9uQ2xhc3NpZnlSZXN1bHQge1xuICBvYmplY3RJZDogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBQcmVkaWN0aW9uQ2xhc3NpZnlSZXN1bHRJdGVtW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3Rpb25DbGFzc2lmeVJlc3VsdEl0ZW0ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHByb2JhYmlsaXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZGljdGlvbkV4dHJhY3RSZXN1bHQge1xuICBvYmplY3RJZDogc3RyaW5nO1xuICAvLyBSZWNvcmQgd2hlcmUgdGhlIGtleSBpcyB0aGUgcHJvcGVydHkgbmFtZSBhbmQgdGhlIHZhbHVlIGlzIGFuXG4gIC8vIGFycmF5IG9mIHByZWRpY3Rpb25zIGZvciB0aGF0IHByb3BlcnR5XG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIFByZWRpY3Rpb25FeHRyYWN0UmVzdWx0SXRlbVtdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aW9uRXh0cmFjdFJlc3VsdEl0ZW0ge1xuICB2YWx1ZTogc3RyaW5nO1xuICBwcm9iYWJpbGl0eTogbnVtYmVyO1xuICBib3VuZGluZ0JveD86IG51bWJlcltdO1xuICBwYWdlPzogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,60 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { BackendService } from '../backend/backend.service';
4
+ import { BaseObjectTypeField } from '../system/system.enum';
5
+ import { ApiBase } from './../backend/api.enum';
6
+ import * as i0 from "@angular/core";
7
+ export class PredictionService {
8
+ #backend = inject(BackendService);
9
+ classify(objectIDs, schemaObjectTypeId = 'CLASSIFICATION') {
10
+ const objects = objectIDs.map((objectID) => ({
11
+ properties: {
12
+ [BaseObjectTypeField.OBJECT_ID]: {
13
+ value: objectID
14
+ }
15
+ }
16
+ }));
17
+ return this.#backend.post(`/classification?schemaObjectTypeId=${schemaObjectTypeId}`, { objects }, ApiBase.predict).pipe(map((res) => res.predictions.reduce((acc, curr) => ({
18
+ ...acc,
19
+ [curr[BaseObjectTypeField.OBJECT_ID].value]: {
20
+ objectId: curr[BaseObjectTypeField.OBJECT_ID].value,
21
+ properties: Object.keys(curr.properties).map((type) => ({
22
+ type,
23
+ probability: curr.properties[type].probability
24
+ }))
25
+ }
26
+ }), {})));
27
+ }
28
+ /**
29
+ * @param schemaObjectTypeId
30
+ * @param objectIDs
31
+ * @returns Observable<Record<string, PredictionClassifyResult>> string is objectID
32
+ */
33
+ extract(schemaObjectTypeId, objectIDs) {
34
+ const searchParams = new URLSearchParams();
35
+ searchParams.append('schemaObjectTypeId', schemaObjectTypeId);
36
+ const objects = objectIDs.map((objectID) => ({
37
+ properties: {
38
+ [BaseObjectTypeField.OBJECT_ID]: {
39
+ value: objectID
40
+ }
41
+ }
42
+ }));
43
+ return this.#backend.post(`/extraction?${searchParams.toString()}`, { objects }, ApiBase.predict).pipe(map((res) => res.predictions.reduce((acc, curr) => ({
44
+ ...acc,
45
+ [curr[BaseObjectTypeField.OBJECT_ID].value]: {
46
+ objectId: curr[BaseObjectTypeField.OBJECT_ID].value,
47
+ properties: curr.properties
48
+ }
49
+ }), {})));
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PredictionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
52
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PredictionService, providedIn: 'root' }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PredictionService, decorators: [{
55
+ type: Injectable,
56
+ args: [{
57
+ providedIn: 'root'
58
+ }]
59
+ }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3ByZWRpY3Rpb24vcHJlZGljdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU1oRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbEMsUUFBUSxDQUFDLFNBQW1CLEVBQUUsa0JBQWtCLEdBQUcsZ0JBQWdCO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0MsVUFBVSxFQUFFO2dCQUNWLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQy9CLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdEgsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDZixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDcEIsQ0FBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLEdBQUcsR0FBRztZQUNOLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ25ELFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzNELElBQUk7b0JBQ0osV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVztpQkFDL0MsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLEVBQ0YsRUFBRSxDQUNILENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsa0JBQTBCLEVBQUUsU0FBbUI7UUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUMzQyxZQUFZLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxVQUFVLEVBQUU7Z0JBQ1YsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDL0IsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3BHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ1YsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQ3BCLENBQUMsR0FBUSxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QixHQUFHLEdBQUc7WUFDTixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLO2dCQUNuRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUI7U0FDRixDQUFDLEVBQ0YsRUFBRSxDQUNILENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0E3RFUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFja2VuZFNlcnZpY2UgfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlT2JqZWN0VHlwZUZpZWxkIH0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5lbnVtJztcbmltcG9ydCB7IEFwaUJhc2UgfSBmcm9tICcuLy4uL2JhY2tlbmQvYXBpLmVudW0nO1xuaW1wb3J0IHsgUHJlZGljdGlvbkNsYXNzaWZ5UmVzdWx0LCBQcmVkaWN0aW9uRXh0cmFjdFJlc3VsdCB9IGZyb20gJy4vcHJlZGljdGlvbi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcmVkaWN0aW9uU2VydmljZSB7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcblxuICBjbGFzc2lmeShvYmplY3RJRHM6IHN0cmluZ1tdLCBzY2hlbWFPYmplY3RUeXBlSWQgPSAnQ0xBU1NJRklDQVRJT04nKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBQcmVkaWN0aW9uQ2xhc3NpZnlSZXN1bHQ+PiB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IG9iamVjdElEcy5tYXAoKG9iamVjdElEKSA9PiAoe1xuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSURdOiB7XG4gICAgICAgICAgdmFsdWU6IG9iamVjdElEXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5wb3N0KGAvY2xhc3NpZmljYXRpb24/c2NoZW1hT2JqZWN0VHlwZUlkPSR7c2NoZW1hT2JqZWN0VHlwZUlkfWAsIHsgb2JqZWN0cyB9LCBBcGlCYXNlLnByZWRpY3QpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PlxuICAgICAgICByZXMucHJlZGljdGlvbnMucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgY3VycjogYW55KSA9PiAoe1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2N1cnJbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSURdLnZhbHVlXToge1xuICAgICAgICAgICAgICBvYmplY3RJZDogY3VycltCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9JRF0udmFsdWUsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGN1cnIucHJvcGVydGllcykubWFwKCh0eXBlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICBwcm9iYWJpbGl0eTogY3Vyci5wcm9wZXJ0aWVzW3R5cGVdLnByb2JhYmlsaXR5XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9XG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY2hlbWFPYmplY3RUeXBlSWRcbiAgICogQHBhcmFtIG9iamVjdElEc1xuICAgKiBAcmV0dXJucyAgT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBQcmVkaWN0aW9uQ2xhc3NpZnlSZXN1bHQ+PiBzdHJpbmcgaXMgb2JqZWN0SURcbiAgICovXG4gIGV4dHJhY3Qoc2NoZW1hT2JqZWN0VHlwZUlkOiBzdHJpbmcsIG9iamVjdElEczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFByZWRpY3Rpb25FeHRyYWN0UmVzdWx0Pj4ge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKCdzY2hlbWFPYmplY3RUeXBlSWQnLCBzY2hlbWFPYmplY3RUeXBlSWQpO1xuICAgIGNvbnN0IG9iamVjdHMgPSBvYmplY3RJRHMubWFwKChvYmplY3RJRCkgPT4gKHtcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXToge1xuICAgICAgICAgIHZhbHVlOiBvYmplY3RJRFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQucG9zdChgL2V4dHJhY3Rpb24/JHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gLCB7IG9iamVjdHMgfSwgQXBpQmFzZS5wcmVkaWN0KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+XG4gICAgICAgIHJlcy5wcmVkaWN0aW9ucy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYzogYW55LCBjdXJyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBbY3VycltCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9JRF0udmFsdWVdOiB7XG4gICAgICAgICAgICAgIG9iamVjdElkOiBjdXJyW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXS52YWx1ZSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY3Vyci5wcm9wZXJ0aWVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ export var Operator;
2
+ (function (Operator) {
3
+ Operator["EQUAL"] = "eq";
4
+ Operator["EEQUAL"] = "eeq";
5
+ Operator["IN"] = "in";
6
+ Operator["GREATER_THAN"] = "gt";
7
+ Operator["GREATER_OR_EQUAL"] = "gte";
8
+ Operator["LESS_THAN"] = "lt";
9
+ Operator["LESS_OR_EQUAL"] = "lte";
10
+ Operator["INTERVAL"] = "gtlt";
11
+ Operator["INTERVAL_INCLUDE_BOTH"] = "gtelte";
12
+ Operator["INTERVAL_INCLUDE_TO"] = "gtlte";
13
+ Operator["INTERVAL_INCLUDE_FROM"] = "gtelt";
14
+ Operator["RANGE"] = "rg";
15
+ Operator["LIKE"] = "like";
16
+ Operator["CONTAINS"] = "contains"; // contains
17
+ })(Operator || (Operator = {}));
18
+ export const OperatorLabel = {
19
+ /** equal */
20
+ EQUAL: '=',
21
+ /** exact equal */
22
+ EEQUAL: '==',
23
+ /** match at least one of the provided values (value has to be an array) */
24
+ IN: '~',
25
+ /** greater than */
26
+ GREATER_THAN: '>',
27
+ /** greater than or equal */
28
+ GREATER_OR_EQUAL: '≽', //
29
+ LESS_THAN: '<', // less than
30
+ LESS_OR_EQUAL: '≼', // less than or equal
31
+ INTERVAL: '<>', // interval
32
+ INTERVAL_INCLUDE_BOTH: '-', // interval include left and right
33
+ INTERVAL_INCLUDE_TO: '>-', // interval include right
34
+ INTERVAL_INCLUDE_FROM: '-<', // interval include left
35
+ RANGE: '=', // aggegation ranges
36
+ LIKE: '~', // like
37
+ CONTAINS: '~' // contains
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2guc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkRBLE1BQU0sQ0FBTixJQUFZLFFBZVg7QUFmRCxXQUFZLFFBQVE7SUFDbEIsd0JBQVksQ0FBQTtJQUNaLDBCQUFjLENBQUE7SUFDZCxxQkFBUyxDQUFBO0lBQ1QsK0JBQW1CLENBQUE7SUFDbkIsb0NBQXdCLENBQUE7SUFDeEIsNEJBQWdCLENBQUE7SUFDaEIsaUNBQXFCLENBQUE7SUFDckIsNkJBQWlCLENBQUE7SUFDakIsNENBQWdDLENBQUE7SUFDaEMseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0Isd0JBQVksQ0FBQTtJQUNaLHlCQUFhLENBQUE7SUFDYixpQ0FBcUIsQ0FBQSxDQUFDLFdBQVc7QUFDbkMsQ0FBQyxFQWZXLFFBQVEsS0FBUixRQUFRLFFBZW5CO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFlBQVk7SUFDWixLQUFLLEVBQUUsR0FBRztJQUNWLGtCQUFrQjtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLDRFQUE0RTtJQUM1RSxFQUFFLEVBQUUsR0FBRztJQUNQLG1CQUFtQjtJQUNuQixZQUFZLEVBQUUsR0FBRztJQUNqQiw0QkFBNEI7SUFDNUIsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDekIsU0FBUyxFQUFFLEdBQUcsRUFBRSxZQUFZO0lBQzVCLGFBQWEsRUFBRSxHQUFHLEVBQUUscUJBQXFCO0lBQ3pDLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVztJQUMzQixxQkFBcUIsRUFBRSxHQUFHLEVBQUUsa0NBQWtDO0lBQzlELG1CQUFtQixFQUFFLElBQUksRUFBRSx5QkFBeUI7SUFDcEQscUJBQXFCLEVBQUUsSUFBSSxFQUFFLHdCQUF3QjtJQUNyRCxLQUFLLEVBQUUsR0FBRyxFQUFFLG9CQUFvQjtJQUNoQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU87SUFDbEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxXQUFXO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50U3RyZWFtLCBDb3JlQXBpT2JqZWN0IH0gZnJvbSAnLi4vZG1zL2Rtcy5zZXJ2aWNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUXVlcnkge1xuICAvLyAtLSBGdWxsdGV4dCAtLVxuICAvLyBTZWFyY2ggdGVybVxuICB0ZXJtPzogc3RyaW5nO1xuICAvLyB3aGVyZSB0byBzZWFyY2hcbiAgc2NvcGU/OiAnYWxsJyB8ICdtZXRhZGF0YScgfCAnY29udGVudCc7XG5cbiAgLy8gLS0gUGFnaW5hdGlvbiAtLVxuICAvLyBOdW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuXG4gIHNpemU/OiBudW1iZXI7XG4gIC8vIE51bWJlciBvZiBpdGVtcyB0byBza2lwIChvZmZzZXQpXG4gIGZyb20/OiBudW1iZXI7XG5cbiAgLy8gLS0gRmllbGRzIC0tXG4gIC8vIE9iamVjdCBmaWVsZHMgdG8gcmV0dXJuXG4gIGZpZWxkcz86IHN0cmluZ1tdO1xuXG4gIC8vIC0tIEFnZ3JlZ2F0aW9ucyAtLVxuICAvLyBBZ2dyZWdhdGlvbnMgdG8gcmV0dXJuXG4gIGFnZ3M/OiBzdHJpbmdbXTtcblxuICAvLyAtLSBPYmplY3QgVHlwZXMgLS1cbiAgLy8gT2JqZWN0IHR5cGVzIChpbmNsLiBTT1RzKSB0byBzZWFyY2ggZm9yXG4gIHR5cGVzPzogc3RyaW5nW107XG5cbiAgLy8gLS0gRmlsdGVycyAtLVxuICAvLyBGaWx0ZXIgYnkgZmllbGRcbiAgZmlsdGVycz86IFNlYXJjaEZpbHRlcltdO1xuICAvLyBmaWx0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGFibGUgY29sdW1uc1xuICB0YWJsZUZpbHRlcnM/OiBUYWJsZUZpbHRlcltdO1xuXG4gIC8vIC0tIFNvcnQgLS1cbiAgLy8gU29ydCBieSBmaWVsZFxuICBzb3J0PzogU29ydE9wdGlvbltdO1xuICBpbmNsdWRlUGVybWlzc2lvbnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRPcHRpb24ge1xuICBmaWVsZDogc3RyaW5nO1xuICBvcmRlcjogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoRmlsdGVyIHtcbiAgLy8gZmllbGQgdG8gZmlsdGVyIGJ5XG4gIGY6IHN0cmluZztcbiAgbzogT3BlcmF0b3I7XG4gIC8vIHZhbHVlIGZvciB0aGUgZmlsdGVyXG4gIHYxOiB1bmtub3duO1xuICAvLyBvcHRpb25hbCBzZWNvbmQgdmFsdWUgZm9yIGludGVydmFsIGZpbHRlcnNcbiAgdjI/OiB1bmtub3duO1xuICAvLyB3aGV0aGVyIHRvIG5lZ2F0ZSB0aGUgZmlsdGVyXG4gIHVzZU5vdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVGaWx0ZXIge1xuICB0YWJsZTogc3RyaW5nO1xuICBjb2x1bW5GaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuICBFUVVBTCA9ICdlcScsIC8vIGVxdWFsXG4gIEVFUVVBTCA9ICdlZXEnLCAvLyBleGFjdCBlcXVhbFxuICBJTiA9ICdpbicsIC8vIG1hdGNoIGF0IGxlYXN0IG9uZSBvZiB0aGUgcHJvdmlkZWQgdmFsdWVzICh2YWx1ZSBoYXMgdG8gYmUgYW4gYXJyYXkpXG4gIEdSRUFURVJfVEhBTiA9ICdndCcsIC8vIGdyZWF0ZXIgdGhhblxuICBHUkVBVEVSX09SX0VRVUFMID0gJ2d0ZScsIC8vIGdyZWF0ZXIgdGhhbiBvciBlcXVhbFxuICBMRVNTX1RIQU4gPSAnbHQnLCAvLyBsZXNzIHRoYW5cbiAgTEVTU19PUl9FUVVBTCA9ICdsdGUnLCAvLyBsZXNzIHRoYW4gb3IgZXF1YWxcbiAgSU5URVJWQUwgPSAnZ3RsdCcsIC8vIGludGVydmFsXG4gIElOVEVSVkFMX0lOQ0xVREVfQk9USCA9ICdndGVsdGUnLCAvLyBpbnRlcnZhbCBpbmNsdWRlIGxlZnQgYW5kIHJpZ2h0XG4gIElOVEVSVkFMX0lOQ0xVREVfVE8gPSAnZ3RsdGUnLCAvLyBpbnRlcnZhbCBpbmNsdWRlIHJpZ2h0XG4gIElOVEVSVkFMX0lOQ0xVREVfRlJPTSA9ICdndGVsdCcsIC8vIGludGVydmFsIGluY2x1ZGUgbGVmdFxuICBSQU5HRSA9ICdyZycsIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXG4gIExJS0UgPSAnbGlrZScsIC8vIGxpa2VcbiAgQ09OVEFJTlMgPSAnY29udGFpbnMnIC8vIGNvbnRhaW5zXG59XG5leHBvcnQgY29uc3QgT3BlcmF0b3JMYWJlbCA9IHtcbiAgLyoqIGVxdWFsICovXG4gIEVRVUFMOiAnPScsXG4gIC8qKiBleGFjdCBlcXVhbCAqL1xuICBFRVFVQUw6ICc9PScsXG4gIC8qKiBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHByb3ZpZGVkIHZhbHVlcyAodmFsdWUgaGFzIHRvIGJlIGFuIGFycmF5KSAgKi9cbiAgSU46ICd+JyxcbiAgLyoqIGdyZWF0ZXIgdGhhbiAqL1xuICBHUkVBVEVSX1RIQU46ICc+JyxcbiAgLyoqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAqL1xuICBHUkVBVEVSX09SX0VRVUFMOiAn4om9JywgLy9cbiAgTEVTU19USEFOOiAnPCcsIC8vIGxlc3MgdGhhblxuICBMRVNTX09SX0VRVUFMOiAn4om8JywgLy8gbGVzcyB0aGFuIG9yIGVxdWFsXG4gIElOVEVSVkFMOiAnPD4nLCAvLyBpbnRlcnZhbFxuICBJTlRFUlZBTF9JTkNMVURFX0JPVEg6ICctJywgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0IGFuZCByaWdodFxuICBJTlRFUlZBTF9JTkNMVURFX1RPOiAnPi0nLCAvLyBpbnRlcnZhbCBpbmNsdWRlIHJpZ2h0XG4gIElOVEVSVkFMX0lOQ0xVREVfRlJPTTogJy08JywgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0XG4gIFJBTkdFOiAnPScsIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXG4gIExJS0U6ICd+JywgLy8gbGlrZVxuICBDT05UQUlOUzogJ34nIC8vIGNvbnRhaW5zXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzcG9uc2Uge1xuICBoYXNNb3JlSXRlbXM6IGJvb2xlYW47XG4gIG51bUl0ZW1zOiBudW1iZXI7XG4gIHRvdGFsTnVtSXRlbXM6IG51bWJlcjtcbiAgb2JqZWN0czogQ29yZUFwaU9iamVjdFtdO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBwcm92aWRpbmcgYSBzZWFyY2ggc2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdCB7XG4gIGhhc01vcmVJdGVtczogYm9vbGVhbjtcbiAgdG90YWxOdW1JdGVtczogbnVtYmVyO1xuICBpdGVtczogU2VhcmNoUmVzdWx0SXRlbVtdO1xuICAvKipcbiAgICogb2JqZWN0IHR5cGVzIHdpdGhpbiB0aGUgcmVzdWx0XG4gICAqL1xuXG4gIG9iamVjdFR5cGVzOiBzdHJpbmdbXTtcbn1cbi8qKlxuICogSW50ZXJmYWNlIGZvciB0aGUgaXRlbSBvZiBzZWFyY2ggcmVzdWx0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdEl0ZW0ge1xuICBvYmplY3RUeXBlSWQ6IHN0cmluZztcbiAgY29udGVudD86IFNlYXJjaFJlc3VsdENvbnRlbnQ7XG4gIHBlcm1pc3Npb25zPzogU2VhcmNoUmVzdWx0UGVybWlzc2lvbnM7XG4gIGZpZWxkczogTWFwPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSZXN1bHRQZXJtaXNzaW9ucyB7XG4gIHJlYWQ6IEFycmF5PCdtZXRhZGF0YScgfCAnY29udGVudCc+O1xuICB3cml0ZTogQXJyYXk8J21ldGFkYXRhJyB8ICdjb250ZW50Jz47XG4gIGRlbGV0ZTogQXJyYXk8J29iamVjdCcgfCAnY29udGVudCc+O1xufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hSZXN1bHRDb250ZW50ID0gQ29udGVudFN0cmVhbTtcbi8vIC8qKlxuLy8gICogSW50ZXJmYWNlIHByb3ZpZGluZyBzZWFyY2ggcXVlcnkgcHJvcGVydGllcywgdGhhdCBjYW4gYmUgc2VuZCB0b1xuLy8gICogdGhlIHNlYXJjaCBzZXJ2aWNlXG4vLyAgKi9cbi8vIGV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUXVlcnlQcm9wZXJ0aWVzIHtcbi8vICAgdGVybT86IHN0cmluZztcbi8vICAgc2l6ZT86IG51bWJlcjtcbi8vICAgZmllbGRzPzogc3RyaW5nW107XG4vLyAgIGZyb20/OiBudW1iZXI7XG4vLyAgIGFnZ3M/OiBzdHJpbmdbXTtcbi8vICAgbWF4SXRlbXM/OiBudW1iZXI7XG4vLyAgIHR5cGVzPzogc3RyaW5nW107IC8vIG1peGVkIGxpc3Qgb2YgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IG9iamVjdCB0eXBlc1xuLy8gICBsb3RzPzogc3RyaW5nW107IC8vIGxpc3Qgb2YgbGVhZGluZyBvYmplY3QgdHlwZXNcbi8vICAgZmlsdGVycz86IGFueTtcbi8vICAgaGlkZGVuRmlsdGVycz86IGFueTsgLy8gaGlkZGVuIGZpbHRlcnMgdGhhdCB3aWxsIGJlIGNvbWJpbmVkIHdpdGggU2VhcmNoUXVlcnkgZmlsdGVycyB2aWEgc2VhcmNoIHNlcnZpY2Vcbi8vICAgdGFibGVGaWx0ZXJzPzogYW55OyAvLyB0YWJsZSBmaWx0ZXJzIHRoYXQgYWxsb3dzIHRvIHNlYXJjaCBjb21wbGV4IHF1ZXJpZXNcbi8vICAgc29ydD86IGFueTtcbi8vICAgdGFncz86IGFueTtcbi8vICAgc2NvcGU/OiAnYWxsJyB8ICdtZXRhZGF0YScgfCAnY29udGVudCc7XG4vLyB9XG5cbi8qKlxuICogSW50ZXJmYWNlIHByb3ZpZGluZyB0aGUgZXN0aW1hdGVkIHJlc3VsdCBvZiB0aGUgY3VycmVudCBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVSZXN1bHQge1xuICAvKipcbiAgICogbnVtYmVyIG9mIHJlc3VsdHMgZm91bmRcbiAgICovXG4gIHRvdGFsTnVtSXRlbXM6IG51bWJlcjtcbiAgYWdncmVnYXRpb25zOiBBZ2dyZWdhdGlvbltdO1xufVxuXG4vKipcbiAqIFByb3BlcnR5IG9mIGEgb25lIHNlYXJjaCBxdWVyeSBhZ2dyZWdhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0aW9uIHtcbiAgYWdnS2V5OiBzdHJpbmc7XG4gIGVudHJpZXM6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBjb3VudDogbnVtYmVyO1xuICB9W107XG59XG4iXX0=
@@ -0,0 +1,178 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { BackendService } from '../backend/backend.service';
4
+ import { BaseObjectTypeField, ContentStreamField } from '../system/system.enum';
5
+ import * as i0 from "@angular/core";
6
+ export class SearchService {
7
+ #backend = inject(BackendService);
8
+ static { this.DEFAULT_QUERY_SIZE = 50; }
9
+ /**
10
+ * Execute a search query ans transform the result to a SearchResult object
11
+ * @param query The search query
12
+ * @returns Observable of a SearchResult
13
+ */
14
+ search(query) {
15
+ return this.searchRaw(query).pipe(map((res) => this.toSearchResult(res)));
16
+ }
17
+ /**
18
+ * Execute a raw search query and return the result as is.
19
+ * @param query The search query
20
+ * @returns Observable of the raw search result
21
+ */
22
+ searchRaw(query) {
23
+ if (!query.size)
24
+ query.size = SearchService.DEFAULT_QUERY_SIZE;
25
+ return this.#backend.post(`/dms/objects/search`, query);
26
+ }
27
+ /**
28
+ * Search for objects in the dms using CMIS like SQL syntax.
29
+ * @param statement The query statement
30
+ * @param size The number of items to return
31
+ * @returns Observable of a SearchResult
32
+ */
33
+ searchCmis(statement, size = 50) {
34
+ return this.#backend
35
+ .post('/dms/objects/search', {
36
+ query: {
37
+ statement,
38
+ skipCount: 0,
39
+ maxItems: size,
40
+ handleDeletedDocuments: 'DELETED_DOCUMENTS_EXCLUDE'
41
+ }
42
+ }
43
+ // Using API-WEB because it enriches the response with additional information (resolved user names, etc.)
44
+ // ApiBase.core
45
+ )
46
+ .pipe(map((res) => this.toSearchResult(res)));
47
+ }
48
+ /**
49
+ * Fetch aggragations for a given query.
50
+ * @param q The query
51
+ * @param aggregations List of aggregations to be fetched (e.g. `enaio:objectTypeId`
52
+ * to get an aggregation of object types)
53
+ */
54
+ aggregate(q, aggregations) {
55
+ q.aggs = aggregations;
56
+ return this.searchRaw(q).pipe(map((res) => this.#toAggregateResult(res, aggregations)));
57
+ }
58
+ /**
59
+ * Map search result from the backend to applications AggregateResult object
60
+ * @param searchResponse The backend response
61
+ * @param aggregations The aggregations to be fetched
62
+ */
63
+ #toAggregateResult(searchResponse, aggregations) {
64
+ const agg = [];
65
+ if (aggregations) {
66
+ aggregations.forEach((a) => {
67
+ const ag = {
68
+ aggKey: a,
69
+ entries: searchResponse.objects.map((o) => ({
70
+ key: o.properties[a].value,
71
+ count: o.properties['OBJECT_COUNT'].value
72
+ }))
73
+ };
74
+ agg.push(ag);
75
+ });
76
+ }
77
+ return {
78
+ totalNumItems: searchResponse.totalNumItems,
79
+ aggregations: agg
80
+ };
81
+ }
82
+ /**
83
+ * Go to a page of a search result.
84
+ * @param searchResult The search result (that supports pagination)
85
+ * @param page The number of the page to go to
86
+ */
87
+ getPage(query, page) {
88
+ query.from = (page - 1) * (query.size || SearchService.DEFAULT_QUERY_SIZE);
89
+ return this.search(query);
90
+ }
91
+ /**
92
+ * Map search result from the backend to applications SearchResult object
93
+ * @param searchResponse The backend response
94
+ */
95
+ toSearchResult(searchResponse) {
96
+ const resultListItems = [];
97
+ const objectTypes = [];
98
+ searchResponse.objects.forEach((o) => {
99
+ const fields = new Map();
100
+ // process properties section of result
101
+ Object.keys(o.properties).forEach((key) => {
102
+ let value = o.properties[key].value;
103
+ if (o.properties[key].clvalue) {
104
+ // table fields will have a clientValue too ...
105
+ value = o.properties[key].clvalue;
106
+ // ... and also may contain values that need to be resolved
107
+ if (o.properties[key].resolvedValues) {
108
+ value.forEach((v) => {
109
+ Object.keys(v).forEach((k) => {
110
+ const resValue = Array.isArray(v[k]) ? v[k].map((i) => o.properties[key].resolvedValues[i]) : o.properties[key].resolvedValues[v[k]];
111
+ if (resValue) {
112
+ v[`${k}_title`] = resValue;
113
+ }
114
+ });
115
+ });
116
+ }
117
+ }
118
+ fields.set(key, value);
119
+ if (o.properties[key].title) {
120
+ fields.set(key + '_title', o.properties[key].title);
121
+ }
122
+ });
123
+ // process contentStreams section of result if available.
124
+ // Objects that don't have files attached won't have this section
125
+ let content;
126
+ if (o.contentStreams && o.contentStreams.length > 0) {
127
+ // we assume that each result object only has ONE file attached, altough
128
+ // this is an array and there may be more
129
+ const contentStream = o.contentStreams[0];
130
+ // also add contentstream related fields to the result fields
131
+ fields.set(ContentStreamField.LENGTH, contentStream.length);
132
+ fields.set(ContentStreamField.MIME_TYPE, contentStream.mimeType);
133
+ fields.set(ContentStreamField.FILENAME, contentStream.fileName);
134
+ fields.set(ContentStreamField.ID, contentStream.contentStreamId);
135
+ fields.set(ContentStreamField.RANGE, contentStream.contentStreamRange);
136
+ fields.set(ContentStreamField.REPOSITORY_ID, contentStream.repositoryId);
137
+ fields.set(ContentStreamField.DIGEST, contentStream.digest);
138
+ fields.set(ContentStreamField.ARCHIVE_PATH, contentStream.archivePath);
139
+ content = {
140
+ contentStreamId: contentStream.contentStreamId,
141
+ repositoryId: contentStream.repositoryId,
142
+ range: contentStream.range,
143
+ digest: contentStream.digest,
144
+ archivePath: contentStream.archivePath,
145
+ fileName: contentStream.fileName,
146
+ mimeType: contentStream.mimeType,
147
+ size: contentStream.length
148
+ };
149
+ }
150
+ const objectTypeId = o.properties[BaseObjectTypeField.OBJECT_TYPE_ID] ? o.properties[BaseObjectTypeField.OBJECT_TYPE_ID].value : null;
151
+ if (objectTypes.indexOf(objectTypeId) === -1) {
152
+ objectTypes.push(objectTypeId);
153
+ }
154
+ resultListItems.push({
155
+ objectTypeId,
156
+ content,
157
+ fields,
158
+ permissions: o.permissions
159
+ });
160
+ });
161
+ const result = {
162
+ hasMoreItems: searchResponse.hasMoreItems,
163
+ totalNumItems: searchResponse.totalNumItems,
164
+ items: resultListItems,
165
+ objectTypes
166
+ };
167
+ return result;
168
+ }
169
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
170
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, providedIn: 'root' }); }
171
+ }
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, decorators: [{
173
+ type: Injectable,
174
+ args: [{
175
+ providedIn: 'root'
176
+ }]
177
+ }] });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTWhGLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7YUFFM0IsdUJBQWtCLEdBQUcsRUFBRSxBQUFMLENBQU07SUFFL0I7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBa0I7UUFDMUIsSUFBRyxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsU0FBaUIsRUFBRSxJQUFJLEdBQUcsRUFBRTtR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Z3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYWNrZW5kU2VydmljZSB9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VPYmplY3RUeXBlRmllbGQsIENvbnRlbnRTdHJlYW1GaWVsZCB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uZW51bSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGVSZXN1bHQsIEFnZ3JlZ2F0aW9uLCBTZWFyY2hRdWVyeSwgU2VhcmNoUmVzcG9uc2UsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGVudCwgU2VhcmNoUmVzdWx0SXRlbSB9IGZyb20gJy4vc2VhcmNoLnNlcnZpY2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcblxuICBzdGF0aWMgREVGQVVMVF9RVUVSWV9TSVpFID0gNTA7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzZWFyY2ggcXVlcnkgYW5zIHRyYW5zZm9ybSB0aGUgcmVzdWx0IHRvIGEgU2VhcmNoUmVzdWx0IG9iamVjdFxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHNlYXJjaCBxdWVyeVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGEgU2VhcmNoUmVzdWx0XG4gICAqL1xuICBzZWFyY2gocXVlcnk6IFNlYXJjaFF1ZXJ5KTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hSYXcocXVlcnkpLnBpcGUobWFwKChyZXMpID0+IHRoaXMudG9TZWFyY2hSZXN1bHQocmVzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSByYXcgc2VhcmNoIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBpcy5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBzZWFyY2ggcXVlcnlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmF3IHNlYXJjaCByZXN1bHRcbiAgICovXG4gIHNlYXJjaFJhdyhxdWVyeTogU2VhcmNoUXVlcnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmKCFxdWVyeS5zaXplKSBxdWVyeS5zaXplID0gU2VhcmNoU2VydmljZS5ERUZBVUxUX1FVRVJZX1NJWkU7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQucG9zdChgL2Rtcy9vYmplY3RzL3NlYXJjaGAsIHF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG9iamVjdHMgaW4gdGhlIGRtcyB1c2luZyBDTUlTIGxpa2UgU1FMIHN5bnRheC5cbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgcXVlcnkgc3RhdGVtZW50XG4gICAqIEBwYXJhbSBzaXplIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgYSBTZWFyY2hSZXN1bHRcbiAgICovXG4gIHNlYXJjaENtaXMoc3RhdGVtZW50OiBzdHJpbmcsIHNpemUgPSA1MCk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5wb3N0KFxuICAgICAgICAnL2Rtcy9vYmplY3RzL3NlYXJjaCcsXG4gICAgICAgIHtcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgICAgICAgbWF4SXRlbXM6IHNpemUsXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVkRG9jdW1lbnRzOiAnREVMRVRFRF9ET0NVTUVOVFNfRVhDTFVERSdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVXNpbmcgQVBJLVdFQiBiZWNhdXNlIGl0IGVucmljaGVzIHRoZSByZXNwb25zZSB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKHJlc29sdmVkIHVzZXIgbmFtZXMsIGV0Yy4pXG4gICAgICAgIC8vIEFwaUJhc2UuY29yZVxuICAgICAgKVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHRoaXMudG9TZWFyY2hSZXN1bHQocmVzIGFzIFNlYXJjaFJlc3BvbnNlKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFnZ3JhZ2F0aW9ucyBmb3IgYSBnaXZlbiBxdWVyeS5cbiAgICogQHBhcmFtIHEgVGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSBhZ2dyZWdhdGlvbnMgTGlzdCBvZiBhZ2dyZWdhdGlvbnMgdG8gYmUgZmV0Y2hlZCAoZS5nLiBgZW5haW86b2JqZWN0VHlwZUlkYFxuICAgKiB0byBnZXQgYW4gYWdncmVnYXRpb24gb2Ygb2JqZWN0IHR5cGVzKVxuICAgKi9cbiAgYWdncmVnYXRlKHE6IFNlYXJjaFF1ZXJ5LCBhZ2dyZWdhdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgcS5hZ2dzID0gYWdncmVnYXRpb25zO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFJhdyhxKS5waXBlKG1hcCgocmVzKSA9PiB0aGlzLiN0b0FnZ3JlZ2F0ZVJlc3VsdChyZXMsIGFnZ3JlZ2F0aW9ucykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgc2VhcmNoIHJlc3VsdCBmcm9tIHRoZSBiYWNrZW5kIHRvIGFwcGxpY2F0aW9ucyBBZ2dyZWdhdGVSZXN1bHQgb2JqZWN0XG4gICAqIEBwYXJhbSBzZWFyY2hSZXNwb25zZSBUaGUgYmFja2VuZCByZXNwb25zZVxuICAgKiBAcGFyYW0gYWdncmVnYXRpb25zIFRoZSBhZ2dyZWdhdGlvbnMgdG8gYmUgZmV0Y2hlZFxuICAgKi9cbiAgI3RvQWdncmVnYXRlUmVzdWx0KHNlYXJjaFJlc3BvbnNlOiBhbnksIGFnZ3JlZ2F0aW9ucz86IHN0cmluZ1tdKTogQWdncmVnYXRlUmVzdWx0IHtcbiAgICBjb25zdCBhZ2c6IEFnZ3JlZ2F0aW9uW10gPSBbXTtcbiAgICBpZiAoYWdncmVnYXRpb25zKSB7XG4gICAgICBhZ2dyZWdhdGlvbnMuZm9yRWFjaCgoYSkgPT4ge1xuICAgICAgICBjb25zdCBhZzogQWdncmVnYXRpb24gPSB7XG4gICAgICAgICAgYWdnS2V5OiBhLFxuICAgICAgICAgIGVudHJpZXM6IHNlYXJjaFJlc3BvbnNlLm9iamVjdHMubWFwKChvOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBrZXk6IG8ucHJvcGVydGllc1thXS52YWx1ZSxcbiAgICAgICAgICAgIGNvdW50OiBvLnByb3BlcnRpZXNbJ09CSkVDVF9DT1VOVCddLnZhbHVlXG4gICAgICAgICAgfSkpXG4gICAgICAgIH07XG4gICAgICAgIGFnZy5wdXNoKGFnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxOdW1JdGVtczogc2VhcmNoUmVzcG9uc2UudG90YWxOdW1JdGVtcyxcbiAgICAgIGFnZ3JlZ2F0aW9uczogYWdnXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0byBhIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0LlxuICAgKiBAcGFyYW0gc2VhcmNoUmVzdWx0IFRoZSBzZWFyY2ggcmVzdWx0ICh0aGF0IHN1cHBvcnRzIHBhZ2luYXRpb24pXG4gICAqIEBwYXJhbSBwYWdlIFRoZSBudW1iZXIgb2YgdGhlIHBhZ2UgdG8gZ28gdG9cbiAgICovXG4gIGdldFBhZ2UocXVlcnk6IFNlYXJjaFF1ZXJ5LCBwYWdlOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xuICAgIHF1ZXJ5LmZyb20gPSAocGFnZSAtIDEpICogKHF1ZXJ5LnNpemUgfHwgU2VhcmNoU2VydmljZS5ERUZBVUxUX1FVRVJZX1NJWkUpO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaChxdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwIHNlYXJjaCByZXN1bHQgZnJvbSB0aGUgYmFja2VuZCB0byBhcHBsaWNhdGlvbnMgU2VhcmNoUmVzdWx0IG9iamVjdFxuICAgKiBAcGFyYW0gc2VhcmNoUmVzcG9uc2UgVGhlIGJhY2tlbmQgcmVzcG9uc2VcbiAgICovXG4gIHRvU2VhcmNoUmVzdWx0KHNlYXJjaFJlc3BvbnNlOiBTZWFyY2hSZXNwb25zZSk6IFNlYXJjaFJlc3VsdCB7XG4gICAgY29uc3QgcmVzdWx0TGlzdEl0ZW1zOiBTZWFyY2hSZXN1bHRJdGVtW10gPSBbXTtcbiAgICBjb25zdCBvYmplY3RUeXBlczogc3RyaW5nW10gPSBbXTtcblxuICAgIHNlYXJjaFJlc3BvbnNlLm9iamVjdHMuZm9yRWFjaCgobzogYW55KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwKCk7XG4gICAgICAvLyBwcm9jZXNzIHByb3BlcnRpZXMgc2VjdGlvbiBvZiByZXN1bHRcbiAgICAgIE9iamVjdC5rZXlzKG8ucHJvcGVydGllcykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gby5wcm9wZXJ0aWVzW2tleV0udmFsdWU7XG4gICAgICAgIGlmIChvLnByb3BlcnRpZXNba2V5XS5jbHZhbHVlKSB7XG4gICAgICAgICAgLy8gdGFibGUgZmllbGRzIHdpbGwgaGF2ZSBhIGNsaWVudFZhbHVlIHRvbyAuLi5cbiAgICAgICAgICB2YWx1ZSA9IG8ucHJvcGVydGllc1trZXldLmNsdmFsdWU7XG4gICAgICAgICAgLy8gLi4uIGFuZCBhbHNvIG1heSBjb250YWluIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgcmVzb2x2ZWRcbiAgICAgICAgICBpZiAoby5wcm9wZXJ0aWVzW2tleV0ucmVzb2x2ZWRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2KS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzVmFsdWUgPSBBcnJheS5pc0FycmF5KHZba10pID8gdltrXS5tYXAoKGk6IGFueSkgPT4gby5wcm9wZXJ0aWVzW2tleV0ucmVzb2x2ZWRWYWx1ZXNbaV0pIDogby5wcm9wZXJ0aWVzW2tleV0ucmVzb2x2ZWRWYWx1ZXNbdltrXV07XG4gICAgICAgICAgICAgICAgaWYgKHJlc1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB2W2Ake2t9X3RpdGxlYF0gPSByZXNWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZmllbGRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgaWYgKG8ucHJvcGVydGllc1trZXldLnRpdGxlKSB7XG4gICAgICAgICAgZmllbGRzLnNldChrZXkgKyAnX3RpdGxlJywgby5wcm9wZXJ0aWVzW2tleV0udGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gcHJvY2VzcyBjb250ZW50U3RyZWFtcyBzZWN0aW9uIG9mIHJlc3VsdCBpZiBhdmFpbGFibGUuXG4gICAgICAvLyBPYmplY3RzIHRoYXQgZG9uJ3QgaGF2ZSBmaWxlcyBhdHRhY2hlZCB3b24ndCBoYXZlIHRoaXMgc2VjdGlvblxuICAgICAgbGV0IGNvbnRlbnQ6IFNlYXJjaFJlc3VsdENvbnRlbnQgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoby5jb250ZW50U3RyZWFtcyAmJiBvLmNvbnRlbnRTdHJlYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gd2UgYXNzdW1lIHRoYXQgZWFjaCByZXN1bHQgb2JqZWN0IG9ubHkgaGFzIE9ORSBmaWxlIGF0dGFjaGVkLCBhbHRvdWdoXG4gICAgICAgIC8vIHRoaXMgaXMgYW4gYXJyYXkgYW5kIHRoZXJlIG1heSBiZSBtb3JlXG4gICAgICAgIGNvbnN0IGNvbnRlbnRTdHJlYW0gPSBvLmNvbnRlbnRTdHJlYW1zWzBdO1xuICAgICAgICAvLyBhbHNvIGFkZCBjb250ZW50c3RyZWFtIHJlbGF0ZWQgZmllbGRzIHRvIHRoZSByZXN1bHQgZmllbGRzXG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLkxFTkdUSCwgY29udGVudFN0cmVhbS5sZW5ndGgpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5NSU1FX1RZUEUsIGNvbnRlbnRTdHJlYW0ubWltZVR5cGUpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5GSUxFTkFNRSwgY29udGVudFN0cmVhbS5maWxlTmFtZSk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLklELCBjb250ZW50U3RyZWFtLmNvbnRlbnRTdHJlYW1JZCk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLlJBTkdFLCBjb250ZW50U3RyZWFtLmNvbnRlbnRTdHJlYW1SYW5nZSk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLlJFUE9TSVRPUllfSUQsIGNvbnRlbnRTdHJlYW0ucmVwb3NpdG9yeUlkKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuRElHRVNULCBjb250ZW50U3RyZWFtLmRpZ2VzdCk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLkFSQ0hJVkVfUEFUSCwgY29udGVudFN0cmVhbS5hcmNoaXZlUGF0aCk7XG5cbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICBjb250ZW50U3RyZWFtSWQ6IGNvbnRlbnRTdHJlYW0uY29udGVudFN0cmVhbUlkLFxuICAgICAgICAgIHJlcG9zaXRvcnlJZDogY29udGVudFN0cmVhbS5yZXBvc2l0b3J5SWQsXG4gICAgICAgICAgcmFuZ2U6IGNvbnRlbnRTdHJlYW0ucmFuZ2UsXG4gICAgICAgICAgZGlnZXN0OiBjb250ZW50U3RyZWFtLmRpZ2VzdCxcbiAgICAgICAgICBhcmNoaXZlUGF0aDogY29udGVudFN0cmVhbS5hcmNoaXZlUGF0aCxcbiAgICAgICAgICBmaWxlTmFtZTogY29udGVudFN0cmVhbS5maWxlTmFtZSxcbiAgICAgICAgICBtaW1lVHlwZTogY29udGVudFN0cmVhbS5taW1lVHlwZSxcbiAgICAgICAgICBzaXplOiBjb250ZW50U3RyZWFtLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvYmplY3RUeXBlSWQgPSBvLnByb3BlcnRpZXNbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfVFlQRV9JRF0gPyBvLnByb3BlcnRpZXNbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfVFlQRV9JRF0udmFsdWUgOiBudWxsO1xuICAgICAgaWYgKG9iamVjdFR5cGVzLmluZGV4T2Yob2JqZWN0VHlwZUlkKSA9PT0gLTEpIHtcbiAgICAgICAgb2JqZWN0VHlwZXMucHVzaChvYmplY3RUeXBlSWQpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRMaXN0SXRlbXMucHVzaCh7XG4gICAgICAgIG9iamVjdFR5cGVJZCxcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBwZXJtaXNzaW9uczogby5wZXJtaXNzaW9uc1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFNlYXJjaFJlc3VsdCA9IHtcbiAgICAgIGhhc01vcmVJdGVtczogc2VhcmNoUmVzcG9uc2UuaGFzTW9yZUl0ZW1zLFxuICAgICAgdG90YWxOdW1JdGVtczogc2VhcmNoUmVzcG9uc2UudG90YWxOdW1JdGVtcyxcbiAgICAgIGl0ZW1zOiByZXN1bHRMaXN0SXRlbXMsXG4gICAgICBvYmplY3RUeXBlc1xuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,50 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SessionStorageService {
4
+ #TEMP_STORAGE_ENTRIES_KEY = 'yuv.core.sessionstorage.entries';
5
+ constructor() {
6
+ this.#clearTemporaryStorageEntries();
7
+ }
8
+ /**
9
+ * Add a reference to a temporary localstorage entry that should be cleared when a
10
+ * new browser session starts. In context of forms this will be used to cleanup the
11
+ * layout state of forms (selected tabs etc.) that are stored locally but should only
12
+ * be pesisted for one browser session.
13
+ * @param storageKey Key of the localstorage item
14
+ */
15
+ addTemporaryStorageEntry(storageKey) {
16
+ // entries will themselves be stored in localstorage so we can check for entries
17
+ // to be removed once the application starts
18
+ const current = this.#getTemporaryStorageEntries();
19
+ if (!current.includes(storageKey))
20
+ localStorage.setItem(this.#TEMP_STORAGE_ENTRIES_KEY, JSON.stringify([...current, storageKey]));
21
+ }
22
+ #clearTemporaryStorageEntries() {
23
+ this.#getTemporaryStorageEntries().forEach((e) => localStorage.removeItem(e));
24
+ localStorage.removeItem(this.#TEMP_STORAGE_ENTRIES_KEY);
25
+ }
26
+ #getTemporaryStorageEntries() {
27
+ let res = [];
28
+ const i = localStorage.getItem(this.#TEMP_STORAGE_ENTRIES_KEY);
29
+ if (i) {
30
+ try {
31
+ const entries = JSON.parse(i);
32
+ if (Array.isArray(entries))
33
+ res = entries;
34
+ }
35
+ catch (e) {
36
+ console.error(e);
37
+ }
38
+ }
39
+ return res;
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root'
48
+ }]
49
+ }], ctorParameters: () => [] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc2Vzc2lvbi1zdG9yYWdlL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMseUJBQXlCLEdBQUcsaUNBQWlDLENBQUM7SUFFOUQ7UUFDRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQUMsVUFBa0I7UUFDekMsZ0ZBQWdGO1FBQ2hGLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFFRCw2QkFBNkI7UUFDM0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDO1lBQzVDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBdENVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU2VydmljZSB7XG4gICNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkgPSAneXV2LmNvcmUuc2Vzc2lvbnN0b3JhZ2UuZW50cmllcyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jY2xlYXJUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJlZmVyZW5jZSB0byBhIHRlbXBvcmFyeSBsb2NhbHN0b3JhZ2UgZW50cnkgdGhhdCBzaG91bGQgYmUgY2xlYXJlZCB3aGVuIGFcbiAgICogbmV3IGJyb3dzZXIgc2Vzc2lvbiBzdGFydHMuIEluIGNvbnRleHQgb2YgZm9ybXMgdGhpcyB3aWxsIGJlIHVzZWQgdG8gY2xlYW51cCB0aGVcbiAgICogbGF5b3V0IHN0YXRlIG9mIGZvcm1zIChzZWxlY3RlZCB0YWJzIGV0Yy4pIHRoYXQgYXJlIHN0b3JlZCBsb2NhbGx5IGJ1dCBzaG91bGQgb25seVxuICAgKiBiZSBwZXNpc3RlZCBmb3Igb25lIGJyb3dzZXIgc2Vzc2lvbi5cbiAgICogQHBhcmFtIHN0b3JhZ2VLZXkgS2V5IG9mIHRoZSBsb2NhbHN0b3JhZ2UgaXRlbVxuICAgKi9cbiAgYWRkVGVtcG9yYXJ5U3RvcmFnZUVudHJ5KHN0b3JhZ2VLZXk6IHN0cmluZykge1xuICAgIC8vIGVudHJpZXMgd2lsbCB0aGVtc2VsdmVzIGJlIHN0b3JlZCBpbiBsb2NhbHN0b3JhZ2Ugc28gd2UgY2FuIGNoZWNrIGZvciBlbnRyaWVzXG4gICAgLy8gdG8gYmUgcmVtb3ZlZCBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHNcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy4jZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKTtcbiAgICBpZiAoIWN1cnJlbnQuaW5jbHVkZXMoc3RvcmFnZUtleSkpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuI1RFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSwgSlNPTi5zdHJpbmdpZnkoWy4uLmN1cnJlbnQsIHN0b3JhZ2VLZXldKSk7XG4gIH1cblxuICAjY2xlYXJUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpIHtcbiAgICB0aGlzLiNnZXRUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpLmZvckVhY2goKGUpID0+IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLiNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkpO1xuICB9XG5cbiAgI2dldFRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLiNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkpO1xuICAgIGlmIChpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlbnRyaWVzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2UoaSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXMgPSBlbnRyaWVzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3N5c3RlbS9vYmplY3QtZm9ybS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRmllbGRUeXBlIH0gZnJvbSAnLi9zeXN0ZW0uZW51bSc7XG5pbXBvcnQgeyBPYmplY3RUeXBlRmllbGQgfSBmcm9tICcuL3N5c3RlbS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUeXBlRmllbGRUeXBlID0gJ3N0cmluZycgfCAnaW50ZWdlcicgfCAnZGVjaW1hbCcgfCAnYm9vbGVhbicgfCAndGFibGUnIHwgJ2RhdGV0aW1lJztcbmV4cG9ydCB0eXBlIE9iamVjdFR5cGVGaWVsZEludGVybmFsVHlwZSA9XG5PYmplY3RUeXBlRmllbGRUeXBlXG4gIHwgSW50ZXJuYWxGaWVsZFR5cGUuU1RSSU5HX1JFRkVSRU5DRVxuICB8IEludGVybmFsRmllbGRUeXBlLlNUUklOR19PUkdBTklaQVRJT05cbiAgfCBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfT1JHQU5JWkFUSU9OX1NFVFxuICB8IEludGVybmFsRmllbGRUeXBlLlNUUklOR19DQVRBTE9HXG4gIHwgSW50ZXJuYWxGaWVsZFR5cGUuQk9PTEVBTl9TV0lUQ0hcbiAgfCBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfRFlOQU1JQ19DQVRBTE9HO1xuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBzdHJpbmdcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVsZW1lbnRTdHJpbmcgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBwcm9wZXJ0eVR5cGU6ICdzdHJpbmcnO1xuICBkZWZhdWx0dmFsdWU/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIC8vIG51bWJlciBvZiByb3cgdGhlIHRleHQgaW5wdXQgc2hvdWxkIGhhdmUgKGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIGlucHV0L3RleHRhcmVhKVxuICByb3dzPzogbnVtYmVyO1xuICAvLyBpbiBjYXNlIG9mIGEgY2F0YWxvZyBmaWVsZCB0aGlzIHByb3BlcnR5IGhvbGRzIHRoZSBhdmFpbGFibGUgb3B0aW9uc1xuICBvcHRpb25zPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIHJlZ2V4Pzogc3RyaW5nO1xufVxuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBpbnRlZ2VyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50SW50ZWdlciBleHRlbmRzIE9iamVjdFR5cGVGaWVsZCB7XG4gIHByb3BlcnR5VHlwZTogJ2ludGVnZXInO1xuICBkZWZhdWx0dmFsdWU/OiBudW1iZXJbXSB8IG51bWJlcjtcbiAgLy8gbWluaW11bSB2YWx1ZVxuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgLy8gbWF4aW11bSB2YWx1ZVxuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgLy8gT3ZlcmFsbCBhbW91bnQgb2YgZGlnaXRzIGFsbG93ZWQgKGluY2x1ZGluZyBkZWNpbWFsIHBsYWNlcylcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBTZXQgdG8gdHJ1ZSB0byBncm91cCBudW1iZXIgYnkgY2VydGFpbiBwYXR0ZXJuICguLi4gcHJvdmlkZWQgYnkgdGhlIHBhdHRlcm4gcHJvcGVydHkpXG4gIGdyb3VwaW5nPzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhdHRlcm4gdG8gZ3JvdXAgdGhlIHZhbHVlIGJ5XG4gIHBhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIGRlY2ltYWxcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVsZW1lbnREZWNpbWFsIGV4dGVuZHMgT2JqZWN0VHlwZUZpZWxkIHtcbiAgcHJvcGVydHlUeXBlOiAnZGVjaW1hbCc7XG4gIGRlZmF1bHR2YWx1ZT86IG51bWJlcltdIHwgbnVtYmVyO1xuICAvLyBtaW5pbXVtIHZhbHVlXG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICAvLyBtYXhpbXVtIHZhbHVlXG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICAvLyBPdmVyYWxsIGFtb3VudCBvZiBkaWdpdHMgYWxsb3dlZCAoaW5jbHVkaW5nIGRlY2ltYWwgcGxhY2VzKVxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIE51bWJlciBvZiBkZWNpbWFsIHBsYWNlc1xuICBzY2FsZT86IG51bWJlcjtcbiAgLy8gU2V0IHRvIHRydWUgdG8gZ3JvdXAgbnVtYmVyIGJ5IGNlcnRhaW4gcGF0dGVybiAoLi4uIHByb3ZpZGVkIGJ5IHRoZSBwYXR0ZXJuIHByb3BlcnR5KVxuICBncm91cGluZz86IGJvb2xlYW47XG4gIC8vIFRoZSBwYXR0ZXJuIHRvIGdyb3VwIHRoZSB2YWx1ZSBieVxuICBwYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBib29sZWFuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50Qm9vbGVhbiBleHRlbmRzIE9iamVjdFR5cGVGaWVsZCB7XG4gIHByb3BlcnR5VHlwZTogJ2Jvb2xlYW4nO1xuICBkZWZhdWx0dmFsdWU/OiBib29sZWFuO1xuICB0cmlzdGF0ZT86IGJvb2xlYW47XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIGRhdGV0aW1lXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50RGF0ZXRpbWUgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBwcm9wZXJ0eVR5cGU6ICdkYXRldGltZSc7XG4gIGRlZmF1bHR2YWx1ZT86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICAvLyBJZiByZXNvbHV0aW9vbiBpcyBzZXQgdG8gJ2RhdGUnIHRpbWUgaXMgbm90IGluY2x1ZGVkXG4gIHJlc29sdXRpb24/OiAnZGF0ZSc7XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIHRhYmxlXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50VGFibGUgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBlbGVtZW50czogT2JqZWN0VHlwZUZpZWxkW107XG4gIHByb3BlcnR5VHlwZTogJ3RhYmxlJztcbn1cbiJdfQ==