@kalisio/kdk 2.6.4 → 2.7.0

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 (398) hide show
  1. package/core/api/application.js +2 -4
  2. package/core/api/authentication.js +2 -3
  3. package/core/api/db.js +10 -2
  4. package/core/api/hooks/hooks.authorisations.js +4 -2
  5. package/core/api/hooks/hooks.push.js +6 -2
  6. package/core/api/hooks/hooks.query.js +29 -12
  7. package/core/api/hooks/hooks.users.js +30 -17
  8. package/core/api/models/configurations.model.mongodb.js +4 -0
  9. package/core/api/services/authorisations/authorisations.service.js +1 -1
  10. package/core/api/services/configurations/configurations.hooks.js +33 -0
  11. package/core/api/services/index.js +41 -7
  12. package/core/api/services/messages/messages.hooks.js +9 -3
  13. package/core/client/api.js +14 -1
  14. package/core/client/capabilities.js +1 -6
  15. package/core/client/components/KAvatar.vue +24 -20
  16. package/core/client/components/account/KProfile.vue +10 -71
  17. package/core/client/components/account/index.js +0 -2
  18. package/core/client/components/app/KSettings.vue +1 -0
  19. package/core/client/components/collection/KBoard.vue +4 -3
  20. package/core/client/components/collection/KCardSection.vue +1 -0
  21. package/core/client/components/collection/KGrid.vue +2 -0
  22. package/core/client/components/collection/KTable.vue +5 -1
  23. package/core/client/components/collection/KTimeLine.vue +9 -1
  24. package/core/client/components/collection/index.js +0 -2
  25. package/core/client/components/form/KChipsField.vue +2 -1
  26. package/core/client/components/form/KEmailField.vue +1 -0
  27. package/core/client/components/form/KFileField.vue +22 -1
  28. package/core/client/components/form/KForm.vue +2 -0
  29. package/core/client/components/form/KItemField.vue +1 -0
  30. package/core/client/components/form/KNumberField.vue +1 -0
  31. package/core/client/components/form/KPasswordField.vue +1 -0
  32. package/core/client/components/form/KPhoneField.vue +1 -0
  33. package/core/client/components/form/KPropertyItemField.vue +1 -0
  34. package/core/client/components/form/KResolutionField.vue +1 -0
  35. package/core/client/components/form/KSelectField.vue +31 -0
  36. package/core/client/components/form/KTagField.vue +1 -0
  37. package/core/client/components/form/KTextField.vue +1 -0
  38. package/core/client/components/form/KTokenField.vue +1 -0
  39. package/core/client/components/form/KUnitField.vue +1 -0
  40. package/core/client/components/form/KUrlField.vue +1 -0
  41. package/core/client/components/graphics/KIcon.vue +3 -4
  42. package/core/client/components/layout/KPage.vue +1 -0
  43. package/core/client/components/layout/KWindow.vue +6 -3
  44. package/core/client/components/messages/KMessageComposer.vue +2 -1
  45. package/core/client/components/messages/KMessagesTimeLine.vue +1 -1
  46. package/core/client/components/time/KDate.vue +1 -2
  47. package/core/client/components/time/KDateTime.vue +11 -11
  48. package/core/client/components/time/KTime.vue +1 -1
  49. package/core/client/composables/collection.js +33 -8
  50. package/core/client/composables/errors.js +1 -1
  51. package/core/client/composables/layout.js +9 -9
  52. package/core/client/configurations.js +50 -0
  53. package/core/client/exporter.js +1 -1
  54. package/core/client/i18n/core_en.json +6 -39
  55. package/core/client/i18n/core_fr.json +6 -39
  56. package/core/client/index.js +2 -0
  57. package/core/client/layout.js +8 -8
  58. package/core/client/mixins/mixin.base-activity.js +5 -2
  59. package/core/client/mixins/mixin.base-field.js +3 -3
  60. package/core/client/search.js +2 -1
  61. package/core/client/utils/utils.collection.js +8 -8
  62. package/core/client/utils/utils.items.js +4 -0
  63. package/core/client/utils/utils.push.js +3 -3
  64. package/core/client/utils/utils.session.js +7 -5
  65. package/core/client/utils/utils.shapes.js +38 -7
  66. package/core/client/utils/utils.time.js +21 -22
  67. package/core/common/schemas/users.update-profile.json +3 -2
  68. package/coverage/core/api/application.js.html +392 -398
  69. package/coverage/core/api/authentication.js.html +352 -187
  70. package/coverage/core/api/db.js.html +165 -126
  71. package/coverage/core/api/hooks/hooks.authentication.js.html +22 -196
  72. package/coverage/core/api/hooks/hooks.authorisations.js.html +383 -662
  73. package/coverage/core/api/hooks/hooks.logger.js.html +41 -41
  74. package/coverage/core/api/hooks/hooks.model.js.html +113 -101
  75. package/coverage/core/api/hooks/hooks.push.js.html +124 -97
  76. package/coverage/core/api/hooks/hooks.query.js.html +292 -217
  77. package/coverage/core/api/hooks/hooks.schemas.js.html +123 -123
  78. package/coverage/core/api/hooks/hooks.service.js.html +1 -1
  79. package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
  80. package/coverage/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
  81. package/coverage/core/api/hooks/hooks.users.js.html +255 -447
  82. package/coverage/core/api/hooks/index.html +107 -122
  83. package/coverage/core/api/hooks/index.js.html +4 -10
  84. package/coverage/core/api/index.html +46 -61
  85. package/coverage/core/api/index.js.html +9 -9
  86. package/coverage/core/api/marshall.js.html +9 -9
  87. package/coverage/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
  88. package/coverage/core/api/models/index.html +35 -50
  89. package/coverage/core/api/models/messages.model.mongodb.js.html +39 -27
  90. package/coverage/core/api/models/tags.model.mongodb.js.html +26 -32
  91. package/coverage/core/api/models/users.model.mongodb.js.html +10 -10
  92. package/coverage/core/api/services/account/account.hooks.js.html +5 -5
  93. package/coverage/core/api/services/account/account.service.js.html +127 -127
  94. package/coverage/core/api/services/account/index.html +22 -22
  95. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  96. package/coverage/core/api/services/authorisations/authorisations.service.js.html +213 -222
  97. package/coverage/core/api/services/authorisations/index.html +21 -21
  98. package/coverage/core/api/services/{organisations/organisations.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
  99. package/coverage/core/api/services/{groups → configurations}/index.html +8 -8
  100. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  101. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  102. package/coverage/core/api/services/databases/index.html +1 -1
  103. package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
  104. package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
  105. package/coverage/core/api/services/import-export/index.html +32 -32
  106. package/coverage/core/api/services/index.html +21 -21
  107. package/coverage/core/api/services/index.js.html +313 -142
  108. package/coverage/core/api/services/mailer/index.html +32 -32
  109. package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
  110. package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
  111. package/coverage/core/api/services/messages/index.html +21 -21
  112. package/coverage/core/api/services/messages/messages.hooks.js.html +112 -76
  113. package/coverage/core/api/services/push/index.html +32 -32
  114. package/coverage/core/api/services/push/push.hooks.js.html +80 -80
  115. package/coverage/core/api/services/push/push.service.js.html +34 -34
  116. package/coverage/core/api/services/storage/index.html +29 -29
  117. package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
  118. package/coverage/core/api/services/storage/storage.service.js.html +29 -29
  119. package/coverage/core/api/services/tags/index.html +21 -21
  120. package/coverage/core/api/services/tags/tags.hooks.js.html +119 -71
  121. package/coverage/core/api/services/users/index.html +27 -12
  122. package/coverage/core/api/services/users/users.hooks.js.html +14 -11
  123. package/coverage/core/api/services/users/users.service.js.html +100 -0
  124. package/coverage/core/common/errors.js.html +1 -1
  125. package/coverage/core/common/index.html +42 -27
  126. package/coverage/core/common/index.js.html +1 -1
  127. package/coverage/core/common/permissions.js.html +166 -472
  128. package/coverage/core/common/schema.js.html +4 -4
  129. package/coverage/core/common/utils.js.html +31 -25
  130. package/coverage/core/common/utils.offline.js.html +199 -0
  131. package/coverage/index.html +192 -192
  132. package/coverage/lcov-report/core/api/application.js.html +392 -398
  133. package/coverage/lcov-report/core/api/authentication.js.html +352 -187
  134. package/coverage/lcov-report/core/api/db.js.html +165 -126
  135. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +22 -196
  136. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +383 -662
  137. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +41 -41
  138. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +113 -101
  139. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +124 -97
  140. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +292 -217
  141. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +123 -123
  142. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
  143. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
  144. package/coverage/lcov-report/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
  145. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +255 -447
  146. package/coverage/lcov-report/core/api/hooks/index.html +107 -122
  147. package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
  148. package/coverage/lcov-report/core/api/index.html +46 -61
  149. package/coverage/lcov-report/core/api/index.js.html +9 -9
  150. package/coverage/lcov-report/core/api/marshall.js.html +9 -9
  151. package/coverage/lcov-report/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
  152. package/coverage/lcov-report/core/api/models/index.html +35 -50
  153. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +39 -27
  154. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +26 -32
  155. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +10 -10
  156. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +5 -5
  157. package/coverage/lcov-report/core/api/services/account/account.service.js.html +127 -127
  158. package/coverage/lcov-report/core/api/services/account/index.html +22 -22
  159. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  160. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +213 -222
  161. package/coverage/lcov-report/core/api/services/authorisations/index.html +21 -21
  162. package/coverage/lcov-report/core/api/services/{groups/groups.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
  163. package/coverage/lcov-report/core/api/services/{groups → configurations}/index.html +8 -8
  164. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  165. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  166. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  167. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
  168. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
  169. package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
  170. package/coverage/lcov-report/core/api/services/index.html +21 -21
  171. package/coverage/lcov-report/core/api/services/index.js.html +313 -142
  172. package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
  173. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
  174. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
  175. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  176. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +112 -76
  177. package/coverage/lcov-report/core/api/services/push/index.html +32 -32
  178. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
  179. package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
  180. package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
  181. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
  182. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +29 -29
  183. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  184. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +119 -71
  185. package/coverage/lcov-report/core/api/services/users/index.html +27 -12
  186. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +14 -11
  187. package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
  188. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  189. package/coverage/lcov-report/core/common/index.html +42 -27
  190. package/coverage/lcov-report/core/common/index.js.html +1 -1
  191. package/coverage/lcov-report/core/common/permissions.js.html +166 -472
  192. package/coverage/lcov-report/core/common/schema.js.html +4 -4
  193. package/coverage/lcov-report/core/common/utils.js.html +31 -25
  194. package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
  195. package/coverage/lcov-report/index.html +192 -192
  196. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +169 -31
  197. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
  198. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +215 -35
  199. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  200. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  201. package/coverage/lcov-report/map/api/index.html +1 -1
  202. package/coverage/lcov-report/map/api/index.js.html +1 -1
  203. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  204. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  205. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +82 -7
  206. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  207. package/coverage/lcov-report/map/api/models/index.html +22 -7
  208. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
  209. package/coverage/lcov-report/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
  210. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  211. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  212. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  213. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +39 -12
  214. package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
  215. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  216. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  217. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +86 -11
  218. package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
  219. package/coverage/lcov-report/map/api/services/features/index.html +7 -7
  220. package/coverage/lcov-report/map/api/services/index.html +5 -5
  221. package/coverage/lcov-report/map/api/services/index.js.html +326 -50
  222. package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
  223. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
  224. package/coverage/{core/api/services/organisations → lcov-report/map/api/services/styles}/index.html +10 -25
  225. package/coverage/lcov-report/{core/api/services/organisations/organisations.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
  226. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  227. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  228. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +7 -10
  229. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  230. package/coverage/lcov-report/map/common/index.html +19 -19
  231. package/coverage/lcov-report/map/common/index.js.html +1 -1
  232. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  233. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  234. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  235. package/coverage/lcov-report/map/common/opendap-utils.js.html +4 -7
  236. package/coverage/lcov-report/map/common/permissions.js.html +10 -4
  237. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  238. package/coverage/lcov-report/map/common/tms-utils.js.html +9 -12
  239. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
  240. package/coverage/lcov-report/map/common/wcs-utils.js.html +12 -15
  241. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +2 -2
  242. package/coverage/lcov-report/map/common/wfs-utils.js.html +14 -17
  243. package/coverage/lcov-report/map/common/wms-utils.js.html +30 -12
  244. package/coverage/lcov-report/map/common/wmts-utils.js.html +10 -13
  245. package/coverage/lcov.info +4157 -3816
  246. package/coverage/map/api/hooks/hooks.catalog.js.html +169 -31
  247. package/coverage/map/api/hooks/hooks.features.js.html +1 -1
  248. package/coverage/map/api/hooks/hooks.query.js.html +215 -35
  249. package/coverage/map/api/hooks/index.html +7 -7
  250. package/coverage/map/api/hooks/index.js.html +1 -1
  251. package/coverage/map/api/index.html +1 -1
  252. package/coverage/map/api/index.js.html +1 -1
  253. package/coverage/map/api/marshall.js.html +1 -1
  254. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  255. package/coverage/map/api/models/catalog.model.mongodb.js.html +82 -7
  256. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  257. package/coverage/map/api/models/index.html +22 -7
  258. package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
  259. package/coverage/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
  260. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  261. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  262. package/coverage/map/api/services/alerts/index.html +1 -1
  263. package/coverage/map/api/services/catalog/catalog.hooks.js.html +39 -12
  264. package/coverage/map/api/services/catalog/index.html +5 -5
  265. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  266. package/coverage/map/api/services/daptiles/index.html +1 -1
  267. package/coverage/map/api/services/features/features.hooks.js.html +86 -11
  268. package/coverage/map/api/services/features/features.service.js.html +307 -4
  269. package/coverage/map/api/services/features/index.html +7 -7
  270. package/coverage/map/api/services/index.html +5 -5
  271. package/coverage/map/api/services/index.js.html +326 -50
  272. package/coverage/map/api/services/projects/index.html +1 -1
  273. package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
  274. package/coverage/{lcov-report/core/api/services/organisations → map/api/services/styles}/index.html +10 -25
  275. package/coverage/{core/api/services/groups/groups.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
  276. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  277. package/coverage/map/common/errors.js.html +1 -1
  278. package/coverage/map/common/geotiff-grid-source.js.html +7 -10
  279. package/coverage/map/common/grid.js.html +1 -1
  280. package/coverage/map/common/index.html +19 -19
  281. package/coverage/map/common/index.js.html +1 -1
  282. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  283. package/coverage/map/common/moment-utils.js.html +1 -1
  284. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  285. package/coverage/map/common/opendap-utils.js.html +4 -7
  286. package/coverage/map/common/permissions.js.html +10 -4
  287. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  288. package/coverage/map/common/tms-utils.js.html +9 -12
  289. package/coverage/map/common/wcs-grid-source.js.html +3 -3
  290. package/coverage/map/common/wcs-utils.js.html +12 -15
  291. package/coverage/map/common/weacast-grid-source.js.html +2 -2
  292. package/coverage/map/common/wfs-utils.js.html +14 -17
  293. package/coverage/map/common/wms-utils.js.html +30 -12
  294. package/coverage/map/common/wmts-utils.js.html +10 -13
  295. package/coverage/tmp/coverage-1028514-1773134124472-0.json +1 -0
  296. package/coverage/tmp/coverage-1028526-1773134124448-0.json +1 -0
  297. package/coverage/tmp/coverage-1028537-1773134124431-0.json +1 -0
  298. package/coverage/tmp/coverage-1028549-1773134124401-0.json +1 -0
  299. package/coverage/tmp/coverage-1028556-1773134124353-0.json +1 -0
  300. package/extras/configs/widgets.top.js +3 -3
  301. package/extras/tests/core/collection.mjs +2 -9
  302. package/extras/tours/pane.top.js +0 -9
  303. package/map/api/hooks/hooks.catalog.js +18 -4
  304. package/map/api/services/catalog/catalog.hooks.js +3 -0
  305. package/map/api/services/features/features.hooks.js +3 -1
  306. package/map/api/services/index.js +2 -6
  307. package/map/api/services/styles/styles.hooks.js +6 -1
  308. package/map/client/components/KFeatureActionButton.vue +9 -3
  309. package/map/client/components/KFeaturesFilterManager.vue +5 -5
  310. package/map/client/components/KFilterCondition.vue +17 -10
  311. package/map/client/components/KLayerEditor.vue +49 -39
  312. package/map/client/components/KMeasureTool.vue +7 -1
  313. package/map/client/components/KTimezoneMap.vue +29 -9
  314. package/map/client/components/catalog/KLayersPanel.vue +26 -16
  315. package/map/client/components/catalog/KLayersSelector.vue +13 -2
  316. package/map/client/components/catalog/KViewsPanel.vue +5 -4
  317. package/map/client/components/form/KSelectLayersField.vue +28 -17
  318. package/map/client/components/form/KSelectViewsField.vue +18 -9
  319. package/map/client/components/form/KTimezoneField.vue +1 -2
  320. package/map/client/components/legend/KVariablesLegend.vue +10 -1
  321. package/map/client/components/location/KLocationCardSection.vue +7 -2
  322. package/map/client/components/location/KLocationMap.vue +31 -7
  323. package/map/client/components/selection/KSelectedLayerFeatures.vue +2 -2
  324. package/map/client/components/stickies/KZoomControl.vue +1 -1
  325. package/map/client/components/styles/KStyleManager.vue +4 -1
  326. package/map/client/components/widget/KTimeSeries.vue +174 -497
  327. package/map/client/components/widget/KTimeSeriesSelector.vue +72 -0
  328. package/map/client/components/widget/KTimeSeriesToolbar.vue +83 -0
  329. package/map/client/composables/catalog.js +6 -10
  330. package/map/client/composables/highlight.js +12 -9
  331. package/map/client/composables/project.js +1 -1
  332. package/map/client/composables/selection.js +8 -7
  333. package/map/client/composables/weather.js +9 -2
  334. package/map/client/geolocation.js +8 -5
  335. package/map/client/i18n/map_en.json +11 -10
  336. package/map/client/i18n/map_fr.json +10 -9
  337. package/map/client/leaflet/TiledFeatureLayer.js +85 -82
  338. package/map/client/leaflet/utils/utils.geojson.js +3 -3
  339. package/map/client/mixins/globe/mixin.base-globe.js +15 -6
  340. package/map/client/mixins/globe/mixin.geojson-layers.js +27 -18
  341. package/map/client/mixins/map/mixin.edit-layers.js +9 -1
  342. package/map/client/mixins/map/mixin.pmtiles-layers.js +118 -29
  343. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +12 -5
  344. package/map/client/mixins/map/mixin.tiled-wind-layers.js +19 -10
  345. package/map/client/mixins/mixin.activity.js +23 -30
  346. package/map/client/mixins/mixin.feature-selection.js +41 -5
  347. package/map/client/planets.js +1 -1
  348. package/map/client/readers/reader.kml.js +2 -3
  349. package/map/client/utils/utils.catalog.js +36 -10
  350. package/map/client/utils/utils.layers.js +39 -8
  351. package/map/client/utils/utils.project.js +4 -0
  352. package/map/client/utils/utils.style.js +37 -7
  353. package/map/client/utils/utils.time-series.js +215 -6
  354. package/map/common/schemas/catalog.update.json +1 -1
  355. package/map/common/weacast-grid-source.js +1 -1
  356. package/package.json +3 -3
  357. package/scripts/kash/CHANGELOG.md +0 -4
  358. package/scripts/kash/README.md +0 -9
  359. package/scripts/kash/kash.sh +45 -40
  360. package/scripts/kash/scripts/run_tests.sh +1 -4
  361. package/test/api/core/authentication.test.js +9 -4
  362. package/test/api/core/config/default.cjs +1 -0
  363. package/test/api/core/hooks.test.js +6 -0
  364. package/test/api/core/index.test.js +43 -18
  365. package/test/api/core/push.test.js +8 -8
  366. package/test/api/core/test-log-2026-03-10.log +60 -0
  367. package/test/api/core/users.test.js +384 -0
  368. package/test/api/map/grid-sources.test.js +1 -1
  369. package/test/api/map/test-log-2026-03-10.log +56 -0
  370. package/vite/package.json +11 -2
  371. package/vite/test/core/composables.test.js +77 -0
  372. package/vite/vitest.config.js +13 -0
  373. package/vite/yarn.lock +1096 -18
  374. package/.vscode/settings.json +0 -5
  375. package/core/client/components/account/KAccount.vue +0 -68
  376. package/core/client/components/account/KDeleteAccountManager.vue +0 -62
  377. package/core/client/components/account/KEmailManager.vue +0 -128
  378. package/core/client/components/account/KPasswordManager.vue +0 -90
  379. package/core/client/components/account/KVerifyEmailManager.vue +0 -105
  380. package/core/client/components/collection/KColumn.vue +0 -227
  381. package/core/client/components/collection/KHistory.vue +0 -113
  382. package/core/client/components/collection/KHistoryEntry.vue +0 -109
  383. package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
  384. package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
  385. package/coverage/core/api/utils.js.html +0 -118
  386. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
  387. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
  388. package/coverage/lcov-report/core/api/utils.js.html +0 -118
  389. package/coverage/tmp/coverage-151166-1723543324307-0.json +0 -1
  390. package/coverage/tmp/coverage-151178-1723543324283-0.json +0 -1
  391. package/coverage/tmp/coverage-151189-1723543324271-0.json +0 -1
  392. package/coverage/tmp/coverage-151201-1723543324248-0.json +0 -1
  393. package/coverage/tmp/coverage-151208-1723543324227-0.json +0 -1
  394. package/scripts/kash/LICENSE +0 -21
  395. package/test/api/core/test-log-2024-04-22.log +0 -84
  396. package/test/api/core/test-log-2024-04-23.log +0 -23
  397. package/test/api/core/test-log-2024-08-13.log +0 -3
  398. package/test/api/map/test-log-2025-03-08.log +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">28.2% </span>
26
+ <span class="strong">75.21% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>33/117</span>
28
+ <span class='fraction'>88/117</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">66.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/2</span>
35
+ <span class='fraction'>12/18</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">33.33% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/3</span>
42
+ <span class='fraction'>3/3</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">28.2% </span>
47
+ <span class="strong">75.21% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>33/117</span>
49
+ <span class='fraction'>88/117</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -193,17 +193,23 @@
193
193
  <span class="cline-any cline-yes">1x</span>
194
194
  <span class="cline-any cline-yes">1x</span>
195
195
  <span class="cline-any cline-yes">1x</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-no">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
196
  <span class="cline-any cline-yes">1x</span>
201
197
  <span class="cline-any cline-yes">1x</span>
202
198
  <span class="cline-any cline-yes">1x</span>
199
+ <span class="cline-any cline-yes">1x</span>
200
+ <span class="cline-any cline-yes">1x</span>
201
+ <span class="cline-any cline-yes">1x</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
+ <span class="cline-any cline-yes">9x</span>
204
+ <span class="cline-any cline-yes">9x</span>
205
+ <span class="cline-any cline-yes">7x</span>
206
+ <span class="cline-any cline-yes">7x</span>
203
207
  <span class="cline-any cline-yes">7x</span>
204
208
  <span class="cline-any cline-yes">7x</span>
205
209
  <span class="cline-any cline-no">&nbsp;</span>
206
210
  <span class="cline-any cline-no">&nbsp;</span>
211
+ <span class="cline-any cline-yes">7x</span>
212
+ <span class="cline-any cline-yes">7x</span>
207
213
  <span class="cline-any cline-no">&nbsp;</span>
208
214
  <span class="cline-any cline-no">&nbsp;</span>
209
215
  <span class="cline-any cline-no">&nbsp;</span>
@@ -214,60 +220,38 @@
214
220
  <span class="cline-any cline-no">&nbsp;</span>
215
221
  <span class="cline-any cline-no">&nbsp;</span>
216
222
  <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-no">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-no">&nbsp;</span>
233
- <span class="cline-any cline-no">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
237
- <span class="cline-any cline-no">&nbsp;</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-no">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
223
+ <span class="cline-any cline-yes">7x</span>
224
+ <span class="cline-any cline-yes">7x</span>
225
+ <span class="cline-any cline-yes">7x</span>
226
+ <span class="cline-any cline-yes">7x</span>
227
+ <span class="cline-any cline-yes">7x</span>
228
+ <span class="cline-any cline-yes">7x</span>
229
+ <span class="cline-any cline-yes">7x</span>
230
+ <span class="cline-any cline-yes">7x</span>
231
+ <span class="cline-any cline-yes">7x</span>
232
+ <span class="cline-any cline-yes">7x</span>
233
+ <span class="cline-any cline-yes">7x</span>
234
+ <span class="cline-any cline-yes">7x</span>
235
+ <span class="cline-any cline-yes">7x</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">7x</span>
239
+ <span class="cline-any cline-yes">2x</span>
240
+ <span class="cline-any cline-yes">2x</span>
241
+ <span class="cline-any cline-yes">7x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">7x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">7x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-yes">1x</span>
251
+ <span class="cline-any cline-yes">7x</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-yes">1x</span>
254
+ <span class="cline-any cline-yes">7x</span>
271
255
  <span class="cline-any cline-no">&nbsp;</span>
272
256
  <span class="cline-any cline-no">&nbsp;</span>
273
257
  <span class="cline-any cline-no">&nbsp;</span>
@@ -294,9 +278,25 @@
294
278
  <span class="cline-any cline-yes">7x</span>
295
279
  <span class="cline-any cline-yes">7x</span>
296
280
  <span class="cline-any cline-yes">7x</span>
281
+ <span class="cline-any cline-no">&nbsp;</span>
282
+ <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
297
284
  <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">9x</span>
286
+ <span class="cline-any cline-yes">9x</span>
287
+ <span class="cline-any cline-yes">9x</span>
288
+ <span class="cline-any cline-yes">9x</span>
289
+ <span class="cline-any cline-yes">9x</span>
290
+ <span class="cline-any cline-yes">9x</span>
291
+ <span class="cline-any cline-yes">9x</span>
292
+ <span class="cline-any cline-yes">9x</span>
293
+ <span class="cline-any cline-yes">9x</span>
294
+ <span class="cline-any cline-yes">9x</span>
295
+ <span class="cline-any cline-yes">9x</span>
296
+ <span class="cline-any cline-yes">9x</span>
297
+ <span class="cline-any cline-yes">9x</span>
298
+ <span class="cline-any cline-yes">9x</span>
299
+ <span class="cline-any cline-yes">9x</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'
@@ -309,24 +309,24 @@ const debug = makeDebug('kdk:core:account:service')
309
309
  &nbsp;
310
310
  class AccountService extends AuthenticationManagementService {
311
311
  // add a method to verify whether en email exist or not
312
- <span class="fstat-no" title="function not covered" > async verifyEmail (params) {</span>
313
- <span class="cstat-no" title="statement not covered" > const usersService = this.app.getService('users')</span>
314
- <span class="cstat-no" title="statement not covered" > const response = await usersService.find({ query: { email: params.email } })</span>
315
- <span class="cstat-no" title="statement not covered" > return { status: response.total === 1 ? 200 : 404 }</span>
316
- <span class="cstat-no" title="statement not covered" > }</span>
312
+ async verifyEmail (params) {
313
+ const usersService = this.app.getService('users')
314
+ const response = await usersService.find({ query: { email: params.email } })
315
+ return { status: response.total === 1 <span class="branch-0 cbranch-no" title="branch not covered" >? 200 </span>: 404 }
316
+ }
317
317
  }
318
318
  &nbsp;
319
319
  export default function (name, app, options) {
320
320
  // Keep track of notifier in service options
321
- options.notifier = <span class="fstat-no" title="function not covered" >async function (type, user, notifierOptions) {</span>
322
- <span class="cstat-no" title="statement not covered" > const userService = app.getService('users')</span>
323
- <span class="cstat-no" title="statement not covered" > // Using OAuth2 providers disallow some operations</span>
324
- <span class="cstat-no" title="statement not covered" > let identityProvider</span>
325
- <span class="cstat-no" title="statement not covered" > for (const provider of app.authenticationProviders) {</span>
321
+ options.notifier = async function (type, user, notifierOptions) {
322
+ const userService = app.getService('users')
323
+ // Using OAuth2 providers disallow some operations
324
+ let identityProvider
325
+ for (const provider of app.authenticationProviders) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
326
326
  <span class="cstat-no" title="statement not covered" > if (user[provider + 'Id']) identityProvider = _.startCase(provider)</span>
327
327
  <span class="cstat-no" title="statement not covered" > }</span>
328
- <span class="cstat-no" title="statement not covered" > // Password/Identity change is already filtered by the fact the user does not have an old password to be provided</span>
329
- <span class="cstat-no" title="statement not covered" > if (identityProvider &amp;&amp; (type === 'resendVerifySignup')) {</span>
328
+ // Password/Identity change is already filtered by the fact the user does not have an old password to be provided
329
+ if (identityProvider <span class="branch-0 cbranch-no" title="branch not covered" >&amp;&amp; (type === 'resendVerifySignup'))</span> <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
330
330
  <span class="cstat-no" title="statement not covered" > const userWithPassword = await userService.get(user._id.toString())</span>
331
331
  <span class="cstat-no" title="statement not covered" > if (!userWithPassword.password) {</span>
332
332
  <span class="cstat-no" title="statement not covered" > return Promise.reject(new BadRequest(`You cannot update your account because it is managed by ${identityProvider}`, {</span>
@@ -337,38 +337,38 @@ export default function (name, app, options) {
337
337
  <span class="cstat-no" title="statement not covered" > }))</span>
338
338
  <span class="cstat-no" title="statement not covered" > }</span>
339
339
  <span class="cstat-no" title="statement not covered" > }</span>
340
- <span class="cstat-no" title="statement not covered" ></span>
341
- <span class="cstat-no" title="statement not covered" > const mailerService = app.getService('mailer')</span>
342
- <span class="cstat-no" title="statement not covered" > const domainPath = app.get('domain') + '/#/'</span>
343
- <span class="cstat-no" title="statement not covered" > const email = {</span>
344
- <span class="cstat-no" title="statement not covered" > from: mailerService.options.auth.user,</span>
345
- <span class="cstat-no" title="statement not covered" > // When changing email send to the new one so that it can be verified</span>
346
- <span class="cstat-no" title="statement not covered" > to: (type === 'identityChange' ? user.verifyChanges.email : user.email),</span>
347
- <span class="cstat-no" title="statement not covered" > domainPath</span>
348
- <span class="cstat-no" title="statement not covered" > }</span>
349
- <span class="cstat-no" title="statement not covered" > // Build the subject &amp; link to the app to perform the different actions</span>
350
- <span class="cstat-no" title="statement not covered" > let emailTemplateDir = type</span>
351
- <span class="cstat-no" title="statement not covered" > switch (type) {</span>
352
- <span class="cstat-no" title="statement not covered" > case 'resendVerifySignup': // send another email with token for verifying user's email addr</span>
353
- <span class="cstat-no" title="statement not covered" > email.subject = 'Confirm your signup'</span>
354
- <span class="cstat-no" title="statement not covered" > break</span>
355
- <span class="cstat-no" title="statement not covered" > case 'verifySignup': // inform that user's email is now confirmed</span>
356
- <span class="cstat-no" title="statement not covered" > email.subject = 'Thank you, your email has been verified'</span>
357
- <span class="cstat-no" title="statement not covered" > break</span>
358
- <span class="cstat-no" title="statement not covered" > case 'sendResetPwd': // send email with token to reset password</span>
359
- <span class="cstat-no" title="statement not covered" > email.subject = 'Reset your password'</span>
360
- <span class="cstat-no" title="statement not covered" > email.link = domainPath + 'reset-password/' + user.email</span>
361
- <span class="cstat-no" title="statement not covered" > break</span>
362
- <span class="cstat-no" title="statement not covered" > case 'resetPwd': // inform that user's password is now reset</span>
363
- <span class="cstat-no" title="statement not covered" > email.subject = 'Your password was reset'</span>
364
- <span class="cstat-no" title="statement not covered" > break</span>
365
- <span class="cstat-no" title="statement not covered" > case 'passwordChange': // inform that user's password is now changed</span>
366
- <span class="cstat-no" title="statement not covered" > email.subject = 'Your password was changed'</span>
367
- <span class="cstat-no" title="statement not covered" > break</span>
368
- <span class="cstat-no" title="statement not covered" > case 'identityChange': // inform that user's email has now changed</span>
369
- <span class="cstat-no" title="statement not covered" > email.subject = 'Your account information was changed'</span>
370
- <span class="cstat-no" title="statement not covered" > break</span>
371
- <span class="cstat-no" title="statement not covered" > case 'sendInvitation':</span>
340
+ &nbsp;
341
+ const mailerService = app.getService('mailer')
342
+ const domainPath = app.get('domain') + '/#/'
343
+ const email = {
344
+ from: mailerService.options.from || mailerService.options.auth.user,
345
+ // When changing email send to the new one so that it can be verified
346
+ to: (type === 'identityChange' ? user.verifyChanges.email : user.email),
347
+ domainPath
348
+ }
349
+ // Build the subject &amp; link to the app to perform the different actions
350
+ let emailTemplateDir = type
351
+ switch (type) {
352
+ case 'resendVerifySignup': // send another email with token for verifying user's email addr
353
+ email.subject = 'Confirm your signup'
354
+ break
355
+ case 'verifySignup': // inform that user's email is now confirmed
356
+ email.subject = 'Thank you, your email has been verified'
357
+ break
358
+ case 'sendResetPwd': // send email with token to reset password
359
+ email.subject = 'Reset your password'
360
+ email.link = domainPath + 'reset-password/' + user.email
361
+ break
362
+ case 'resetPwd': // inform that user's password is now reset
363
+ email.subject = 'Your password was reset'
364
+ break
365
+ case 'passwordChange': // inform that user's password is now changed
366
+ email.subject = 'Your password was changed'
367
+ break
368
+ case 'identityChange': // inform that user's email has now changed
369
+ email.subject = 'Your account information was changed'
370
+ break
371
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'sendInvitation':</span>
372
372
  <span class="cstat-no" title="statement not covered" > if (_.has(user, 'sponsor.name')) {</span>
373
373
  <span class="cstat-no" title="statement not covered" > email.sponsor = _.get(user, 'sponsor.name')</span>
374
374
  <span class="cstat-no" title="statement not covered" > } else if (_.has(user, 'sponsor.id')) {</span>
@@ -383,22 +383,22 @@ export default function (name, app, options) {
383
383
  <span class="cstat-no" title="statement not covered" > email.link = domainPath + 'login'</span>
384
384
  <span class="cstat-no" title="statement not covered" > emailTemplateDir = 'confirmInvitation'</span>
385
385
  <span class="cstat-no" title="statement not covered" > break</span>
386
- <span class="cstat-no" title="statement not covered" > }</span>
387
- <span class="cstat-no" title="statement not covered" > const templateDir = path.join(mailerService.options.templateDir, emailTemplateDir)</span>
388
- <span class="cstat-no" title="statement not covered" > const template = new emails.EmailTemplate(templateDir)</span>
389
- <span class="cstat-no" title="statement not covered" > // Errors does not seem to be correctly catched by the caller</span>
390
- <span class="cstat-no" title="statement not covered" > // so we catch them here to avoid any problem</span>
391
- <span class="cstat-no" title="statement not covered" > try {</span>
392
- <span class="cstat-no" title="statement not covered" > const emailContent = await template.render({ email, user }, user.locale || 'en-us')</span>
393
- <span class="cstat-no" title="statement not covered" > // Update compiled content</span>
394
- <span class="cstat-no" title="statement not covered" > email.html = emailContent.html</span>
395
- <span class="cstat-no" title="statement not covered" > debug('Sending email ', email)</span>
396
- <span class="cstat-no" title="statement not covered" > return mailerService.create(email)</span>
397
- <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
386
+ }
387
+ const templateDir = path.join(mailerService.options.templateDir, emailTemplateDir)
388
+ const template = new emails.EmailTemplate(templateDir)
389
+ // Errors does not seem to be correctly catched by the caller
390
+ // so we catch them here to avoid any problem
391
+ try {
392
+ const emailContent = await template.render({ email, user }, user.locale || 'en-us')
393
+ // Update compiled content
394
+ email.html = emailContent.html
395
+ debug('Sending email ', email)
396
+ return mailerService.create(email)
397
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
398
398
  <span class="cstat-no" title="statement not covered" > debug('Sending email failed', error)</span>
399
399
  <span class="cstat-no" title="statement not covered" > app.logger.error(error)</span>
400
400
  <span class="cstat-no" title="statement not covered" > }</span>
401
- <span class="cstat-no" title="statement not covered" > }</span>
401
+ }
402
402
  &nbsp;
403
403
  const servicePath = app.get('apiPath') + '/account'
404
404
  const userService = app.getService('users')
@@ -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 2024-08-13T10:02:04.843Z
424
+ at 2026-03-10T09:15:24.743Z
425
425
  </div>
426
426
  <script src="../../../../prettify.js"></script>
427
427
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">46.83% </span>
26
+ <span class="strong">81.64% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>74/158</span>
28
+ <span class='fraction'>129/158</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">70% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/3</span>
35
+ <span class='fraction'>14/20</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">25% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/4</span>
42
+ <span class='fraction'>4/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">46.83% </span>
47
+ <span class="strong">81.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>74/158</span>
49
+ <span class='fraction'>129/158</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -86,26 +86,26 @@
86
86
  <td data-value="100" class="pct high">100%</td>
87
87
  <td data-value="41" class="abs high">41/41</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="2" class="abs high">2/2</td>
90
+ <td data-value="100" class="pct high">100%</td>
89
91
  <td data-value="1" class="abs high">1/1</td>
90
- <td data-value="0" class="pct low">0%</td>
91
- <td data-value="1" class="abs low">0/1</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
93
  <td data-value="41" class="abs high">41/41</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
97
- <td class="file low" data-value="account.service.js"><a href="account.service.js.html">account.service.js</a></td>
98
- <td data-value="28.2" class="pic low">
99
- <div class="chart"><div class="cover-fill" style="width: 28%"></div><div class="cover-empty" style="width: 72%"></div></div>
97
+ <td class="file medium" data-value="account.service.js"><a href="account.service.js.html">account.service.js</a></td>
98
+ <td data-value="75.21" class="pic medium">
99
+ <div class="chart"><div class="cover-fill" style="width: 75%"></div><div class="cover-empty" style="width: 25%"></div></div>
100
100
  </td>
101
- <td data-value="28.2" class="pct low">28.2%</td>
102
- <td data-value="117" class="abs low">33/117</td>
101
+ <td data-value="75.21" class="pct medium">75.21%</td>
102
+ <td data-value="117" class="abs medium">88/117</td>
103
+ <td data-value="66.66" class="pct medium">66.66%</td>
104
+ <td data-value="18" class="abs medium">12/18</td>
103
105
  <td data-value="100" class="pct high">100%</td>
104
- <td data-value="2" class="abs high">2/2</td>
105
- <td data-value="33.33" class="pct low">33.33%</td>
106
- <td data-value="3" class="abs low">1/3</td>
107
- <td data-value="28.2" class="pct low">28.2%</td>
108
- <td data-value="117" class="abs low">33/117</td>
106
+ <td data-value="3" class="abs high">3/3</td>
107
+ <td data-value="75.21" class="pct medium">75.21%</td>
108
+ <td data-value="117" class="abs medium">88/117</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 2024-08-13T10:02:04.843Z
119
+ at 2026-03-10T09:15:24.743Z
120
120
  </div>
121
121
  <script src="../../../../prettify.js"></script>
122
122
  <script>
@@ -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 2024-08-13T10:02:04.843Z
172
+ at 2026-03-10T09:15:24.743Z
173
173
  </div>
174
174
  <script src="../../../../prettify.js"></script>
175
175
  <script>