@kalisio/kdk 2.1.7 → 2.1.8

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 (792) hide show
  1. package/.codeclimate.yml +34 -34
  2. package/.nycrc +5 -5
  3. package/.travis.doc.sh +8 -8
  4. package/.travis.test.sh +40 -40
  5. package/CHANGELOG.md +727 -727
  6. package/LICENSE +21 -21
  7. package/README.md +32 -32
  8. package/core/api/application.js +591 -591
  9. package/core/api/authentication.js +203 -203
  10. package/core/api/db.js +226 -226
  11. package/core/api/hooks/hooks.authentication.js +73 -73
  12. package/core/api/hooks/hooks.authorisations.js +376 -376
  13. package/core/api/hooks/hooks.groups.js +48 -48
  14. package/core/api/hooks/hooks.logger.js +26 -26
  15. package/core/api/hooks/hooks.model.js +290 -290
  16. package/core/api/hooks/hooks.organisations.js +156 -156
  17. package/core/api/hooks/hooks.push.js +56 -56
  18. package/core/api/hooks/hooks.query.js +246 -246
  19. package/core/api/hooks/hooks.schemas.js +73 -73
  20. package/core/api/hooks/hooks.service.js +78 -78
  21. package/core/api/hooks/hooks.storage.js +36 -36
  22. package/core/api/hooks/hooks.users.js +261 -261
  23. package/core/api/hooks/index.js +12 -12
  24. package/core/api/index.js +21 -21
  25. package/core/api/marshall.js +90 -90
  26. package/core/api/models/groups.model.mongodb.js +8 -8
  27. package/core/api/models/organisations.model.mongodb.js +3 -3
  28. package/core/api/models/tags.model.mongodb.js +10 -10
  29. package/core/api/models/users.model.mongodb.js +10 -10
  30. package/core/api/services/account/account.hooks.js +37 -37
  31. package/core/api/services/account/account.service.js +117 -117
  32. package/core/api/services/authorisations/authorisations.hooks.js +33 -33
  33. package/core/api/services/authorisations/authorisations.service.js +139 -139
  34. package/core/api/services/databases/databases.hooks.js +36 -36
  35. package/core/api/services/databases/databases.service.js +5 -5
  36. package/core/api/services/groups/groups.hooks.js +31 -31
  37. package/core/api/services/index.js +126 -126
  38. package/core/api/services/mailer/mailer.hooks.js +35 -35
  39. package/core/api/services/mailer/mailer.service.js +11 -11
  40. package/core/api/services/organisations/organisations.hooks.js +31 -31
  41. package/core/api/services/organisations/organisations.service.js +86 -86
  42. package/core/api/services/push/push.hooks.js +35 -35
  43. package/core/api/services/push/push.service.js +12 -12
  44. package/core/api/services/storage/storage.hooks.js +35 -35
  45. package/core/api/services/storage/storage.service.js +29 -29
  46. package/core/api/services/tags/tags.hooks.js +31 -31
  47. package/core/api/services/users/users.hooks.js +75 -75
  48. package/core/api/utils.js +11 -11
  49. package/core/client/api.js +293 -293
  50. package/core/client/capabilities.js +22 -22
  51. package/core/client/components/KAction.vue +393 -393
  52. package/core/client/components/KAvatar.vue +129 -129
  53. package/core/client/components/KBlock.vue +67 -67
  54. package/core/client/components/KChip.vue +68 -68
  55. package/core/client/components/KChipsPane.vue +103 -103
  56. package/core/client/components/KContent.vue +105 -105
  57. package/core/client/components/KDialog.vue +160 -160
  58. package/core/client/components/KExpandable.vue +49 -49
  59. package/core/client/components/KLogo.vue +32 -32
  60. package/core/client/components/KModal.vue +173 -173
  61. package/core/client/components/KPanel.vue +64 -64
  62. package/core/client/components/KScrollArea.vue +88 -88
  63. package/core/client/components/KSponsor.vue +40 -40
  64. package/core/client/components/KStamp.vue +65 -65
  65. package/core/client/components/KStore.vue +102 -102
  66. package/core/client/components/KTextArea.vue +143 -143
  67. package/core/client/components/KTree.vue +31 -31
  68. package/core/client/components/KVersion.vue +19 -19
  69. package/core/client/components/account/KAccount.vue +68 -68
  70. package/core/client/components/account/KDeleteAccountManager.vue +62 -62
  71. package/core/client/components/account/KEmailManager.vue +128 -128
  72. package/core/client/components/account/KPasswordManager.vue +90 -90
  73. package/core/client/components/account/KProfile.vue +109 -109
  74. package/core/client/components/account/KResetPassword.vue +126 -120
  75. package/core/client/components/account/KSendResetPassword.vue +97 -97
  76. package/core/client/components/account/KSubscription.vue +71 -71
  77. package/core/client/components/account/KSubscriptionsManager.vue +46 -46
  78. package/core/client/components/account/KVerifyEmailManager.vue +105 -105
  79. package/core/client/components/account/index.js +7 -7
  80. package/core/client/components/app/KAbout.vue +98 -98
  81. package/core/client/components/app/KHome.vue +12 -12
  82. package/core/client/components/app/KPlatform.vue +55 -55
  83. package/core/client/components/app/KSettings.vue +42 -42
  84. package/core/client/components/app/KTerms.vue +41 -41
  85. package/core/client/components/app/KTour.vue +448 -448
  86. package/core/client/components/app/KWelcome.vue +133 -133
  87. package/core/client/components/app/index.js +11 -11
  88. package/core/client/components/chart/KChart.vue +197 -197
  89. package/core/client/components/chart/KDataTable.vue +183 -183
  90. package/core/client/components/chart/KStatisticsChart.vue +94 -94
  91. package/core/client/components/chart/KTimeSeriesChart.vue +431 -431
  92. package/core/client/components/chart/index.js +9 -9
  93. package/core/client/components/collection/KBoard.vue +65 -65
  94. package/core/client/components/collection/KCard.vue +196 -196
  95. package/core/client/components/collection/KCardSection.vue +52 -52
  96. package/core/client/components/collection/KColumn.vue +229 -229
  97. package/core/client/components/collection/KFilter.vue +158 -158
  98. package/core/client/components/collection/KGrid.vue +121 -121
  99. package/core/client/components/collection/KHistory.vue +118 -118
  100. package/core/client/components/collection/KHistoryEntry.vue +111 -111
  101. package/core/client/components/collection/KItem.vue +128 -128
  102. package/core/client/components/collection/KList.vue +135 -135
  103. package/core/client/components/collection/KSorter.vue +46 -46
  104. package/core/client/components/collection/KTable.vue +238 -238
  105. package/core/client/components/collection/index.js +19 -19
  106. package/core/client/components/editor/KEditor.vue +52 -52
  107. package/core/client/components/editor/KModalEditor.vue +96 -96
  108. package/core/client/components/editor/index.js +7 -7
  109. package/core/client/components/form/KChipsField.vue +162 -162
  110. package/core/client/components/form/KColorField.vue +69 -69
  111. package/core/client/components/form/KColorScaleField.vue +86 -86
  112. package/core/client/components/form/KDateTimeRangeField.vue +65 -65
  113. package/core/client/components/form/KDatetimeField.vue +70 -70
  114. package/core/client/components/form/KEmailField.vue +33 -33
  115. package/core/client/components/form/KFileField.vue +161 -161
  116. package/core/client/components/form/KForm.vue +247 -247
  117. package/core/client/components/form/KIconField.vue +101 -101
  118. package/core/client/components/form/KItemField.vue +123 -123
  119. package/core/client/components/form/KNumberField.vue +33 -33
  120. package/core/client/components/form/KOptionsField.vue +63 -63
  121. package/core/client/components/form/KPasswordField.vue +57 -57
  122. package/core/client/components/form/KPhoneField.vue +32 -32
  123. package/core/client/components/form/KPropertyItemField.vue +119 -119
  124. package/core/client/components/form/KRoleField.vue +60 -60
  125. package/core/client/components/form/KSelectField.vue +143 -143
  126. package/core/client/components/form/KTextField.vue +48 -48
  127. package/core/client/components/form/KTextareaField.vue +88 -88
  128. package/core/client/components/form/KToggleField.vue +46 -46
  129. package/core/client/components/form/KTokenField.vue +80 -80
  130. package/core/client/components/form/KUnitField.vue +57 -57
  131. package/core/client/components/form/KUrlField.vue +32 -32
  132. package/core/client/components/form/KView.vue +118 -118
  133. package/core/client/components/form/index.js +7 -7
  134. package/core/client/components/index.js +48 -48
  135. package/core/client/components/input/KColorChooser.vue +63 -63
  136. package/core/client/components/input/KIconChooser.vue +308 -308
  137. package/core/client/components/input/KOptionsChooser.vue +122 -122
  138. package/core/client/components/input/KPalette.vue +40 -40
  139. package/core/client/components/input/index.js +11 -11
  140. package/core/client/components/layout/KFab.vue +113 -113
  141. package/core/client/components/layout/KLayout.vue +64 -64
  142. package/core/client/components/layout/KOpener.vue +140 -140
  143. package/core/client/components/layout/KPage.vue +320 -320
  144. package/core/client/components/layout/KPageSticky.vue +53 -53
  145. package/core/client/components/layout/KWindow.vue +443 -443
  146. package/core/client/components/layout/index.js +13 -13
  147. package/core/client/components/media/KColorScale.vue +254 -254
  148. package/core/client/components/media/KImageViewer.vue +44 -44
  149. package/core/client/components/media/KMarkdownViewer.vue +55 -55
  150. package/core/client/components/media/KMediaBrowser.vue +301 -340
  151. package/core/client/components/media/KShape.vue +120 -120
  152. package/core/client/components/media/index.js +13 -13
  153. package/core/client/components/menu/KMenu.vue +147 -147
  154. package/core/client/components/menu/KRadialFab.vue +122 -122
  155. package/core/client/components/menu/KRadialFabItem.vue +73 -73
  156. package/core/client/components/menu/index.js +9 -9
  157. package/core/client/components/screen/KEndpointScreen.vue +80 -80
  158. package/core/client/components/screen/KErrorScreen.vue +24 -24
  159. package/core/client/components/screen/KLoginScreen.vue +84 -84
  160. package/core/client/components/screen/KLogoutScreen.vue +20 -20
  161. package/core/client/components/screen/KRegisterScreen.vue +114 -114
  162. package/core/client/components/screen/KScreen.vue +106 -106
  163. package/core/client/components/screen/KScreenFooter.vue +32 -32
  164. package/core/client/components/screen/KScreenHeader.vue +17 -17
  165. package/core/client/components/screen/index.js +5 -5
  166. package/core/client/components/team/KAddMember.vue +375 -375
  167. package/core/client/components/team/KAddTag.vue +121 -121
  168. package/core/client/components/team/KChangeRole.vue +118 -118
  169. package/core/client/components/team/KGroupCard.vue +110 -110
  170. package/core/client/components/team/KGroupsActivity.vue +66 -66
  171. package/core/client/components/team/KJoinGroup.vue +132 -132
  172. package/core/client/components/team/KMemberCard.vue +328 -328
  173. package/core/client/components/team/KMemberFilter.vue +49 -49
  174. package/core/client/components/team/KMembersActivity.vue +126 -126
  175. package/core/client/components/team/KOrganisationsActivity.vue +53 -53
  176. package/core/client/components/team/KTagCard.vue +72 -72
  177. package/core/client/components/team/KTagsActivity.vue +61 -61
  178. package/core/client/components/team/index.js +9 -9
  179. package/core/client/components/time/KAbsoluteTimeRange.vue +183 -183
  180. package/core/client/components/time/KDate.vue +75 -75
  181. package/core/client/components/time/KDateTime.vue +172 -172
  182. package/core/client/components/time/KDateTimeRange.vue +118 -118
  183. package/core/client/components/time/KRelativeTimeRanges.vue +193 -193
  184. package/core/client/components/time/KTime.vue +74 -74
  185. package/core/client/components/time/index.js +7 -7
  186. package/core/client/components/viewer/KModalViewer.vue +47 -47
  187. package/core/client/components/viewer/KViewer.vue +30 -30
  188. package/core/client/composables/activity.js +67 -67
  189. package/core/client/composables/collection.js +181 -181
  190. package/core/client/composables/index.js +8 -8
  191. package/core/client/composables/pwa.js +71 -71
  192. package/core/client/composables/schema.js +64 -64
  193. package/core/client/composables/selection.js +88 -88
  194. package/core/client/composables/session.js +172 -172
  195. package/core/client/composables/store.js +49 -49
  196. package/core/client/composables/version.js +47 -47
  197. package/core/client/events.js +3 -3
  198. package/core/client/filter.js +60 -60
  199. package/core/client/guards.js +101 -101
  200. package/core/client/hooks/hooks.events.js +7 -7
  201. package/core/client/hooks/hooks.logger.js +24 -24
  202. package/core/client/hooks/hooks.users.js +22 -22
  203. package/core/client/hooks/index.js +3 -3
  204. package/core/client/i18n/core_en.json +845 -845
  205. package/core/client/i18n/core_fr.json +843 -843
  206. package/core/client/i18n.js +88 -88
  207. package/core/client/index.js +84 -84
  208. package/core/client/layout.js +323 -323
  209. package/core/client/local-storage.js +28 -28
  210. package/core/client/mixins/index.js +12 -12
  211. package/core/client/mixins/mixin.account.js +61 -61
  212. package/core/client/mixins/mixin.base-activity.js +232 -232
  213. package/core/client/mixins/mixin.base-collection.js +162 -162
  214. package/core/client/mixins/mixin.base-context.js +54 -54
  215. package/core/client/mixins/mixin.base-editor.js +194 -194
  216. package/core/client/mixins/mixin.base-field.js +105 -105
  217. package/core/client/mixins/mixin.base-item.js +166 -166
  218. package/core/client/mixins/mixin.base-modal.js +36 -36
  219. package/core/client/mixins/mixin.base-viewer.js +43 -43
  220. package/core/client/mixins/mixin.object-proxy.js +46 -46
  221. package/core/client/mixins/mixin.schema-proxy.js +97 -97
  222. package/core/client/mixins/mixin.service.js +22 -22
  223. package/core/client/reader.js +65 -65
  224. package/core/client/readers/index.js +3 -3
  225. package/core/client/readers/reader.blob.js +39 -39
  226. package/core/client/readers/reader.csv.js +36 -36
  227. package/core/client/readers/reader.json.js +34 -34
  228. package/core/client/search.js +47 -47
  229. package/core/client/services/index.js +49 -49
  230. package/core/client/services/local-settings.service.js +67 -67
  231. package/core/client/sorter.js +31 -31
  232. package/core/client/storage.js +110 -102
  233. package/core/client/store.js +39 -39
  234. package/core/client/theme.js +40 -40
  235. package/core/client/time.js +167 -167
  236. package/core/client/units.js +218 -218
  237. package/core/client/utils/index.js +203 -203
  238. package/core/client/utils/utils.account.js +52 -52
  239. package/core/client/utils/utils.colors.js +36 -36
  240. package/core/client/utils/utils.content.js +185 -185
  241. package/core/client/utils/utils.locale.js +28 -28
  242. package/core/client/utils/utils.platform.js +11 -11
  243. package/core/client/utils/utils.push.js +53 -53
  244. package/core/client/utils/utils.pwa.js +62 -62
  245. package/core/client/utils/utils.session.js +89 -89
  246. package/core/common/errors.js +1 -1
  247. package/core/common/index.js +10 -10
  248. package/core/common/permissions.js +318 -318
  249. package/core/common/schema.js +35 -35
  250. package/core/common/schemas/groups.create.json +28 -28
  251. package/core/common/schemas/groups.update.json +28 -28
  252. package/core/common/schemas/organisations.create.json +28 -28
  253. package/core/common/schemas/organisations.update.json +49 -49
  254. package/core/common/schemas/settings.update.json +234 -234
  255. package/core/common/schemas/tags.create.json +35 -35
  256. package/core/common/schemas/tags.update.json +35 -35
  257. package/core/common/schemas/users.update-profile.json +33 -33
  258. package/core/common/utils.js +45 -45
  259. package/core.api.js +5 -5
  260. package/core.client.js +5 -5
  261. package/core.common.js +1 -1
  262. package/extras/css/core.variables.scss +38 -38
  263. package/extras/icons/center-on-feature.svg +315 -315
  264. package/extras/icons/json.svg +83 -83
  265. package/extras/icons/map-legend.svg +251 -251
  266. package/extras/icons/target.svg +37 -37
  267. package/extras/tours/core/account-profile.js +32 -32
  268. package/extras/tours/core/account.js +143 -143
  269. package/extras/tours/core/add-member.js +74 -74
  270. package/extras/tours/core/add-tag.js +12 -12
  271. package/extras/tours/core/create-group.js +19 -19
  272. package/extras/tours/core/create-organisation.js +19 -19
  273. package/extras/tours/core/create-tag.js +26 -26
  274. package/extras/tours/core/edit-member-role.js +13 -13
  275. package/extras/tours/core/groups.js +65 -65
  276. package/extras/tours/core/join-group.js +13 -13
  277. package/extras/tours/core/login.js +41 -41
  278. package/extras/tours/core/members.js +108 -108
  279. package/extras/tours/core/register.js +61 -61
  280. package/extras/tours/core/send-reset-password.js +14 -14
  281. package/extras/tours/core/tags.js +65 -65
  282. package/extras/tours/map/add-layer.js +28 -28
  283. package/extras/tours/map/catalog-categories.js +59 -59
  284. package/extras/tours/map/catalog-panel.js +112 -112
  285. package/extras/tours/map/connect-layer.js +39 -39
  286. package/extras/tours/map/create-layer.js +33 -33
  287. package/extras/tours/map/create-view.js +25 -25
  288. package/extras/tours/map/fab.js +26 -26
  289. package/extras/tours/map/import-layer.js +33 -33
  290. package/extras/tours/map/navigation-bar.js +185 -185
  291. package/extras/tours/map/side-nav.js +35 -35
  292. package/extras/tours/map/timeline.js +77 -77
  293. package/map/api/config/categories.cjs +42 -42
  294. package/map/api/config/layers.cjs +43 -43
  295. package/map/api/config/sublegends.cjs +42 -42
  296. package/map/api/hooks/hooks.catalog.js +85 -85
  297. package/map/api/hooks/hooks.features.js +84 -84
  298. package/map/api/hooks/hooks.query.js +361 -361
  299. package/map/api/hooks/index.js +3 -3
  300. package/map/api/index.js +18 -18
  301. package/map/api/marshall.js +31 -31
  302. package/map/api/models/alerts.model.mongodb.js +7 -7
  303. package/map/api/models/catalog.model.mongodb.js +14 -14
  304. package/map/api/models/features.model.mongodb.js +37 -37
  305. package/map/api/services/alerts/alerts.hooks.js +63 -63
  306. package/map/api/services/alerts/alerts.service.js +175 -175
  307. package/map/api/services/catalog/catalog.hooks.js +76 -76
  308. package/map/api/services/daptiles/daptiles.service.js +475 -475
  309. package/map/api/services/features/features.hooks.js +40 -40
  310. package/map/api/services/features/features.service.js +52 -52
  311. package/map/api/services/geocoder/geocoder.hooks.js +31 -31
  312. package/map/api/services/geocoder/geocoder.service.js +79 -79
  313. package/map/api/services/index.js +228 -228
  314. package/map/client/canvas-draw-context.js +16 -16
  315. package/map/client/cesium/utils.js +133 -133
  316. package/map/client/components/KCaptureToolbar.vue +155 -155
  317. package/map/client/components/KColorLegend.vue +349 -349
  318. package/map/client/components/KCompass.vue +143 -143
  319. package/map/client/components/KEditLayerData.vue +85 -85
  320. package/map/client/components/KFeatureActionButton.vue +119 -119
  321. package/map/client/components/KFeatureEditor.vue +92 -92
  322. package/map/client/components/KFeaturesChart.vue +285 -285
  323. package/map/client/components/KFeaturesFilter.vue +259 -259
  324. package/map/client/components/KFeaturesTable.vue +99 -99
  325. package/map/client/components/KLayerEditionToolbar.vue +54 -54
  326. package/map/client/components/KLayerEditor.vue +48 -48
  327. package/map/client/components/KLayerStyleEditor.vue +118 -118
  328. package/map/client/components/KLayerStyleForm.vue +906 -906
  329. package/map/client/components/KLevelSlider.vue +100 -100
  330. package/map/client/components/KMeasureTool.vue +568 -568
  331. package/map/client/components/KPositionIndicator.vue +90 -90
  332. package/map/client/components/KTimeline.vue +293 -293
  333. package/map/client/components/KTimezoneMap.vue +158 -158
  334. package/map/client/components/KUrlLegend.vue +122 -122
  335. package/map/client/components/catalog/KAddLayer.vue +66 -66
  336. package/map/client/components/catalog/KBaseLayersSelector.vue +114 -114
  337. package/map/client/components/catalog/KConnectLayer.vue +323 -323
  338. package/map/client/components/catalog/KCreateLayer.vue +184 -184
  339. package/map/client/components/catalog/KCreateView.vue +108 -108
  340. package/map/client/components/catalog/KFilteredLayerItem.vue +53 -53
  341. package/map/client/components/catalog/KImportLayer.vue +168 -168
  342. package/map/client/components/catalog/KLayerCategories.vue +274 -274
  343. package/map/client/components/catalog/KLayerItem.vue +70 -70
  344. package/map/client/components/catalog/KLayersPanel.vue +137 -137
  345. package/map/client/components/catalog/KLayersSelector.vue +78 -78
  346. package/map/client/components/catalog/KViewSelector.vue +46 -46
  347. package/map/client/components/catalog/KViewsPanel.vue +123 -123
  348. package/map/client/components/catalog/KWeatherLayersSelector.vue +129 -129
  349. package/map/client/components/form/KDirectionField.vue +113 -113
  350. package/map/client/components/form/KLayerCategoryField.vue +46 -46
  351. package/map/client/components/form/KLocationField.vue +189 -189
  352. package/map/client/components/form/KOwsLayerField.vue +130 -130
  353. package/map/client/components/form/KOwsServiceField.vue +238 -238
  354. package/map/client/components/form/KTimezoneField.vue +142 -142
  355. package/map/client/components/index.js +1 -1
  356. package/map/client/components/legend/KColorScaleLegend.vue +31 -31
  357. package/map/client/components/legend/KImageLegend.vue +52 -52
  358. package/map/client/components/legend/KLegend.vue +191 -191
  359. package/map/client/components/legend/KLegendRenderer.vue +20 -20
  360. package/map/client/components/legend/KSymbolsLegend.vue +101 -101
  361. package/map/client/components/location/KGeocodersFilter.vue +44 -44
  362. package/map/client/components/location/KLocationCardSection.vue +61 -61
  363. package/map/client/components/location/KLocationMap.vue +280 -280
  364. package/map/client/components/location/KLocationSearch.vue +144 -144
  365. package/map/client/components/location/KLocationTip.vue +29 -29
  366. package/map/client/components/tools/KGeolocateTool.vue +46 -46
  367. package/map/client/components/tools/KSearchTool.vue +93 -93
  368. package/map/client/components/widget/KElevationProfile.vue +454 -454
  369. package/map/client/components/widget/KInformationBox.vue +145 -145
  370. package/map/client/components/widget/KMapillaryViewer.vue +178 -178
  371. package/map/client/components/widget/KStackableTimeSeries.vue +214 -214
  372. package/map/client/components/widget/KTimeSeries.vue +500 -500
  373. package/map/client/composables/activity.js +88 -88
  374. package/map/client/composables/highlight.js +214 -214
  375. package/map/client/composables/index.js +7 -7
  376. package/map/client/composables/location.js +53 -53
  377. package/map/client/composables/measure.js +42 -42
  378. package/map/client/composables/probe.js +133 -133
  379. package/map/client/composables/selection.js +300 -300
  380. package/map/client/composables/weather.js +213 -213
  381. package/map/client/elevation-utils.js +258 -258
  382. package/map/client/geolocation.js +119 -119
  383. package/map/client/globe.js +13 -13
  384. package/map/client/i18n/map_en.json +645 -645
  385. package/map/client/i18n/map_fr.json +646 -646
  386. package/map/client/index.js +18 -18
  387. package/map/client/init.js +80 -80
  388. package/map/client/leaflet/GSMaPLayer.js +55 -55
  389. package/map/client/leaflet/GradientPath.js +180 -180
  390. package/map/client/leaflet/MaskLayer.js +57 -57
  391. package/map/client/leaflet/TiledFeatureLayer.js +572 -572
  392. package/map/client/leaflet/TiledMeshLayer.js +486 -486
  393. package/map/client/leaflet/TiledWindLayer.js +384 -384
  394. package/map/client/leaflet/utils.js +246 -246
  395. package/map/client/map.js +15 -15
  396. package/map/client/mixins/globe/index.js +8 -8
  397. package/map/client/mixins/globe/mixin.base-globe.js +462 -462
  398. package/map/client/mixins/globe/mixin.file-layers.js +40 -40
  399. package/map/client/mixins/globe/mixin.geojson-layers.js +314 -314
  400. package/map/client/mixins/globe/mixin.globe-activity.js +52 -52
  401. package/map/client/mixins/globe/mixin.opendap-layers.js +51 -51
  402. package/map/client/mixins/globe/mixin.popup.js +82 -82
  403. package/map/client/mixins/globe/mixin.style.js +110 -110
  404. package/map/client/mixins/globe/mixin.tooltip.js +101 -101
  405. package/map/client/mixins/index.js +9 -9
  406. package/map/client/mixins/map/index.js +16 -16
  407. package/map/client/mixins/map/mixin.base-map.js +592 -592
  408. package/map/client/mixins/map/mixin.canvas-layers.js +529 -529
  409. package/map/client/mixins/map/mixin.edit-layers.js +493 -474
  410. package/map/client/mixins/map/mixin.file-layers.js +49 -49
  411. package/map/client/mixins/map/mixin.forecast-layers.js +79 -79
  412. package/map/client/mixins/map/mixin.geojson-layers.js +557 -557
  413. package/map/client/mixins/map/mixin.georaster-layers.js +114 -114
  414. package/map/client/mixins/map/mixin.gsmap-layers.js +27 -27
  415. package/map/client/mixins/map/mixin.heatmap-layers.js +116 -116
  416. package/map/client/mixins/map/mixin.map-activity.js +38 -38
  417. package/map/client/mixins/map/mixin.mapillary-layers.js +45 -45
  418. package/map/client/mixins/map/mixin.popup.js +53 -53
  419. package/map/client/mixins/map/mixin.style.js +73 -73
  420. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +120 -120
  421. package/map/client/mixins/map/mixin.tiled-wind-layers.js +126 -126
  422. package/map/client/mixins/map/mixin.tooltip.js +47 -47
  423. package/map/client/mixins/mixin.activity.js +477 -477
  424. package/map/client/mixins/mixin.catalog-panel.js +26 -26
  425. package/map/client/mixins/mixin.context.js +262 -262
  426. package/map/client/mixins/mixin.feature-selection.js +28 -28
  427. package/map/client/mixins/mixin.feature-service.js +403 -403
  428. package/map/client/mixins/mixin.infobox.js +29 -29
  429. package/map/client/mixins/mixin.levels.js +66 -66
  430. package/map/client/mixins/mixin.style.js +29 -29
  431. package/map/client/mixins/mixin.weacast.js +212 -212
  432. package/map/client/pixi-utils.js +256 -256
  433. package/map/client/readers/index.js +4 -4
  434. package/map/client/readers/reader.geojson.js +64 -64
  435. package/map/client/readers/reader.gpx.js +36 -36
  436. package/map/client/readers/reader.kml.js +36 -36
  437. package/map/client/readers/reader.shp.js +82 -82
  438. package/map/client/utils/index.js +3 -3
  439. package/map/client/utils/utils.js +228 -228
  440. package/map/client/utils/utils.location.js +45 -45
  441. package/map/client/utils/utils.schema.js +75 -75
  442. package/map/client/utils.all.js +3 -3
  443. package/map/client/utils.globe.js +2 -2
  444. package/map/client/utils.js +4 -4
  445. package/map/client/utils.map.js +2 -2
  446. package/map/common/dynamic-grid-source.js +127 -127
  447. package/map/common/errors.js +3 -3
  448. package/map/common/geotiff-grid-source.js +150 -150
  449. package/map/common/grid.js +509 -509
  450. package/map/common/index.js +29 -29
  451. package/map/common/meteo-model-grid-source.js +157 -157
  452. package/map/common/moment-utils.js +24 -24
  453. package/map/common/opendap-grid-source.js +261 -261
  454. package/map/common/opendap-utils.js +247 -247
  455. package/map/common/permissions.js +11 -11
  456. package/map/common/schemas/catalog.update.json +28 -28
  457. package/map/common/time-based-grid-source.js +111 -111
  458. package/map/common/tms-utils.js +63 -63
  459. package/map/common/wcs-grid-source.js +93 -93
  460. package/map/common/wcs-utils.js +167 -167
  461. package/map/common/weacast-grid-source.js +316 -316
  462. package/map/common/wfs-utils.js +163 -163
  463. package/map/common/wms-utils.js +117 -117
  464. package/map/common/wmts-utils.js +154 -154
  465. package/map.api.js +5 -5
  466. package/map.client.globe.js +5 -5
  467. package/map.client.js +5 -5
  468. package/map.client.map.js +5 -5
  469. package/map.common.js +1 -1
  470. package/map.config.cjs +9 -9
  471. package/package.json +161 -161
  472. package/test/api/core/account.test.js +485 -485
  473. package/test/api/core/client.test.js.skip +37 -37
  474. package/test/api/core/config/default.cjs +118 -118
  475. package/test/api/core/config/email-templates/confirmInvitation/html.ejs +18 -18
  476. package/test/api/core/config/email-templates/identityChange/html.ejs +14 -14
  477. package/test/api/core/config/email-templates/newDevice/html.ejs +7 -7
  478. package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -7
  479. package/test/api/core/config/email-templates/passwordChange/html.ejs +5 -5
  480. package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +12 -12
  481. package/test/api/core/config/email-templates/resetPwd/html.ejs +5 -5
  482. package/test/api/core/config/email-templates/sendResetPwd/html.ejs +12 -12
  483. package/test/api/core/config/email-templates/verifySignup/html.ejs +3 -3
  484. package/test/api/core/data/invalid-objects.json +59 -59
  485. package/test/api/core/data/schema.json +57 -57
  486. package/test/api/core/data/valid-objects.json +37 -37
  487. package/test/api/core/hooks.test.js +330 -330
  488. package/test/api/core/index.js +1 -1
  489. package/test/api/core/index.test.js +478 -478
  490. package/test/api/core/push.test.js +197 -197
  491. package/test/api/core/schemas.test.js +82 -82
  492. package/test/api/core/storage.test.js +153 -153
  493. package/test/api/core/team.test.js +670 -670
  494. package/test/api/core/utils.js +92 -92
  495. package/test/api/index.js +3 -3
  496. package/test/api/map/alerts.test.js +560 -560
  497. package/test/api/map/config/default.cjs +125 -125
  498. package/test/api/map/config/layers.json +38 -38
  499. package/test/api/map/data/DescribeCoverage.xml +54 -54
  500. package/test/api/map/data/adsb.observations.json +131 -131
  501. package/test/api/map/data/dataset.grb.das +55 -55
  502. package/test/api/map/data/dataset.grb.dds +17 -17
  503. package/test/api/map/data/vigicrues.observations.json +47041 -47041
  504. package/test/api/map/data/vigicrues.stations.json +15421 -15421
  505. package/test/api/map/data/zones.json +1227 -1227
  506. package/test/api/map/grid-sources.test.js +313 -313
  507. package/test/api/map/hooks.test.js +98 -98
  508. package/test/api/map/index.test.js +563 -563
  509. package/test/client/core/account.js +36 -36
  510. package/test/client/core/api.js +361 -361
  511. package/test/client/core/collection.js +64 -64
  512. package/test/client/core/index.js +8 -8
  513. package/test/client/core/layout.js +116 -116
  514. package/test/client/core/runner.js +224 -224
  515. package/test/client/core/screens.js +35 -35
  516. package/test/client/core/time.js +10 -10
  517. package/test/client/core/utils.js +260 -260
  518. package/test/client/index.js +3 -3
  519. package/test/client/map/catalog.js +193 -193
  520. package/test/client/map/controls.js +41 -41
  521. package/test/client/map/index.js +4 -4
  522. package/test/client/map/time.js +24 -24
  523. package/test/client/map/utils.js +27 -27
  524. package/coverage/base.css +0 -224
  525. package/coverage/block-navigation.js +0 -87
  526. package/coverage/core/api/application.js.html +0 -1789
  527. package/coverage/core/api/authentication.js.html +0 -694
  528. package/coverage/core/api/db.js.html +0 -751
  529. package/coverage/core/api/hooks/hooks.account.js.html +0 -169
  530. package/coverage/core/api/hooks/hooks.authentication.js.html +0 -274
  531. package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -1201
  532. package/coverage/core/api/hooks/hooks.devices.js.html +0 -211
  533. package/coverage/core/api/hooks/hooks.groups.js.html +0 -229
  534. package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
  535. package/coverage/core/api/hooks/hooks.model.js.html +0 -988
  536. package/coverage/core/api/hooks/hooks.organisations.js.html +0 -823
  537. package/coverage/core/api/hooks/hooks.pusher.js.html +0 -730
  538. package/coverage/core/api/hooks/hooks.query.js.html +0 -838
  539. package/coverage/core/api/hooks/hooks.schemas.js.html +0 -244
  540. package/coverage/core/api/hooks/hooks.service.js.html +0 -319
  541. package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
  542. package/coverage/core/api/hooks/hooks.tags.js.html +0 -850
  543. package/coverage/core/api/hooks/hooks.users.js.html +0 -889
  544. package/coverage/core/api/hooks/index.html +0 -341
  545. package/coverage/core/api/hooks/index.js.html +0 -130
  546. package/coverage/core/api/index.html +0 -176
  547. package/coverage/core/api/index.js.html +0 -148
  548. package/coverage/core/api/marshall.js.html +0 -355
  549. package/coverage/core/api/models/groups.model.mongodb.js.html +0 -109
  550. package/coverage/core/api/models/index.html +0 -161
  551. package/coverage/core/api/models/organisations.model.mongodb.js.html +0 -94
  552. package/coverage/core/api/models/tags.model.mongodb.js.html +0 -115
  553. package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
  554. package/coverage/core/api/oauth2-handler.js.html +0 -202
  555. package/coverage/core/api/oauth2-verifier.js.html +0 -355
  556. package/coverage/core/api/services/account/account.hooks.js.html +0 -196
  557. package/coverage/core/api/services/account/account.service.js.html +0 -448
  558. package/coverage/core/api/services/account/index.html +0 -131
  559. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  560. package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -502
  561. package/coverage/core/api/services/authorisations/index.html +0 -131
  562. package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
  563. package/coverage/core/api/services/databases/databases.service.js.html +0 -100
  564. package/coverage/core/api/services/databases/index.html +0 -131
  565. package/coverage/core/api/services/devices/devices.hooks.js.html +0 -190
  566. package/coverage/core/api/services/devices/devices.service.js.html +0 -382
  567. package/coverage/core/api/services/devices/index.html +0 -131
  568. package/coverage/core/api/services/groups/groups.hooks.js.html +0 -184
  569. package/coverage/core/api/services/groups/index.html +0 -116
  570. package/coverage/core/api/services/index.html +0 -116
  571. package/coverage/core/api/services/index.js.html +0 -472
  572. package/coverage/core/api/services/mailer/index.html +0 -131
  573. package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
  574. package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
  575. package/coverage/core/api/services/organisations/index.html +0 -131
  576. package/coverage/core/api/services/organisations/organisations.hooks.js.html +0 -178
  577. package/coverage/core/api/services/organisations/organisations.service.js.html +0 -319
  578. package/coverage/core/api/services/pusher/index.html +0 -146
  579. package/coverage/core/api/services/pusher/pusher.channels.js.html +0 -94
  580. package/coverage/core/api/services/pusher/pusher.hooks.js.html +0 -193
  581. package/coverage/core/api/services/pusher/pusher.service.js.html +0 -1420
  582. package/coverage/core/api/services/storage/index.html +0 -131
  583. package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
  584. package/coverage/core/api/services/storage/storage.service.js.html +0 -172
  585. package/coverage/core/api/services/tags/index.html +0 -116
  586. package/coverage/core/api/services/tags/tags.hooks.js.html +0 -220
  587. package/coverage/core/api/services/users/index.html +0 -116
  588. package/coverage/core/api/services/users/users.hooks.js.html +0 -313
  589. package/coverage/core/common/errors.js.html +0 -88
  590. package/coverage/core/common/index.html +0 -176
  591. package/coverage/core/common/index.js.html +0 -115
  592. package/coverage/core/common/permissions.js.html +0 -1015
  593. package/coverage/core/common/schema.js.html +0 -190
  594. package/coverage/core/common/utils.js.html +0 -220
  595. package/coverage/favicon.png +0 -0
  596. package/coverage/index.html +0 -491
  597. package/coverage/lcov-report/base.css +0 -224
  598. package/coverage/lcov-report/block-navigation.js +0 -87
  599. package/coverage/lcov-report/core/api/application.js.html +0 -1789
  600. package/coverage/lcov-report/core/api/authentication.js.html +0 -694
  601. package/coverage/lcov-report/core/api/db.js.html +0 -751
  602. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +0 -169
  603. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -274
  604. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -1201
  605. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +0 -211
  606. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +0 -229
  607. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
  608. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -988
  609. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -823
  610. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +0 -730
  611. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -838
  612. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -244
  613. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
  614. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
  615. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +0 -850
  616. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -889
  617. package/coverage/lcov-report/core/api/hooks/index.html +0 -341
  618. package/coverage/lcov-report/core/api/hooks/index.js.html +0 -130
  619. package/coverage/lcov-report/core/api/index.html +0 -176
  620. package/coverage/lcov-report/core/api/index.js.html +0 -148
  621. package/coverage/lcov-report/core/api/marshall.js.html +0 -355
  622. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +0 -109
  623. package/coverage/lcov-report/core/api/models/index.html +0 -161
  624. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +0 -94
  625. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -115
  626. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
  627. package/coverage/lcov-report/core/api/oauth2-handler.js.html +0 -202
  628. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +0 -355
  629. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -196
  630. package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -448
  631. package/coverage/lcov-report/core/api/services/account/index.html +0 -131
  632. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  633. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -502
  634. package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
  635. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
  636. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
  637. package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
  638. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +0 -190
  639. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +0 -382
  640. package/coverage/lcov-report/core/api/services/devices/index.html +0 -131
  641. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +0 -184
  642. package/coverage/lcov-report/core/api/services/groups/index.html +0 -116
  643. package/coverage/lcov-report/core/api/services/index.html +0 -116
  644. package/coverage/lcov-report/core/api/services/index.js.html +0 -472
  645. package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
  646. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
  647. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
  648. package/coverage/lcov-report/core/api/services/organisations/index.html +0 -131
  649. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +0 -178
  650. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -319
  651. package/coverage/lcov-report/core/api/services/pusher/index.html +0 -146
  652. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +0 -94
  653. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +0 -193
  654. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +0 -1420
  655. package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
  656. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
  657. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
  658. package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
  659. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -220
  660. package/coverage/lcov-report/core/api/services/users/index.html +0 -116
  661. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -313
  662. package/coverage/lcov-report/core/common/errors.js.html +0 -88
  663. package/coverage/lcov-report/core/common/index.html +0 -176
  664. package/coverage/lcov-report/core/common/index.js.html +0 -115
  665. package/coverage/lcov-report/core/common/permissions.js.html +0 -1015
  666. package/coverage/lcov-report/core/common/schema.js.html +0 -190
  667. package/coverage/lcov-report/core/common/utils.js.html +0 -220
  668. package/coverage/lcov-report/favicon.png +0 -0
  669. package/coverage/lcov-report/index.html +0 -491
  670. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -340
  671. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -337
  672. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1162
  673. package/coverage/lcov-report/map/api/hooks/index.html +0 -161
  674. package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
  675. package/coverage/lcov-report/map/api/index.html +0 -131
  676. package/coverage/lcov-report/map/api/index.js.html +0 -139
  677. package/coverage/lcov-report/map/api/marshall.js.html +0 -178
  678. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
  679. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -127
  680. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -202
  681. package/coverage/lcov-report/map/api/models/index.html +0 -146
  682. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
  683. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
  684. package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
  685. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -313
  686. package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
  687. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  688. package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
  689. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -205
  690. package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -241
  691. package/coverage/lcov-report/map/api/services/features/index.html +0 -131
  692. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +0 -178
  693. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +0 -322
  694. package/coverage/lcov-report/map/api/services/geocoder/index.html +0 -131
  695. package/coverage/lcov-report/map/api/services/index.html +0 -116
  696. package/coverage/lcov-report/map/api/services/index.js.html +0 -760
  697. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
  698. package/coverage/lcov-report/map/common/errors.js.html +0 -94
  699. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -535
  700. package/coverage/lcov-report/map/common/grid.js.html +0 -1612
  701. package/coverage/lcov-report/map/common/index.html +0 -371
  702. package/coverage/lcov-report/map/common/index.js.html +0 -172
  703. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
  704. package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
  705. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
  706. package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -826
  707. package/coverage/lcov-report/map/common/permissions.js.html +0 -118
  708. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
  709. package/coverage/lcov-report/map/common/tms-utils.js.html +0 -274
  710. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
  711. package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -586
  712. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
  713. package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -574
  714. package/coverage/lcov-report/map/common/wms-utils.js.html +0 -436
  715. package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -547
  716. package/coverage/lcov-report/prettify.css +0 -1
  717. package/coverage/lcov-report/prettify.js +0 -2
  718. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  719. package/coverage/lcov-report/sorter.js +0 -196
  720. package/coverage/lcov.info +0 -12501
  721. package/coverage/map/api/hooks/hooks.catalog.js.html +0 -340
  722. package/coverage/map/api/hooks/hooks.features.js.html +0 -337
  723. package/coverage/map/api/hooks/hooks.query.js.html +0 -1162
  724. package/coverage/map/api/hooks/index.html +0 -161
  725. package/coverage/map/api/hooks/index.js.html +0 -94
  726. package/coverage/map/api/index.html +0 -131
  727. package/coverage/map/api/index.js.html +0 -139
  728. package/coverage/map/api/marshall.js.html +0 -178
  729. package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
  730. package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -127
  731. package/coverage/map/api/models/features.model.mongodb.js.html +0 -202
  732. package/coverage/map/api/models/index.html +0 -146
  733. package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
  734. package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
  735. package/coverage/map/api/services/alerts/index.html +0 -131
  736. package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -313
  737. package/coverage/map/api/services/catalog/index.html +0 -116
  738. package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  739. package/coverage/map/api/services/daptiles/index.html +0 -116
  740. package/coverage/map/api/services/features/features.hooks.js.html +0 -205
  741. package/coverage/map/api/services/features/features.service.js.html +0 -241
  742. package/coverage/map/api/services/features/index.html +0 -131
  743. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +0 -178
  744. package/coverage/map/api/services/geocoder/geocoder.service.js.html +0 -322
  745. package/coverage/map/api/services/geocoder/index.html +0 -131
  746. package/coverage/map/api/services/index.html +0 -116
  747. package/coverage/map/api/services/index.js.html +0 -760
  748. package/coverage/map/common/dynamic-grid-source.js.html +0 -466
  749. package/coverage/map/common/errors.js.html +0 -94
  750. package/coverage/map/common/geotiff-grid-source.js.html +0 -535
  751. package/coverage/map/common/grid.js.html +0 -1612
  752. package/coverage/map/common/index.html +0 -371
  753. package/coverage/map/common/index.js.html +0 -172
  754. package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
  755. package/coverage/map/common/moment-utils.js.html +0 -157
  756. package/coverage/map/common/opendap-grid-source.js.html +0 -868
  757. package/coverage/map/common/opendap-utils.js.html +0 -826
  758. package/coverage/map/common/permissions.js.html +0 -118
  759. package/coverage/map/common/time-based-grid-source.js.html +0 -418
  760. package/coverage/map/common/tms-utils.js.html +0 -274
  761. package/coverage/map/common/wcs-grid-source.js.html +0 -364
  762. package/coverage/map/common/wcs-utils.js.html +0 -586
  763. package/coverage/map/common/weacast-grid-source.js.html +0 -1033
  764. package/coverage/map/common/wfs-utils.js.html +0 -574
  765. package/coverage/map/common/wms-utils.js.html +0 -436
  766. package/coverage/map/common/wmts-utils.js.html +0 -547
  767. package/coverage/prettify.css +0 -1
  768. package/coverage/prettify.js +0 -2
  769. package/coverage/sort-arrow-sprite.png +0 -0
  770. package/coverage/sorter.js +0 -196
  771. package/coverage/tmp/coverage-19264-1684834146599-0.json +0 -1
  772. package/coverage/tmp/coverage-2508-1684834182408-0.json +0 -1
  773. package/coverage/tmp/coverage-25908-1684834189369-0.json +0 -1
  774. package/coverage/tmp/coverage-32364-1684834189420-0.json +0 -1
  775. package/coverage/tmp/coverage-36604-1684834189485-0.json +0 -1
  776. package/coverage/tmp/coverage-40652-1684834182272-0.json +0 -1
  777. package/coverage/tmp/coverage-48484-1684834182342-0.json +0 -1
  778. package/coverage/tmp/coverage-51652-1684834189584-0.json +0 -1
  779. package/coverage/tmp/coverage-9776-1684834189519-0.json +0 -1
  780. package/test/api/core/test-log-2023-06-05.log +0 -0
  781. package/test/api/map/test-log-2022-12-01.log +0 -19
  782. package/test/api/map/test-log-2023-01-05.log +0 -4
  783. package/test/api/map/test-log-2023-01-09.log +0 -3
  784. package/test/api/map/test-log-2023-02-05.log +0 -11
  785. package/test/api/map/test-log-2023-02-14.log +0 -82
  786. package/test/api/map/test-log-2023-02-28.log +0 -28
  787. package/test/api/map/test-log-2023-03-02.log +0 -11
  788. package/test/api/map/test-log-2023-03-06.log +0 -11
  789. package/test/api/map/test-log-2023-03-07.log +0 -61
  790. package/test/api/map/test-log-2023-03-31.log +0 -11
  791. package/test/api/map/test-log-2023-05-23.log +0 -11
  792. package/test/api/map/test-log-2023-05-24.log +0 -11
@@ -1,185 +1,185 @@
1
- import _ from 'lodash'
2
- import logger from 'loglevel'
3
- import sift from 'sift'
4
- import { Store } from '../store.js'
5
-
6
- const Handlers = ['handler', 'visible', 'hidden', 'disabled', 'on.listener']
7
- // Some bindings are not managed when reading content from config but externally on-demand, e.g. by KContent or KAction
8
- // The content 'reserved' property is also used to recurse at caller level
9
- const ReservedBindings = ['content', 'visible', 'hidden', 'route']
10
-
11
- // Check if an object has a property according to its path.
12
- // Similar to lodash has function which causes a bug in production build with Vue proxy objects
13
- // It appears that with proxy objects it is safer to use the in operator or Reflect.has()
14
- function hasProperty (object, path) {
15
- const keys = path.split('.')
16
- let currentObject = object
17
- for (const key of keys) {
18
- if (!currentObject || !(key in currentObject)) {
19
- return false
20
- }
21
- currentObject = currentObject[key]
22
- }
23
- return true
24
- }
25
-
26
- export function filterContent (content, filter) {
27
- // Handle non object content
28
- if (typeof content !== 'object') return content
29
- // Handle array and object case
30
- const isArray = Array.isArray(content)
31
- const modes = _.keys(content)
32
- let filteredContent = content
33
- if (!isArray) {
34
- // Recurse ?
35
- if (filteredContent.content) {
36
- filteredContent.content = filterContent(filteredContent.content, filter)
37
- } else {
38
- modes.forEach(mode => {
39
- const contentForMode = filteredContent[mode]
40
- filteredContent[mode] = filterContent(contentForMode, filter)
41
- })
42
- }
43
- filteredContent = [filteredContent]
44
- } else {
45
- filteredContent.forEach(item => {
46
- // Recurse ?
47
- if (item.content) {
48
- item.content = filterContent(item.content, filter)
49
- }
50
- })
51
- }
52
- // Apply filtering
53
- filteredContent = filteredContent.filter(sift(filter))
54
- return (isArray ? filteredContent : filteredContent[0])
55
- }
56
-
57
- // Perform binding between a configuration object and a given context object
58
- export function bindContent (content, context, omit = []) {
59
- const components = _.flatMapDeep(content)
60
- _.forEach(components, (component) => {
61
- // Process component handlers
62
- Handlers.forEach(handler => bindHandler(component, handler, context))
63
- // Then process component props
64
- // It allows to write any property like { label: ':xxx' } and bind it
65
- // to a component property from the context like we do for handler
66
- bindProperties(component, context, omit)
67
- // Recursively bind the props/handlers on the sub content object
68
- if (component.content) bindContent(component.content, context, omit)
69
- })
70
- return content
71
- }
72
-
73
- export function bindProperties (item, context, omit = []) {
74
- if (Array.isArray(item)) {
75
- for (let i = 0; i < item.length; i++) {
76
- item[i] = bindProperties(item[i], context)
77
- }
78
- } else if (typeof item === 'object') {
79
- _.forOwn(item, (value, key) => {
80
- // Bind required properties only
81
- if (!ReservedBindings.includes(key) && !omit.includes(key)) {
82
- if (typeof value === 'string') {
83
- item[key] = getBoundValue(value, context)
84
- } else {
85
- item[key] = bindProperties(value, context)
86
- }
87
- }
88
- })
89
- }
90
- return item
91
- }
92
-
93
- export function bindHandler (component, path, context) {
94
- const handler = _.get(component, path)
95
- // Could be an array if multiple handlers to be called
96
- if (Array.isArray(handler)) {
97
- // Process all array elements, manage the case where the handler is simply a function/property name
98
- const handlers = handler.map(h => generateHandler(context, h.name || h, h.params))
99
- // In that specific case the result is a boolean AND operation
100
- _.set(component, path, (...args) => handlers.reduce((result, h) => result && h(...args), true))
101
- } else if (handler && typeof handler === 'object') {
102
- // Could be a structure with name and possibly params specified
103
- // :xxx is reserved for binding to internal property not function call
104
- if (handler.name) {
105
- if (!handler.name.startsWith(':')) {
106
- _.set(component, path, generateHandler(context, handler.name, handler.params))
107
- }
108
- } else {
109
- logger.debug(`[KDK] invalid handler binding for ${handler}: you must provide the name to the function to be called`)
110
- }
111
- } else if ((typeof handler === 'string') && !handler.startsWith(':')) {
112
- // Or only name if no params are specified
113
- // :xxx is reserved for binding to internal property not function call
114
- _.set(component, path, generateHandler(context, handler))
115
- }
116
- // Get back processed handler function
117
- return _.get(component, path)
118
- }
119
-
120
- export function generateHandler (context, name, params) {
121
- // When the handler can be a simple getter, eg is visible use case,
122
- // we allow a property value instead of a function and a logical NOT
123
- const isNot = name.startsWith('!')
124
- if (isNot) name = name.substring(1)
125
- return (...args) => {
126
- let result
127
- const handler = _.get(context, name)
128
- // Function call or property value read ?
129
- if (typeof handler === 'function') {
130
- // Provided parameters or simply forward arguments ?
131
- result = (params ? handler(...bindParams(params, context)) : handler(...args))
132
- } else {
133
- result = handler
134
- }
135
- // Logical NOT to be performed ?
136
- return (isNot ? !result : result)
137
- }
138
- }
139
-
140
- export function bindParams (params, context) {
141
- // A parameter like :xxx means xxx is a property of the component, not a static value
142
- // In that case remove trailing : and get property value dynamically
143
- if (_.isNil(params)) {
144
- return params
145
- } else if (Array.isArray(params)) {
146
- return params.map(param => bindParams(param, context))
147
- } else if (typeof params === 'object') {
148
- return _.mapValues(params, (value, key) => bindParams(value, context))
149
- } else {
150
- return getBoundValue(params, context)
151
- }
152
- }
153
-
154
- export function getBoundValue (value, context) {
155
- if ((typeof value === 'string') && value.startsWith(':')) {
156
- // From store or context ?
157
- if (value.startsWith(':store.')) {
158
- const path = value.replace(':store.', '')
159
- if (Store.has(path)) return Store.get(path)
160
- } else if (value.startsWith(':storeRef.')) {
161
- const path = value.replace(':storeRef.', '')
162
- // FIXME: we should test if the path exists but this causes
163
- // a bug in production build with Vue proxy objects
164
- // if (Store.has(path)) return Store.getRef(path)
165
- if (hasProperty(Store, path)) return Store.getRef(path)
166
- // Workaround if not possible to correctly check the path first
167
- // but it causes problems with values initialized to null
168
- // const result = Store.getRef(path)
169
- // if (!_.isNil(result)) return result
170
- } else {
171
- const path = value.substring(1)
172
- // FIXME: we should test if the path exists but this causes
173
- // a bug in production build with Vue proxy objects
174
- // if (_.has(context, path)) return _.get(context, path)
175
- if (hasProperty(context, path)) return _.get(context, path)
176
- // Workaround if not possible to correctly check the path first
177
- // but it causes problems with values initialized to null
178
- // const result = _.get(context, path)
179
- // if (!_.isNil(result)) return result
180
- }
181
- // Bound value not found
182
- return undefined
183
- }
184
- return value
185
- }
1
+ import _ from 'lodash'
2
+ import logger from 'loglevel'
3
+ import sift from 'sift'
4
+ import { Store } from '../store.js'
5
+
6
+ const Handlers = ['handler', 'visible', 'hidden', 'disabled', 'on.listener']
7
+ // Some bindings are not managed when reading content from config but externally on-demand, e.g. by KContent or KAction
8
+ // The content 'reserved' property is also used to recurse at caller level
9
+ const ReservedBindings = ['content', 'visible', 'hidden', 'route']
10
+
11
+ // Check if an object has a property according to its path.
12
+ // Similar to lodash has function which causes a bug in production build with Vue proxy objects
13
+ // It appears that with proxy objects it is safer to use the in operator or Reflect.has()
14
+ function hasProperty (object, path) {
15
+ const keys = path.split('.')
16
+ let currentObject = object
17
+ for (const key of keys) {
18
+ if (!currentObject || !(key in currentObject)) {
19
+ return false
20
+ }
21
+ currentObject = currentObject[key]
22
+ }
23
+ return true
24
+ }
25
+
26
+ export function filterContent (content, filter) {
27
+ // Handle non object content
28
+ if (typeof content !== 'object') return content
29
+ // Handle array and object case
30
+ const isArray = Array.isArray(content)
31
+ const modes = _.keys(content)
32
+ let filteredContent = content
33
+ if (!isArray) {
34
+ // Recurse ?
35
+ if (filteredContent.content) {
36
+ filteredContent.content = filterContent(filteredContent.content, filter)
37
+ } else {
38
+ modes.forEach(mode => {
39
+ const contentForMode = filteredContent[mode]
40
+ filteredContent[mode] = filterContent(contentForMode, filter)
41
+ })
42
+ }
43
+ filteredContent = [filteredContent]
44
+ } else {
45
+ filteredContent.forEach(item => {
46
+ // Recurse ?
47
+ if (item.content) {
48
+ item.content = filterContent(item.content, filter)
49
+ }
50
+ })
51
+ }
52
+ // Apply filtering
53
+ filteredContent = filteredContent.filter(sift(filter))
54
+ return (isArray ? filteredContent : filteredContent[0])
55
+ }
56
+
57
+ // Perform binding between a configuration object and a given context object
58
+ export function bindContent (content, context, omit = []) {
59
+ const components = _.flatMapDeep(content)
60
+ _.forEach(components, (component) => {
61
+ // Process component handlers
62
+ Handlers.forEach(handler => bindHandler(component, handler, context))
63
+ // Then process component props
64
+ // It allows to write any property like { label: ':xxx' } and bind it
65
+ // to a component property from the context like we do for handler
66
+ bindProperties(component, context, omit)
67
+ // Recursively bind the props/handlers on the sub content object
68
+ if (component.content) bindContent(component.content, context, omit)
69
+ })
70
+ return content
71
+ }
72
+
73
+ export function bindProperties (item, context, omit = []) {
74
+ if (Array.isArray(item)) {
75
+ for (let i = 0; i < item.length; i++) {
76
+ item[i] = bindProperties(item[i], context)
77
+ }
78
+ } else if (typeof item === 'object') {
79
+ _.forOwn(item, (value, key) => {
80
+ // Bind required properties only
81
+ if (!ReservedBindings.includes(key) && !omit.includes(key)) {
82
+ if (typeof value === 'string') {
83
+ item[key] = getBoundValue(value, context)
84
+ } else {
85
+ item[key] = bindProperties(value, context)
86
+ }
87
+ }
88
+ })
89
+ }
90
+ return item
91
+ }
92
+
93
+ export function bindHandler (component, path, context) {
94
+ const handler = _.get(component, path)
95
+ // Could be an array if multiple handlers to be called
96
+ if (Array.isArray(handler)) {
97
+ // Process all array elements, manage the case where the handler is simply a function/property name
98
+ const handlers = handler.map(h => generateHandler(context, h.name || h, h.params))
99
+ // In that specific case the result is a boolean AND operation
100
+ _.set(component, path, (...args) => handlers.reduce((result, h) => result && h(...args), true))
101
+ } else if (handler && typeof handler === 'object') {
102
+ // Could be a structure with name and possibly params specified
103
+ // :xxx is reserved for binding to internal property not function call
104
+ if (handler.name) {
105
+ if (!handler.name.startsWith(':')) {
106
+ _.set(component, path, generateHandler(context, handler.name, handler.params))
107
+ }
108
+ } else {
109
+ logger.debug(`[KDK] invalid handler binding for ${handler}: you must provide the name to the function to be called`)
110
+ }
111
+ } else if ((typeof handler === 'string') && !handler.startsWith(':')) {
112
+ // Or only name if no params are specified
113
+ // :xxx is reserved for binding to internal property not function call
114
+ _.set(component, path, generateHandler(context, handler))
115
+ }
116
+ // Get back processed handler function
117
+ return _.get(component, path)
118
+ }
119
+
120
+ export function generateHandler (context, name, params) {
121
+ // When the handler can be a simple getter, eg is visible use case,
122
+ // we allow a property value instead of a function and a logical NOT
123
+ const isNot = name.startsWith('!')
124
+ if (isNot) name = name.substring(1)
125
+ return (...args) => {
126
+ let result
127
+ const handler = _.get(context, name)
128
+ // Function call or property value read ?
129
+ if (typeof handler === 'function') {
130
+ // Provided parameters or simply forward arguments ?
131
+ result = (params ? handler(...bindParams(params, context)) : handler(...args))
132
+ } else {
133
+ result = handler
134
+ }
135
+ // Logical NOT to be performed ?
136
+ return (isNot ? !result : result)
137
+ }
138
+ }
139
+
140
+ export function bindParams (params, context) {
141
+ // A parameter like :xxx means xxx is a property of the component, not a static value
142
+ // In that case remove trailing : and get property value dynamically
143
+ if (_.isNil(params)) {
144
+ return params
145
+ } else if (Array.isArray(params)) {
146
+ return params.map(param => bindParams(param, context))
147
+ } else if (typeof params === 'object') {
148
+ return _.mapValues(params, (value, key) => bindParams(value, context))
149
+ } else {
150
+ return getBoundValue(params, context)
151
+ }
152
+ }
153
+
154
+ export function getBoundValue (value, context) {
155
+ if ((typeof value === 'string') && value.startsWith(':')) {
156
+ // From store or context ?
157
+ if (value.startsWith(':store.')) {
158
+ const path = value.replace(':store.', '')
159
+ if (Store.has(path)) return Store.get(path)
160
+ } else if (value.startsWith(':storeRef.')) {
161
+ const path = value.replace(':storeRef.', '')
162
+ // FIXME: we should test if the path exists but this causes
163
+ // a bug in production build with Vue proxy objects
164
+ // if (Store.has(path)) return Store.getRef(path)
165
+ if (hasProperty(Store, path)) return Store.getRef(path)
166
+ // Workaround if not possible to correctly check the path first
167
+ // but it causes problems with values initialized to null
168
+ // const result = Store.getRef(path)
169
+ // if (!_.isNil(result)) return result
170
+ } else {
171
+ const path = value.substring(1)
172
+ // FIXME: we should test if the path exists but this causes
173
+ // a bug in production build with Vue proxy objects
174
+ // if (_.has(context, path)) return _.get(context, path)
175
+ if (hasProperty(context, path)) return _.get(context, path)
176
+ // Workaround if not possible to correctly check the path first
177
+ // but it causes problems with values initialized to null
178
+ // const result = _.get(context, path)
179
+ // if (!_.isNil(result)) return result
180
+ }
181
+ // Bound value not found
182
+ return undefined
183
+ }
184
+ return value
185
+ }
@@ -1,28 +1,28 @@
1
- import _ from 'lodash'
2
- import config from 'config'
3
-
4
- export function getLocale () {
5
- const locale =
6
- navigator.language ||
7
- navigator.languages[0] ||
8
- navigator.browserLanguage ||
9
- navigator.userLanguage ||
10
- navigator.systemLanguage
11
-
12
- if (locale) {
13
- // see https://www.ietf.org/rfc/bcp/bcp47.txt
14
- const languageCodes = _.split(locale, '-')
15
- if (languageCodes.length > 0) return languageCodes[0]
16
- }
17
- // return undefined by default
18
- }
19
-
20
- export function getAppLocale () {
21
- const localeConfig = config.locale || {}
22
- const localeBrowser = getLocale()
23
- return localeConfig.default || localeBrowser
24
- }
25
-
26
- export function getAppFallbackLocale () {
27
- return config.fallbackLocale || 'en'
28
- }
1
+ import _ from 'lodash'
2
+ import config from 'config'
3
+
4
+ export function getLocale () {
5
+ const locale =
6
+ navigator.language ||
7
+ navigator.languages[0] ||
8
+ navigator.browserLanguage ||
9
+ navigator.userLanguage ||
10
+ navigator.systemLanguage
11
+
12
+ if (locale) {
13
+ // see https://www.ietf.org/rfc/bcp/bcp47.txt
14
+ const languageCodes = _.split(locale, '-')
15
+ if (languageCodes.length > 0) return languageCodes[0]
16
+ }
17
+ // return undefined by default
18
+ }
19
+
20
+ export function getAppLocale () {
21
+ const localeConfig = config.locale || {}
22
+ const localeBrowser = getLocale()
23
+ return localeConfig.default || localeBrowser
24
+ }
25
+
26
+ export function getAppFallbackLocale () {
27
+ return config.fallbackLocale || 'en'
28
+ }
@@ -1,11 +1,11 @@
1
- import { Platform } from 'quasar'
2
-
3
- export function getPlatform () {
4
- return Object.assign(Platform.is, {
5
- touch: Platform.has.touch,
6
- storage: Platform.has.webStorage,
7
- iframe: Platform.within.frame,
8
- agent: Platform.userAgent
9
- })
10
- }
11
-
1
+ import { Platform } from 'quasar'
2
+
3
+ export function getPlatform () {
4
+ return Object.assign(Platform.is, {
5
+ touch: Platform.has.touch,
6
+ storage: Platform.has.webStorage,
7
+ iframe: Platform.within.frame,
8
+ agent: Platform.userAgent
9
+ })
10
+ }
11
+
@@ -1,53 +1,53 @@
1
- import {
2
- checkPrerequisites,
3
- getPushSubscription,
4
- subscribePushNotifications,
5
- requestNotificationPermission,
6
- addSubscription
7
- } from '@kalisio/feathers-webpush/client.js'
8
- import { Notify } from 'quasar'
9
- import logger from 'loglevel'
10
- import _ from 'lodash'
11
- import moment from 'moment'
12
- import { i18n } from '../i18n.js'
13
- import { Store } from '../store.js'
14
- import { api } from '../api.js'
15
- import { getPlatform } from './utils.platform.js'
16
-
17
- export async function subscribeToPushNotifications () {
18
- // Check prerequisites & notification permission
19
- try {
20
- await checkPrerequisites()
21
- await requestNotificationPermission()
22
- } catch (error) {
23
- Notify.create({ type: 'negative', message: i18n.t(`errors.${error.code}`) })
24
- return
25
- }
26
- // Data
27
- const userService = api.service('api/users')
28
- const platform = getPlatform()
29
- const date = moment.utc().toISOString()
30
- const currentSubscription = await getPushSubscription()
31
- const user = Store.get('user')
32
- // Check if user is already subscribed
33
- if (currentSubscription && _.find(_.get(user, 'subscriptions', []), subscription => subscription.endpoint === currentSubscription.endpoint)) {
34
- // Patch subscription connection date
35
- const subscriptions = _.map(user.subscriptions, subscription => {
36
- if (subscription.endpoint === currentSubscription.endpoint) subscription.lastActivity = date
37
- return subscription
38
- })
39
- userService.patch(Store.user._id, { subscriptions: subscriptions })
40
- logger.debug(`New connection date registered on ${date} with subscription endpoint: ${currentSubscription.endpoint}`)
41
- return
42
- }
43
- // Subscribe to web webpush notifications
44
- const subscription = await subscribePushNotifications(Store.get('capabilities.api.vapidPublicKey'))
45
- // Set platform informations
46
- subscription.browser = { name: platform.name, version: platform.version }
47
- subscription.platform = platform.platform
48
- subscription.lastActivity = date
49
- // Patch user subscriptions
50
- await addSubscription(user, subscription, 'subscriptions')
51
- userService.patch(Store.user._id, { subscriptions: user.subscriptions })
52
- logger.debug(`New webpush subscription registered with endpoint: ${subscription.endpoint}`)
53
- }
1
+ import {
2
+ checkPrerequisites,
3
+ getPushSubscription,
4
+ subscribePushNotifications,
5
+ requestNotificationPermission,
6
+ addSubscription
7
+ } from '@kalisio/feathers-webpush/client.js'
8
+ import { Notify } from 'quasar'
9
+ import logger from 'loglevel'
10
+ import _ from 'lodash'
11
+ import moment from 'moment'
12
+ import { i18n } from '../i18n.js'
13
+ import { Store } from '../store.js'
14
+ import { api } from '../api.js'
15
+ import { getPlatform } from './utils.platform.js'
16
+
17
+ export async function subscribeToPushNotifications () {
18
+ // Check prerequisites & notification permission
19
+ try {
20
+ await checkPrerequisites()
21
+ await requestNotificationPermission()
22
+ } catch (error) {
23
+ Notify.create({ type: 'negative', message: i18n.t(`errors.${error.code}`) })
24
+ return
25
+ }
26
+ // Data
27
+ const userService = api.service('api/users')
28
+ const platform = getPlatform()
29
+ const date = moment.utc().toISOString()
30
+ const currentSubscription = await getPushSubscription()
31
+ const user = Store.get('user')
32
+ // Check if user is already subscribed
33
+ if (currentSubscription && _.find(_.get(user, 'subscriptions', []), subscription => subscription.endpoint === currentSubscription.endpoint)) {
34
+ // Patch subscription connection date
35
+ const subscriptions = _.map(user.subscriptions, subscription => {
36
+ if (subscription.endpoint === currentSubscription.endpoint) subscription.lastActivity = date
37
+ return subscription
38
+ })
39
+ userService.patch(Store.user._id, { subscriptions: subscriptions })
40
+ logger.debug(`New connection date registered on ${date} with subscription endpoint: ${currentSubscription.endpoint}`)
41
+ return
42
+ }
43
+ // Subscribe to web webpush notifications
44
+ const subscription = await subscribePushNotifications(Store.get('capabilities.api.vapidPublicKey'))
45
+ // Set platform informations
46
+ subscription.browser = { name: platform.name, version: platform.version }
47
+ subscription.platform = platform.platform
48
+ subscription.lastActivity = date
49
+ // Patch user subscriptions
50
+ await addSubscription(user, subscription, 'subscriptions')
51
+ userService.patch(Store.user._id, { subscriptions: user.subscriptions })
52
+ logger.debug(`New webpush subscription registered with endpoint: ${subscription.endpoint}`)
53
+ }