@kalisio/kdk 2.5.2 → 2.5.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 (275) hide show
  1. package/core/client/components/input/KShapePicker.vue +4 -4
  2. package/coverage/core/api/application.js.html +344 -344
  3. package/coverage/core/api/authentication.js.html +79 -79
  4. package/coverage/core/api/db.js.html +167 -167
  5. package/coverage/core/api/hooks/hooks.authentication.js.html +12 -12
  6. package/coverage/core/api/hooks/hooks.authorisations.js.html +166 -163
  7. package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
  8. package/coverage/core/api/hooks/hooks.logger.js.html +18 -18
  9. package/coverage/core/api/hooks/hooks.model.js.html +280 -268
  10. package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
  11. package/coverage/core/api/hooks/hooks.push.js.html +12 -12
  12. package/coverage/core/api/hooks/hooks.query.js.html +92 -92
  13. package/coverage/core/api/hooks/hooks.schemas.js.html +13 -13
  14. package/coverage/core/api/hooks/hooks.service.js.html +28 -28
  15. package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
  16. package/coverage/core/api/hooks/hooks.users.js.html +48 -48
  17. package/coverage/core/api/hooks/index.html +49 -49
  18. package/coverage/core/api/hooks/index.js.html +11 -11
  19. package/coverage/core/api/index.html +42 -42
  20. package/coverage/core/api/index.js.html +22 -22
  21. package/coverage/core/api/marshall.js.html +127 -127
  22. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  23. package/coverage/core/api/models/index.html +1 -1
  24. package/coverage/core/api/models/messages.model.mongodb.js.html +1 -1
  25. package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
  26. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  27. package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
  28. package/coverage/core/api/services/account/account.hooks.js.html +42 -42
  29. package/coverage/core/api/services/account/account.service.js.html +34 -34
  30. package/coverage/core/api/services/account/index.html +1 -1
  31. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  32. package/coverage/core/api/services/authorisations/authorisations.service.js.html +108 -120
  33. package/coverage/core/api/services/authorisations/index.html +19 -19
  34. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  35. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  36. package/coverage/core/api/services/databases/index.html +1 -1
  37. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  38. package/coverage/core/api/services/groups/index.html +1 -1
  39. package/coverage/core/api/services/import-export/import-export.hooks.js.html +1 -1
  40. package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
  41. package/coverage/core/api/services/import-export/index.html +1 -1
  42. package/coverage/core/api/services/index.html +15 -15
  43. package/coverage/core/api/services/index.js.html +97 -85
  44. package/coverage/core/api/services/mailer/index.html +1 -1
  45. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  46. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  47. package/coverage/core/api/services/messages/index.html +5 -5
  48. package/coverage/core/api/services/messages/messages.hooks.js.html +11 -8
  49. package/coverage/core/api/services/organisations/index.html +1 -1
  50. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  51. package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
  52. package/coverage/core/api/services/push/index.html +1 -1
  53. package/coverage/core/api/services/push/push.hooks.js.html +1 -1
  54. package/coverage/core/api/services/push/push.service.js.html +1 -1
  55. package/coverage/core/api/services/storage/index.html +1 -1
  56. package/coverage/core/api/services/storage/storage.hooks.js.html +36 -36
  57. package/coverage/core/api/services/storage/storage.service.js.html +30 -30
  58. package/coverage/core/api/services/tags/index.html +1 -1
  59. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  60. package/coverage/core/api/services/users/index.html +7 -7
  61. package/coverage/core/api/services/users/users.hooks.js.html +83 -80
  62. package/coverage/core/api/services/users/users.service.js.html +4 -4
  63. package/coverage/core/api/utils.js.html +1 -1
  64. package/coverage/core/common/errors.js.html +2 -2
  65. package/coverage/core/common/index.html +30 -30
  66. package/coverage/core/common/index.js.html +11 -11
  67. package/coverage/core/common/permissions.js.html +187 -187
  68. package/coverage/core/common/schema.js.html +26 -26
  69. package/coverage/core/common/utils.js.html +61 -61
  70. package/coverage/core/common/utils.offline.js.html +6 -6
  71. package/coverage/index.html +179 -164
  72. package/coverage/lcov-report/core/api/application.js.html +344 -344
  73. package/coverage/lcov-report/core/api/authentication.js.html +79 -79
  74. package/coverage/lcov-report/core/api/db.js.html +167 -167
  75. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +12 -12
  76. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +166 -163
  77. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
  78. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +18 -18
  79. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +280 -268
  80. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
  81. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +12 -12
  82. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +92 -92
  83. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +13 -13
  84. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
  85. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
  86. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +48 -48
  87. package/coverage/lcov-report/core/api/hooks/index.html +49 -49
  88. package/coverage/lcov-report/core/api/hooks/index.js.html +11 -11
  89. package/coverage/lcov-report/core/api/index.html +42 -42
  90. package/coverage/lcov-report/core/api/index.js.html +22 -22
  91. package/coverage/lcov-report/core/api/marshall.js.html +127 -127
  92. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  93. package/coverage/lcov-report/core/api/models/index.html +1 -1
  94. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +1 -1
  95. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
  96. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  97. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
  98. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +42 -42
  99. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  100. package/coverage/lcov-report/core/api/services/account/index.html +1 -1
  101. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  102. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +108 -120
  103. package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
  104. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  105. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  106. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  107. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  108. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  109. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
  110. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
  111. package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
  112. package/coverage/lcov-report/core/api/services/index.html +15 -15
  113. package/coverage/lcov-report/core/api/services/index.js.html +97 -85
  114. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  115. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  116. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  117. package/coverage/lcov-report/core/api/services/messages/index.html +5 -5
  118. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +11 -8
  119. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  120. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  121. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
  122. package/coverage/lcov-report/core/api/services/push/index.html +1 -1
  123. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
  124. package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
  125. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  126. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +36 -36
  127. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +30 -30
  128. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  129. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  130. package/coverage/lcov-report/core/api/services/users/index.html +7 -7
  131. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +83 -80
  132. package/coverage/lcov-report/core/api/services/users/users.service.js.html +4 -4
  133. package/coverage/lcov-report/core/api/utils.js.html +1 -1
  134. package/coverage/lcov-report/core/common/errors.js.html +2 -2
  135. package/coverage/lcov-report/core/common/index.html +30 -30
  136. package/coverage/lcov-report/core/common/index.js.html +11 -11
  137. package/coverage/lcov-report/core/common/permissions.js.html +187 -187
  138. package/coverage/lcov-report/core/common/schema.js.html +26 -26
  139. package/coverage/lcov-report/core/common/utils.js.html +61 -61
  140. package/coverage/lcov-report/core/common/utils.offline.js.html +6 -6
  141. package/coverage/lcov-report/index.html +179 -164
  142. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +348 -258
  143. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
  144. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +795 -810
  145. package/coverage/lcov-report/map/api/hooks/index.html +54 -54
  146. package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
  147. package/coverage/lcov-report/map/api/index.html +32 -32
  148. package/coverage/lcov-report/map/api/index.js.html +46 -46
  149. package/coverage/lcov-report/map/api/marshall.js.html +72 -72
  150. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
  151. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +69 -27
  152. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
  153. package/coverage/lcov-report/map/api/models/index.html +69 -54
  154. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
  155. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +112 -0
  156. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
  158. package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
  159. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +177 -162
  160. package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
  161. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  162. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  163. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +160 -160
  164. package/coverage/lcov-report/map/api/services/features/features.service.js.html +117 -117
  165. package/coverage/lcov-report/map/api/services/features/index.html +31 -31
  166. package/coverage/lcov-report/map/api/services/index.html +21 -21
  167. package/coverage/lcov-report/map/api/services/index.js.html +404 -296
  168. package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
  169. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
  170. package/coverage/lcov-report/map/api/services/styles/index.html +116 -0
  171. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
  172. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  173. package/coverage/lcov-report/map/common/errors.js.html +16 -16
  174. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -267
  175. package/coverage/lcov-report/map/common/grid.js.html +554 -554
  176. package/coverage/lcov-report/map/common/index.html +158 -158
  177. package/coverage/lcov-report/map/common/index.js.html +68 -68
  178. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
  179. package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
  180. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
  181. package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
  182. package/coverage/lcov-report/map/common/permissions.js.html +42 -36
  183. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
  184. package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
  185. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
  186. package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
  187. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
  188. package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
  189. package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
  190. package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
  191. package/coverage/lcov.info +7022 -5894
  192. package/coverage/map/api/hooks/hooks.catalog.js.html +348 -258
  193. package/coverage/map/api/hooks/hooks.features.js.html +218 -218
  194. package/coverage/map/api/hooks/hooks.query.js.html +795 -810
  195. package/coverage/map/api/hooks/index.html +54 -54
  196. package/coverage/map/api/hooks/index.js.html +16 -16
  197. package/coverage/map/api/index.html +32 -32
  198. package/coverage/map/api/index.js.html +46 -46
  199. package/coverage/map/api/marshall.js.html +72 -72
  200. package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
  201. package/coverage/map/api/models/catalog.model.mongodb.js.html +69 -27
  202. package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
  203. package/coverage/map/api/models/index.html +69 -54
  204. package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
  205. package/coverage/map/api/models/styles.model.mongodb.js.html +112 -0
  206. package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
  207. package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
  208. package/coverage/map/api/services/alerts/index.html +32 -32
  209. package/coverage/map/api/services/catalog/catalog.hooks.js.html +177 -162
  210. package/coverage/map/api/services/catalog/index.html +21 -21
  211. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  212. package/coverage/map/api/services/daptiles/index.html +1 -1
  213. package/coverage/map/api/services/features/features.hooks.js.html +160 -160
  214. package/coverage/map/api/services/features/features.service.js.html +117 -117
  215. package/coverage/map/api/services/features/index.html +31 -31
  216. package/coverage/map/api/services/index.html +21 -21
  217. package/coverage/map/api/services/index.js.html +404 -296
  218. package/coverage/map/api/services/projects/index.html +21 -21
  219. package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
  220. package/coverage/map/api/services/styles/index.html +116 -0
  221. package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
  222. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  223. package/coverage/map/common/errors.js.html +16 -16
  224. package/coverage/map/common/geotiff-grid-source.js.html +267 -267
  225. package/coverage/map/common/grid.js.html +554 -554
  226. package/coverage/map/common/index.html +158 -158
  227. package/coverage/map/common/index.js.html +68 -68
  228. package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
  229. package/coverage/map/common/moment-utils.js.html +18 -18
  230. package/coverage/map/common/opendap-grid-source.js.html +484 -484
  231. package/coverage/map/common/opendap-utils.js.html +353 -353
  232. package/coverage/map/common/permissions.js.html +42 -36
  233. package/coverage/map/common/time-based-grid-source.js.html +59 -59
  234. package/coverage/map/common/tms-utils.js.html +6 -6
  235. package/coverage/map/common/wcs-grid-source.js.html +190 -190
  236. package/coverage/map/common/wcs-utils.js.html +339 -339
  237. package/coverage/map/common/weacast-grid-source.js.html +345 -345
  238. package/coverage/map/common/wfs-utils.js.html +11 -11
  239. package/coverage/map/common/wms-utils.js.html +8 -8
  240. package/coverage/map/common/wmts-utils.js.html +7 -7
  241. package/coverage/tmp/coverage-151198-1753351220086-0.json +1 -0
  242. package/coverage/tmp/coverage-151210-1753351220070-0.json +1 -0
  243. package/coverage/tmp/coverage-151221-1753351129816-0.json +1 -0
  244. package/coverage/tmp/coverage-151233-1753351129803-0.json +1 -0
  245. package/coverage/tmp/coverage-151240-1753351129770-0.json +1 -0
  246. package/coverage/tmp/coverage-151307-1753351220058-0.json +1 -0
  247. package/coverage/tmp/coverage-151319-1753351220044-0.json +1 -0
  248. package/coverage/tmp/coverage-151326-1753351220010-0.json +1 -0
  249. package/map/api/services/styles/styles.hooks.js +1 -1
  250. package/map/client/components/KLayerEditor.vue +4 -0
  251. package/map/client/components/catalog/KLayerCategories.vue +2 -0
  252. package/map/client/components/stickies/KLevelSlider.vue +10 -8
  253. package/map/client/components/styles/KStyleEditor.vue +1 -1
  254. package/map/client/components/styles/KStyleManager.vue +7 -1
  255. package/map/client/composables/highlight.js +5 -1
  256. package/map/client/i18n/map_en.json +4 -1
  257. package/map/client/i18n/map_fr.json +4 -1
  258. package/map/client/mixins/globe/mixin.geojson-layers.js +11 -5
  259. package/map/client/mixins/mixin.activity.js +9 -0
  260. package/map/client/utils/utils.layers.js +0 -2
  261. package/package.json +1 -1
  262. package/test/api/core/push.test.js +1 -1
  263. package/test/api/core/test-log-2025-02-05.log +23 -0
  264. package/test/api/core/test-log-2025-05-21.log +15 -0
  265. package/test/api/core/test-log-2025-06-25.log +9 -0
  266. package/test/api/core/test-log-2025-07-24.log +44 -0
  267. package/test/api/map/test-log-2025-05-27.log +13 -0
  268. package/test/api/map/test-log-2025-06-23.log +7 -0
  269. package/test/api/map/{test-log-2025-05-26.log → test-log-2025-07-24.log} +3 -4
  270. package/coverage/tmp/coverage-122123-1739872365211-0.json +0 -1
  271. package/coverage/tmp/coverage-122135-1739872365196-0.json +0 -1
  272. package/coverage/tmp/coverage-122146-1739872365184-0.json +0 -1
  273. package/coverage/tmp/coverage-122158-1739872365169-0.json +0 -1
  274. package/coverage/tmp/coverage-122165-1739872365141-0.json +0 -1
  275. package/test/api/core/test-log-2025-05-26.log +0 -22
@@ -180,28 +180,28 @@
180
180
  <a name='L115'></a><a href='#L115'>115</a>
181
181
  <a name='L116'></a><a href='#L116'>116</a>
182
182
  <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
184
- <span class="cline-any cline-yes">1x</span>
185
- <span class="cline-any cline-yes">1x</span>
186
- <span class="cline-any cline-yes">1x</span>
187
- <span class="cline-any cline-yes">1x</span>
188
- <span class="cline-any cline-yes">1x</span>
189
- <span class="cline-any cline-yes">1x</span>
190
- <span class="cline-any cline-yes">1x</span>
191
- <span class="cline-any cline-yes">1x</span>
192
- <span class="cline-any cline-yes">1x</span>
193
- <span class="cline-any cline-yes">1x</span>
194
- <span class="cline-any cline-yes">1x</span>
195
- <span class="cline-any cline-yes">1x</span>
196
- <span class="cline-any cline-yes">1x</span>
197
- <span class="cline-any cline-yes">1x</span>
198
- <span class="cline-any cline-yes">1x</span>
183
+ <a name='L118'></a><a href='#L118'>118</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
184
+ <span class="cline-any cline-yes">2x</span>
185
+ <span class="cline-any cline-yes">2x</span>
186
+ <span class="cline-any cline-yes">2x</span>
187
+ <span class="cline-any cline-yes">2x</span>
188
+ <span class="cline-any cline-yes">2x</span>
189
+ <span class="cline-any cline-yes">2x</span>
190
+ <span class="cline-any cline-yes">2x</span>
191
+ <span class="cline-any cline-yes">2x</span>
192
+ <span class="cline-any cline-yes">2x</span>
193
+ <span class="cline-any cline-yes">2x</span>
194
+ <span class="cline-any cline-yes">2x</span>
195
+ <span class="cline-any cline-yes">2x</span>
199
196
  <span class="cline-any cline-yes">1x</span>
200
197
  <span class="cline-any cline-yes">1x</span>
201
198
  <span class="cline-any cline-yes">1x</span>
202
199
  <span class="cline-any cline-yes">1x</span>
203
- <span class="cline-any cline-yes">7x</span>
204
- <span class="cline-any cline-yes">7x</span>
200
+ <span class="cline-any cline-yes">2x</span>
201
+ <span class="cline-any cline-yes">2x</span>
202
+ <span class="cline-any cline-yes">2x</span>
203
+ <span class="cline-any cline-yes">11x</span>
204
+ <span class="cline-any cline-yes">11x</span>
205
205
  <span class="cline-any cline-yes">7x</span>
206
206
  <span class="cline-any cline-yes">7x</span>
207
207
  <span class="cline-any cline-yes">7x</span>
@@ -282,21 +282,21 @@
282
282
  <span class="cline-any cline-no">&nbsp;</span>
283
283
  <span class="cline-any cline-no">&nbsp;</span>
284
284
  <span class="cline-any cline-yes">7x</span>
285
- <span class="cline-any cline-yes">7x</span>
286
- <span class="cline-any cline-yes">7x</span>
287
- <span class="cline-any cline-yes">7x</span>
288
- <span class="cline-any cline-yes">7x</span>
289
- <span class="cline-any cline-yes">7x</span>
290
- <span class="cline-any cline-yes">7x</span>
291
- <span class="cline-any cline-yes">7x</span>
292
- <span class="cline-any cline-yes">7x</span>
293
- <span class="cline-any cline-yes">7x</span>
294
- <span class="cline-any cline-yes">7x</span>
295
- <span class="cline-any cline-yes">7x</span>
296
- <span class="cline-any cline-yes">7x</span>
297
- <span class="cline-any cline-yes">7x</span>
298
- <span class="cline-any cline-yes">7x</span>
299
- <span class="cline-any cline-yes">7x</span>
285
+ <span class="cline-any cline-yes">11x</span>
286
+ <span class="cline-any cline-yes">11x</span>
287
+ <span class="cline-any cline-yes">11x</span>
288
+ <span class="cline-any cline-yes">11x</span>
289
+ <span class="cline-any cline-yes">11x</span>
290
+ <span class="cline-any cline-yes">11x</span>
291
+ <span class="cline-any cline-yes">11x</span>
292
+ <span class="cline-any cline-yes">11x</span>
293
+ <span class="cline-any cline-yes">11x</span>
294
+ <span class="cline-any cline-yes">11x</span>
295
+ <span class="cline-any cline-yes">11x</span>
296
+ <span class="cline-any cline-yes">11x</span>
297
+ <span class="cline-any cline-yes">11x</span>
298
+ <span class="cline-any cline-yes">11x</span>
299
+ <span class="cline-any cline-yes">11x</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { AuthenticationManagementService } from 'feathers-authentication-management'
301
301
  import errors from '@feathersjs/errors'
302
302
  import emails from 'email-templates'
@@ -421,7 +421,7 @@ export default function (name, app, options) {
421
421
  <div class='footer quiet pad2 space-top1 center small'>
422
422
  Code coverage generated by
423
423
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
424
- at 2025-02-18T09:52:45.605Z
424
+ at 2025-07-24T10:00:20.476Z
425
425
  </div>
426
426
  <script src="../../../../prettify.js"></script>
427
427
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-02-18T09:52:45.605Z
119
+ at 2025-07-24T10:00:20.476Z
120
120
  </div>
121
121
  <script src="../../../../prettify.js"></script>
122
122
  <script>
@@ -96,39 +96,39 @@
96
96
  <a name='L31'></a><a href='#L31'>31</a>
97
97
  <a name='L32'></a><a href='#L32'>32</a>
98
98
  <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
100
- <span class="cline-any cline-yes">1x</span>
101
- <span class="cline-any cline-yes">1x</span>
102
- <span class="cline-any cline-yes">1x</span>
103
- <span class="cline-any cline-yes">1x</span>
104
- <span class="cline-any cline-yes">1x</span>
105
- <span class="cline-any cline-yes">1x</span>
106
- <span class="cline-any cline-yes">1x</span>
107
- <span class="cline-any cline-yes">1x</span>
108
- <span class="cline-any cline-yes">1x</span>
109
- <span class="cline-any cline-yes">1x</span>
110
- <span class="cline-any cline-yes">1x</span>
111
- <span class="cline-any cline-yes">1x</span>
112
- <span class="cline-any cline-yes">1x</span>
113
- <span class="cline-any cline-yes">1x</span>
114
- <span class="cline-any cline-yes">1x</span>
115
- <span class="cline-any cline-yes">1x</span>
116
- <span class="cline-any cline-yes">1x</span>
117
- <span class="cline-any cline-yes">1x</span>
118
- <span class="cline-any cline-yes">1x</span>
119
- <span class="cline-any cline-yes">1x</span>
120
- <span class="cline-any cline-yes">1x</span>
121
- <span class="cline-any cline-yes">1x</span>
122
- <span class="cline-any cline-yes">1x</span>
123
- <span class="cline-any cline-yes">1x</span>
124
- <span class="cline-any cline-yes">1x</span>
125
- <span class="cline-any cline-yes">1x</span>
126
- <span class="cline-any cline-yes">1x</span>
127
- <span class="cline-any cline-yes">1x</span>
128
- <span class="cline-any cline-yes">1x</span>
129
- <span class="cline-any cline-yes">1x</span>
130
- <span class="cline-any cline-yes">1x</span>
131
- <span class="cline-any cline-yes">1x</span>
99
+ <a name='L34'></a><a href='#L34'>34</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
100
+ <span class="cline-any cline-yes">2x</span>
101
+ <span class="cline-any cline-yes">2x</span>
102
+ <span class="cline-any cline-yes">2x</span>
103
+ <span class="cline-any cline-yes">2x</span>
104
+ <span class="cline-any cline-yes">2x</span>
105
+ <span class="cline-any cline-yes">2x</span>
106
+ <span class="cline-any cline-yes">2x</span>
107
+ <span class="cline-any cline-yes">2x</span>
108
+ <span class="cline-any cline-yes">2x</span>
109
+ <span class="cline-any cline-yes">2x</span>
110
+ <span class="cline-any cline-yes">2x</span>
111
+ <span class="cline-any cline-yes">2x</span>
112
+ <span class="cline-any cline-yes">2x</span>
113
+ <span class="cline-any cline-yes">2x</span>
114
+ <span class="cline-any cline-yes">2x</span>
115
+ <span class="cline-any cline-yes">2x</span>
116
+ <span class="cline-any cline-yes">2x</span>
117
+ <span class="cline-any cline-yes">2x</span>
118
+ <span class="cline-any cline-yes">2x</span>
119
+ <span class="cline-any cline-yes">2x</span>
120
+ <span class="cline-any cline-yes">2x</span>
121
+ <span class="cline-any cline-yes">2x</span>
122
+ <span class="cline-any cline-yes">2x</span>
123
+ <span class="cline-any cline-yes">2x</span>
124
+ <span class="cline-any cline-yes">2x</span>
125
+ <span class="cline-any cline-yes">2x</span>
126
+ <span class="cline-any cline-yes">2x</span>
127
+ <span class="cline-any cline-yes">2x</span>
128
+ <span class="cline-any cline-yes">2x</span>
129
+ <span class="cline-any cline-yes">2x</span>
130
+ <span class="cline-any cline-yes">2x</span>
131
+ <span class="cline-any cline-yes">2x</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { populateSubjects, populateResource } from '../../hooks/index.js'
133
133
  &nbsp;
134
134
  export default {
@@ -169,7 +169,7 @@ export default {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2025-02-18T09:52:45.605Z
172
+ at 2025-07-24T10:00:20.476Z
173
173
  </div>
174
174
  <script src="../../../../prettify.js"></script>
175
175
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">91.27% </span>
26
+ <span class="strong">93.79% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>136/149</span>
28
+ <span class='fraction'>136/145</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">78.78% </span>
33
+ <span class="strong">79.48% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/33</span>
35
+ <span class='fraction'>31/39</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/6</span>
42
+ <span class='fraction'>7/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">91.27% </span>
47
+ <span class="strong">93.79% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>136/149</span>
49
+ <span class='fraction'>136/145</span>
50
50
  </div>
51
51
 
52
52
 
@@ -208,25 +208,21 @@
208
208
  <a name='L143'></a><a href='#L143'>143</a>
209
209
  <a name='L144'></a><a href='#L144'>144</a>
210
210
  <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
216
- <span class="cline-any cline-yes">1x</span>
217
- <span class="cline-any cline-yes">1x</span>
218
- <span class="cline-any cline-yes">1x</span>
219
- <span class="cline-any cline-yes">1x</span>
220
- <span class="cline-any cline-yes">1x</span>
221
- <span class="cline-any cline-yes">1x</span>
222
- <span class="cline-any cline-yes">1x</span>
223
- <span class="cline-any cline-yes">1x</span>
224
- <span class="cline-any cline-yes">1x</span>
225
- <span class="cline-any cline-yes">1x</span>
226
- <span class="cline-any cline-yes">1x</span>
227
- <span class="cline-any cline-yes">1x</span>
228
- <span class="cline-any cline-yes">1x</span>
229
- <span class="cline-any cline-yes">1x</span>
211
+ <a name='L146'></a><a href='#L146'>146</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
212
+ <span class="cline-any cline-yes">2x</span>
213
+ <span class="cline-any cline-yes">2x</span>
214
+ <span class="cline-any cline-yes">2x</span>
215
+ <span class="cline-any cline-yes">2x</span>
216
+ <span class="cline-any cline-yes">2x</span>
217
+ <span class="cline-any cline-yes">2x</span>
218
+ <span class="cline-any cline-yes">2x</span>
219
+ <span class="cline-any cline-yes">2x</span>
220
+ <span class="cline-any cline-yes">2x</span>
221
+ <span class="cline-any cline-yes">2x</span>
222
+ <span class="cline-any cline-yes">2x</span>
223
+ <span class="cline-any cline-yes">2x</span>
224
+ <span class="cline-any cline-yes">2x</span>
225
+ <span class="cline-any cline-yes">2x</span>
230
226
  <span class="cline-any cline-yes">1x</span>
231
227
  <span class="cline-any cline-yes">1x</span>
232
228
  <span class="cline-any cline-yes">1x</span>
@@ -259,13 +255,12 @@
259
255
  <span class="cline-any cline-yes">1x</span>
260
256
  <span class="cline-any cline-yes">1x</span>
261
257
  <span class="cline-any cline-yes">1x</span>
262
- <span class="cline-any cline-yes">1x</span>
263
- <span class="cline-any cline-yes">1x</span>
264
- <span class="cline-any cline-yes">1x</span>
265
- <span class="cline-any cline-yes">1x</span>
266
- <span class="cline-any cline-yes">1x</span>
267
- <span class="cline-any cline-yes">1x</span>
268
- <span class="cline-any cline-yes">1x</span>
258
+ <span class="cline-any cline-yes">2x</span>
259
+ <span class="cline-any cline-yes">2x</span>
260
+ <span class="cline-any cline-yes">2x</span>
261
+ <span class="cline-any cline-yes">2x</span>
262
+ <span class="cline-any cline-yes">2x</span>
263
+ <span class="cline-any cline-yes">2x</span>
269
264
  <span class="cline-any cline-yes">1x</span>
270
265
  <span class="cline-any cline-yes">1x</span>
271
266
  <span class="cline-any cline-yes">1x</span>
@@ -293,14 +288,13 @@
293
288
  <span class="cline-any cline-yes">1x</span>
294
289
  <span class="cline-any cline-yes">1x</span>
295
290
  <span class="cline-any cline-yes">1x</span>
296
- <span class="cline-any cline-yes">1x</span>
297
291
  <span class="cline-any cline-no">&nbsp;</span>
298
292
  <span class="cline-any cline-yes">1x</span>
299
- <span class="cline-any cline-yes">1x</span>
300
- <span class="cline-any cline-yes">1x</span>
301
- <span class="cline-any cline-yes">1x</span>
302
- <span class="cline-any cline-yes">6x</span>
303
- <span class="cline-any cline-yes">6x</span>
293
+ <span class="cline-any cline-yes">2x</span>
294
+ <span class="cline-any cline-yes">2x</span>
295
+ <span class="cline-any cline-yes">2x</span>
296
+ <span class="cline-any cline-yes">10x</span>
297
+ <span class="cline-any cline-yes">10x</span>
304
298
  <span class="cline-any cline-yes">6x</span>
305
299
  <span class="cline-any cline-yes">6x</span>
306
300
  <span class="cline-any cline-yes">6x</span>
@@ -309,58 +303,56 @@
309
303
  <span class="cline-any cline-yes">6x</span>
310
304
  <span class="cline-any cline-yes">6x</span>
311
305
  <span class="cline-any cline-yes">6x</span>
312
- <span class="cline-any cline-no">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-yes">1x</span>
315
- <span class="cline-any cline-yes">1x</span>
316
- <span class="cline-any cline-yes">1x</span>
317
- <span class="cline-any cline-yes">1x</span>
318
- <span class="cline-any cline-yes">1x</span>
319
- <span class="cline-any cline-yes">11x</span>
320
- <span class="cline-any cline-yes">11x</span>
306
+ <span class="cline-any cline-yes">10x</span>
307
+ <span class="cline-any cline-yes">4x</span>
321
308
  <span class="cline-any cline-yes">4x</span>
322
- <span class="cline-any cline-yes">11x</span>
323
- <span class="cline-any cline-yes">7x</span>
324
- <span class="cline-any cline-yes">7x</span>
325
- <span class="cline-any cline-yes">11x</span>
326
- <span class="cline-any cline-yes">9x</span>
327
- <span class="cline-any cline-yes">9x</span>
328
- <span class="cline-any cline-yes">9x</span>
329
- <span class="cline-any cline-yes">9x</span>
330
- <span class="cline-any cline-yes">9x</span>
331
- <span class="cline-any cline-yes">3x</span>
332
- <span class="cline-any cline-yes">9x</span>
333
- <span class="cline-any cline-yes">6x</span>
334
- <span class="cline-any cline-yes">6x</span>
335
- <span class="cline-any cline-yes">9x</span>
336
- <span class="cline-any cline-yes">9x</span>
337
- <span class="cline-any cline-yes">9x</span>
338
- <span class="cline-any cline-yes">1x</span>
339
- <span class="cline-any cline-yes">1x</span>
340
- <span class="cline-any cline-yes">1x</span>
341
- <span class="cline-any cline-yes">1x</span>
342
- <span class="cline-any cline-yes">7x</span>
343
- <span class="cline-any cline-yes">7x</span>
344
- <span class="cline-any cline-yes">7x</span>
345
- <span class="cline-any cline-yes">7x</span>
346
309
  <span class="cline-any cline-yes">2x</span>
347
- <span class="cline-any cline-yes">7x</span>
348
- <span class="cline-any cline-yes">5x</span>
310
+ <span class="cline-any cline-yes">2x</span>
311
+ <span class="cline-any cline-yes">2x</span>
312
+ <span class="cline-any cline-yes">48x</span>
313
+ <span class="cline-any cline-yes">38x</span>
314
+ <span class="cline-any cline-yes">38x</span>
315
+ <span class="cline-any cline-yes">38x</span>
316
+ <span class="cline-any cline-yes">48x</span>
317
+ <span class="cline-any cline-yes">38x</span>
318
+ <span class="cline-any cline-yes">2x</span>
319
+ <span class="cline-any cline-yes">2x</span>
320
+ <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-yes">2x</span>
322
+ <span class="cline-any cline-yes">2x</span>
323
+ <span class="cline-any cline-yes">29x</span>
324
+ <span class="cline-any cline-yes">29x</span>
325
+ <span class="cline-any cline-yes">26x</span>
326
+ <span class="cline-any cline-yes">26x</span>
327
+ <span class="cline-any cline-yes">26x</span>
328
+ <span class="cline-any cline-yes">26x</span>
329
+ <span class="cline-any cline-yes">26x</span>
330
+ <span class="cline-any cline-yes">18x</span>
331
+ <span class="cline-any cline-yes">18x</span>
332
+ <span class="cline-any cline-yes">18x</span>
333
+ <span class="cline-any cline-yes">26x</span>
334
+ <span class="cline-any cline-yes">26x</span>
335
+ <span class="cline-any cline-yes">2x</span>
336
+ <span class="cline-any cline-yes">2x</span>
337
+ <span class="cline-any cline-yes">2x</span>
338
+ <span class="cline-any cline-yes">2x</span>
339
+ <span class="cline-any cline-yes">19x</span>
340
+ <span class="cline-any cline-yes">19x</span>
341
+ <span class="cline-any cline-yes">19x</span>
342
+ <span class="cline-any cline-yes">19x</span>
343
+ <span class="cline-any cline-yes">19x</span>
344
+ <span class="cline-any cline-yes">19x</span>
345
+ <span class="cline-any cline-yes">19x</span>
346
+ <span class="cline-any cline-yes">2x</span>
347
+ <span class="cline-any cline-yes">2x</span>
348
+ <span class="cline-any cline-yes">2x</span>
349
+ <span class="cline-any cline-yes">2x</span>
349
350
  <span class="cline-any cline-yes">5x</span>
350
- <span class="cline-any cline-yes">7x</span>
351
- <span class="cline-any cline-yes">7x</span>
352
- <span class="cline-any cline-yes">7x</span>
353
- <span class="cline-any cline-yes">7x</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
360
351
  <span class="cline-any cline-no">&nbsp;</span>
361
352
  <span class="cline-any cline-no">&nbsp;</span>
362
353
  <span class="cline-any cline-no">&nbsp;</span>
363
- <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-yes">5x</span>
355
+ <span class="cline-any cline-yes">2x</span>
364
356
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
365
357
  import { LRUCache } from 'lru-cache'
366
358
  import makeDebug from 'debug'
@@ -405,7 +397,6 @@ export default {
405
397
  }, {
406
398
  user: params.user
407
399
  })
408
- await this.updateAbilities(subject)
409
400
  debug('Authorisation ' + data.permissions + ' set for subject ' + subject._id + ' on resource ' + params.resource._id + ' with scope ' + scopeName)
410
401
  return subject
411
402
  }))
@@ -438,7 +429,6 @@ export default {
438
429
  }, {
439
430
  user: params.user
440
431
  })
441
- await this.updateAbilities(subject)
442
432
  debug('Authorisation unset for subject ' + subject._id + ' on resource ' + id + ' with scope ' + scopeName)
443
433
  return subject
444
434
  }
@@ -450,37 +440,40 @@ export default {
450
440
  setup (app) {
451
441
  const config = app.get('authorisation')
452
442
  if (config &amp;&amp; config.cache) {
443
+ this.cacheConfig = config.cache
453
444
  // Store abilities of the N most active users in LRU cache (defaults to 1000)
454
- const max = config.cache.maxUsers <span class="branch-0 cbranch-no" title="branch not covered" >|| 1000</span>
445
+ const max = this.cacheConfig.maxUsers <span class="branch-0 cbranch-no" title="branch not covered" >|| 1000</span>
455
446
  // LRU cache lib switched from positional parameters to options object at some point
456
447
  // so that now we directly pass the options to it while before we used the max argument
457
- if (!config.cache.max &amp;&amp; !config.cache.ttl &amp;&amp; !config.cache.maxSize) config.cache.max = max
458
- this.cache = new LRUCache(config.cache)
448
+ if (!this.cacheConfig.max &amp;&amp; !this.cacheConfig.ttl &amp;&amp; !this.cacheConfig.maxSize) this.cacheConfig.max = max
449
+ this.cache = new LRUCache(this.cacheConfig)
459
450
  debug('Using LRU cache for user abilities')
460
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
461
- <span class="cstat-no" title="statement not covered" > debug('Do not use LRU cache for user abilities')</span>
462
- <span class="cstat-no" title="statement not covered" > }</span>
451
+ } else {
452
+ debug('Do not use LRU cache for user abilities')
453
+ }
454
+ },
455
+ &nbsp;
456
+ getCacheKey (subject) {
457
+ if (!this.cache) return null
458
+ let cacheKey
459
+ // Compute cache key based on provided function or user ID
460
+ if (typeof this.cacheConfig.key === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >cacheKey = this.cacheConfig.key(subject)</span>
461
+ if (!cacheKey &amp;&amp; subject &amp;&amp; subject._id) cacheKey = subject._id.toString()
462
+ return cacheKey || ANONYMOUS_USER
463
463
  },
464
464
  &nbsp;
465
465
  // Compute abilities for a given user and set it in cache the first time
466
466
  // or get it from cache if found
467
467
  async getAbilities (subject) {
468
- if (this.cache) {
469
- if (subject &amp;&amp; subject._id) {
470
- if (this.cache.has(subject._id.toString())) return this.cache.get(subject._id.toString())
471
- } else {
472
- if (this.cache.has(ANONYMOUS_USER)) return this.cache.get(ANONYMOUS_USER)
473
- }
474
- }
468
+ const cacheKey = this.getCacheKey(subject)
469
+ if (cacheKey &amp;&amp; this.cache.has(cacheKey)) return this.cache.get(cacheKey)
470
+
475
471
  // Provide app for any complex use case requiring to make requests
476
472
  const abilities = await defineAbilities(subject, this.app)
477
473
  &nbsp;
478
- if (this.cache) {
479
- if (subject &amp;&amp; subject._id) {
480
- this.cache.set(subject._id.toString(), abilities)
481
- } else {
482
- this.cache.set(ANONYMOUS_USER, abilities)
483
- }
474
+ if (cacheKey) {
475
+ debug('Updating abilities of subject ' + (subject ? subject._id : ANONYMOUS_USER) + ' with cache key ' + cacheKey)
476
+ this.cache.set(cacheKey, abilities)
484
477
  }
485
478
  &nbsp;
486
479
  return abilities
@@ -488,27 +481,22 @@ export default {
488
481
  &nbsp;
489
482
  // Compute abilities for a given user and update it in cache
490
483
  async updateAbilities (subject) {
491
- debug('Updating user abilities of subject ' + (subject ? subject._id : ANONYMOUS_USER))
484
+ const cacheKey = this.getCacheKey(subject)
485
+
486
+ // Remove abilities from cache so that next call will populate it again
487
+ if (cacheKey &amp;&amp; this.cache.has(cacheKey)) this.cache.delete(cacheKey)
492
488
 
493
- if (this.cache) {
494
- if (subject &amp;&amp; subject._id) {
495
- this.cache.delete(subject._id.toString())
496
- } else {
497
- this.cache.delete(ANONYMOUS_USER)
498
- }
499
- }
500
- &nbsp;
501
489
  const abilities = await this.getAbilities(subject)
502
490
  return abilities
503
491
  },
504
492
  &nbsp;
505
493
  // Clear abilities
506
- <span class="fstat-no" title="function not covered" > clearAbilities() {</span>
507
- <span class="cstat-no" title="statement not covered" > if (this.cache) {</span>
494
+ clearAbilities() {
495
+ if (this.cache) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
508
496
  <span class="cstat-no" title="statement not covered" > debug('Clearing user abilities cache')</span>
509
497
  <span class="cstat-no" title="statement not covered" > this.cache.clear()</span>
510
498
  <span class="cstat-no" title="statement not covered" > }</span>
511
- <span class="cstat-no" title="statement not covered" > }</span>
499
+ }
512
500
  }
513
501
  &nbsp;</pre></td></tr></table></pre>
514
502
 
@@ -517,7 +505,7 @@ export default {
517
505
  <div class='footer quiet pad2 space-top1 center small'>
518
506
  Code coverage generated by
519
507
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
520
- at 2025-02-18T09:52:45.605Z
508
+ at 2025-07-24T10:00:20.476Z
521
509
  </div>
522
510
  <script src="../../../../prettify.js"></script>
523
511
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.85% </span>
26
+ <span class="strong">94.94% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>169/182</span>
28
+ <span class='fraction'>169/178</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">79.41% </span>
33
+ <span class="strong">80% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>27/34</span>
35
+ <span class='fraction'>32/40</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/6</span>
42
+ <span class='fraction'>7/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.85% </span>
47
+ <span class="strong">94.94% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>169/182</span>
49
+ <span class='fraction'>169/178</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file high" data-value="authorisations.service.js"><a href="authorisations.service.js.html">authorisations.service.js</a></td>
98
- <td data-value="91.27" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
98
+ <td data-value="93.79" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
100
100
  </td>
101
- <td data-value="91.27" class="pct high">91.27%</td>
102
- <td data-value="149" class="abs high">136/149</td>
103
- <td data-value="78.78" class="pct medium">78.78%</td>
104
- <td data-value="33" class="abs medium">26/33</td>
105
- <td data-value="83.33" class="pct high">83.33%</td>
106
- <td data-value="6" class="abs high">5/6</td>
107
- <td data-value="91.27" class="pct high">91.27%</td>
108
- <td data-value="149" class="abs high">136/149</td>
101
+ <td data-value="93.79" class="pct high">93.79%</td>
102
+ <td data-value="145" class="abs high">136/145</td>
103
+ <td data-value="79.48" class="pct medium">79.48%</td>
104
+ <td data-value="39" class="abs medium">31/39</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="7" class="abs high">7/7</td>
107
+ <td data-value="93.79" class="pct high">93.79%</td>
108
+ <td data-value="145" class="abs high">136/145</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-02-18T09:52:45.605Z
119
+ at 2025-07-24T10:00:20.476Z
120
120
  </div>
121
121
  <script src="../../../../prettify.js"></script>
122
122
  <script>
@@ -178,7 +178,7 @@
178
178
  <div class='footer quiet pad2 space-top1 center small'>
179
179
  Code coverage generated by
180
180
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
181
- at 2025-02-18T09:52:45.605Z
181
+ at 2025-07-24T10:00:20.476Z
182
182
  </div>
183
183
  <script src="../../../../prettify.js"></script>
184
184
  <script>
@@ -85,7 +85,7 @@
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
88
- at 2025-02-18T09:52:45.605Z
88
+ at 2025-07-24T10:00:20.476Z
89
89
  </div>
90
90
  <script src="../../../../prettify.js"></script>
91
91
  <script>