@kalisio/kdk 2.5.3 → 2.6.1

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 (541) hide show
  1. package/.github/workflows/main.yaml +35 -6
  2. package/.vscode/settings.json +5 -0
  3. package/client.globe.js +8 -0
  4. package/client.js +8 -0
  5. package/client.map.js +8 -0
  6. package/core/api/hooks/hooks.push.js +3 -2
  7. package/core/api/hooks/hooks.tags.js +56 -0
  8. package/core/api/models/tags.model.mongodb.js +8 -0
  9. package/core/api/services/index.js +33 -2
  10. package/core/api/services/tags/tags.hooks.js +47 -0
  11. package/core/client/api.js +5 -5
  12. package/core/client/components/KActivity.vue +3 -2
  13. package/core/client/components/KChip.vue +2 -2
  14. package/core/client/components/KEditor.vue +3 -1
  15. package/core/client/components/KFollower.vue +4 -4
  16. package/core/client/components/KStore.vue +1 -1
  17. package/core/client/components/KTab.vue +20 -7
  18. package/core/client/components/account/KProfile.vue +9 -25
  19. package/core/client/components/action/KAction.vue +10 -10
  20. package/core/client/components/action/KToggleFullscreenAction.vue +2 -11
  21. package/core/client/components/app/KHome.vue +3 -2
  22. package/core/client/components/collection/KFilter.vue +5 -4
  23. package/core/client/components/collection/KGrid.vue +5 -1
  24. package/core/client/components/collection/KItemsFilter.vue +47 -0
  25. package/core/client/components/collection/KItemsSorter.vue +42 -0
  26. package/core/client/components/collection/KScrollDown.vue +2 -2
  27. package/core/client/components/collection/KSearchFilterControl.vue +3 -2
  28. package/core/client/components/collection/KSorter.vue +33 -37
  29. package/core/client/components/collection/KTagsFilterControl.vue +14 -40
  30. package/core/client/components/collection/KTagsFilterView.vue +10 -45
  31. package/core/client/components/collection/KTimeFilterControl.vue +6 -7
  32. package/core/client/components/collection/KTimeFilterView.vue +13 -22
  33. package/core/client/components/collection/KTimeLine.vue +18 -9
  34. package/core/client/components/form/KColorField.vue +13 -6
  35. package/core/client/components/form/KColorScaleField.vue +7 -12
  36. package/core/client/components/form/KFileField.vue +118 -89
  37. package/core/client/components/form/KForm.vue +30 -18
  38. package/core/client/components/form/KIconField.vue +4 -1
  39. package/core/client/components/form/KNumberField.vue +9 -2
  40. package/core/client/components/form/KSelectField.vue +1 -4
  41. package/core/client/components/form/KTagField.vue +229 -0
  42. package/core/client/components/form/KTextField.vue +4 -0
  43. package/core/client/components/form/KTextareaField.vue +3 -1
  44. package/core/client/components/input/KShapePicker.vue +3 -3
  45. package/core/client/components/layout/KFab.vue +32 -20
  46. package/core/client/components/layout/KPage.vue +11 -6
  47. package/core/client/components/layout/KWindow.vue +6 -1
  48. package/core/client/components/media/index.js +2 -6
  49. package/core/client/components/menu/KMenu.vue +12 -10
  50. package/core/client/components/menu/KSubMenu.vue +12 -12
  51. package/core/client/components/messages/KMessageCard.vue +13 -12
  52. package/core/client/components/messages/KMessageComposer.vue +13 -9
  53. package/core/client/components/messages/KMessagesTimeLine.vue +16 -8
  54. package/core/client/components/tags/KTagFilter.vue +99 -0
  55. package/core/client/components/tags/KTagItem.vue +65 -0
  56. package/core/client/components/tags/KTagManager.vue +198 -0
  57. package/core/client/components/tags/KTagSelection.vue +82 -0
  58. package/core/client/components/time/KDate.vue +3 -17
  59. package/core/client/components/time/KDateTime.vue +1 -1
  60. package/core/client/components/time/KTime.vue +0 -4
  61. package/core/client/composables/collection-filter.js +41 -2
  62. package/core/client/composables/collection.js +3 -3
  63. package/core/client/composables/index.js +1 -0
  64. package/core/client/composables/pwa.js +13 -0
  65. package/core/client/composables/session.js +7 -8
  66. package/core/client/composables/user.js +36 -0
  67. package/core/client/directives/index.js +1 -0
  68. package/core/client/directives/v-drop-file.js +174 -0
  69. package/core/client/document.js +2 -1
  70. package/core/client/exporter.js +17 -3
  71. package/core/client/i18n/core_en.json +34 -7
  72. package/core/client/i18n/core_fr.json +36 -9
  73. package/core/client/i18n.js +26 -11
  74. package/core/client/layout.js +5 -5
  75. package/core/client/mixins/mixin.base-activity.js +8 -5
  76. package/core/client/mixins/mixin.base-editor.js +2 -1
  77. package/core/client/mixins/mixin.base-field.js +3 -2
  78. package/core/client/mixins/mixin.base-item.js +12 -10
  79. package/core/client/mixins/mixin.service.js +3 -1
  80. package/core/client/platform.js +0 -3
  81. package/core/client/readers/reader.json.js +2 -2
  82. package/core/client/utils/index.js +2 -0
  83. package/core/client/utils/utils.collection.js +6 -6
  84. package/core/client/utils/utils.colors.js +473 -173
  85. package/core/client/utils/utils.files.js +19 -0
  86. package/core/client/utils/utils.locale.js +13 -17
  87. package/core/client/utils/utils.services.js +27 -0
  88. package/core/client/utils/utils.shapes.js +2 -2
  89. package/core/client/utils/utils.tags.js +17 -0
  90. package/core/client/utils/utils.tours.js +31 -0
  91. package/core/common/permissions.js +3 -0
  92. package/core/common/schemas/tags.update.json +35 -0
  93. package/core/common/schemas/users.update-profile.json +1 -1
  94. package/core/common/utils.js +5 -5
  95. package/coverage/core/api/application.js.html +464 -464
  96. package/coverage/core/api/authentication.js.html +219 -351
  97. package/coverage/core/api/db.js.html +194 -209
  98. package/coverage/core/api/hooks/hooks.authentication.js.html +208 -34
  99. package/coverage/core/api/hooks/hooks.authorisations.js.html +717 -432
  100. package/coverage/core/api/hooks/hooks.groups.js.html +52 -52
  101. package/coverage/core/api/hooks/hooks.logger.js.html +43 -43
  102. package/coverage/core/api/hooks/hooks.model.js.html +300 -312
  103. package/coverage/core/api/hooks/hooks.organisations.js.html +264 -264
  104. package/coverage/core/api/hooks/hooks.push.js.html +107 -119
  105. package/coverage/core/api/hooks/hooks.query.js.html +279 -279
  106. package/coverage/core/api/hooks/hooks.schemas.js.html +135 -135
  107. package/coverage/core/api/hooks/hooks.service.js.html +28 -28
  108. package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
  109. package/coverage/core/api/hooks/hooks.users.js.html +478 -205
  110. package/coverage/core/api/hooks/index.html +132 -102
  111. package/coverage/core/api/hooks/index.js.html +19 -13
  112. package/coverage/core/api/index.html +69 -54
  113. package/coverage/core/api/index.js.html +25 -25
  114. package/coverage/core/api/marshall.js.html +127 -127
  115. package/coverage/core/api/models/groups.model.mongodb.js.html +26 -26
  116. package/coverage/core/api/models/index.html +66 -21
  117. package/coverage/core/api/models/messages.model.mongodb.js.html +27 -39
  118. package/coverage/core/api/models/organisations.model.mongodb.js.html +16 -16
  119. package/coverage/core/api/models/tags.model.mongodb.js.html +30 -30
  120. package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
  121. package/coverage/core/api/services/account/account.hooks.js.html +46 -46
  122. package/coverage/core/api/services/account/account.service.js.html +139 -139
  123. package/coverage/core/api/services/account/index.html +22 -22
  124. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  125. package/coverage/core/api/services/authorisations/authorisations.service.js.html +230 -221
  126. package/coverage/core/api/services/authorisations/index.html +20 -20
  127. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  128. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  129. package/coverage/core/api/services/databases/index.html +1 -1
  130. package/coverage/core/api/services/groups/groups.hooks.js.html +72 -72
  131. package/coverage/core/api/services/groups/index.html +21 -21
  132. package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
  133. package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
  134. package/coverage/core/api/services/import-export/index.html +32 -32
  135. package/coverage/core/api/services/index.html +21 -21
  136. package/coverage/core/api/services/index.js.html +195 -171
  137. package/coverage/core/api/services/mailer/index.html +32 -32
  138. package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
  139. package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
  140. package/coverage/core/api/services/messages/index.html +21 -21
  141. package/coverage/core/api/services/messages/messages.hooks.js.html +76 -94
  142. package/coverage/core/api/services/organisations/index.html +32 -32
  143. package/coverage/core/api/services/organisations/organisations.hooks.js.html +72 -72
  144. package/coverage/core/api/services/organisations/organisations.service.js.html +163 -163
  145. package/coverage/core/api/services/push/index.html +32 -32
  146. package/coverage/core/api/services/push/push.hooks.js.html +80 -80
  147. package/coverage/core/api/services/push/push.service.js.html +34 -34
  148. package/coverage/core/api/services/storage/index.html +29 -29
  149. package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
  150. package/coverage/core/api/services/storage/storage.service.js.html +37 -37
  151. package/coverage/core/api/services/tags/index.html +21 -21
  152. package/coverage/core/api/services/tags/tags.hooks.js.html +72 -72
  153. package/coverage/core/api/services/users/index.html +12 -27
  154. package/coverage/core/api/services/users/users.hooks.js.html +84 -87
  155. package/coverage/core/api/utils.js.html +1 -1
  156. package/coverage/core/common/errors.js.html +2 -2
  157. package/coverage/core/common/index.html +32 -47
  158. package/coverage/core/common/index.js.html +11 -11
  159. package/coverage/core/common/permissions.js.html +579 -264
  160. package/coverage/core/common/schema.js.html +26 -26
  161. package/coverage/core/common/utils.js.html +59 -65
  162. package/coverage/index.html +286 -256
  163. package/coverage/lcov-report/core/api/application.js.html +464 -464
  164. package/coverage/lcov-report/core/api/authentication.js.html +219 -351
  165. package/coverage/lcov-report/core/api/db.js.html +194 -209
  166. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +208 -34
  167. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +717 -432
  168. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +52 -52
  169. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +43 -43
  170. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +300 -312
  171. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +264 -264
  172. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +107 -119
  173. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +279 -279
  174. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +135 -135
  175. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
  176. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
  177. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +478 -205
  178. package/coverage/lcov-report/core/api/hooks/index.html +132 -102
  179. package/coverage/lcov-report/core/api/hooks/index.js.html +19 -13
  180. package/coverage/lcov-report/core/api/index.html +69 -54
  181. package/coverage/lcov-report/core/api/index.js.html +25 -25
  182. package/coverage/lcov-report/core/api/marshall.js.html +127 -127
  183. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +26 -26
  184. package/coverage/lcov-report/core/api/models/index.html +66 -21
  185. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +27 -39
  186. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +16 -16
  187. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +30 -30
  188. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
  189. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +46 -46
  190. package/coverage/lcov-report/core/api/services/account/account.service.js.html +139 -139
  191. package/coverage/lcov-report/core/api/services/account/index.html +22 -22
  192. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  193. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +230 -221
  194. package/coverage/lcov-report/core/api/services/authorisations/index.html +20 -20
  195. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  196. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  197. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  198. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +72 -72
  199. package/coverage/lcov-report/core/api/services/groups/index.html +21 -21
  200. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
  201. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
  202. package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
  203. package/coverage/lcov-report/core/api/services/index.html +21 -21
  204. package/coverage/lcov-report/core/api/services/index.js.html +195 -171
  205. package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
  206. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
  207. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
  208. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  209. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +76 -94
  210. package/coverage/lcov-report/core/api/services/organisations/index.html +32 -32
  211. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +72 -72
  212. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +163 -163
  213. package/coverage/lcov-report/core/api/services/push/index.html +32 -32
  214. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
  215. package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
  216. package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
  217. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
  218. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +37 -37
  219. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  220. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +72 -72
  221. package/coverage/lcov-report/core/api/services/users/index.html +12 -27
  222. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +84 -87
  223. package/coverage/lcov-report/core/api/utils.js.html +1 -1
  224. package/coverage/lcov-report/core/common/errors.js.html +2 -2
  225. package/coverage/lcov-report/core/common/index.html +32 -47
  226. package/coverage/lcov-report/core/common/index.js.html +11 -11
  227. package/coverage/lcov-report/core/common/permissions.js.html +579 -264
  228. package/coverage/lcov-report/core/common/schema.js.html +26 -26
  229. package/coverage/lcov-report/core/common/utils.js.html +59 -65
  230. package/coverage/lcov-report/index.html +286 -256
  231. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +257 -353
  232. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
  233. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +810 -795
  234. package/coverage/lcov-report/map/api/hooks/index.html +54 -54
  235. package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
  236. package/coverage/lcov-report/map/api/index.html +32 -32
  237. package/coverage/lcov-report/map/api/index.js.html +46 -46
  238. package/coverage/lcov-report/map/api/marshall.js.html +72 -72
  239. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
  240. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +27 -69
  241. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
  242. package/coverage/lcov-report/map/api/models/index.html +54 -69
  243. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
  244. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
  245. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
  246. package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
  247. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +160 -178
  248. package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
  249. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  250. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  251. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +114 -183
  252. package/coverage/lcov-report/map/api/services/features/features.service.js.html +56 -359
  253. package/coverage/lcov-report/map/api/services/features/index.html +31 -31
  254. package/coverage/lcov-report/map/api/services/index.html +21 -21
  255. package/coverage/lcov-report/map/api/services/index.js.html +258 -495
  256. package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
  257. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
  258. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  259. package/coverage/lcov-report/map/common/errors.js.html +16 -16
  260. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -270
  261. package/coverage/lcov-report/map/common/grid.js.html +554 -554
  262. package/coverage/lcov-report/map/common/index.html +158 -158
  263. package/coverage/lcov-report/map/common/index.js.html +68 -68
  264. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
  265. package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
  266. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
  267. package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
  268. package/coverage/lcov-report/map/common/permissions.js.html +36 -42
  269. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
  270. package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
  271. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
  272. package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
  273. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
  274. package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
  275. package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
  276. package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
  277. package/coverage/lcov.info +7793 -8564
  278. package/coverage/map/api/hooks/hooks.catalog.js.html +257 -353
  279. package/coverage/map/api/hooks/hooks.features.js.html +218 -218
  280. package/coverage/map/api/hooks/hooks.query.js.html +810 -795
  281. package/coverage/map/api/hooks/index.html +54 -54
  282. package/coverage/map/api/hooks/index.js.html +16 -16
  283. package/coverage/map/api/index.html +32 -32
  284. package/coverage/map/api/index.js.html +46 -46
  285. package/coverage/map/api/marshall.js.html +72 -72
  286. package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
  287. package/coverage/map/api/models/catalog.model.mongodb.js.html +27 -69
  288. package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
  289. package/coverage/map/api/models/index.html +54 -69
  290. package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
  291. package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
  292. package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
  293. package/coverage/map/api/services/alerts/index.html +32 -32
  294. package/coverage/map/api/services/catalog/catalog.hooks.js.html +160 -178
  295. package/coverage/map/api/services/catalog/index.html +21 -21
  296. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  297. package/coverage/map/api/services/daptiles/index.html +1 -1
  298. package/coverage/map/api/services/features/features.hooks.js.html +114 -183
  299. package/coverage/map/api/services/features/features.service.js.html +56 -359
  300. package/coverage/map/api/services/features/index.html +31 -31
  301. package/coverage/map/api/services/index.html +21 -21
  302. package/coverage/map/api/services/index.js.html +258 -495
  303. package/coverage/map/api/services/projects/index.html +21 -21
  304. package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
  305. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  306. package/coverage/map/common/errors.js.html +16 -16
  307. package/coverage/map/common/geotiff-grid-source.js.html +267 -270
  308. package/coverage/map/common/grid.js.html +554 -554
  309. package/coverage/map/common/index.html +158 -158
  310. package/coverage/map/common/index.js.html +68 -68
  311. package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
  312. package/coverage/map/common/moment-utils.js.html +18 -18
  313. package/coverage/map/common/opendap-grid-source.js.html +484 -484
  314. package/coverage/map/common/opendap-utils.js.html +353 -353
  315. package/coverage/map/common/permissions.js.html +36 -42
  316. package/coverage/map/common/time-based-grid-source.js.html +59 -59
  317. package/coverage/map/common/tms-utils.js.html +6 -6
  318. package/coverage/map/common/wcs-grid-source.js.html +190 -190
  319. package/coverage/map/common/wcs-utils.js.html +339 -339
  320. package/coverage/map/common/weacast-grid-source.js.html +345 -345
  321. package/coverage/map/common/wfs-utils.js.html +11 -11
  322. package/coverage/map/common/wms-utils.js.html +8 -8
  323. package/coverage/map/common/wmts-utils.js.html +7 -7
  324. package/coverage/tmp/coverage-151166-1723543324307-0.json +1 -0
  325. package/coverage/tmp/coverage-151178-1723543324283-0.json +1 -0
  326. package/coverage/tmp/coverage-151189-1723543324271-0.json +1 -0
  327. package/coverage/tmp/coverage-151201-1723543324248-0.json +1 -0
  328. package/coverage/tmp/coverage-151208-1723543324227-0.json +1 -0
  329. package/extras/configs/panes.top.js +33 -11
  330. package/extras/configs/stickies.js +26 -16
  331. package/extras/configs/widgets.left.js +13 -1
  332. package/extras/libs/jsts.min.js +8 -0
  333. package/{test/client/core/account.js → extras/tests/core/account.mjs} +4 -4
  334. package/extras/tests/core/api.mjs +114 -0
  335. package/{test/client/core/collection.js → extras/tests/core/collection.mjs} +8 -8
  336. package/{test/client/core/dialogs.js → extras/tests/core/dialogs.mjs} +1 -1
  337. package/extras/tests/core/index.mjs +9 -0
  338. package/{test/client/core/layout.js → extras/tests/core/layout.mjs} +7 -3
  339. package/{test/client/core/runner.js → extras/tests/core/runner.mjs} +3 -3
  340. package/{test/client/core/screens.js → extras/tests/core/screens.mjs} +1 -1
  341. package/{test/client/core/utils.js → extras/tests/core/utils.mjs} +79 -26
  342. package/extras/tests/index.mjs +4 -0
  343. package/{test/client/map/api.js → extras/tests/map/api.mjs} +1 -1
  344. package/{test/client/map/catalog.js → extras/tests/map/catalog.mjs} +18 -18
  345. package/{test/client/map/controls.js → extras/tests/map/controls.mjs} +3 -3
  346. package/extras/tests/map/index.mjs +5 -0
  347. package/{test/client/map/time.js → extras/tests/map/time.mjs} +3 -3
  348. package/{test/client/map/utils.js → extras/tests/map/utils.mjs} +6 -5
  349. package/extras/tours/fab.js +36 -0
  350. package/extras/tours/layout.js +49 -0
  351. package/extras/tours/pane.left.js +78 -0
  352. package/extras/tours/pane.right.js +145 -0
  353. package/extras/tours/pane.top.js +239 -0
  354. package/map/api/config/layers.cjs +28 -13
  355. package/map/api/hooks/hooks.query.js +12 -7
  356. package/map/api/models/catalog.model.mongodb.js +17 -6
  357. package/map/api/services/catalog/catalog.hooks.js +1 -1
  358. package/map/api/services/index.js +18 -1
  359. package/map/client/cesium/utils/utils.cesium.js +25 -65
  360. package/map/client/cesium/utils/utils.features.js +1 -0
  361. package/map/client/cesium/utils/utils.geojson.js +1 -0
  362. package/map/client/cesium/utils/utils.style.js +7 -6
  363. package/map/client/components/KFeatureEditor.vue +3 -3
  364. package/map/client/components/KFeaturesChart.vue +4 -4
  365. package/map/client/components/KFeaturesFilterEditor.vue +19 -13
  366. package/map/client/components/KFeaturesFilterManager.vue +7 -4
  367. package/map/client/components/KFeaturesTable.vue +2 -2
  368. package/map/client/components/KLayerEditor.vue +6 -6
  369. package/map/client/components/KMeasureTool.vue +2 -1
  370. package/map/client/components/catalog/KBaseLayersSelector.vue +1 -1
  371. package/map/client/components/catalog/KCategoryItem.vue +15 -1
  372. package/map/client/components/catalog/KConnectLayer.vue +2 -2
  373. package/map/client/components/catalog/KCreateView.vue +3 -2
  374. package/map/client/components/catalog/KFilteredLayerItem.vue +26 -6
  375. package/map/client/components/catalog/KImportLayer.vue +6 -3
  376. package/map/client/components/catalog/KLayerCategories.vue +6 -6
  377. package/map/client/components/catalog/KLayerItem.vue +12 -2
  378. package/map/client/components/catalog/KLayersList.vue +180 -0
  379. package/map/client/components/catalog/KLayersPanel.vue +146 -36
  380. package/map/client/components/catalog/KLayersSelector.vue +96 -48
  381. package/map/client/components/catalog/KProjectEditor.vue +0 -9
  382. package/map/client/components/catalog/KProjectSelector.vue +3 -2
  383. package/map/client/components/catalog/KProjectsPanel.vue +23 -8
  384. package/map/client/components/catalog/KViewsPanel.vue +18 -8
  385. package/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  386. package/map/client/components/form/KDirectionField.vue +3 -6
  387. package/map/client/components/form/KLayerCategoryField.vue +2 -2
  388. package/map/client/components/form/KOwsServiceField.vue +25 -24
  389. package/map/client/components/form/KSelectLayersField.vue +4 -4
  390. package/map/client/components/form/KSelectViewsField.vue +4 -4
  391. package/map/client/components/legend/KLayerLegend.vue +11 -2
  392. package/map/client/components/legend/KLegend.vue +44 -51
  393. package/map/client/components/location/KLocationCardSection.vue +6 -7
  394. package/map/client/components/location/KLocationMap.vue +23 -13
  395. package/map/client/components/stickies/KPosition.vue +5 -0
  396. package/map/client/components/stickies/KZoomControl.vue +70 -0
  397. package/map/client/components/styles/KLayerStyleAction.vue +59 -12
  398. package/map/client/components/styles/KStyleEditor.vue +71 -8
  399. package/map/client/components/styles/KStyleEditorSection.vue +82 -33
  400. package/map/client/components/styles/KStyleManager.vue +119 -59
  401. package/map/client/components/styles/KStylePreview.vue +9 -25
  402. package/map/client/components/styles/KStylePreviewItem.vue +22 -1
  403. package/map/client/components/tools/KSearchTool.vue +1 -1
  404. package/map/client/components/widget/KElevationProfile.vue +20 -17
  405. package/map/client/components/widget/KInformationBox.vue +5 -5
  406. package/map/client/components/widget/KMapillaryViewer.vue +2 -1
  407. package/map/client/components/widget/KTimeSeries.vue +11 -9
  408. package/map/client/globe.js +2 -0
  409. package/map/client/i18n/map_en.json +30 -7
  410. package/map/client/i18n/map_fr.json +30 -7
  411. package/map/client/leaflet/GradientPath.js +61 -24
  412. package/map/client/leaflet/ShapeMarker.js +12 -5
  413. package/map/client/leaflet/TiledMeshLayer.js +3 -3
  414. package/map/client/leaflet/utils/utils.geojson.js +66 -8
  415. package/map/client/leaflet/utils/utils.style.js +14 -15
  416. package/map/client/mixins/globe/mixin.base-globe.js +190 -34
  417. package/map/client/mixins/globe/mixin.file-layers.js +3 -0
  418. package/map/client/mixins/globe/mixin.geojson-layers.js +179 -31
  419. package/map/client/mixins/globe/mixin.opendap-layers.js +2 -1
  420. package/map/client/mixins/globe/mixin.style.js +23 -1
  421. package/map/client/mixins/globe/mixin.tooltip.js +14 -2
  422. package/map/client/mixins/map/mixin.base-map.js +156 -58
  423. package/map/client/mixins/map/mixin.edit-layers.js +18 -15
  424. package/map/client/mixins/map/mixin.geojson-layers.js +181 -106
  425. package/map/client/mixins/map/mixin.heatmap-layers.js +3 -2
  426. package/map/client/mixins/map/mixin.map-activity.js +6 -1
  427. package/map/client/mixins/map/mixin.mapillary-layers.js +2 -1
  428. package/map/client/mixins/map/mixin.pmtiles-layers.js +3 -3
  429. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +3 -2
  430. package/map/client/mixins/map/mixin.tiled-wind-layers.js +3 -2
  431. package/map/client/mixins/mixin.activity.js +199 -55
  432. package/map/client/mixins/mixin.context.js +11 -11
  433. package/map/client/mixins/mixin.feature-service.js +11 -9
  434. package/map/client/mixins/mixin.weacast.js +5 -3
  435. package/map/client/readers/reader.geojson.js +3 -1
  436. package/map/client/utils/utils.capture.js +3 -3
  437. package/map/client/utils/utils.catalog.js +9 -5
  438. package/map/client/utils/utils.features.js +120 -54
  439. package/map/client/utils/utils.js +25 -10
  440. package/map/client/utils/utils.layers.js +148 -24
  441. package/map/client/utils/utils.location.js +26 -9
  442. package/map/client/utils/utils.schema.js +2 -1
  443. package/map/client/utils/utils.style.js +53 -9
  444. package/map/common/geotiff-grid-source.js +1 -3
  445. package/map/common/opendap-utils.js +0 -1
  446. package/map/common/tms-utils.js +0 -1
  447. package/map/common/wcs-utils.js +0 -1
  448. package/map/common/wfs-utils.js +0 -1
  449. package/map/common/wms-utils.js +7 -1
  450. package/map/common/wmts-utils.js +0 -1
  451. package/package.json +12 -12
  452. package/scripts/init_runner.sh +3 -3
  453. package/scripts/kash/CHANGELOG.md +27 -0
  454. package/scripts/kash/kash.sh +556 -237
  455. package/scripts/kash/scripts/run_tests.sh +44 -5
  456. package/scripts/setup_workspace.sh +23 -13
  457. package/test/api/core/config/default.cjs +2 -1
  458. package/test/api/core/tags.test.js +62 -0
  459. package/test/api/core/test-log-2024-04-22.log +84 -0
  460. package/test/api/core/{test-log-2025-02-05.log → test-log-2024-04-23.log} +3 -3
  461. package/test/api/core/test-log-2024-08-13.log +3 -0
  462. package/test/api/map/config/default.cjs +2 -1
  463. package/test/api/map/config/layers.json +9 -0
  464. package/test/api/map/data/openradiation.json +13811 -0
  465. package/test/api/map/grid-sources.test.js +1 -3
  466. package/test/api/map/index.test.js +60 -1
  467. package/test/api/map/style.test.js +30 -1
  468. package/test/api/map/test-log-2025-03-08.log +0 -0
  469. package/test.api.js +1 -1
  470. package/vite/App.vue +18 -0
  471. package/vite/AppWithGlobe.vue +84 -0
  472. package/vite/GlobeActivity.vue +58 -0
  473. package/vite/MapActivity.vue +63 -0
  474. package/vite/MapActivityWithGlobe.vue +63 -0
  475. package/vite/README.md +169 -0
  476. package/vite/config.js +221 -0
  477. package/vite/index_with_globe.html +50 -0
  478. package/vite/index_with_map.html +50 -0
  479. package/vite/package.json +173 -0
  480. package/vite/quasar.variables.scss +17 -0
  481. package/vite/vite.config.js +166 -0
  482. package/vite/yarn.lock +11641 -0
  483. package/core/client/components/media/KImageViewer.vue +0 -68
  484. package/core/client/components/media/KMarkdownViewer.vue +0 -55
  485. package/core/client/components/media/KMediaBrowser.vue +0 -301
  486. package/coverage/core/api/services/users/users.service.js.html +0 -100
  487. package/coverage/core/common/utils.offline.js.html +0 -199
  488. package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
  489. package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
  490. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
  491. package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
  492. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -196
  493. package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
  494. package/coverage/map/api/services/styles/index.html +0 -116
  495. package/coverage/map/api/services/styles/styles.hooks.js.html +0 -196
  496. package/coverage/tmp/coverage-151198-1753351220086-0.json +0 -1
  497. package/coverage/tmp/coverage-151210-1753351220070-0.json +0 -1
  498. package/coverage/tmp/coverage-151221-1753351129816-0.json +0 -1
  499. package/coverage/tmp/coverage-151233-1753351129803-0.json +0 -1
  500. package/coverage/tmp/coverage-151240-1753351129770-0.json +0 -1
  501. package/coverage/tmp/coverage-151307-1753351220058-0.json +0 -1
  502. package/coverage/tmp/coverage-151319-1753351220044-0.json +0 -1
  503. package/coverage/tmp/coverage-151326-1753351220010-0.json +0 -1
  504. package/extras/tours/core/account-profile.js +0 -32
  505. package/extras/tours/core/account.js +0 -143
  506. package/extras/tours/core/add-member.js +0 -75
  507. package/extras/tours/core/add-tag.js +0 -13
  508. package/extras/tours/core/create-group.js +0 -19
  509. package/extras/tours/core/create-organisation.js +0 -19
  510. package/extras/tours/core/create-tag.js +0 -26
  511. package/extras/tours/core/edit-member-role.js +0 -13
  512. package/extras/tours/core/groups.js +0 -65
  513. package/extras/tours/core/join-group.js +0 -13
  514. package/extras/tours/core/login.js +0 -41
  515. package/extras/tours/core/members.js +0 -108
  516. package/extras/tours/core/register.js +0 -61
  517. package/extras/tours/core/send-reset-password.js +0 -14
  518. package/extras/tours/core/tags.js +0 -65
  519. package/extras/tours/map/catalog-panel.js +0 -112
  520. package/extras/tours/map/fab.js +0 -26
  521. package/extras/tours/map/navigation-bar.js +0 -187
  522. package/extras/tours/map/side-nav.js +0 -36
  523. package/test/api/core/test-log-2025-05-21.log +0 -15
  524. package/test/api/core/test-log-2025-06-25.log +0 -9
  525. package/test/api/core/test-log-2025-07-24.log +0 -44
  526. package/test/api/map/test-log-2025-05-27.log +0 -13
  527. package/test/api/map/test-log-2025-06-23.log +0 -7
  528. package/test/api/map/test-log-2025-07-24.log +0 -11
  529. package/test/client/core/api.js +0 -361
  530. package/test/client/core/index.js +0 -9
  531. package/test/client/index.js +0 -4
  532. package/test/client/map/index.js +0 -5
  533. package/test.client.js +0 -1
  534. /package/{test/client/core/time.js → extras/tests/core/time.mjs} +0 -0
  535. /package/extras/tours/{map/add-layer.js → add-layer.js} +0 -0
  536. /package/extras/tours/{map/catalog-categories.js → catalog-categories.js} +0 -0
  537. /package/extras/tours/{map/connect-layer.js → connect-layer.js} +0 -0
  538. /package/extras/tours/{map/create-layer.js → create-layer.js} +0 -0
  539. /package/extras/tours/{map/create-view.js → create-view.js} +0 -0
  540. /package/extras/tours/{map/import-layer.js → import-layer.js} +0 -0
  541. /package/extras/tours/{map/timeline.js → pane.bottom.js} +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">97.27% </span>
26
+ <span class="strong">66.89% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>286/294</span>
28
+ <span class='fraction'>194/290</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80.35% </span>
33
+ <span class="strong">61.22% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>90/112</span>
35
+ <span class='fraction'>30/49</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">52.94% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/17</span>
42
+ <span class='fraction'>9/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">97.27% </span>
47
+ <span class="strong">66.89% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>286/294</span>
49
+ <span class='fraction'>194/290</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 high'></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>
@@ -353,84 +353,7 @@
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>
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">2x</span>
361
- <span class="cline-any cline-yes">2x</span>
362
- <span class="cline-any cline-yes">2x</span>
363
- <span class="cline-any cline-yes">2x</span>
364
- <span class="cline-any cline-yes">2x</span>
365
- <span class="cline-any cline-yes">2x</span>
366
- <span class="cline-any cline-yes">2x</span>
367
- <span class="cline-any cline-yes">2x</span>
368
- <span class="cline-any cline-yes">2x</span>
369
- <span class="cline-any cline-yes">2x</span>
370
- <span class="cline-any cline-yes">2x</span>
371
- <span class="cline-any cline-yes">2x</span>
372
- <span class="cline-any cline-yes">2x</span>
373
- <span class="cline-any cline-yes">2x</span>
374
- <span class="cline-any cline-yes">2x</span>
375
- <span class="cline-any cline-yes">2x</span>
376
- <span class="cline-any cline-yes">5x</span>
377
- <span class="cline-any cline-yes">29x</span>
378
- <span class="cline-any cline-yes">29x</span>
379
- <span class="cline-any cline-yes">29x</span>
380
- <span class="cline-any cline-yes">29x</span>
381
- <span class="cline-any cline-yes">29x</span>
382
- <span class="cline-any cline-yes">29x</span>
383
- <span class="cline-any cline-yes">29x</span>
384
- <span class="cline-any cline-yes">5x</span>
385
- <span class="cline-any cline-yes">2x</span>
386
- <span class="cline-any cline-yes">2x</span>
387
- <span class="cline-any cline-yes">2x</span>
388
- <span class="cline-any cline-yes">9x</span>
389
- <span class="cline-any cline-yes">86x</span>
390
- <span class="cline-any cline-yes">86x</span>
391
- <span class="cline-any cline-yes">86x</span>
392
- <span class="cline-any cline-yes">86x</span>
393
- <span class="cline-any cline-yes">86x</span>
394
- <span class="cline-any cline-yes">86x</span>
395
- <span class="cline-any cline-yes">86x</span>
396
- <span class="cline-any cline-yes">9x</span>
397
- <span class="cline-any cline-yes">2x</span>
398
- <span class="cline-any cline-yes">2x</span>
399
- <span class="cline-any cline-yes">2x</span>
400
- <span class="cline-any cline-yes">2x</span>
401
- <span class="cline-any cline-yes">2x</span>
402
- <span class="cline-any cline-yes">2x</span>
403
- <span class="cline-any cline-yes">2x</span>
404
- <span class="cline-any cline-yes">5x</span>
405
- <span class="cline-any cline-yes">18x</span>
406
- <span class="cline-any cline-yes">18x</span>
407
- <span class="cline-any cline-yes">18x</span>
408
- <span class="cline-any cline-yes">18x</span>
409
- <span class="cline-any cline-yes">18x</span>
410
- <span class="cline-any cline-yes">18x</span>
411
- <span class="cline-any cline-yes">18x</span>
412
- <span class="cline-any cline-yes">27x</span>
413
- <span class="cline-any cline-yes">27x</span>
414
- <span class="cline-any cline-yes">24x</span>
415
- <span class="cline-any cline-yes">24x</span>
416
- <span class="cline-any cline-yes">24x</span>
417
- <span class="cline-any cline-yes">9x</span>
418
- <span class="cline-any cline-yes">9x</span>
419
- <span class="cline-any cline-yes">27x</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-yes">18x</span>
423
- <span class="cline-any cline-yes">18x</span>
424
- <span class="cline-any cline-yes">18x</span>
425
- <span class="cline-any cline-yes">18x</span>
426
- <span class="cline-any cline-yes">18x</span>
427
- <span class="cline-any cline-yes">5x</span>
428
- <span class="cline-any cline-yes">2x</span>
429
- <span class="cline-any cline-yes">2x</span>
430
- <span class="cline-any cline-yes">2x</span>
431
- <span class="cline-any cline-yes">2x</span>
432
- <span class="cline-any cline-yes">2x</span>
433
- <span class="cline-any cline-yes">2x</span>
356
+ <a name='L291'></a><a href='#L291'>291</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
434
357
  <span class="cline-any cline-yes">1x</span>
435
358
  <span class="cline-any cline-yes">1x</span>
436
359
  <span class="cline-any cline-yes">1x</span>
@@ -441,32 +364,32 @@
441
364
  <span class="cline-any cline-yes">1x</span>
442
365
  <span class="cline-any cline-yes">1x</span>
443
366
  <span class="cline-any cline-yes">1x</span>
444
- <span class="cline-any cline-yes">2x</span>
445
- <span class="cline-any cline-yes">2x</span>
446
- <span class="cline-any cline-yes">2x</span>
447
- <span class="cline-any cline-yes">2x</span>
448
- <span class="cline-any cline-yes">6x</span>
449
- <span class="cline-any cline-yes">121x</span>
450
- <span class="cline-any cline-yes">121x</span>
451
- <span class="cline-any cline-yes">121x</span>
452
- <span class="cline-any cline-yes">121x</span>
453
- <span class="cline-any cline-yes">121x</span>
454
- <span class="cline-any cline-yes">121x</span>
455
- <span class="cline-any cline-yes">121x</span>
456
- <span class="cline-any cline-yes">121x</span>
457
- <span class="cline-any cline-yes">121x</span>
458
- <span class="cline-any cline-yes">121x</span>
459
- <span class="cline-any cline-yes">6x</span>
460
- <span class="cline-any cline-yes">2x</span>
461
- <span class="cline-any cline-yes">2x</span>
462
- <span class="cline-any cline-yes">2x</span>
463
367
  <span class="cline-any cline-yes">1x</span>
464
368
  <span class="cline-any cline-yes">1x</span>
465
369
  <span class="cline-any cline-yes">1x</span>
466
370
  <span class="cline-any cline-yes">1x</span>
467
371
  <span class="cline-any cline-yes">1x</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-no">&nbsp;</span>
375
+ <span class="cline-any cline-no">&nbsp;</span>
376
+ <span class="cline-any cline-no">&nbsp;</span>
377
+ <span class="cline-any cline-no">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-yes">1x</span>
468
382
  <span class="cline-any cline-yes">1x</span>
469
383
  <span class="cline-any cline-yes">1x</span>
384
+ <span class="cline-any cline-no">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-no">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-no">&nbsp;</span>
389
+ <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-no">&nbsp;</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
392
+ <span class="cline-any cline-no">&nbsp;</span>
470
393
  <span class="cline-any cline-yes">1x</span>
471
394
  <span class="cline-any cline-yes">1x</span>
472
395
  <span class="cline-any cline-yes">1x</span>
@@ -475,8 +398,28 @@
475
398
  <span class="cline-any cline-yes">1x</span>
476
399
  <span class="cline-any cline-yes">1x</span>
477
400
  <span class="cline-any cline-yes">2x</span>
478
- <span class="cline-any cline-yes">2x</span>
479
- <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>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
480
423
  <span class="cline-any cline-yes">2x</span>
481
424
  <span class="cline-any cline-yes">1x</span>
482
425
  <span class="cline-any cline-yes">1x</span>
@@ -489,67 +432,6 @@
489
432
  <span class="cline-any cline-yes">1x</span>
490
433
  <span class="cline-any cline-yes">1x</span>
491
434
  <span class="cline-any cline-yes">1x</span>
492
- <span class="cline-any cline-yes">2x</span>
493
- <span class="cline-any cline-yes">2x</span>
494
- <span class="cline-any cline-yes">2x</span>
495
- <span class="cline-any cline-yes">100x</span>
496
- <span class="cline-any cline-yes">164x</span>
497
- <span class="cline-any cline-yes">164x</span>
498
- <span class="cline-any cline-yes">36x</span>
499
- <span class="cline-any cline-yes">36x</span>
500
- <span class="cline-any cline-yes">36x</span>
501
- <span class="cline-any cline-yes">100x</span>
502
- <span class="cline-any cline-yes">100x</span>
503
- <span class="cline-any cline-yes">2x</span>
504
- <span class="cline-any cline-yes">2x</span>
505
- <span class="cline-any cline-yes">2x</span>
506
- <span class="cline-any cline-yes">6x</span>
507
- <span class="cline-any cline-yes">104x</span>
508
- <span class="cline-any cline-yes">104x</span>
509
- <span class="cline-any cline-yes">104x</span>
510
- <span class="cline-any cline-yes">104x</span>
511
- <span class="cline-any cline-yes">104x</span>
512
- <span class="cline-any cline-yes">104x</span>
513
- <span class="cline-any cline-yes">104x</span>
514
- <span class="cline-any cline-yes">104x</span>
515
- <span class="cline-any cline-yes">6x</span>
516
- <span class="cline-any cline-yes">2x</span>
517
- <span class="cline-any cline-yes">2x</span>
518
- <span class="cline-any cline-yes">2x</span>
519
- <span class="cline-any cline-yes">39x</span>
520
- <span class="cline-any cline-yes">58x</span>
521
- <span class="cline-any cline-yes">58x</span>
522
- <span class="cline-any cline-yes">39x</span>
523
- <span class="cline-any cline-yes">39x</span>
524
- <span class="cline-any cline-yes">2x</span>
525
- <span class="cline-any cline-yes">2x</span>
526
- <span class="cline-any cline-yes">2x</span>
527
- <span class="cline-any cline-yes">5x</span>
528
- <span class="cline-any cline-yes">33x</span>
529
- <span class="cline-any cline-yes">33x</span>
530
- <span class="cline-any cline-yes">33x</span>
531
- <span class="cline-any cline-yes">33x</span>
532
- <span class="cline-any cline-yes">33x</span>
533
- <span class="cline-any cline-yes">33x</span>
534
- <span class="cline-any cline-yes">33x</span>
535
- <span class="cline-any cline-yes">33x</span>
536
- <span class="cline-any cline-yes">5x</span>
537
- <span class="cline-any cline-yes">2x</span>
538
- <span class="cline-any cline-yes">2x</span>
539
- <span class="cline-any cline-yes">20x</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-yes">20x</span>
543
- <span class="cline-any cline-yes">20x</span>
544
- <span class="cline-any cline-yes">20x</span>
545
- <span class="cline-any cline-yes">20x</span>
546
- <span class="cline-any cline-yes">19x</span>
547
- <span class="cline-any cline-yes">19x</span>
548
- <span class="cline-any cline-yes">19x</span>
549
- <span class="cline-any cline-yes">20x</span>
550
- <span class="cline-any cline-yes">20x</span>
551
- <span class="cline-any cline-yes">2x</span>
552
- <span class="cline-any cline-yes">2x</span>
553
435
  <span class="cline-any cline-yes">1x</span>
554
436
  <span class="cline-any cline-yes">1x</span>
555
437
  <span class="cline-any cline-yes">1x</span>
@@ -560,74 +442,184 @@
560
442
  <span class="cline-any cline-yes">1x</span>
561
443
  <span class="cline-any cline-yes">1x</span>
562
444
  <span class="cline-any cline-yes">1x</span>
563
- <span class="cline-any cline-yes">2x</span>
564
- <span class="cline-any cline-yes">2x</span>
565
- <span class="cline-any cline-yes">2x</span>
566
445
  <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-yes">1x</span>
447
+ <span class="cline-any cline-yes">1x</span>
448
+ <span class="cline-any cline-yes">1x</span>
449
+ <span class="cline-any cline-yes">1x</span>
450
+ <span class="cline-any cline-yes">1x</span>
451
+ <span class="cline-any cline-yes">1x</span>
452
+ <span class="cline-any cline-yes">1x</span>
453
+ <span class="cline-any cline-yes">1x</span>
454
+ <span class="cline-any cline-yes">1x</span>
455
+ <span class="cline-any cline-yes">1x</span>
456
+ <span class="cline-any cline-yes">1x</span>
457
+ <span class="cline-any cline-yes">1x</span>
458
+ <span class="cline-any cline-yes">1x</span>
459
+ <span class="cline-any cline-yes">1x</span>
460
+ <span class="cline-any cline-yes">1x</span>
461
+ <span class="cline-any cline-yes">1x</span>
462
+ <span class="cline-any cline-yes">1x</span>
463
+ <span class="cline-any cline-yes">1x</span>
464
+ <span class="cline-any cline-yes">1x</span>
465
+ <span class="cline-any cline-yes">1x</span>
466
+ <span class="cline-any cline-yes">1x</span>
467
+ <span class="cline-any cline-yes">1x</span>
468
+ <span class="cline-any cline-yes">1x</span>
469
+ <span class="cline-any cline-yes">1x</span>
470
+ <span class="cline-any cline-yes">1x</span>
471
+ <span class="cline-any cline-yes">1x</span>
472
+ <span class="cline-any cline-yes">1x</span>
473
+ <span class="cline-any cline-yes">1x</span>
474
+ <span class="cline-any cline-yes">1x</span>
475
+ <span class="cline-any cline-yes">1x</span>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-yes">1x</span>
478
+ <span class="cline-any cline-yes">1x</span>
479
+ <span class="cline-any cline-yes">1x</span>
480
+ <span class="cline-any cline-yes">1x</span>
481
+ <span class="cline-any cline-yes">1x</span>
482
+ <span class="cline-any cline-yes">1x</span>
483
+ <span class="cline-any cline-yes">1x</span>
484
+ <span class="cline-any cline-yes">1x</span>
485
+ <span class="cline-any cline-yes">1x</span>
486
+ <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-yes">1x</span>
488
+ <span class="cline-any cline-yes">1x</span>
489
+ <span class="cline-any cline-yes">1x</span>
490
+ <span class="cline-any cline-yes">1x</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
567
497
  <span class="cline-any cline-no">&nbsp;</span>
568
498
  <span class="cline-any cline-no">&nbsp;</span>
569
499
  <span class="cline-any cline-yes">1x</span>
570
500
  <span class="cline-any cline-yes">1x</span>
571
501
  <span class="cline-any cline-yes">1x</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
506
+ <span class="cline-any cline-no">&nbsp;</span>
507
+ <span class="cline-any cline-no">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
572
512
  <span class="cline-any cline-yes">1x</span>
573
513
  <span class="cline-any cline-yes">1x</span>
574
514
  <span class="cline-any cline-yes">1x</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
575
520
  <span class="cline-any cline-yes">1x</span>
576
521
  <span class="cline-any cline-yes">1x</span>
577
522
  <span class="cline-any cline-yes">1x</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-no">&nbsp;</span>
525
+ <span class="cline-any cline-no">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-no">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-no">&nbsp;</span>
532
+ <span class="cline-any cline-no">&nbsp;</span>
578
533
  <span class="cline-any cline-yes">1x</span>
579
534
  <span class="cline-any cline-yes">1x</span>
580
- <span class="cline-any cline-yes">2x</span>
581
- <span class="cline-any cline-yes">2x</span>
582
- <span class="cline-any cline-yes">2x</span>
583
- <span class="cline-any cline-yes">2x</span>
584
- <span class="cline-any cline-yes">55x</span>
585
- <span class="cline-any cline-yes">55x</span>
586
- <span class="cline-any cline-yes">55x</span>
535
+ <span class="cline-any cline-no">&nbsp;</span>
536
+ <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>
548
+ <span class="cline-any cline-yes">1x</span>
549
+ <span class="cline-any cline-yes">1x</span>
550
+ <span class="cline-any cline-yes">1x</span>
551
+ <span class="cline-any cline-yes">1x</span>
552
+ <span class="cline-any cline-yes">1x</span>
553
+ <span class="cline-any cline-yes">1x</span>
554
+ <span class="cline-any cline-yes">1x</span>
555
+ <span class="cline-any cline-yes">1x</span>
556
+ <span class="cline-any cline-yes">1x</span>
557
+ <span class="cline-any cline-yes">1x</span>
558
+ <span class="cline-any cline-yes">1x</span>
559
+ <span class="cline-any cline-yes">1x</span>
560
+ <span class="cline-any cline-yes">1x</span>
561
+ <span class="cline-any cline-yes">1x</span>
562
+ <span class="cline-any cline-yes">1x</span>
563
+ <span class="cline-any cline-no">&nbsp;</span>
564
+ <span class="cline-any cline-no">&nbsp;</span>
565
+ <span class="cline-any cline-yes">1x</span>
566
+ <span class="cline-any cline-yes">1x</span>
567
+ <span class="cline-any cline-yes">1x</span>
568
+ <span class="cline-any cline-yes">1x</span>
569
+ <span class="cline-any cline-yes">1x</span>
570
+ <span class="cline-any cline-yes">1x</span>
571
+ <span class="cline-any cline-yes">1x</span>
572
+ <span class="cline-any cline-yes">1x</span>
573
+ <span class="cline-any cline-yes">1x</span>
574
+ <span class="cline-any cline-yes">1x</span>
575
+ <span class="cline-any cline-yes">1x</span>
576
+ <span class="cline-any cline-yes">1x</span>
577
+ <span class="cline-any cline-yes">1x</span>
578
+ <span class="cline-any cline-yes">1x</span>
579
+ <span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-no">&nbsp;</span>
581
+ <span class="cline-any cline-no">&nbsp;</span>
582
+ <span class="cline-any cline-no">&nbsp;</span>
583
+ <span class="cline-any cline-no">&nbsp;</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
587
  <span class="cline-any cline-yes">1x</span>
588
588
  <span class="cline-any cline-yes">1x</span>
589
589
  <span class="cline-any cline-yes">1x</span>
590
- <span class="cline-any cline-yes">55x</span>
591
- <span class="cline-any cline-yes">2x</span>
592
- <span class="cline-any cline-yes">2x</span>
593
- <span class="cline-any cline-yes">2x</span>
594
- <span class="cline-any cline-yes">10x</span>
595
- <span class="cline-any cline-yes">20x</span>
596
- <span class="cline-any cline-yes">16x</span>
597
- <span class="cline-any cline-yes">16x</span>
598
- <span class="cline-any cline-yes">16x</span>
599
- <span class="cline-any cline-yes">20x</span>
600
- <span class="cline-any cline-yes">20x</span>
601
- <span class="cline-any cline-yes">20x</span>
602
- <span class="cline-any cline-yes">20x</span>
603
- <span class="cline-any cline-yes">20x</span>
604
- <span class="cline-any cline-yes">11x</span>
605
- <span class="cline-any cline-yes">11x</span>
606
- <span class="cline-any cline-yes">11x</span>
607
- <span class="cline-any cline-yes">11x</span>
608
- <span class="cline-any cline-yes">11x</span>
609
- <span class="cline-any cline-yes">11x</span>
610
- <span class="cline-any cline-yes">11x</span>
611
- <span class="cline-any cline-yes">4x</span>
612
590
  <span class="cline-any cline-yes">4x</span>
613
591
  <span class="cline-any cline-yes">4x</span>
614
592
  <span class="cline-any cline-yes">4x</span>
615
593
  <span class="cline-any cline-yes">4x</span>
616
594
  <span class="cline-any cline-yes">4x</span>
617
595
  <span class="cline-any cline-yes">4x</span>
596
+ <span class="cline-any cline-yes">2x</span>
597
+ <span class="cline-any cline-yes">2x</span>
598
+ <span class="cline-any cline-yes">2x</span>
599
+ <span class="cline-any cline-yes">2x</span>
600
+ <span class="cline-any cline-yes">2x</span>
601
+ <span class="cline-any cline-yes">2x</span>
602
+ <span class="cline-any cline-yes">2x</span>
603
+ <span class="cline-any cline-yes">2x</span>
604
+ <span class="cline-any cline-yes">2x</span>
605
+ <span class="cline-any cline-yes">2x</span>
606
+ <span class="cline-any cline-yes">2x</span>
607
+ <span class="cline-any cline-yes">2x</span>
608
+ <span class="cline-any cline-yes">2x</span>
609
+ <span class="cline-any cline-yes">2x</span>
618
610
  <span class="cline-any cline-yes">1x</span>
619
- <span class="cline-any cline-yes">4x</span>
620
- <span class="cline-any cline-yes">4x</span>
621
- <span class="cline-any cline-yes">4x</span>
622
- <span class="cline-any cline-yes">11x</span>
623
- <span class="cline-any cline-yes">16x</span>
624
- <span class="cline-any cline-yes">20x</span>
625
- <span class="cline-any cline-yes">10x</span>
626
611
  <span class="cline-any cline-yes">2x</span>
627
612
  <span class="cline-any cline-yes">2x</span>
628
613
  <span class="cline-any cline-yes">2x</span>
629
614
  <span class="cline-any cline-yes">2x</span>
630
615
  <span class="cline-any cline-yes">2x</span>
616
+ <span class="cline-any cline-yes">4x</span>
617
+ <span class="cline-any cline-yes">4x</span>
618
+ <span class="cline-any cline-yes">1x</span>
619
+ <span class="cline-any cline-yes">1x</span>
620
+ <span class="cline-any cline-yes">1x</span>
621
+ <span class="cline-any cline-yes">1x</span>
622
+ <span class="cline-any cline-yes">1x</span>
631
623
  <span class="cline-any cline-yes">3x</span>
632
624
  <span class="cline-any cline-yes">3x</span>
633
625
  <span class="cline-any cline-no">&nbsp;</span>
@@ -666,28 +658,28 @@ const sift = siftModule.default
666
658
  const debug = makeDebug('kdk:core:model:hooks')
667
659
  &nbsp;
668
660
  // Need to convert from server side types (moment dates) to basic JS types when "writing" to DB adapters
669
- export function processTimes (properties) {
670
- return function (hook) {
671
- let items = getItems(hook)
672
- const isArray = Array.isArray(items)
673
- items = (isArray ? items : [items])
674
- items.forEach(item =&gt; marshallTimes(item, properties))
675
- replaceItems(hook, isArray ? items : items[0])
676
- return hook
677
- }
678
- }
661
+ export <span class="fstat-no" title="function not covered" >function processTimes (properties) {</span>
662
+ <span class="cstat-no" title="statement not covered" > return function (hook) {</span>
663
+ <span class="cstat-no" title="statement not covered" > let items = getItems(hook)</span>
664
+ <span class="cstat-no" title="statement not covered" > const isArray = Array.isArray(items)</span>
665
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
666
+ <span class="cstat-no" title="statement not covered" > items.forEach(item =&gt; marshallTimes(item, properties))</span>
667
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
668
+ <span class="cstat-no" title="statement not covered" > return hook</span>
669
+ <span class="cstat-no" title="statement not covered" > }</span>
670
+ <span class="cstat-no" title="statement not covered" >}</span>
679
671
  &nbsp;
680
672
  // Need to convert back to server side types (moment dates) from basic JS types when "reading" from DB adapters
681
- export function unprocessTimes (properties) {
682
- return function (hook) {
683
- let items = getItems(hook)
684
- const isArray = Array.isArray(items)
685
- items = (isArray ? items : [items])
686
- items.forEach(item =&gt; unmarshallTimes(item, properties))
687
- replaceItems(hook, isArray ? items : items[0])
688
- return hook
689
- }
690
- }
673
+ export <span class="fstat-no" title="function not covered" >function unprocessTimes (properties) {</span>
674
+ <span class="cstat-no" title="statement not covered" > return function (hook) {</span>
675
+ <span class="cstat-no" title="statement not covered" > let items = getItems(hook)</span>
676
+ <span class="cstat-no" title="statement not covered" > const isArray = Array.isArray(items)</span>
677
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
678
+ <span class="cstat-no" title="statement not covered" > items.forEach(item =&gt; unmarshallTimes(item, properties))</span>
679
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
680
+ <span class="cstat-no" title="statement not covered" > return hook</span>
681
+ <span class="cstat-no" title="statement not covered" > }</span>
682
+ <span class="cstat-no" title="statement not covered" >}</span>
691
683
  &nbsp;
692
684
  // The hook serialize allows to copy/move some properties within the objects holded by the hook
693
685
  // It applies an array of rules defined by:
@@ -696,28 +688,28 @@ export function unprocessTimes (properties) {
696
688
  // - delete: a flag to define whether the hook has to delete the source property
697
689
  export function serialize (rules, options = {}) {
698
690
  return function (hook) {
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>
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>
714
706
  <span class="cstat-no" title="statement not covered" > throw new Error('Cannot find valid input value for property ' + rule.target)</span>
715
707
  <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
- }
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>
721
713
  }
722
714
  &nbsp;
723
715
  // This hook allows to transform the values bound to '_id' like keys or
@@ -742,9 +734,9 @@ export function convertObjectIDs (properties) {
742
734
  return function (hook) {
743
735
  let items = getItems(hook)
744
736
  const isArray = Array.isArray(items)
745
- items = (isArray ? items : [items])
737
+ items = (isArray <span class="branch-0 cbranch-no" title="branch not covered" >? items </span>: [items])
746
738
  items.forEach(item =&gt; toObjectIDs(item, properties))
747
- replaceItems(hook, isArray ? items : items[0])
739
+ replaceItems(hook, isArray <span class="branch-0 cbranch-no" title="branch not covered" >? items </span>: items[0])
748
740
  &nbsp;
749
741
  if (hook.params.query) toObjectIDs(hook.params.query, properties)
750
742
  &nbsp;
@@ -785,63 +777,63 @@ export function convertDates (properties, asMoment) {
785
777
  }
786
778
  &nbsp;
787
779
  // Utility function used to convert from string to JSON a fixed set of properties on a given object
788
- export function toJson (object, properties) {
789
- properties.forEach(property =&gt; {
790
- const string = _.get(object, property)
791
- if (string &amp;&amp; (typeof string === 'string')) {
792
- const json = JSON.parse(string)
793
- _.set(object, property, json)
794
- }
795
- })
796
- }
780
+ export <span class="fstat-no" title="function not covered" >function toJson (object, properties) {</span>
781
+ <span class="cstat-no" title="statement not covered" > properties.forEach(property =&gt; {</span>
782
+ <span class="cstat-no" title="statement not covered" > const string = _.get(object, property)</span>
783
+ <span class="cstat-no" title="statement not covered" > if (string &amp;&amp; (typeof string === 'string')) {</span>
784
+ <span class="cstat-no" title="statement not covered" > const json = JSON.parse(string)</span>
785
+ <span class="cstat-no" title="statement not covered" > _.set(object, property, json)</span>
786
+ <span class="cstat-no" title="statement not covered" > }</span>
787
+ <span class="cstat-no" title="statement not covered" > })</span>
788
+ <span class="cstat-no" title="statement not covered" >}</span>
797
789
  &nbsp;
798
790
  // The hook allows to transform a set of input properties as strings into JSON objects
799
- export function convertToJson (properties) {
800
- return function (hook) {
801
- let items = getItems(hook)
802
- const isArray = Array.isArray(items)
803
- items = (isArray ? items : [items])
804
- items.forEach(item =&gt; toJson(item, properties))
805
- replaceItems(hook, isArray ? items : items[0])
806
- &nbsp;
807
- return hook
808
- }
809
- }
791
+ export <span class="fstat-no" title="function not covered" >function convertToJson (properties) {</span>
792
+ <span class="cstat-no" title="statement not covered" > return function (hook) {</span>
793
+ <span class="cstat-no" title="statement not covered" > let items = getItems(hook)</span>
794
+ <span class="cstat-no" title="statement not covered" > const isArray = Array.isArray(items)</span>
795
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
796
+ <span class="cstat-no" title="statement not covered" > items.forEach(item =&gt; toJson(item, properties))</span>
797
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
798
+ <span class="cstat-no" title="statement not covered" ></span>
799
+ <span class="cstat-no" title="statement not covered" > return hook</span>
800
+ <span class="cstat-no" title="statement not covered" > }</span>
801
+ <span class="cstat-no" title="statement not covered" >}</span>
810
802
  &nbsp;
811
803
  // Utility function used to convert from string to JSON a fixed set of properties on a given object
812
- export function toString (object, properties) {
813
- properties.forEach(property =&gt; {
814
- const json = _.get(object, property)
815
- if (json &amp;&amp; (typeof json === 'object')) _.set(object, property, JSON.stringify(json))
816
- })
817
- }
804
+ export <span class="fstat-no" title="function not covered" >function toString (object, properties) {</span>
805
+ <span class="cstat-no" title="statement not covered" > properties.forEach(property =&gt; {</span>
806
+ <span class="cstat-no" title="statement not covered" > const json = _.get(object, property)</span>
807
+ <span class="cstat-no" title="statement not covered" > if (json &amp;&amp; (typeof json === 'object')) _.set(object, property, JSON.stringify(json))</span>
808
+ <span class="cstat-no" title="statement not covered" > })</span>
809
+ <span class="cstat-no" title="statement not covered" >}</span>
818
810
  &nbsp;
819
811
  // The hook allows to transform a set of input properties from JSON objects into strings
820
- export function convertToString (properties) {
821
- return function (hook) {
822
- let items = getItems(hook)
823
- const isArray = Array.isArray(items)
824
- items = (isArray ? items : [items])
825
- items.forEach(item =&gt; toString(item, properties))
826
- replaceItems(hook, isArray ? items : items[0])
827
- &nbsp;
828
- return hook
829
- }
830
- }
812
+ export <span class="fstat-no" title="function not covered" >function convertToString (properties) {</span>
813
+ <span class="cstat-no" title="statement not covered" > return function (hook) {</span>
814
+ <span class="cstat-no" title="statement not covered" > let items = getItems(hook)</span>
815
+ <span class="cstat-no" title="statement not covered" > const isArray = Array.isArray(items)</span>
816
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
817
+ <span class="cstat-no" title="statement not covered" > items.forEach(item =&gt; toString(item, properties))</span>
818
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
819
+ <span class="cstat-no" title="statement not covered" ></span>
820
+ <span class="cstat-no" title="statement not covered" > return hook</span>
821
+ <span class="cstat-no" title="statement not covered" > }</span>
822
+ <span class="cstat-no" title="statement not covered" >}</span>
831
823
  &nbsp;
832
- export async function populatePreviousObject (hook) {
833
- if (hook.type !== 'before') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
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>
834
826
  <span class="cstat-no" title="statement not covered" > throw new Error('The \'populatePreviousObject\' hook should only be used as a \'before\' hook.')</span>
835
827
  <span class="cstat-no" title="statement not covered" > }</span>
836
- const item = getItems(hook)
837
- const id = (hook.id ? hook.id : _.get(item, '_id'))
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
- }
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>
845
837
  &nbsp;
846
838
  export function setAsDeleted (hook) {
847
839
  // Retrieve the items from the hook
@@ -874,22 +866,18 @@ export function setExpireAfter (delayInSeconds) {
874
866
  }
875
867
  &nbsp;
876
868
  // Allow to use the distinct function of MongoDB
877
- export async function distinct (hook) {
878
- const params = hook.params
879
- const query = params.query
880
- if (!query || !query.$distinct) return hook
881
- const collection = hook.service.Model
882
- hook.result = await collection.distinct(query.$distinct, _.omit(query, ['$distinct']))
883
- return hook
884
- }
869
+ export <span class="fstat-no" title="function not covered" >async function distinct (hook) {</span>
870
+ <span class="cstat-no" title="statement not covered" > const params = hook.params</span>
871
+ <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>
873
+ <span class="cstat-no" title="statement not covered" > const collection = hook.service.Model</span>
874
+ <span class="cstat-no" title="statement not covered" > hook.result = await collection.distinct(query.$distinct, _.omit(query, ['$distinct']))</span>
875
+ <span class="cstat-no" title="statement not covered" > return hook</span>
876
+ <span class="cstat-no" title="statement not covered" >}</span>
885
877
  &nbsp;
886
878
  // Check for already existing object according to given service/id field
887
879
  export function checkUnique (options = {}) {
888
880
  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
- }
893
881
  const service = (options.service <span class="branch-0 cbranch-no" title="branch not covered" >? hook.app.getService(options.service) </span>: hook.service)
894
882
  const field = options.field <span class="branch-0 cbranch-no" title="branch not covered" >|| 'name'</span>
895
883
  const id = _.get(hook, `data.${field}`)
@@ -897,7 +885,7 @@ export function checkUnique (options = {}) {
897
885
  if (id) {
898
886
  const query = { [options.field]: id }
899
887
  // Apply processing if required
900
- if (typeof options.query === 'function') options.query(query, hook)
888
+ if (typeof options.query === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >options.query(query, hook)</span>
901
889
  const result = await service.find({ query })
902
890
  // Pagination on/off ?
903
891
  const total = (Array.isArray(result) <span class="branch-0 cbranch-no" title="branch not covered" >? result.length </span>: result.total)
@@ -952,7 +940,7 @@ export function preventChanges (ifThrow, fieldNames) {
952
940
  <div class='footer quiet pad2 space-top1 center small'>
953
941
  Code coverage generated by
954
942
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
955
- at 2025-07-24T10:00:20.508Z
943
+ at 2024-08-13T10:02:04.872Z
956
944
  </div>
957
945
  <script src="../../../prettify.js"></script>
958
946
  <script>