@kalisio/kdk 1.4.2 → 1.5.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 (335) hide show
  1. package/.nyc_output/{2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
  2. package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
  3. package/.nyc_output/{2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json → 6dc4b140-1a8a-4d69-b91c-89c557883d6e.json} +1 -1
  4. package/.nyc_output/{81d21e46-766a-46bc-b1b7-143ca577347a.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
  5. package/.nyc_output/{aaf3ebbb-f895-4d7b-9255-bc5dee832570.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
  6. package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
  7. package/.nyc_output/processinfo/{a762cb58-70dc-4d39-ab69-928635affa98.json → 2226bcce-9d22-4dad-b9fa-46564b5565c7.json} +1 -1
  8. package/.nyc_output/processinfo/{2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json → 6dc4b140-1a8a-4d69-b91c-89c557883d6e.json} +1 -1
  9. package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
  10. package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
  11. package/.nyc_output/processinfo/index.json +1 -1
  12. package/CHANGELOG.md +21 -8
  13. package/coverage/core/api/application.js.html +455 -455
  14. package/coverage/core/api/authentication.js.html +119 -119
  15. package/coverage/core/api/db.js.html +201 -201
  16. package/coverage/core/api/hooks/hooks.account.js.html +45 -45
  17. package/coverage/core/api/hooks/hooks.authentication.js.html +71 -71
  18. package/coverage/core/api/hooks/hooks.authorisations.js.html +353 -353
  19. package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
  20. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  21. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  22. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  23. package/coverage/core/api/hooks/hooks.organisations.js.html +190 -190
  24. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  25. package/coverage/core/api/hooks/hooks.query.js.html +200 -200
  26. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  27. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  28. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  29. package/coverage/core/api/hooks/hooks.users.js.html +263 -263
  30. package/coverage/core/api/hooks/index.html +172 -172
  31. package/coverage/core/api/hooks/index.js.html +24 -24
  32. package/coverage/core/api/index.html +75 -75
  33. package/coverage/core/api/index.js.html +26 -26
  34. package/coverage/core/api/marshall.js.html +57 -57
  35. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  36. package/coverage/core/api/models/index.html +50 -50
  37. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  38. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  39. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  40. package/coverage/core/api/oauth2-handler.js.html +18 -18
  41. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  42. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  43. package/coverage/core/api/services/account/account.service.js.html +104 -104
  44. package/coverage/core/api/services/account/index.html +32 -32
  45. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  46. package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -132
  47. package/coverage/core/api/services/authorisations/index.html +28 -28
  48. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  49. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  50. package/coverage/core/api/services/databases/index.html +24 -24
  51. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  52. package/coverage/core/api/services/devices/devices.service.js.html +121 -121
  53. package/coverage/core/api/services/devices/index.html +28 -28
  54. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  55. package/coverage/core/api/services/groups/index.html +13 -13
  56. package/coverage/core/api/services/index.html +21 -21
  57. package/coverage/core/api/services/index.js.html +137 -137
  58. package/coverage/core/api/services/mailer/index.html +24 -24
  59. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  60. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  61. package/coverage/core/api/services/organisations/index.html +24 -24
  62. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  63. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  64. package/coverage/core/api/services/pusher/index.html +34 -34
  65. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  66. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  67. package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
  68. package/coverage/core/api/services/storage/index.html +21 -21
  69. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  70. package/coverage/core/api/services/tags/index.html +21 -21
  71. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  72. package/coverage/core/api/services/users/index.html +21 -21
  73. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  74. package/coverage/core/common/errors.js.html +1 -1
  75. package/coverage/core/common/index.html +42 -27
  76. package/coverage/core/common/index.js.html +16 -16
  77. package/coverage/core/common/permissions.js.html +274 -274
  78. package/coverage/index.html +178 -178
  79. package/coverage/lcov-report/core/api/application.js.html +455 -455
  80. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  81. package/coverage/lcov-report/core/api/db.js.html +201 -201
  82. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +45 -45
  83. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +71 -71
  84. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +353 -353
  85. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
  86. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  87. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  88. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  89. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +190 -190
  90. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  91. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +200 -200
  92. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  93. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  94. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  95. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +263 -263
  96. package/coverage/lcov-report/core/api/hooks/index.html +172 -172
  97. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  98. package/coverage/lcov-report/core/api/index.html +75 -75
  99. package/coverage/lcov-report/core/api/index.js.html +26 -26
  100. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  101. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  102. package/coverage/lcov-report/core/api/models/index.html +50 -50
  103. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  104. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  105. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  106. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  107. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  108. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  109. package/coverage/lcov-report/core/api/services/account/account.service.js.html +104 -104
  110. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  111. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  112. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -132
  113. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  114. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  115. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  116. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  117. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  118. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
  119. package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
  120. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  121. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  122. package/coverage/lcov-report/core/api/services/index.html +21 -21
  123. package/coverage/lcov-report/core/api/services/index.js.html +137 -137
  124. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  125. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  126. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  127. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  128. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  129. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  130. package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
  131. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  132. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  133. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
  134. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  135. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  136. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  137. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  138. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  139. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  140. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  141. package/coverage/lcov-report/core/common/index.html +42 -27
  142. package/coverage/lcov-report/core/common/index.js.html +16 -16
  143. package/coverage/lcov-report/core/common/permissions.js.html +274 -274
  144. package/coverage/lcov-report/index.html +178 -178
  145. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  146. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +25 -7
  147. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  148. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  149. package/coverage/lcov-report/map/api/index.html +1 -1
  150. package/coverage/lcov-report/map/api/index.js.html +1 -1
  151. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  152. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  153. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  154. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  155. package/coverage/lcov-report/map/api/models/index.html +1 -1
  156. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  158. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  159. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  160. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  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 +1 -1
  164. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  165. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  166. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  167. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  168. package/coverage/lcov-report/map/api/services/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  170. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  171. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  172. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  173. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  174. package/coverage/lcov-report/map/common/index.html +1 -1
  175. package/coverage/lcov-report/map/common/index.js.html +1 -1
  176. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  177. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  178. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  179. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  180. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  181. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  182. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  183. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  184. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  185. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  186. package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  188. package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
  189. package/coverage/lcov.info +3403 -3724
  190. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  191. package/coverage/map/api/hooks/hooks.query.js.html +25 -7
  192. package/coverage/map/api/hooks/index.html +7 -7
  193. package/coverage/map/api/hooks/index.js.html +1 -1
  194. package/coverage/map/api/index.html +1 -1
  195. package/coverage/map/api/index.js.html +1 -1
  196. package/coverage/map/api/marshall.js.html +1 -1
  197. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  198. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  199. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  200. package/coverage/map/api/models/index.html +1 -1
  201. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  202. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  203. package/coverage/map/api/services/alerts/index.html +1 -1
  204. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  205. package/coverage/map/api/services/catalog/index.html +1 -1
  206. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  207. package/coverage/map/api/services/daptiles/index.html +1 -1
  208. package/coverage/map/api/services/features/features.hooks.js.html +1 -1
  209. package/coverage/map/api/services/features/index.html +1 -1
  210. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  211. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  212. package/coverage/map/api/services/geocoder/index.html +1 -1
  213. package/coverage/map/api/services/index.html +1 -1
  214. package/coverage/map/api/services/index.js.html +1 -1
  215. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  216. package/coverage/map/common/errors.js.html +1 -1
  217. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  218. package/coverage/map/common/grid.js.html +1 -1
  219. package/coverage/map/common/index.html +1 -1
  220. package/coverage/map/common/index.js.html +1 -1
  221. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  222. package/coverage/map/common/moment-utils.js.html +1 -1
  223. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  224. package/coverage/map/common/opendap-utils.js.html +1 -1
  225. package/coverage/map/common/permissions.js.html +1 -1
  226. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  227. package/coverage/map/common/tms-utils.js.html +1 -1
  228. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  229. package/coverage/map/common/wcs-utils.js.html +1 -1
  230. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  231. package/coverage/map/common/wfs-utils.js.html +1 -1
  232. package/coverage/map/common/wms-utils.js.html +1 -1
  233. package/coverage/map/common/wmts-utils.js.html +1 -1
  234. package/lib/core/client/components/form/KFileField.vue +11 -40
  235. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  236. package/lib/core/client/i18n/core_en.json +6 -1
  237. package/lib/core/client/i18n/core_fr.json +6 -1
  238. package/lib/core/client/index.js +18 -0
  239. package/lib/core/client/index.js.map +1 -1
  240. package/lib/core/client/layout.js +8 -1
  241. package/lib/core/client/layout.js.map +1 -1
  242. package/lib/core/client/reader.js +54 -0
  243. package/lib/core/client/reader.js.map +1 -0
  244. package/lib/core/client/readers/index.js +30 -0
  245. package/lib/core/client/readers/index.js.map +1 -0
  246. package/lib/core/client/readers/reader.csv.js +43 -0
  247. package/lib/core/client/readers/reader.csv.js.map +1 -0
  248. package/lib/core/client/readers/reader.json.js +38 -0
  249. package/lib/core/client/readers/reader.json.js.map +1 -0
  250. package/lib/map/api/hooks/hooks.query.js +7 -2
  251. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  252. package/lib/map/client/components/KCaptureToolbar.vue +156 -0
  253. package/lib/map/client/components/KFeaturesFilter.vue +3 -1
  254. package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
  255. package/lib/map/client/components/KLayerStyleEditor.vue +2 -1
  256. package/lib/map/client/components/KLayerStyleForm.vue +34 -23
  257. package/lib/map/client/components/KMeasureTool.vue +340 -0
  258. package/lib/map/client/components/KTimeline.vue +0 -1
  259. package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
  260. package/lib/map/client/components/catalog/KLayersSelector.vue +5 -3
  261. package/lib/map/client/components/widget/KTimeSeries.vue +81 -3
  262. package/lib/map/client/i18n/map_en.json +41 -4
  263. package/lib/map/client/i18n/map_fr.json +41 -4
  264. package/lib/map/client/init.js +6 -1
  265. package/lib/map/client/init.js.map +1 -1
  266. package/lib/map/client/leaflet/MaskLayer.js +9 -0
  267. package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
  268. package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
  269. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  270. package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
  271. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  272. package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
  273. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  274. package/lib/map/client/mixins/map/mixin.base-map.js +45 -6
  275. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  276. package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
  277. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  278. package/lib/map/client/mixins/map/mixin.file-layers.js +47 -101
  279. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  280. package/lib/map/client/mixins/map/mixin.geojson-layers.js +4 -1
  281. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  282. package/lib/map/client/mixins/map/mixin.popup.js +4 -0
  283. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  284. package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
  285. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  286. package/lib/map/client/mixins/mixin.activity.js +2 -0
  287. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  288. package/lib/map/client/mixins/mixin.context.js +26 -3
  289. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  290. package/lib/map/client/mixins/mixin.feature-service.js +2 -2
  291. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  292. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  293. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  294. package/lib/map/client/readers/index.js +42 -0
  295. package/lib/map/client/readers/index.js.map +1 -0
  296. package/lib/map/client/readers/reader.geojson.js +59 -0
  297. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  298. package/lib/map/client/readers/reader.gpx.js +41 -0
  299. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  300. package/lib/map/client/readers/reader.kml.js +41 -0
  301. package/lib/map/client/readers/reader.kml.js.map +1 -0
  302. package/lib/map/client/utils.js +2 -1
  303. package/lib/map/client/utils.js.map +1 -1
  304. package/lib/test/client/core/runner.js +1 -2
  305. package/lib/test/client/core/runner.js.map +1 -1
  306. package/lib/test/client/core/utils.js +2 -2
  307. package/lib/test/client/core/utils.js.map +1 -1
  308. package/lib/test/client/map/catalog.js +50 -49
  309. package/lib/test/client/map/catalog.js.map +1 -1
  310. package/package.json +3 -2
  311. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
  312. package/.nyc_output/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
  313. package/.nyc_output/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +0 -1
  314. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +0 -1
  315. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +0 -1
  316. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +0 -1
  317. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
  318. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +0 -1
  319. package/extras/testcafe/Dockerfile +0 -48
  320. package/extras/testcafe/docker-entrypoint.sh +0 -27
  321. package/extras/testcafe/page-models/core/account.js +0 -75
  322. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  323. package/extras/testcafe/page-models/core/base-page.js +0 -25
  324. package/extras/testcafe/page-models/core/groups.js +0 -36
  325. package/extras/testcafe/page-models/core/index.js +0 -140
  326. package/extras/testcafe/page-models/core/layout.js +0 -145
  327. package/extras/testcafe/page-models/core/members.js +0 -98
  328. package/extras/testcafe/page-models/core/organisations.js +0 -76
  329. package/extras/testcafe/page-models/core/screens.js +0 -99
  330. package/extras/testcafe/page-models/core/tags.js +0 -21
  331. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  332. package/extras/testcafe/page-models/map/catalog.js +0 -132
  333. package/extras/testcafe/page-models/map/index.js +0 -36
  334. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  335. package/extras/testcafe/page-models/map/timeline.js +0 -67
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">65.88% </span>
26
+ <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>112/170</span>
28
+ <span class='fraction'>0/163</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">47.5% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>57/120</span>
35
+ <span class='fraction'>0/120</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">59.09% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>26/44</span>
42
+ <span class='fraction'>0/43</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68.21% </span>
47
+ <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>103/151</span>
49
+ <span class='fraction'>0/144</span>
50
50
  </div>
51
51
 
52
52
 
@@ -55,7 +55,7 @@
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
57
  </div>
58
- <div class='status-line medium'></div>
58
+ <div class='status-line low'></div>
59
59
  <pre><table class="coverage">
60
60
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
61
  <a name='L2'></a><a href='#L2'>2</a>
@@ -353,15 +353,15 @@
353
353
  <a name='L294'></a><a href='#L294'>294</a>
354
354
  <a name='L295'></a><a href='#L295'>295</a>
355
355
  <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-yes">1x</span>
360
- <span class="cline-any cline-yes">1x</span>
361
- <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">1x</span>
356
+ <a name='L297'></a><a href='#L297'>297</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
363
357
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-yes">1x</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
365
365
  <span class="cline-any cline-neutral">&nbsp;</span>
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
367
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -388,31 +388,31 @@
388
388
  <span class="cline-any cline-neutral">&nbsp;</span>
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-yes">54x</span>
392
- <span class="cline-any cline-yes">54x</span>
393
- <span class="cline-any cline-yes">54x</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
392
+ <span class="cline-any cline-no">&nbsp;</span>
393
+ <span class="cline-any cline-no">&nbsp;</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
395
  <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-yes">54x</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
397
397
  <span class="cline-any cline-neutral">&nbsp;</span>
398
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-yes">31x</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
400
  <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">31x</span>
402
- <span class="cline-any cline-yes">31x</span>
401
+ <span class="cline-any cline-no">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-yes">1x</span>
406
- <span class="cline-any cline-yes">1x</span>
404
+ <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">1x</span>
409
- <span class="cline-any cline-yes">1x</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
410
  <span class="cline-any cline-neutral">&nbsp;</span>
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-yes">31x</span>
415
- <span class="cline-any cline-yes">30x</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
417
  <span class="cline-any cline-neutral">&nbsp;</span>
418
418
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -434,72 +434,72 @@
434
434
  <span class="cline-any cline-neutral">&nbsp;</span>
435
435
  <span class="cline-any cline-neutral">&nbsp;</span>
436
436
  <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">4x</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
438
  <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-yes">196x</span>
440
- <span class="cline-any cline-yes">196x</span>
441
- <span class="cline-any cline-yes">196x</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
442
  <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-yes">196x</span>
444
- <span class="cline-any cline-yes">183x</span>
445
- <span class="cline-any cline-yes">514x</span>
446
- <span class="cline-any cline-yes">514x</span>
447
- <span class="cline-any cline-yes">348x</span>
448
- <span class="cline-any cline-yes">348x</span>
449
- <span class="cline-any cline-yes">11x</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-no">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
450
  <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">166x</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
452
  <span class="cline-any cline-no">&nbsp;</span>
453
453
  <span class="cline-any cline-neutral">&nbsp;</span>
454
454
  <span class="cline-any cline-neutral">&nbsp;</span>
455
455
  <span class="cline-any cline-neutral">&nbsp;</span>
456
456
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">196x</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
458
  <span class="cline-any cline-neutral">&nbsp;</span>
459
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
460
  <span class="cline-any cline-neutral">&nbsp;</span>
461
461
  <span class="cline-any cline-neutral">&nbsp;</span>
462
462
  <span class="cline-any cline-neutral">&nbsp;</span>
463
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-yes">182x</span>
465
- <span class="cline-any cline-yes">182x</span>
466
- <span class="cline-any cline-yes">182x</span>
467
- <span class="cline-any cline-yes">182x</span>
468
- <span class="cline-any cline-yes">182x</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-no">&nbsp;</span>
466
+ <span class="cline-any cline-no">&nbsp;</span>
467
+ <span class="cline-any cline-no">&nbsp;</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
469
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">182x</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
471
471
  <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">182x</span>
472
+ <span class="cline-any cline-no">&nbsp;</span>
473
473
  <span class="cline-any cline-neutral">&nbsp;</span>
474
474
  <span class="cline-any cline-neutral">&nbsp;</span>
475
475
  <span class="cline-any cline-neutral">&nbsp;</span>
476
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-yes">1x</span>
479
- <span class="cline-any cline-yes">1x</span>
480
- <span class="cline-any cline-yes">1x</span>
481
- <span class="cline-any cline-yes">1x</span>
482
- <span class="cline-any cline-yes">1x</span>
483
- <span class="cline-any cline-yes">1x</span>
478
+ <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-no">&nbsp;</span>
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-no">&nbsp;</span>
484
484
  <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-yes">1x</span>
485
+ <span class="cline-any cline-no">&nbsp;</span>
486
486
  <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-no">&nbsp;</span>
488
488
  <span class="cline-any cline-neutral">&nbsp;</span>
489
489
  <span class="cline-any cline-neutral">&nbsp;</span>
490
490
  <span class="cline-any cline-neutral">&nbsp;</span>
491
491
  <span class="cline-any cline-neutral">&nbsp;</span>
492
492
  <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-yes">1x</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">1x</span>
500
- <span class="cline-any cline-yes">1x</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-no">&nbsp;</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
500
+ <span class="cline-any cline-no">&nbsp;</span>
501
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-yes">1x</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
503
  <span class="cline-any cline-neutral">&nbsp;</span>
504
504
  <span class="cline-any cline-neutral">&nbsp;</span>
505
505
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -508,15 +508,15 @@
508
508
  <span class="cline-any cline-neutral">&nbsp;</span>
509
509
  <span class="cline-any cline-neutral">&nbsp;</span>
510
510
  <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-yes">1x</span>
512
- <span class="cline-any cline-yes">1x</span>
513
- <span class="cline-any cline-yes">1x</span>
514
- <span class="cline-any cline-yes">1x</span>
515
- <span class="cline-any cline-yes">1x</span>
516
- <span class="cline-any cline-yes">1x</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
517
  <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">1x</span>
519
- <span class="cline-any cline-yes">1x</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
520
  <span class="cline-any cline-neutral">&nbsp;</span>
521
521
  <span class="cline-any cline-neutral">&nbsp;</span>
522
522
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -566,46 +566,46 @@
566
566
  <span class="cline-any cline-neutral">&nbsp;</span>
567
567
  <span class="cline-any cline-neutral">&nbsp;</span>
568
568
  <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">1x</span>
569
+ <span class="cline-any cline-no">&nbsp;</span>
570
570
  <span class="cline-any cline-no">&nbsp;</span>
571
571
  <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-yes">1x</span>
573
- <span class="cline-any cline-yes">1x</span>
572
+ <span class="cline-any cline-no">&nbsp;</span>
573
+ <span class="cline-any cline-no">&nbsp;</span>
574
574
  <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-yes">1x</span>
576
- <span class="cline-any cline-yes">1x</span>
577
- <span class="cline-any cline-yes">1x</span>
575
+ <span class="cline-any cline-no">&nbsp;</span>
576
+ <span class="cline-any cline-no">&nbsp;</span>
577
+ <span class="cline-any cline-no">&nbsp;</span>
578
578
  <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-yes">1x</span>
579
+ <span class="cline-any cline-no">&nbsp;</span>
580
580
  <span class="cline-any cline-neutral">&nbsp;</span>
581
581
  <span class="cline-any cline-neutral">&nbsp;</span>
582
582
  <span class="cline-any cline-neutral">&nbsp;</span>
583
583
  <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-yes">9x</span>
585
- <span class="cline-any cline-yes">9x</span>
586
- <span class="cline-any cline-yes">9x</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
587
  <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-yes">9x</span>
588
+ <span class="cline-any cline-no">&nbsp;</span>
589
589
  <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-yes">9x</span>
591
- <span class="cline-any cline-yes">9x</span>
590
+ <span class="cline-any cline-no">&nbsp;</span>
591
+ <span class="cline-any cline-no">&nbsp;</span>
592
592
  <span class="cline-any cline-neutral">&nbsp;</span>
593
593
  <span class="cline-any cline-neutral">&nbsp;</span>
594
594
  <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">2x</span>
596
- <span class="cline-any cline-yes">2x</span>
595
+ <span class="cline-any cline-no">&nbsp;</span>
596
+ <span class="cline-any cline-no">&nbsp;</span>
597
597
  <span class="cline-any cline-no">&nbsp;</span>
598
598
  <span class="cline-any cline-neutral">&nbsp;</span>
599
599
  <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-yes">2x</span>
601
- <span class="cline-any cline-yes">2x</span>
602
- <span class="cline-any cline-yes">2x</span>
600
+ <span class="cline-any cline-no">&nbsp;</span>
601
+ <span class="cline-any cline-no">&nbsp;</span>
602
+ <span class="cline-any cline-no">&nbsp;</span>
603
603
  <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">2x</span>
605
- <span class="cline-any cline-yes">2x</span>
604
+ <span class="cline-any cline-no">&nbsp;</span>
605
+ <span class="cline-any cline-no">&nbsp;</span>
606
606
  <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">2x</span>
608
- <span class="cline-any cline-yes">2x</span>
607
+ <span class="cline-any cline-no">&nbsp;</span>
608
+ <span class="cline-any cline-no">&nbsp;</span>
609
609
  <span class="cline-any cline-neutral">&nbsp;</span>
610
610
  <span class="cline-any cline-neutral">&nbsp;</span>
611
611
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -621,32 +621,32 @@
621
621
  <span class="cline-any cline-neutral">&nbsp;</span>
622
622
  <span class="cline-any cline-neutral">&nbsp;</span>
623
623
  <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-yes">16x</span>
625
- <span class="cline-any cline-yes">4x</span>
626
- <span class="cline-any cline-yes">4x</span>
627
- <span class="cline-any cline-yes">4x</span>
624
+ <span class="cline-any cline-no">&nbsp;</span>
625
+ <span class="cline-any cline-no">&nbsp;</span>
626
+ <span class="cline-any cline-no">&nbsp;</span>
627
+ <span class="cline-any cline-no">&nbsp;</span>
628
628
  <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">4x</span>
630
- <span class="cline-any cline-yes">2x</span>
629
+ <span class="cline-any cline-no">&nbsp;</span>
630
+ <span class="cline-any cline-no">&nbsp;</span>
631
631
  <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-yes">2x</span>
633
- <span class="cline-any cline-yes">2x</span>
632
+ <span class="cline-any cline-no">&nbsp;</span>
633
+ <span class="cline-any cline-no">&nbsp;</span>
634
634
  <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-yes">2x</span>
636
- <span class="cline-any cline-yes">2x</span>
637
- <span class="cline-any cline-yes">2x</span>
635
+ <span class="cline-any cline-no">&nbsp;</span>
636
+ <span class="cline-any cline-no">&nbsp;</span>
637
+ <span class="cline-any cline-no">&nbsp;</span>
638
638
  <span class="cline-any cline-neutral">&nbsp;</span>
639
639
  <span class="cline-any cline-neutral">&nbsp;</span>
640
640
  <span class="cline-any cline-neutral">&nbsp;</span>
641
641
  <span class="cline-any cline-neutral">&nbsp;</span>
642
642
  <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">2x</span>
643
+ <span class="cline-any cline-no">&nbsp;</span>
644
644
  <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-yes">1x</span>
646
- <span class="cline-any cline-yes">1x</span>
645
+ <span class="cline-any cline-no">&nbsp;</span>
646
+ <span class="cline-any cline-no">&nbsp;</span>
647
647
  <span class="cline-any cline-neutral">&nbsp;</span>
648
648
  <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-yes">2x</span>
649
+ <span class="cline-any cline-no">&nbsp;</span>
650
650
  <span class="cline-any cline-neutral">&nbsp;</span>
651
651
  <span class="cline-any cline-neutral">&nbsp;</span>
652
652
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
@@ -657,71 +657,71 @@ import { marshallTimes, unmarshallTimes } from '../marshall'
657
657
  import { discard, disallow, getItems, replaceItems } from 'feathers-hooks-common'
658
658
  import makeDebug from 'debug'
659
659
  &nbsp;
660
- const debug = makeDebug('kdk:core:model:hooks')
660
+ const debug = <span class="cstat-no" title="statement not covered" >makeDebug('kdk:core:model:hooks')</span>
661
661
  &nbsp;
662
662
  // Need to convert from server side types (moment dates) to basic JS types when "writing" to DB adapters
663
- export function <span class="fstat-no" title="function not covered" >processTimes (p</span>roperties) {
664
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >f</span>unction (h</span>ook) {
665
- let items = <span class="cstat-no" title="statement not covered" >getItems(h</span>ook)
666
- const isArray = <span class="cstat-no" title="statement not covered" >Array.i</span>sArray(items)
667
- <span class="cstat-no" title="statement not covered" > items = (i</span>sArray ? items : [items])
668
- <span class="cstat-no" title="statement not covered" > items.f</span>orEach(<span class="fstat-no" title="function not covered" >item =&gt; <span class="cstat-no" title="statement not covered" >m</span>arshallTimes(i</span>tem, properties))
669
- <span class="cstat-no" title="statement not covered" > replaceItems(h</span>ook, isArray ? items : items[0])
670
- <span class="cstat-no" title="statement not covered" > return h</span>ook
663
+ export function <span class="fstat-no" title="function not covered" >processTimes </span>(properties) {
664
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
665
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
666
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
667
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
668
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >marshallTimes(item, properties))</span></span>
669
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
670
+ <span class="cstat-no" title="statement not covered" > return hook</span>
671
671
  }
672
672
  }
673
673
  &nbsp;
674
674
  // Need to convert back to server side types (moment dates) from basic JS types when "reading" from DB adapters
675
- export function <span class="fstat-no" title="function not covered" >unprocessTimes (p</span>roperties) {
676
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >f</span>unction (h</span>ook) {
677
- let items = <span class="cstat-no" title="statement not covered" >getItems(h</span>ook)
678
- const isArray = <span class="cstat-no" title="statement not covered" >Array.i</span>sArray(items)
679
- <span class="cstat-no" title="statement not covered" > items = (i</span>sArray ? items : [items])
680
- <span class="cstat-no" title="statement not covered" > items.f</span>orEach(<span class="fstat-no" title="function not covered" >item =&gt; <span class="cstat-no" title="statement not covered" >u</span>nmarshallTimes(i</span>tem, properties))
681
- <span class="cstat-no" title="statement not covered" > replaceItems(h</span>ook, isArray ? items : items[0])
682
- <span class="cstat-no" title="statement not covered" > return h</span>ook
675
+ export function <span class="fstat-no" title="function not covered" >unprocessTimes </span>(properties) {
676
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
677
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
678
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
679
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
680
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >unmarshallTimes(item, properties))</span></span>
681
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
682
+ <span class="cstat-no" title="statement not covered" > return hook</span>
683
683
  }
684
684
  }
685
685
  &nbsp;
686
- export function processPerspectives (hook) {
687
- const params = hook.params
688
- const query = params.query
689
- const service = hook.service
686
+ export function <span class="fstat-no" title="function not covered" >processPerspectives </span>(hook) {
687
+ const params = <span class="cstat-no" title="statement not covered" >hook.params</span>
688
+ const query = <span class="cstat-no" title="statement not covered" >params.query</span>
689
+ const service = <span class="cstat-no" title="statement not covered" >hook.service</span>
690
690
  &nbsp;
691
691
  // Test if some perspectives are defined on the model
692
- if (!service.options || !service.options.perspectives) return
692
+ <span class="cstat-no" title="statement not covered" > if (!service.options || !service.options.perspectives) <span class="cstat-no" title="statement not covered" >return</span></span>
693
693
  &nbsp;
694
694
  // Iterate through known perspectives of the model
695
- service.options.perspectives.forEach(perspective =&gt; {
695
+ <span class="cstat-no" title="statement not covered" > service.options.perspectives.forEach(<span class="fstat-no" title="function not covered" >pe</span>rspective =&gt; {</span>
696
696
  // Only discard if not explicitely asked by $select
697
- let filterPerspective = true
698
- if (!_.isNil(query) &amp;&amp; !_.isNil(query.$select)) {
697
+ let filterPerspective = <span class="cstat-no" title="statement not covered" >true</span>
698
+ <span class="cstat-no" title="statement not covered" > if (!_.isNil(query) &amp;&amp; !_.isNil(query.$select)) {</span>
699
699
  // Transform to array to unify processing
700
- const selectedFields = (typeof query.$select === 'string' ? <span class="branch-0 cbranch-no" title="branch not covered" >[q</span>uery.$select] : query.$select)
701
- <span class="missing-if-branch" title="else path not taken" >E</span>if (Array.isArray(selectedFields)) {
702
- selectedFields.forEach(field =&gt; {
700
+ const selectedFields = (<span class="cstat-no" title="statement not covered" >typeof query.$select === 'string' ? [query.$select] : query.$select)</span>
701
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(selectedFields)) {</span>
702
+ <span class="cstat-no" title="statement not covered" > selectedFields.forEach(<span class="fstat-no" title="function not covered" >fi</span>eld =&gt; {</span>
703
703
  // Take care that we might only ask for a subset of perspective fields like ['perspective.fieldName']
704
- <span class="missing-if-branch" title="else path not taken" >E</span>if ((field === perspective) || <span class="branch-1 cbranch-no" title="branch not covered" >field.s</span>tartsWith(perspective + '.')) {
705
- filterPerspective = false
704
+ <span class="cstat-no" title="statement not covered" > if ((field === perspective) || field.startsWith(perspective + '.')) {</span>
705
+ <span class="cstat-no" title="statement not covered" > filterPerspective = false</span>
706
706
  }
707
707
  })
708
708
  }
709
709
  }
710
- if (filterPerspective) {
711
- discard(perspective)(hook)
710
+ <span class="cstat-no" title="statement not covered" > if (filterPerspective) {</span>
711
+ <span class="cstat-no" title="statement not covered" > discard(perspective)(hook)</span>
712
712
  }
713
713
  })
714
714
  }
715
715
  &nbsp;
716
716
  // When perspectives are present we disallow update in order to avoid erase them.
717
717
  // Indeed when requesting an object they are not retrieved by default
718
- export function <span class="fstat-no" title="function not covered" >preventUpdatePerspectives (h</span>ook) {
718
+ export function <span class="fstat-no" title="function not covered" >preventUpdatePerspectives </span>(hook) {
719
719
  const service = <span class="cstat-no" title="statement not covered" >hook.service</span>
720
720
  &nbsp;
721
721
  // Test if some perspectives are defined on the model
722
722
  <span class="cstat-no" title="statement not covered" > if (!service.options || !service.options.perspectives) <span class="cstat-no" title="statement not covered" >return</span></span>
723
723
  &nbsp;
724
- <span class="cstat-no" title="statement not covered" > disallow()(h</span>ook)
724
+ <span class="cstat-no" title="statement not covered" > disallow()(hook)</span>
725
725
  }
726
726
  &nbsp;
727
727
  // The hook serialize allows to copy/move some properties within the objects holded by the hook
@@ -729,73 +729,73 @@ export function <span class="fstat-no" title="function not covered" >preventUpda
729
729
  // - source: the path to the property to be copied
730
730
  // - target: the path where to copy the property
731
731
  // - delete: a flag to define whether the hook has to delete the source property
732
- export function serialize (rules, options = {}) {
733
- return function (hook) {
732
+ export function <span class="fstat-no" title="function not covered" >serialize </span>(rules, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
733
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
734
734
  // Retrieve the items from the hook
735
- let items = getItems(hook)
736
- const isArray = Array.isArray(items)
737
- items = (isArray ? items : [items])
735
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
736
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
737
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
738
738
  // Apply the rules for each item
739
- items.forEach(item =&gt; {
740
- rules.forEach(rule =&gt; {
741
- const source = _.get(item, rule.source)
742
- if (!_.isNil(source)) {
743
- _.set(item, rule.target, source)
744
- if (rule.delete) {
745
- _.unset(item, rule.source)
739
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; {</span>
740
+ <span class="cstat-no" title="statement not covered" > rules.forEach(<span class="fstat-no" title="function not covered" >ru</span>le =&gt; {</span>
741
+ const source = <span class="cstat-no" title="statement not covered" >_.get(item, rule.source)</span>
742
+ <span class="cstat-no" title="statement not covered" > if (!_.isNil(source)) {</span>
743
+ <span class="cstat-no" title="statement not covered" > _.set(item, rule.target, source)</span>
744
+ <span class="cstat-no" title="statement not covered" > if (rule.delete) {</span>
745
+ <span class="cstat-no" title="statement not covered" > _.unset(item, rule.source)</span>
746
746
  }
747
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (options.throwOnNotFound || rule.throwOnNotFound) {
748
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('Cannot find valid input value for property ' + rule.target)
747
+ } else <span class="cstat-no" title="statement not covered" >if (options.throwOnNotFound || rule.throwOnNotFound) {</span>
748
+ <span class="cstat-no" title="statement not covered" > throw new Error('Cannot find valid input value for property ' + rule.target)</span>
749
749
  }
750
750
  })
751
751
  })
752
752
  // Replace the items within the hook
753
- replaceItems(hook, isArray ? items : items[0])
753
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
754
754
  }
755
755
  }
756
756
  &nbsp;
757
757
  // The hook allows to transform the values bound to '_id' like keys as strings into Mongo ObjectIds
758
758
  // It inspects hook data as well as query data
759
- export function processObjectIDs (hook) {
760
- let items = getItems(hook)
761
- const isArray = Array.isArray(items)
762
- items = (isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : [</span>items])
763
- items.forEach(item =&gt; objectifyIDs(item))
764
- replaceItems(hook, isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : i</span>tems[0])
759
+ export function <span class="fstat-no" title="function not covered" >processObjectIDs </span>(hook) {
760
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
761
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
762
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
763
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >objectifyIDs(item))</span></span>
764
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
765
765
  &nbsp;
766
- if (hook.params.query) objectifyIDs(hook.params.query)
766
+ <span class="cstat-no" title="statement not covered" > if (hook.params.query) <span class="cstat-no" title="statement not covered" >objectifyIDs(hook.params.query)</span></span>
767
767
  &nbsp;
768
- return hook
768
+ <span class="cstat-no" title="statement not covered" > return hook</span>
769
769
  }
770
770
  &nbsp;
771
771
  // The hook allows to transform a set of input properties as strings into Mongo ObjectIds
772
772
  // It inspects hook data as well as query data
773
- export function convertObjectIDs (properties) {
774
- return function (hook) {
775
- let items = getItems(hook)
776
- const isArray = Array.isArray(items)
777
- items = (isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : [</span>items])
778
- items.forEach(item =&gt; toObjectIDs(item, properties))
779
- replaceItems(hook, isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : i</span>tems[0])
773
+ export function <span class="fstat-no" title="function not covered" >convertObjectIDs </span>(properties) {
774
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
775
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
776
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
777
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
778
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >toObjectIDs(item, properties))</span></span>
779
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
780
780
  &nbsp;
781
- <span class="missing-if-branch" title="else path not taken" >E</span>if (hook.params.query) toObjectIDs(hook.params.query, properties)
781
+ <span class="cstat-no" title="statement not covered" > if (hook.params.query) <span class="cstat-no" title="statement not covered" >toObjectIDs(hook.params.query, properties)</span></span>
782
782
  &nbsp;
783
- return hook
783
+ <span class="cstat-no" title="statement not covered" > return hook</span>
784
784
  }
785
785
  }
786
786
  &nbsp;
787
787
  // Utility function used to convert from string to Dates a fixed set of properties on a given object
788
- export function toDates (object, properties, asMoment) {
789
- properties.forEach(property =&gt; {
790
- let date = _.get(object, property)
791
- <span class="missing-if-branch" title="else path not taken" >E</span>if (date) {
788
+ export function <span class="fstat-no" title="function not covered" >toDates </span>(object, properties, asMoment) {
789
+ <span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >pr</span>operty =&gt; {</span>
790
+ let date = <span class="cstat-no" title="statement not covered" >_.get(object, property)</span>
791
+ <span class="cstat-no" title="statement not covered" > if (date) {</span>
792
792
  // We use moment to validate the date
793
- date = moment.utc(date)
794
- <span class="missing-if-branch" title="else path not taken" >E</span>if (date.isValid()) {
795
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!asMoment) {
796
- date = date.toDate()
793
+ <span class="cstat-no" title="statement not covered" > date = moment.utc(date)</span>
794
+ <span class="cstat-no" title="statement not covered" > if (date.isValid()) {</span>
795
+ <span class="cstat-no" title="statement not covered" > if (!asMoment) {</span>
796
+ <span class="cstat-no" title="statement not covered" > date = date.toDate()</span>
797
797
  }
798
- _.set(object, property, date)
798
+ <span class="cstat-no" title="statement not covered" > _.set(object, property, date)</span>
799
799
  }
800
800
  }
801
801
  })
@@ -803,146 +803,146 @@ export function toDates (object, properties, asMoment) {
803
803
  &nbsp;
804
804
  // The hook allows to transform a set of input properties as strings into a Date/Moment objects
805
805
  // It inspects hook data as well as query data
806
- export function convertDates (properties, asMoment) {
807
- return function (hook) {
808
- let items = getItems(hook)
809
- const isArray = Array.isArray(items)
810
- items = (isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : [</span>items])
811
- items.forEach(item =&gt; toDates(item, properties, asMoment))
812
- replaceItems(hook, isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : i</span>tems[0])
806
+ export function <span class="fstat-no" title="function not covered" >convertDates </span>(properties, asMoment) {
807
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
808
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
809
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
810
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
811
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >toDates(item, properties, asMoment))</span></span>
812
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
813
813
  &nbsp;
814
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.params.query) <span class="cstat-no" title="statement not covered" >toDates(h</span>ook.params.query, properties, asMoment)
815
- return hook
814
+ <span class="cstat-no" title="statement not covered" > if (hook.params.query) <span class="cstat-no" title="statement not covered" >toDates(hook.params.query, properties, asMoment)</span></span>
815
+ <span class="cstat-no" title="statement not covered" > return hook</span>
816
816
  }
817
817
  }
818
818
  &nbsp;
819
819
  // Utility function used to convert from string to JSON a fixed set of properties on a given object
820
- export function <span class="fstat-no" title="function not covered" >toJson (o</span>bject, properties) {
821
- <span class="cstat-no" title="statement not covered" > properties.f</span>orEach(<span class="fstat-no" title="function not covered" >property =&gt; {</span>
822
- const string = <span class="cstat-no" title="statement not covered" >_.g</span>et(object, property)
820
+ export function <span class="fstat-no" title="function not covered" >toJson </span>(object, properties) {
821
+ <span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >pr</span>operty =&gt; {</span>
822
+ const string = <span class="cstat-no" title="statement not covered" >_.get(object, property)</span>
823
823
  <span class="cstat-no" title="statement not covered" > if (string &amp;&amp; (typeof string === 'string')) {</span>
824
- const json = <span class="cstat-no" title="statement not covered" >JSON.p</span>arse(string)
825
- <span class="cstat-no" title="statement not covered" > _.s</span>et(object, property, json)
824
+ const json = <span class="cstat-no" title="statement not covered" >JSON.parse(string)</span>
825
+ <span class="cstat-no" title="statement not covered" > _.set(object, property, json)</span>
826
826
  }
827
827
  })
828
828
  }
829
829
  &nbsp;
830
830
  // The hook allows to transform a set of input properties as strings into JSON objects
831
- export function <span class="fstat-no" title="function not covered" >convertToJson (p</span>roperties) {
832
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >f</span>unction (h</span>ook) {
833
- let items = <span class="cstat-no" title="statement not covered" >getItems(h</span>ook)
834
- const isArray = <span class="cstat-no" title="statement not covered" >Array.i</span>sArray(items)
835
- <span class="cstat-no" title="statement not covered" > items = (i</span>sArray ? items : [items])
836
- <span class="cstat-no" title="statement not covered" > items.f</span>orEach(<span class="fstat-no" title="function not covered" >item =&gt; <span class="cstat-no" title="statement not covered" >t</span>oJson(i</span>tem, properties))
837
- <span class="cstat-no" title="statement not covered" > replaceItems(h</span>ook, isArray ? items : items[0])
831
+ export function <span class="fstat-no" title="function not covered" >convertToJson </span>(properties) {
832
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
833
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
834
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
835
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
836
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >toJson(item, properties))</span></span>
837
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
838
838
  &nbsp;
839
- <span class="cstat-no" title="statement not covered" > return h</span>ook
839
+ <span class="cstat-no" title="statement not covered" > return hook</span>
840
840
  }
841
841
  }
842
842
  &nbsp;
843
843
  // Utility function used to convert from string to JSON a fixed set of properties on a given object
844
- export function <span class="fstat-no" title="function not covered" >toString (o</span>bject, properties) {
845
- <span class="cstat-no" title="statement not covered" > properties.f</span>orEach(<span class="fstat-no" title="function not covered" >property =&gt; {</span>
846
- const json = <span class="cstat-no" title="statement not covered" >_.g</span>et(object, property)
847
- <span class="cstat-no" title="statement not covered" > if (json &amp;&amp; (typeof json === 'object')) <span class="cstat-no" title="statement not covered" >_.s</span></span>et(object, property, JSON.stringify(json))
844
+ export function <span class="fstat-no" title="function not covered" >toString </span>(object, properties) {
845
+ <span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >pr</span>operty =&gt; {</span>
846
+ const json = <span class="cstat-no" title="statement not covered" >_.get(object, property)</span>
847
+ <span class="cstat-no" title="statement not covered" > if (json &amp;&amp; (typeof json === 'object')) <span class="cstat-no" title="statement not covered" >_.set(object, property, JSON.stringify(json))</span></span>
848
848
  })
849
849
  }
850
850
  &nbsp;
851
851
  // The hook allows to transform a set of input properties from JSON objects into strings
852
- export function <span class="fstat-no" title="function not covered" >convertToString (p</span>roperties) {
853
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >f</span>unction (h</span>ook) {
854
- let items = <span class="cstat-no" title="statement not covered" >getItems(h</span>ook)
855
- const isArray = <span class="cstat-no" title="statement not covered" >Array.i</span>sArray(items)
856
- <span class="cstat-no" title="statement not covered" > items = (i</span>sArray ? items : [items])
857
- <span class="cstat-no" title="statement not covered" > items.f</span>orEach(<span class="fstat-no" title="function not covered" >item =&gt; <span class="cstat-no" title="statement not covered" >t</span>oString(i</span>tem, properties))
858
- <span class="cstat-no" title="statement not covered" > replaceItems(h</span>ook, isArray ? items : items[0])
852
+ export function <span class="fstat-no" title="function not covered" >convertToString </span>(properties) {
853
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
854
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
855
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
856
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
857
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >toString(item, properties))</span></span>
858
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
859
859
  &nbsp;
860
- <span class="cstat-no" title="statement not covered" > return h</span>ook
860
+ <span class="cstat-no" title="statement not covered" > return hook</span>
861
861
  }
862
862
  }
863
863
  &nbsp;
864
- export async function populatePreviousObject (hook) {
865
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
866
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'populatePreviousObject\' hook should only be used as a \'before\' hook.')
864
+ export async function <span class="fstat-no" title="function not covered" >populatePreviousObject </span>(hook) {
865
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
866
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'populatePreviousObject\' hook should only be used as a \'before\' hook.')</span>
867
867
  }
868
- const item = getItems(hook)
869
- const id = (hook.id ? hook.id : <span class="branch-1 cbranch-no" title="branch not covered" >item._id)</span>
868
+ const item = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
869
+ const id = (<span class="cstat-no" title="statement not covered" >hook.id ? hook.id : item._id)</span>
870
870
  // Retrieve previous version of the item and make it available to next hooks
871
- <span class="missing-if-branch" title="else path not taken" >E</span>if (id) {
872
- hook.params.previousItem = await hook.service.get(id.toString())
873
- debug('Populated previous object', hook.params.previousItem)
871
+ <span class="cstat-no" title="statement not covered" > if (id) {</span>
872
+ <span class="cstat-no" title="statement not covered" > hook.params.previousItem = await hook.service.get(id.toString())</span>
873
+ <span class="cstat-no" title="statement not covered" > debug('Populated previous object', hook.params.previousItem)</span>
874
874
  }
875
- return hook
875
+ <span class="cstat-no" title="statement not covered" > return hook</span>
876
876
  }
877
877
  &nbsp;
878
- export function setAsDeleted (hook) {
878
+ export function <span class="fstat-no" title="function not covered" >setAsDeleted </span>(hook) {
879
879
  // Retrieve the items from the hook
880
- let items = getItems(hook)
881
- const isArray = Array.isArray(items)
882
- items = (isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : [</span>items])
880
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
881
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
882
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
883
883
  // Apply the rules for each item
884
- items.forEach(item =&gt; _.set(item, 'deleted', true))
884
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >_.set(item, 'deleted', true))</span></span>
885
885
  // Replace the items within the hook
886
- replaceItems(hook, isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : i</span>tems[0])
887
- return hook
886
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
887
+ <span class="cstat-no" title="statement not covered" > return hook</span>
888
888
  }
889
889
  &nbsp;
890
- export function setExpireAfter (delayInSeconds) {
891
- return function (hook) {
892
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
893
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'setExpireAfter\' hook should only be used as a \'before\' hook.')
890
+ export function <span class="fstat-no" title="function not covered" >setExpireAfter </span>(delayInSeconds) {
891
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
892
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
893
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'setExpireAfter\' hook should only be used as a \'before\' hook.')</span>
894
894
  }
895
895
  // Retrieve the items from the hook
896
- let items = getItems(hook)
897
- const isArray = Array.isArray(items)
898
- items = (isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : [</span>items])
896
+ let items = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
897
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(items)</span>
898
+ <span class="cstat-no" title="statement not covered" > items = (isArray ? items : [items])</span>
899
899
  // Apply the rules for each item
900
- const date = new Date(Date.now() + 1000 * delayInSeconds)
901
- items.forEach(item =&gt; _.set(item, 'expireAt', date))
900
+ const date = <span class="cstat-no" title="statement not covered" >new Date(Date.now() + 1000 * delayInSeconds)</span>
901
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >_.set(item, 'expireAt', date))</span></span>
902
902
  // Replace the items within the hook
903
- replaceItems(hook, isArray ? <span class="branch-0 cbranch-no" title="branch not covered" >items : i</span>tems[0])
904
- return hook
903
+ <span class="cstat-no" title="statement not covered" > replaceItems(hook, isArray ? items : items[0])</span>
904
+ <span class="cstat-no" title="statement not covered" > return hook</span>
905
905
  }
906
906
  }
907
907
  &nbsp;
908
908
  // Allow to use the distinct function of MongoDB
909
- export <span class="fstat-no" title="function not covered" >async function d</span>istinct (hook) {
909
+ export async function <span class="fstat-no" title="function not covered" >distinct </span>(hook) {
910
910
  const params = <span class="cstat-no" title="statement not covered" >hook.params</span>
911
911
  const query = <span class="cstat-no" title="statement not covered" >params.query</span>
912
- <span class="cstat-no" title="statement not covered" > if (!query.$distinct) <span class="cstat-no" title="statement not covered" >return h</span></span>ook
912
+ <span class="cstat-no" title="statement not covered" > if (!query.$distinct) <span class="cstat-no" title="statement not covered" >return hook</span></span>
913
913
  const collection = <span class="cstat-no" title="statement not covered" >hook.service.Model</span>
914
- <span class="cstat-no" title="statement not covered" > hook.r</span>esult = await collection.distinct(query.$distinct, _.omit(query, ['$distinct']))
915
- <span class="cstat-no" title="statement not covered" > return h</span>ook
914
+ <span class="cstat-no" title="statement not covered" > hook.result = await collection.distinct(query.$distinct, _.omit(query, ['$distinct']))</span>
915
+ <span class="cstat-no" title="statement not covered" > return hook</span>
916
916
  }
917
917
  &nbsp;
918
918
  // Check for already existing object according to given service/id field
919
- export function checkUnique (options = <span class="branch-0 cbranch-no" title="branch not covered" >{}) {</span>
920
- return async (hook) =&gt; {
921
- const service = (options.service ? <span class="branch-0 cbranch-no" title="branch not covered" >hook.a</span>pp.getService(options.service) : hook.service)
922
- const field = options.field || <span class="branch-1 cbranch-no" title="branch not covered" >'name'</span>
923
- const id = _.get(hook, `data.${field}`)
919
+ export function <span class="fstat-no" title="function not covered" >checkUnique </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
920
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync (hook) =&gt; {</span>
921
+ const service = (<span class="cstat-no" title="statement not covered" >options.service ? hook.app.getService(options.service) : hook.service)</span>
922
+ const field = <span class="cstat-no" title="statement not covered" >options.field || 'name'</span>
923
+ const id = <span class="cstat-no" title="statement not covered" >_.get(hook, `data.${field}`)</span>
924
924
  // If not updating ID skip
925
- if (id) {
926
- const query = { [options.field]: id }
925
+ <span class="cstat-no" title="statement not covered" > if (id) {</span>
926
+ const query = <span class="cstat-no" title="statement not covered" >{ [options.field]: id }</span>
927
927
  // Apply processing if required
928
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof options.query === 'function') <span class="cstat-no" title="statement not covered" >options.q</span>uery(query, hook)
929
- const result = await service.find({ query })
928
+ <span class="cstat-no" title="statement not covered" > if (typeof options.query === 'function') <span class="cstat-no" title="statement not covered" >options.query(query, hook)</span></span>
929
+ const result = <span class="cstat-no" title="statement not covered" >await service.find({ query })</span>
930
930
  // Pagination on/off ?
931
- const total = (Array.isArray(result) ? <span class="branch-0 cbranch-no" title="branch not covered" >result.length : r</span>esult.total)
932
- <span class="missing-if-branch" title="else path not taken" >E</span>if (total &gt; 0) {
933
- const error = new Conflict(`Object with ${options.field} equals to ${id} already exist for service ${service.name}`, {
931
+ const total = (<span class="cstat-no" title="statement not covered" >Array.isArray(result) ? result.length : result.total)</span>
932
+ <span class="cstat-no" title="statement not covered" > if (total &gt; 0) {</span>
933
+ const error = <span class="cstat-no" title="statement not covered" >new Conflict(`Object with ${options.field} equals to ${id} already exist for service ${service.name}`, {</span>
934
934
  translation: {
935
935
  key: 'OBJECT_ID_ALREADY_TAKEN'
936
936
  }
937
937
  })
938
938
  // Raise error when creating if another object with the same ID exists
939
- if (hook.method === 'create') throw error
939
+ <span class="cstat-no" title="statement not covered" > if (hook.method === 'create') <span class="cstat-no" title="statement not covered" >throw error</span></span>
940
940
  // When updating/patching we should check if it's the same object or not
941
- const object = (Array.isArray(result) ? <span class="branch-0 cbranch-no" title="branch not covered" >result[0</span>] : result.data[0])
942
- if (object._id.toString() !== hook.id.toString()) <span class="cstat-no" title="statement not covered" >throw e</span>rror
941
+ const object = (<span class="cstat-no" title="statement not covered" >Array.isArray(result) ? result[0] : result.data[0])</span>
942
+ <span class="cstat-no" title="statement not covered" > if (object._id.toString() !== hook.id.toString()) <span class="cstat-no" title="statement not covered" >throw error</span></span>
943
943
  }
944
944
  }
945
- return hook
945
+ <span class="cstat-no" title="statement not covered" > return hook</span>
946
946
  }
947
947
  }
948
948
  &nbsp;</pre></td></tr></table></pre>
@@ -952,7 +952,7 @@ export function checkUnique (options = <span class="branch-0 cbranch-no" title="
952
952
  <div class='footer quiet pad2 space-top1 center small'>
953
953
  Code coverage generated by
954
954
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
955
- at Wed Dec 08 2021 20:41:51 GMT+0100 (GMT+01:00)
955
+ at Fri Jan 07 2022 19:29:57 GMT+0100 (GMT+01:00)
956
956
  </div>
957
957
  </div>
958
958
  <script src="../../../prettify.js"></script>