@kalisio/kdk 1.4.2 → 1.6.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 (410) hide show
  1. package/.nyc_output/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
  2. package/.nyc_output/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
  3. package/.nyc_output/{2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json → 27401f21-8ccf-42fa-8230-4232189d86b3.json} +0 -0
  4. package/.nyc_output/{81d21e46-766a-46bc-b1b7-143ca577347a.json → 52278ef5-c337-4724-97be-e2e4416847c5.json} +0 -0
  5. package/.nyc_output/{aaf3ebbb-f895-4d7b-9255-bc5dee832570.json → 5dd49b8a-4c84-42f9-a3d5-712247a84775.json} +0 -0
  6. package/.nyc_output/{dbeb2602-0ac2-4e66-978b-0d29548359ca.json → 612b4859-9645-45c1-a41e-1fae420518c4.json} +0 -0
  7. package/.nyc_output/{e47d1e4c-2fff-4dcb-908f-d3081162547c.json → bab87fe9-d99a-4759-99e6-3fc4622eeca0.json} +0 -0
  8. package/.nyc_output/processinfo/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
  9. package/.nyc_output/processinfo/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
  10. package/.nyc_output/processinfo/27401f21-8ccf-42fa-8230-4232189d86b3.json +1 -0
  11. package/.nyc_output/processinfo/52278ef5-c337-4724-97be-e2e4416847c5.json +1 -0
  12. package/.nyc_output/processinfo/5dd49b8a-4c84-42f9-a3d5-712247a84775.json +1 -0
  13. package/.nyc_output/processinfo/612b4859-9645-45c1-a41e-1fae420518c4.json +1 -0
  14. package/.nyc_output/processinfo/bab87fe9-d99a-4759-99e6-3fc4622eeca0.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +69 -10
  17. package/coverage/core/api/application.js.html +500 -422
  18. package/coverage/core/api/authentication.js.html +119 -119
  19. package/coverage/core/api/db.js.html +172 -172
  20. package/coverage/core/api/hooks/hooks.account.js.html +45 -45
  21. package/coverage/core/api/hooks/hooks.authentication.js.html +71 -71
  22. package/coverage/core/api/hooks/hooks.authorisations.js.html +368 -353
  23. package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
  24. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  25. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  26. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  27. package/coverage/core/api/hooks/hooks.organisations.js.html +190 -190
  28. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  29. package/coverage/core/api/hooks/hooks.query.js.html +277 -211
  30. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  31. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  32. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  33. package/coverage/core/api/hooks/hooks.users.js.html +263 -263
  34. package/coverage/core/api/hooks/index.html +172 -172
  35. package/coverage/core/api/hooks/index.js.html +24 -24
  36. package/coverage/core/api/index.html +76 -76
  37. package/coverage/core/api/index.js.html +30 -30
  38. package/coverage/core/api/marshall.js.html +57 -57
  39. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  40. package/coverage/core/api/models/index.html +50 -50
  41. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  42. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  43. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  44. package/coverage/core/api/oauth2-handler.js.html +18 -18
  45. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  46. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  47. package/coverage/core/api/services/account/account.service.js.html +104 -104
  48. package/coverage/core/api/services/account/index.html +32 -32
  49. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  50. package/coverage/core/api/services/authorisations/authorisations.service.js.html +156 -132
  51. package/coverage/core/api/services/authorisations/index.html +28 -28
  52. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  53. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  54. package/coverage/core/api/services/databases/index.html +24 -24
  55. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  56. package/coverage/core/api/services/devices/devices.service.js.html +121 -121
  57. package/coverage/core/api/services/devices/index.html +28 -28
  58. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  59. package/coverage/core/api/services/groups/index.html +13 -13
  60. package/coverage/core/api/services/index.html +21 -21
  61. package/coverage/core/api/services/index.js.html +118 -118
  62. package/coverage/core/api/services/mailer/index.html +24 -24
  63. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  64. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  65. package/coverage/core/api/services/organisations/index.html +24 -24
  66. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  67. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  68. package/coverage/core/api/services/pusher/index.html +34 -34
  69. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  70. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  71. package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
  72. package/coverage/core/api/services/storage/index.html +21 -21
  73. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  74. package/coverage/core/api/services/tags/index.html +21 -21
  75. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  76. package/coverage/core/api/services/users/index.html +21 -21
  77. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  78. package/coverage/core/common/errors.js.html +1 -1
  79. package/coverage/core/common/index.html +42 -27
  80. package/coverage/core/common/index.js.html +16 -16
  81. package/coverage/core/common/permissions.js.html +320 -290
  82. package/coverage/index.html +181 -181
  83. package/coverage/lcov-report/core/api/application.js.html +500 -422
  84. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  85. package/coverage/lcov-report/core/api/db.js.html +172 -172
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +45 -45
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +71 -71
  88. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +368 -353
  89. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
  90. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  91. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  92. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  93. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +190 -190
  94. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  95. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +277 -211
  96. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  97. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  98. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  99. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +263 -263
  100. package/coverage/lcov-report/core/api/hooks/index.html +172 -172
  101. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  102. package/coverage/lcov-report/core/api/index.html +76 -76
  103. package/coverage/lcov-report/core/api/index.js.html +30 -30
  104. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  105. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  106. package/coverage/lcov-report/core/api/models/index.html +50 -50
  107. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  108. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  109. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  110. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  111. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  112. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  113. package/coverage/lcov-report/core/api/services/account/account.service.js.html +104 -104
  114. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  115. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  116. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +156 -132
  117. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  118. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  119. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  120. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  121. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  122. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
  123. package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
  124. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  125. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  126. package/coverage/lcov-report/core/api/services/index.html +21 -21
  127. package/coverage/lcov-report/core/api/services/index.js.html +118 -118
  128. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  129. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  130. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  131. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  132. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  133. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  134. package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
  135. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  136. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  137. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
  138. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  139. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  140. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  141. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  142. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  143. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  144. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  145. package/coverage/lcov-report/core/common/index.html +42 -27
  146. package/coverage/lcov-report/core/common/index.js.html +16 -16
  147. package/coverage/lcov-report/core/common/permissions.js.html +320 -290
  148. package/coverage/lcov-report/index.html +181 -181
  149. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  150. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +25 -7
  151. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  152. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  153. package/coverage/lcov-report/map/api/index.html +1 -1
  154. package/coverage/lcov-report/map/api/index.js.html +1 -1
  155. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  156. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  157. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  158. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +14 -5
  159. package/coverage/lcov-report/map/api/models/index.html +7 -7
  160. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  161. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  162. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  163. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  164. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  165. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  166. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  167. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +1 -1
  168. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  170. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  171. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  172. package/coverage/lcov-report/map/api/services/index.html +1 -1
  173. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  174. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  175. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  176. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  177. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  178. package/coverage/lcov-report/map/common/index.html +1 -1
  179. package/coverage/lcov-report/map/common/index.js.html +1 -1
  180. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  181. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  182. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  183. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  184. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  185. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  186. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  188. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  189. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  190. package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
  191. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  192. package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
  193. package/coverage/lcov.info +3683 -3825
  194. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  195. package/coverage/map/api/hooks/hooks.query.js.html +25 -7
  196. package/coverage/map/api/hooks/index.html +7 -7
  197. package/coverage/map/api/hooks/index.js.html +1 -1
  198. package/coverage/map/api/index.html +1 -1
  199. package/coverage/map/api/index.js.html +1 -1
  200. package/coverage/map/api/marshall.js.html +1 -1
  201. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  202. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  203. package/coverage/map/api/models/features.model.mongodb.js.html +14 -5
  204. package/coverage/map/api/models/index.html +7 -7
  205. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  206. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  207. package/coverage/map/api/services/alerts/index.html +1 -1
  208. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  209. package/coverage/map/api/services/catalog/index.html +1 -1
  210. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  211. package/coverage/map/api/services/daptiles/index.html +1 -1
  212. package/coverage/map/api/services/features/features.hooks.js.html +1 -1
  213. package/coverage/map/api/services/features/index.html +1 -1
  214. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  215. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  216. package/coverage/map/api/services/geocoder/index.html +1 -1
  217. package/coverage/map/api/services/index.html +1 -1
  218. package/coverage/map/api/services/index.js.html +1 -1
  219. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  220. package/coverage/map/common/errors.js.html +1 -1
  221. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  222. package/coverage/map/common/grid.js.html +1 -1
  223. package/coverage/map/common/index.html +1 -1
  224. package/coverage/map/common/index.js.html +1 -1
  225. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  226. package/coverage/map/common/moment-utils.js.html +1 -1
  227. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  228. package/coverage/map/common/opendap-utils.js.html +1 -1
  229. package/coverage/map/common/permissions.js.html +1 -1
  230. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  231. package/coverage/map/common/tms-utils.js.html +1 -1
  232. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  233. package/coverage/map/common/wcs-utils.js.html +1 -1
  234. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  235. package/coverage/map/common/wfs-utils.js.html +1 -1
  236. package/coverage/map/common/wms-utils.js.html +1 -1
  237. package/coverage/map/common/wmts-utils.js.html +1 -1
  238. package/extras/tours/map/navigation-bar.js +49 -1
  239. package/lib/core/api/application.js +35 -9
  240. package/lib/core/api/application.js.map +1 -1
  241. package/lib/core/api/hooks/hooks.authorisations.js +8 -1
  242. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  243. package/lib/core/api/hooks/hooks.query.js +135 -100
  244. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  245. package/lib/core/api/services/authorisations/authorisations.service.js +13 -1
  246. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  247. package/lib/core/api/services/pusher/pusher.service.js +40 -16
  248. package/lib/core/api/services/pusher/pusher.service.js.map +1 -1
  249. package/lib/core/client/components/collection/KColumn.vue +29 -28
  250. package/lib/core/client/components/collection/KFilter.vue +97 -72
  251. package/lib/core/client/components/editor/KModalEditor.vue +3 -4
  252. package/lib/core/client/components/editor/KSettingsEditor.vue +6 -2
  253. package/lib/core/client/components/form/KFileField.vue +14 -36
  254. package/lib/core/client/components/form/KRoleField.vue +5 -2
  255. package/lib/core/client/components/form/KTextField.vue +12 -2
  256. package/lib/core/client/components/form/KUnitField.vue +57 -0
  257. package/lib/core/client/components/form/KUrlField.vue +1 -1
  258. package/lib/core/client/components/frame/KAction.vue +1 -2
  259. package/lib/core/client/components/frame/KModal.vue +66 -20
  260. package/lib/core/client/components/frame/KScrollArea.vue +65 -0
  261. package/lib/core/client/components/frame/index.js +6 -1
  262. package/lib/core/client/components/frame/index.js.map +1 -1
  263. package/lib/core/client/components/input/KColorChooser.vue +3 -5
  264. package/lib/core/client/components/input/KIconChooser.vue +38 -40
  265. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  266. package/lib/core/client/components/layout/KAbout.vue +47 -49
  267. package/lib/core/client/components/team/KAddMember.vue +1 -1
  268. package/lib/core/client/components/team/KChangeRole.vue +11 -14
  269. package/lib/core/client/components/team/KGroupCard.vue +12 -5
  270. package/lib/core/client/components/team/KGroupsActivity.vue +1 -1
  271. package/lib/core/client/components/team/KJoinGroup.vue +22 -22
  272. package/lib/core/client/components/team/KMemberCard.vue +19 -4
  273. package/lib/core/client/components/viewer/KModalViewer.vue +10 -9
  274. package/lib/core/client/i18n/core_en.json +72 -8
  275. package/lib/core/client/i18n/core_fr.json +66 -8
  276. package/lib/core/client/index.js +31 -0
  277. package/lib/core/client/index.js.map +1 -1
  278. package/lib/core/client/layout.js +8 -1
  279. package/lib/core/client/layout.js.map +1 -1
  280. package/lib/core/client/mixins/mixin.base-widget.js +5 -3
  281. package/lib/core/client/mixins/mixin.base-widget.js.map +1 -1
  282. package/lib/core/client/reader.js +85 -0
  283. package/lib/core/client/reader.js.map +1 -0
  284. package/lib/core/client/readers/index.js +30 -0
  285. package/lib/core/client/readers/index.js.map +1 -0
  286. package/lib/core/client/readers/reader.csv.js +54 -0
  287. package/lib/core/client/readers/reader.csv.js.map +1 -0
  288. package/lib/core/client/readers/reader.json.js +49 -0
  289. package/lib/core/client/readers/reader.json.js.map +1 -0
  290. package/lib/core/client/services/index.js +14 -3
  291. package/lib/core/client/services/index.js.map +1 -1
  292. package/lib/core/client/services/local-settings.service.js +6 -4
  293. package/lib/core/client/services/local-settings.service.js.map +1 -1
  294. package/lib/core/client/time.js +4 -3
  295. package/lib/core/client/time.js.map +1 -1
  296. package/lib/core/client/units.js +195 -0
  297. package/lib/core/client/units.js.map +1 -0
  298. package/lib/core/common/permissions.js +44 -34
  299. package/lib/core/common/permissions.js.map +1 -1
  300. package/lib/core/common/schemas/settings.update.json +72 -0
  301. package/lib/map/api/hooks/hooks.query.js +7 -2
  302. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  303. package/lib/map/api/models/features.model.mongodb.js +3 -0
  304. package/lib/map/api/models/features.model.mongodb.js.map +1 -1
  305. package/lib/map/client/components/KCaptureToolbar.vue +151 -0
  306. package/lib/map/client/components/KColorLegend.vue +16 -4
  307. package/lib/map/client/components/KFeaturesChart.vue +10 -11
  308. package/lib/map/client/components/KFeaturesFilter.vue +40 -39
  309. package/lib/map/client/components/KFeaturesTable.vue +15 -16
  310. package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
  311. package/lib/map/client/components/KLayerStyleEditor.vue +3 -2
  312. package/lib/map/client/components/KLayerStyleForm.vue +38 -27
  313. package/lib/map/client/components/KMeasureTool.vue +337 -0
  314. package/lib/map/client/components/KTimeline.vue +5 -9
  315. package/lib/map/client/components/catalog/KAddLayer.vue +3 -2
  316. package/lib/map/client/components/catalog/KCatalog.vue +26 -7
  317. package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
  318. package/lib/map/client/components/catalog/KLayerCategories.vue +3 -2
  319. package/lib/map/client/components/catalog/KLayersSelector.vue +8 -6
  320. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +1 -1
  321. package/lib/map/client/components/widget/KInformationBox.vue +8 -17
  322. package/lib/map/client/components/widget/KMapillaryViewer.vue +5 -1
  323. package/lib/map/client/components/widget/KTimeSeries.vue +92 -9
  324. package/lib/map/client/i18n/map_en.json +51 -20
  325. package/lib/map/client/i18n/map_fr.json +51 -20
  326. package/lib/map/client/init.js +7 -1
  327. package/lib/map/client/init.js.map +1 -1
  328. package/lib/map/client/leaflet/MaskLayer.js +9 -0
  329. package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
  330. package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
  331. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  332. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +16 -21
  333. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  334. package/lib/map/client/mixins/globe/mixin.popup.js +7 -1
  335. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  336. package/lib/map/client/mixins/globe/mixin.tooltip.js +7 -1
  337. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  338. package/lib/map/client/mixins/map/mixin.base-map.js +54 -9
  339. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  340. package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
  341. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  342. package/lib/map/client/mixins/map/mixin.file-layers.js +51 -97
  343. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  344. package/lib/map/client/mixins/map/mixin.geojson-layers.js +43 -11
  345. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  346. package/lib/map/client/mixins/map/mixin.popup.js +7 -1
  347. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  348. package/lib/map/client/mixins/map/mixin.style.js +1 -1
  349. package/lib/map/client/mixins/map/mixin.style.js.map +1 -1
  350. package/lib/map/client/mixins/map/mixin.tooltip.js +7 -1
  351. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  352. package/lib/map/client/mixins/mixin.activity.js +2 -0
  353. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  354. package/lib/map/client/mixins/mixin.context.js +26 -3
  355. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  356. package/lib/map/client/mixins/mixin.feature-service.js +3 -3
  357. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  358. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  359. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  360. package/lib/map/client/mixins/mixin.weacast.js +7 -5
  361. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  362. package/lib/map/client/readers/index.js +54 -0
  363. package/lib/map/client/readers/index.js.map +1 -0
  364. package/lib/map/client/readers/reader.geojson.js +87 -0
  365. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  366. package/lib/map/client/readers/reader.gpx.js +52 -0
  367. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  368. package/lib/map/client/readers/reader.kml.js +52 -0
  369. package/lib/map/client/readers/reader.kml.js.map +1 -0
  370. package/lib/map/client/readers/reader.shp.js +116 -0
  371. package/lib/map/client/readers/reader.shp.js.map +1 -0
  372. package/lib/map/client/utils.js +0 -7
  373. package/lib/map/client/utils.js.map +1 -1
  374. package/lib/test/client/core/account.js +1 -1
  375. package/lib/test/client/core/account.js.map +1 -1
  376. package/lib/test/client/core/runner.js +1 -2
  377. package/lib/test/client/core/runner.js.map +1 -1
  378. package/lib/test/client/core/screens.js +1 -1
  379. package/lib/test/client/core/screens.js.map +1 -1
  380. package/lib/test/client/core/utils.js +2 -2
  381. package/lib/test/client/core/utils.js.map +1 -1
  382. package/lib/test/client/map/catalog.js +50 -49
  383. package/lib/test/client/map/catalog.js.map +1 -1
  384. package/package.json +3 -3
  385. package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
  386. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
  387. package/.nyc_output/processinfo/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
  388. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +0 -1
  389. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +0 -1
  390. package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
  391. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +0 -1
  392. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
  393. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +0 -1
  394. package/extras/testcafe/Dockerfile +0 -48
  395. package/extras/testcafe/docker-entrypoint.sh +0 -27
  396. package/extras/testcafe/page-models/core/account.js +0 -75
  397. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  398. package/extras/testcafe/page-models/core/base-page.js +0 -25
  399. package/extras/testcafe/page-models/core/groups.js +0 -36
  400. package/extras/testcafe/page-models/core/index.js +0 -140
  401. package/extras/testcafe/page-models/core/layout.js +0 -145
  402. package/extras/testcafe/page-models/core/members.js +0 -98
  403. package/extras/testcafe/page-models/core/organisations.js +0 -76
  404. package/extras/testcafe/page-models/core/screens.js +0 -99
  405. package/extras/testcafe/page-models/core/tags.js +0 -21
  406. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  407. package/extras/testcafe/page-models/map/catalog.js +0 -132
  408. package/extras/testcafe/page-models/map/index.js +0 -36
  409. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  410. 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">63.31% </span>
26
+ <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>88/139</span>
28
+ <span class='fraction'>0/134</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">45.12% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>37/82</span>
35
+ <span class='fraction'>0/82</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.82% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/22</span>
42
+ <span class='fraction'>0/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">64.62% </span>
47
+ <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>84/130</span>
49
+ <span class='fraction'>0/125</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>
@@ -310,33 +310,33 @@
310
310
  <a name='L251'></a><a href='#L251'>251</a>
311
311
  <a name='L252'></a><a href='#L252'>252</a>
312
312
  <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
314
- <span class="cline-any cline-yes">1x</span>
315
- <span class="cline-any cline-yes">1x</span>
316
- <span class="cline-any cline-yes">1x</span>
317
- <span class="cline-any cline-yes">1x</span>
313
+ <a name='L254'></a><a href='#L254'>254</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
318
314
  <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-yes">1x</span>
320
315
  <span class="cline-any cline-neutral">&nbsp;</span>
321
316
  <span class="cline-any cline-neutral">&nbsp;</span>
322
317
  <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">3x</span>
324
318
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-yes">2x</span>
319
+ <span class="cline-any cline-no">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
322
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">2x</span>
328
323
  <span class="cline-any cline-no">&nbsp;</span>
329
324
  <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-yes">2x</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-no">&nbsp;</span>
328
+ <span class="cline-any cline-no">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-no">&nbsp;</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
333
  <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-yes">6x</span>
334
+ <span class="cline-any cline-no">&nbsp;</span>
335
335
  <span class="cline-any cline-no">&nbsp;</span>
336
336
  <span class="cline-any cline-neutral">&nbsp;</span>
337
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">6x</span>
339
+ <span class="cline-any cline-no">&nbsp;</span>
340
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -349,16 +349,16 @@
349
349
  <span class="cline-any cline-neutral">&nbsp;</span>
350
350
  <span class="cline-any cline-neutral">&nbsp;</span>
351
351
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">2x</span>
353
- <span class="cline-any cline-yes">2x</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
354
354
  <span class="cline-any cline-no">&nbsp;</span>
355
355
  <span class="cline-any cline-no">&nbsp;</span>
356
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-yes">2x</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
359
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-yes">2x</span>
361
- <span class="cline-any cline-yes">2x</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
362
362
  <span class="cline-any cline-neutral">&nbsp;</span>
363
363
  <span class="cline-any cline-no">&nbsp;</span>
364
364
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -392,56 +392,56 @@
392
392
  <span class="cline-any cline-neutral">&nbsp;</span>
393
393
  <span class="cline-any cline-no">&nbsp;</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">2x</span>
395
+ <span class="cline-any cline-no">&nbsp;</span>
396
396
  <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-no">&nbsp;</span>
399
399
  <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
400
+ <span class="cline-any cline-no">&nbsp;</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
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-yes">1x</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-yes">1x</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
409
  <span class="cline-any cline-no">&nbsp;</span>
410
410
  <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">1x</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-yes">1x</span>
414
- <span class="cline-any cline-yes">1x</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-yes">1x</span>
417
- <span class="cline-any cline-yes">1x</span>
418
- <span class="cline-any cline-yes">1x</span>
416
+ <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
419
  <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-yes">1x</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
423
  <span class="cline-any cline-neutral">&nbsp;</span>
424
424
  <span class="cline-any cline-neutral">&nbsp;</span>
425
425
  <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-yes">2x</span>
426
+ <span class="cline-any cline-no">&nbsp;</span>
427
427
  <span class="cline-any cline-neutral">&nbsp;</span>
428
428
  <span class="cline-any cline-neutral">&nbsp;</span>
429
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">2x</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
431
431
  <span class="cline-any cline-no">&nbsp;</span>
432
432
  <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-yes">2x</span>
434
- <span class="cline-any cline-yes">2x</span>
435
- <span class="cline-any cline-yes">2x</span>
436
- <span class="cline-any cline-yes">2x</span>
433
+ <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-no">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
437
  <span class="cline-any cline-no">&nbsp;</span>
438
438
  <span class="cline-any cline-neutral">&nbsp;</span>
439
439
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">2x</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
441
  <span class="cline-any cline-neutral">&nbsp;</span>
442
442
  <span class="cline-any cline-neutral">&nbsp;</span>
443
443
  <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">2x</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
445
  <span class="cline-any cline-no">&nbsp;</span>
446
446
  <span class="cline-any cline-no">&nbsp;</span>
447
447
  <span class="cline-any cline-no">&nbsp;</span>
@@ -449,37 +449,37 @@
449
449
  <span class="cline-any cline-no">&nbsp;</span>
450
450
  <span class="cline-any cline-neutral">&nbsp;</span>
451
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">2x</span>
453
- <span class="cline-any cline-yes">2x</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&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">2x</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
- <span class="cline-any cline-yes">2x</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
463
463
  <span class="cline-any cline-no">&nbsp;</span>
464
464
  <span class="cline-any cline-neutral">&nbsp;</span>
465
465
  <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-yes">2x</span>
467
- <span class="cline-any cline-yes">2x</span>
468
- <span class="cline-any cline-yes">2x</span>
469
- <span class="cline-any cline-yes">2x</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
+ <span class="cline-any cline-no">&nbsp;</span>
470
470
  <span class="cline-any cline-no">&nbsp;</span>
471
471
  <span class="cline-any cline-neutral">&nbsp;</span>
472
472
  <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">2x</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
474
  <span class="cline-any cline-neutral">&nbsp;</span>
475
475
  <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-yes">2x</span>
477
- <span class="cline-any cline-yes">2x</span>
478
- <span class="cline-any cline-yes">2x</span>
479
- <span class="cline-any cline-yes">2x</span>
480
- <span class="cline-any cline-yes">2x</span>
481
- <span class="cline-any cline-yes">2x</span>
482
- <span class="cline-any cline-yes">2x</span>
476
+ <span class="cline-any cline-no">&nbsp;</span>
477
+ <span class="cline-any cline-no">&nbsp;</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
483
  <span class="cline-any cline-neutral">&nbsp;</span>
484
484
  <span class="cline-any cline-no">&nbsp;</span>
485
485
  <span class="cline-any cline-no">&nbsp;</span>
@@ -491,32 +491,32 @@
491
491
  <span class="cline-any cline-neutral">&nbsp;</span>
492
492
  <span class="cline-any cline-neutral">&nbsp;</span>
493
493
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">2x</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
495
  <span class="cline-any cline-neutral">&nbsp;</span>
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
497
  <span class="cline-any cline-neutral">&nbsp;</span>
498
498
  <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-yes">1x</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
500
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>
503
- <span class="cline-any cline-yes">1x</span>
504
- <span class="cline-any cline-yes">1x</span>
505
- <span class="cline-any cline-yes">1x</span>
506
- <span class="cline-any cline-yes">1x</span>
507
- <span class="cline-any cline-yes">1x</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
506
+ <span class="cline-any cline-no">&nbsp;</span>
507
+ <span class="cline-any cline-no">&nbsp;</span>
508
508
  <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">1x</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
510
  <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-yes">1x</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
512
  <span class="cline-any cline-no">&nbsp;</span>
513
513
  <span class="cline-any cline-neutral">&nbsp;</span>
514
514
  <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-yes">1x</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
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>
@@ -525,8 +525,8 @@
525
525
  <span class="cline-any cline-neutral">&nbsp;</span>
526
526
  <span class="cline-any cline-neutral">&nbsp;</span>
527
527
  <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-yes">1x</span>
529
- <span class="cline-any cline-yes">1x</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
530
  <span class="cline-any cline-neutral">&nbsp;</span>
531
531
  <span class="cline-any cline-neutral">&nbsp;</span>
532
532
  <span class="cline-any cline-no">&nbsp;</span>
@@ -534,20 +534,20 @@
534
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
535
  <span class="cline-any cline-neutral">&nbsp;</span>
536
536
  <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-yes">1x</span>
537
+ <span class="cline-any cline-no">&nbsp;</span>
538
538
  <span class="cline-any cline-no">&nbsp;</span>
539
539
  <span class="cline-any cline-neutral">&nbsp;</span>
540
540
  <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-yes">1x</span>
542
- <span class="cline-any cline-yes">1x</span>
543
- <span class="cline-any cline-yes">1x</span>
544
- <span class="cline-any cline-yes">1x</span>
545
- <span class="cline-any cline-yes">1x</span>
541
+ <span class="cline-any cline-no">&nbsp;</span>
542
+ <span class="cline-any cline-no">&nbsp;</span>
543
+ <span class="cline-any cline-no">&nbsp;</span>
544
+ <span class="cline-any cline-no">&nbsp;</span>
545
+ <span class="cline-any cline-no">&nbsp;</span>
546
546
  <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-yes">2x</span>
548
- <span class="cline-any cline-yes">1x</span>
549
- <span class="cline-any cline-yes">1x</span>
550
- <span class="cline-any cline-yes">1x</span>
547
+ <span class="cline-any cline-no">&nbsp;</span>
548
+ <span class="cline-any cline-no">&nbsp;</span>
549
+ <span class="cline-any cline-no">&nbsp;</span>
550
+ <span class="cline-any cline-no">&nbsp;</span>
551
551
  <span class="cline-any cline-neutral">&nbsp;</span>
552
552
  <span class="cline-any cline-neutral">&nbsp;</span>
553
553
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -556,8 +556,8 @@
556
556
  <span class="cline-any cline-neutral">&nbsp;</span>
557
557
  <span class="cline-any cline-neutral">&nbsp;</span>
558
558
  <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-yes">1x</span>
560
- <span class="cline-any cline-yes">1x</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
561
  <span class="cline-any cline-neutral">&nbsp;</span>
562
562
  <span class="cline-any cline-neutral">&nbsp;</span>
563
563
  <span class="cline-any cline-no">&nbsp;</span>
@@ -569,207 +569,207 @@ import { getItems } from 'feathers-hooks-common'
569
569
  import { populateObject, unpopulateObject } from './hooks.query'
570
570
  import makeDebug from 'debug'
571
571
  &nbsp;
572
- const debug = makeDebug('kdk:core:tags:hooks')
572
+ const debug = <span class="cstat-no" title="statement not covered" >makeDebug('kdk:core:tags:hooks')</span>
573
573
  &nbsp;
574
- export function isTagEqual (tag1, tag2) {
574
+ export function <span class="fstat-no" title="function not covered" >isTagEqual </span>(tag1, tag2) {
575
575
  // If tags already exists in DB directly use IDs for comparison
576
- if (tag1._id &amp;&amp; tag2._id) return (tag1._id.toString() === tag2._id.toString())
576
+ <span class="cstat-no" title="statement not covered" > if (tag1._id &amp;&amp; tag2._id) <span class="cstat-no" title="statement not covered" >return (tag1._id.toString() === tag2._id.toString())</span></span>
577
577
  &nbsp;
578
- let equal = (tag1.value === tag2.value &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >tag1.scope === tag2.scope)</span>
578
+ let equal = (<span class="cstat-no" title="statement not covered" >tag1.value === tag2.value &amp;&amp; tag1.scope === tag2.scope)</span>
579
579
  // when context is provided use it as well
580
- <span class="missing-if-branch" title="if path not taken" >I</span>if (tag1.context &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >tag2.context) {</span>
581
- <span class="cstat-no" title="statement not covered" > equal = e</span>qual &amp;&amp; (tag1.context.toString() === tag2.context.toString())
580
+ <span class="cstat-no" title="statement not covered" > if (tag1.context &amp;&amp; tag2.context) {</span>
581
+ <span class="cstat-no" title="statement not covered" > equal = equal &amp;&amp; (tag1.context.toString() === tag2.context.toString())</span>
582
582
  }
583
- return equal
583
+ <span class="cstat-no" title="statement not covered" > return equal</span>
584
584
  }
585
585
  &nbsp;
586
- export function populateTagResource (hook) {
587
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
588
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'populateTagResource\' hook should only be used as a \'before\' hook.')
586
+ export function <span class="fstat-no" title="function not covered" >populateTagResource </span>(hook) {
587
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
588
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'populateTagResource\' hook should only be used as a \'before\' hook.')</span>
589
589
  }
590
590
  &nbsp;
591
591
  // Avoid populating any target resource when resource parameters are not present
592
- return populateObject({ serviceField: 'resourcesService', idField: 'resource', throwOnNotFound: false })(hook)
592
+ <span class="cstat-no" title="statement not covered" > return populateObject({ serviceField: 'resourcesService', idField: 'resource', throwOnNotFound: false })(hook)</span>
593
593
  }
594
594
  &nbsp;
595
- export function <span class="fstat-no" title="function not covered" >unpopulateTagResource (h</span>ook) {
595
+ export function <span class="fstat-no" title="function not covered" >unpopulateTagResource </span>(hook) {
596
596
  <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
597
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'unpopulateTagResource\' hook should only be used as a \'after\' hook.')
597
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'unpopulateTagResource\' hook should only be used as a \'after\' hook.')</span>
598
598
  }
599
599
  &nbsp;
600
600
  // Avoid populating any target resource when resource parameters are not present
601
- <span class="cstat-no" title="statement not covered" > return u</span>npopulateObject({ serviceField: 'resourcesService', idField: 'resource' })(hook)
601
+ <span class="cstat-no" title="statement not covered" > return unpopulateObject({ serviceField: 'resourcesService', idField: 'resource' })(hook)</span>
602
602
  }
603
603
  &nbsp;
604
- export async function updateTags (hook) {
605
- const item = getItems(hook)
606
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!item.tags) {
607
- <span class="cstat-no" title="statement not covered" > debug('</span>No tags to update for object ', item)
608
- <span class="cstat-no" title="statement not covered" > return P</span>romise.resolve(hook)
604
+ export async function <span class="fstat-no" title="function not covered" >updateTags </span>(hook) {
605
+ const item = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
606
+ <span class="cstat-no" title="statement not covered" > if (!item.tags) {</span>
607
+ <span class="cstat-no" title="statement not covered" > debug('No tags to update for object ', item)</span>
608
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
609
609
  }
610
610
  // Tag service is contextual, look for context on initiator service
611
- const context = hook.service.context
611
+ const context = <span class="cstat-no" title="statement not covered" >hook.service.context</span>
612
612
  // Retrieve previous version of the item
613
- const previousTags = _.get(hook.params, 'previousItem.tags')
614
- <span class="missing-if-branch" title="if path not taken" >I</span>if (previousTags) {
613
+ const previousTags = <span class="cstat-no" title="statement not covered" >_.get(hook.params, 'previousItem.tags')</span>
614
+ <span class="cstat-no" title="statement not covered" > if (previousTags) {</span>
615
615
  // Find common tags
616
- const commonTags = <span class="cstat-no" title="statement not covered" >_.i</span>ntersectionWith(item.tags, previousTags, isTagEqual)
616
+ const commonTags = <span class="cstat-no" title="statement not covered" >_.intersectionWith(item.tags, previousTags, isTagEqual)</span>
617
617
  // Clear removed tags
618
- const removedTags = <span class="cstat-no" title="statement not covered" >_.d</span>ifferenceWith(previousTags, commonTags, isTagEqual)
619
- <span class="cstat-no" title="statement not covered" > debug('</span>Removing tags for object ', item, removedTags)
620
- const removePromises = <span class="cstat-no" title="statement not covered" >removedTags.m</span>ap(<span class="fstat-no" title="function not covered" >tag =&gt; {</span>
618
+ const removedTags = <span class="cstat-no" title="statement not covered" >_.differenceWith(previousTags, commonTags, isTagEqual)</span>
619
+ <span class="cstat-no" title="statement not covered" > debug('Removing tags for object ', item, removedTags)</span>
620
+ const removePromises = <span class="cstat-no" title="statement not covered" >removedTags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
621
621
  // When a contextual service is used we might not provide the context in tag, extract from service instead
622
- const tagService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('tags', tag.context || context)
623
- <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return P</span>romise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
624
- else <span class="cstat-no" title="statement not covered" >return t</span>agService.remove(null, { query: tag })
622
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.app.getService('tags', tag.context || context)</span>
623
+ <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span></span>
624
+ else <span class="cstat-no" title="statement not covered" >return tagService.remove(null, { query: tag })</span>
625
625
  })
626
626
  // And add new ones
627
- const addedTags = <span class="cstat-no" title="statement not covered" >_.d</span>ifferenceWith(item.tags, commonTags, isTagEqual)
628
- <span class="cstat-no" title="statement not covered" > debug('</span>Adding tags for object ', item, addedTags)
629
- const addedPromises = <span class="cstat-no" title="statement not covered" >addedTags.m</span>ap(<span class="fstat-no" title="function not covered" >tag =&gt; {</span>
627
+ const addedTags = <span class="cstat-no" title="statement not covered" >_.differenceWith(item.tags, commonTags, isTagEqual)</span>
628
+ <span class="cstat-no" title="statement not covered" > debug('Adding tags for object ', item, addedTags)</span>
629
+ const addedPromises = <span class="cstat-no" title="statement not covered" >addedTags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
630
630
  // When a contextual service is used we might not provide the context in tag, extract from service instead
631
- const tagService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('tags', tag.context || context)
632
- <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return P</span>romise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
633
- else <span class="cstat-no" title="statement not covered" >return t</span>agService.create(tag)
631
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.app.getService('tags', tag.context || context)</span>
632
+ <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span></span>
633
+ else <span class="cstat-no" title="statement not covered" >return tagService.create(tag)</span>
634
634
  })
635
- let [oldTags, newTags] = <span class="cstat-no" title="statement not covered" >await Promise.a</span>ll([
635
+ let [oldTags, newTags] = <span class="cstat-no" title="statement not covered" >await Promise.all([</span>
636
636
  Promise.all(removePromises),
637
637
  Promise.all(addedPromises)
638
638
  ])
639
- <span class="cstat-no" title="statement not covered" > debug('</span>Tags removed/added', oldTags, newTags)
639
+ <span class="cstat-no" title="statement not covered" > debug('Tags removed/added', oldTags, newTags)</span>
640
640
  // Update tags to include information added when they are created (eg _id)
641
641
  // and add also context because tags might come from different ones on the same target object
642
- <span class="cstat-no" title="statement not covered" > newTags = n</span>ewTags.map(<span class="fstat-no" title="function not covered" >tag =&gt; {</span>
643
- <span class="cstat-no" title="statement not covered" > if (!context || tag.context) <span class="cstat-no" title="statement not covered" >return t</span>ag</span>
644
- else <span class="cstat-no" title="statement not covered" >return O</span>bject.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)
642
+ <span class="cstat-no" title="statement not covered" > newTags = newTags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
643
+ <span class="cstat-no" title="statement not covered" > if (!context || tag.context) <span class="cstat-no" title="statement not covered" >return tag</span></span>
644
+ else <span class="cstat-no" title="statement not covered" >return Object.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)</span>
645
645
  })
646
- <span class="cstat-no" title="statement not covered" > item.t</span>ags = commonTags.concat(newTags)
646
+ <span class="cstat-no" title="statement not covered" > item.tags = commonTags.concat(newTags)</span>
647
647
  } else {
648
- if (hook.method !== 'remove') {
648
+ <span class="cstat-no" title="statement not covered" > if (hook.method !== 'remove') {</span>
649
649
  // Add new tags
650
- debug('Adding tags for object ', item)
651
- const addPromises = item.tags.map(tag =&gt; {
650
+ <span class="cstat-no" title="statement not covered" > debug('Adding tags for object ', item)</span>
651
+ const addPromises = <span class="cstat-no" title="statement not covered" >item.tags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
652
652
  // When a contextual service is used we might not provide the context in tag, extract from service instead
653
- const tagService = hook.app.getService('tags', tag.context || context)
654
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tagService) <span class="cstat-no" title="statement not covered" >return P</span>romise.reject(new Error('No valid context found to retrieve tag service for ', tag))
655
- else return tagService.create(tag)
653
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.app.getService('tags', tag.context || context)</span>
654
+ <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span></span>
655
+ else <span class="cstat-no" title="statement not covered" >return tagService.create(tag)</span>
656
656
  })
657
657
  // Update tags to include information added when they are created (eg _id)
658
- let newTags = await Promise.all(addPromises)
658
+ let newTags = <span class="cstat-no" title="statement not covered" >await Promise.all(addPromises)</span>
659
659
  // and add also context because tags might come from different ones on the same target object
660
- newTags = newTags.map(tag =&gt; {
661
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!context || <span class="branch-1 cbranch-no" title="branch not covered" >tag.context) r</span>eturn tag
662
- else <span class="cstat-no" title="statement not covered" >return O</span>bject.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)
660
+ <span class="cstat-no" title="statement not covered" > newTags = newTags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
661
+ <span class="cstat-no" title="statement not covered" > if (!context || tag.context) <span class="cstat-no" title="statement not covered" >return tag</span></span>
662
+ else <span class="cstat-no" title="statement not covered" >return Object.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)</span>
663
663
  })
664
- item.tags = newTags
664
+ <span class="cstat-no" title="statement not covered" > item.tags = newTags</span>
665
665
  } else {
666
- debug('Removing tags for object ', item)
667
- const removePromises = item.tags.map(tag =&gt; {
666
+ <span class="cstat-no" title="statement not covered" > debug('Removing tags for object ', item)</span>
667
+ const removePromises = <span class="cstat-no" title="statement not covered" >item.tags.map(<span class="fstat-no" title="function not covered" >ta</span>g =&gt; {</span>
668
668
  // When a contextual service is used we might not provide the context in tag, extract from service instead
669
- const tagService = hook.app.getService('tags', tag.context || context)
670
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tagService) <span class="cstat-no" title="statement not covered" >return P</span>romise.reject(new Error('No valid context found to retrieve tag service for ', tag))
671
- else return tagService.remove(null, { query: tag })
669
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.app.getService('tags', tag.context || context)</span>
670
+ <span class="cstat-no" title="statement not covered" > if (!tagService) <span class="cstat-no" title="statement not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span></span>
671
+ else <span class="cstat-no" title="statement not covered" >return tagService.remove(null, { query: tag })</span>
672
672
  })
673
- await Promise.all(removePromises)
673
+ <span class="cstat-no" title="statement not covered" > await Promise.all(removePromises)</span>
674
674
  }
675
675
  }
676
676
  // Avoid transferring some internal data
677
677
  // item.tags = item.tags.map(tag =&gt; _.omit(tag, ['count']))
678
678
  &nbsp;
679
- return hook
679
+ <span class="cstat-no" title="statement not covered" > return hook</span>
680
680
  }
681
681
  &nbsp;
682
- export function addTagIfNew (hook) {
683
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
684
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'addTagIfNew\' hook should only be used as a \'before\' hook.')
682
+ export function <span class="fstat-no" title="function not covered" >addTagIfNew </span>(hook) {
683
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
684
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'addTagIfNew\' hook should only be used as a \'before\' hook.')</span>
685
685
  }
686
- const tagService = hook.service
687
- const value = _.get(hook, 'data.value')
688
- const scope = _.get(hook, 'data.scope')
689
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!value || !scope) {
690
- <span class="cstat-no" title="statement not covered" > throw n</span>ew BadRequest('Scope and value should be provided to create a tag')
686
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.service</span>
687
+ const value = <span class="cstat-no" title="statement not covered" >_.get(hook, 'data.value')</span>
688
+ const scope = <span class="cstat-no" title="statement not covered" >_.get(hook, 'data.scope')</span>
689
+ <span class="cstat-no" title="statement not covered" > if (!value || !scope) {</span>
690
+ <span class="cstat-no" title="statement not covered" > throw new BadRequest('Scope and value should be provided to create a tag')</span>
691
691
  }
692
692
  &nbsp;
693
- return tagService.find({ query: { value, scope } })
694
- .then(result =&gt; {
693
+ <span class="cstat-no" title="statement not covered" > return tagService.find({ query: { value, scope } })</span>
694
+ .then(<span class="fstat-no" title="function not covered" >re</span>sult =&gt; {
695
695
  // If it already exist avoid creating it in DB,
696
696
  // simply update counter and return it
697
- <span class="missing-if-branch" title="if path not taken" >I</span>if (result.total &gt; 0) {
698
- const tag = <span class="cstat-no" title="statement not covered" >result.d</span>ata[0]
699
- <span class="cstat-no" title="statement not covered" > hook.r</span>esult = tag
700
- <span class="cstat-no" title="statement not covered" > tag.c</span>ount += 1
701
- <span class="cstat-no" title="statement not covered" > debug('</span>Increasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)
702
- <span class="cstat-no" title="statement not covered" > return t</span>agService.patch(tag._id.toString(), { count: tag.count })
697
+ <span class="cstat-no" title="statement not covered" > if (result.total &gt; 0) {</span>
698
+ const tag = <span class="cstat-no" title="statement not covered" >result.data[0]</span>
699
+ <span class="cstat-no" title="statement not covered" > hook.result = tag</span>
700
+ <span class="cstat-no" title="statement not covered" > tag.count += 1</span>
701
+ <span class="cstat-no" title="statement not covered" > debug('Increasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)</span>
702
+ <span class="cstat-no" title="statement not covered" > return tagService.patch(tag._id.toString(), { count: tag.count })</span>
703
703
  } else {
704
704
  // Otherwise initialize tag counter
705
- hook.data.count = 1
706
- return Promise.resolve(hook)
705
+ <span class="cstat-no" title="statement not covered" > hook.data.count = 1</span>
706
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
707
707
  }
708
708
  })
709
- .then(() =&gt; {
710
- return hook
709
+ .then(<span class="fstat-no" title="function not covered" >()</span> =&gt; {
710
+ <span class="cstat-no" title="statement not covered" > return hook</span>
711
711
  })
712
712
  }
713
713
  &nbsp;
714
- export function removeTagIfUnused (hook) {
715
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
716
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'removeTagIfUnused\' hook should only be used as a \'before\' hook.')
714
+ export function <span class="fstat-no" title="function not covered" >removeTagIfUnused </span>(hook) {
715
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
716
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'removeTagIfUnused\' hook should only be used as a \'before\' hook.')</span>
717
717
  }
718
718
  &nbsp;
719
- const tagService = hook.service
720
- const value = _.get(hook.params, 'query.value')
721
- const scope = _.get(hook.params, 'query.scope')
722
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!value || !scope) {
723
- <span class="cstat-no" title="statement not covered" > throw n</span>ew BadRequest('Scope and value should be provided to remove a tag')
719
+ const tagService = <span class="cstat-no" title="statement not covered" >hook.service</span>
720
+ const value = <span class="cstat-no" title="statement not covered" >_.get(hook.params, 'query.value')</span>
721
+ const scope = <span class="cstat-no" title="statement not covered" >_.get(hook.params, 'query.scope')</span>
722
+ <span class="cstat-no" title="statement not covered" > if (!value || !scope) {</span>
723
+ <span class="cstat-no" title="statement not covered" > throw new BadRequest('Scope and value should be provided to remove a tag')</span>
724
724
  }
725
725
  &nbsp;
726
- return tagService.find({ query: { value, scope } })
727
- .then(result =&gt; {
726
+ <span class="cstat-no" title="statement not covered" > return tagService.find({ query: { value, scope } })</span>
727
+ .then(<span class="fstat-no" title="function not covered" >re</span>sult =&gt; {
728
728
  // If it already exist decrease counter and erase it if not used anymore
729
- <span class="missing-if-branch" title="else path not taken" >E</span>if (result.total &gt; 0) {
730
- const tag = result.data[0]
731
- hook.result = tag
732
- tag.count -= 1
733
- <span class="missing-if-branch" title="else path not taken" >E</span>if (tag.count &lt;= 0) {
734
- debug('Removing unused tag ' + tag.value + ' with scope ' + tag.scope)
735
- return tagService.remove(tag._id.toString())
729
+ <span class="cstat-no" title="statement not covered" > if (result.total &gt; 0) {</span>
730
+ const tag = <span class="cstat-no" title="statement not covered" >result.data[0]</span>
731
+ <span class="cstat-no" title="statement not covered" > hook.result = tag</span>
732
+ <span class="cstat-no" title="statement not covered" > tag.count -= 1</span>
733
+ <span class="cstat-no" title="statement not covered" > if (tag.count &lt;= 0) {</span>
734
+ <span class="cstat-no" title="statement not covered" > debug('Removing unused tag ' + tag.value + ' with scope ' + tag.scope)</span>
735
+ <span class="cstat-no" title="statement not covered" > return tagService.remove(tag._id.toString())</span>
736
736
  } else {
737
- <span class="cstat-no" title="statement not covered" > debug('</span>Decreasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)
738
- <span class="cstat-no" title="statement not covered" > return t</span>agService.patch(tag._id.toString(), { count: tag.count })
737
+ <span class="cstat-no" title="statement not covered" > debug('Decreasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)</span>
738
+ <span class="cstat-no" title="statement not covered" > return tagService.patch(tag._id.toString(), { count: tag.count })</span>
739
739
  }
740
740
  } else {
741
741
  // Should not be possible, this will skip DB call
742
- <span class="cstat-no" title="statement not covered" > hook.r</span>esult = null
743
- <span class="cstat-no" title="statement not covered" > return P</span>romise.resolve(hook)
742
+ <span class="cstat-no" title="statement not covered" > hook.result = null</span>
743
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
744
744
  }
745
745
  })
746
- .then(() =&gt; {
747
- return hook
746
+ .then(<span class="fstat-no" title="function not covered" >()</span> =&gt; {
747
+ <span class="cstat-no" title="statement not covered" > return hook</span>
748
748
  })
749
749
  }
750
750
  &nbsp;
751
- export function tagResource (hook) {
752
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'after') {
753
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'tagResource\' hook should only be used as a \'after\' hook.')
751
+ export function <span class="fstat-no" title="function not covered" >tagResource </span>(hook) {
752
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
753
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'tagResource\' hook should only be used as a \'after\' hook.')</span>
754
754
  }
755
- const tag = hook.result
756
- const params = hook.params
757
- const query = params.query
758
- const context = hook.service.context
759
- const resourcesService = params.resourcesService
760
- const resource = params.resource
755
+ const tag = <span class="cstat-no" title="statement not covered" >hook.result</span>
756
+ const params = <span class="cstat-no" title="statement not covered" >hook.params</span>
757
+ const query = <span class="cstat-no" title="statement not covered" >params.query</span>
758
+ const context = <span class="cstat-no" title="statement not covered" >hook.service.context</span>
759
+ const resourcesService = <span class="cstat-no" title="statement not covered" >params.resourcesService</span>
760
+ const resource = <span class="cstat-no" title="statement not covered" >params.resource</span>
761
761
  // If not already tagged
762
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!_.find(resource.tags, resourceTag =&gt; isTagEqual(resourceTag, tag))) {
762
+ <span class="cstat-no" title="statement not covered" > if (!_.find(resource.tags, <span class="fstat-no" title="function not covered" >re</span>sourceTag =&gt; <span class="cstat-no" title="statement not covered" >isTagEqual(resourceTag, tag))</span>) {</span>
763
763
  // Initialize on first tag
764
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!resource.tags) {
765
- <span class="cstat-no" title="statement not covered" > resource.t</span>ags = []
764
+ <span class="cstat-no" title="statement not covered" > if (!resource.tags) {</span>
765
+ <span class="cstat-no" title="statement not covered" > resource.tags = []</span>
766
766
  }
767
767
  // Add context because tags might come from different ones on the same target object
768
- <span class="missing-if-branch" title="if path not taken" >I</span>if (context) {
769
- <span class="cstat-no" title="statement not covered" > tag.c</span>ontext = (typeof context === 'object' ? context._id.toString() : context.toString())
768
+ <span class="cstat-no" title="statement not covered" > if (context) {</span>
769
+ <span class="cstat-no" title="statement not covered" > tag.context = (typeof context === 'object' ? context._id.toString() : context.toString())</span>
770
770
  }
771
- resource.tags.push(tag)
772
- return resourcesService.patch(resource._id.toString(), {
771
+ <span class="cstat-no" title="statement not covered" > resource.tags.push(tag)</span>
772
+ <span class="cstat-no" title="statement not covered" > return resourcesService.patch(resource._id.toString(), {</span>
773
773
  tags: resource.tags
774
774
  }, {
775
775
  user: hook.params.user,
@@ -777,30 +777,30 @@ export function tagResource (hook) {
777
777
  // Delete own parameters from query otherwise it will be used to filter items
778
778
  query: _.omit(query, ['resource', 'resourcesService', 'scope', 'value', 'context'])
779
779
  })
780
- .then(subject =&gt; {
781
- debug('Tag ' + tag.value + ' set on resource ' + resource._id.toString() + ' with scope ' + tag.scope)
782
- return hook
780
+ .then(<span class="fstat-no" title="function not covered" >su</span>bject =&gt; {
781
+ <span class="cstat-no" title="statement not covered" > debug('Tag ' + tag.value + ' set on resource ' + resource._id.toString() + ' with scope ' + tag.scope)</span>
782
+ <span class="cstat-no" title="statement not covered" > return hook</span>
783
783
  })
784
784
  } else {
785
- <span class="cstat-no" title="statement not covered" > return P</span>romise.resolve(hook)
785
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
786
786
  }
787
787
  }
788
788
  &nbsp;
789
- export function untagResource (hook) {
790
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'after') {
791
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'untagResource\' hook should only be used as a \'after\' hook.')
789
+ export function <span class="fstat-no" title="function not covered" >untagResource </span>(hook) {
790
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
791
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'untagResource\' hook should only be used as a \'after\' hook.')</span>
792
792
  }
793
793
  &nbsp;
794
- const tag = hook.result
795
- const params = hook.params
796
- const query = params.query
797
- const resourcesService = params.resourcesService
798
- const resource = params.resource
794
+ const tag = <span class="cstat-no" title="statement not covered" >hook.result</span>
795
+ const params = <span class="cstat-no" title="statement not covered" >hook.params</span>
796
+ const query = <span class="cstat-no" title="statement not covered" >params.query</span>
797
+ const resourcesService = <span class="cstat-no" title="statement not covered" >params.resourcesService</span>
798
+ const resource = <span class="cstat-no" title="statement not covered" >params.resource</span>
799
799
  // If already tagged
800
- const tagIndex = _.findIndex(resource.tags, resourceTag =&gt; isTagEqual(resourceTag, tag))
801
- <span class="missing-if-branch" title="else path not taken" >E</span>if (tagIndex &gt;= 0) {
802
- _.pullAt(resource.tags, tagIndex)
803
- return resourcesService.patch(resource._id.toString(), {
800
+ const tagIndex = <span class="cstat-no" title="statement not covered" >_.findIndex(resource.tags, <span class="fstat-no" title="function not covered" >re</span>sourceTag =&gt; <span class="cstat-no" title="statement not covered" >isTagEqual(resourceTag, tag))</span></span>
801
+ <span class="cstat-no" title="statement not covered" > if (tagIndex &gt;= 0) {</span>
802
+ <span class="cstat-no" title="statement not covered" > _.pullAt(resource.tags, tagIndex)</span>
803
+ <span class="cstat-no" title="statement not covered" > return resourcesService.patch(resource._id.toString(), {</span>
804
804
  tags: resource.tags
805
805
  }, {
806
806
  user: params.user,
@@ -808,12 +808,12 @@ export function untagResource (hook) {
808
808
  // Delete own parameters from query otherwise it will be used to filter items
809
809
  query: _.omit(query, ['resource', 'resourcesService', 'scope', 'value', 'context'])
810
810
  })
811
- .then(subject =&gt; {
812
- debug('Tag ' + tag.value + ' unset on resource ' + resource._id.toString() + ' with scope ' + tag.scope)
813
- return hook
811
+ .then(<span class="fstat-no" title="function not covered" >su</span>bject =&gt; {
812
+ <span class="cstat-no" title="statement not covered" > debug('Tag ' + tag.value + ' unset on resource ' + resource._id.toString() + ' with scope ' + tag.scope)</span>
813
+ <span class="cstat-no" title="statement not covered" > return hook</span>
814
814
  })
815
815
  } else {
816
- <span class="cstat-no" title="statement not covered" > return P</span>romise.resolve(hook)
816
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
817
817
  }
818
818
  }
819
819
  &nbsp;</pre></td></tr></table></pre>
@@ -823,7 +823,7 @@ export function untagResource (hook) {
823
823
  <div class='footer quiet pad2 space-top1 center small'>
824
824
  Code coverage generated by
825
825
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
826
- at Wed Dec 08 2021 20:41:51 GMT+0100 (GMT+01:00)
826
+ at Thu Feb 17 2022 13:49:01 GMT+0100 (GMT+01:00)
827
827
  </div>
828
828
  </div>
829
829
  <script src="../../../prettify.js"></script>