@sinequa/atomic-angular 0.0.146 → 0.1.3

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 (207) hide show
  1. package/README.md +145 -0
  2. package/components/no-result/i18n/en.json +5 -0
  3. package/components/no-result/i18n/fr.json +5 -0
  4. package/components/sort-selector/i18n/en.json +3 -0
  5. package/components/sort-selector/i18n/fr.json +3 -0
  6. package/components/source/i18n/en.json +3 -0
  7. package/components/source/i18n/fr.json +3 -0
  8. package/features/alerts/i18n/en.json +33 -0
  9. package/features/alerts/i18n/fr.json +33 -0
  10. package/features/bookmarks/i18n/en.json +11 -0
  11. package/features/bookmarks/i18n/fr.json +11 -0
  12. package/features/collections/i18n/en.json +17 -0
  13. package/features/collections/i18n/fr.json +16 -0
  14. package/features/dialogs/i18n/en.json +15 -0
  15. package/features/dialogs/i18n/fr.json +15 -0
  16. package/features/did-you-mean/i18n/en.json +5 -0
  17. package/features/did-you-mean/i18n/fr.json +5 -0
  18. package/features/drawer/i18n/en.json +22 -0
  19. package/features/drawer/i18n/fr.json +22 -0
  20. package/features/export/i18n/en.json +7 -0
  21. package/features/export/i18n/fr.json +7 -0
  22. package/features/feedback/i18n/en.json +26 -0
  23. package/features/feedback/i18n/fr.json +26 -0
  24. package/features/filters/i18n/en.json +14 -0
  25. package/features/filters/i18n/fr.json +14 -0
  26. package/features/labels/i18n/en.json +8 -0
  27. package/features/labels/i18n/fr.json +8 -0
  28. package/features/recent-searches/i18n/en.json +6 -0
  29. package/features/recent-searches/i18n/fr.json +6 -0
  30. package/features/saved-searches/i18n/en.json +8 -0
  31. package/features/saved-searches/i18n/fr.json +8 -0
  32. package/features/sign-in/i18n/en.json +12 -0
  33. package/features/sign-in/i18n/fr.json +14 -0
  34. package/fesm2022/sinequa-atomic-angular.mjs +8021 -2672
  35. package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
  36. package/index.d.ts +6036 -3
  37. package/package.json +68 -10
  38. package/assets/tailwind.css +0 -334
  39. package/esm2022/lib/assistant/index.mjs +0 -2
  40. package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
  41. package/esm2022/lib/components/dropdown-input.mjs +0 -97
  42. package/esm2022/lib/components/dropdown-list.mjs +0 -35
  43. package/esm2022/lib/components/dropdown.mjs +0 -127
  44. package/esm2022/lib/components/index.mjs +0 -7
  45. package/esm2022/lib/components/menu/index.mjs +0 -3
  46. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  47. package/esm2022/lib/components/menu/menu.mjs +0 -99
  48. package/esm2022/lib/components/metadata/index.mjs +0 -2
  49. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  50. package/esm2022/lib/components/theme/index.mjs +0 -3
  51. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  52. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  53. package/esm2022/lib/directives/index.mjs +0 -5
  54. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  55. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  56. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  57. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  58. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  59. package/esm2022/lib/guards/index.mjs +0 -3
  60. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  61. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  62. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  63. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  64. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  65. package/esm2022/lib/interceptors/index.mjs +0 -7
  66. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  67. package/esm2022/lib/models/aggregation.mjs +0 -2
  68. package/esm2022/lib/models/article-metadata.mjs +0 -2
  69. package/esm2022/lib/models/autocomplete.mjs +0 -2
  70. package/esm2022/lib/models/custom-json.mjs +0 -2
  71. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  72. package/esm2022/lib/models/index.mjs +0 -7
  73. package/esm2022/lib/models/user-settings.mjs +0 -2
  74. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  75. package/esm2022/lib/pipes/index.mjs +0 -3
  76. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  77. package/esm2022/lib/public-api.mjs +0 -18
  78. package/esm2022/lib/resolvers/index.mjs +0 -2
  79. package/esm2022/lib/resolvers/query-name-resolver.mjs +0 -14
  80. package/esm2022/lib/resources/index.mjs +0 -2
  81. package/esm2022/lib/resources/themes.mjs +0 -53
  82. package/esm2022/lib/services/application.service.mjs +0 -245
  83. package/esm2022/lib/services/autocomplete.service.mjs +0 -85
  84. package/esm2022/lib/services/drawer/backdrop.service.mjs +0 -23
  85. package/esm2022/lib/services/drawer/drawer-stack.service.mjs +0 -152
  86. package/esm2022/lib/services/drawer/drawer.service.mjs +0 -38
  87. package/esm2022/lib/services/index.mjs +0 -12
  88. package/esm2022/lib/services/label.service.mjs +0 -161
  89. package/esm2022/lib/services/navigation.service.mjs +0 -59
  90. package/esm2022/lib/services/saved-searches.service.mjs +0 -75
  91. package/esm2022/lib/services/search.service.mjs +0 -89
  92. package/esm2022/lib/services/selection-history.service.mjs +0 -92
  93. package/esm2022/lib/services/selection.service.mjs +0 -87
  94. package/esm2022/lib/stores/aggregations.store.mjs +0 -59
  95. package/esm2022/lib/stores/app.store.mjs +0 -270
  96. package/esm2022/lib/stores/application.store.mjs +0 -87
  97. package/esm2022/lib/stores/index.mjs +0 -9
  98. package/esm2022/lib/stores/principal.store.mjs +0 -47
  99. package/esm2022/lib/stores/query-params.store.mjs +0 -207
  100. package/esm2022/lib/stores/selection.store.mjs +0 -45
  101. package/esm2022/lib/stores/theme.store.mjs +0 -116
  102. package/esm2022/lib/stores/user-settings.store.mjs +0 -391
  103. package/esm2022/lib/tokens/highlights.mjs +0 -32
  104. package/esm2022/lib/tokens/index.mjs +0 -2
  105. package/esm2022/lib/utils/debounced-signal.mjs +0 -38
  106. package/esm2022/lib/utils/index.mjs +0 -8
  107. package/esm2022/lib/utils/inline-worker.mjs +0 -40
  108. package/esm2022/lib/utils/query.mjs +0 -58
  109. package/esm2022/lib/utils/routes.mjs +0 -28
  110. package/esm2022/lib/utils/tailwind-utils.mjs +0 -6
  111. package/esm2022/lib/utils/theme-body-hook.mjs +0 -18
  112. package/esm2022/lib/utils/theme-registry.mjs +0 -6
  113. package/esm2022/lib/web-services/aggregations.service.mjs +0 -104
  114. package/esm2022/lib/web-services/app.service.mjs +0 -48
  115. package/esm2022/lib/web-services/audit.service.mjs +0 -122
  116. package/esm2022/lib/web-services/index.mjs +0 -10
  117. package/esm2022/lib/web-services/json-method-plugin.service.mjs +0 -54
  118. package/esm2022/lib/web-services/preview.service.mjs +0 -327
  119. package/esm2022/lib/web-services/principal.service.mjs +0 -46
  120. package/esm2022/lib/web-services/query.service.mjs +0 -123
  121. package/esm2022/lib/web-services/text-chunck.service.mjs +0 -46
  122. package/esm2022/public-api.mjs +0 -5
  123. package/esm2022/sinequa-atomic-angular.mjs +0 -5
  124. package/lib/assistant/index.d.ts +0 -1
  125. package/lib/assistant/signalR.web.service.d.ts +0 -46
  126. package/lib/components/dropdown-input.d.ts +0 -18
  127. package/lib/components/dropdown-list.d.ts +0 -8
  128. package/lib/components/dropdown.d.ts +0 -50
  129. package/lib/components/index.d.ts +0 -6
  130. package/lib/components/menu/index.d.ts +0 -2
  131. package/lib/components/menu/menu-item.d.ts +0 -8
  132. package/lib/components/menu/menu.d.ts +0 -24
  133. package/lib/components/metadata/index.d.ts +0 -1
  134. package/lib/components/metadata/metadata.component.d.ts +0 -24
  135. package/lib/components/theme/index.d.ts +0 -2
  136. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  137. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  138. package/lib/directives/index.d.ts +0 -4
  139. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  140. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  141. package/lib/directives/show-bookmark.directive.d.ts +0 -60
  142. package/lib/directives/theme-provider.directive.d.ts +0 -20
  143. package/lib/guards/auth.guard.d.ts +0 -7
  144. package/lib/guards/index.d.ts +0 -2
  145. package/lib/guards/initialization.guard.d.ts +0 -20
  146. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  147. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  148. package/lib/interceptors/body.interceptor.d.ts +0 -11
  149. package/lib/interceptors/error.interceptor.d.ts +0 -9
  150. package/lib/interceptors/index.d.ts +0 -5
  151. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  152. package/lib/models/aggregation.d.ts +0 -12
  153. package/lib/models/article-metadata.d.ts +0 -5
  154. package/lib/models/autocomplete.d.ts +0 -5
  155. package/lib/models/custom-json.d.ts +0 -69
  156. package/lib/models/filter-dropdown.d.ts +0 -10
  157. package/lib/models/index.d.ts +0 -6
  158. package/lib/models/user-settings.d.ts +0 -38
  159. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  160. package/lib/pipes/index.d.ts +0 -2
  161. package/lib/pipes/source-icon.pipe.d.ts +0 -51
  162. package/lib/public-api.d.ts +0 -14
  163. package/lib/resolvers/index.d.ts +0 -1
  164. package/lib/resolvers/query-name-resolver.d.ts +0 -9
  165. package/lib/resources/index.d.ts +0 -1
  166. package/lib/resources/themes.d.ts +0 -51
  167. package/lib/services/application.service.d.ts +0 -183
  168. package/lib/services/autocomplete.service.d.ts +0 -96
  169. package/lib/services/drawer/backdrop.service.d.ts +0 -9
  170. package/lib/services/drawer/drawer-stack.service.d.ts +0 -70
  171. package/lib/services/drawer/drawer.service.d.ts +0 -15
  172. package/lib/services/index.d.ts +0 -11
  173. package/lib/services/label.service.d.ts +0 -114
  174. package/lib/services/navigation.service.d.ts +0 -33
  175. package/lib/services/saved-searches.service.d.ts +0 -149
  176. package/lib/services/search.service.d.ts +0 -159
  177. package/lib/services/selection-history.service.d.ts +0 -50
  178. package/lib/services/selection.service.d.ts +0 -123
  179. package/lib/stores/aggregations.store.d.ts +0 -25
  180. package/lib/stores/app.store.d.ts +0 -110
  181. package/lib/stores/application.store.d.ts +0 -83
  182. package/lib/stores/index.d.ts +0 -8
  183. package/lib/stores/principal.store.d.ts +0 -47
  184. package/lib/stores/query-params.store.d.ts +0 -128
  185. package/lib/stores/selection.store.d.ts +0 -52
  186. package/lib/stores/theme.store.d.ts +0 -66
  187. package/lib/stores/user-settings.store.d.ts +0 -111
  188. package/lib/tokens/highlights.d.ts +0 -8
  189. package/lib/tokens/index.d.ts +0 -1
  190. package/lib/utils/debounced-signal.d.ts +0 -25
  191. package/lib/utils/index.d.ts +0 -7
  192. package/lib/utils/inline-worker.d.ts +0 -11
  193. package/lib/utils/query.d.ts +0 -26
  194. package/lib/utils/routes.d.ts +0 -16
  195. package/lib/utils/tailwind-utils.d.ts +0 -2
  196. package/lib/utils/theme-body-hook.d.ts +0 -6
  197. package/lib/utils/theme-registry.d.ts +0 -3
  198. package/lib/web-services/aggregations.service.d.ts +0 -57
  199. package/lib/web-services/app.service.d.ts +0 -30
  200. package/lib/web-services/audit.service.d.ts +0 -72
  201. package/lib/web-services/index.d.ts +0 -9
  202. package/lib/web-services/json-method-plugin.service.d.ts +0 -41
  203. package/lib/web-services/preview.service.d.ts +0 -283
  204. package/lib/web-services/principal.service.d.ts +0 -28
  205. package/lib/web-services/query.service.d.ts +0 -29
  206. package/lib/web-services/text-chunck.service.d.ts +0 -22
  207. package/public-api.d.ts +0 -1
@@ -1,58 +0,0 @@
1
- import { assertInInjectionContext, inject } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import { getQueryParamsFromUrl } from '@sinequa/atomic';
4
- /**
5
- * Retrieves the query name from the current route.
6
- *
7
- * @remarks
8
- * This function must be used within an injection context.
9
- *
10
- * This function traverses the route tree recursively to find the query name.
11
- * It first checks for a query parameter `t` in the route's snapshot. If the query name is not found
12
- * in the route data, it attempts to find it in the child routes of the "search" route.
13
- * If the query name is still not found, it falls back to the `queryName` defined in the route's data.
14
- *
15
- * @returns {string | undefined} The query name if found, otherwise `undefined`.
16
- */
17
- export function getQueryNameFromRoute() {
18
- assertInInjectionContext(getQueryNameFromRoute);
19
- const route = inject(ActivatedRoute);
20
- const routes = inject(Router);
21
- const recursive = (route) => {
22
- if (route?.firstChild)
23
- return recursive(route.firstChild);
24
- // Get query name from route data
25
- const { t } = route.snapshot.queryParams;
26
- // ! This is a workaround for the case where the queryName is not defined in the route data
27
- // "search" is the parent route of the search results, and "t" is the query parameter for the tab
28
- const { queryName } = routes.config.filter(p => p.path === "search")[0].children?.find(route => route.path === t)?.data || {};
29
- if (queryName)
30
- return queryName;
31
- // fallback to queryName from route data
32
- if (route?.snapshot.data['queryName'])
33
- return route.snapshot.data['queryName'];
34
- return undefined;
35
- };
36
- return recursive(route);
37
- }
38
- /**
39
- * Builds a query object based on the provided partial query.
40
- * If any properties are missing in the partial query, default values are used.
41
- *
42
- * @remarks
43
- * This function must be used within an injection context.
44
- *
45
- * @param query - The partial query object.
46
- * @returns The complete query object.
47
- */
48
- export function buildQuery(query) {
49
- assertInInjectionContext(buildQuery);
50
- const name = query?.name || getQueryNameFromRoute();
51
- const params = getQueryParamsFromUrl(window.location.toString());
52
- return {
53
- ...params, // default values retrieved from the URL
54
- ...query, // override with query
55
- name, // override with query name
56
- };
57
- }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3V0aWxzL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUsvRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLHdCQUF3QixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUU3QixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQXFCLEVBQXNCLEVBQUU7UUFDOUQsSUFBSSxLQUFLLEVBQUUsVUFBVTtZQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxRCxpQ0FBaUM7UUFDakMsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3pDLDJGQUEyRjtRQUMzRixpR0FBaUc7UUFDakcsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzlILElBQUksU0FBUztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRWhDLHdDQUF3QztRQUN4QyxJQUFJLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0UsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFBO0lBRUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBc0I7SUFDL0Msd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFckMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRSxPQUFRO1FBQ04sR0FBRyxNQUFNLEVBQUcsd0NBQXdDO1FBQ3BELEdBQUcsS0FBSyxFQUFJLHNCQUFzQjtRQUNsQyxJQUFJLEVBQVEsMkJBQTJCO0tBQzlCLENBQUE7QUFFYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBnZXRRdWVyeVBhcmFtc0Zyb21VcmwsIFF1ZXJ5IH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgUXVlcnlQYXJhbXNTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcyc7XG5cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHF1ZXJ5IG5hbWUgZnJvbSB0aGUgY3VycmVudCByb3V0ZS5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gdHJhdmVyc2VzIHRoZSByb3V0ZSB0cmVlIHJlY3Vyc2l2ZWx5IHRvIGZpbmQgdGhlIHF1ZXJ5IG5hbWUuXG4gKiBJdCBmaXJzdCBjaGVja3MgZm9yIGEgcXVlcnkgcGFyYW1ldGVyIGB0YCBpbiB0aGUgcm91dGUncyBzbmFwc2hvdC4gSWYgdGhlIHF1ZXJ5IG5hbWUgaXMgbm90IGZvdW5kXG4gKiBpbiB0aGUgcm91dGUgZGF0YSwgaXQgYXR0ZW1wdHMgdG8gZmluZCBpdCBpbiB0aGUgY2hpbGQgcm91dGVzIG9mIHRoZSBcInNlYXJjaFwiIHJvdXRlLlxuICogSWYgdGhlIHF1ZXJ5IG5hbWUgaXMgc3RpbGwgbm90IGZvdW5kLCBpdCBmYWxscyBiYWNrIHRvIHRoZSBgcXVlcnlOYW1lYCBkZWZpbmVkIGluIHRoZSByb3V0ZSdzIGRhdGEuXG4gKlxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIHF1ZXJ5IG5hbWUgaWYgZm91bmQsIG90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5TmFtZUZyb21Sb3V0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoZ2V0UXVlcnlOYW1lRnJvbVJvdXRlKTtcblxuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIGNvbnN0IHJvdXRlcyA9IGluamVjdChSb3V0ZXIpXG5cbiAgY29uc3QgcmVjdXJzaXZlID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHJvdXRlPy5maXJzdENoaWxkKSByZXR1cm4gcmVjdXJzaXZlKHJvdXRlLmZpcnN0Q2hpbGQpO1xuXG4gICAgLy8gR2V0IHF1ZXJ5IG5hbWUgZnJvbSByb3V0ZSBkYXRhXG4gICAgY29uc3QgeyB0IH0gPSByb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICAvLyAhIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgcXVlcnlOYW1lIGlzIG5vdCBkZWZpbmVkIGluIHRoZSByb3V0ZSBkYXRhXG4gICAgLy8gXCJzZWFyY2hcIiBpcyB0aGUgcGFyZW50IHJvdXRlIG9mIHRoZSBzZWFyY2ggcmVzdWx0cywgYW5kIFwidFwiIGlzIHRoZSBxdWVyeSBwYXJhbWV0ZXIgZm9yIHRoZSB0YWJcbiAgICBjb25zdCB7IHF1ZXJ5TmFtZSB9ID0gcm91dGVzLmNvbmZpZy5maWx0ZXIocCA9PiBwLnBhdGggPT09IFwic2VhcmNoXCIpWzBdLmNoaWxkcmVuPy5maW5kKHJvdXRlID0+IHJvdXRlLnBhdGggPT09IHQpPy5kYXRhIHx8IHt9O1xuICAgIGlmIChxdWVyeU5hbWUpIHJldHVybiBxdWVyeU5hbWU7XG5cbiAgICAvLyBmYWxsYmFjayB0byBxdWVyeU5hbWUgZnJvbSByb3V0ZSBkYXRhXG4gICAgaWYgKHJvdXRlPy5zbmFwc2hvdC5kYXRhWydxdWVyeU5hbWUnXSkgcmV0dXJuIHJvdXRlLnNuYXBzaG90LmRhdGFbJ3F1ZXJ5TmFtZSddO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiByZWN1cnNpdmUocm91dGUpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHF1ZXJ5IG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFydGlhbCBxdWVyeS5cbiAqIElmIGFueSBwcm9wZXJ0aWVzIGFyZSBtaXNzaW5nIGluIHRoZSBwYXJ0aWFsIHF1ZXJ5LCBkZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSBxdWVyeSAtIFRoZSBwYXJ0aWFsIHF1ZXJ5IG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBjb21wbGV0ZSBxdWVyeSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFF1ZXJ5KHF1ZXJ5PzogUGFydGlhbDxRdWVyeT4pOiBRdWVyeSB7XG4gIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChidWlsZFF1ZXJ5KTtcblxuICBjb25zdCBuYW1lID0gcXVlcnk/Lm5hbWUgfHwgZ2V0UXVlcnlOYW1lRnJvbVJvdXRlKCk7XG4gIGNvbnN0IHBhcmFtcyA9IGdldFF1ZXJ5UGFyYW1zRnJvbVVybCh3aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKSk7XG4gIHJldHVybiAoe1xuICAgIC4uLnBhcmFtcywgIC8vIGRlZmF1bHQgdmFsdWVzIHJldHJpZXZlZCBmcm9tIHRoZSBVUkxcbiAgICAuLi5xdWVyeSwgICAvLyBvdmVycmlkZSB3aXRoIHF1ZXJ5XG4gICAgbmFtZSwgICAgICAgLy8gb3ZlcnJpZGUgd2l0aCBxdWVyeSBuYW1lXG4gIH0gYXMgUXVlcnkpXG5cbn1cbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { assertInInjectionContext, inject } from "@angular/core";
2
- import { ActivatedRoute, Router } from "@angular/router";
3
- /**
4
- * Retrieves the current path from the Angular `ActivatedRoute` service.
5
- *
6
- * @returns {string | undefined} The current path as a string, or `undefined` if the path cannot be determined.
7
- */
8
- export function getCurrentPath() {
9
- assertInInjectionContext(getCurrentPath);
10
- const route = inject(ActivatedRoute);
11
- return route?.snapshot.url.toString();
12
- }
13
- /**
14
- * Retrieves the current query name based on the current path and router configuration.
15
- *
16
- * This function asserts that it is being called within an injection context and then
17
- * uses Angular's dependency injection to get the router configuration. It matches the
18
- * current path against the router's configuration to find the corresponding query name.
19
- *
20
- * @returns {string | undefined} The name of the current query if found, otherwise undefined.
21
- */
22
- export function getCurrentQueryName() {
23
- assertInInjectionContext(getCurrentQueryName);
24
- const routes = inject(Router).config;
25
- const path = getCurrentPath();
26
- return routes.find(r => r.path === 'search')?.children?.find(r => r.path === path)?.data?.['queryName'];
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi91dGlscy9yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1Qix3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV6QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckMsT0FBTyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBSUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLHdCQUF3QixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUVyQyxNQUFNLElBQUksR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUU5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYXRoIGZyb20gdGhlIEFuZ3VsYXIgYEFjdGl2YXRlZFJvdXRlYCBzZXJ2aWNlLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgY3VycmVudCBwYXRoIGFzIGEgc3RyaW5nLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcGF0aCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChnZXRDdXJyZW50UGF0aCk7XHJcblxyXG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcbiAgcmV0dXJuIHJvdXRlPy5zbmFwc2hvdC51cmwudG9TdHJpbmcoKTtcclxufVxyXG5cclxuXHJcblxyXG4vKipcclxuICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHF1ZXJ5IG5hbWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgcGF0aCBhbmQgcm91dGVyIGNvbmZpZ3VyYXRpb24uXHJcbiAqXHJcbiAqIFRoaXMgZnVuY3Rpb24gYXNzZXJ0cyB0aGF0IGl0IGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQgYW5kIHRoZW5cclxuICogdXNlcyBBbmd1bGFyJ3MgZGVwZW5kZW5jeSBpbmplY3Rpb24gdG8gZ2V0IHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbi4gSXQgbWF0Y2hlcyB0aGVcclxuICogY3VycmVudCBwYXRoIGFnYWluc3QgdGhlIHJvdXRlcidzIGNvbmZpZ3VyYXRpb24gdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBxdWVyeSBuYW1lLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBxdWVyeSBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50UXVlcnlOYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGdldEN1cnJlbnRRdWVyeU5hbWUpO1xyXG5cclxuICBjb25zdCByb3V0ZXMgPSBpbmplY3QoUm91dGVyKS5jb25maWc7XHJcblxyXG4gIGNvbnN0IHBhdGggPSBnZXRDdXJyZW50UGF0aCgpO1xyXG5cclxuICByZXR1cm4gcm91dGVzLmZpbmQociA9PiByLnBhdGggPT09ICdzZWFyY2gnKT8uY2hpbGRyZW4/LmZpbmQociA9PiByLnBhdGggPT09IHBhdGgpPy5kYXRhPy5bJ3F1ZXJ5TmFtZSddO1xyXG59Il19
@@ -1,6 +0,0 @@
1
- import { clsx } from 'clsx';
2
- import { twMerge } from 'tailwind-merge';
3
- export function cn(...inputs) {
4
- return twMerge(clsx(inputs));
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3V0aWxzL3RhaWx3aW5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxNQUFNLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBb0I7SUFDeEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gJ2Nsc3gnO1xyXG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XHJcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcclxufVxyXG4iXX0=
@@ -1,18 +0,0 @@
1
- import { effect, inject, runInInjectionContext } from "@angular/core";
2
- import { applyThemeToNativeElement, ThemeStore } from "../stores";
3
- export function withThemeBodyHook(app, params) {
4
- runInInjectionContext(app.injector, () => {
5
- const themeStore = inject(ThemeStore);
6
- const { scope, theme } = params || { scope: 'application', theme: 'Default' };
7
- themeStore.setCurrentTheme(scope, theme);
8
- applyThemeToNativeElement(window.document.body, themeStore.scopes()?.[scope]?.cssVars?.light);
9
- effect(() => {
10
- const bodyScope = themeStore.scopes()?.[scope];
11
- const vars = bodyScope.darkMode ? bodyScope.cssVars.dark : bodyScope.cssVars.light;
12
- if (vars)
13
- applyThemeToNativeElement(window.document.body, vars);
14
- });
15
- });
16
- return app;
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtYm9keS1ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi91dGlscy90aGVtZS1ib2R5LWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFPbEUsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUFtQixFQUNuQixNQUEyQztJQUUzQyxxQkFBcUIsQ0FDbkIsR0FBRyxDQUFDLFFBQVEsRUFDWixHQUFHLEVBQUU7UUFDSCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUU5RSxVQUFVLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6Qyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUYsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUVuRixJQUFJLElBQUk7Z0JBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQ0YsQ0FBQztJQUVGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBlZmZlY3QsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgYXBwbHlUaGVtZVRvTmF0aXZlRWxlbWVudCwgVGhlbWVTdG9yZSB9IGZyb20gXCIuLi9zdG9yZXNcIjtcblxuZXhwb3J0IHR5cGUgVGhlbWVCb2R5SG9va1BhcmFtZXRlcnMgPSB7XG4gIHNjb3BlOiBzdHJpbmc7XG4gIHRoZW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRoZW1lQm9keUhvb2soXG4gIGFwcDogQXBwbGljYXRpb25SZWYsXG4gIHBhcmFtczogVGhlbWVCb2R5SG9va1BhcmFtZXRlcnMgfCB1bmRlZmluZWRcbik6IEFwcGxpY2F0aW9uUmVmIHtcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0KFxuICAgIGFwcC5pbmplY3RvcixcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVtZVN0b3JlID0gaW5qZWN0KFRoZW1lU3RvcmUpO1xuICAgICAgY29uc3QgeyBzY29wZSwgdGhlbWUgfSA9IHBhcmFtcyB8fCB7IHNjb3BlOiAnYXBwbGljYXRpb24nLCB0aGVtZTogJ0RlZmF1bHQnIH07XG5cbiAgICAgIHRoZW1lU3RvcmUuc2V0Q3VycmVudFRoZW1lKHNjb3BlLCB0aGVtZSk7XG5cbiAgICAgIGFwcGx5VGhlbWVUb05hdGl2ZUVsZW1lbnQod2luZG93LmRvY3VtZW50LmJvZHksIHRoZW1lU3RvcmUuc2NvcGVzKCk/LltzY29wZV0/LmNzc1ZhcnM/LmxpZ2h0KTtcblxuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgYm9keVNjb3BlID0gdGhlbWVTdG9yZS5zY29wZXMoKT8uW3Njb3BlXTtcbiAgICAgICAgY29uc3QgdmFycyA9IGJvZHlTY29wZS5kYXJrTW9kZSA/IGJvZHlTY29wZS5jc3NWYXJzLmRhcmsgOiBib2R5U2NvcGUuY3NzVmFycy5saWdodDtcblxuICAgICAgICBpZiAodmFycykgYXBwbHlUaGVtZVRvTmF0aXZlRWxlbWVudCh3aW5kb3cuZG9jdW1lbnQuYm9keSwgdmFycyk7XG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuICByZXR1cm4gYXBwO1xufVxuIl19
@@ -1,6 +0,0 @@
1
- import { THEMES } from "../resources";
2
- export function withThemes(app, themes) {
3
- themes.forEach(theme => THEMES.push(theme));
4
- return app;
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3V0aWxzL3RoZW1lLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBUyxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFtQixFQUFFLE1BQWU7SUFDN0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU1QyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRoZW1lLCBUSEVNRVMgfSBmcm9tIFwiLi4vcmVzb3VyY2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVGhlbWVzKGFwcDogQXBwbGljYXRpb25SZWYsIHRoZW1lczogVGhlbWVbXSk6IEFwcGxpY2F0aW9uUmVmIHtcbiAgdGhlbWVzLmZvckVhY2godGhlbWUgPT4gVEhFTUVTLnB1c2godGhlbWUpKTtcblxuICByZXR1cm4gYXBwO1xufVxuIl19
@@ -1,104 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Injectable, inject } from '@angular/core';
3
- import { catchError, map, tap, throwError } from 'rxjs';
4
- import { escapeExpr, globalConfig } from '@sinequa/atomic';
5
- import { AggregationsStore, AppStore } from '../stores';
6
- import { QueryService } from './query.service';
7
- import * as i0 from "@angular/core";
8
- export class AggregationsService {
9
- constructor() {
10
- this.http = inject(HttpClient);
11
- this.queryService = inject(QueryService);
12
- this.appStore = inject(AppStore);
13
- this.aggregationsStore = inject(AggregationsStore);
14
- this.API_URL = `${globalConfig.backendUrl}/${globalConfig.apiPath}`;
15
- }
16
- loadMore(query, aggregation, audit) {
17
- const { app } = globalConfig;
18
- // skip cached items for computation
19
- const skip = aggregation.items?.filter(i => !(i.$cached))?.length || 0;
20
- const count = 10;
21
- const aggregations = { [aggregation.name]: { skip, count } };
22
- const q = { ...query, action: "aggregate", aggregations };
23
- // add audit record if available
24
- const $auditRecord = audit ? { auditEvents: [audit] } : undefined;
25
- const body = {
26
- app,
27
- query: q,
28
- $auditRecord
29
- };
30
- return this.http.post(this.API_URL + "/query", body).pipe(map(result => {
31
- const { aggregations } = result;
32
- const agg = aggregations[0];
33
- if (agg.items) {
34
- agg.$hasMore = agg.items.length > count;
35
- agg.items = [...aggregation.items, ...agg.items];
36
- }
37
- else {
38
- aggregation.$hasMore = false;
39
- return aggregation;
40
- }
41
- return agg;
42
- }), catchError(error => {
43
- console.log("aggregation.loadMore failure - error: ", error);
44
- return throwError(() => new Error(error));
45
- }), tap(response => console.log("aggregation.loadMore success - data: ", response)));
46
- }
47
- open(query, aggregation, item) {
48
- const value = `/${item.$path}/*`;
49
- const expression = `${aggregation.column}: ${escapeExpr(value)}`;
50
- const q = {
51
- ...query,
52
- action: "open",
53
- open: [{ expression, aggregation: aggregation.name }]
54
- };
55
- return this.queryService.search(q).pipe(map(results => {
56
- // find the node in the tree and replace it with the new one
57
- const items = results.aggregations[0].items;
58
- const newNode = this.findNode(items, item.$path);
59
- if (!newNode) {
60
- return aggregation;
61
- }
62
- // mark the node as opened
63
- newNode.$opened = true;
64
- return this.replaceInTree(aggregation, item.$path, newNode);
65
- }));
66
- }
67
- findNode(items, path = "") {
68
- if (!items || items.length === 0) {
69
- return undefined;
70
- }
71
- for (const item of items) {
72
- if (item.$path === path) {
73
- return item;
74
- }
75
- if (item.items) {
76
- const found = this.findNode(item.items, path);
77
- if (found) {
78
- return found;
79
- }
80
- }
81
- }
82
- return undefined;
83
- }
84
- replaceInTree(tree, valueToFind = "", newValue) {
85
- if (tree.$path === valueToFind) {
86
- return newValue;
87
- }
88
- if (tree.hasChildren && tree.items) {
89
- for (let i = 0; i < tree.items.length; i++) {
90
- tree.items[i] = this.replaceInTree(tree.items[i], valueToFind, newValue);
91
- }
92
- }
93
- return tree;
94
- }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
96
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AggregationsService, providedIn: 'root' }); }
97
- }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AggregationsService, decorators: [{
99
- type: Injectable,
100
- args: [{
101
- providedIn: 'root'
102
- }]
103
- }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3dlYi1zZXJ2aWNlcy9hZ2dyZWdhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRSxPQUFPLEVBQWlGLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlxQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFcEMsWUFBTyxHQUFHLEdBQUcsWUFBWSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7S0F1RzFFO0lBckdDLFFBQVEsQ0FBQyxLQUFxQixFQUFFLFdBQXdCLEVBQUUsS0FBbUI7UUFDM0UsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLFlBQVksQ0FBQztRQUU3QixvQ0FBb0M7UUFDcEMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEtB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Q0FBQztZQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQTdHVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBBZ2dyZWdhdGlvbiwgQXVkaXRFdmVudHMsIFF1ZXJ5LCBSZXN1bHQsIFRyZWVBZ2dyZWdhdGlvbiwgVHJlZUFnZ3JlZ2F0aW9uTm9kZSwgZXNjYXBlRXhwciwgZ2xvYmFsQ29uZmlnIH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcclxuXHJcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uc1N0b3JlLCBBcHBTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcyc7XHJcbmltcG9ydCB7IFF1ZXJ5U2VydmljZSB9IGZyb20gJy4vcXVlcnkuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ2dyZWdhdGlvbnNTZXJ2aWNlIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KFF1ZXJ5U2VydmljZSk7XHJcblxyXG4gIGFwcFN0b3JlID0gaW5qZWN0KEFwcFN0b3JlKTtcclxuICBhZ2dyZWdhdGlvbnNTdG9yZSA9IGluamVjdChBZ2dyZWdhdGlvbnNTdG9yZSk7XHJcblxyXG4gIHByb3RlY3RlZCBBUElfVVJMID0gYCR7Z2xvYmFsQ29uZmlnLmJhY2tlbmRVcmx9LyR7Z2xvYmFsQ29uZmlnLmFwaVBhdGh9YDtcclxuXHJcbiAgbG9hZE1vcmUocXVlcnk6IFBhcnRpYWw8UXVlcnk+LCBhZ2dyZWdhdGlvbjogQWdncmVnYXRpb24sIGF1ZGl0PzogQXVkaXRFdmVudHMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9uPiB7XHJcbiAgICBjb25zdCB7IGFwcCB9ID0gZ2xvYmFsQ29uZmlnO1xyXG5cclxuICAgIC8vIHNraXAgY2FjaGVkIGl0ZW1zIGZvciBjb21wdXRhdGlvblxyXG4gICAgY29uc3Qgc2tpcCA9IGFnZ3JlZ2F0aW9uLml0ZW1zPy5maWx0ZXIoaSA9PiAhKGkuJGNhY2hlZCkpPy5sZW5ndGggfHwgMDtcclxuICAgIGNvbnN0IGNvdW50ID0gMTA7XHJcblxyXG4gICAgY29uc3QgYWdncmVnYXRpb25zID0geyBbYWdncmVnYXRpb24ubmFtZV06IHsgc2tpcCwgY291bnQgfSB9O1xyXG5cclxuICAgIGNvbnN0IHE6IFBhcnRpYWw8UXVlcnk+ID0geyAuLi5xdWVyeSwgYWN0aW9uOiBcImFnZ3JlZ2F0ZVwiLCBhZ2dyZWdhdGlvbnMgfVxyXG5cclxuICAgIC8vIGFkZCBhdWRpdCByZWNvcmQgaWYgYXZhaWxhYmxlXHJcbiAgICBjb25zdCAkYXVkaXRSZWNvcmQgPSBhdWRpdCA/IHsgYXVkaXRFdmVudHM6IFthdWRpdF0gfSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBhcHAsXHJcbiAgICAgIHF1ZXJ5OiBxLFxyXG4gICAgICAkYXVkaXRSZWNvcmRcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQVBJX1VSTCArIFwiL3F1ZXJ5XCIsIGJvZHkpLnBpcGUoXHJcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgYWdncmVnYXRpb25zIH0gPSByZXN1bHQgYXMgUmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IGFnZyA9IGFnZ3JlZ2F0aW9uc1swXTtcclxuXHJcbiAgICAgICAgaWYgKGFnZy5pdGVtcykge1xyXG4gICAgICAgICAgYWdnLiRoYXNNb3JlID0gYWdnLml0ZW1zLmxlbmd0aCA+IGNvdW50O1xyXG4gICAgICAgICAgYWdnLml0ZW1zID0gWy4uLmFnZ3JlZ2F0aW9uLml0ZW1zLCAuLi5hZ2cuaXRlbXNdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhZ2dyZWdhdGlvbi4kaGFzTW9yZSA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFnZztcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYWdncmVnYXRpb24ubG9hZE1vcmUgZmFpbHVyZSAtIGVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihlcnJvcikpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKHJlc3BvbnNlID0+IGNvbnNvbGUubG9nKFwiYWdncmVnYXRpb24ubG9hZE1vcmUgc3VjY2VzcyAtIGRhdGE6IFwiLCByZXNwb25zZSkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9wZW4ocXVlcnk6IFBhcnRpYWw8UXVlcnk+LCBhZ2dyZWdhdGlvbjogVHJlZUFnZ3JlZ2F0aW9uLCBpdGVtOiBUcmVlQWdncmVnYXRpb25Ob2RlKTogT2JzZXJ2YWJsZTxUcmVlQWdncmVnYXRpb24+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gYC8ke2l0ZW0uJHBhdGh9LypgO1xyXG4gICAgY29uc3QgZXhwcmVzc2lvbiA9IGAke2FnZ3JlZ2F0aW9uLmNvbHVtbn06ICR7ZXNjYXBlRXhwcih2YWx1ZSl9YDtcclxuXHJcbiAgICBjb25zdCBxOiBQYXJ0aWFsPFF1ZXJ5PiA9IHtcclxuICAgICAgLi4ucXVlcnksXHJcbiAgICAgIGFjdGlvbjogXCJvcGVuXCIsXHJcbiAgICAgIG9wZW46IFt7IGV4cHJlc3Npb24sIGFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvbi5uYW1lIH1dXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VydmljZS5zZWFyY2gocSkucGlwZShcclxuICAgICAgbWFwKHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIC8vIGZpbmQgdGhlIG5vZGUgaW4gdGhlIHRyZWUgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3IG9uZVxyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzdWx0cy5hZ2dyZWdhdGlvbnNbMF0uaXRlbXMgYXMgVHJlZUFnZ3JlZ2F0aW9uTm9kZVtdO1xyXG4gICAgICAgIGNvbnN0IG5ld05vZGUgPSB0aGlzLmZpbmROb2RlKGl0ZW1zLCBpdGVtLiRwYXRoKTtcclxuXHJcbiAgICAgICAgaWYgKCFuZXdOb2RlKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWdncmVnYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIG1hcmsgdGhlIG5vZGUgYXMgb3BlbmVkXHJcbiAgICAgICAgbmV3Tm9kZS4kb3BlbmVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlSW5UcmVlKGFnZ3JlZ2F0aW9uLCBpdGVtLiRwYXRoLCBuZXdOb2RlKSBhcyBUcmVlQWdncmVnYXRpb247XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG4gIHByaXZhdGUgZmluZE5vZGUoaXRlbXM6IFRyZWVBZ2dyZWdhdGlvbk5vZGVbXSwgcGF0aDogc3RyaW5nID0gXCJcIik6IFRyZWVBZ2dyZWdhdGlvbk5vZGUgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKGl0ZW0uJHBhdGggPT09IHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfVxyXG4gICAgICBpZihpdGVtLml0ZW1zKSB7XHJcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmROb2RlKGl0ZW0uaXRlbXMsIHBhdGgpO1xyXG4gICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlcGxhY2VJblRyZWUodHJlZTogYW55LCB2YWx1ZVRvRmluZDogc3RyaW5nID0gXCJcIiwgbmV3VmFsdWU6IFRyZWVBZ2dyZWdhdGlvbk5vZGUpIHtcclxuICAgIGlmICh0cmVlLiRwYXRoID09PSB2YWx1ZVRvRmluZCkge1xyXG4gICAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRyZWUuaGFzQ2hpbGRyZW4gJiYgdHJlZS5pdGVtcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyZWUuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0cmVlLml0ZW1zW2ldID0gdGhpcy5yZXBsYWNlSW5UcmVlKHRyZWUuaXRlbXNbaV0sIHZhbHVlVG9GaW5kLCBuZXdWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,48 +0,0 @@
1
- import { HttpClient, HttpParams } from '@angular/common/http';
2
- import { inject, Injectable } from '@angular/core';
3
- import { catchError, EMPTY } from 'rxjs';
4
- import { globalConfig } from '@sinequa/atomic';
5
- import * as i0 from "@angular/core";
6
- export class AppService {
7
- constructor() {
8
- this.http = inject(HttpClient);
9
- this.API_URL = `${globalConfig.backendUrl}/${globalConfig.apiPath}`;
10
- }
11
- /**
12
- * Retrieves the application configuration from the server.
13
- *
14
- * @param appName - The name of the application to fetch the configuration for.
15
- *
16
- * @returns {Observable<CCApp>} An observable that emits the application configuration.
17
- *
18
- * @remarks
19
- * This method constructs an HTTP GET request to fetch the application configuration
20
- * using the `app` parameter from the global configuration. If the request fails,
21
- * it logs the error to the console and returns an empty observable.
22
- *
23
- * @example
24
- * ```typescript
25
- * appService.getApp().subscribe(appConfig => {
26
- * console.log(appConfig);
27
- * });
28
- * ```
29
- */
30
- getApp(appName) {
31
- const app = appName || globalConfig.app;
32
- const params = new HttpParams().set('app', app || '');
33
- return this.http.get(this.API_URL + "/app", { params })
34
- .pipe(catchError(error => {
35
- console.error("AppService.getApp failure - error: ", error);
36
- return EMPTY;
37
- }));
38
- }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
40
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AppService, providedIn: 'root' }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AppService, decorators: [{
43
- type: Injectable,
44
- args: [{
45
- providedIn: 'root'
46
- }]
47
- }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3dlYi1zZXJ2aWNlcy9hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLdEQsTUFBTSxPQUFPLFVBQVU7SUFIdkI7UUFJcUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxQixZQUFPLEdBQUcsR0FBRyxZQUFZLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQWtDbkY7SUFoQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILE1BQU0sQ0FBQyxPQUFnQjtRQUNyQixNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUMzRCxJQUFJLENBQ0gsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs4R0FwQ1UsVUFBVTtrSEFBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENDQXBwLCBnbG9iYWxDb25maWcgfSBmcm9tICdAc2luZXF1YS9hdG9taWMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwU2VydmljZSB7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBBUElfVVJMID0gYCR7Z2xvYmFsQ29uZmlnLmJhY2tlbmRVcmx9LyR7Z2xvYmFsQ29uZmlnLmFwaVBhdGh9YDtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZyb20gdGhlIHNlcnZlci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gYXBwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBmZXRjaCB0aGUgY29uZmlndXJhdGlvbiBmb3IuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxDQ0FwcD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cclxuICAgKlxyXG4gICAqIEByZW1hcmtzXHJcbiAgICogVGhpcyBtZXRob2QgY29uc3RydWN0cyBhbiBIVFRQIEdFVCByZXF1ZXN0IHRvIGZldGNoIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXHJcbiAgICogdXNpbmcgdGhlIGBhcHBgIHBhcmFtZXRlciBmcm9tIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbi4gSWYgdGhlIHJlcXVlc3QgZmFpbHMsXHJcbiAgICogaXQgbG9ncyB0aGUgZXJyb3IgdG8gdGhlIGNvbnNvbGUgYW5kIHJldHVybnMgYW4gZW1wdHkgb2JzZXJ2YWJsZS5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGFwcFNlcnZpY2UuZ2V0QXBwKCkuc3Vic2NyaWJlKGFwcENvbmZpZyA9PiB7XHJcbiAgICogICBjb25zb2xlLmxvZyhhcHBDb25maWcpO1xyXG4gICAqIH0pO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIGdldEFwcChhcHBOYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxDQ0FwcD4ge1xyXG4gICAgY29uc3QgYXBwID0gYXBwTmFtZSB8fCBnbG9iYWxDb25maWcuYXBwO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdhcHAnLCBhcHAgfHwgJycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENDQXBwPih0aGlzLkFQSV9VUkwgKyBcIi9hcHBcIiwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQXBwU2VydmljZS5nZXRBcHAgZmFpbHVyZSAtIGVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,122 +0,0 @@
1
- import { HttpClient } from "@angular/common/http";
2
- import { Injectable, computed, inject } from "@angular/core";
3
- import { Router } from "@angular/router";
4
- import { getState } from "@ngrx/signals";
5
- import { globalConfig } from "@sinequa/atomic";
6
- import { AppStore } from '../stores/app.store';
7
- import * as i0 from "@angular/core";
8
- export class AuditService {
9
- constructor() {
10
- this.appStore = inject(AppStore);
11
- this.app = computed(() => getState(this.appStore));
12
- this.http = inject(HttpClient);
13
- this.router = inject(Router);
14
- this.API_URL = `${globalConfig.backendUrl}/${globalConfig.apiPath}`;
15
- this.lastClickTime = 0;
16
- }
17
- /**
18
- * Notify the Sinequa server of a set of audit events
19
- *
20
- * @param auditEvents The audit events
21
- */
22
- notify(auditEvents) {
23
- this.http.post(this.API_URL + "/audit.notify", {
24
- event: "None", // AuditEventType.None,
25
- app: this.app().name,
26
- $auditRecord: { auditEvents: [auditEvents] }
27
- }).subscribe();
28
- }
29
- /**
30
- * It sends an audit event to the Audit Service.
31
- */
32
- notifyLogin() {
33
- this.notify({
34
- type: "Login_Success_Form" // AuditEventType.Search_Login_Success
35
- });
36
- }
37
- /**
38
- * Notify logout
39
- */
40
- notifyLogout() {
41
- this.notify({
42
- type: "Search_Exit_Logout" // AuditEventType.Search_Exit_Logout
43
- });
44
- }
45
- /**
46
- * Notify the Sinequa server of a document event
47
- *
48
- * @param evt The audit event type
49
- * @param doc The document (article) in question
50
- * @param resultId The resultid that contain the document
51
- * @param parameters Additional parameters
52
- */
53
- notifyDocument(auditEventType, doc, resultsOrId, parameters, rfmParameters) {
54
- let resultId;
55
- let result;
56
- if (typeof resultsOrId == "string") {
57
- resultId = resultsOrId;
58
- }
59
- else {
60
- result = resultsOrId;
61
- resultId = result ? result.id : null;
62
- }
63
- const detail = {
64
- docid: doc.id,
65
- rank: doc.rank,
66
- title: doc.title,
67
- source: doc.collection[0].split("/")[0],
68
- collection: doc.collection[0],
69
- resultId,
70
- filename: doc.filename,
71
- fileext: doc.fileext,
72
- index: doc.databasealias,
73
- resultcount: result?.totalRowCount
74
- };
75
- if (parameters) {
76
- Object.keys(parameters).forEach(key => detail[key] = parameters[key]);
77
- }
78
- const data = {
79
- type: auditEventType,
80
- detail
81
- };
82
- if (rfmParameters) {
83
- const rfmDetail = {}; // Add index signature
84
- Object.keys(rfmParameters).forEach(key => rfmDetail[key] = rfmParameters[key]);
85
- data.rfmDetail = rfmDetail;
86
- }
87
- this.lastClickTime = Date.now();
88
- // Listen to the navigation event outside the app
89
- document.addEventListener('visibilitychange', () => {
90
- // Capture the navigation even triggered just after the click
91
- if (document.visibilityState === 'hidden' && (Date.now() - this.lastClickTime) < 1000) {
92
- // Second event triggered when we come back
93
- document.addEventListener('visibilitychange', () => {
94
- if (document.visibilityState === 'visible') {
95
- this.notify({ type: "Navigation_Return" /* AuditEventType.Navigation_Return */ });
96
- }
97
- }, { once: true });
98
- }
99
- }, { once: true });
100
- this.notify(data);
101
- }
102
- /**
103
- * Notify route change
104
- */
105
- notifyRouteChange(url) {
106
- this.notify({
107
- type: "Navigation_Route", // AuditEventType.Navigation_Route,
108
- detail: {
109
- detail: url
110
- }
111
- });
112
- }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
114
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AuditService, providedIn: 'root' }); }
115
- }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: AuditService, decorators: [{
117
- type: Injectable,
118
- args: [{
119
- providedIn: 'root'
120
- }]
121
- }] });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvd2ViLXNlcnZpY2VzL2F1ZGl0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWlGLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFFBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQVUsQ0FBQyxDQUFDO1FBRXBDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsR0FBRyxZQUFZLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV4RSxrQkFBYSxHQUFHLENBQUMsQ0FBQztLQWtIN0I7SUFoSEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUF3QjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsRUFBRTtZQUNuRCxLQUFLLEVBQUUsTUFBTSxFQUFF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USxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtvQkFDakQsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSw0REFBa0MsRUFBRSxDQUFDLENBQUM7b0JBQzFELENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ1YsSUFBSSxFQUFFLGtCQUFrQixFQUFFLG1DQUFtQztZQUM3RCxNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEdBQUc7YUFDWjtTQUNGLENBQUMsQ0FBQztJQUVMLENBQUM7OEdBekhVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gXCJAbmdyeC9zaWduYWxzXCI7XHJcbmltcG9ydCB7IEFydGljbGUsIEF1ZGl0RXZlbnQsIEF1ZGl0RXZlbnRzLCBBdWRpdEV2ZW50VHlwZSwgQXVkaXRFdmVudFR5cGVWYWx1ZXMsIENDQXBwLCBnbG9iYWxDb25maWcsIFJlc3VsdCB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcclxuaW1wb3J0IHsgQXBwU3RvcmUgfSBmcm9tICcuLi9zdG9yZXMvYXBwLnN0b3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0U2VydmljZSB7XHJcbiAgYXBwU3RvcmUgPSBpbmplY3QoQXBwU3RvcmUpO1xyXG4gIGFwcCA9IGNvbXB1dGVkKCgpID0+IGdldFN0YXRlKHRoaXMuYXBwU3RvcmUpIGFzIENDQXBwKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBBUElfVVJMID0gYCR7Z2xvYmFsQ29uZmlnLmJhY2tlbmRVcmx9LyR7Z2xvYmFsQ29uZmlnLmFwaVBhdGh9YDtcclxuXHJcbiAgcHJvdGVjdGVkIGxhc3RDbGlja1RpbWUgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBOb3RpZnkgdGhlIFNpbmVxdWEgc2VydmVyIG9mIGEgc2V0IG9mIGF1ZGl0IGV2ZW50c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGF1ZGl0RXZlbnRzIFRoZSBhdWRpdCBldmVudHNcclxuICAgKi9cclxuICBub3RpZnkoYXVkaXRFdmVudHM6IEF1ZGl0RXZlbnRzKSB7XHJcbiAgICB0aGlzLmh0dHAucG9zdDx2b2lkPih0aGlzLkFQSV9VUkwgKyBcIi9hdWRpdC5ub3RpZnlcIiwge1xyXG4gICAgICBldmVudDogXCJOb25lXCIsIC8vIEF1ZGl0RXZlbnRUeXBlLk5vbmUsXHJcbiAgICAgIGFwcDogdGhpcy5hcHAoKS5uYW1lLFxyXG4gICAgICAkYXVkaXRSZWNvcmQ6IHthdWRpdEV2ZW50czogW2F1ZGl0RXZlbnRzXX1cclxuICAgIH0pLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgc2VuZHMgYW4gYXVkaXQgZXZlbnQgdG8gdGhlIEF1ZGl0IFNlcnZpY2UuXHJcbiAgICovXHJcbiAgbm90aWZ5TG9naW4oKSB7XHJcbiAgICB0aGlzLm5vdGlmeSh7XHJcbiAgICAgIHR5cGU6IFwiTG9naW5fU3VjY2Vzc19Gb3JtXCIgLy8gQXVkaXRFdmVudFR5cGUuU2VhcmNoX0xvZ2luX1N1Y2Nlc3NcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOb3RpZnkgbG9nb3V0XHJcbiAgICovXHJcbiAgbm90aWZ5TG9nb3V0KCkge1xyXG4gICAgdGhpcy5ub3RpZnkoe1xyXG4gICAgICB0eXBlOiBcIlNlYXJjaF9FeGl0X0xvZ291dFwiIC8vIEF1ZGl0RXZlbnRUeXBlLlNlYXJjaF9FeGl0X0xvZ291dFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIE5vdGlmeSB0aGUgU2luZXF1YSBzZXJ2ZXIgb2YgYSBkb2N1bWVudCBldmVudFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldnQgVGhlIGF1ZGl0IGV2ZW50IHR5cGVcclxuICAgICAqIEBwYXJhbSBkb2MgVGhlIGRvY3VtZW50IChhcnRpY2xlKSBpbiBxdWVzdGlvblxyXG4gICAgICogQHBhcmFtIHJlc3VsdElkIFRoZSByZXN1bHRpZCB0aGF0IGNvbnRhaW4gdGhlIGRvY3VtZW50XHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBBZGRpdGlvbmFsIHBhcmFtZXRlcnNcclxuICAgICAqL1xyXG4gIG5vdGlmeURvY3VtZW50KFxyXG4gICAgYXVkaXRFdmVudFR5cGU6IEF1ZGl0RXZlbnRUeXBlIHwgQXVkaXRFdmVudFR5cGVWYWx1ZXMgfCB7fSAmIFJlY29yZDxuZXZlciwgbmV2ZXI+LFxyXG4gICAgZG9jOiBBcnRpY2xlLFxyXG4gICAgcmVzdWx0c09ySWQ6IFJlc3VsdCB8IHN0cmluZyxcclxuICAgIHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPixcclxuICAgIHJmbVBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPikge1xyXG4gICAgbGV0IHJlc3VsdElkOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbGV0IHJlc3VsdDogUmVzdWx0IHwgdW5kZWZpbmVkO1xyXG4gICAgaWYgKHR5cGVvZiByZXN1bHRzT3JJZCA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIHJlc3VsdElkID0gcmVzdWx0c09ySWQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0c09ySWQ7XHJcbiAgICAgIHJlc3VsdElkID0gcmVzdWx0ID8gcmVzdWx0LmlkIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkZXRhaWw6IGFueSA9IHtcclxuICAgICAgZG9jaWQ6IGRvYy5pZCxcclxuICAgICAgcmFuazogZG9jLnJhbmssXHJcbiAgICAgIHRpdGxlOiBkb2MudGl0bGUsXHJcbiAgICAgIHNvdXJjZTogZG9jLmNvbGxlY3Rpb25bMF0uc3BsaXQoXCIvXCIpWzBdLFxyXG4gICAgICBjb2xsZWN0aW9uOiBkb2MuY29sbGVjdGlvblswXSxcclxuICAgICAgcmVzdWx0SWQsXHJcbiAgICAgIGZpbGVuYW1lOiBkb2MuZmlsZW5hbWUsXHJcbiAgICAgIGZpbGVleHQ6IGRvYy5maWxlZXh0LFxyXG4gICAgICBpbmRleDogZG9jLmRhdGFiYXNlYWxpYXMsXHJcbiAgICAgIHJlc3VsdGNvdW50OiByZXN1bHQ/LnRvdGFsUm93Q291bnRcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHBhcmFtZXRlcnMpIHtcclxuICAgICAgT2JqZWN0LmtleXMocGFyYW1ldGVycykuZm9yRWFjaChrZXkgPT4gZGV0YWlsW2tleV0gPSBwYXJhbWV0ZXJzW2tleV0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YTogQXVkaXRFdmVudCA9IHtcclxuICAgICAgdHlwZTogYXVkaXRFdmVudFR5cGUsXHJcbiAgICAgIGRldGFpbFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAocmZtUGFyYW1ldGVycykge1xyXG4gICAgICBjb25zdCByZm1EZXRhaWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0ge307IC8vIEFkZCBpbmRleCBzaWduYXR1cmVcclxuICAgICAgT2JqZWN0LmtleXMocmZtUGFyYW1ldGVycykuZm9yRWFjaChrZXkgPT4gcmZtRGV0YWlsW2tleV0gPSByZm1QYXJhbWV0ZXJzW2tleV0pO1xyXG4gICAgICBkYXRhLnJmbURldGFpbCA9IHJmbURldGFpbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhc3RDbGlja1RpbWUgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgIC8vIExpc3RlbiB0byB0aGUgbmF2aWdhdGlvbiBldmVudCBvdXRzaWRlIHRoZSBhcHBcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgIC8vIENhcHR1cmUgdGhlIG5hdmlnYXRpb24gZXZlbiB0cmlnZ2VyZWQganVzdCBhZnRlciB0aGUgY2xpY2tcclxuICAgICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicgJiYgKERhdGUubm93KCkgLSB0aGlzLmxhc3RDbGlja1RpbWUpIDwgMTAwMCkge1xyXG4gICAgICAgIC8vIFNlY29uZCBldmVudCB0cmlnZ2VyZWQgd2hlbiB3ZSBjb21lIGJhY2tcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5KHsgdHlwZTogQXVkaXRFdmVudFR5cGUuTmF2aWdhdGlvbl9SZXR1cm4gfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCB7IG9uY2U6IHRydWUgfSk7XHJcblxyXG4gICAgdGhpcy5ub3RpZnkoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOb3RpZnkgcm91dGUgY2hhbmdlXHJcbiAgICovXHJcbiAgbm90aWZ5Um91dGVDaGFuZ2UodXJsOiBzdHJpbmcsKSB7XHJcbiAgICB0aGlzLm5vdGlmeSh7XHJcbiAgICAgIHR5cGU6IFwiTmF2aWdhdGlvbl9Sb3V0ZVwiLCAvLyBBdWRpdEV2ZW50VHlwZS5OYXZpZ2F0aW9uX1JvdXRlLFxyXG4gICAgICBkZXRhaWw6IHtcclxuICAgICAgICBkZXRhaWw6IHVybFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG59Il19
@@ -1,10 +0,0 @@
1
- export * from "./aggregations.service";
2
- export * from "./app.service";
3
- export * from "./json-method-plugin.service";
4
- export * from "./preview.service";
5
- export * from "./principal.service";
6
- export * from "./query.service";
7
- export * from "./text-chunck.service";
8
- export * from "./audit.service";
9
- export * from "./audit.service";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3dlYi1zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0ICogZnJvbSBcIi4vYWdncmVnYXRpb25zLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vYXBwLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vanNvbi1tZXRob2QtcGx1Z2luLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vcHJldmlldy5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3F1ZXJ5LnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vdGV4dC1jaHVuY2suc2VydmljZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9hdWRpdC5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2F1ZGl0LnNlcnZpY2VcIjsiXX0=
@@ -1,54 +0,0 @@
1
- import { HttpClient, HttpParams } from '@angular/common/http';
2
- import { Injectable, inject } from '@angular/core';
3
- import { globalConfig, isObject } from '@sinequa/atomic';
4
- import { throwError } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- export class JsonMethodPluginService {
7
- constructor() {
8
- this.http = inject(HttpClient);
9
- this.API_URL = `${globalConfig.backendUrl}/${globalConfig.apiPath}`;
10
- }
11
- /**
12
- * Call a JsonMethod plugin using an HTTP POST
13
- *
14
- * @param method The name of the JsonMethod plugin
15
- * @param query Parameters to pass to the plugin
16
- * @param options HTTP options for the request
17
- * @returns An observable of the plugin's return value
18
- */
19
- post(method, query, options) {
20
- if (!isObject(query)) {
21
- return throwError(() => ({ error: "invalid query object" }));
22
- }
23
- return this.http.post(`${this.API_URL}/plugin/${method}`, query, options);
24
- }
25
- /**
26
- * Call a JsonMethod plugin using an HTTP GET
27
- *
28
- * @param method The name of the JsonMethod plugin
29
- * @param query Parameters to pass to the plugin
30
- * @param options HTTP options for the request
31
- * @returns An observable of the plugin's return value
32
- */
33
- get(method, query, options) {
34
- const params = new HttpParams();
35
- for (const key in query) {
36
- if (query[key] !== undefined) {
37
- params.set(key, query[key]);
38
- }
39
- }
40
- return this.http.get(`${this.API_URL}/plugin/${method}`, {
41
- params: params,
42
- ...options
43
- });
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: JsonMethodPluginService, decorators: [{
49
- type: Injectable,
50
- args: [{
51
- providedIn: 'root'
52
- }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1tZXRob2QtcGx1Z2luLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3dlYi1zZXJ2aWNlcy9qc29uLW1ldGhvZC1wbHVnaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUE0QixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBbUI5QyxNQUFNLE9BQU8sdUJBQXVCO0lBSHBDO1FBSXFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUIsWUFBTyxHQUFHLEdBQUcsWUFBWSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7S0FzQ25GO0lBcENDOzs7Ozs7O09BT0c7SUFDSCxJQUFJLENBQUksTUFBYyxFQUFFLEtBQVEsRUFBRSxPQUFpQjtRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLFdBQVcsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQWMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsR0FBRyxDQUFrRixNQUFjLEVBQUUsS0FBUSxFQUFFLE9BQWlCO1FBQzlILE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBUSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sV0FBVyxNQUFNLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsT0FBYztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXhDVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGdsb2JhbENvbmZpZywgaXNPYmplY3QgfSBmcm9tICdAc2luZXF1YS9hdG9taWMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG50eXBlIE9wdGlvbnMgPSB7XHJcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xyXG4gICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG4gIH0sXHJcbiAgY29udGV4dD86IEh0dHBDb250ZXh0LFxyXG4gIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZScsXHJcbiAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcclxuICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPlxyXG4gIH0sXHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxyXG4gIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICd0ZXh0JyB8ICdqc29uJyxcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25NZXRob2RQbHVnaW5TZXJ2aWNlIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFQSV9VUkwgPSBgJHtnbG9iYWxDb25maWcuYmFja2VuZFVybH0vJHtnbG9iYWxDb25maWcuYXBpUGF0aH1gO1xyXG5cclxuICAvKipcclxuICAgKiBDYWxsIGEgSnNvbk1ldGhvZCBwbHVnaW4gdXNpbmcgYW4gSFRUUCBQT1NUXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBuYW1lIG9mIHRoZSBKc29uTWV0aG9kIHBsdWdpblxyXG4gICAqIEBwYXJhbSBxdWVyeSBQYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIHBsdWdpblxyXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBwbHVnaW4ncyByZXR1cm4gdmFsdWVcclxuICAgKi9cclxuICBwb3N0PFU+KG1ldGhvZDogc3RyaW5nLCBxdWVyeTogVSwgb3B0aW9ucz86IE9wdGlvbnMpIDogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICghaXNPYmplY3QocXVlcnkpKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICh7ZXJyb3I6IFwiaW52YWxpZCBxdWVyeSBvYmplY3RcIn0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLkFQSV9VUkx9L3BsdWdpbi8ke21ldGhvZH1gLCBxdWVyeSwgb3B0aW9ucyBhcyBhbnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbCBhIEpzb25NZXRob2QgcGx1Z2luIHVzaW5nIGFuIEhUVFAgR0VUXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBuYW1lIG9mIHRoZSBKc29uTWV0aG9kIHBsdWdpblxyXG4gICAqIEBwYXJhbSBxdWVyeSBQYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIHBsdWdpblxyXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBwbHVnaW4ncyByZXR1cm4gdmFsdWVcclxuICAgKi9cclxuICBnZXQ8VSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBEYXRlIHwgb2JqZWN0IHwgdW5kZWZpbmVkPj4obWV0aG9kOiBzdHJpbmcsIHF1ZXJ5OiBVLCBvcHRpb25zPzogT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcXVlcnkpIHtcclxuICAgICAgaWYgKHF1ZXJ5W2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHBhcmFtcy5zZXQoa2V5LCBxdWVyeVtrZXldIGFzIGFueSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLkFQSV9VUkx9L3BsdWdpbi8ke21ldGhvZH1gLCB7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgICAuLi5vcHRpb25zIGFzIGFueVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==