@kalisio/kdk 2.5.2 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/core/client/components/input/KShapePicker.vue +4 -4
  2. package/coverage/core/api/application.js.html +344 -344
  3. package/coverage/core/api/authentication.js.html +79 -79
  4. package/coverage/core/api/db.js.html +167 -167
  5. package/coverage/core/api/hooks/hooks.authentication.js.html +12 -12
  6. package/coverage/core/api/hooks/hooks.authorisations.js.html +166 -163
  7. package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
  8. package/coverage/core/api/hooks/hooks.logger.js.html +18 -18
  9. package/coverage/core/api/hooks/hooks.model.js.html +280 -268
  10. package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
  11. package/coverage/core/api/hooks/hooks.push.js.html +12 -12
  12. package/coverage/core/api/hooks/hooks.query.js.html +92 -92
  13. package/coverage/core/api/hooks/hooks.schemas.js.html +13 -13
  14. package/coverage/core/api/hooks/hooks.service.js.html +28 -28
  15. package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
  16. package/coverage/core/api/hooks/hooks.users.js.html +48 -48
  17. package/coverage/core/api/hooks/index.html +49 -49
  18. package/coverage/core/api/hooks/index.js.html +11 -11
  19. package/coverage/core/api/index.html +42 -42
  20. package/coverage/core/api/index.js.html +22 -22
  21. package/coverage/core/api/marshall.js.html +127 -127
  22. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  23. package/coverage/core/api/models/index.html +1 -1
  24. package/coverage/core/api/models/messages.model.mongodb.js.html +1 -1
  25. package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
  26. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  27. package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
  28. package/coverage/core/api/services/account/account.hooks.js.html +42 -42
  29. package/coverage/core/api/services/account/account.service.js.html +34 -34
  30. package/coverage/core/api/services/account/index.html +1 -1
  31. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  32. package/coverage/core/api/services/authorisations/authorisations.service.js.html +108 -120
  33. package/coverage/core/api/services/authorisations/index.html +19 -19
  34. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  35. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  36. package/coverage/core/api/services/databases/index.html +1 -1
  37. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  38. package/coverage/core/api/services/groups/index.html +1 -1
  39. package/coverage/core/api/services/import-export/import-export.hooks.js.html +1 -1
  40. package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
  41. package/coverage/core/api/services/import-export/index.html +1 -1
  42. package/coverage/core/api/services/index.html +15 -15
  43. package/coverage/core/api/services/index.js.html +97 -85
  44. package/coverage/core/api/services/mailer/index.html +1 -1
  45. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  46. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  47. package/coverage/core/api/services/messages/index.html +5 -5
  48. package/coverage/core/api/services/messages/messages.hooks.js.html +11 -8
  49. package/coverage/core/api/services/organisations/index.html +1 -1
  50. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  51. package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
  52. package/coverage/core/api/services/push/index.html +1 -1
  53. package/coverage/core/api/services/push/push.hooks.js.html +1 -1
  54. package/coverage/core/api/services/push/push.service.js.html +1 -1
  55. package/coverage/core/api/services/storage/index.html +1 -1
  56. package/coverage/core/api/services/storage/storage.hooks.js.html +36 -36
  57. package/coverage/core/api/services/storage/storage.service.js.html +30 -30
  58. package/coverage/core/api/services/tags/index.html +1 -1
  59. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  60. package/coverage/core/api/services/users/index.html +7 -7
  61. package/coverage/core/api/services/users/users.hooks.js.html +83 -80
  62. package/coverage/core/api/services/users/users.service.js.html +4 -4
  63. package/coverage/core/api/utils.js.html +1 -1
  64. package/coverage/core/common/errors.js.html +2 -2
  65. package/coverage/core/common/index.html +30 -30
  66. package/coverage/core/common/index.js.html +11 -11
  67. package/coverage/core/common/permissions.js.html +187 -187
  68. package/coverage/core/common/schema.js.html +26 -26
  69. package/coverage/core/common/utils.js.html +61 -61
  70. package/coverage/core/common/utils.offline.js.html +6 -6
  71. package/coverage/index.html +179 -164
  72. package/coverage/lcov-report/core/api/application.js.html +344 -344
  73. package/coverage/lcov-report/core/api/authentication.js.html +79 -79
  74. package/coverage/lcov-report/core/api/db.js.html +167 -167
  75. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +12 -12
  76. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +166 -163
  77. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
  78. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +18 -18
  79. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +280 -268
  80. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
  81. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +12 -12
  82. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +92 -92
  83. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +13 -13
  84. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
  85. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
  86. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +48 -48
  87. package/coverage/lcov-report/core/api/hooks/index.html +49 -49
  88. package/coverage/lcov-report/core/api/hooks/index.js.html +11 -11
  89. package/coverage/lcov-report/core/api/index.html +42 -42
  90. package/coverage/lcov-report/core/api/index.js.html +22 -22
  91. package/coverage/lcov-report/core/api/marshall.js.html +127 -127
  92. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  93. package/coverage/lcov-report/core/api/models/index.html +1 -1
  94. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +1 -1
  95. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
  96. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  97. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
  98. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +42 -42
  99. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  100. package/coverage/lcov-report/core/api/services/account/index.html +1 -1
  101. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
  102. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +108 -120
  103. package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
  104. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  105. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  106. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  107. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  108. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  109. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
  110. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
  111. package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
  112. package/coverage/lcov-report/core/api/services/index.html +15 -15
  113. package/coverage/lcov-report/core/api/services/index.js.html +97 -85
  114. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  115. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  116. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  117. package/coverage/lcov-report/core/api/services/messages/index.html +5 -5
  118. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +11 -8
  119. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  120. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  121. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
  122. package/coverage/lcov-report/core/api/services/push/index.html +1 -1
  123. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
  124. package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
  125. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  126. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +36 -36
  127. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +30 -30
  128. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  129. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  130. package/coverage/lcov-report/core/api/services/users/index.html +7 -7
  131. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +83 -80
  132. package/coverage/lcov-report/core/api/services/users/users.service.js.html +4 -4
  133. package/coverage/lcov-report/core/api/utils.js.html +1 -1
  134. package/coverage/lcov-report/core/common/errors.js.html +2 -2
  135. package/coverage/lcov-report/core/common/index.html +30 -30
  136. package/coverage/lcov-report/core/common/index.js.html +11 -11
  137. package/coverage/lcov-report/core/common/permissions.js.html +187 -187
  138. package/coverage/lcov-report/core/common/schema.js.html +26 -26
  139. package/coverage/lcov-report/core/common/utils.js.html +61 -61
  140. package/coverage/lcov-report/core/common/utils.offline.js.html +6 -6
  141. package/coverage/lcov-report/index.html +179 -164
  142. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +348 -258
  143. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
  144. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +795 -810
  145. package/coverage/lcov-report/map/api/hooks/index.html +54 -54
  146. package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
  147. package/coverage/lcov-report/map/api/index.html +32 -32
  148. package/coverage/lcov-report/map/api/index.js.html +46 -46
  149. package/coverage/lcov-report/map/api/marshall.js.html +72 -72
  150. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
  151. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +69 -27
  152. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
  153. package/coverage/lcov-report/map/api/models/index.html +69 -54
  154. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
  155. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +112 -0
  156. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
  158. package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
  159. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +177 -162
  160. package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
  161. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  162. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  163. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +160 -160
  164. package/coverage/lcov-report/map/api/services/features/features.service.js.html +117 -117
  165. package/coverage/lcov-report/map/api/services/features/index.html +31 -31
  166. package/coverage/lcov-report/map/api/services/index.html +21 -21
  167. package/coverage/lcov-report/map/api/services/index.js.html +404 -296
  168. package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
  169. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
  170. package/coverage/lcov-report/map/api/services/styles/index.html +116 -0
  171. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
  172. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  173. package/coverage/lcov-report/map/common/errors.js.html +16 -16
  174. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -267
  175. package/coverage/lcov-report/map/common/grid.js.html +554 -554
  176. package/coverage/lcov-report/map/common/index.html +158 -158
  177. package/coverage/lcov-report/map/common/index.js.html +68 -68
  178. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
  179. package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
  180. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
  181. package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
  182. package/coverage/lcov-report/map/common/permissions.js.html +42 -36
  183. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
  184. package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
  185. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
  186. package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
  187. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
  188. package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
  189. package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
  190. package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
  191. package/coverage/lcov.info +7022 -5894
  192. package/coverage/map/api/hooks/hooks.catalog.js.html +348 -258
  193. package/coverage/map/api/hooks/hooks.features.js.html +218 -218
  194. package/coverage/map/api/hooks/hooks.query.js.html +795 -810
  195. package/coverage/map/api/hooks/index.html +54 -54
  196. package/coverage/map/api/hooks/index.js.html +16 -16
  197. package/coverage/map/api/index.html +32 -32
  198. package/coverage/map/api/index.js.html +46 -46
  199. package/coverage/map/api/marshall.js.html +72 -72
  200. package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
  201. package/coverage/map/api/models/catalog.model.mongodb.js.html +69 -27
  202. package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
  203. package/coverage/map/api/models/index.html +69 -54
  204. package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
  205. package/coverage/map/api/models/styles.model.mongodb.js.html +112 -0
  206. package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
  207. package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
  208. package/coverage/map/api/services/alerts/index.html +32 -32
  209. package/coverage/map/api/services/catalog/catalog.hooks.js.html +177 -162
  210. package/coverage/map/api/services/catalog/index.html +21 -21
  211. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  212. package/coverage/map/api/services/daptiles/index.html +1 -1
  213. package/coverage/map/api/services/features/features.hooks.js.html +160 -160
  214. package/coverage/map/api/services/features/features.service.js.html +117 -117
  215. package/coverage/map/api/services/features/index.html +31 -31
  216. package/coverage/map/api/services/index.html +21 -21
  217. package/coverage/map/api/services/index.js.html +404 -296
  218. package/coverage/map/api/services/projects/index.html +21 -21
  219. package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
  220. package/coverage/map/api/services/styles/index.html +116 -0
  221. package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
  222. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  223. package/coverage/map/common/errors.js.html +16 -16
  224. package/coverage/map/common/geotiff-grid-source.js.html +267 -267
  225. package/coverage/map/common/grid.js.html +554 -554
  226. package/coverage/map/common/index.html +158 -158
  227. package/coverage/map/common/index.js.html +68 -68
  228. package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
  229. package/coverage/map/common/moment-utils.js.html +18 -18
  230. package/coverage/map/common/opendap-grid-source.js.html +484 -484
  231. package/coverage/map/common/opendap-utils.js.html +353 -353
  232. package/coverage/map/common/permissions.js.html +42 -36
  233. package/coverage/map/common/time-based-grid-source.js.html +59 -59
  234. package/coverage/map/common/tms-utils.js.html +6 -6
  235. package/coverage/map/common/wcs-grid-source.js.html +190 -190
  236. package/coverage/map/common/wcs-utils.js.html +339 -339
  237. package/coverage/map/common/weacast-grid-source.js.html +345 -345
  238. package/coverage/map/common/wfs-utils.js.html +11 -11
  239. package/coverage/map/common/wms-utils.js.html +8 -8
  240. package/coverage/map/common/wmts-utils.js.html +7 -7
  241. package/coverage/tmp/coverage-151198-1753351220086-0.json +1 -0
  242. package/coverage/tmp/coverage-151210-1753351220070-0.json +1 -0
  243. package/coverage/tmp/coverage-151221-1753351129816-0.json +1 -0
  244. package/coverage/tmp/coverage-151233-1753351129803-0.json +1 -0
  245. package/coverage/tmp/coverage-151240-1753351129770-0.json +1 -0
  246. package/coverage/tmp/coverage-151307-1753351220058-0.json +1 -0
  247. package/coverage/tmp/coverage-151319-1753351220044-0.json +1 -0
  248. package/coverage/tmp/coverage-151326-1753351220010-0.json +1 -0
  249. package/map/api/services/styles/styles.hooks.js +1 -1
  250. package/map/client/components/KLayerEditor.vue +4 -0
  251. package/map/client/components/catalog/KLayerCategories.vue +2 -0
  252. package/map/client/components/stickies/KLevelSlider.vue +10 -8
  253. package/map/client/components/styles/KStyleEditor.vue +1 -1
  254. package/map/client/components/styles/KStyleManager.vue +7 -1
  255. package/map/client/composables/highlight.js +5 -1
  256. package/map/client/i18n/map_en.json +4 -1
  257. package/map/client/i18n/map_fr.json +4 -1
  258. package/map/client/mixins/globe/mixin.geojson-layers.js +11 -5
  259. package/map/client/mixins/mixin.activity.js +9 -0
  260. package/map/client/utils/utils.layers.js +0 -2
  261. package/package.json +1 -1
  262. package/test/api/core/push.test.js +1 -1
  263. package/test/api/core/test-log-2025-02-05.log +23 -0
  264. package/test/api/core/test-log-2025-05-21.log +15 -0
  265. package/test/api/core/test-log-2025-06-25.log +9 -0
  266. package/test/api/core/test-log-2025-07-24.log +44 -0
  267. package/test/api/map/test-log-2025-05-27.log +13 -0
  268. package/test/api/map/test-log-2025-06-23.log +7 -0
  269. package/test/api/map/{test-log-2025-05-26.log → test-log-2025-07-24.log} +3 -4
  270. package/coverage/tmp/coverage-122123-1739872365211-0.json +0 -1
  271. package/coverage/tmp/coverage-122135-1739872365196-0.json +0 -1
  272. package/coverage/tmp/coverage-122146-1739872365184-0.json +0 -1
  273. package/coverage/tmp/coverage-122158-1739872365169-0.json +0 -1
  274. package/coverage/tmp/coverage-122165-1739872365141-0.json +0 -1
  275. package/test/api/core/test-log-2025-05-26.log +0 -22
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/104</span>
28
+ <span class='fraction'>104/104</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">90% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
35
+ <span class='fraction'>27/30</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>7/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/104</span>
49
+ <span class='fraction'>104/104</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <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>
@@ -167,214 +167,214 @@
167
167
  <a name='L102'></a><a href='#L102'>102</a>
168
168
  <a name='L103'></a><a href='#L103'>103</a>
169
169
  <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
171
- <span class="cline-any cline-no">&nbsp;</span>
172
- <span class="cline-any cline-no">&nbsp;</span>
173
- <span class="cline-any cline-no">&nbsp;</span>
174
- <span class="cline-any cline-no">&nbsp;</span>
175
- <span class="cline-any cline-no">&nbsp;</span>
176
- <span class="cline-any cline-no">&nbsp;</span>
177
- <span class="cline-any cline-no">&nbsp;</span>
178
- <span class="cline-any cline-no">&nbsp;</span>
179
- <span class="cline-any cline-no">&nbsp;</span>
180
- <span class="cline-any cline-no">&nbsp;</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-no">&nbsp;</span>
183
- <span class="cline-any cline-no">&nbsp;</span>
184
- <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-no">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
201
- <span class="cline-any cline-no">&nbsp;</span>
202
- <span class="cline-any cline-no">&nbsp;</span>
203
- <span class="cline-any cline-no">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
207
- <span class="cline-any cline-no">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-no">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-no">&nbsp;</span>
215
- <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-no">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-no">&nbsp;</span>
233
- <span class="cline-any cline-no">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
237
- <span class="cline-any cline-no">&nbsp;</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-no">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
273
- <span class="cline-any cline-no">&nbsp;</span>
274
- <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>
275
- <span class="cstat-no" title="statement not covered" >import moment from 'moment'</span>
276
- <span class="cstat-no" title="statement not covered" >import bbox from '@turf/bbox'</span>
277
- <span class="cstat-no" title="statement not covered" >import makeDebug from 'debug'</span>
278
- <span class="cstat-no" title="statement not covered" >import feathers from '@feathersjs/feathers'</span>
279
- <span class="cstat-no" title="statement not covered" >import common from 'feathers-hooks-common'</span>
280
- <span class="cstat-no" title="statement not covered" >import mongodbFuzzySearch from 'feathers-mongodb-fuzzy-search'</span>
281
- <span class="cstat-no" title="statement not covered" >import { hooks as coreHooks, unmarshallTime } from '../../../core/api/index.js'</span>
282
- <span class="cstat-no" title="statement not covered" ></span>
283
- <span class="cstat-no" title="statement not covered" >const { defaultEventMap } = feathers</span>
284
- <span class="cstat-no" title="statement not covered" >const { iff, getItems, replaceItems } = common</span>
285
- <span class="cstat-no" title="statement not covered" >const debug = makeDebug('kdk:map:features:hooks')</span>
286
- <span class="cstat-no" title="statement not covered" ></span>
287
- <span class="cstat-no" title="statement not covered" >function getTimeRange (features) {</span>
288
- <span class="cstat-no" title="statement not covered" > let startTime, endTime</span>
289
- <span class="cstat-no" title="statement not covered" > features.forEach(feature =&gt; {</span>
290
- <span class="cstat-no" title="statement not covered" > if (feature.time) {</span>
291
- <span class="cstat-no" title="statement not covered" > const time = moment.utc(feature.time)</span>
292
- <span class="cstat-no" title="statement not covered" > if (!startTime || time.isBefore(startTime)) startTime = time</span>
293
- <span class="cstat-no" title="statement not covered" > if (!endTime || time.isAfter(endTime)) endTime = time</span>
294
- <span class="cstat-no" title="statement not covered" > }</span>
295
- <span class="cstat-no" title="statement not covered" > })</span>
296
- <span class="cstat-no" title="statement not covered" > return { startTime, endTime }</span>
297
- <span class="cstat-no" title="statement not covered" >}</span>
298
- <span class="cstat-no" title="statement not covered" ></span>
299
- <span class="cstat-no" title="statement not covered" >function getBBox (features) {</span>
300
- <span class="cstat-no" title="statement not covered" > return bbox({ type: 'FeatureCollection', features })</span>
301
- <span class="cstat-no" title="statement not covered" >}</span>
302
- <span class="cstat-no" title="statement not covered" ></span>
303
- <span class="cstat-no" title="statement not covered" >function getLayers (features) {</span>
304
- <span class="cstat-no" title="statement not covered" > return _.union(features.filter(feature =&gt; feature.layer).map(feature =&gt; feature.layer))</span>
305
- <span class="cstat-no" title="statement not covered" >}</span>
306
- <span class="cstat-no" title="statement not covered" ></span>
307
- <span class="cstat-no" title="statement not covered" >export function simplifyResult (hook) {</span>
308
- <span class="cstat-no" title="statement not covered" > // Force full result emission ?</span>
309
- <span class="cstat-no" title="statement not covered" > const fullResult = _.get(hook, 'params.fullResult')</span>
310
- <span class="cstat-no" title="statement not covered" > if (fullResult) return hook</span>
311
- <span class="cstat-no" title="statement not covered" > const service = hook.service</span>
312
- <span class="cstat-no" title="statement not covered" > const method = hook.method</span>
313
- <span class="cstat-no" title="statement not covered" > const result = getItems(hook)</span>
314
- <span class="cstat-no" title="statement not covered" > const simplifyResult = _.get(service, 'options.simplifyResult', ['create', 'update', 'patch', 'remove'])</span>
315
- <span class="cstat-no" title="statement not covered" > const simplifyResultLimit = _.get(service, 'options.simplifyResultLimit', 1)</span>
316
- <span class="cstat-no" title="statement not covered" > // Only keep track of object IDs so that caller can at least get them if required</span>
317
- <span class="cstat-no" title="statement not covered" > if (simplifyResult.includes(method) &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; simplifyResultLimit)) {</span>
318
- <span class="cstat-no" title="statement not covered" > debug(`Simplifying multi result for ${method} method on service ${service.name}`)</span>
319
- <span class="cstat-no" title="statement not covered" > replaceItems(hook, result.map(item =&gt; ({ _id: item._id })))</span>
320
- <span class="cstat-no" title="statement not covered" > }</span>
321
- <span class="cstat-no" title="statement not covered" > return hook</span>
322
- <span class="cstat-no" title="statement not covered" >}</span>
323
- <span class="cstat-no" title="statement not covered" ></span>
324
- <span class="cstat-no" title="statement not covered" >export function skipEvents (hook) {</span>
325
- <span class="cstat-no" title="statement not covered" > // Force standard event emission ?</span>
326
- <span class="cstat-no" title="statement not covered" > const emitEvents = _.get(hook, 'params.emitEvents')</span>
327
- <span class="cstat-no" title="statement not covered" > if (emitEvents) return hook</span>
328
- <span class="cstat-no" title="statement not covered" > const service = hook.service</span>
329
- <span class="cstat-no" title="statement not covered" > const method = hook.method</span>
330
- <span class="cstat-no" title="statement not covered" > const event = defaultEventMap[method]</span>
331
- <span class="cstat-no" title="statement not covered" > const result = getItems(hook)</span>
332
- <span class="cstat-no" title="statement not covered" > const skipEvents = _.get(service, 'options.skipEvents', ['created', 'updated', 'patched', 'removed'])</span>
333
- <span class="cstat-no" title="statement not covered" > const simplifyEvents = _.get(service, 'options.simplifyEvents', [])</span>
334
- <span class="cstat-no" title="statement not covered" > // Even if we emit simplified events we skip standard feathers events to emit our own version</span>
335
- <span class="cstat-no" title="statement not covered" > let skip = skipEvents.includes(event) || simplifyEvents.includes(event)</span>
336
- <span class="cstat-no" title="statement not covered" > const skipEventsLimit = _.get(service, 'options.skipEventsLimit', 1)</span>
337
- <span class="cstat-no" title="statement not covered" > skip = skip &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; skipEventsLimit)</span>
338
- <span class="cstat-no" title="statement not covered" > if (skip) debug(`Skipping standard event ${event} for multi operation on service ${service.name}`)</span>
339
- <span class="cstat-no" title="statement not covered" > return iff(hook =&gt; skip, coreHooks.skipEvents)(hook)</span>
340
- <span class="cstat-no" title="statement not covered" >}</span>
341
- <span class="cstat-no" title="statement not covered" ></span>
342
- <span class="cstat-no" title="statement not covered" >export function simplifyEvents (hook) {</span>
343
- <span class="cstat-no" title="statement not covered" > // Force standard event emission ?</span>
344
- <span class="cstat-no" title="statement not covered" > const emitEvents = _.get(hook, 'params.emitEvents')</span>
345
- <span class="cstat-no" title="statement not covered" > if (emitEvents) return hook</span>
346
- <span class="cstat-no" title="statement not covered" > const service = hook.service</span>
347
- <span class="cstat-no" title="statement not covered" > const params = hook.params</span>
348
- <span class="cstat-no" title="statement not covered" > const data = hook.data</span>
349
- <span class="cstat-no" title="statement not covered" > const query = params.query || {}</span>
350
- <span class="cstat-no" title="statement not covered" > unmarshallTime(query, 'time')</span>
351
- <span class="cstat-no" title="statement not covered" > const method = hook.method</span>
352
- <span class="cstat-no" title="statement not covered" > const event = defaultEventMap[method]</span>
353
- <span class="cstat-no" title="statement not covered" > const result = getItems(hook)</span>
354
- <span class="cstat-no" title="statement not covered" > const simplifyEvents = _.get(service, 'options.simplifyEvents', [])</span>
355
- <span class="cstat-no" title="statement not covered" > const simplifyEventsLimit = _.get(service, 'options.simplifyEventsLimit', 1)</span>
356
- <span class="cstat-no" title="statement not covered" > if (simplifyEvents.includes(event) &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; simplifyEventsLimit)) {</span>
357
- <span class="cstat-no" title="statement not covered" > debug(`Simplifying event ${event} for multi operation on service ${service.name}`)</span>
358
- <span class="cstat-no" title="statement not covered" > // Keep track of query selector when updating/patching/removing in batch</span>
359
- <span class="cstat-no" title="statement not covered" > const payload = (event === 'created' ? {} : { data })</span>
360
- <span class="cstat-no" title="statement not covered" > // Add information about updated time range/spatial extent so that client can decide what to do</span>
361
- <span class="cstat-no" title="statement not covered" > Object.assign(payload, {</span>
362
- <span class="cstat-no" title="statement not covered" > query,</span>
363
- <span class="cstat-no" title="statement not covered" > total: result.length,</span>
364
- <span class="cstat-no" title="statement not covered" > bbox: getBBox(result),</span>
365
- <span class="cstat-no" title="statement not covered" > layers: getLayers(result)</span>
366
- <span class="cstat-no" title="statement not covered" > }, getTimeRange(result))</span>
367
- <span class="cstat-no" title="statement not covered" > service.emit(event, payload)</span>
368
- <span class="cstat-no" title="statement not covered" > }</span>
369
- <span class="cstat-no" title="statement not covered" > return hook</span>
370
- <span class="cstat-no" title="statement not covered" >}</span>
371
- <span class="cstat-no" title="statement not covered" ></span>
372
- <span class="cstat-no" title="statement not covered" >export function fuzzySearch (hook) {</span>
373
- <span class="cstat-no" title="statement not covered" > const service = hook.service</span>
374
- <span class="cstat-no" title="statement not covered" > const featureLabel = _.castArray(_.get(service, 'options.featureLabel', []))</span>
375
- <span class="cstat-no" title="statement not covered" > const fields = featureLabel.map((prop) =&gt; 'properties.' + prop)</span>
376
- <span class="cstat-no" title="statement not covered" > return featureLabel.length ? mongodbFuzzySearch({ fields: fields })(hook) : hook</span>
377
- <span class="cstat-no" title="statement not covered" >}</span>
170
+ <a name='L105'></a><a href='#L105'>105</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
171
+ <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-yes">1x</span>
173
+ <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">1x</span>
175
+ <span class="cline-any cline-yes">1x</span>
176
+ <span class="cline-any cline-yes">1x</span>
177
+ <span class="cline-any cline-yes">1x</span>
178
+ <span class="cline-any cline-yes">1x</span>
179
+ <span class="cline-any cline-yes">1x</span>
180
+ <span class="cline-any cline-yes">1x</span>
181
+ <span class="cline-any cline-yes">1x</span>
182
+ <span class="cline-any cline-yes">1x</span>
183
+ <span class="cline-any cline-yes">4x</span>
184
+ <span class="cline-any cline-yes">4x</span>
185
+ <span class="cline-any cline-yes">4x</span>
186
+ <span class="cline-any cline-yes">2694x</span>
187
+ <span class="cline-any cline-yes">2694x</span>
188
+ <span class="cline-any cline-yes">2694x</span>
189
+ <span class="cline-any cline-yes">2694x</span>
190
+ <span class="cline-any cline-yes">2694x</span>
191
+ <span class="cline-any cline-yes">4x</span>
192
+ <span class="cline-any cline-yes">4x</span>
193
+ <span class="cline-any cline-yes">4x</span>
194
+ <span class="cline-any cline-yes">1x</span>
195
+ <span class="cline-any cline-yes">4x</span>
196
+ <span class="cline-any cline-yes">4x</span>
197
+ <span class="cline-any cline-yes">4x</span>
198
+ <span class="cline-any cline-yes">1x</span>
199
+ <span class="cline-any cline-yes">4x</span>
200
+ <span class="cline-any cline-yes">4x</span>
201
+ <span class="cline-any cline-yes">4x</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
+ <span class="cline-any cline-yes">1x</span>
204
+ <span class="cline-any cline-yes">10x</span>
205
+ <span class="cline-any cline-yes">10x</span>
206
+ <span class="cline-any cline-yes">10x</span>
207
+ <span class="cline-any cline-yes">10x</span>
208
+ <span class="cline-any cline-yes">10x</span>
209
+ <span class="cline-any cline-yes">10x</span>
210
+ <span class="cline-any cline-yes">10x</span>
211
+ <span class="cline-any cline-yes">10x</span>
212
+ <span class="cline-any cline-yes">10x</span>
213
+ <span class="cline-any cline-yes">10x</span>
214
+ <span class="cline-any cline-yes">9x</span>
215
+ <span class="cline-any cline-yes">9x</span>
216
+ <span class="cline-any cline-yes">9x</span>
217
+ <span class="cline-any cline-yes">10x</span>
218
+ <span class="cline-any cline-yes">10x</span>
219
+ <span class="cline-any cline-yes">1x</span>
220
+ <span class="cline-any cline-yes">1x</span>
221
+ <span class="cline-any cline-yes">10x</span>
222
+ <span class="cline-any cline-yes">10x</span>
223
+ <span class="cline-any cline-yes">10x</span>
224
+ <span class="cline-any cline-yes">10x</span>
225
+ <span class="cline-any cline-yes">10x</span>
226
+ <span class="cline-any cline-yes">10x</span>
227
+ <span class="cline-any cline-yes">10x</span>
228
+ <span class="cline-any cline-yes">10x</span>
229
+ <span class="cline-any cline-yes">10x</span>
230
+ <span class="cline-any cline-yes">10x</span>
231
+ <span class="cline-any cline-yes">10x</span>
232
+ <span class="cline-any cline-yes">10x</span>
233
+ <span class="cline-any cline-yes">10x</span>
234
+ <span class="cline-any cline-yes">10x</span>
235
+ <span class="cline-any cline-yes">10x</span>
236
+ <span class="cline-any cline-yes">10x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">10x</span>
240
+ <span class="cline-any cline-yes">10x</span>
241
+ <span class="cline-any cline-yes">10x</span>
242
+ <span class="cline-any cline-yes">10x</span>
243
+ <span class="cline-any cline-yes">10x</span>
244
+ <span class="cline-any cline-yes">10x</span>
245
+ <span class="cline-any cline-yes">10x</span>
246
+ <span class="cline-any cline-yes">10x</span>
247
+ <span class="cline-any cline-yes">10x</span>
248
+ <span class="cline-any cline-yes">10x</span>
249
+ <span class="cline-any cline-yes">10x</span>
250
+ <span class="cline-any cline-yes">10x</span>
251
+ <span class="cline-any cline-yes">10x</span>
252
+ <span class="cline-any cline-yes">10x</span>
253
+ <span class="cline-any cline-yes">4x</span>
254
+ <span class="cline-any cline-yes">4x</span>
255
+ <span class="cline-any cline-yes">4x</span>
256
+ <span class="cline-any cline-yes">4x</span>
257
+ <span class="cline-any cline-yes">4x</span>
258
+ <span class="cline-any cline-yes">4x</span>
259
+ <span class="cline-any cline-yes">4x</span>
260
+ <span class="cline-any cline-yes">4x</span>
261
+ <span class="cline-any cline-yes">4x</span>
262
+ <span class="cline-any cline-yes">4x</span>
263
+ <span class="cline-any cline-yes">4x</span>
264
+ <span class="cline-any cline-yes">4x</span>
265
+ <span class="cline-any cline-yes">10x</span>
266
+ <span class="cline-any cline-yes">10x</span>
267
+ <span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-yes">1x</span>
269
+ <span class="cline-any cline-yes">36x</span>
270
+ <span class="cline-any cline-yes">36x</span>
271
+ <span class="cline-any cline-yes">36x</span>
272
+ <span class="cline-any cline-yes">36x</span>
273
+ <span class="cline-any cline-yes">36x</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
275
+ import moment from 'moment'
276
+ import bbox from '@turf/bbox'
277
+ import makeDebug from 'debug'
278
+ import feathers from '@feathersjs/feathers'
279
+ import common from 'feathers-hooks-common'
280
+ import mongodbFuzzySearch from 'feathers-mongodb-fuzzy-search'
281
+ import { hooks as coreHooks, unmarshallTime } from '../../../core/api/index.js'
282
+ &nbsp;
283
+ const { defaultEventMap } = feathers
284
+ const { iff, getItems, replaceItems } = common
285
+ const debug = makeDebug('kdk:map:features:hooks')
286
+ &nbsp;
287
+ function getTimeRange (features) {
288
+ let startTime, endTime
289
+ features.forEach(feature =&gt; {
290
+ if (feature.time) {
291
+ const time = moment.utc(feature.time)
292
+ if (!startTime || time.isBefore(startTime)) startTime = time
293
+ if (!endTime || time.isAfter(endTime)) endTime = time
294
+ }
295
+ })
296
+ return { startTime, endTime }
297
+ }
298
+ &nbsp;
299
+ function getBBox (features) {
300
+ return bbox({ type: 'FeatureCollection', features })
301
+ }
302
+ &nbsp;
303
+ function getLayers (features) {
304
+ return _.union(features.filter(feature =&gt; feature.layer).map(feature =&gt; feature.layer))
305
+ }
306
+ &nbsp;
307
+ export function simplifyResult (hook) {
308
+ // Force full result emission ?
309
+ const fullResult = _.get(hook, 'params.fullResult')
310
+ if (fullResult) <span class="branch-0 cbranch-no" title="branch not covered" >return hook</span>
311
+ const service = hook.service
312
+ const method = hook.method
313
+ const result = getItems(hook)
314
+ const simplifyResult = _.get(service, 'options.simplifyResult', ['create', 'update', 'patch', 'remove'])
315
+ const simplifyResultLimit = _.get(service, 'options.simplifyResultLimit', 1)
316
+ // Only keep track of object IDs so that caller can at least get them if required
317
+ if (simplifyResult.includes(method) &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; simplifyResultLimit)) {
318
+ debug(`Simplifying multi result for ${method} method on service ${service.name}`)
319
+ replaceItems(hook, result.map(item =&gt; ({ _id: item._id })))
320
+ }
321
+ return hook
322
+ }
323
+ &nbsp;
324
+ export function skipEvents (hook) {
325
+ // Force standard event emission ?
326
+ const emitEvents = _.get(hook, 'params.emitEvents')
327
+ if (emitEvents) <span class="branch-0 cbranch-no" title="branch not covered" >return hook</span>
328
+ const service = hook.service
329
+ const method = hook.method
330
+ const event = defaultEventMap[method]
331
+ const result = getItems(hook)
332
+ const skipEvents = _.get(service, 'options.skipEvents', ['created', 'updated', 'patched', 'removed'])
333
+ const simplifyEvents = _.get(service, 'options.simplifyEvents', [])
334
+ // Even if we emit simplified events we skip standard feathers events to emit our own version
335
+ let skip = skipEvents.includes(event) || simplifyEvents.includes(event)
336
+ const skipEventsLimit = _.get(service, 'options.skipEventsLimit', 1)
337
+ skip = skip &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; skipEventsLimit)
338
+ if (skip) debug(`Skipping standard event ${event} for multi operation on service ${service.name}`)
339
+ return iff(hook =&gt; skip, coreHooks.skipEvents)(hook)
340
+ }
341
+ &nbsp;
342
+ export function simplifyEvents (hook) {
343
+ // Force standard event emission ?
344
+ const emitEvents = _.get(hook, 'params.emitEvents')
345
+ if (emitEvents) <span class="branch-0 cbranch-no" title="branch not covered" >return hook</span>
346
+ const service = hook.service
347
+ const params = hook.params
348
+ const data = hook.data
349
+ const query = params.query || {}
350
+ unmarshallTime(query, 'time')
351
+ const method = hook.method
352
+ const event = defaultEventMap[method]
353
+ const result = getItems(hook)
354
+ const simplifyEvents = _.get(service, 'options.simplifyEvents', [])
355
+ const simplifyEventsLimit = _.get(service, 'options.simplifyEventsLimit', 1)
356
+ if (simplifyEvents.includes(event) &amp;&amp; Array.isArray(result) &amp;&amp; (result.length &gt; simplifyEventsLimit)) {
357
+ debug(`Simplifying event ${event} for multi operation on service ${service.name}`)
358
+ // Keep track of query selector when updating/patching/removing in batch
359
+ const payload = (event === 'created' ? {} : { data })
360
+ // Add information about updated time range/spatial extent so that client can decide what to do
361
+ Object.assign(payload, {
362
+ query,
363
+ total: result.length,
364
+ bbox: getBBox(result),
365
+ layers: getLayers(result)
366
+ }, getTimeRange(result))
367
+ service.emit(event, payload)
368
+ }
369
+ return hook
370
+ }
371
+ &nbsp;
372
+ export function fuzzySearch (hook) {
373
+ const service = hook.service
374
+ const featureLabel = _.castArray(_.get(service, 'options.featureLabel', []))
375
+ const fields = featureLabel.map((prop) =&gt; 'properties.' + prop)
376
+ return featureLabel.length ? mongodbFuzzySearch({ fields: fields })(hook) : hook
377
+ }
378
378
  &nbsp;</pre></td></tr></table></pre>
379
379
 
380
380
  <div class='push'></div><!-- for sticky footer -->
@@ -382,7 +382,7 @@
382
382
  <div class='footer quiet pad2 space-top1 center small'>
383
383
  Code coverage generated by
384
384
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
385
- at 2025-02-18T09:52:45.605Z
385
+ at 2025-07-24T10:00:20.476Z
386
386
  </div>
387
387
  <script src="../../../prettify.js"></script>
388
388
  <script>