@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">7.69% </span>
26
+ <span class="strong">65.38% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>2/26</span>
28
+ <span class='fraction'>17/26</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">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/1</span>
35
+ <span class='fraction'>2/4</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">7.69% </span>
47
+ <span class="strong">65.38% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>2/26</span>
49
+ <span class='fraction'>17/26</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>
@@ -91,8 +91,22 @@
91
91
  <a name='L26'></a><a href='#L26'>26</a>
92
92
  <a name='L27'></a><a href='#L27'>27</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
93
93
  <span class="cline-any cline-yes">1x</span>
94
+ <span class="cline-any cline-yes">14x</span>
95
+ <span class="cline-any cline-yes">14x</span>
96
+ <span class="cline-any cline-yes">14x</span>
97
+ <span class="cline-any cline-yes">14x</span>
98
+ <span class="cline-any cline-yes">14x</span>
99
+ <span class="cline-any cline-yes">14x</span>
100
+ <span class="cline-any cline-yes">14x</span>
101
+ <span class="cline-any cline-yes">14x</span>
102
+ <span class="cline-any cline-yes">14x</span>
94
103
  <span class="cline-any cline-no">&nbsp;</span>
95
104
  <span class="cline-any cline-no">&nbsp;</span>
105
+ <span class="cline-any cline-yes">14x</span>
106
+ <span class="cline-any cline-yes">14x</span>
107
+ <span class="cline-any cline-yes">14x</span>
108
+ <span class="cline-any cline-yes">14x</span>
109
+ <span class="cline-any cline-yes">14x</span>
96
110
  <span class="cline-any cline-no">&nbsp;</span>
97
111
  <span class="cline-any cline-no">&nbsp;</span>
98
112
  <span class="cline-any cline-no">&nbsp;</span>
@@ -100,39 +114,25 @@
100
114
  <span class="cline-any cline-no">&nbsp;</span>
101
115
  <span class="cline-any cline-no">&nbsp;</span>
102
116
  <span class="cline-any cline-no">&nbsp;</span>
103
- <span class="cline-any cline-no">&nbsp;</span>
104
- <span class="cline-any cline-no">&nbsp;</span>
105
- <span class="cline-any cline-no">&nbsp;</span>
106
- <span class="cline-any cline-no">&nbsp;</span>
107
- <span class="cline-any cline-no">&nbsp;</span>
108
- <span class="cline-any cline-no">&nbsp;</span>
109
- <span class="cline-any cline-no">&nbsp;</span>
110
- <span class="cline-any cline-no">&nbsp;</span>
111
- <span class="cline-any cline-no">&nbsp;</span>
112
- <span class="cline-any cline-no">&nbsp;</span>
113
- <span class="cline-any cline-no">&nbsp;</span>
114
- <span class="cline-any cline-no">&nbsp;</span>
115
- <span class="cline-any cline-no">&nbsp;</span>
116
- <span class="cline-any cline-no">&nbsp;</span>
117
- <span class="cline-any cline-no">&nbsp;</span>
117
+ <span class="cline-any cline-yes">14x</span>
118
118
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// A hook that logs service method before, after and error
119
- export <span class="fstat-no" title="function not covered" >function log (hook) {</span>
120
- <span class="cstat-no" title="statement not covered" > let message = `${hook.type}: ${hook.path} - Method: ${hook.method}`</span>
121
- <span class="cstat-no" title="statement not covered" ></span>
122
- <span class="cstat-no" title="statement not covered" > if (hook.type === 'error') {</span>
123
- <span class="cstat-no" title="statement not covered" > message += `: ${hook.error.message}`</span>
124
- <span class="cstat-no" title="statement not covered" > }</span>
125
- <span class="cstat-no" title="statement not covered" ></span>
126
- <span class="cstat-no" title="statement not covered" > if (hook.error) {</span>
127
- <span class="cstat-no" title="statement not covered" > hook.app.logger.error(message, hook.error.stack)</span>
128
- <span class="cstat-no" title="statement not covered" > } else {</span>
119
+ export function log (hook) {
120
+ let message = `${hook.type}: ${hook.path} - Method: ${hook.method}`
121
+ &nbsp;
122
+ if (hook.type === 'error') {
123
+ message += `: ${hook.error.message}`
124
+ }
125
+ &nbsp;
126
+ if (hook.error) {
127
+ hook.app.logger.error(message, hook.error.stack)
128
+ }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
129
129
  <span class="cstat-no" title="statement not covered" > hook.app.logger.debug(message)</span>
130
130
  <span class="cstat-no" title="statement not covered" > }</span>
131
- <span class="cstat-no" title="statement not covered" ></span>
132
- <span class="cstat-no" title="statement not covered" > // Required as the logger causes high CPU usage to serialize messages</span>
133
- <span class="cstat-no" title="statement not covered" > // even if the current log level should discard it</span>
134
- <span class="cstat-no" title="statement not covered" > // See https://github.com/kalisio/kdk/issues/287</span>
135
- <span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
131
+ &nbsp;
132
+ // Required as the logger causes high CPU usage to serialize messages
133
+ // even if the current log level should discard it
134
+ // See https://github.com/kalisio/kdk/issues/287
135
+ if (process.env.NODE_ENV === 'development') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
136
136
  <span class="cstat-no" title="statement not covered" > hook.app.logger.silly('hook.data', hook.data)</span>
137
137
  <span class="cstat-no" title="statement not covered" > hook.app.logger.silly('hook.params', hook.params)</span>
138
138
  <span class="cstat-no" title="statement not covered" ></span>
@@ -140,7 +140,7 @@ export <span class="fstat-no" title="function not covered" >function log (hook)
140
140
  <span class="cstat-no" title="statement not covered" > hook.app.logger.silly('hook.result', hook.result)</span>
141
141
  <span class="cstat-no" title="statement not covered" > }</span>
142
142
  <span class="cstat-no" title="statement not covered" > }</span>
143
- <span class="cstat-no" title="statement not covered" >}</span>
143
+ }
144
144
  &nbsp;</pre></td></tr></table></pre>
145
145
 
146
146
  <div class='push'></div><!-- for sticky footer -->
@@ -148,7 +148,7 @@ export <span class="fstat-no" title="function not covered" >function log (hook)
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
151
- at 2024-08-13T10:02:04.872Z
151
+ at 2026-03-10T09:15:24.774Z
152
152
  </div>
153
153
  <script src="../../../prettify.js"></script>
154
154
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">66.89% </span>
26
+ <span class="strong">77.55% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>194/290</span>
28
+ <span class='fraction'>228/294</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">61.22% </span>
33
+ <span class="strong">60% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>30/49</span>
35
+ <span class='fraction'>39/65</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">52.94% </span>
40
+ <span class="strong">58.82% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/17</span>
42
+ <span class='fraction'>10/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">66.89% </span>
47
+ <span class="strong">77.55% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>194/290</span>
49
+ <span class='fraction'>228/294</span>
50
50
  </div>
51
51
 
52
52
 
@@ -353,7 +353,11 @@
353
353
  <a name='L288'></a><a href='#L288'>288</a>
354
354
  <a name='L289'></a><a href='#L289'>289</a>
355
355
  <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
357
361
  <span class="cline-any cline-yes">1x</span>
358
362
  <span class="cline-any cline-yes">1x</span>
359
363
  <span class="cline-any cline-yes">1x</span>
@@ -397,30 +401,30 @@
397
401
  <span class="cline-any cline-yes">1x</span>
398
402
  <span class="cline-any cline-yes">1x</span>
399
403
  <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">2x</span>
401
- <span class="cline-any cline-no">&nbsp;</span>
402
- <span class="cline-any cline-no">&nbsp;</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-no">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-no">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
404
+ <span class="cline-any cline-yes">3x</span>
405
+ <span class="cline-any cline-yes">20x</span>
406
+ <span class="cline-any cline-yes">20x</span>
407
+ <span class="cline-any cline-yes">20x</span>
408
+ <span class="cline-any cline-yes">20x</span>
409
+ <span class="cline-any cline-yes">20x</span>
410
+ <span class="cline-any cline-yes">20x</span>
411
+ <span class="cline-any cline-yes">20x</span>
412
+ <span class="cline-any cline-yes">30x</span>
413
+ <span class="cline-any cline-yes">30x</span>
414
+ <span class="cline-any cline-yes">27x</span>
415
+ <span class="cline-any cline-yes">27x</span>
416
+ <span class="cline-any cline-yes">27x</span>
417
+ <span class="cline-any cline-yes">10x</span>
418
+ <span class="cline-any cline-yes">10x</span>
419
+ <span class="cline-any cline-yes">30x</span>
421
420
  <span class="cline-any cline-no">&nbsp;</span>
422
421
  <span class="cline-any cline-no">&nbsp;</span>
423
- <span class="cline-any cline-yes">2x</span>
422
+ <span class="cline-any cline-yes">20x</span>
423
+ <span class="cline-any cline-yes">20x</span>
424
+ <span class="cline-any cline-yes">20x</span>
425
+ <span class="cline-any cline-yes">20x</span>
426
+ <span class="cline-any cline-yes">20x</span>
427
+ <span class="cline-any cline-yes">3x</span>
424
428
  <span class="cline-any cline-yes">1x</span>
425
429
  <span class="cline-any cline-yes">1x</span>
426
430
  <span class="cline-any cline-yes">1x</span>
@@ -532,19 +536,18 @@
532
536
  <span class="cline-any cline-no">&nbsp;</span>
533
537
  <span class="cline-any cline-yes">1x</span>
534
538
  <span class="cline-any cline-yes">1x</span>
539
+ <span class="cline-any cline-yes">5x</span>
535
540
  <span class="cline-any cline-no">&nbsp;</span>
536
541
  <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-yes">1x</span>
542
+ <span class="cline-any cline-yes">5x</span>
543
+ <span class="cline-any cline-yes">5x</span>
544
+ <span class="cline-any cline-yes">5x</span>
545
+ <span class="cline-any cline-yes">5x</span>
546
+ <span class="cline-any cline-yes">5x</span>
547
+ <span class="cline-any cline-yes">5x</span>
548
+ <span class="cline-any cline-yes">5x</span>
549
+ <span class="cline-any cline-yes">5x</span>
550
+ <span class="cline-any cline-yes">5x</span>
548
551
  <span class="cline-any cline-yes">1x</span>
549
552
  <span class="cline-any cline-yes">1x</span>
550
553
  <span class="cline-any cline-yes">1x</span>
@@ -559,6 +562,7 @@
559
562
  <span class="cline-any cline-yes">1x</span>
560
563
  <span class="cline-any cline-yes">1x</span>
561
564
  <span class="cline-any cline-yes">1x</span>
565
+ <span class="cline-any cline-yes">2x</span>
562
566
  <span class="cline-any cline-yes">1x</span>
563
567
  <span class="cline-any cline-no">&nbsp;</span>
564
568
  <span class="cline-any cline-no">&nbsp;</span>
@@ -573,7 +577,7 @@
573
577
  <span class="cline-any cline-yes">1x</span>
574
578
  <span class="cline-any cline-yes">1x</span>
575
579
  <span class="cline-any cline-yes">1x</span>
576
- <span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-yes">2x</span>
577
581
  <span class="cline-any cline-yes">1x</span>
578
582
  <span class="cline-any cline-yes">1x</span>
579
583
  <span class="cline-any cline-yes">1x</span>
@@ -587,15 +591,16 @@
587
591
  <span class="cline-any cline-yes">1x</span>
588
592
  <span class="cline-any cline-yes">1x</span>
589
593
  <span class="cline-any cline-yes">1x</span>
590
- <span class="cline-any cline-yes">4x</span>
591
- <span class="cline-any cline-yes">4x</span>
592
- <span class="cline-any cline-yes">4x</span>
593
- <span class="cline-any cline-yes">4x</span>
594
- <span class="cline-any cline-yes">4x</span>
595
- <span class="cline-any cline-yes">4x</span>
594
+ <span class="cline-any cline-yes">7x</span>
595
+ <span class="cline-any cline-yes">6x</span>
596
596
  <span class="cline-any cline-yes">2x</span>
597
597
  <span class="cline-any cline-yes">2x</span>
598
598
  <span class="cline-any cline-yes">2x</span>
599
+ <span class="cline-any cline-yes">6x</span>
600
+ <span class="cline-any cline-yes">6x</span>
601
+ <span class="cline-any cline-yes">6x</span>
602
+ <span class="cline-any cline-yes">6x</span>
603
+ <span class="cline-any cline-yes">6x</span>
599
604
  <span class="cline-any cline-yes">2x</span>
600
605
  <span class="cline-any cline-yes">2x</span>
601
606
  <span class="cline-any cline-yes">2x</span>
@@ -607,42 +612,45 @@
607
612
  <span class="cline-any cline-yes">2x</span>
608
613
  <span class="cline-any cline-yes">2x</span>
609
614
  <span class="cline-any cline-yes">2x</span>
610
- <span class="cline-any cline-yes">1x</span>
611
615
  <span class="cline-any cline-yes">2x</span>
612
616
  <span class="cline-any cline-yes">2x</span>
613
617
  <span class="cline-any cline-yes">2x</span>
618
+ <span class="cline-any cline-yes">1x</span>
619
+ <span class="cline-any cline-yes">2x</span>
620
+ <span class="cline-any cline-yes">2x</span>
614
621
  <span class="cline-any cline-yes">2x</span>
615
622
  <span class="cline-any cline-yes">2x</span>
616
623
  <span class="cline-any cline-yes">4x</span>
617
- <span class="cline-any cline-yes">4x</span>
624
+ <span class="cline-any cline-yes">6x</span>
625
+ <span class="cline-any cline-yes">7x</span>
618
626
  <span class="cline-any cline-yes">1x</span>
619
627
  <span class="cline-any cline-yes">1x</span>
620
628
  <span class="cline-any cline-yes">1x</span>
621
629
  <span class="cline-any cline-yes">1x</span>
622
630
  <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">3x</span>
624
- <span class="cline-any cline-yes">3x</span>
631
+ <span class="cline-any cline-yes">4x</span>
632
+ <span class="cline-any cline-yes">9x</span>
625
633
  <span class="cline-any cline-no">&nbsp;</span>
626
634
  <span class="cline-any cline-no">&nbsp;</span>
627
- <span class="cline-any cline-yes">3x</span>
628
- <span class="cline-any cline-yes">3x</span>
629
- <span class="cline-any cline-yes">3x</span>
630
- <span class="cline-any cline-yes">3x</span>
635
+ <span class="cline-any cline-yes">9x</span>
636
+ <span class="cline-any cline-yes">9x</span>
637
+ <span class="cline-any cline-yes">9x</span>
638
+ <span class="cline-any cline-yes">9x</span>
639
+ <span class="cline-any cline-yes">13x</span>
640
+ <span class="cline-any cline-yes">16x</span>
641
+ <span class="cline-any cline-yes">16x</span>
631
642
  <span class="cline-any cline-yes">7x</span>
632
- <span class="cline-any cline-yes">10x</span>
633
- <span class="cline-any cline-yes">10x</span>
634
643
  <span class="cline-any cline-yes">4x</span>
635
- <span class="cline-any cline-yes">1x</span>
636
- <span class="cline-any cline-yes">1x</span>
637
- <span class="cline-any cline-yes">3x</span>
638
- <span class="cline-any cline-yes">3x</span>
639
- <span class="cline-any cline-yes">7x</span>
640
- <span class="cline-any cline-yes">3x</span>
641
- <span class="cline-any cline-yes">3x</span>
642
- <span class="cline-any cline-yes">3x</span>
643
- <span class="cline-any cline-yes">3x</span>
644
+ <span class="cline-any cline-yes">4x</span>
644
645
  <span class="cline-any cline-yes">3x</span>
645
646
  <span class="cline-any cline-yes">3x</span>
647
+ <span class="cline-any cline-yes">13x</span>
648
+ <span class="cline-any cline-yes">9x</span>
649
+ <span class="cline-any cline-yes">9x</span>
650
+ <span class="cline-any cline-yes">9x</span>
651
+ <span class="cline-any cline-yes">9x</span>
652
+ <span class="cline-any cline-yes">9x</span>
653
+ <span class="cline-any cline-yes">4x</span>
646
654
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
647
655
  import siftModule from 'sift'
648
656
  import moment from 'moment'
@@ -688,28 +696,28 @@ export <span class="fstat-no" title="function not covered" >function unprocessTi
688
696
  // - delete: a flag to define whether the hook has to delete the source property
689
697
  export function serialize (rules, options = {}) {
690
698
  return function (hook) {
691
- <span class="cstat-no" title="statement not covered" > // Retrieve the items from the hook</span>
692
- <span class="cstat-no" title="statement not covered" > let items = getItems(hook)</span>
693
- <span class="cstat-no" title="statement not covered" > const isArray = Array.isArray(items)</span>
694
- <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
695
- <span class="cstat-no" title="statement not covered" > // Apply the rules for each item</span>
696
- <span class="cstat-no" title="statement not covered" > items.forEach(item =&gt; {</span>
697
- <span class="cstat-no" title="statement not covered" > rules.forEach(rule =&gt; {</span>
698
- <span class="cstat-no" title="statement not covered" > let source = _.get(item, rule.source)</span>
699
- <span class="cstat-no" title="statement not covered" > if (!_.isNil(source)) {</span>
700
- <span class="cstat-no" title="statement not covered" > if (rule.filter) source = source.filter(sift(rule.filter))</span>
701
- <span class="cstat-no" title="statement not covered" > _.set(item, rule.target, source)</span>
702
- <span class="cstat-no" title="statement not covered" > if (rule.delete) {</span>
703
- <span class="cstat-no" title="statement not covered" > _.unset(item, rule.source)</span>
704
- <span class="cstat-no" title="statement not covered" > }</span>
705
- <span class="cstat-no" title="statement not covered" > } else if (options.throwOnNotFound || rule.throwOnNotFound) {</span>
699
+ // Retrieve the items from the hook
700
+ let items = getItems(hook)
701
+ const isArray = Array.isArray(items)
702
+ items = (isArray <span class="branch-0 cbranch-no" title="branch not covered" >? items </span>: [items])
703
+ // Apply the rules for each item
704
+ items.forEach(item =&gt; {
705
+ rules.forEach(rule =&gt; {
706
+ let source = _.get(item, rule.source)
707
+ if (!_.isNil(source)) {
708
+ if (rule.filter) <span class="branch-0 cbranch-no" title="branch not covered" >source = source.filter(sift(rule.filter))</span>
709
+ _.set(item, rule.target, source)
710
+ if (rule.delete) {
711
+ _.unset(item, rule.source)
712
+ }
713
+ } else if (options.throwOnNotFound || rule.throwOnNotFound) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
706
714
  <span class="cstat-no" title="statement not covered" > throw new Error('Cannot find valid input value for property ' + rule.target)</span>
707
715
  <span class="cstat-no" title="statement not covered" > }</span>
708
- <span class="cstat-no" title="statement not covered" > })</span>
709
- <span class="cstat-no" title="statement not covered" > })</span>
710
- <span class="cstat-no" title="statement not covered" > // Replace the items within the hook</span>
711
- <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
712
- <span class="cstat-no" title="statement not covered" > }</span>
716
+ })
717
+ })
718
+ // Replace the items within the hook
719
+ replaceItems(hook, isArray <span class="branch-0 cbranch-no" title="branch not covered" >? items </span>: items[0])
720
+ }
713
721
  }
714
722
  &nbsp;
715
723
  // This hook allows to transform the values bound to '_id' like keys or
@@ -821,19 +829,19 @@ export <span class="fstat-no" title="function not covered" >function convertToSt
821
829
  <span class="cstat-no" title="statement not covered" > }</span>
822
830
  <span class="cstat-no" title="statement not covered" >}</span>
823
831
  &nbsp;
824
- export <span class="fstat-no" title="function not covered" >async function populatePreviousObject (hook) {</span>
825
- <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
832
+ export async function populatePreviousObject (hook) {
833
+ if (hook.type !== 'before') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
826
834
  <span class="cstat-no" title="statement not covered" > throw new Error('The \'populatePreviousObject\' hook should only be used as a \'before\' hook.')</span>
827
835
  <span class="cstat-no" title="statement not covered" > }</span>
828
- <span class="cstat-no" title="statement not covered" > const item = getItems(hook)</span>
829
- <span class="cstat-no" title="statement not covered" > const id = (hook.id ? hook.id : _.get(item, '_id'))</span>
830
- <span class="cstat-no" title="statement not covered" > // Retrieve previous version of the item and make it available to next hooks</span>
831
- <span class="cstat-no" title="statement not covered" > if (id) {</span>
832
- <span class="cstat-no" title="statement not covered" > hook.params.previousItem = await hook.service.get(id.toString())</span>
833
- <span class="cstat-no" title="statement not covered" > debug('Populated previous object', hook.params.previousItem)</span>
834
- <span class="cstat-no" title="statement not covered" > }</span>
835
- <span class="cstat-no" title="statement not covered" > return hook</span>
836
- <span class="cstat-no" title="statement not covered" >}</span>
836
+ const item = getItems(hook)
837
+ const id = (hook.id ? hook.id <span class="branch-0 cbranch-no" title="branch not covered" >: _.get(item, '_id'))</span>
838
+ // Retrieve previous version of the item and make it available to next hooks
839
+ if (id) {
840
+ hook.params.previousItem = await hook.service.get(id.toString())
841
+ debug('Populated previous object', hook.params.previousItem)
842
+ }
843
+ return hook
844
+ }
837
845
  &nbsp;
838
846
  export function setAsDeleted (hook) {
839
847
  // Retrieve the items from the hook
@@ -869,7 +877,7 @@ export function setExpireAfter (delayInSeconds) {
869
877
  export <span class="fstat-no" title="function not covered" >async function distinct (hook) {</span>
870
878
  <span class="cstat-no" title="statement not covered" > const params = hook.params</span>
871
879
  <span class="cstat-no" title="statement not covered" > const query = params.query</span>
872
- <span class="cstat-no" title="statement not covered" > if (!query.$distinct) return hook</span>
880
+ <span class="cstat-no" title="statement not covered" > if (!query || !query.$distinct) return hook</span>
873
881
  <span class="cstat-no" title="statement not covered" > const collection = hook.service.Model</span>
874
882
  <span class="cstat-no" title="statement not covered" > hook.result = await collection.distinct(query.$distinct, _.omit(query, ['$distinct']))</span>
875
883
  <span class="cstat-no" title="statement not covered" > return hook</span>
@@ -878,6 +886,10 @@ export <span class="fstat-no" title="function not covered" >async function disti
878
886
  // Check for already existing object according to given service/id field
879
887
  export function checkUnique (options = {}) {
880
888
  return async (hook) =&gt; {
889
+ if (hook.app) {
890
+ const serviceConfig = hook.app.get(hook.service.name)
891
+ if (serviceConfig &amp;&amp; serviceConfig.checkUnique) <span class="branch-0 cbranch-no" title="branch not covered" >options = serviceConfig.checkUnique</span>
892
+ }
881
893
  const service = (options.service <span class="branch-0 cbranch-no" title="branch not covered" >? hook.app.getService(options.service) </span>: hook.service)
882
894
  const field = options.field <span class="branch-0 cbranch-no" title="branch not covered" >|| 'name'</span>
883
895
  const id = _.get(hook, `data.${field}`)
@@ -940,7 +952,7 @@ export function preventChanges (ifThrow, fieldNames) {
940
952
  <div class='footer quiet pad2 space-top1 center small'>
941
953
  Code coverage generated by
942
954
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
943
- at 2024-08-13T10:02:04.872Z
955
+ at 2026-03-10T09:15:24.774Z
944
956
  </div>
945
957
  <script src="../../../prettify.js"></script>
946
958
  <script>