graphdb-workbench 3.3.2-TR1 → 3.3.3-TR1

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 (213) hide show
  1. package/dist/13231.8bbbe30c10e6c0dfdba3.bundle.js +2 -0
  2. package/dist/13231.8bbbe30c10e6c0dfdba3.bundle.js.map +1 -0
  3. package/dist/{20694.a738f5634ec09369dc85.bundle.js → 20694.4becb7771236462dcc5a.bundle.js} +2 -2
  4. package/dist/20694.4becb7771236462dcc5a.bundle.js.map +1 -0
  5. package/dist/21015.6db2b66597f78d4b83cc.bundle.js +2 -0
  6. package/dist/21015.6db2b66597f78d4b83cc.bundle.js.map +1 -0
  7. package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js +2 -0
  8. package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js.map +1 -0
  9. package/dist/{38644.37a8cd71112da94401d9.bundle.js → 38644.cc471c67239fa24901cc.bundle.js} +2 -2
  10. package/dist/{38644.37a8cd71112da94401d9.bundle.js.map → 38644.cc471c67239fa24901cc.bundle.js.map} +1 -1
  11. package/dist/{39518.2871b32c37b20075dba3.bundle.js → 39518.1c641a7dc1c50a526845.bundle.js} +2 -2
  12. package/dist/{39518.2871b32c37b20075dba3.bundle.js.map → 39518.1c641a7dc1c50a526845.bundle.js.map} +1 -1
  13. package/dist/39874.710e94f211579215f997.bundle.js +2 -0
  14. package/dist/39874.710e94f211579215f997.bundle.js.map +1 -0
  15. package/dist/60560.6ba1b091a34af6c00770.bundle.js +2 -0
  16. package/dist/60560.6ba1b091a34af6c00770.bundle.js.map +1 -0
  17. package/dist/{64118.b06aebc9f8d7e822244f.bundle.js → 64118.177457589341de779668.bundle.js} +2 -2
  18. package/dist/64118.177457589341de779668.bundle.js.map +1 -0
  19. package/dist/{67888.b75d9678cf65cd82f065.bundle.js → 67888.7224e1b2689d73c4d468.bundle.js} +2 -2
  20. package/dist/{67888.b75d9678cf65cd82f065.bundle.js.map → 67888.7224e1b2689d73c4d468.bundle.js.map} +1 -1
  21. package/dist/71099.ba1073458b96d9789756.bundle.js +2 -0
  22. package/dist/71099.ba1073458b96d9789756.bundle.js.map +1 -0
  23. package/dist/75881.148ce498d06784abfd6c.bundle.js +2 -0
  24. package/dist/75881.148ce498d06784abfd6c.bundle.js.map +1 -0
  25. package/dist/78070.d54ede951a08e1c8689d.bundle.js +2 -0
  26. package/dist/78070.d54ede951a08e1c8689d.bundle.js.map +1 -0
  27. package/dist/7815.2aec5ebbcd434f5582ff.bundle.js +2 -0
  28. package/dist/7815.2aec5ebbcd434f5582ff.bundle.js.map +1 -0
  29. package/dist/78681.9e1d4e064e9e1fb5fb21.bundle.js +2 -0
  30. package/dist/78681.9e1d4e064e9e1fb5fb21.bundle.js.map +1 -0
  31. package/dist/{82926.99231caacc379c66487a.bundle.js → 82926.bbdac6a7e9eb883ae97b.bundle.js} +2 -2
  32. package/dist/{82926.99231caacc379c66487a.bundle.js.map → 82926.bbdac6a7e9eb883ae97b.bundle.js.map} +1 -1
  33. package/dist/{94229.47dbdba202106c61dff1.bundle.js → 94229.5a853fae006f6ef633af.bundle.js} +2 -2
  34. package/dist/94229.5a853fae006f6ef633af.bundle.js.map +1 -0
  35. package/dist/95953.1350a9dc14b22372b4e2.bundle.js +2 -0
  36. package/dist/95953.1350a9dc14b22372b4e2.bundle.js.map +1 -0
  37. package/dist/98268.a1bd17e40ede031a0a00.bundle.js +2 -0
  38. package/dist/98268.a1bd17e40ede031a0a00.bundle.js.map +1 -0
  39. package/dist/{99448.272a4ba1ce8032167bea.bundle.js → 99448.b9922814bd15808a9d1c.bundle.js} +2 -2
  40. package/dist/{99448.272a4ba1ce8032167bea.bundle.js.map → 99448.b9922814bd15808a9d1c.bundle.js.map} +1 -1
  41. package/dist/api/models/cookie/cookie-options.d.ts +17 -0
  42. package/dist/api/models/cookie/index.d.ts +1 -1
  43. package/dist/api/models/security/authenticated-user.d.ts +2 -0
  44. package/dist/api/models/tracking/cookie-consent.d.ts +39 -0
  45. package/dist/api/models/tracking/index.d.ts +1 -0
  46. package/dist/api/models/users/app-settings.d.ts +2 -2
  47. package/dist/api/ontotext-workbench-api.d.ts +3 -1
  48. package/dist/api/ontotext-workbench-api.js +1 -1
  49. package/dist/api/ontotext-workbench-api.js.map +1 -1
  50. package/dist/api/services/cookie/browser-cookie-store.d.ts +19 -0
  51. package/dist/api/services/cookie/cookie-builder.d.ts +77 -0
  52. package/dist/api/services/cookie/cookie-store.d.ts +16 -0
  53. package/dist/api/services/cookie/cookie.service.d.ts +34 -7
  54. package/dist/api/services/cookie/error/invalid-cookie-expiration.d.ts +8 -0
  55. package/dist/api/services/cookie/index.d.ts +3 -0
  56. package/dist/api/services/cookie/test/cookie-builder.spec.d.ts +1 -0
  57. package/dist/api/services/cookie/test/in-memory-cookie-store.d.ts +11 -0
  58. package/dist/api/services/security/auth-strategies/tests/provider-response-mocks.d.ts +2 -2
  59. package/dist/api/services/security/security-context.service.d.ts +6 -0
  60. package/dist/api/services/tracking/google-analytics-cookie.service.d.ts +50 -0
  61. package/dist/api/services/tracking/index.d.ts +4 -0
  62. package/dist/api/services/tracking/installation-cookie.service.d.ts +37 -0
  63. package/dist/api/services/tracking/test/tracking-storage.service.spec.d.ts +1 -0
  64. package/dist/api/services/tracking/test/tracking.service.spec.d.ts +1 -0
  65. package/dist/api/services/tracking/tracking-storage.service.d.ts +27 -0
  66. package/dist/api/services/tracking/tracking.service.d.ts +56 -0
  67. package/dist/api/services/users/response/user-response.d.ts +1 -1
  68. package/dist/api/services/utils/date-util.d.ts +11 -0
  69. package/dist/api/services/utils/index.d.ts +1 -0
  70. package/dist/api/services/window/window.service.d.ts +6 -0
  71. package/dist/assets/i18n/fr.json +1 -1
  72. package/dist/index.html +9 -9
  73. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  74. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  75. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  76. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  77. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  78. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  79. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
  80. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  81. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  82. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  83. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  84. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  85. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  86. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  87. package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
  88. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  89. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  90. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  91. package/dist/js/angular/security/templates/user.html +5 -2
  92. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  93. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  94. package/dist/js/angular/ttyg/templates/chat-item-detail.html +3 -2
  95. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  96. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  97. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  98. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
  99. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  100. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  101. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  102. package/dist/legacyWorkbench.4d8a4e8dde83fc9ac427.js +3 -0
  103. package/dist/{legacyWorkbench.88e1d4d209e51c6f9b65.js.map → legacyWorkbench.4d8a4e8dde83fc9ac427.js.map} +1 -1
  104. package/dist/license-checker-static.json +0 -7
  105. package/dist/{main.1be0fc11ab24b99f8800.js → main.14f083264cd64618d96a.js} +3 -3
  106. package/dist/main.14f083264cd64618d96a.js.map +1 -0
  107. package/dist/pages/aclmanagement.html +1 -1
  108. package/dist/pages/autocomplete.html +1 -1
  109. package/dist/pages/choose-repository-type.html +1 -1
  110. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  111. package/dist/pages/create-index.html +1 -1
  112. package/dist/pages/dependencies.html +1 -1
  113. package/dist/pages/domainRangeInfo.html +2 -2
  114. package/dist/pages/edit.html +1 -1
  115. package/dist/pages/explore.html +1 -1
  116. package/dist/pages/export.html +1 -1
  117. package/dist/pages/find.html +1 -1
  118. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  119. package/dist/pages/graphs-visualizations.html +7 -7
  120. package/dist/pages/guides.html +1 -1
  121. package/dist/pages/home.html +1 -1
  122. package/dist/pages/import.html +2 -2
  123. package/dist/pages/jdbc-create.html +1 -1
  124. package/dist/pages/jdbc.html +1 -1
  125. package/dist/pages/monitor/backup-and-restore.html +1 -1
  126. package/dist/pages/monitor/queries.html +1 -1
  127. package/dist/pages/monitor/resources.html +1 -1
  128. package/dist/pages/namespaces.html +2 -2
  129. package/dist/pages/plugins.html +1 -1
  130. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  131. package/dist/pages/rdfrank.html +2 -2
  132. package/dist/pages/repositories.html +1 -1
  133. package/dist/pages/repository.html +1 -1
  134. package/dist/pages/similarity-indexes.html +1 -1
  135. package/dist/pages/sparql-editor.html +1 -1
  136. package/dist/pages/sparql-template-create.html +1 -1
  137. package/dist/pages/sparql-templates.html +1 -1
  138. package/dist/pages/ux-test1.html +2 -2
  139. package/dist/pages/webapi.html +4 -3
  140. package/dist/res/swagger5/index.html +11 -11
  141. package/dist/res/swagger5/swagger-initializer.js +1 -1
  142. package/dist/shared-components/cjs/function-utils-WB47AWpR.js +1 -0
  143. package/dist/shared-components/cjs/loader.cjs.js +1 -1
  144. package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
  145. package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
  146. package/dist/shared-components/cjs/onto-footer_5.cjs.entry.js +1 -1
  147. package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
  148. package/dist/shared-components/cjs/onto-test-context.cjs.entry.js +1 -1
  149. package/dist/shared-components/cjs/shared-components.cjs.js +1 -1
  150. package/dist/shared-components/collection/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.js +1 -1
  151. package/dist/shared-components/collection/components/dialogs/onto-dialog.js +1 -1
  152. package/dist/shared-components/collection/components/onto-cookie-consent/onto-cookie-consent.css +1 -1
  153. package/dist/shared-components/collection/components/onto-cookie-consent/onto-cookie-consent.js +1 -1
  154. package/dist/shared-components/collection/components/onto-footer/onto-footer.js +1 -1
  155. package/dist/shared-components/esm/function-utils-D1ZpXQQS.js +1 -0
  156. package/dist/shared-components/esm/loader.js +1 -1
  157. package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
  158. package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
  159. package/dist/shared-components/esm/onto-footer_5.entry.js +1 -1
  160. package/dist/shared-components/esm/onto-layout.entry.js +1 -1
  161. package/dist/shared-components/esm/onto-test-context.entry.js +1 -1
  162. package/dist/shared-components/esm/shared-components.js +1 -1
  163. package/dist/shared-components/shared-components/{p-279a026b.entry.js → p-5886e663.entry.js} +1 -1
  164. package/dist/shared-components/shared-components/p-598d33d7.entry.js +1 -0
  165. package/dist/shared-components/shared-components/p-6d34b2cb.entry.js +1 -0
  166. package/dist/shared-components/shared-components/p-74888633.entry.js +1 -0
  167. package/dist/shared-components/shared-components/p-D1ZpXQQS.js +1 -0
  168. package/dist/shared-components/shared-components/p-b5d4081d.entry.js +1 -0
  169. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  170. package/dist/shared-components/types/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.d.ts +31 -7
  171. package/dist/shared-components/types/components/onto-cookie-consent/onto-cookie-consent.d.ts +2 -2
  172. package/dist/shared-components/types/components/onto-footer/onto-footer.d.ts +9 -2
  173. package/dist/shared-components/types/components.d.ts +17 -8
  174. package/dist/shared-components/types/models/dialog/dialog-handler.d.ts +4 -0
  175. package/package.json +1 -1
  176. package/dist/13231.9b625e487e6385faa36f.bundle.js +0 -2
  177. package/dist/13231.9b625e487e6385faa36f.bundle.js.map +0 -1
  178. package/dist/20694.a738f5634ec09369dc85.bundle.js.map +0 -1
  179. package/dist/21015.68c7c667ef64ad8e8e0d.bundle.js +0 -2
  180. package/dist/21015.68c7c667ef64ad8e8e0d.bundle.js.map +0 -1
  181. package/dist/2975.8be1a79816fd811be223.bundle.js +0 -2
  182. package/dist/2975.8be1a79816fd811be223.bundle.js.map +0 -1
  183. package/dist/39874.47a6948df3520a7bf37a.bundle.js +0 -2
  184. package/dist/39874.47a6948df3520a7bf37a.bundle.js.map +0 -1
  185. package/dist/60560.275a89ab1375e91de0aa.bundle.js +0 -2
  186. package/dist/60560.275a89ab1375e91de0aa.bundle.js.map +0 -1
  187. package/dist/64118.b06aebc9f8d7e822244f.bundle.js.map +0 -1
  188. package/dist/71099.ca7720893604e9d908d6.bundle.js +0 -2
  189. package/dist/71099.ca7720893604e9d908d6.bundle.js.map +0 -1
  190. package/dist/75881.54dc716f79b6fe29232a.bundle.js +0 -2
  191. package/dist/75881.54dc716f79b6fe29232a.bundle.js.map +0 -1
  192. package/dist/78070.13538271878de6a98862.bundle.js +0 -2
  193. package/dist/78070.13538271878de6a98862.bundle.js.map +0 -1
  194. package/dist/7815.f09f8d6953d2c964e04d.bundle.js +0 -2
  195. package/dist/7815.f09f8d6953d2c964e04d.bundle.js.map +0 -1
  196. package/dist/78681.0cfa1e86d4dac1b7e7e8.bundle.js +0 -2
  197. package/dist/78681.0cfa1e86d4dac1b7e7e8.bundle.js.map +0 -1
  198. package/dist/94229.47dbdba202106c61dff1.bundle.js.map +0 -1
  199. package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js +0 -2
  200. package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js.map +0 -1
  201. package/dist/98268.86ff371dde616b4e2a76.bundle.js +0 -2
  202. package/dist/98268.86ff371dde616b4e2a76.bundle.js.map +0 -1
  203. package/dist/api/models/cookie/cookie-consent.d.ts +0 -14
  204. package/dist/legacyWorkbench.88e1d4d209e51c6f9b65.js +0 -3
  205. package/dist/main.1be0fc11ab24b99f8800.js.map +0 -1
  206. package/dist/shared-components/collection/models/dialog/onto-dialog.js +0 -1
  207. package/dist/shared-components/shared-components/p-2075209c.entry.js +0 -1
  208. package/dist/shared-components/shared-components/p-30e4880f.entry.js +0 -1
  209. package/dist/shared-components/shared-components/p-413b3789.entry.js +0 -1
  210. package/dist/shared-components/shared-components/p-67199a46.entry.js +0 -1
  211. package/dist/shared-components/types/models/dialog/onto-dialog.d.ts +0 -4
  212. /package/dist/{legacyWorkbench.88e1d4d209e51c6f9b65.js.LICENSE.txt → legacyWorkbench.4d8a4e8dde83fc9ac427.js.LICENSE.txt} +0 -0
  213. /package/dist/{main.1be0fc11ab24b99f8800.js.LICENSE.txt → main.14f083264cd64618d96a.js.LICENSE.txt} +0 -0
@@ -0,0 +1,19 @@
1
+ import { CookieStore } from './cookie-store';
2
+ /**
3
+ * Implementation of {@link CookieStore} that interacts with the browser's `document.cookie` API.
4
+ */
5
+ export declare class BrowserCookieStore implements CookieStore {
6
+ /**
7
+ * Reads the current cookies from the browser's `document.cookie` and returns them as a string.
8
+ * @return A string containing all cookies in the format "key=value; key2=value2; ...".
9
+ */
10
+ read(): string;
11
+ /**
12
+ * Writes a cookie string to the browser's `document.cookie`, which will set or update the cookie in the browser.
13
+ * @param cookie - A string representing the cookie to be set, in the format "key=value; attribute1; attribute2; ...".
14
+ * For example: "sessionId=abc123; Path=/; Expires=Wed, 21 Oct 2025 07:28:00 GMT".
15
+ * The cookie string can include optional attributes such as Path, Expires, Domain, Secure, HttpOnly, and SameSite.
16
+ * The `CookieBuilder` class can be used to construct properly formatted cookie strings with these attributes.
17
+ */
18
+ write(cookie: string): void;
19
+ }
@@ -0,0 +1,77 @@
1
+ import { CookieOptions } from '../../models/cookie';
2
+ /**
3
+ * CookieBuilder class for constructing cookies with optional attributes (expiration, path, domain, etc.).
4
+ */
5
+ export declare class CookieBuilder {
6
+ private static readonly DEFAULT_PATH;
7
+ private static readonly MILLISECONDS_PER_DAY;
8
+ key: string;
9
+ value: string;
10
+ expires?: string;
11
+ path: string;
12
+ domain?: string;
13
+ secure?: boolean;
14
+ httpOnly?: boolean;
15
+ sameSite?: string;
16
+ /**
17
+ * Constructs a CookieBuilder instance with the given key, value, and options.
18
+ *
19
+ * @param key - The name of the cookie to set.
20
+ * @param value - The value of the cookie to set.
21
+ * @param [options={}] - Optional parameters for cookie settings (expiration, path, domain, etc.).
22
+ */
23
+ constructor(key: string, value: string, options?: CookieOptions);
24
+ /**
25
+ * Sets the options for the cookie.
26
+ *
27
+ * @param options - Object containing optional cookie settings.
28
+ * @return Returns the current instance for method chaining.
29
+ */
30
+ setOptions(options: CookieOptions): this;
31
+ /**
32
+ * Sets the expiration date for the cookie in days.
33
+ *
34
+ * @param expiration - Number of days until the cookie expires.
35
+ * @return Returns the current instance for method chaining.
36
+ */
37
+ setExpiration(expiration: number): this;
38
+ /**
39
+ * Sets the path where the cookie is available.
40
+ *
41
+ * @param path - The URL path for the cookie.
42
+ * @return Returns the current instance for method chaining.
43
+ */
44
+ setPath(path?: string): this;
45
+ /**
46
+ * Sets the domain where the cookie is available.
47
+ *
48
+ * @param domain - The domain for the cookie.
49
+ * @return Returns the current instance for method chaining.
50
+ */
51
+ setDomain(domain: string): this;
52
+ /**
53
+ * Marks the cookie as secure (sent over HTTPS only).
54
+ *
55
+ * @return Returns the current instance for method chaining.
56
+ */
57
+ setSecure(): this;
58
+ /**
59
+ * Marks the cookie as HttpOnly (inaccessible via JavaScript).
60
+ *
61
+ * @return Returns the current instance for method chaining.
62
+ */
63
+ setHttpOnly(): this;
64
+ /**
65
+ * Sets the SameSite attribute for the cookie.
66
+ *
67
+ * @param sameSite - SameSite attribute ('Strict', 'Lax', 'None').
68
+ * @return Returns the current instance for method chaining.
69
+ */
70
+ setSameSite(sameSite: string): this;
71
+ /**
72
+ * Builds the final cookie string with all set attributes.
73
+ *
74
+ * @return - The complete cookie string.
75
+ */
76
+ build(): string;
77
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Interface for cookie store implementations.
3
+ * Defines methods for reading and writing cookies, abstracting away the underlying storage mechanism.
4
+ */
5
+ export interface CookieStore {
6
+ /**
7
+ * Reads the current cookies from the store and returns them as a string.
8
+ * @return A string containing all cookies in the format "key=value; key2=value2; ...".
9
+ */
10
+ read(): string;
11
+ /**
12
+ * Writes a cookie string to the store, which will set or update the cookie in the underlying storage mechanism.
13
+ * @param cookie - A string representing the cookie to be set, in the format "key=value; attribute1; attribute2; ...".
14
+ */
15
+ write(cookie: string): void;
16
+ }
@@ -1,15 +1,42 @@
1
1
  import { Service } from '../../providers/service/service';
2
- export declare const COOKIE_CONSENT_CHANGED_EVENT = "cookie-consent-changed-event";
2
+ import { CookieStore } from './cookie-store';
3
3
  /**
4
- * Service class for handling cookie-related operations.
4
+ * Service to manage cookies for the application.
5
5
  */
6
6
  export declare class CookieService implements Service {
7
- private readonly eventEmitter;
7
+ private readonly store;
8
+ constructor(store?: CookieStore);
8
9
  /**
9
- * Accepts the cookie policy for the authenticated user.
10
+ * Retrieves the value of a cookie by its key.
10
11
  *
11
- * @returns {Promise<void>} - A promise that resolves when the request to the backend has passed.
12
+ * @param key - The name of the cookie to retrieve.
13
+ * @return The value of the cookie, or `undefined` if the cookie doesn't exist.
12
14
  */
13
- acceptCookiePolicy(): Promise<void>;
14
- private setAcceptedCookiePolicy;
15
+ get(key: string): string | undefined;
16
+ /**
17
+ * Sets a cookie with the given key, value, and options.
18
+ *
19
+ * @param key - The name of the cookie to set.
20
+ * @param value - The value of the cookie to set.
21
+ * @param [options={}] - Optional parameters for cookie settings.
22
+ */
23
+ set(key: string, value: string, options?: {}): void;
24
+ /**
25
+ * Deletes a cookie by setting an expired date, effectively removing it from the browser.
26
+ *
27
+ * @param key - The name of the cookie to delete.
28
+ */
29
+ remove(key: string): void;
30
+ /**
31
+ * Retrieves all cookies.
32
+ *
33
+ * @return - An object containing all cookies as key-value pairs.
34
+ */
35
+ getAll(): Record<string, string>;
36
+ /**
37
+ * Parses the document's cookie string and returns an object containing all cookies as key-value pairs.
38
+ *
39
+ * @return - An object where each key is a cookie name and each value is the corresponding cookie value.
40
+ */
41
+ parseCookies(): Record<string, string>;
15
42
  }
@@ -0,0 +1,8 @@
1
+ import { ErrorBase } from '../../../error';
2
+ /**
3
+ * Custom error class for handling invalid cookie expiration values.
4
+ * This error is thrown when an invalid expiration value (e.g., Infinity, NaN) is provided for a cookie.
5
+ */
6
+ export declare class InvalidCookieExpiration extends ErrorBase {
7
+ constructor(message: string);
8
+ }
@@ -1 +1,4 @@
1
1
  export { CookieService } from './cookie.service';
2
+ export { CookieBuilder } from './cookie-builder';
3
+ export * from './cookie-store';
4
+ export { BrowserCookieStore } from './browser-cookie-store';
@@ -0,0 +1,11 @@
1
+ import { CookieStore } from '../cookie-store';
2
+ /**
3
+ * In-memory implementation of {@link CookieStore} that simulates browser cookie semantics.
4
+ * Intended for use in tests and server-side / non-browser environments.
5
+ */
6
+ export declare class InMemoryCookieStore implements CookieStore {
7
+ private readonly cookies;
8
+ read(): string;
9
+ write(cookie: string): void;
10
+ clear(): void;
11
+ }
@@ -19,7 +19,7 @@ export declare const ProviderResponseMocks: {
19
19
  password: string;
20
20
  authorities: string[];
21
21
  appSettings: {
22
- COOKIE_CONSENT: boolean;
22
+ COOKIE_CONSENT: undefined;
23
23
  DEFAULT_SAMEAS: boolean;
24
24
  DEFAULT_INFERENCE: boolean;
25
25
  EXECUTE_COUNT: boolean;
@@ -38,7 +38,7 @@ export declare const ProviderResponseMocks: {
38
38
  DEFAULT_SAMEAS: boolean;
39
39
  IGNORE_SHARED_QUERIES: boolean;
40
40
  EXECUTE_COUNT: boolean;
41
- COOKIE_CONSENT: string;
41
+ COOKIE_CONSENT: undefined;
42
42
  };
43
43
  };
44
44
  overrideAuth: {
@@ -103,5 +103,11 @@ export declare class SecurityContextService extends ContextService<SecurityConte
103
103
  * @returns A boolean indicating whether the user is logged in, or undefined if not set.
104
104
  */
105
105
  getIsLoggedIn(): boolean | undefined;
106
+ /**
107
+ * Subscribes to changes in the user's logged-in status.
108
+ * @param callbackFunction - A function to be called when the user's logged-in status changes.
109
+ * @returns A function that, when called, unsubscribes from the logged-in status changes.
110
+ */
111
+ onUserLoginStatusChanged(callbackFunction: ValueChangeCallback<boolean | undefined>): () => void;
106
112
  }
107
113
  export {};
@@ -0,0 +1,50 @@
1
+ import { Service } from '../../providers/service/service';
2
+ declare global {
3
+ interface Window {
4
+ dataLayer?: Record<string, unknown>[];
5
+ google_tag_manager?: Record<string, unknown>;
6
+ google_tag_data?: Record<string, unknown>;
7
+ }
8
+ }
9
+ export declare class GoogleAnalyticsCookieService implements Service {
10
+ private readonly cookieService;
11
+ private isSettingUp;
12
+ /**
13
+ * Adds the Google Tag Manager (GTM) script to the document's head if it is not already present.
14
+ * This function creates a new script element for GTM and appends it to the document's head.
15
+ */
16
+ setIfAbsent(): void;
17
+ /**
18
+ * Removes all Google Analytics-related scripts and cookies from the document.
19
+ */
20
+ remove(): void;
21
+ /**
22
+ * Retrieves all cookies with a specified prefix and removes each of them.
23
+ */
24
+ removeGoogleAnalyticsCookies(): void;
25
+ /**
26
+ * Disables the Google Tag Manager (GTM) by preventing any further events from being pushed to the `dataLayer`.
27
+ * This function also removes all existing GTM script elements from the document's head and body.
28
+ *
29
+ * Since this is a Single Page Application (SPA), removing and re-adding scripts must happen dynamically without
30
+ * reloading the window. This method is used to remove GTM scripts when tracking is disallowed, rather than
31
+ * performing a page reload, which is generally avoided
32
+ *
33
+ * 1. Disables the `dataLayer.push` method to prevent further GTM events from being tracked.
34
+ * 2. Searches for and removes any `<script>` elements that include 'googletagmanager' in their `src` or script content.
35
+ */
36
+ private removeGoogleAnalyticsScripts;
37
+ /**
38
+ * Checks if a Google Tag Manager (GTM) script is already present in the document.
39
+ *
40
+ * When the GTM script is injected, it dynamically adds additional scripts depending on how many tags
41
+ * are configured within your GTM container. These scripts are usually inserted into the `<head>` section,
42
+ * but it’s better to search through the entire document to ensure all related GTM scripts are found.
43
+ *
44
+ * This function searches through all `<script>` elements in the document and returns `true` if any script
45
+ * has a `src` attribute that contains 'googletagmanager'. It returns `false` otherwise.
46
+ *
47
+ * @return Returns `true` if a GTM script is found, otherwise `false`.
48
+ */
49
+ private gtmScriptExists;
50
+ }
@@ -0,0 +1,4 @@
1
+ export { TrackingService } from './tracking.service';
2
+ export { TrackingStorageService } from './tracking-storage.service';
3
+ export { InstallationCookieService } from './installation-cookie.service';
4
+ export { GoogleAnalyticsCookieService } from './google-analytics-cookie.service';
@@ -0,0 +1,37 @@
1
+ import { Service } from '../../providers/service/service';
2
+ /**
3
+ * Service to manage installation-specific cookies for the application.
4
+ * It checks if a specific installation cookie exists, sets it if necessary,
5
+ * retrieves it, or deletes it when required.
6
+ *
7
+ * @param {Object} CookieService - AngularJS service to manage cookies.
8
+ * @return {Object} - Returns an object with methods to get, set, setIfAbsent, and remove installation cookies.
9
+ */
10
+ export declare class InstallationCookieService implements Service {
11
+ private readonly cookieService;
12
+ private readonly timeProvider;
13
+ /**
14
+ * Checks if the installation cookie exists and retrieves its value.
15
+ *
16
+ * @return The installation cookie value if it exists, otherwise undefined.
17
+ */
18
+ get(): string | undefined;
19
+ /**
20
+ * Creates and sets an installation cookie with a specific installation ID and the current timestamp.
21
+ * The cookie value is constructed as `version.installationId.timestamp`, and it is set to expire
22
+ * in 400 days (based on the `INSTALLATION_COOKIE_EXPIRATION_IN_DAYS` constant).
23
+ *
24
+ * @param installationId - The unique installation ID to be stored in the cookie.
25
+ */
26
+ set(installationId: string): void;
27
+ /**
28
+ * Sets the installation cookie if it does not already exist.
29
+ *
30
+ * @param installationId - The unique installation ID to be stored in the cookie.
31
+ */
32
+ setIfAbsent(installationId: string): void;
33
+ /**
34
+ * Deletes the installation cookie by removing it from the browser.
35
+ */
36
+ remove(): void;
37
+ }
@@ -0,0 +1,27 @@
1
+ import { LocalStorageService } from '../storage';
2
+ import { CookieConsent } from '../../models/tracking';
3
+ export declare class TrackingStorageService extends LocalStorageService {
4
+ readonly NAMESPACE = "tracking";
5
+ readonly COOKIE_CONSENT = "cookieConsent";
6
+ readonly LEGACY_COOKIE_CONSENT = "cookie-consent";
7
+ private readonly logger;
8
+ /**
9
+ * Stores a value in the local storage under a key that is prefixed with the service's namespace to avoid collisions.
10
+ * @param key The key under which to store the value (without namespace prefix).
11
+ * @param value The value to store as a string.
12
+ */
13
+ set(key: string, value: string): void;
14
+ /**
15
+ * Saves the user's cookie consent preferences to local storage. The preferences are serialized as a JSON string.
16
+ * @param cookieConsent The cookie consent preferences to save, provided as a partial object. Only the specified
17
+ * properties will be updated in storage.
18
+ */
19
+ setCookieConsent(cookieConsent: Partial<CookieConsent>): void;
20
+ /**
21
+ * Retrieves the user's cookie consent preferences from local storage. If legacy data is found under the old key, it
22
+ * will be migrated to the new key and returned. If no data is found, null is returned.
23
+ * @return The user's cookie consent preferences, or null if no preferences are stored.
24
+ */
25
+ getCookieConsent(): CookieConsent | null;
26
+ private migrateLegacyCookieConsent;
27
+ }
@@ -0,0 +1,56 @@
1
+ import { Service } from '../../providers/service/service';
2
+ import { CookieConsent } from '../../models/tracking';
3
+ export declare const COOKIE_CONSENT_CHANGED_EVENT = "cookie-consent-changed-event";
4
+ /**
5
+ * Service for managing user tracking based on their cookie consent preferences.
6
+ */
7
+ export declare class TrackingService implements Service {
8
+ private readonly securityService;
9
+ private readonly securityContextService;
10
+ private readonly authenticationService;
11
+ private readonly authorizationService;
12
+ private readonly trackingStorageService;
13
+ private readonly licenseService;
14
+ private readonly licenseContextService;
15
+ private readonly installationCookieService;
16
+ private readonly googleAnalyticsCookieService;
17
+ private readonly eventEmitter;
18
+ /**
19
+ * Determines whether tracking is allowed based on the current license and development mode.
20
+ *
21
+ * @return Returns `true` if tracking is allowed, otherwise returns `false`.
22
+ */
23
+ isTrackingAllowed(): boolean;
24
+ /**
25
+ * Accepts the cookie policy for the authenticated user.
26
+ * Consent is persisted either on server or in local storage depending on the user's authentication status and free
27
+ * access settings.
28
+ * If the user is authenticated or security is OFF, the consent is stored in the backend.
29
+ * If the user is not authenticated and security is ON, regardless the free access status, the consent is stored in
30
+ * local storage.
31
+ *
32
+ * @returns A promise that resolves when the request to the backend has passed.
33
+ */
34
+ acceptCookiePolicy(): Promise<void>;
35
+ /**
36
+ * Retrieves the current cookie consent preferences for the user
37
+ * - If principal has no username => read local storage.
38
+ * - If none in local storage => return defaults.
39
+ * - If principal has a username => read from principal.appSettings.
40
+ * @return The current cookie consent preferences for the user.
41
+ */
42
+ getCookieConsent(): CookieConsent;
43
+ /**
44
+ * Checks if tracking is allowed and, if so, fetches the current user consent,
45
+ * then sets or removes tracking cookies accordingly.
46
+ * @returns A promise that resolves when the tracking consent has been applied.
47
+ */
48
+ applyTrackingConsent(): Promise<void> | undefined;
49
+ /**
50
+ * Removes all tracking-related cookies and scripts.
51
+ * This function is called when tracking is not allowed by the license
52
+ * or when the user has opted out of all tracking options.
53
+ */
54
+ cleanUpTracking(): void;
55
+ private updateUserCookieConsent;
56
+ }
@@ -11,7 +11,7 @@ export interface UserResponse {
11
11
  DEFAULT_SAMEAS?: boolean;
12
12
  IGNORE_SHARED_QUERIES?: boolean;
13
13
  EXECUTE_COUNT?: boolean;
14
- COOKIE_CONSENT?: boolean | {
14
+ COOKIE_CONSENT?: {
15
15
  policyAccepted: boolean;
16
16
  statistic: boolean;
17
17
  thirdParty: boolean;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Utility class for date-related operations.
3
+ */
4
+ export declare class DateUtil {
5
+ /**
6
+ * Returns the current timestamp in milliseconds since the Unix epoch.
7
+ *
8
+ * @return The current timestamp in milliseconds.
9
+ */
10
+ static now(): number;
11
+ }
@@ -5,3 +5,4 @@ export { FibonacciGenerator } from './fibonacci-generator';
5
5
  export * from './routing-utils';
6
6
  export { BuildUtil } from './build-util';
7
7
  export * from './enum-util';
8
+ export { DateUtil } from './date-util';
@@ -9,6 +9,12 @@ export declare class WindowService implements Service {
9
9
  * better testability and easier mocking of the window object in unit tests.
10
10
  */
11
11
  static getWindow(): Window;
12
+ /**
13
+ * Returns the document object associated with the current window. This method provides a way to access the document
14
+ * object while allowing for easier testing and mocking in unit tests, as it relies on the getWindow method to
15
+ * retrieve the window object.
16
+ */
17
+ static getDocument(): Document;
12
18
  static getPluginRegistry(): PluginRegistry;
13
19
  static getCrypto(): Crypto;
14
20
  static getLocationHref(): string;
@@ -56,7 +56,7 @@
56
56
  "language_selector": {
57
57
  "toggle_menu": {
58
58
  "label": "Sélectionner la langue",
59
- "tooltip": "Langue actuelle : Anglais"
59
+ "tooltip": "Langue actuelle : Français"
60
60
  },
61
61
  "language": {
62
62
  "en": {
package/dist/index.html CHANGED
@@ -5,16 +5,16 @@
5
5
  const clean = pathname.slice(0, -1) + search + hash;
6
6
  window.history.replaceState({}, '', clean);
7
7
  }
8
- })();</script><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="stylesheet" href="css/splash-screen.css?v=3.3.2-TR1"><title>GraphDB Workbench</title><script src="resources/runtime.js?v=3.3.2-TR1"></script><meta name="importmap-type" use-injector/><script src="plugin-registry.js?v=3.3.2-TR1"></script><script src="plugins.js?v=3.3.2-TR1"></script><script>window.wbDevMode = false;</script><script type="injector-importmap">{
8
+ })();</script><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="stylesheet" href="css/splash-screen.css?v=3.3.3-TR1"><title>GraphDB Workbench</title><script src="resources/runtime.js?v=3.3.3-TR1"></script><meta name="importmap-type" use-injector/><script src="plugin-registry.js?v=3.3.3-TR1"></script><script src="plugins.js?v=3.3.3-TR1"></script><script>window.wbDevMode = false;</script><script type="injector-importmap">{
9
9
  "imports": {
10
- "single-spa": "./resources/single-spa.min.js?v=3.3.2-TR1",
11
- "@ontotext/workbench-api": "./api/ontotext-workbench-api.js?v=3.3.2-TR1",
12
- "@ontotext/root-config": "./main.1be0fc11ab24b99f8800.js",
13
- "@ontotext/legacy-workbench": "./legacyWorkbench.88e1d4d209e51c6f9b65.js",
14
- "@ontotext/workbench": "./workbench/workbench/workbenchApp.js?v=3.3.2-TR1",
15
- "@ontotext/styleguide": "./styleguide.6394d95068fdfd394db1.js?v=3.3.2-TR1"
10
+ "single-spa": "./resources/single-spa.min.js?v=3.3.3-TR1",
11
+ "@ontotext/workbench-api": "./api/ontotext-workbench-api.js?v=3.3.3-TR1",
12
+ "@ontotext/root-config": "./main.14f083264cd64618d96a.js",
13
+ "@ontotext/legacy-workbench": "./legacyWorkbench.4d8a4e8dde83fc9ac427.js",
14
+ "@ontotext/workbench": "./workbench/workbench/workbenchApp.js?v=3.3.3-TR1",
15
+ "@ontotext/styleguide": "./styleguide.6394d95068fdfd394db1.js?v=3.3.3-TR1"
16
16
  }
17
- }</script><meta name="import-map-overrides-domains" content="denylist:prod.example.com"/><script src="resources/import-map-overrides.js?v=3.3.2-TR1"></script><script src="resources/import-map-injector.js?v=3.3.2-TR1"></script><style>/* Default light/dark background is hardcodded here because our variables are not present yet. */
17
+ }</script><meta name="import-map-overrides-domains" content="denylist:prod.example.com"/><script src="resources/import-map-overrides.js?v=3.3.3-TR1"></script><script src="resources/import-map-injector.js?v=3.3.3-TR1"></script><style>/* Default light/dark background is hardcodded here because our variables are not present yet. */
18
18
  body {
19
19
  background-color: hsla(220, 40%, 7%);
20
20
  }
@@ -25,4 +25,4 @@
25
25
  }</style></head><body><noscript>You need to enable JavaScript to run this app.</noscript><script>window.importMapInjector.initPromise.then(() => {
26
26
  import('@ontotext/root-config');
27
27
  import('@ontotext/styleguide');
28
- });</script><import-map-overrides-full show-when-local-storage="devtools" dev-libs></import-map-overrides-full><figure id="splash-screen"><img decoding="sync" src="assets/graphdb-splash.svg?v=3.3.2-TR1" alt="GraphDB Workbench is loading..."></figure><onto-toastr></onto-toastr></body></html>
28
+ });</script><import-map-overrides-full show-when-local-storage="devtools" dev-libs></import-map-overrides-full><figure id="splash-screen"><img decoding="sync" src="assets/graphdb-splash.svg?v=3.3.3-TR1" alt="GraphDB Workbench is loading..."></figure><onto-toastr></onto-toastr></body></html>
@@ -1,4 +1,4 @@
1
- <link href="css/cluster-nodes-configuration.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/cluster-nodes-configuration.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div onto-loader ng-if="loader" class="create-cluster-loader" message="getLoaderMessage" size="100"></div>
4
4
  <div class="add-node-wrapper pull-right mb-1">
@@ -1,4 +1,4 @@
1
- <link href="css/autocomplete-select.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/autocomplete-select.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="autocomplete-select-wrapper">
4
4
  <div class="autocomplete-select">
@@ -1,4 +1,4 @@
1
- <link href="css/dynamic-form.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/dynamic-form.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="dynamic-form-container">
4
4
  <form name="dynamicForm" novalidate class="dynamic-form">
@@ -1,4 +1,4 @@
1
- <link href="css/operations-statuses-monitor.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/operations-statuses-monitor.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0"
4
4
  class="operations-statuses btn-group">
@@ -1,4 +1,4 @@
1
- <link href="css/rdf-resource-search.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/rdf-resource-search.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div ng-cloak>
4
4
  <div id="search-box"
@@ -1,4 +1,4 @@
1
- <link href="css/shuttle-multiselect.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/shuttle-multiselect.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="shuttle-multiselect">
4
4
  <div class="shuttle-panel available-options">
@@ -1,5 +1,5 @@
1
- <link href="css/lib/codemirror/moxer.css?v=3.3.2-TR1" rel="stylesheet">
2
- <link href="css/lib/ontotext-yasgui-web-component.css?v=3.3.2-TR1" rel="stylesheet">
1
+ <link href="css/lib/codemirror/moxer.css?v=3.3.3-TR1" rel="stylesheet">
2
+ <link href="css/lib/ontotext-yasgui-web-component.css?v=3.3.3-TR1" rel="stylesheet">
3
3
 
4
4
  <ontotext-yasgui
5
5
  class="{{classToApply}}"
@@ -1,4 +1,4 @@
1
- <link href="css/cookie-policy.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/cookie-policy.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="cookie-consent-modal" ng-show="showCookieConsent">
4
4
  <div class="cookie-consent-content">
@@ -1,4 +1,4 @@
1
- <link href="css/cookie-policy.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/cookie-policy.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="cookie-policy-modal">
4
4
  <div class="title">{{'cookie.policy.title' | translate}}</div>
@@ -1,4 +1,4 @@
1
- <link href="css/editable-content.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/editable-content.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
  <div
3
3
  ng-attr-contenteditable="{{!ngDisabled}}"
4
4
  ng-attr-disabled="{{ngDisabled ? true : undefined}}"
@@ -1,2 +1,2 @@
1
- <link href="css/markdown-content.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/markdown-content.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
  <div class="markdown-content" ng-bind-html="markdownContent"></div>
@@ -1,4 +1,4 @@
1
- <link href="css/search-resource-input.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/search-resource-input.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div id="search-resource-box" class="input-group btn-group" ng-class="{'input-group-lg': !radioButtons}" style="white-space: nowrap">
4
4
  <input type="text" class="form-control view-res-input" placeholder="{{placeholder}}" ng-model="searchInput"
@@ -1,5 +1,5 @@
1
- <link href="css/graphql/create-graphql-endpoint.css?v=3.3.2-TR1" rel="stylesheet"/>
2
- <link href="css/wizard.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/graphql/create-graphql-endpoint.css?v=3.3.3-TR1" rel="stylesheet"/>
2
+ <link href="css/wizard.css?v=3.3.3-TR1" rel="stylesheet"/>
3
3
 
4
4
  <div class="create-graphql-endpoint-view">
5
5
  <h1 id="title-container">
@@ -1,4 +1,4 @@
1
- <link href="css/graphql/graphql-endpoint-management.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/graphql/graphql-endpoint-management.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="graphql-endpoint-management-view">
4
4
  <h1 id="title-container">
@@ -1,5 +1,5 @@
1
- <link href="css/lib/codemirror/moxer.css?v=3.3.2-TR1" rel="stylesheet">
2
- <link href="css/graphql/graphql-playground.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/lib/codemirror/moxer.css?v=3.3.3-TR1" rel="stylesheet">
2
+ <link href="css/graphql/graphql-playground.css?v=3.3.3-TR1" rel="stylesheet"/>
3
3
 
4
4
  <div class="graphql-playground-view">
5
5
  <h1 id="title-container">
@@ -1,4 +1,4 @@
1
- <link href="css/graphql/graphql-endpoint-configuration-modal.css?v=3.3.2-TR1" rel="stylesheet"/>
1
+ <link href="css/graphql/graphql-endpoint-configuration-modal.css?v=3.3.3-TR1" rel="stylesheet"/>
2
2
 
3
3
  <div class="modal-header">
4
4
  <h3 class="modal-title">{{'graphql.endpoints_management.endpoint_configuration_modal.title' | translate}}</h3>