@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.
- package/.codeclimate.yml +34 -34
- package/.nycrc +5 -5
- package/.travis.doc.sh +8 -8
- package/.travis.test.sh +40 -40
- package/CHANGELOG.md +727 -727
- package/LICENSE +21 -21
- package/README.md +32 -32
- package/core/api/application.js +591 -591
- package/core/api/authentication.js +203 -203
- package/core/api/db.js +226 -226
- package/core/api/hooks/hooks.authentication.js +73 -73
- package/core/api/hooks/hooks.authorisations.js +376 -376
- package/core/api/hooks/hooks.groups.js +48 -48
- package/core/api/hooks/hooks.logger.js +26 -26
- package/core/api/hooks/hooks.model.js +290 -290
- package/core/api/hooks/hooks.organisations.js +156 -156
- package/core/api/hooks/hooks.push.js +56 -56
- package/core/api/hooks/hooks.query.js +246 -246
- package/core/api/hooks/hooks.schemas.js +73 -73
- package/core/api/hooks/hooks.service.js +78 -78
- package/core/api/hooks/hooks.storage.js +36 -36
- package/core/api/hooks/hooks.users.js +261 -261
- package/core/api/hooks/index.js +12 -12
- package/core/api/index.js +21 -21
- package/core/api/marshall.js +90 -90
- package/core/api/models/groups.model.mongodb.js +8 -8
- package/core/api/models/organisations.model.mongodb.js +3 -3
- package/core/api/models/tags.model.mongodb.js +10 -10
- package/core/api/models/users.model.mongodb.js +10 -10
- package/core/api/services/account/account.hooks.js +37 -37
- package/core/api/services/account/account.service.js +117 -117
- package/core/api/services/authorisations/authorisations.hooks.js +33 -33
- package/core/api/services/authorisations/authorisations.service.js +139 -139
- package/core/api/services/databases/databases.hooks.js +36 -36
- package/core/api/services/databases/databases.service.js +5 -5
- package/core/api/services/groups/groups.hooks.js +31 -31
- package/core/api/services/index.js +126 -126
- package/core/api/services/mailer/mailer.hooks.js +35 -35
- package/core/api/services/mailer/mailer.service.js +11 -11
- package/core/api/services/organisations/organisations.hooks.js +31 -31
- package/core/api/services/organisations/organisations.service.js +86 -86
- package/core/api/services/push/push.hooks.js +35 -35
- package/core/api/services/push/push.service.js +12 -12
- package/core/api/services/storage/storage.hooks.js +35 -35
- package/core/api/services/storage/storage.service.js +29 -29
- package/core/api/services/tags/tags.hooks.js +31 -31
- package/core/api/services/users/users.hooks.js +75 -75
- package/core/api/utils.js +11 -11
- package/core/client/api.js +293 -293
- package/core/client/capabilities.js +22 -22
- package/core/client/components/KAction.vue +393 -393
- package/core/client/components/KAvatar.vue +129 -129
- package/core/client/components/KBlock.vue +67 -67
- package/core/client/components/KChip.vue +68 -68
- package/core/client/components/KChipsPane.vue +103 -103
- package/core/client/components/KContent.vue +105 -105
- package/core/client/components/KDialog.vue +160 -160
- package/core/client/components/KExpandable.vue +49 -49
- package/core/client/components/KLogo.vue +32 -32
- package/core/client/components/KModal.vue +173 -173
- package/core/client/components/KPanel.vue +64 -64
- package/core/client/components/KScrollArea.vue +88 -88
- package/core/client/components/KSponsor.vue +40 -40
- package/core/client/components/KStamp.vue +65 -65
- package/core/client/components/KStore.vue +102 -102
- package/core/client/components/KTextArea.vue +143 -143
- package/core/client/components/KTree.vue +31 -31
- package/core/client/components/KVersion.vue +19 -19
- package/core/client/components/account/KAccount.vue +68 -68
- package/core/client/components/account/KDeleteAccountManager.vue +62 -62
- package/core/client/components/account/KEmailManager.vue +128 -128
- package/core/client/components/account/KPasswordManager.vue +90 -90
- package/core/client/components/account/KProfile.vue +109 -109
- package/core/client/components/account/KResetPassword.vue +126 -120
- package/core/client/components/account/KSendResetPassword.vue +97 -97
- package/core/client/components/account/KSubscription.vue +71 -71
- package/core/client/components/account/KSubscriptionsManager.vue +46 -46
- package/core/client/components/account/KVerifyEmailManager.vue +105 -105
- package/core/client/components/account/index.js +7 -7
- package/core/client/components/app/KAbout.vue +98 -98
- package/core/client/components/app/KHome.vue +12 -12
- package/core/client/components/app/KPlatform.vue +55 -55
- package/core/client/components/app/KSettings.vue +42 -42
- package/core/client/components/app/KTerms.vue +41 -41
- package/core/client/components/app/KTour.vue +448 -448
- package/core/client/components/app/KWelcome.vue +133 -133
- package/core/client/components/app/index.js +11 -11
- package/core/client/components/chart/KChart.vue +197 -197
- package/core/client/components/chart/KDataTable.vue +183 -183
- package/core/client/components/chart/KStatisticsChart.vue +94 -94
- package/core/client/components/chart/KTimeSeriesChart.vue +431 -431
- package/core/client/components/chart/index.js +9 -9
- package/core/client/components/collection/KBoard.vue +65 -65
- package/core/client/components/collection/KCard.vue +196 -196
- package/core/client/components/collection/KCardSection.vue +52 -52
- package/core/client/components/collection/KColumn.vue +229 -229
- package/core/client/components/collection/KFilter.vue +158 -158
- package/core/client/components/collection/KGrid.vue +121 -121
- package/core/client/components/collection/KHistory.vue +118 -118
- package/core/client/components/collection/KHistoryEntry.vue +111 -111
- package/core/client/components/collection/KItem.vue +128 -128
- package/core/client/components/collection/KList.vue +135 -135
- package/core/client/components/collection/KSorter.vue +46 -46
- package/core/client/components/collection/KTable.vue +238 -238
- package/core/client/components/collection/index.js +19 -19
- package/core/client/components/editor/KEditor.vue +52 -52
- package/core/client/components/editor/KModalEditor.vue +96 -96
- package/core/client/components/editor/index.js +7 -7
- package/core/client/components/form/KChipsField.vue +162 -162
- package/core/client/components/form/KColorField.vue +69 -69
- package/core/client/components/form/KColorScaleField.vue +86 -86
- package/core/client/components/form/KDateTimeRangeField.vue +65 -65
- package/core/client/components/form/KDatetimeField.vue +70 -70
- package/core/client/components/form/KEmailField.vue +33 -33
- package/core/client/components/form/KFileField.vue +161 -161
- package/core/client/components/form/KForm.vue +247 -247
- package/core/client/components/form/KIconField.vue +101 -101
- package/core/client/components/form/KItemField.vue +123 -123
- package/core/client/components/form/KNumberField.vue +33 -33
- package/core/client/components/form/KOptionsField.vue +63 -63
- package/core/client/components/form/KPasswordField.vue +57 -57
- package/core/client/components/form/KPhoneField.vue +32 -32
- package/core/client/components/form/KPropertyItemField.vue +119 -119
- package/core/client/components/form/KRoleField.vue +60 -60
- package/core/client/components/form/KSelectField.vue +143 -143
- package/core/client/components/form/KTextField.vue +48 -48
- package/core/client/components/form/KTextareaField.vue +88 -88
- package/core/client/components/form/KToggleField.vue +46 -46
- package/core/client/components/form/KTokenField.vue +80 -80
- package/core/client/components/form/KUnitField.vue +57 -57
- package/core/client/components/form/KUrlField.vue +32 -32
- package/core/client/components/form/KView.vue +118 -118
- package/core/client/components/form/index.js +7 -7
- package/core/client/components/index.js +48 -48
- package/core/client/components/input/KColorChooser.vue +63 -63
- package/core/client/components/input/KIconChooser.vue +308 -308
- package/core/client/components/input/KOptionsChooser.vue +122 -122
- package/core/client/components/input/KPalette.vue +40 -40
- package/core/client/components/input/index.js +11 -11
- package/core/client/components/layout/KFab.vue +113 -113
- package/core/client/components/layout/KLayout.vue +64 -64
- package/core/client/components/layout/KOpener.vue +140 -140
- package/core/client/components/layout/KPage.vue +320 -320
- package/core/client/components/layout/KPageSticky.vue +53 -53
- package/core/client/components/layout/KWindow.vue +443 -443
- package/core/client/components/layout/index.js +13 -13
- package/core/client/components/media/KColorScale.vue +254 -254
- package/core/client/components/media/KImageViewer.vue +44 -44
- package/core/client/components/media/KMarkdownViewer.vue +55 -55
- package/core/client/components/media/KMediaBrowser.vue +301 -340
- package/core/client/components/media/KShape.vue +120 -120
- package/core/client/components/media/index.js +13 -13
- package/core/client/components/menu/KMenu.vue +147 -147
- package/core/client/components/menu/KRadialFab.vue +122 -122
- package/core/client/components/menu/KRadialFabItem.vue +73 -73
- package/core/client/components/menu/index.js +9 -9
- package/core/client/components/screen/KEndpointScreen.vue +80 -80
- package/core/client/components/screen/KErrorScreen.vue +24 -24
- package/core/client/components/screen/KLoginScreen.vue +84 -84
- package/core/client/components/screen/KLogoutScreen.vue +20 -20
- package/core/client/components/screen/KRegisterScreen.vue +114 -114
- package/core/client/components/screen/KScreen.vue +106 -106
- package/core/client/components/screen/KScreenFooter.vue +32 -32
- package/core/client/components/screen/KScreenHeader.vue +17 -17
- package/core/client/components/screen/index.js +5 -5
- package/core/client/components/team/KAddMember.vue +375 -375
- package/core/client/components/team/KAddTag.vue +121 -121
- package/core/client/components/team/KChangeRole.vue +118 -118
- package/core/client/components/team/KGroupCard.vue +110 -110
- package/core/client/components/team/KGroupsActivity.vue +66 -66
- package/core/client/components/team/KJoinGroup.vue +132 -132
- package/core/client/components/team/KMemberCard.vue +328 -328
- package/core/client/components/team/KMemberFilter.vue +49 -49
- package/core/client/components/team/KMembersActivity.vue +126 -126
- package/core/client/components/team/KOrganisationsActivity.vue +53 -53
- package/core/client/components/team/KTagCard.vue +72 -72
- package/core/client/components/team/KTagsActivity.vue +61 -61
- package/core/client/components/team/index.js +9 -9
- package/core/client/components/time/KAbsoluteTimeRange.vue +183 -183
- package/core/client/components/time/KDate.vue +75 -75
- package/core/client/components/time/KDateTime.vue +172 -172
- package/core/client/components/time/KDateTimeRange.vue +118 -118
- package/core/client/components/time/KRelativeTimeRanges.vue +193 -193
- package/core/client/components/time/KTime.vue +74 -74
- package/core/client/components/time/index.js +7 -7
- package/core/client/components/viewer/KModalViewer.vue +47 -47
- package/core/client/components/viewer/KViewer.vue +30 -30
- package/core/client/composables/activity.js +67 -67
- package/core/client/composables/collection.js +181 -181
- package/core/client/composables/index.js +8 -8
- package/core/client/composables/pwa.js +71 -71
- package/core/client/composables/schema.js +64 -64
- package/core/client/composables/selection.js +88 -88
- package/core/client/composables/session.js +172 -172
- package/core/client/composables/store.js +49 -49
- package/core/client/composables/version.js +47 -47
- package/core/client/events.js +3 -3
- package/core/client/filter.js +60 -60
- package/core/client/guards.js +101 -101
- package/core/client/hooks/hooks.events.js +7 -7
- package/core/client/hooks/hooks.logger.js +24 -24
- package/core/client/hooks/hooks.users.js +22 -22
- package/core/client/hooks/index.js +3 -3
- package/core/client/i18n/core_en.json +845 -845
- package/core/client/i18n/core_fr.json +843 -843
- package/core/client/i18n.js +88 -88
- package/core/client/index.js +84 -84
- package/core/client/layout.js +323 -323
- package/core/client/local-storage.js +28 -28
- package/core/client/mixins/index.js +12 -12
- package/core/client/mixins/mixin.account.js +61 -61
- package/core/client/mixins/mixin.base-activity.js +232 -232
- package/core/client/mixins/mixin.base-collection.js +162 -162
- package/core/client/mixins/mixin.base-context.js +54 -54
- package/core/client/mixins/mixin.base-editor.js +194 -194
- package/core/client/mixins/mixin.base-field.js +105 -105
- package/core/client/mixins/mixin.base-item.js +166 -166
- package/core/client/mixins/mixin.base-modal.js +36 -36
- package/core/client/mixins/mixin.base-viewer.js +43 -43
- package/core/client/mixins/mixin.object-proxy.js +46 -46
- package/core/client/mixins/mixin.schema-proxy.js +97 -97
- package/core/client/mixins/mixin.service.js +22 -22
- package/core/client/reader.js +65 -65
- package/core/client/readers/index.js +3 -3
- package/core/client/readers/reader.blob.js +39 -39
- package/core/client/readers/reader.csv.js +36 -36
- package/core/client/readers/reader.json.js +34 -34
- package/core/client/search.js +47 -47
- package/core/client/services/index.js +49 -49
- package/core/client/services/local-settings.service.js +67 -67
- package/core/client/sorter.js +31 -31
- package/core/client/storage.js +110 -102
- package/core/client/store.js +39 -39
- package/core/client/theme.js +40 -40
- package/core/client/time.js +167 -167
- package/core/client/units.js +218 -218
- package/core/client/utils/index.js +203 -203
- package/core/client/utils/utils.account.js +52 -52
- package/core/client/utils/utils.colors.js +36 -36
- package/core/client/utils/utils.content.js +185 -185
- package/core/client/utils/utils.locale.js +28 -28
- package/core/client/utils/utils.platform.js +11 -11
- package/core/client/utils/utils.push.js +53 -53
- package/core/client/utils/utils.pwa.js +62 -62
- package/core/client/utils/utils.session.js +89 -89
- package/core/common/errors.js +1 -1
- package/core/common/index.js +10 -10
- package/core/common/permissions.js +318 -318
- package/core/common/schema.js +35 -35
- package/core/common/schemas/groups.create.json +28 -28
- package/core/common/schemas/groups.update.json +28 -28
- package/core/common/schemas/organisations.create.json +28 -28
- package/core/common/schemas/organisations.update.json +49 -49
- package/core/common/schemas/settings.update.json +234 -234
- package/core/common/schemas/tags.create.json +35 -35
- package/core/common/schemas/tags.update.json +35 -35
- package/core/common/schemas/users.update-profile.json +33 -33
- package/core/common/utils.js +45 -45
- package/core.api.js +5 -5
- package/core.client.js +5 -5
- package/core.common.js +1 -1
- package/extras/css/core.variables.scss +38 -38
- package/extras/icons/center-on-feature.svg +315 -315
- package/extras/icons/json.svg +83 -83
- package/extras/icons/map-legend.svg +251 -251
- package/extras/icons/target.svg +37 -37
- package/extras/tours/core/account-profile.js +32 -32
- package/extras/tours/core/account.js +143 -143
- package/extras/tours/core/add-member.js +74 -74
- package/extras/tours/core/add-tag.js +12 -12
- package/extras/tours/core/create-group.js +19 -19
- package/extras/tours/core/create-organisation.js +19 -19
- package/extras/tours/core/create-tag.js +26 -26
- package/extras/tours/core/edit-member-role.js +13 -13
- package/extras/tours/core/groups.js +65 -65
- package/extras/tours/core/join-group.js +13 -13
- package/extras/tours/core/login.js +41 -41
- package/extras/tours/core/members.js +108 -108
- package/extras/tours/core/register.js +61 -61
- package/extras/tours/core/send-reset-password.js +14 -14
- package/extras/tours/core/tags.js +65 -65
- package/extras/tours/map/add-layer.js +28 -28
- package/extras/tours/map/catalog-categories.js +59 -59
- package/extras/tours/map/catalog-panel.js +112 -112
- package/extras/tours/map/connect-layer.js +39 -39
- package/extras/tours/map/create-layer.js +33 -33
- package/extras/tours/map/create-view.js +25 -25
- package/extras/tours/map/fab.js +26 -26
- package/extras/tours/map/import-layer.js +33 -33
- package/extras/tours/map/navigation-bar.js +185 -185
- package/extras/tours/map/side-nav.js +35 -35
- package/extras/tours/map/timeline.js +77 -77
- package/map/api/config/categories.cjs +42 -42
- package/map/api/config/layers.cjs +43 -43
- package/map/api/config/sublegends.cjs +42 -42
- package/map/api/hooks/hooks.catalog.js +85 -85
- package/map/api/hooks/hooks.features.js +84 -84
- package/map/api/hooks/hooks.query.js +361 -361
- package/map/api/hooks/index.js +3 -3
- package/map/api/index.js +18 -18
- package/map/api/marshall.js +31 -31
- package/map/api/models/alerts.model.mongodb.js +7 -7
- package/map/api/models/catalog.model.mongodb.js +14 -14
- package/map/api/models/features.model.mongodb.js +37 -37
- package/map/api/services/alerts/alerts.hooks.js +63 -63
- package/map/api/services/alerts/alerts.service.js +175 -175
- package/map/api/services/catalog/catalog.hooks.js +76 -76
- package/map/api/services/daptiles/daptiles.service.js +475 -475
- package/map/api/services/features/features.hooks.js +40 -40
- package/map/api/services/features/features.service.js +52 -52
- package/map/api/services/geocoder/geocoder.hooks.js +31 -31
- package/map/api/services/geocoder/geocoder.service.js +79 -79
- package/map/api/services/index.js +228 -228
- package/map/client/canvas-draw-context.js +16 -16
- package/map/client/cesium/utils.js +133 -133
- package/map/client/components/KCaptureToolbar.vue +155 -155
- package/map/client/components/KColorLegend.vue +349 -349
- package/map/client/components/KCompass.vue +143 -143
- package/map/client/components/KEditLayerData.vue +85 -85
- package/map/client/components/KFeatureActionButton.vue +119 -119
- package/map/client/components/KFeatureEditor.vue +92 -92
- package/map/client/components/KFeaturesChart.vue +285 -285
- package/map/client/components/KFeaturesFilter.vue +259 -259
- package/map/client/components/KFeaturesTable.vue +99 -99
- package/map/client/components/KLayerEditionToolbar.vue +54 -54
- package/map/client/components/KLayerEditor.vue +48 -48
- package/map/client/components/KLayerStyleEditor.vue +118 -118
- package/map/client/components/KLayerStyleForm.vue +906 -906
- package/map/client/components/KLevelSlider.vue +100 -100
- package/map/client/components/KMeasureTool.vue +568 -568
- package/map/client/components/KPositionIndicator.vue +90 -90
- package/map/client/components/KTimeline.vue +293 -293
- package/map/client/components/KTimezoneMap.vue +158 -158
- package/map/client/components/KUrlLegend.vue +122 -122
- package/map/client/components/catalog/KAddLayer.vue +66 -66
- package/map/client/components/catalog/KBaseLayersSelector.vue +114 -114
- package/map/client/components/catalog/KConnectLayer.vue +323 -323
- package/map/client/components/catalog/KCreateLayer.vue +184 -184
- package/map/client/components/catalog/KCreateView.vue +108 -108
- package/map/client/components/catalog/KFilteredLayerItem.vue +53 -53
- package/map/client/components/catalog/KImportLayer.vue +168 -168
- package/map/client/components/catalog/KLayerCategories.vue +274 -274
- package/map/client/components/catalog/KLayerItem.vue +70 -70
- package/map/client/components/catalog/KLayersPanel.vue +137 -137
- package/map/client/components/catalog/KLayersSelector.vue +78 -78
- package/map/client/components/catalog/KViewSelector.vue +46 -46
- package/map/client/components/catalog/KViewsPanel.vue +123 -123
- package/map/client/components/catalog/KWeatherLayersSelector.vue +129 -129
- package/map/client/components/form/KDirectionField.vue +113 -113
- package/map/client/components/form/KLayerCategoryField.vue +46 -46
- package/map/client/components/form/KLocationField.vue +189 -189
- package/map/client/components/form/KOwsLayerField.vue +130 -130
- package/map/client/components/form/KOwsServiceField.vue +238 -238
- package/map/client/components/form/KTimezoneField.vue +142 -142
- package/map/client/components/index.js +1 -1
- package/map/client/components/legend/KColorScaleLegend.vue +31 -31
- package/map/client/components/legend/KImageLegend.vue +52 -52
- package/map/client/components/legend/KLegend.vue +191 -191
- package/map/client/components/legend/KLegendRenderer.vue +20 -20
- package/map/client/components/legend/KSymbolsLegend.vue +101 -101
- package/map/client/components/location/KGeocodersFilter.vue +44 -44
- package/map/client/components/location/KLocationCardSection.vue +61 -61
- package/map/client/components/location/KLocationMap.vue +280 -280
- package/map/client/components/location/KLocationSearch.vue +144 -144
- package/map/client/components/location/KLocationTip.vue +29 -29
- package/map/client/components/tools/KGeolocateTool.vue +46 -46
- package/map/client/components/tools/KSearchTool.vue +93 -93
- package/map/client/components/widget/KElevationProfile.vue +454 -454
- package/map/client/components/widget/KInformationBox.vue +145 -145
- package/map/client/components/widget/KMapillaryViewer.vue +178 -178
- package/map/client/components/widget/KStackableTimeSeries.vue +214 -214
- package/map/client/components/widget/KTimeSeries.vue +500 -500
- package/map/client/composables/activity.js +88 -88
- package/map/client/composables/highlight.js +214 -214
- package/map/client/composables/index.js +7 -7
- package/map/client/composables/location.js +53 -53
- package/map/client/composables/measure.js +42 -42
- package/map/client/composables/probe.js +133 -133
- package/map/client/composables/selection.js +300 -300
- package/map/client/composables/weather.js +213 -213
- package/map/client/elevation-utils.js +258 -258
- package/map/client/geolocation.js +119 -119
- package/map/client/globe.js +13 -13
- package/map/client/i18n/map_en.json +645 -645
- package/map/client/i18n/map_fr.json +646 -646
- package/map/client/index.js +18 -18
- package/map/client/init.js +80 -80
- package/map/client/leaflet/GSMaPLayer.js +55 -55
- package/map/client/leaflet/GradientPath.js +180 -180
- package/map/client/leaflet/MaskLayer.js +57 -57
- package/map/client/leaflet/TiledFeatureLayer.js +572 -572
- package/map/client/leaflet/TiledMeshLayer.js +486 -486
- package/map/client/leaflet/TiledWindLayer.js +384 -384
- package/map/client/leaflet/utils.js +246 -246
- package/map/client/map.js +15 -15
- package/map/client/mixins/globe/index.js +8 -8
- package/map/client/mixins/globe/mixin.base-globe.js +462 -462
- package/map/client/mixins/globe/mixin.file-layers.js +40 -40
- package/map/client/mixins/globe/mixin.geojson-layers.js +314 -314
- package/map/client/mixins/globe/mixin.globe-activity.js +52 -52
- package/map/client/mixins/globe/mixin.opendap-layers.js +51 -51
- package/map/client/mixins/globe/mixin.popup.js +82 -82
- package/map/client/mixins/globe/mixin.style.js +110 -110
- package/map/client/mixins/globe/mixin.tooltip.js +101 -101
- package/map/client/mixins/index.js +9 -9
- package/map/client/mixins/map/index.js +16 -16
- package/map/client/mixins/map/mixin.base-map.js +592 -592
- package/map/client/mixins/map/mixin.canvas-layers.js +529 -529
- package/map/client/mixins/map/mixin.edit-layers.js +493 -474
- package/map/client/mixins/map/mixin.file-layers.js +49 -49
- package/map/client/mixins/map/mixin.forecast-layers.js +79 -79
- package/map/client/mixins/map/mixin.geojson-layers.js +557 -557
- package/map/client/mixins/map/mixin.georaster-layers.js +114 -114
- package/map/client/mixins/map/mixin.gsmap-layers.js +27 -27
- package/map/client/mixins/map/mixin.heatmap-layers.js +116 -116
- package/map/client/mixins/map/mixin.map-activity.js +38 -38
- package/map/client/mixins/map/mixin.mapillary-layers.js +45 -45
- package/map/client/mixins/map/mixin.popup.js +53 -53
- package/map/client/mixins/map/mixin.style.js +73 -73
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +120 -120
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +126 -126
- package/map/client/mixins/map/mixin.tooltip.js +47 -47
- package/map/client/mixins/mixin.activity.js +477 -477
- package/map/client/mixins/mixin.catalog-panel.js +26 -26
- package/map/client/mixins/mixin.context.js +262 -262
- package/map/client/mixins/mixin.feature-selection.js +28 -28
- package/map/client/mixins/mixin.feature-service.js +403 -403
- package/map/client/mixins/mixin.infobox.js +29 -29
- package/map/client/mixins/mixin.levels.js +66 -66
- package/map/client/mixins/mixin.style.js +29 -29
- package/map/client/mixins/mixin.weacast.js +212 -212
- package/map/client/pixi-utils.js +256 -256
- package/map/client/readers/index.js +4 -4
- package/map/client/readers/reader.geojson.js +64 -64
- package/map/client/readers/reader.gpx.js +36 -36
- package/map/client/readers/reader.kml.js +36 -36
- package/map/client/readers/reader.shp.js +82 -82
- package/map/client/utils/index.js +3 -3
- package/map/client/utils/utils.js +228 -228
- package/map/client/utils/utils.location.js +45 -45
- package/map/client/utils/utils.schema.js +75 -75
- package/map/client/utils.all.js +3 -3
- package/map/client/utils.globe.js +2 -2
- package/map/client/utils.js +4 -4
- package/map/client/utils.map.js +2 -2
- package/map/common/dynamic-grid-source.js +127 -127
- package/map/common/errors.js +3 -3
- package/map/common/geotiff-grid-source.js +150 -150
- package/map/common/grid.js +509 -509
- package/map/common/index.js +29 -29
- package/map/common/meteo-model-grid-source.js +157 -157
- package/map/common/moment-utils.js +24 -24
- package/map/common/opendap-grid-source.js +261 -261
- package/map/common/opendap-utils.js +247 -247
- package/map/common/permissions.js +11 -11
- package/map/common/schemas/catalog.update.json +28 -28
- package/map/common/time-based-grid-source.js +111 -111
- package/map/common/tms-utils.js +63 -63
- package/map/common/wcs-grid-source.js +93 -93
- package/map/common/wcs-utils.js +167 -167
- package/map/common/weacast-grid-source.js +316 -316
- package/map/common/wfs-utils.js +163 -163
- package/map/common/wms-utils.js +117 -117
- package/map/common/wmts-utils.js +154 -154
- package/map.api.js +5 -5
- package/map.client.globe.js +5 -5
- package/map.client.js +5 -5
- package/map.client.map.js +5 -5
- package/map.common.js +1 -1
- package/map.config.cjs +9 -9
- package/package.json +161 -161
- package/test/api/core/account.test.js +485 -485
- package/test/api/core/client.test.js.skip +37 -37
- package/test/api/core/config/default.cjs +118 -118
- package/test/api/core/config/email-templates/confirmInvitation/html.ejs +18 -18
- package/test/api/core/config/email-templates/identityChange/html.ejs +14 -14
- package/test/api/core/config/email-templates/newDevice/html.ejs +7 -7
- package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -7
- package/test/api/core/config/email-templates/passwordChange/html.ejs +5 -5
- package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +12 -12
- package/test/api/core/config/email-templates/resetPwd/html.ejs +5 -5
- package/test/api/core/config/email-templates/sendResetPwd/html.ejs +12 -12
- package/test/api/core/config/email-templates/verifySignup/html.ejs +3 -3
- package/test/api/core/data/invalid-objects.json +59 -59
- package/test/api/core/data/schema.json +57 -57
- package/test/api/core/data/valid-objects.json +37 -37
- package/test/api/core/hooks.test.js +330 -330
- package/test/api/core/index.js +1 -1
- package/test/api/core/index.test.js +478 -478
- package/test/api/core/push.test.js +197 -197
- package/test/api/core/schemas.test.js +82 -82
- package/test/api/core/storage.test.js +153 -153
- package/test/api/core/team.test.js +670 -670
- package/test/api/core/utils.js +92 -92
- package/test/api/index.js +3 -3
- package/test/api/map/alerts.test.js +560 -560
- package/test/api/map/config/default.cjs +125 -125
- package/test/api/map/config/layers.json +38 -38
- package/test/api/map/data/DescribeCoverage.xml +54 -54
- package/test/api/map/data/adsb.observations.json +131 -131
- package/test/api/map/data/dataset.grb.das +55 -55
- package/test/api/map/data/dataset.grb.dds +17 -17
- package/test/api/map/data/vigicrues.observations.json +47041 -47041
- package/test/api/map/data/vigicrues.stations.json +15421 -15421
- package/test/api/map/data/zones.json +1227 -1227
- package/test/api/map/grid-sources.test.js +313 -313
- package/test/api/map/hooks.test.js +98 -98
- package/test/api/map/index.test.js +563 -563
- package/test/client/core/account.js +36 -36
- package/test/client/core/api.js +361 -361
- package/test/client/core/collection.js +64 -64
- package/test/client/core/index.js +8 -8
- package/test/client/core/layout.js +116 -116
- package/test/client/core/runner.js +224 -224
- package/test/client/core/screens.js +35 -35
- package/test/client/core/time.js +10 -10
- package/test/client/core/utils.js +260 -260
- package/test/client/index.js +3 -3
- package/test/client/map/catalog.js +193 -193
- package/test/client/map/controls.js +41 -41
- package/test/client/map/index.js +4 -4
- package/test/client/map/time.js +24 -24
- package/test/client/map/utils.js +27 -27
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/core/api/application.js.html +0 -1789
- package/coverage/core/api/authentication.js.html +0 -694
- package/coverage/core/api/db.js.html +0 -751
- package/coverage/core/api/hooks/hooks.account.js.html +0 -169
- package/coverage/core/api/hooks/hooks.authentication.js.html +0 -274
- package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -1201
- package/coverage/core/api/hooks/hooks.devices.js.html +0 -211
- package/coverage/core/api/hooks/hooks.groups.js.html +0 -229
- package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/core/api/hooks/hooks.model.js.html +0 -988
- package/coverage/core/api/hooks/hooks.organisations.js.html +0 -823
- package/coverage/core/api/hooks/hooks.pusher.js.html +0 -730
- package/coverage/core/api/hooks/hooks.query.js.html +0 -838
- package/coverage/core/api/hooks/hooks.schemas.js.html +0 -244
- package/coverage/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/core/api/hooks/hooks.tags.js.html +0 -850
- package/coverage/core/api/hooks/hooks.users.js.html +0 -889
- package/coverage/core/api/hooks/index.html +0 -341
- package/coverage/core/api/hooks/index.js.html +0 -130
- package/coverage/core/api/index.html +0 -176
- package/coverage/core/api/index.js.html +0 -148
- package/coverage/core/api/marshall.js.html +0 -355
- package/coverage/core/api/models/groups.model.mongodb.js.html +0 -109
- package/coverage/core/api/models/index.html +0 -161
- package/coverage/core/api/models/organisations.model.mongodb.js.html +0 -94
- package/coverage/core/api/models/tags.model.mongodb.js.html +0 -115
- package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/core/api/oauth2-handler.js.html +0 -202
- package/coverage/core/api/oauth2-verifier.js.html +0 -355
- package/coverage/core/api/services/account/account.hooks.js.html +0 -196
- package/coverage/core/api/services/account/account.service.js.html +0 -448
- package/coverage/core/api/services/account/index.html +0 -131
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -502
- package/coverage/core/api/services/authorisations/index.html +0 -131
- package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/core/api/services/databases/index.html +0 -131
- package/coverage/core/api/services/devices/devices.hooks.js.html +0 -190
- package/coverage/core/api/services/devices/devices.service.js.html +0 -382
- package/coverage/core/api/services/devices/index.html +0 -131
- package/coverage/core/api/services/groups/groups.hooks.js.html +0 -184
- package/coverage/core/api/services/groups/index.html +0 -116
- package/coverage/core/api/services/index.html +0 -116
- package/coverage/core/api/services/index.js.html +0 -472
- package/coverage/core/api/services/mailer/index.html +0 -131
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/core/api/services/organisations/index.html +0 -131
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +0 -178
- package/coverage/core/api/services/organisations/organisations.service.js.html +0 -319
- package/coverage/core/api/services/pusher/index.html +0 -146
- package/coverage/core/api/services/pusher/pusher.channels.js.html +0 -94
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +0 -193
- package/coverage/core/api/services/pusher/pusher.service.js.html +0 -1420
- package/coverage/core/api/services/storage/index.html +0 -131
- package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/core/api/services/tags/index.html +0 -116
- package/coverage/core/api/services/tags/tags.hooks.js.html +0 -220
- package/coverage/core/api/services/users/index.html +0 -116
- package/coverage/core/api/services/users/users.hooks.js.html +0 -313
- package/coverage/core/common/errors.js.html +0 -88
- package/coverage/core/common/index.html +0 -176
- package/coverage/core/common/index.js.html +0 -115
- package/coverage/core/common/permissions.js.html +0 -1015
- package/coverage/core/common/schema.js.html +0 -190
- package/coverage/core/common/utils.js.html +0 -220
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -491
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/core/api/application.js.html +0 -1789
- package/coverage/lcov-report/core/api/authentication.js.html +0 -694
- package/coverage/lcov-report/core/api/db.js.html +0 -751
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +0 -169
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -274
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -1201
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +0 -211
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +0 -229
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -988
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -823
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +0 -730
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -838
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -244
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +0 -850
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -889
- package/coverage/lcov-report/core/api/hooks/index.html +0 -341
- package/coverage/lcov-report/core/api/hooks/index.js.html +0 -130
- package/coverage/lcov-report/core/api/index.html +0 -176
- package/coverage/lcov-report/core/api/index.js.html +0 -148
- package/coverage/lcov-report/core/api/marshall.js.html +0 -355
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +0 -109
- package/coverage/lcov-report/core/api/models/index.html +0 -161
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +0 -94
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -115
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +0 -202
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +0 -355
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -196
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -448
- package/coverage/lcov-report/core/api/services/account/index.html +0 -131
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -502
- package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +0 -382
- package/coverage/lcov-report/core/api/services/devices/index.html +0 -131
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/groups/index.html +0 -116
- package/coverage/lcov-report/core/api/services/index.html +0 -116
- package/coverage/lcov-report/core/api/services/index.js.html +0 -472
- package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/lcov-report/core/api/services/organisations/index.html +0 -131
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +0 -178
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -319
- package/coverage/lcov-report/core/api/services/pusher/index.html +0 -146
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +0 -94
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +0 -193
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +0 -1420
- package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -220
- package/coverage/lcov-report/core/api/services/users/index.html +0 -116
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -313
- package/coverage/lcov-report/core/common/errors.js.html +0 -88
- package/coverage/lcov-report/core/common/index.html +0 -176
- package/coverage/lcov-report/core/common/index.js.html +0 -115
- package/coverage/lcov-report/core/common/permissions.js.html +0 -1015
- package/coverage/lcov-report/core/common/schema.js.html +0 -190
- package/coverage/lcov-report/core/common/utils.js.html +0 -220
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -491
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -340
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -337
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1162
- package/coverage/lcov-report/map/api/hooks/index.html +0 -161
- package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
- package/coverage/lcov-report/map/api/index.html +0 -131
- package/coverage/lcov-report/map/api/index.js.html +0 -139
- package/coverage/lcov-report/map/api/marshall.js.html +0 -178
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -127
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -202
- package/coverage/lcov-report/map/api/models/index.html +0 -146
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -313
- package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -205
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -241
- package/coverage/lcov-report/map/api/services/features/index.html +0 -131
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +0 -178
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +0 -322
- package/coverage/lcov-report/map/api/services/geocoder/index.html +0 -131
- package/coverage/lcov-report/map/api/services/index.html +0 -116
- package/coverage/lcov-report/map/api/services/index.js.html +0 -760
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/lcov-report/map/common/errors.js.html +0 -94
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -535
- package/coverage/lcov-report/map/common/grid.js.html +0 -1612
- package/coverage/lcov-report/map/common/index.html +0 -371
- package/coverage/lcov-report/map/common/index.js.html +0 -172
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -826
- package/coverage/lcov-report/map/common/permissions.js.html +0 -118
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/lcov-report/map/common/tms-utils.js.html +0 -274
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -586
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -574
- package/coverage/lcov-report/map/common/wms-utils.js.html +0 -436
- package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -547
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -12501
- package/coverage/map/api/hooks/hooks.catalog.js.html +0 -340
- package/coverage/map/api/hooks/hooks.features.js.html +0 -337
- package/coverage/map/api/hooks/hooks.query.js.html +0 -1162
- package/coverage/map/api/hooks/index.html +0 -161
- package/coverage/map/api/hooks/index.js.html +0 -94
- package/coverage/map/api/index.html +0 -131
- package/coverage/map/api/index.js.html +0 -139
- package/coverage/map/api/marshall.js.html +0 -178
- package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -127
- package/coverage/map/api/models/features.model.mongodb.js.html +0 -202
- package/coverage/map/api/models/index.html +0 -146
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/map/api/services/alerts/index.html +0 -131
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -313
- package/coverage/map/api/services/catalog/index.html +0 -116
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/map/api/services/daptiles/index.html +0 -116
- package/coverage/map/api/services/features/features.hooks.js.html +0 -205
- package/coverage/map/api/services/features/features.service.js.html +0 -241
- package/coverage/map/api/services/features/index.html +0 -131
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +0 -178
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +0 -322
- package/coverage/map/api/services/geocoder/index.html +0 -131
- package/coverage/map/api/services/index.html +0 -116
- package/coverage/map/api/services/index.js.html +0 -760
- package/coverage/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/map/common/errors.js.html +0 -94
- package/coverage/map/common/geotiff-grid-source.js.html +0 -535
- package/coverage/map/common/grid.js.html +0 -1612
- package/coverage/map/common/index.html +0 -371
- package/coverage/map/common/index.js.html +0 -172
- package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/map/common/moment-utils.js.html +0 -157
- package/coverage/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/map/common/opendap-utils.js.html +0 -826
- package/coverage/map/common/permissions.js.html +0 -118
- package/coverage/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/map/common/tms-utils.js.html +0 -274
- package/coverage/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/map/common/wcs-utils.js.html +0 -586
- package/coverage/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/map/common/wfs-utils.js.html +0 -574
- package/coverage/map/common/wms-utils.js.html +0 -436
- package/coverage/map/common/wmts-utils.js.html +0 -547
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/tmp/coverage-19264-1684834146599-0.json +0 -1
- package/coverage/tmp/coverage-2508-1684834182408-0.json +0 -1
- package/coverage/tmp/coverage-25908-1684834189369-0.json +0 -1
- package/coverage/tmp/coverage-32364-1684834189420-0.json +0 -1
- package/coverage/tmp/coverage-36604-1684834189485-0.json +0 -1
- package/coverage/tmp/coverage-40652-1684834182272-0.json +0 -1
- package/coverage/tmp/coverage-48484-1684834182342-0.json +0 -1
- package/coverage/tmp/coverage-51652-1684834189584-0.json +0 -1
- package/coverage/tmp/coverage-9776-1684834189519-0.json +0 -1
- package/test/api/core/test-log-2023-06-05.log +0 -0
- package/test/api/map/test-log-2022-12-01.log +0 -19
- package/test/api/map/test-log-2023-01-05.log +0 -4
- package/test/api/map/test-log-2023-01-09.log +0 -3
- package/test/api/map/test-log-2023-02-05.log +0 -11
- package/test/api/map/test-log-2023-02-14.log +0 -82
- package/test/api/map/test-log-2023-02-28.log +0 -28
- package/test/api/map/test-log-2023-03-02.log +0 -11
- package/test/api/map/test-log-2023-03-06.log +0 -11
- package/test/api/map/test-log-2023-03-07.log +0 -61
- package/test/api/map/test-log-2023-03-31.log +0 -11
- package/test/api/map/test-log-2023-05-23.log +0 -11
- 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
|
+
}
|