@kalisio/kdk 1.3.6 → 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 (577) hide show
  1. package/.nyc_output/{0d403586-0c7c-4336-94d1-a49e9f02a905.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/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  4. package/.nyc_output/{21dd57bd-48c5-41c8-8800-252db32a9366.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
  5. package/.nyc_output/{3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.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/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
  8. package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  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 +167 -79
  13. package/README.md +1 -1
  14. package/coverage/core/api/application.js.html +436 -436
  15. package/coverage/core/api/authentication.js.html +119 -119
  16. package/coverage/core/api/db.js.html +201 -201
  17. package/coverage/core/api/hooks/hooks.account.js.html +48 -48
  18. package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
  19. package/coverage/core/api/hooks/hooks.authorisations.js.html +369 -378
  20. package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
  21. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  22. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  23. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  24. package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
  25. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  26. package/coverage/core/api/hooks/hooks.query.js.html +234 -198
  27. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  28. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  29. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  30. package/coverage/core/api/hooks/hooks.users.js.html +304 -256
  31. package/coverage/core/api/hooks/index.html +172 -172
  32. package/coverage/core/api/hooks/index.js.html +24 -24
  33. package/coverage/core/api/index.html +75 -75
  34. package/coverage/core/api/index.js.html +26 -26
  35. package/coverage/core/api/marshall.js.html +57 -57
  36. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  37. package/coverage/core/api/models/index.html +50 -50
  38. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  39. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  40. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  41. package/coverage/core/api/oauth2-handler.js.html +18 -18
  42. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  43. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  44. package/coverage/core/api/services/account/account.service.js.html +108 -108
  45. package/coverage/core/api/services/account/index.html +32 -32
  46. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  47. package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -129
  48. package/coverage/core/api/services/authorisations/index.html +28 -28
  49. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  50. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  51. package/coverage/core/api/services/databases/index.html +24 -24
  52. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  53. package/coverage/core/api/services/devices/devices.service.js.html +121 -121
  54. package/coverage/core/api/services/devices/index.html +28 -28
  55. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  56. package/coverage/core/api/services/groups/index.html +13 -13
  57. package/coverage/core/api/services/index.html +21 -21
  58. package/coverage/core/api/services/index.js.html +137 -137
  59. package/coverage/core/api/services/mailer/index.html +24 -24
  60. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  61. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  62. package/coverage/core/api/services/organisations/index.html +24 -24
  63. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  64. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  65. package/coverage/core/api/services/pusher/index.html +34 -34
  66. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  67. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  68. package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
  69. package/coverage/core/api/services/storage/index.html +21 -21
  70. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  71. package/coverage/core/api/services/tags/index.html +21 -21
  72. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  73. package/coverage/core/api/services/users/index.html +21 -21
  74. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  75. package/coverage/core/common/errors.js.html +1 -1
  76. package/coverage/core/common/index.html +42 -27
  77. package/coverage/core/common/index.js.html +16 -16
  78. package/coverage/core/common/permissions.js.html +325 -265
  79. package/coverage/index.html +182 -182
  80. package/coverage/lcov-report/core/api/application.js.html +436 -436
  81. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  82. package/coverage/lcov-report/core/api/db.js.html +201 -201
  83. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
  84. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
  85. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +369 -378
  86. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
  87. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  88. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  89. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  90. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
  91. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  92. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +234 -198
  93. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  94. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  95. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  96. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +304 -256
  97. package/coverage/lcov-report/core/api/hooks/index.html +172 -172
  98. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  99. package/coverage/lcov-report/core/api/index.html +75 -75
  100. package/coverage/lcov-report/core/api/index.js.html +26 -26
  101. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  102. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  103. package/coverage/lcov-report/core/api/models/index.html +50 -50
  104. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  105. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  106. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  107. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  108. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  109. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  110. package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
  111. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  112. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  113. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -129
  114. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  115. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  116. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  117. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  118. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  119. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
  120. package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
  121. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  122. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  123. package/coverage/lcov-report/core/api/services/index.html +21 -21
  124. package/coverage/lcov-report/core/api/services/index.js.html +137 -137
  125. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  126. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  127. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  128. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  129. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  130. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  131. package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
  132. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  133. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  134. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
  135. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  136. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  137. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  138. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  139. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  140. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  141. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  142. package/coverage/lcov-report/core/common/index.html +42 -27
  143. package/coverage/lcov-report/core/common/index.js.html +16 -16
  144. package/coverage/lcov-report/core/common/permissions.js.html +325 -265
  145. package/coverage/lcov-report/index.html +182 -182
  146. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  147. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +118 -37
  148. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  149. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  150. package/coverage/lcov-report/map/api/index.html +1 -1
  151. package/coverage/lcov-report/map/api/index.js.html +1 -1
  152. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  153. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  154. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  155. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  156. package/coverage/lcov-report/map/api/models/index.html +1 -1
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  158. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  159. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  160. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  161. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  162. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  163. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  164. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +2 -2
  165. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  166. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  167. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  168. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/index.html +1 -1
  170. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  171. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  172. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  173. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  174. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  175. package/coverage/lcov-report/map/common/index.html +12 -12
  176. package/coverage/lcov-report/map/common/index.js.html +1 -1
  177. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  178. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  179. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  180. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  181. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  182. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  183. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  184. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  185. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  186. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
  188. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  189. package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
  190. package/coverage/lcov.info +3742 -3949
  191. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  192. package/coverage/map/api/hooks/hooks.query.js.html +118 -37
  193. package/coverage/map/api/hooks/index.html +7 -7
  194. package/coverage/map/api/hooks/index.js.html +1 -1
  195. package/coverage/map/api/index.html +1 -1
  196. package/coverage/map/api/index.js.html +1 -1
  197. package/coverage/map/api/marshall.js.html +1 -1
  198. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  199. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  200. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  201. package/coverage/map/api/models/index.html +1 -1
  202. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  203. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  204. package/coverage/map/api/services/alerts/index.html +1 -1
  205. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  206. package/coverage/map/api/services/catalog/index.html +1 -1
  207. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  208. package/coverage/map/api/services/daptiles/index.html +1 -1
  209. package/coverage/map/api/services/features/features.hooks.js.html +2 -2
  210. package/coverage/map/api/services/features/index.html +1 -1
  211. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  212. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  213. package/coverage/map/api/services/geocoder/index.html +1 -1
  214. package/coverage/map/api/services/index.html +1 -1
  215. package/coverage/map/api/services/index.js.html +1 -1
  216. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  217. package/coverage/map/common/errors.js.html +1 -1
  218. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  219. package/coverage/map/common/grid.js.html +1 -1
  220. package/coverage/map/common/index.html +12 -12
  221. package/coverage/map/common/index.js.html +1 -1
  222. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  223. package/coverage/map/common/moment-utils.js.html +1 -1
  224. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  225. package/coverage/map/common/opendap-utils.js.html +1 -1
  226. package/coverage/map/common/permissions.js.html +1 -1
  227. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  228. package/coverage/map/common/tms-utils.js.html +1 -1
  229. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  230. package/coverage/map/common/wcs-utils.js.html +1 -1
  231. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  232. package/coverage/map/common/wfs-utils.js.html +8 -5
  233. package/coverage/map/common/wms-utils.js.html +1 -1
  234. package/coverage/map/common/wmts-utils.js.html +71 -11
  235. package/extras/icons/kanban.png +0 -0
  236. package/extras/tours/core/add-member.js +10 -1
  237. package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
  238. package/extras/tours/core/groups.js +8 -2
  239. package/extras/tours/core/members.js +11 -21
  240. package/extras/tours/core/tags.js +7 -1
  241. package/extras/tours/map/catalog-categories.js +4 -4
  242. package/extras/tours/map/catalog-panel.js +16 -16
  243. package/extras/tours/map/favorite-views.js +3 -3
  244. package/lib/core/api/hooks/hooks.authorisations.js +149 -140
  245. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  246. package/lib/core/api/hooks/hooks.organisations.js +1 -23
  247. package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
  248. package/lib/core/api/hooks/hooks.query.js +22 -0
  249. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  250. package/lib/core/api/hooks/hooks.users.js +34 -18
  251. package/lib/core/api/hooks/hooks.users.js.map +1 -1
  252. package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
  253. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  254. package/lib/core/client/api.js +1 -0
  255. package/lib/core/client/api.js.map +1 -1
  256. package/lib/core/client/components/account/KAccountDZ.vue +3 -4
  257. package/lib/core/client/components/account/KAccountDevices.vue +5 -6
  258. package/lib/core/client/components/account/KDeviceCard.vue +2 -1
  259. package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
  260. package/lib/core/client/components/collection/KBoard.vue +26 -155
  261. package/lib/core/client/components/collection/KCard.vue +144 -42
  262. package/lib/core/client/components/collection/KCardSection.vue +52 -0
  263. package/lib/core/client/components/collection/KColumn.vue +181 -0
  264. package/lib/core/client/components/collection/KGrid.vue +13 -18
  265. package/lib/core/client/components/collection/KHistory.vue +61 -89
  266. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  267. package/lib/core/client/components/collection/KItem.vue +21 -2
  268. package/lib/core/client/components/collection/KList.vue +9 -12
  269. package/lib/core/client/components/collection/KTable.vue +33 -39
  270. package/lib/core/client/components/collection/index.js +6 -1
  271. package/lib/core/client/components/collection/index.js.map +1 -1
  272. package/lib/core/client/components/editor/KEditor.vue +0 -6
  273. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  274. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  275. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  276. package/lib/core/client/components/form/KChipsField.vue +28 -23
  277. package/lib/core/client/components/form/KColorField.vue +30 -25
  278. package/lib/core/client/components/form/KFileField.vue +11 -40
  279. package/lib/core/client/components/form/KForm.vue +0 -12
  280. package/lib/core/client/components/form/KIconField.vue +1 -0
  281. package/lib/core/client/components/form/KItemField.vue +6 -2
  282. package/lib/core/client/components/form/KRoleField.vue +56 -0
  283. package/lib/core/client/components/form/KSelectField.vue +16 -1
  284. package/lib/core/client/components/form/KView.vue +5 -14
  285. package/lib/core/client/components/frame/KAction.vue +18 -12
  286. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  287. package/lib/core/client/components/frame/KChart.vue +60 -0
  288. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  289. package/lib/core/client/components/frame/KContent.vue +1 -1
  290. package/lib/core/client/components/frame/KModal.vue +30 -44
  291. package/lib/core/client/components/frame/KPanel.vue +1 -1
  292. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  293. package/lib/core/client/components/frame/KSpot.vue +31 -0
  294. package/lib/core/client/components/frame/KStamp.vue +62 -0
  295. package/lib/core/client/components/frame/index.js +56 -1
  296. package/lib/core/client/components/frame/index.js.map +1 -1
  297. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  298. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  299. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  300. package/lib/core/client/components/input/KUploader.vue +14 -5
  301. package/lib/core/client/components/layout/KAbout.vue +9 -3
  302. package/lib/core/client/components/layout/KFab.vue +1 -1
  303. package/lib/core/client/components/layout/KPage.vue +44 -19
  304. package/lib/core/client/components/layout/KTour.vue +2 -2
  305. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  306. package/lib/core/client/components/layout/KWindow.vue +1 -1
  307. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  308. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  309. package/lib/core/client/components/menu/KMenu.vue +103 -0
  310. package/lib/core/client/components/team/KAddMember.vue +17 -9
  311. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  312. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  313. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  314. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  315. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  316. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  317. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  318. package/lib/core/client/components/team/KTagCard.vue +26 -26
  319. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  320. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  321. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  322. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  323. package/lib/core/client/i18n/core_en.json +138 -94
  324. package/lib/core/client/i18n/core_fr.json +61 -17
  325. package/lib/core/client/index.js +46 -14
  326. package/lib/core/client/index.js.map +1 -1
  327. package/lib/core/client/layout.js +8 -1
  328. package/lib/core/client/layout.js.map +1 -1
  329. package/lib/core/client/mixins/mixin.authorisation.js +28 -18
  330. package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
  331. package/lib/core/client/mixins/mixin.base-collection.js +57 -9
  332. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  333. package/lib/core/client/mixins/mixin.base-context.js +1 -1
  334. package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
  335. package/lib/core/client/mixins/mixin.base-editor.js +26 -16
  336. package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
  337. package/lib/core/client/mixins/mixin.base-field.js +0 -4
  338. package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
  339. package/lib/core/client/mixins/mixin.base-item.js +29 -14
  340. package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
  341. package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
  342. package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
  343. package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
  344. package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
  345. package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
  346. package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
  347. package/lib/core/client/mixins/mixin.service.js +5 -33
  348. package/lib/core/client/mixins/mixin.service.js.map +1 -1
  349. package/lib/core/client/reader.js +54 -0
  350. package/lib/core/client/reader.js.map +1 -0
  351. package/lib/core/client/readers/index.js +30 -0
  352. package/lib/core/client/readers/index.js.map +1 -0
  353. package/lib/core/client/readers/reader.csv.js +43 -0
  354. package/lib/core/client/readers/reader.csv.js.map +1 -0
  355. package/lib/core/client/readers/reader.json.js +38 -0
  356. package/lib/core/client/readers/reader.json.js.map +1 -0
  357. package/lib/core/client/services/index.js +23 -0
  358. package/lib/core/client/services/index.js.map +1 -1
  359. package/lib/core/client/services/local-settings.service.js +4 -0
  360. package/lib/core/client/services/local-settings.service.js.map +1 -1
  361. package/lib/core/client/time.js +131 -0
  362. package/lib/core/client/time.js.map +1 -0
  363. package/lib/core/common/permissions.js +65 -23
  364. package/lib/core/common/permissions.js.map +1 -1
  365. package/lib/core/common/schemas/groups.create.json +1 -1
  366. package/lib/core/common/schemas/groups.update.json +1 -1
  367. package/lib/core/common/schemas/organisations.create.json +1 -1
  368. package/lib/core/common/schemas/organisations.update.json +2 -2
  369. package/lib/core/common/schemas/settings.update.json +139 -0
  370. package/lib/core/common/schemas/tags.update.json +9 -1
  371. package/lib/map/api/hooks/hooks.query.js +55 -29
  372. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  373. package/lib/map/api/services/features/features.hooks.js +1 -1
  374. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  375. package/lib/map/client/components/KCaptureToolbar.vue +156 -0
  376. package/lib/map/client/components/KColorLegend.vue +25 -23
  377. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  378. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  379. package/lib/map/client/components/KFeaturesFilter.vue +18 -8
  380. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  381. package/lib/map/client/components/KLayerEditionToolbar.vue +51 -0
  382. package/lib/map/client/components/KLayerStyleEditor.vue +12 -5
  383. package/lib/map/client/components/KLayerStyleForm.vue +44 -33
  384. package/lib/map/client/components/KLocationInput.vue +126 -65
  385. package/lib/map/client/components/KLocationMap.vue +199 -84
  386. package/lib/map/client/components/KMeasureTool.vue +340 -0
  387. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  388. package/lib/map/client/components/KTimeline.vue +41 -37
  389. package/lib/map/client/components/KUrlLegend.vue +21 -19
  390. package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
  391. package/lib/map/client/components/catalog/KCatalog.vue +14 -2
  392. package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
  393. package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
  394. package/lib/map/client/components/catalog/KImportLayer.vue +33 -40
  395. package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
  396. package/lib/map/client/components/catalog/KLayersSelector.vue +44 -42
  397. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  398. package/lib/map/client/components/form/KLocationField.vue +1 -1
  399. package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
  400. package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
  401. package/lib/map/client/components/widget/KInformationBox.vue +10 -16
  402. package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
  403. package/lib/map/client/components/widget/KTimeSeries.vue +119 -31
  404. package/lib/map/client/i18n/map_en.json +105 -20
  405. package/lib/map/client/i18n/map_fr.json +107 -23
  406. package/lib/map/client/init.js +24 -7
  407. package/lib/map/client/init.js.map +1 -1
  408. package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
  409. package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
  410. package/lib/map/client/leaflet/MaskLayer.js +73 -0
  411. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  412. package/lib/map/client/mixins/globe/mixin.base-globe.js +7 -6
  413. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  414. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  415. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  416. package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
  417. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  418. package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
  419. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  420. package/lib/map/client/mixins/index.js +8 -13
  421. package/lib/map/client/mixins/index.js.map +1 -1
  422. package/lib/map/client/mixins/map/mixin.base-map.js +71 -8
  423. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  424. package/lib/map/client/mixins/map/mixin.canvas-layers.js +276 -51
  425. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  426. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  427. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  428. package/lib/map/client/mixins/map/mixin.file-layers.js +46 -93
  429. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  430. package/lib/map/client/mixins/map/mixin.geojson-layers.js +22 -11
  431. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  432. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  433. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  434. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  435. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  436. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  437. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  438. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  439. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  440. package/lib/map/client/mixins/map/mixin.popup.js +4 -0
  441. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  442. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  443. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  444. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  445. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  446. package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
  447. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  448. package/lib/map/client/mixins/mixin.activity.js +62 -68
  449. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  450. package/lib/map/client/mixins/mixin.context.js +26 -3
  451. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  452. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  453. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  454. package/lib/map/client/mixins/mixin.feature-service.js +9 -7
  455. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  456. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  457. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  458. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  459. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  460. package/lib/map/client/pixi-utils.js +9 -0
  461. package/lib/map/client/pixi-utils.js.map +1 -1
  462. package/lib/map/client/readers/index.js +42 -0
  463. package/lib/map/client/readers/index.js.map +1 -0
  464. package/lib/map/client/readers/reader.geojson.js +59 -0
  465. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  466. package/lib/map/client/readers/reader.gpx.js +41 -0
  467. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  468. package/lib/map/client/readers/reader.kml.js +41 -0
  469. package/lib/map/client/readers/reader.kml.js.map +1 -0
  470. package/lib/map/client/utils.js +52 -1
  471. package/lib/map/client/utils.js.map +1 -1
  472. package/lib/map/common/wfs-utils.js +1 -1
  473. package/lib/map/common/wfs-utils.js.map +1 -1
  474. package/lib/map/common/wmts-utils.js +31 -7
  475. package/lib/map/common/wmts-utils.js.map +1 -1
  476. package/lib/test/client/core/account.js +100 -0
  477. package/lib/test/client/core/account.js.map +1 -0
  478. package/lib/test/client/core/api.js +400 -0
  479. package/lib/test/client/core/api.js.map +1 -0
  480. package/lib/test/client/core/collection.js +109 -0
  481. package/lib/test/client/core/collection.js.map +1 -0
  482. package/lib/test/client/core/index.js +90 -0
  483. package/lib/test/client/core/index.js.map +1 -0
  484. package/lib/test/client/core/layout.js +221 -0
  485. package/lib/test/client/core/layout.js.map +1 -0
  486. package/lib/test/client/core/runner.js +203 -0
  487. package/lib/test/client/core/runner.js.map +1 -0
  488. package/lib/test/client/core/screens.js +68 -0
  489. package/lib/test/client/core/screens.js.map +1 -0
  490. package/lib/test/client/core/utils.js +304 -0
  491. package/lib/test/client/core/utils.js.map +1 -0
  492. package/lib/test/client/index.js +20 -0
  493. package/lib/test/client/index.js.map +1 -0
  494. package/lib/test/client/map/catalog.js +192 -0
  495. package/lib/test/client/map/catalog.js.map +1 -0
  496. package/lib/test/client/map/controls.js +54 -0
  497. package/lib/test/client/map/controls.js.map +1 -0
  498. package/lib/test/client/map/index.js +30 -0
  499. package/lib/test/client/map/index.js.map +1 -0
  500. package/package.json +18 -9
  501. package/test.client.js +1 -0
  502. package/tests/core/test-log-2021-09-02.log +47 -0
  503. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  504. package/tests/map/test-log-2021-09-02.log +3 -0
  505. package/.nyc_output/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
  506. package/.nyc_output/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
  507. package/.nyc_output/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
  508. package/.nyc_output/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
  509. package/.nyc_output/processinfo/0d403586-0c7c-4336-94d1-a49e9f02a905.json +0 -1
  510. package/.nyc_output/processinfo/21dd57bd-48c5-41c8-8800-252db32a9366.json +0 -1
  511. package/.nyc_output/processinfo/3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json +0 -1
  512. package/.nyc_output/processinfo/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
  513. package/.nyc_output/processinfo/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
  514. package/.nyc_output/processinfo/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
  515. package/.nyc_output/processinfo/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
  516. package/extras/testcafe/Dockerfile +0 -48
  517. package/extras/testcafe/docker-entrypoint.sh +0 -27
  518. package/extras/testcafe/page-models/core/account.js +0 -75
  519. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  520. package/extras/testcafe/page-models/core/base-page.js +0 -25
  521. package/extras/testcafe/page-models/core/groups.js +0 -36
  522. package/extras/testcafe/page-models/core/index.js +0 -140
  523. package/extras/testcafe/page-models/core/layout.js +0 -145
  524. package/extras/testcafe/page-models/core/members.js +0 -98
  525. package/extras/testcafe/page-models/core/organisations.js +0 -76
  526. package/extras/testcafe/page-models/core/screens.js +0 -99
  527. package/extras/testcafe/page-models/core/tags.js +0 -21
  528. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  529. package/extras/testcafe/page-models/map/catalog.js +0 -132
  530. package/extras/testcafe/page-models/map/index.js +0 -36
  531. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  532. package/extras/testcafe/page-models/map/timeline.js +0 -67
  533. package/lib/core/client/components/frame/KLabel.vue +0 -56
  534. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  535. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  536. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  537. package/lib/map/client/mixins/mixin.time.js +0 -73
  538. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  539. package/tests/core/account.test.js +0 -423
  540. package/tests/core/client.test.js.skip +0 -37
  541. package/tests/core/config/default.js +0 -96
  542. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  543. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  544. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  545. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  546. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  547. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  548. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  549. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  550. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  551. package/tests/core/data/logo.png +0 -0
  552. package/tests/core/hooks.test.js +0 -175
  553. package/tests/core/index.test.js +0 -432
  554. package/tests/core/notifications.test.js +0 -465
  555. package/tests/core/storage.test.js +0 -134
  556. package/tests/core/team.test.js +0 -610
  557. package/tests/core/utils.js +0 -62
  558. package/tests/map/alerts.test.js +0 -554
  559. package/tests/map/config/default.js +0 -112
  560. package/tests/map/config/layers.json +0 -37
  561. package/tests/map/daptiles.test.js +0 -41
  562. package/tests/map/data/DescribeCoverage.xml +0 -55
  563. package/tests/map/data/GetCoverage.tif +0 -0
  564. package/tests/map/data/adsb.observations.json +0 -132
  565. package/tests/map/data/dataset.grb.das +0 -55
  566. package/tests/map/data/dataset.grb.dds +0 -17
  567. package/tests/map/data/dataset.grb.dods +0 -0
  568. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  569. package/tests/map/data/subdataset.grb.dods +0 -0
  570. package/tests/map/data/vigicrues.observations.json +0 -47042
  571. package/tests/map/data/vigicrues.stations.json +0 -15422
  572. package/tests/map/data/zones.json +0 -1228
  573. package/tests/map/forecast-data/gfs-world/u-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
  574. package/tests/map/forecast-data/gfs-world/v-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
  575. package/tests/map/grid-sources.test.js +0 -304
  576. package/tests/map/hooks.test.js +0 -96
  577. package/tests/map/index.test.js +0 -333
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">13.27% </span>
26
+ <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>15/113</span>
28
+ <span class='fraction'>0/109</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">12.9% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>8/62</span>
35
+ <span class='fraction'>0/62</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">5.88% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/17</span>
42
+ <span class='fraction'>0/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">13.73% </span>
47
+ <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>14/102</span>
49
+ <span class='fraction'>0/98</span>
50
50
  </div>
51
51
 
52
52
 
@@ -270,30 +270,30 @@
270
270
  <a name='L211'></a><a href='#L211'>211</a>
271
271
  <a name='L212'></a><a href='#L212'>212</a>
272
272
  <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-yes">1x</span>
273
+ <a name='L214'></a><a href='#L214'>214</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
277
274
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-yes">1x</span>
279
275
  <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-yes">1x</span>
281
276
  <span class="cline-any cline-neutral">&nbsp;</span>
282
277
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-yes">11x</span>
278
+ <span class="cline-any cline-no">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
280
  <span class="cline-any cline-no">&nbsp;</span>
285
281
  <span class="cline-any cline-neutral">&nbsp;</span>
286
282
  <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
287
285
  <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-yes">11x</span>
289
- <span class="cline-any cline-yes">11x</span>
290
- <span class="cline-any cline-yes">7x</span>
291
- <span class="cline-any cline-yes">4x</span>
292
- <span class="cline-any cline-yes">4x</span>
293
286
  <span class="cline-any cline-neutral">&nbsp;</span>
294
287
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">11x</span>
296
- <span class="cline-any cline-yes">6x</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-no">&nbsp;</span>
290
+ <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-no">&nbsp;</span>
292
+ <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-no">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
297
  <span class="cline-any cline-neutral">&nbsp;</span>
298
298
  <span class="cline-any cline-neutral">&nbsp;</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -488,212 +488,212 @@ import _ from 'lodash'
488
488
  import { getItems } from 'feathers-hooks-common'
489
489
  import { populateObject } from './hooks.query'
490
490
  &nbsp;
491
- const debug = makeDebug('kdk:core:pusher:hooks')
491
+ const debug = <span class="cstat-no" title="statement not covered" >makeDebug('kdk:core:pusher:hooks')</span>
492
492
  &nbsp;
493
- const defaultTopicField = 'topics'
493
+ const defaultTopicField = <span class="cstat-no" title="statement not covered" >'topics'</span>
494
494
  &nbsp;
495
- export function populatePushObject (hook) {
496
- <span class="missing-if-branch" title="if path not taken" >I</span>if (hook.type !== 'before') {
497
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'populatePushObject\' hook should only be used as a \'before\' hook.')
495
+ export function <span class="fstat-no" title="function not covered" >populatePushObject </span>(hook) {
496
+ <span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
497
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'populatePushObject\' hook should only be used as a \'before\' hook.')</span>
498
498
  }
499
499
  &nbsp;
500
500
  // This hook is only for some of the operations
501
- let action = ''
502
- if (hook.data) {
503
- action = hook.data.action
504
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (hook.params &amp;&amp; hook.params.query) {
505
- action = hook.params.query.action
501
+ let action = <span class="cstat-no" title="statement not covered" >''</span>
502
+ <span class="cstat-no" title="statement not covered" > if (hook.data) {</span>
503
+ <span class="cstat-no" title="statement not covered" > action = hook.data.action</span>
504
+ } else <span class="cstat-no" title="statement not covered" >if (hook.params &amp;&amp; hook.params.query) {</span>
505
+ <span class="cstat-no" title="statement not covered" > action = hook.params.query.action</span>
506
506
  }
507
507
  &nbsp;
508
- if (action === 'device') return Promise.resolve(hook)
509
- else return populateObject({ serviceField: 'pushObjectService', idField: 'pushObject', throwOnNotFound: true })(hook)
508
+ <span class="cstat-no" title="statement not covered" > if (action === 'device') <span class="cstat-no" title="statement not covered" >return Promise.resolve(hook)</span></span>
509
+ else <span class="cstat-no" title="statement not covered" >return populateObject({ serviceField: 'pushObjectService', idField: 'pushObject', throwOnNotFound: true })(hook)</span>
510
510
  }
511
511
  &nbsp;
512
- export function <span class="fstat-no" title="function not covered" >createTopic (o</span>ptions) {
513
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > return <span class="fstat-no" title="function not covered" >a</span></span>sync function (h</span>ook) {
512
+ export function <span class="fstat-no" title="function not covered" >createTopic </span>(options) {
513
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync function (hook) {</span>
514
514
  <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
515
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'createTopic\' hook should only be used as a \'before\' hook.')
515
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'createTopic\' hook should only be used as a \'before\' hook.')</span>
516
516
  }
517
- const pusherService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('pusher')
518
- const topicField = <span class="cstat-no" title="statement not covered" >_.g</span>et(options, 'topicField', defaultTopicField)
519
- <span class="cstat-no" title="statement not covered" > hook.r</span>esult = await pusherService.create(
517
+ const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
518
+ const topicField = <span class="cstat-no" title="statement not covered" >_.get(options, 'topicField', defaultTopicField)</span>
519
+ <span class="cstat-no" title="statement not covered" > hook.result = await pusherService.create(</span>
520
520
  { action: 'topic', topicField }, {
521
521
  pushObject: hook.result,
522
522
  pushObjectService: hook.service
523
523
  })
524
- <span class="cstat-no" title="statement not covered" > debug('</span>Added topic to object ' + hook.result._id.toString() + ' from service ' + hook.service.path)
525
- <span class="cstat-no" title="statement not covered" > return h</span>ook
524
+ <span class="cstat-no" title="statement not covered" > debug('Added topic to object ' + hook.result._id.toString() + ' from service ' + hook.service.path)</span>
525
+ <span class="cstat-no" title="statement not covered" > return hook</span>
526
526
  }
527
527
  }
528
528
  &nbsp;
529
- export function <span class="fstat-no" title="function not covered" >removeTopic (o</span>ptions) {
530
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > return <span class="fstat-no" title="function not covered" >a</span></span>sync function (h</span>ook) {
529
+ export function <span class="fstat-no" title="function not covered" >removeTopic </span>(options) {
530
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync function (hook) {</span>
531
531
  <span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
532
- <span class="cstat-no" title="statement not covered" > throw n</span>ew Error('The \'removeTopic\' hook should only be used as a \'after\' hook.')
532
+ <span class="cstat-no" title="statement not covered" > throw new Error('The \'removeTopic\' hook should only be used as a \'after\' hook.')</span>
533
533
  }
534
534
  &nbsp;
535
- const pusherService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('pusher')
536
- const topicField = <span class="cstat-no" title="statement not covered" >_.g</span>et(options, 'topicField', defaultTopicField)
537
- <span class="cstat-no" title="statement not covered" > await p</span>usherService.remove(hook.result._id.toString(), {
535
+ const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
536
+ const topicField = <span class="cstat-no" title="statement not covered" >_.get(options, 'topicField', defaultTopicField)</span>
537
+ <span class="cstat-no" title="statement not covered" > await pusherService.remove(hook.result._id.toString(), {</span>
538
538
  query: { action: 'topic', topicField },
539
539
  pushObject: hook.result,
540
540
  pushObjectService: hook.service,
541
541
  patch: hook.method !== 'remove' // Do not patch object when it is deleted
542
542
  })
543
- <span class="cstat-no" title="statement not covered" > debug('</span>Removed topic on object ' + hook.result._id.toString() + ' from service ' + hook.service.path)
544
- <span class="cstat-no" title="statement not covered" > return h</span>ook
543
+ <span class="cstat-no" title="statement not covered" > debug('Removed topic on object ' + hook.result._id.toString() + ' from service ' + hook.service.path)</span>
544
+ <span class="cstat-no" title="statement not covered" > return hook</span>
545
545
  }
546
546
  }
547
547
  &nbsp;
548
- export <span class="fstat-no" title="function not covered" >async function s</span>ubscribeSubjectsToResourceTopic (hook) {
549
- <span class="cstat-no" title="statement not covered" > if (!hook.params.resource || !hook.params.resource.topics) <span class="cstat-no" title="statement not covered" >return P</span></span>romise.resolve(hook)
548
+ export async function <span class="fstat-no" title="function not covered" >subscribeSubjectsToResourceTopic </span>(hook) {
549
+ <span class="cstat-no" title="statement not covered" > if (!hook.params.resource || !hook.params.resource.topics) <span class="cstat-no" title="statement not covered" >return Promise.resolve(hook)</span></span>
550
550
  &nbsp;
551
- const pusherService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('pusher')
552
- const subscriptions = <span class="cstat-no" title="statement not covered" >await pusherService.c</span>reate(
551
+ const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
552
+ const subscriptions = <span class="cstat-no" title="statement not covered" >await pusherService.create(</span>
553
553
  { action: 'subscriptions' }, {
554
554
  pushObject: hook.params.resource,
555
555
  pushObjectService: hook.params.resourcesService,
556
556
  users: hook.params.subjects
557
557
  })
558
- <span class="cstat-no" title="statement not covered" > debug('</span>Subscribed ' + subscriptions.length + ' users on topic object ' + hook.params.resource._id.toString() + ' from service ' + (hook.params.resourcesService.path || hook.params.resourcesService.name), hook.params.subjects)
559
- <span class="cstat-no" title="statement not covered" > return h</span>ook
558
+ <span class="cstat-no" title="statement not covered" > debug('Subscribed ' + subscriptions.length + ' users on topic object ' + hook.params.resource._id.toString() + ' from service ' + (hook.params.resourcesService.path || hook.params.resourcesService.name), hook.params.subjects)</span>
559
+ <span class="cstat-no" title="statement not covered" > return hook</span>
560
560
  }
561
561
  &nbsp;
562
- export <span class="fstat-no" title="function not covered" >async function u</span>nsubscribeSubjectsFromResourceTopic (hook) {
563
- <span class="cstat-no" title="statement not covered" > if (!hook.params.resource || !hook.params.resource.topics) <span class="cstat-no" title="statement not covered" >return P</span></span>romise.resolve(hook)
562
+ export async function <span class="fstat-no" title="function not covered" >unsubscribeSubjectsFromResourceTopic </span>(hook) {
563
+ <span class="cstat-no" title="statement not covered" > if (!hook.params.resource || !hook.params.resource.topics) <span class="cstat-no" title="statement not covered" >return Promise.resolve(hook)</span></span>
564
564
  &nbsp;
565
- const pusherService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('pusher')
566
- const unsubscriptions = <span class="cstat-no" title="statement not covered" >await pusherService.r</span>emove(hook.params.resource._id.toString(), {
565
+ const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
566
+ const unsubscriptions = <span class="cstat-no" title="statement not covered" >await pusherService.remove(hook.params.resource._id.toString(), {</span>
567
567
  query: { action: 'subscriptions' },
568
568
  pushObject: hook.params.resource,
569
569
  pushObjectService: hook.params.resourcesService,
570
570
  users: hook.params.subjects
571
571
  })
572
- <span class="cstat-no" title="statement not covered" > debug('</span>Unsubscribed ' + unsubscriptions.length + ' users on topic object ' + hook.params.resource._id.toString() + ' from service ' + (hook.params.resourcesService.path || hook.params.resourcesService.name), hook.params.subjects)
573
- <span class="cstat-no" title="statement not covered" > return h</span>ook
572
+ <span class="cstat-no" title="statement not covered" > debug('Unsubscribed ' + unsubscriptions.length + ' users on topic object ' + hook.params.resource._id.toString() + ' from service ' + (hook.params.resourcesService.path || hook.params.resourcesService.name), hook.params.subjects)</span>
573
+ <span class="cstat-no" title="statement not covered" > return hook</span>
574
574
  }
575
575
  &nbsp;
576
- export function <span class="fstat-no" title="function not covered" >updateSubjectSubscriptions (o</span>ptions) {
577
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > return <span class="fstat-no" title="function not covered" >a</span></span>sync function (h</span>ook) {
578
- function <span class="fstat-no" title="function not covered" >isTopicObjectEqual (o</span>bject1, object2) {
579
- <span class="cstat-no" title="statement not covered" > return _</span>.isEqual(object1.topics, object2.topics)
576
+ export function <span class="fstat-no" title="function not covered" >updateSubjectSubscriptions </span>(options) {
577
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync function (hook) {</span>
578
+ function <span class="fstat-no" title="function not covered" >isTopicObjectEqual </span>(object1, object2) {
579
+ <span class="cstat-no" title="statement not covered" > return _.isEqual(object1.topics, object2.topics)</span>
580
580
  }
581
581
  &nbsp;
582
- const item = <span class="cstat-no" title="statement not covered" >getItems(h</span>ook)
582
+ const item = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
583
583
  // Field might be on the service object or subject
584
584
  let topics = (<span class="cstat-no" title="statement not covered" >options.subjectAsItem</span>
585
585
  ? _.get(item, options.field) : _.get(hook.params, 'user.' + options.field))
586
586
  <span class="cstat-no" title="statement not covered" > if (!topics) {</span>
587
- <span class="cstat-no" title="statement not covered" > debug('</span>No subscriptions to update for object ', item)
588
- <span class="cstat-no" title="statement not covered" > return P</span>romise.resolve(hook)
587
+ <span class="cstat-no" title="statement not covered" > debug('No subscriptions to update for object ', item)</span>
588
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
589
589
  }
590
590
  &nbsp;
591
591
  // Service can be contextual, look for context on initiator service
592
- const itemService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService(options.service, hook.service.context)
593
- const pusherService = <span class="cstat-no" title="statement not covered" >hook.a</span>pp.getService('pusher')
594
- <span class="cstat-no" title="statement not covered" > topics = (A</span>rray.isArray(topics) ? topics : [topics])
592
+ const itemService = <span class="cstat-no" title="statement not covered" >hook.app.getService(options.service, hook.service.context)</span>
593
+ const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
594
+ <span class="cstat-no" title="statement not covered" > topics = (Array.isArray(topics) ? topics : [topics])</span>
595
595
  // Retrieve previous version of the item
596
- let previousTopics = <span class="cstat-no" title="statement not covered" >_.g</span>et(hook.params.previousItem, options.field)
596
+ let previousTopics = <span class="cstat-no" title="statement not covered" >_.get(hook.params.previousItem, options.field)</span>
597
597
  <span class="cstat-no" title="statement not covered" > if (previousTopics) {</span>
598
- <span class="cstat-no" title="statement not covered" > previousTopics = (A</span>rray.isArray(previousTopics) ? previousTopics : [previousTopics])
598
+ <span class="cstat-no" title="statement not covered" > previousTopics = (Array.isArray(previousTopics) ? previousTopics : [previousTopics])</span>
599
599
  // Find common topics
600
- const commonTopics = <span class="cstat-no" title="statement not covered" >_.i</span>ntersectionWith(topics, previousTopics, isTopicObjectEqual)
600
+ const commonTopics = <span class="cstat-no" title="statement not covered" >_.intersectionWith(topics, previousTopics, isTopicObjectEqual)</span>
601
601
  // Unsubscribe removed topics
602
- let removedTopics = <span class="cstat-no" title="statement not covered" >_.d</span>ifferenceWith(previousTopics, commonTopics, isTopicObjectEqual)
602
+ let removedTopics = <span class="cstat-no" title="statement not covered" >_.differenceWith(previousTopics, commonTopics, isTopicObjectEqual)</span>
603
603
  // Apply filter if any
604
604
  <span class="cstat-no" title="statement not covered" > if (typeof options.filter === 'function') {</span>
605
- <span class="cstat-no" title="statement not covered" > removedTopics = o</span>ptions.filter('unsubscribe', removedTopics)
605
+ <span class="cstat-no" title="statement not covered" > removedTopics = options.filter('unsubscribe', removedTopics)</span>
606
606
  }
607
- <span class="cstat-no" title="statement not covered" > debug('</span>Removing topic subscriptions for object ', item, removedTopics, hook.params.user)
608
- const unsubscribePromises = <span class="cstat-no" title="statement not covered" >removedTopics.m</span>ap(<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >topic =&gt; p</span></span>usherService.remove(topic._id.toString(), {
607
+ <span class="cstat-no" title="statement not covered" > debug('Removing topic subscriptions for object ', item, removedTopics, hook.params.user)</span>
608
+ const unsubscribePromises = <span class="cstat-no" title="statement not covered" >removedTopics.map(<span class="fstat-no" title="function not covered" >to</span>pic =&gt; <span class="cstat-no" title="statement not covered" >pusherService.remove(topic._id.toString(), {</span></span>
609
609
  query: { action: 'subscriptions' },
610
610
  pushObject: topic,
611
611
  pushObjectService: itemService,
612
612
  users: [(options.subjectAsItem ? item : hook.params.user)]
613
613
  }))
614
614
  // And subscribe new ones
615
- let addedTopics = <span class="cstat-no" title="statement not covered" >_.d</span>ifferenceWith(topics, commonTopics, isTopicObjectEqual)
615
+ let addedTopics = <span class="cstat-no" title="statement not covered" >_.differenceWith(topics, commonTopics, isTopicObjectEqual)</span>
616
616
  // Apply filter if any
617
617
  <span class="cstat-no" title="statement not covered" > if (typeof options.filter === 'function') {</span>
618
- <span class="cstat-no" title="statement not covered" > addedTopics = o</span>ptions.filter('subscribe', addedTopics)
618
+ <span class="cstat-no" title="statement not covered" > addedTopics = options.filter('subscribe', addedTopics)</span>
619
619
  }
620
- <span class="cstat-no" title="statement not covered" > debug('</span>Adding topic subscriptions for object ', item, addedTopics, hook.params.user)
621
- const subscribePromises = <span class="cstat-no" title="statement not covered" >addedTopics.m</span>ap(<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >topic =&gt; p</span></span>usherService.create(
620
+ <span class="cstat-no" title="statement not covered" > debug('Adding topic subscriptions for object ', item, addedTopics, hook.params.user)</span>
621
+ const subscribePromises = <span class="cstat-no" title="statement not covered" >addedTopics.map(<span class="fstat-no" title="function not covered" >to</span>pic =&gt; <span class="cstat-no" title="statement not covered" >pusherService.create(</span></span>
622
622
  { action: 'subscriptions' }, {
623
623
  pushObject: topic,
624
624
  pushObjectService: itemService,
625
625
  users: [(options.subjectAsItem ? item : hook.params.user)]
626
626
  }))
627
- const results = <span class="cstat-no" title="statement not covered" >await Promise.a</span>ll([Promise.all(unsubscribePromises), Promise.all(subscribePromises)])
628
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0; i</span> &lt; results[0].length; i++) {</span>
629
- const unsubscriptions = <span class="cstat-no" title="statement not covered" >results[0</span>][i]
630
- const topic = <span class="cstat-no" title="statement not covered" >removedTopics[i</span>]
627
+ const results = <span class="cstat-no" title="statement not covered" >await Promise.all([Promise.all(unsubscribePromises), Promise.all(subscribePromises)])</span>
628
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; results[0].length; i++) {</span>
629
+ const unsubscriptions = <span class="cstat-no" title="statement not covered" >results[0][i]</span>
630
+ const topic = <span class="cstat-no" title="statement not covered" >removedTopics[i]</span>
631
631
  <span class="cstat-no" title="statement not covered" > if (unsubscriptions.length &gt; 0) {</span>
632
- <span class="cstat-no" title="statement not covered" > debug('</span>Unsubscribed from topic ' + topic)
632
+ <span class="cstat-no" title="statement not covered" > debug('Unsubscribed from topic ' + topic)</span>
633
633
  } else {
634
- <span class="cstat-no" title="statement not covered" > debug('</span>No unsubscription on topic ' + topic)
634
+ <span class="cstat-no" title="statement not covered" > debug('No unsubscription on topic ' + topic)</span>
635
635
  }
636
636
  }
637
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0; i</span> &lt; results[1].length; i++) {</span>
638
- const subscriptions = <span class="cstat-no" title="statement not covered" >results[1</span>][i]
639
- const topic = <span class="cstat-no" title="statement not covered" >addedTopics[i</span>]
637
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; results[1].length; i++) {</span>
638
+ const subscriptions = <span class="cstat-no" title="statement not covered" >results[1][i]</span>
639
+ const topic = <span class="cstat-no" title="statement not covered" >addedTopics[i]</span>
640
640
  <span class="cstat-no" title="statement not covered" > if (subscriptions.length &gt; 0) {</span>
641
- <span class="cstat-no" title="statement not covered" > debug('</span>Subscribed from topic ', topic)
641
+ <span class="cstat-no" title="statement not covered" > debug('Subscribed from topic ', topic)</span>
642
642
  } else {
643
- <span class="cstat-no" title="statement not covered" > debug('</span>No subscription on topic ', topic)
643
+ <span class="cstat-no" title="statement not covered" > debug('No subscription on topic ', topic)</span>
644
644
  }
645
645
  }
646
646
  } else {
647
647
  <span class="cstat-no" title="statement not covered" > if (hook.method !== 'remove') {</span>
648
648
  // Subscribed new topics
649
- <span class="cstat-no" title="statement not covered" > debug('</span>Adding topic subscriptions for object ', item, topics, hook.params.user)
649
+ <span class="cstat-no" title="statement not covered" > debug('Adding topic subscriptions for object ', item, topics, hook.params.user)</span>
650
650
  // Apply filter if any
651
651
  <span class="cstat-no" title="statement not covered" > if (typeof options.filter === 'function') {</span>
652
- <span class="cstat-no" title="statement not covered" > topics = o</span>ptions.filter('subscribe', topics)
652
+ <span class="cstat-no" title="statement not covered" > topics = options.filter('subscribe', topics)</span>
653
653
  }
654
- const subscribePromises = <span class="cstat-no" title="statement not covered" >topics.m</span>ap(<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >topic =&gt; p</span></span>usherService.create(
654
+ const subscribePromises = <span class="cstat-no" title="statement not covered" >topics.map(<span class="fstat-no" title="function not covered" >to</span>pic =&gt; <span class="cstat-no" title="statement not covered" >pusherService.create(</span></span>
655
655
  { action: 'subscriptions' }, {
656
656
  pushObject: topic,
657
657
  pushObjectService: itemService,
658
658
  users: [(options.subjectAsItem ? item : hook.params.user)]
659
659
  }))
660
- const results = <span class="cstat-no" title="statement not covered" >await Promise.a</span>ll(subscribePromises)
661
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0; i</span> &lt; results.length; i++) {</span>
662
- const subscriptions = <span class="cstat-no" title="statement not covered" >results[i</span>]
663
- const topic = <span class="cstat-no" title="statement not covered" >topics[i</span>]
660
+ const results = <span class="cstat-no" title="statement not covered" >await Promise.all(subscribePromises)</span>
661
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; results.length; i++) {</span>
662
+ const subscriptions = <span class="cstat-no" title="statement not covered" >results[i]</span>
663
+ const topic = <span class="cstat-no" title="statement not covered" >topics[i]</span>
664
664
  <span class="cstat-no" title="statement not covered" > if (subscriptions.length &gt; 0) {</span>
665
- <span class="cstat-no" title="statement not covered" > debug('</span>Subscribed from topic ', topic)
665
+ <span class="cstat-no" title="statement not covered" > debug('Subscribed from topic ', topic)</span>
666
666
  } else {
667
- <span class="cstat-no" title="statement not covered" > debug('</span>No subscription on topic ', topic)
667
+ <span class="cstat-no" title="statement not covered" > debug('No subscription on topic ', topic)</span>
668
668
  }
669
669
  }
670
670
  } else {
671
671
  // Subscribed new topics
672
- <span class="cstat-no" title="statement not covered" > debug('</span>Removing topic subscriptions for object ', item, topics, hook.params.user)
672
+ <span class="cstat-no" title="statement not covered" > debug('Removing topic subscriptions for object ', item, topics, hook.params.user)</span>
673
673
  // Apply filter if any
674
674
  <span class="cstat-no" title="statement not covered" > if (typeof options.filter === 'function') {</span>
675
- <span class="cstat-no" title="statement not covered" > topics = o</span>ptions.filter('unsubscribe', topics)
675
+ <span class="cstat-no" title="statement not covered" > topics = options.filter('unsubscribe', topics)</span>
676
676
  }
677
- const unsubscribePromises = <span class="cstat-no" title="statement not covered" >topics.m</span>ap(<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >topic =&gt; p</span></span>usherService.remove(topic._id.toString(), {
677
+ const unsubscribePromises = <span class="cstat-no" title="statement not covered" >topics.map(<span class="fstat-no" title="function not covered" >to</span>pic =&gt; <span class="cstat-no" title="statement not covered" >pusherService.remove(topic._id.toString(), {</span></span>
678
678
  query: { action: 'subscriptions' },
679
679
  pushObject: topic,
680
680
  pushObjectService: itemService,
681
681
  users: [(options.subjectAsItem ? item : hook.params.user)]
682
682
  }))
683
- const results = <span class="cstat-no" title="statement not covered" >await Promise.a</span>ll(unsubscribePromises)
684
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0; i</span> &lt; results.length; i++) {</span>
685
- const unsubscriptions = <span class="cstat-no" title="statement not covered" >results[i</span>]
686
- const topic = <span class="cstat-no" title="statement not covered" >topics[i</span>]
683
+ const results = <span class="cstat-no" title="statement not covered" >await Promise.all(unsubscribePromises)</span>
684
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; results.length; i++) {</span>
685
+ const unsubscriptions = <span class="cstat-no" title="statement not covered" >results[i]</span>
686
+ const topic = <span class="cstat-no" title="statement not covered" >topics[i]</span>
687
687
  <span class="cstat-no" title="statement not covered" > if (unsubscriptions.length &gt; 0) {</span>
688
- <span class="cstat-no" title="statement not covered" > debug('</span>Unsubscribed from topic ', topic)
688
+ <span class="cstat-no" title="statement not covered" > debug('Unsubscribed from topic ', topic)</span>
689
689
  } else {
690
- <span class="cstat-no" title="statement not covered" > debug('</span>No unsubscription on topic ', topic)
690
+ <span class="cstat-no" title="statement not covered" > debug('No unsubscription on topic ', topic)</span>
691
691
  }
692
692
  }
693
693
  }
694
694
  }
695
695
  &nbsp;
696
- <span class="cstat-no" title="statement not covered" > return h</span>ook
696
+ <span class="cstat-no" title="statement not covered" > return hook</span>
697
697
  }
698
698
  }
699
699
  &nbsp;</pre></td></tr></table></pre>
@@ -703,7 +703,7 @@ export function <span class="fstat-no" title="function not covered" >updateSubje
703
703
  <div class='footer quiet pad2 space-top1 center small'>
704
704
  Code coverage generated by
705
705
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
706
- at Thu Jul 15 2021 17:32:35 GMT+0200 (GMT+02:00)
706
+ at Fri Jan 07 2022 19:29:57 GMT+0100 (GMT+01:00)
707
707
  </div>
708
708
  </div>
709
709
  <script src="../../../prettify.js"></script>