@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
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/14</span>
28
+ <span class='fraction'>0/39</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/14</span>
49
+ <span class='fraction'>0/39</span>
50
50
  </div>
51
51
 
52
52
 
@@ -77,7 +77,32 @@
77
77
  <a name='L12'></a><a href='#L12'>12</a>
78
78
  <a name='L13'></a><a href='#L13'>13</a>
79
79
  <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
81
106
  <span class="cline-any cline-no">&nbsp;</span>
82
107
  <span class="cline-any cline-no">&nbsp;</span>
83
108
  <span class="cline-any cline-no">&nbsp;</span>
@@ -91,7 +116,34 @@
91
116
  <span class="cline-any cline-no">&nbsp;</span>
92
117
  <span class="cline-any cline-no">&nbsp;</span>
93
118
  <span class="cline-any cline-no">&nbsp;</span>
94
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >export default function (app, options) {</span></span></span>
119
+ <span class="cline-any cline-no">&nbsp;</span>
120
+ <span class="cline-any cline-no">&nbsp;</span>
121
+ <span class="cline-any cline-no">&nbsp;</span>
122
+ <span class="cline-any cline-no">&nbsp;</span>
123
+ <span class="cline-any cline-no">&nbsp;</span>
124
+ <span class="cline-any cline-no">&nbsp;</span>
125
+ <span class="cline-any cline-no">&nbsp;</span>
126
+ <span class="cline-any cline-no">&nbsp;</span>
127
+ <span class="cline-any cline-no">&nbsp;</span>
128
+ <span class="cline-any cline-no">&nbsp;</span>
129
+ <span class="cline-any cline-no">&nbsp;</span>
130
+ <span class="cline-any cline-no">&nbsp;</span>
131
+ <span class="cline-any cline-no">&nbsp;</span>
132
+ <span class="cline-any cline-no">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-no">&nbsp;</span>
135
+ <span class="cline-any cline-no">&nbsp;</span>
136
+ <span class="cline-any cline-no">&nbsp;</span>
137
+ <span class="cline-any cline-no">&nbsp;</span>
138
+ <span class="cline-any cline-no">&nbsp;</span>
139
+ <span class="cline-any cline-no">&nbsp;</span>
140
+ <span class="cline-any cline-no">&nbsp;</span>
141
+ <span class="cline-any cline-no">&nbsp;</span>
142
+ <span class="cline-any cline-no">&nbsp;</span>
143
+ <span class="cline-any cline-no">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import _ from 'lodash'</span></span></span>
145
+ <span class="cstat-no" title="statement not covered" ></span>
146
+ <span class="cstat-no" title="statement not covered" >export default function (app, options) {</span>
95
147
  <span class="cstat-no" title="statement not covered" > const db = options.db || app.db</span>
96
148
  <span class="cstat-no" title="statement not covered" > options.Model = db.collection('catalog')</span>
97
149
  <span class="cstat-no" title="statement not covered" > // We previously had a unique constraint on name but we now have</span>
@@ -102,8 +154,31 @@
102
154
  <span class="cstat-no" title="statement not covered" > options.Model.indexExists('name_1_type_1').then(() =&gt; options.Model.dropIndex('name_1_type_1')).catch(() =&gt; {})</span>
103
155
  <span class="cstat-no" title="statement not covered" > // Collation provided in query ensure sorting to be case insensitive w.r.t. user's language</span>
104
156
  <span class="cstat-no" title="statement not covered" > // We built indices with collation to cover the most used languages, it requires different naming...</span>
105
- <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 1, type: 1 }, { unique: true, name: 'name-type-en', collation: { locale: 'en', strength: 1 } })</span>
106
- <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 1, type: 1 }, { unique: true, name: 'name-type-fr', collation: { locale: 'fr', strength: 1 } })</span>
157
+ <span class="cstat-no" title="statement not covered" > const languages = ['en', 'fr']</span>
158
+ <span class="cstat-no" title="statement not covered" > const createCollationIndex = (name, language) =&gt; {</span>
159
+ <span class="cstat-no" title="statement not covered" > return options.Model.createIndex({ name: 1, type: 1 }, { name, collation: { locale: language, strength: 1 } })</span>
160
+ <span class="cstat-no" title="statement not covered" > }</span>
161
+ <span class="cstat-no" title="statement not covered" > // We previously had a unique constraint that we have relaxed on collation index, check if we need to update</span>
162
+ <span class="cstat-no" title="statement not covered" > options.Model.indexInformation({ full: true }).then(indexes =&gt; {</span>
163
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; languages.length; i++) {</span>
164
+ <span class="cstat-no" title="statement not covered" > const language = languages[i]</span>
165
+ <span class="cstat-no" title="statement not covered" > const name = `name-type-${language}`</span>
166
+ <span class="cstat-no" title="statement not covered" > </span>
167
+ <span class="cstat-no" title="statement not covered" > let uniqueIndex = _.find(indexes, { name, unique: true })</span>
168
+ <span class="cstat-no" title="statement not covered" > if (uniqueIndex) options.Model.dropIndex(name).then(() =&gt; createCollationIndex(name, language)).catch(() =&gt; {})</span>
169
+ <span class="cstat-no" title="statement not covered" > else createCollationIndex(name, language)</span>
170
+ <span class="cstat-no" title="statement not covered" > }</span>
171
+ <span class="cstat-no" title="statement not covered" > }).catch(error =&gt; {</span>
172
+ <span class="cstat-no" title="statement not covered" > if (error.codeName === 'NamespaceNotFound') {</span>
173
+ <span class="cstat-no" title="statement not covered" > // Could be that DB is not yet initialized, in this case simply create new collation index</span>
174
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; languages.length; i++) {</span>
175
+ <span class="cstat-no" title="statement not covered" > const language = languages[i]</span>
176
+ <span class="cstat-no" title="statement not covered" > const name = `name-type-${language}`</span>
177
+ <span class="cstat-no" title="statement not covered" > createCollationIndex(name, language)</span>
178
+ <span class="cstat-no" title="statement not covered" > }</span>
179
+ <span class="cstat-no" title="statement not covered" > }</span>
180
+ <span class="cstat-no" title="statement not covered" > })</span>
181
+ <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 'text', label: 'text' })</span>
107
182
  <span class="cstat-no" title="statement not covered" >}</span>
108
183
  &nbsp;</pre></td></tr></table></pre>
109
184
 
@@ -112,7 +187,7 @@
112
187
  <div class='footer quiet pad2 space-top1 center small'>
113
188
  Code coverage generated by
114
189
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
- at 2024-08-13T10:02:04.872Z
190
+ at 2026-03-10T09:15:24.774Z
116
191
  </div>
117
192
  <script src="../../../prettify.js"></script>
118
193
  <script>
@@ -181,7 +181,7 @@
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
184
- at 2024-08-13T10:02:04.872Z
184
+ at 2026-03-10T09:15:24.774Z
185
185
  </div>
186
186
  <script src="../../../prettify.js"></script>
187
187
  <script>
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/66</span>
28
+ <span class='fraction'>0/100</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/4</span>
35
+ <span class='fraction'>0/5</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/4</span>
42
+ <span class='fraction'>0/5</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/66</span>
49
+ <span class='fraction'>0/100</span>
50
50
  </div>
51
51
 
52
52
 
@@ -99,13 +99,13 @@
99
99
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
100
100
  </td>
101
101
  <td data-value="0" class="pct low">0%</td>
102
- <td data-value="14" class="abs low">0/14</td>
102
+ <td data-value="39" class="abs low">0/39</td>
103
103
  <td data-value="0" class="pct low">0%</td>
104
104
  <td data-value="1" class="abs low">0/1</td>
105
105
  <td data-value="0" class="pct low">0%</td>
106
106
  <td data-value="1" class="abs low">0/1</td>
107
107
  <td data-value="0" class="pct low">0%</td>
108
- <td data-value="14" class="abs low">0/14</td>
108
+ <td data-value="39" class="abs low">0/39</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -138,6 +138,21 @@
138
138
  <td data-value="8" class="abs low">0/8</td>
139
139
  </tr>
140
140
 
141
+ <tr>
142
+ <td class="file low" data-value="styles.model.mongodb.js"><a href="styles.model.mongodb.js.html">styles.model.mongodb.js</a></td>
143
+ <td data-value="0" class="pic low">
144
+ <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
145
+ </td>
146
+ <td data-value="0" class="pct low">0%</td>
147
+ <td data-value="9" class="abs low">0/9</td>
148
+ <td data-value="0" class="pct low">0%</td>
149
+ <td data-value="1" class="abs low">0/1</td>
150
+ <td data-value="0" class="pct low">0%</td>
151
+ <td data-value="1" class="abs low">0/1</td>
152
+ <td data-value="0" class="pct low">0%</td>
153
+ <td data-value="9" class="abs low">0/9</td>
154
+ </tr>
155
+
141
156
  </tbody>
142
157
  </table>
143
158
  </div>
@@ -146,7 +161,7 @@
146
161
  <div class='footer quiet pad2 space-top1 center small'>
147
162
  Code coverage generated by
148
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2024-08-13T10:02:04.872Z
164
+ at 2026-03-10T09:15:24.774Z
150
165
  </div>
151
166
  <script src="../../../prettify.js"></script>
152
167
  <script>
@@ -94,7 +94,7 @@
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at 2024-08-13T10:02:04.872Z
97
+ at 2026-03-10T09:15:24.774Z
98
98
  </div>
99
99
  <script src="../../../prettify.js"></script>
100
100
  <script>
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for core/api/models/groups.model.mongodb.js</title>
6
+ <title>Code coverage report for map/api/models/styles.model.mongodb.js</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../../base.css" />
@@ -19,13 +19,13 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">core/api/models</a> groups.model.mongodb.js</h1>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">map/api/models</a> styles.model.mongodb.js</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/8</span>
28
+ <span class='fraction'>0/9</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/8</span>
49
+ <span class='fraction'>0/9</span>
50
50
  </div>
51
51
 
52
52
 
@@ -71,7 +71,9 @@
71
71
  <a name='L6'></a><a href='#L6'>6</a>
72
72
  <a name='L7'></a><a href='#L7'>7</a>
73
73
  <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
76
+ <span class="cline-any cline-no">&nbsp;</span>
75
77
  <span class="cline-any cline-no">&nbsp;</span>
76
78
  <span class="cline-any cline-no">&nbsp;</span>
77
79
  <span class="cline-any cline-no">&nbsp;</span>
@@ -81,11 +83,12 @@
81
83
  <span class="cline-any cline-no">&nbsp;</span>
82
84
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >export default function (app, options) {</span></span></span>
83
85
  <span class="cstat-no" title="statement not covered" > const db = options.db || app.db</span>
84
- <span class="cstat-no" title="statement not covered" > options.Model = db.collection('groups')</span>
86
+ <span class="cstat-no" title="statement not covered" > options.Model = db.collection('styles')</span>
85
87
  <span class="cstat-no" title="statement not covered" > // Collation provided in query ensure sorting to be case insensitive w.r.t. user's language</span>
86
88
  <span class="cstat-no" title="statement not covered" > // We built indices with collation to cover the most used languages, it requires different naming...</span>
87
89
  <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 1 }, { name: 'name-en', collation: { locale: 'en', strength: 1 } })</span>
88
90
  <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 1 }, { name: 'name-fr', collation: { locale: 'fr', strength: 1 } })</span>
91
+ <span class="cstat-no" title="statement not covered" > options.Model.createIndex({ name: 'text' })</span>
89
92
  <span class="cstat-no" title="statement not covered" >}</span>
90
93
  &nbsp;</pre></td></tr></table></pre>
91
94
 
@@ -94,7 +97,7 @@
94
97
  <div class='footer quiet pad2 space-top1 center small'>
95
98
  Code coverage generated by
96
99
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at 2024-08-13T10:02:04.872Z
100
+ at 2026-03-10T09:15:24.774Z
98
101
  </div>
99
102
  <script src="../../../prettify.js"></script>
100
103
  <script>
@@ -259,7 +259,7 @@
259
259
  <div class='footer quiet pad2 space-top1 center small'>
260
260
  Code coverage generated by
261
261
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
262
- at 2024-08-13T10:02:04.872Z
262
+ at 2026-03-10T09:15:24.774Z
263
263
  </div>
264
264
  <script src="../../../../prettify.js"></script>
265
265
  <script>
@@ -595,7 +595,7 @@
595
595
  <div class='footer quiet pad2 space-top1 center small'>
596
596
  Code coverage generated by
597
597
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
598
- at 2024-08-13T10:02:04.872Z
598
+ at 2026-03-10T09:15:24.774Z
599
599
  </div>
600
600
  <script src="../../../../prettify.js"></script>
601
601
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-08-13T10:02:04.872Z
119
+ at 2026-03-10T09:15:24.774Z
120
120
  </div>
121
121
  <script src="../../../../prettify.js"></script>
122
122
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/75</span>
28
+ <span class='fraction'>0/84</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/75</span>
49
+ <span class='fraction'>0/84</span>
50
50
  </div>
51
51
 
52
52
 
@@ -138,7 +138,25 @@
138
138
  <a name='L73'></a><a href='#L73'>73</a>
139
139
  <a name='L74'></a><a href='#L74'>74</a>
140
140
  <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
151
+ <span class="cline-any cline-no">&nbsp;</span>
152
+ <span class="cline-any cline-no">&nbsp;</span>
153
+ <span class="cline-any cline-no">&nbsp;</span>
154
+ <span class="cline-any cline-no">&nbsp;</span>
155
+ <span class="cline-any cline-no">&nbsp;</span>
156
+ <span class="cline-any cline-no">&nbsp;</span>
157
+ <span class="cline-any cline-no">&nbsp;</span>
158
+ <span class="cline-any cline-no">&nbsp;</span>
159
+ <span class="cline-any cline-no">&nbsp;</span>
142
160
  <span class="cline-any cline-no">&nbsp;</span>
143
161
  <span class="cline-any cline-no">&nbsp;</span>
144
162
  <span class="cline-any cline-no">&nbsp;</span>
@@ -217,7 +235,9 @@
217
235
  <span class="cstat-no" title="statement not covered" >import common from 'feathers-hooks-common'</span>
218
236
  <span class="cstat-no" title="statement not covered" >import fuzzySearch from 'feathers-mongodb-fuzzy-search'</span>
219
237
  <span class="cstat-no" title="statement not covered" >import { hooks as coreHooks } from '../../../../core/api/index.js'</span>
220
- <span class="cstat-no" title="statement not covered" >import { filterLayers, updateLayerReferences, updateProjects, getDefaultCategories, getDefaultSublegends } from '../../hooks/index.js'</span>
238
+ <span class="cstat-no" title="statement not covered" >import { filterLayers, updateLayerReferences, updateProjects,</span>
239
+ <span class="cstat-no" title="statement not covered" > getDefaultCategories, getDefaultSublegends, </span>
240
+ <span class="cstat-no" title="statement not covered" > convertFilterQueriesToString, convertFilterQueriesToObject } from '../../hooks/index.js'</span>
221
241
  <span class="cstat-no" title="statement not covered" ></span>
222
242
  <span class="cstat-no" title="statement not covered" >const { setNow, discard, when } = common</span>
223
243
  <span class="cstat-no" title="statement not covered" ></span>
@@ -225,12 +245,16 @@
225
245
  <span class="cstat-no" title="statement not covered" > before: {</span>
226
246
  <span class="cstat-no" title="statement not covered" > all: [coreHooks.marshallHttpQuery],</span>
227
247
  <span class="cstat-no" title="statement not covered" > find: [</span>
228
- <span class="cstat-no" title="statement not covered" > fuzzySearch({ fields: ['name'] }), coreHooks.diacriticSearch(), filterLayers, coreHooks.distinct</span>
248
+ <span class="cstat-no" title="statement not covered" > fuzzySearch({ fields: ['name', 'label'] }), coreHooks.diacriticSearch(), filterLayers, coreHooks.distinct</span>
229
249
  <span class="cstat-no" title="statement not covered" > ],</span>
230
250
  <span class="cstat-no" title="statement not covered" > get: [],</span>
231
251
  <span class="cstat-no" title="statement not covered" > create: [</span>
232
252
  <span class="cstat-no" title="statement not covered" > coreHooks.checkUnique({ field: 'name', query: (query, hook) =&gt; { query.type = _.get(hook, 'data.type') } }),</span>
233
- <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),</span>
253
+ <span class="cstat-no" title="statement not covered" > // Usually conversion of _id to ObjectID is performed by an app-evel hook, which is not yet setup when creating the service.</span>
254
+ <span class="cstat-no" title="statement not covered" > // As we can create features when initializing layer service/data we add it here as well to ensure it will work fine anyway.</span>
255
+ <span class="cstat-no" title="statement not covered" > coreHooks.convertObjectIDs(['_id']),</span>
256
+ <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content']),</span>
257
+ <span class="cstat-no" title="statement not covered" > convertFilterQueriesToString,</span>
234
258
  <span class="cstat-no" title="statement not covered" > setNow('createdAt', 'updatedAt'),</span>
235
259
  <span class="cstat-no" title="statement not covered" > // This allow to use keys for base queries like 'properties.xxx': 'yyy'</span>
236
260
  <span class="cstat-no" title="statement not covered" > (hook) =&gt; { _.set(hook, 'params.mongodb.checkKeys', false) }</span>
@@ -238,14 +262,16 @@
238
262
  <span class="cstat-no" title="statement not covered" > update: [</span>
239
263
  <span class="cstat-no" title="statement not covered" > coreHooks.populatePreviousObject,</span>
240
264
  <span class="cstat-no" title="statement not covered" > coreHooks.checkUnique({ field: 'name', query: (query, hook) =&gt; { query.type = _.get(hook, 'params.previousItem.type') } }),</span>
241
- <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),</span>
265
+ <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content']),</span>
266
+ <span class="cstat-no" title="statement not covered" > convertFilterQueriesToString,</span>
242
267
  <span class="cstat-no" title="statement not covered" > discard('createdAt', 'updatedAt'),</span>
243
268
  <span class="cstat-no" title="statement not covered" > setNow('updatedAt')</span>
244
269
  <span class="cstat-no" title="statement not covered" > ],</span>
245
270
  <span class="cstat-no" title="statement not covered" > patch: [</span>
246
271
  <span class="cstat-no" title="statement not covered" > coreHooks.populatePreviousObject,</span>
247
272
  <span class="cstat-no" title="statement not covered" > coreHooks.checkUnique({ field: 'name', query: (query, hook) =&gt; { query.type = _.get(hook, 'params.previousItem.type') } }),</span>
248
- <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),</span>
273
+ <span class="cstat-no" title="statement not covered" > coreHooks.convertToString(['baseQuery', 'schema.content']),</span>
274
+ <span class="cstat-no" title="statement not covered" > convertFilterQueriesToString,</span>
249
275
  <span class="cstat-no" title="statement not covered" > discard('createdAt', 'updatedAt'),</span>
250
276
  <span class="cstat-no" title="statement not covered" > setNow('updatedAt')</span>
251
277
  <span class="cstat-no" title="statement not covered" > ],</span>
@@ -256,12 +282,13 @@
256
282
  <span class="cstat-no" title="statement not covered" ></span>
257
283
  <span class="cstat-no" title="statement not covered" > after: {</span>
258
284
  <span class="cstat-no" title="statement not covered" > all: [</span>
259
- <span class="cstat-no" title="statement not covered" > coreHooks.convertToJson(['baseQuery', 'schema.content', 'filters']),</span>
285
+ <span class="cstat-no" title="statement not covered" > coreHooks.convertToJson(['baseQuery', 'schema.content']),</span>
286
+ <span class="cstat-no" title="statement not covered" > convertFilterQueriesToObject,</span>
260
287
  <span class="cstat-no" title="statement not covered" > coreHooks.convertObjectIDs(['baseQuery.layer'])</span>
261
288
  <span class="cstat-no" title="statement not covered" > ],</span>
262
289
  <span class="cstat-no" title="statement not covered" > find: [</span>
263
- <span class="cstat-no" title="statement not covered" > // Merge built-in categoriessublegends with user-defined ones for global catalog only</span>
264
- <span class="cstat-no" title="statement not covered" > when(hook =&gt; !hook.service.getContextId(), getDefaultCategories, getDefaultSublegends)</span>
290
+ <span class="cstat-no" title="statement not covered" > // Merge built-in categories/sublegends (if provided) with user-defined ones</span>
291
+ <span class="cstat-no" title="statement not covered" > getDefaultCategories, getDefaultSublegends</span>
265
292
  <span class="cstat-no" title="statement not covered" > ],</span>
266
293
  <span class="cstat-no" title="statement not covered" > get: [],</span>
267
294
  <span class="cstat-no" title="statement not covered" > create: [],</span>
@@ -295,7 +322,7 @@
295
322
  <div class='footer quiet pad2 space-top1 center small'>
296
323
  Code coverage generated by
297
324
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
298
- at 2024-08-13T10:02:04.872Z
325
+ at 2026-03-10T09:15:24.774Z
299
326
  </div>
300
327
  <script src="../../../../prettify.js"></script>
301
328
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/75</span>
28
+ <span class='fraction'>0/84</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/75</span>
49
+ <span class='fraction'>0/84</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
85
  </td>
86
86
  <td data-value="0" class="pct low">0%</td>
87
- <td data-value="75" class="abs low">0/75</td>
87
+ <td data-value="84" class="abs low">0/84</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
89
  <td data-value="1" class="abs low">0/1</td>
90
90
  <td data-value="0" class="pct low">0%</td>
91
91
  <td data-value="1" class="abs low">0/1</td>
92
92
  <td data-value="0" class="pct low">0%</td>
93
- <td data-value="75" class="abs low">0/75</td>
93
+ <td data-value="84" class="abs low">0/84</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-13T10:02:04.872Z
104
+ at 2026-03-10T09:15:24.774Z
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>
@@ -1495,7 +1495,7 @@
1495
1495
  <div class='footer quiet pad2 space-top1 center small'>
1496
1496
  Code coverage generated by
1497
1497
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1498
- at 2024-08-13T10:02:04.872Z
1498
+ at 2026-03-10T09:15:24.774Z
1499
1499
  </div>
1500
1500
  <script src="../../../../prettify.js"></script>
1501
1501
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-13T10:02:04.872Z
104
+ at 2026-03-10T09:15:24.774Z
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>