@kalisio/kdk 2.6.4 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/api/application.js +2 -4
- package/core/api/authentication.js +2 -3
- package/core/api/db.js +10 -2
- package/core/api/hooks/hooks.authorisations.js +4 -2
- package/core/api/hooks/hooks.push.js +6 -2
- package/core/api/hooks/hooks.query.js +29 -12
- package/core/api/hooks/hooks.users.js +30 -17
- package/core/api/models/configurations.model.mongodb.js +4 -0
- package/core/api/services/authorisations/authorisations.service.js +1 -1
- package/core/api/services/configurations/configurations.hooks.js +33 -0
- package/core/api/services/index.js +41 -7
- package/core/api/services/messages/messages.hooks.js +9 -3
- package/core/client/api.js +14 -1
- package/core/client/capabilities.js +1 -6
- package/core/client/components/KAvatar.vue +24 -20
- package/core/client/components/account/KProfile.vue +10 -71
- package/core/client/components/account/index.js +0 -2
- package/core/client/components/app/KSettings.vue +1 -0
- package/core/client/components/collection/KBoard.vue +4 -3
- package/core/client/components/collection/KCardSection.vue +1 -0
- package/core/client/components/collection/KGrid.vue +2 -0
- package/core/client/components/collection/KTable.vue +5 -1
- package/core/client/components/collection/KTimeLine.vue +9 -1
- package/core/client/components/collection/index.js +0 -2
- package/core/client/components/form/KChipsField.vue +2 -1
- package/core/client/components/form/KEmailField.vue +1 -0
- package/core/client/components/form/KFileField.vue +22 -1
- package/core/client/components/form/KForm.vue +2 -0
- package/core/client/components/form/KItemField.vue +1 -0
- package/core/client/components/form/KNumberField.vue +1 -0
- package/core/client/components/form/KPasswordField.vue +1 -0
- package/core/client/components/form/KPhoneField.vue +1 -0
- package/core/client/components/form/KPropertyItemField.vue +1 -0
- package/core/client/components/form/KResolutionField.vue +1 -0
- package/core/client/components/form/KSelectField.vue +31 -0
- package/core/client/components/form/KTagField.vue +1 -0
- package/core/client/components/form/KTextField.vue +1 -0
- package/core/client/components/form/KTokenField.vue +1 -0
- package/core/client/components/form/KUnitField.vue +1 -0
- package/core/client/components/form/KUrlField.vue +1 -0
- package/core/client/components/graphics/KIcon.vue +3 -4
- package/core/client/components/layout/KPage.vue +1 -0
- package/core/client/components/layout/KWindow.vue +6 -3
- package/core/client/components/messages/KMessageComposer.vue +2 -1
- package/core/client/components/messages/KMessagesTimeLine.vue +1 -1
- package/core/client/components/time/KDate.vue +1 -2
- package/core/client/components/time/KDateTime.vue +11 -11
- package/core/client/components/time/KTime.vue +1 -1
- package/core/client/composables/collection.js +33 -8
- package/core/client/composables/errors.js +1 -1
- package/core/client/composables/layout.js +9 -9
- package/core/client/configurations.js +50 -0
- package/core/client/exporter.js +1 -1
- package/core/client/i18n/core_en.json +6 -39
- package/core/client/i18n/core_fr.json +6 -39
- package/core/client/index.js +2 -0
- package/core/client/layout.js +8 -8
- package/core/client/mixins/mixin.base-activity.js +5 -2
- package/core/client/mixins/mixin.base-field.js +3 -3
- package/core/client/search.js +2 -1
- package/core/client/utils/utils.collection.js +8 -8
- package/core/client/utils/utils.items.js +4 -0
- package/core/client/utils/utils.push.js +3 -3
- package/core/client/utils/utils.session.js +7 -5
- package/core/client/utils/utils.shapes.js +38 -7
- package/core/client/utils/utils.time.js +21 -22
- package/core/common/schemas/users.update-profile.json +3 -2
- package/coverage/core/api/application.js.html +392 -398
- package/coverage/core/api/authentication.js.html +352 -187
- package/coverage/core/api/db.js.html +165 -126
- package/coverage/core/api/hooks/hooks.authentication.js.html +22 -196
- package/coverage/core/api/hooks/hooks.authorisations.js.html +383 -662
- package/coverage/core/api/hooks/hooks.logger.js.html +41 -41
- package/coverage/core/api/hooks/hooks.model.js.html +113 -101
- package/coverage/core/api/hooks/hooks.push.js.html +124 -97
- package/coverage/core/api/hooks/hooks.query.js.html +292 -217
- package/coverage/core/api/hooks/hooks.schemas.js.html +123 -123
- package/coverage/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
- package/coverage/core/api/hooks/hooks.users.js.html +255 -447
- package/coverage/core/api/hooks/index.html +107 -122
- package/coverage/core/api/hooks/index.js.html +4 -10
- package/coverage/core/api/index.html +46 -61
- package/coverage/core/api/index.js.html +9 -9
- package/coverage/core/api/marshall.js.html +9 -9
- package/coverage/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
- package/coverage/core/api/models/index.html +35 -50
- package/coverage/core/api/models/messages.model.mongodb.js.html +39 -27
- package/coverage/core/api/models/tags.model.mongodb.js.html +26 -32
- package/coverage/core/api/models/users.model.mongodb.js.html +10 -10
- package/coverage/core/api/services/account/account.hooks.js.html +5 -5
- package/coverage/core/api/services/account/account.service.js.html +127 -127
- package/coverage/core/api/services/account/index.html +22 -22
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +213 -222
- package/coverage/core/api/services/authorisations/index.html +21 -21
- package/coverage/core/api/services/{organisations/organisations.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
- package/coverage/core/api/services/{groups → configurations}/index.html +8 -8
- package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/core/api/services/databases/index.html +1 -1
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/core/api/services/import-export/index.html +32 -32
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +313 -142
- package/coverage/core/api/services/mailer/index.html +32 -32
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/core/api/services/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +112 -76
- package/coverage/core/api/services/push/index.html +32 -32
- package/coverage/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/core/api/services/push/push.service.js.html +34 -34
- package/coverage/core/api/services/storage/index.html +29 -29
- package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/core/api/services/storage/storage.service.js.html +29 -29
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +119 -71
- package/coverage/core/api/services/users/index.html +27 -12
- package/coverage/core/api/services/users/users.hooks.js.html +14 -11
- package/coverage/core/api/services/users/users.service.js.html +100 -0
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +1 -1
- package/coverage/core/common/permissions.js.html +166 -472
- package/coverage/core/common/schema.js.html +4 -4
- package/coverage/core/common/utils.js.html +31 -25
- package/coverage/core/common/utils.offline.js.html +199 -0
- package/coverage/index.html +192 -192
- package/coverage/lcov-report/core/api/application.js.html +392 -398
- package/coverage/lcov-report/core/api/authentication.js.html +352 -187
- package/coverage/lcov-report/core/api/db.js.html +165 -126
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +22 -196
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +383 -662
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +41 -41
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +113 -101
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +124 -97
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +292 -217
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +123 -123
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +255 -447
- package/coverage/lcov-report/core/api/hooks/index.html +107 -122
- package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
- package/coverage/lcov-report/core/api/index.html +46 -61
- package/coverage/lcov-report/core/api/index.js.html +9 -9
- package/coverage/lcov-report/core/api/marshall.js.html +9 -9
- package/coverage/lcov-report/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
- package/coverage/lcov-report/core/api/models/index.html +35 -50
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +39 -27
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +26 -32
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +10 -10
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +5 -5
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +127 -127
- package/coverage/lcov-report/core/api/services/account/index.html +22 -22
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +213 -222
- package/coverage/lcov-report/core/api/services/authorisations/index.html +21 -21
- package/coverage/lcov-report/core/api/services/{groups/groups.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
- package/coverage/lcov-report/core/api/services/{groups → configurations}/index.html +8 -8
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +313 -142
- package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +112 -76
- package/coverage/lcov-report/core/api/services/push/index.html +32 -32
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
- package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +29 -29
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +119 -71
- package/coverage/lcov-report/core/api/services/users/index.html +27 -12
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +14 -11
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +1 -1
- package/coverage/lcov-report/core/common/permissions.js.html +166 -472
- package/coverage/lcov-report/core/common/schema.js.html +4 -4
- package/coverage/lcov-report/core/common/utils.js.html +31 -25
- package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
- package/coverage/lcov-report/index.html +192 -192
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +169 -31
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +215 -35
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +82 -7
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +22 -7
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +39 -12
- package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +86 -11
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
- package/coverage/lcov-report/map/api/services/features/index.html +7 -7
- package/coverage/lcov-report/map/api/services/index.html +5 -5
- package/coverage/lcov-report/map/api/services/index.js.html +326 -50
- package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/{core/api/services/organisations → lcov-report/map/api/services/styles}/index.html +10 -25
- package/coverage/lcov-report/{core/api/services/organisations/organisations.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +7 -10
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +19 -19
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +4 -7
- package/coverage/lcov-report/map/common/permissions.js.html +10 -4
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +9 -12
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/lcov-report/map/common/wcs-utils.js.html +12 -15
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +2 -2
- package/coverage/lcov-report/map/common/wfs-utils.js.html +14 -17
- package/coverage/lcov-report/map/common/wms-utils.js.html +30 -12
- package/coverage/lcov-report/map/common/wmts-utils.js.html +10 -13
- package/coverage/lcov.info +4157 -3816
- package/coverage/map/api/hooks/hooks.catalog.js.html +169 -31
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +215 -35
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +82 -7
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +22 -7
- package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +39 -12
- package/coverage/map/api/services/catalog/index.html +5 -5
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +86 -11
- package/coverage/map/api/services/features/features.service.js.html +307 -4
- package/coverage/map/api/services/features/index.html +7 -7
- package/coverage/map/api/services/index.html +5 -5
- package/coverage/map/api/services/index.js.html +326 -50
- package/coverage/map/api/services/projects/index.html +1 -1
- package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/{lcov-report/core/api/services/organisations → map/api/services/styles}/index.html +10 -25
- package/coverage/{core/api/services/groups/groups.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +7 -10
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +19 -19
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +4 -7
- package/coverage/map/common/permissions.js.html +10 -4
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +9 -12
- package/coverage/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/map/common/wcs-utils.js.html +12 -15
- package/coverage/map/common/weacast-grid-source.js.html +2 -2
- package/coverage/map/common/wfs-utils.js.html +14 -17
- package/coverage/map/common/wms-utils.js.html +30 -12
- package/coverage/map/common/wmts-utils.js.html +10 -13
- package/coverage/tmp/coverage-1028514-1773134124472-0.json +1 -0
- package/coverage/tmp/coverage-1028526-1773134124448-0.json +1 -0
- package/coverage/tmp/coverage-1028537-1773134124431-0.json +1 -0
- package/coverage/tmp/coverage-1028549-1773134124401-0.json +1 -0
- package/coverage/tmp/coverage-1028556-1773134124353-0.json +1 -0
- package/extras/configs/widgets.top.js +3 -3
- package/extras/tests/core/collection.mjs +2 -9
- package/extras/tours/pane.top.js +0 -9
- package/map/api/hooks/hooks.catalog.js +18 -4
- package/map/api/services/catalog/catalog.hooks.js +3 -0
- package/map/api/services/features/features.hooks.js +3 -1
- package/map/api/services/index.js +2 -6
- package/map/api/services/styles/styles.hooks.js +6 -1
- package/map/client/components/KFeatureActionButton.vue +9 -3
- package/map/client/components/KFeaturesFilterManager.vue +5 -5
- package/map/client/components/KFilterCondition.vue +17 -10
- package/map/client/components/KLayerEditor.vue +49 -39
- package/map/client/components/KMeasureTool.vue +7 -1
- package/map/client/components/KTimezoneMap.vue +29 -9
- package/map/client/components/catalog/KLayersPanel.vue +26 -16
- package/map/client/components/catalog/KLayersSelector.vue +13 -2
- package/map/client/components/catalog/KViewsPanel.vue +5 -4
- package/map/client/components/form/KSelectLayersField.vue +28 -17
- package/map/client/components/form/KSelectViewsField.vue +18 -9
- package/map/client/components/form/KTimezoneField.vue +1 -2
- package/map/client/components/legend/KVariablesLegend.vue +10 -1
- package/map/client/components/location/KLocationCardSection.vue +7 -2
- package/map/client/components/location/KLocationMap.vue +31 -7
- package/map/client/components/selection/KSelectedLayerFeatures.vue +2 -2
- package/map/client/components/stickies/KZoomControl.vue +1 -1
- package/map/client/components/styles/KStyleManager.vue +4 -1
- package/map/client/components/widget/KTimeSeries.vue +174 -497
- package/map/client/components/widget/KTimeSeriesSelector.vue +72 -0
- package/map/client/components/widget/KTimeSeriesToolbar.vue +83 -0
- package/map/client/composables/catalog.js +6 -10
- package/map/client/composables/highlight.js +12 -9
- package/map/client/composables/project.js +1 -1
- package/map/client/composables/selection.js +8 -7
- package/map/client/composables/weather.js +9 -2
- package/map/client/geolocation.js +8 -5
- package/map/client/i18n/map_en.json +11 -10
- package/map/client/i18n/map_fr.json +10 -9
- package/map/client/leaflet/TiledFeatureLayer.js +85 -82
- package/map/client/leaflet/utils/utils.geojson.js +3 -3
- package/map/client/mixins/globe/mixin.base-globe.js +15 -6
- package/map/client/mixins/globe/mixin.geojson-layers.js +27 -18
- package/map/client/mixins/map/mixin.edit-layers.js +9 -1
- package/map/client/mixins/map/mixin.pmtiles-layers.js +118 -29
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +12 -5
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +19 -10
- package/map/client/mixins/mixin.activity.js +23 -30
- package/map/client/mixins/mixin.feature-selection.js +41 -5
- package/map/client/planets.js +1 -1
- package/map/client/readers/reader.kml.js +2 -3
- package/map/client/utils/utils.catalog.js +36 -10
- package/map/client/utils/utils.layers.js +39 -8
- package/map/client/utils/utils.project.js +4 -0
- package/map/client/utils/utils.style.js +37 -7
- package/map/client/utils/utils.time-series.js +215 -6
- package/map/common/schemas/catalog.update.json +1 -1
- package/map/common/weacast-grid-source.js +1 -1
- package/package.json +3 -3
- package/scripts/kash/CHANGELOG.md +0 -4
- package/scripts/kash/README.md +0 -9
- package/scripts/kash/kash.sh +45 -40
- package/scripts/kash/scripts/run_tests.sh +1 -4
- package/test/api/core/authentication.test.js +9 -4
- package/test/api/core/config/default.cjs +1 -0
- package/test/api/core/hooks.test.js +6 -0
- package/test/api/core/index.test.js +43 -18
- package/test/api/core/push.test.js +8 -8
- package/test/api/core/test-log-2026-03-10.log +60 -0
- package/test/api/core/users.test.js +384 -0
- package/test/api/map/grid-sources.test.js +1 -1
- package/test/api/map/test-log-2026-03-10.log +56 -0
- package/vite/package.json +11 -2
- package/vite/test/core/composables.test.js +77 -0
- package/vite/vitest.config.js +13 -0
- package/vite/yarn.lock +1096 -18
- package/.vscode/settings.json +0 -5
- package/core/client/components/account/KAccount.vue +0 -68
- package/core/client/components/account/KDeleteAccountManager.vue +0 -62
- package/core/client/components/account/KEmailManager.vue +0 -128
- package/core/client/components/account/KPasswordManager.vue +0 -90
- package/core/client/components/account/KVerifyEmailManager.vue +0 -105
- package/core/client/components/collection/KColumn.vue +0 -227
- package/core/client/components/collection/KHistory.vue +0 -113
- package/core/client/components/collection/KHistoryEntry.vue +0 -109
- package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
- package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
- package/coverage/core/api/utils.js.html +0 -118
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
- package/coverage/lcov-report/core/api/utils.js.html +0 -118
- package/coverage/tmp/coverage-151166-1723543324307-0.json +0 -1
- package/coverage/tmp/coverage-151178-1723543324283-0.json +0 -1
- package/coverage/tmp/coverage-151189-1723543324271-0.json +0 -1
- package/coverage/tmp/coverage-151201-1723543324248-0.json +0 -1
- package/coverage/tmp/coverage-151208-1723543324227-0.json +0 -1
- package/scripts/kash/LICENSE +0 -21
- package/test/api/core/test-log-2024-04-22.log +0 -84
- package/test/api/core/test-log-2024-04-23.log +0 -23
- package/test/api/core/test-log-2024-08-13.log +0 -3
- package/test/api/map/test-log-2025-03-08.log +0 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">56.54% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>121/214</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">71.42% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>5/7</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">28.57% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/14</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">56.54% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>121/214</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -220,7 +220,64 @@
|
|
|
220
220
|
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
221
|
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
222
|
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
224
281
|
<span class="cline-any cline-yes">1x</span>
|
|
225
282
|
<span class="cline-any cline-yes">1x</span>
|
|
226
283
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -232,33 +289,7 @@
|
|
|
232
289
|
<span class="cline-any cline-yes">1x</span>
|
|
233
290
|
<span class="cline-any cline-yes">1x</span>
|
|
234
291
|
<span class="cline-any cline-yes">1x</span>
|
|
235
|
-
<span class="cline-any cline-no"> </span>
|
|
236
|
-
<span class="cline-any cline-no"> </span>
|
|
237
|
-
<span class="cline-any cline-no"> </span>
|
|
238
|
-
<span class="cline-any cline-no"> </span>
|
|
239
|
-
<span class="cline-any cline-no"> </span>
|
|
240
|
-
<span class="cline-any cline-no"> </span>
|
|
241
|
-
<span class="cline-any cline-yes">1x</span>
|
|
242
|
-
<span class="cline-any cline-yes">1x</span>
|
|
243
|
-
<span class="cline-any cline-no"> </span>
|
|
244
|
-
<span class="cline-any cline-no"> </span>
|
|
245
|
-
<span class="cline-any cline-no"> </span>
|
|
246
|
-
<span class="cline-any cline-yes">1x</span>
|
|
247
|
-
<span class="cline-any cline-yes">1x</span>
|
|
248
|
-
<span class="cline-any cline-yes">7x</span>
|
|
249
|
-
<span class="cline-any cline-yes">7x</span>
|
|
250
|
-
<span class="cline-any cline-yes">7x</span>
|
|
251
|
-
<span class="cline-any cline-yes">7x</span>
|
|
252
|
-
<span class="cline-any cline-yes">7x</span>
|
|
253
|
-
<span class="cline-any cline-yes">7x</span>
|
|
254
|
-
<span class="cline-any cline-yes">7x</span>
|
|
255
|
-
<span class="cline-any cline-yes">7x</span>
|
|
256
|
-
<span class="cline-any cline-yes">7x</span>
|
|
257
|
-
<span class="cline-any cline-yes">1x</span>
|
|
258
292
|
<span class="cline-any cline-yes">1x</span>
|
|
259
|
-
<span class="cline-any cline-no"> </span>
|
|
260
|
-
<span class="cline-any cline-no"> </span>
|
|
261
|
-
<span class="cline-any cline-no"> </span>
|
|
262
293
|
<span class="cline-any cline-yes">1x</span>
|
|
263
294
|
<span class="cline-any cline-yes">1x</span>
|
|
264
295
|
<span class="cline-any cline-no"> </span>
|
|
@@ -267,13 +298,8 @@
|
|
|
267
298
|
<span class="cline-any cline-no"> </span>
|
|
268
299
|
<span class="cline-any cline-no"> </span>
|
|
269
300
|
<span class="cline-any cline-no"> </span>
|
|
270
|
-
<span class="cline-any cline-yes">1x</span>
|
|
271
|
-
<span class="cline-any cline-yes">1x</span>
|
|
272
|
-
<span class="cline-any cline-no"> </span>
|
|
273
301
|
<span class="cline-any cline-no"> </span>
|
|
274
302
|
<span class="cline-any cline-no"> </span>
|
|
275
|
-
<span class="cline-any cline-yes">1x</span>
|
|
276
|
-
<span class="cline-any cline-yes">1x</span>
|
|
277
303
|
<span class="cline-any cline-no"> </span>
|
|
278
304
|
<span class="cline-any cline-no"> </span>
|
|
279
305
|
<span class="cline-any cline-no"> </span>
|
|
@@ -285,8 +311,6 @@
|
|
|
285
311
|
<span class="cline-any cline-no"> </span>
|
|
286
312
|
<span class="cline-any cline-no"> </span>
|
|
287
313
|
<span class="cline-any cline-no"> </span>
|
|
288
|
-
<span class="cline-any cline-yes">1x</span>
|
|
289
|
-
<span class="cline-any cline-yes">1x</span>
|
|
290
314
|
<span class="cline-any cline-no"> </span>
|
|
291
315
|
<span class="cline-any cline-no"> </span>
|
|
292
316
|
<span class="cline-any cline-no"> </span>
|
|
@@ -303,17 +327,45 @@
|
|
|
303
327
|
<span class="cline-any cline-no"> </span>
|
|
304
328
|
<span class="cline-any cline-no"> </span>
|
|
305
329
|
<span class="cline-any cline-no"> </span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
|
+
<span class="cline-any cline-yes">1x</span>
|
|
332
|
+
<span class="cline-any cline-yes">9x</span>
|
|
333
|
+
<span class="cline-any cline-yes">9x</span>
|
|
334
|
+
<span class="cline-any cline-yes">9x</span>
|
|
335
|
+
<span class="cline-any cline-yes">9x</span>
|
|
336
|
+
<span class="cline-any cline-yes">9x</span>
|
|
337
|
+
<span class="cline-any cline-yes">9x</span>
|
|
338
|
+
<span class="cline-any cline-yes">9x</span>
|
|
339
|
+
<span class="cline-any cline-yes">9x</span>
|
|
340
|
+
<span class="cline-any cline-yes">9x</span>
|
|
341
|
+
<span class="cline-any cline-yes">1x</span>
|
|
342
|
+
<span class="cline-any cline-yes">1x</span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
306
344
|
<span class="cline-any cline-no"> </span>
|
|
307
345
|
<span class="cline-any cline-no"> </span>
|
|
346
|
+
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
|
+
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
308
356
|
<span class="cline-any cline-no"> </span>
|
|
309
357
|
<span class="cline-any cline-no"> </span>
|
|
310
358
|
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
311
361
|
<span class="cline-any cline-no"> </span>
|
|
312
362
|
<span class="cline-any cline-no"> </span>
|
|
313
363
|
<span class="cline-any cline-no"> </span>
|
|
314
364
|
<span class="cline-any cline-no"> </span>
|
|
315
365
|
<span class="cline-any cline-no"> </span>
|
|
316
366
|
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-yes">1x</span>
|
|
368
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
369
|
<span class="cline-any cline-no"> </span>
|
|
318
370
|
<span class="cline-any cline-no"> </span>
|
|
319
371
|
<span class="cline-any cline-no"> </span>
|
|
@@ -321,26 +373,6 @@
|
|
|
321
373
|
<span class="cline-any cline-no"> </span>
|
|
322
374
|
<span class="cline-any cline-no"> </span>
|
|
323
375
|
<span class="cline-any cline-no"> </span>
|
|
324
|
-
<span class="cline-any cline-yes">1x</span>
|
|
325
|
-
<span class="cline-any cline-yes">1x</span>
|
|
326
|
-
<span class="cline-any cline-yes">7x</span>
|
|
327
|
-
<span class="cline-any cline-yes">7x</span>
|
|
328
|
-
<span class="cline-any cline-yes">7x</span>
|
|
329
|
-
<span class="cline-any cline-yes">7x</span>
|
|
330
|
-
<span class="cline-any cline-yes">7x</span>
|
|
331
|
-
<span class="cline-any cline-yes">7x</span>
|
|
332
|
-
<span class="cline-any cline-yes">7x</span>
|
|
333
|
-
<span class="cline-any cline-yes">7x</span>
|
|
334
|
-
<span class="cline-any cline-yes">7x</span>
|
|
335
|
-
<span class="cline-any cline-yes">7x</span>
|
|
336
|
-
<span class="cline-any cline-yes">7x</span>
|
|
337
|
-
<span class="cline-any cline-yes">7x</span>
|
|
338
|
-
<span class="cline-any cline-yes">7x</span>
|
|
339
|
-
<span class="cline-any cline-yes">7x</span>
|
|
340
|
-
<span class="cline-any cline-yes">7x</span>
|
|
341
|
-
<span class="cline-any cline-yes">7x</span>
|
|
342
|
-
<span class="cline-any cline-yes">7x</span>
|
|
343
|
-
<span class="cline-any cline-yes">7x</span>
|
|
344
376
|
<span class="cline-any cline-no"> </span>
|
|
345
377
|
<span class="cline-any cline-no"> </span>
|
|
346
378
|
<span class="cline-any cline-no"> </span>
|
|
@@ -349,18 +381,34 @@
|
|
|
349
381
|
<span class="cline-any cline-no"> </span>
|
|
350
382
|
<span class="cline-any cline-no"> </span>
|
|
351
383
|
<span class="cline-any cline-no"> </span>
|
|
384
|
+
<span class="cline-any cline-yes">1x</span>
|
|
385
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
386
|
<span class="cline-any cline-no"> </span>
|
|
353
387
|
<span class="cline-any cline-no"> </span>
|
|
354
388
|
<span class="cline-any cline-no"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">1x</span>
|
|
390
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
391
|
<span class="cline-any cline-no"> </span>
|
|
356
392
|
<span class="cline-any cline-no"> </span>
|
|
357
393
|
<span class="cline-any cline-no"> </span>
|
|
358
394
|
<span class="cline-any cline-no"> </span>
|
|
359
395
|
<span class="cline-any cline-no"> </span>
|
|
360
396
|
<span class="cline-any cline-no"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">1x</span>
|
|
398
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
399
|
<span class="cline-any cline-no"> </span>
|
|
362
400
|
<span class="cline-any cline-no"> </span>
|
|
363
401
|
<span class="cline-any cline-no"> </span>
|
|
402
|
+
<span class="cline-any cline-yes">1x</span>
|
|
403
|
+
<span class="cline-any cline-yes">1x</span>
|
|
404
|
+
<span class="cline-any cline-yes">9x</span>
|
|
405
|
+
<span class="cline-any cline-yes">9x</span>
|
|
406
|
+
<span class="cline-any cline-yes">9x</span>
|
|
407
|
+
<span class="cline-any cline-yes">9x</span>
|
|
408
|
+
<span class="cline-any cline-yes">9x</span>
|
|
409
|
+
<span class="cline-any cline-yes">9x</span>
|
|
410
|
+
<span class="cline-any cline-yes">1x</span>
|
|
411
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
412
|
<span class="cline-any cline-no"> </span>
|
|
365
413
|
<span class="cline-any cline-no"> </span>
|
|
366
414
|
<span class="cline-any cline-no"> </span>
|
|
@@ -376,11 +424,80 @@
|
|
|
376
424
|
<span class="cline-any cline-no"> </span>
|
|
377
425
|
<span class="cline-any cline-no"> </span>
|
|
378
426
|
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-yes">
|
|
427
|
+
<span class="cline-any cline-yes">1x</span>
|
|
428
|
+
<span class="cline-any cline-yes">1x</span>
|
|
429
|
+
<span class="cline-any cline-yes">9x</span>
|
|
430
|
+
<span class="cline-any cline-yes">9x</span>
|
|
431
|
+
<span class="cline-any cline-yes">9x</span>
|
|
432
|
+
<span class="cline-any cline-yes">9x</span>
|
|
433
|
+
<span class="cline-any cline-yes">9x</span>
|
|
434
|
+
<span class="cline-any cline-yes">9x</span>
|
|
435
|
+
<span class="cline-any cline-yes">9x</span>
|
|
436
|
+
<span class="cline-any cline-yes">9x</span>
|
|
437
|
+
<span class="cline-any cline-yes">9x</span>
|
|
438
|
+
<span class="cline-any cline-yes">9x</span>
|
|
439
|
+
<span class="cline-any cline-yes">9x</span>
|
|
440
|
+
<span class="cline-any cline-yes">9x</span>
|
|
441
|
+
<span class="cline-any cline-yes">9x</span>
|
|
442
|
+
<span class="cline-any cline-yes">9x</span>
|
|
443
|
+
<span class="cline-any cline-yes">9x</span>
|
|
444
|
+
<span class="cline-any cline-yes">9x</span>
|
|
445
|
+
<span class="cline-any cline-yes">9x</span>
|
|
446
|
+
<span class="cline-any cline-yes">9x</span>
|
|
447
|
+
<span class="cline-any cline-yes">9x</span>
|
|
448
|
+
<span class="cline-any cline-yes">9x</span>
|
|
449
|
+
<span class="cline-any cline-yes">9x</span>
|
|
450
|
+
<span class="cline-any cline-yes">9x</span>
|
|
451
|
+
<span class="cline-any cline-yes">9x</span>
|
|
452
|
+
<span class="cline-any cline-yes">9x</span>
|
|
453
|
+
<span class="cline-any cline-yes">9x</span>
|
|
454
|
+
<span class="cline-any cline-yes">9x</span>
|
|
455
|
+
<span class="cline-any cline-yes">9x</span>
|
|
456
|
+
<span class="cline-any cline-yes">9x</span>
|
|
457
|
+
<span class="cline-any cline-yes">9x</span>
|
|
458
|
+
<span class="cline-any cline-yes">9x</span>
|
|
459
|
+
<span class="cline-any cline-yes">9x</span>
|
|
460
|
+
<span class="cline-any cline-yes">9x</span>
|
|
461
|
+
<span class="cline-any cline-yes">9x</span>
|
|
462
|
+
<span class="cline-any cline-yes">9x</span>
|
|
463
|
+
<span class="cline-any cline-yes">9x</span>
|
|
464
|
+
<span class="cline-any cline-yes">9x</span>
|
|
465
|
+
<span class="cline-any cline-yes">9x</span>
|
|
466
|
+
<span class="cline-any cline-no"> </span>
|
|
467
|
+
<span class="cline-any cline-no"> </span>
|
|
468
|
+
<span class="cline-any cline-no"> </span>
|
|
469
|
+
<span class="cline-any cline-yes">9x</span>
|
|
470
|
+
<span class="cline-any cline-yes">9x</span>
|
|
471
|
+
<span class="cline-any cline-yes">9x</span>
|
|
472
|
+
<span class="cline-any cline-yes">9x</span>
|
|
473
|
+
<span class="cline-any cline-yes">9x</span>
|
|
474
|
+
<span class="cline-any cline-yes">9x</span>
|
|
475
|
+
<span class="cline-any cline-yes">9x</span>
|
|
476
|
+
<span class="cline-any cline-yes">9x</span>
|
|
477
|
+
<span class="cline-any cline-yes">9x</span>
|
|
478
|
+
<span class="cline-any cline-yes">9x</span>
|
|
479
|
+
<span class="cline-any cline-yes">9x</span>
|
|
480
|
+
<span class="cline-any cline-yes">9x</span>
|
|
481
|
+
<span class="cline-any cline-yes">9x</span>
|
|
482
|
+
<span class="cline-any cline-yes">9x</span>
|
|
483
|
+
<span class="cline-any cline-yes">9x</span>
|
|
484
|
+
<span class="cline-any cline-yes">9x</span>
|
|
485
|
+
<span class="cline-any cline-yes">9x</span>
|
|
486
|
+
<span class="cline-any cline-yes">9x</span>
|
|
487
|
+
<span class="cline-any cline-yes">9x</span>
|
|
488
|
+
<span class="cline-any cline-yes">9x</span>
|
|
489
|
+
<span class="cline-any cline-yes">9x</span>
|
|
490
|
+
<span class="cline-any cline-no"> </span>
|
|
491
|
+
<span class="cline-any cline-no"> </span>
|
|
492
|
+
<span class="cline-any cline-no"> </span>
|
|
493
|
+
<span class="cline-any cline-yes">9x</span>
|
|
380
494
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
381
495
|
import path from 'path'
|
|
382
496
|
import makeDebug from 'debug'
|
|
383
497
|
import { fileURLToPath } from 'url'
|
|
498
|
+
import mongodb from 'mongodb'
|
|
499
|
+
import { isValidObjectID } from '../db.js'
|
|
500
|
+
const { ObjectID } = mongodb
|
|
384
501
|
|
|
385
502
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
386
503
|
const modelsPath = path.join(__dirname, '..', 'models')
|
|
@@ -388,17 +505,41 @@ const servicesPath = path.join(__dirname, '..', 'services')
|
|
|
388
505
|
|
|
389
506
|
const debug = makeDebug('kdk:core:services')
|
|
390
507
|
|
|
391
|
-
export <span class="fstat-no" title="function not covered" >function
|
|
508
|
+
export <span class="fstat-no" title="function not covered" >function getServiceNameAndContext (servicePath) {</span>
|
|
392
509
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
393
|
-
<span class="cstat-no" title="statement not covered" >
|
|
394
|
-
<span class="cstat-no" title="statement not covered" >
|
|
395
|
-
<span class="cstat-no" title="statement not covered" >
|
|
396
|
-
<span class="cstat-no" title="statement not covered" >
|
|
510
|
+
<span class="cstat-no" title="statement not covered" > // Get name from service path without api prefix</span>
|
|
511
|
+
<span class="cstat-no" title="statement not covered" > let name = servicePath.replace(app.get('apiPath').substring(1) + '/', '')</span>
|
|
512
|
+
<span class="cstat-no" title="statement not covered" > // Then without context if any</span>
|
|
513
|
+
<span class="cstat-no" title="statement not covered" > const lastSlash = name.lastIndexOf('/')</span>
|
|
514
|
+
<span class="cstat-no" title="statement not covered" > const contextId = (lastSlash >= 0 ? name.substring(0, lastSlash) : '')</span>
|
|
515
|
+
<span class="cstat-no" title="statement not covered" > // Check if it is a valid MongoDB Object ID otherwise it is not a context string</span>
|
|
516
|
+
<span class="cstat-no" title="statement not covered" > if (isValidObjectID(contextId)) {</span>
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > name = name.replace(contextId + '/', '')</span>
|
|
518
|
+
<span class="cstat-no" title="statement not covered" > return { name, contextId }</span>
|
|
519
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
520
|
+
<span class="cstat-no" title="statement not covered" > return { name }</span>
|
|
521
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
397
522
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
398
523
|
|
|
399
|
-
export <span class="fstat-no" title="function not covered" >function
|
|
524
|
+
export <span class="fstat-no" title="function not covered" >function decorateDistributedService (service) {</span>
|
|
400
525
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
401
|
-
<span class="cstat-no" title="statement not covered" >
|
|
526
|
+
<span class="cstat-no" title="statement not covered" > // Remote service are registered according to their path, ie with API prefix (but without trailing /)</span>
|
|
527
|
+
<span class="cstat-no" title="statement not covered" > const remoteService = app.service(service.path)</span>
|
|
528
|
+
<span class="cstat-no" title="statement not covered" > const { name, contextId } = getServiceNameAndContext.call(app, service.path)</span>
|
|
529
|
+
<span class="cstat-no" title="statement not covered" > remoteService.name = name</span>
|
|
530
|
+
<span class="cstat-no" title="statement not covered" > remoteService.context = contextId</span>
|
|
531
|
+
<span class="cstat-no" title="statement not covered" > // As remote services have no context, from the internal point of view path = name</span>
|
|
532
|
+
<span class="cstat-no" title="statement not covered" > // Unfortunately this property is already set and used by feathers-distributed and should not be altered</span>
|
|
533
|
+
<span class="cstat-no" title="statement not covered" > // remoteService.path = name</span>
|
|
534
|
+
<span class="cstat-no" title="statement not covered" > remoteService.app = app</span>
|
|
535
|
+
<span class="cstat-no" title="statement not covered" > remoteService.getPath = function (withApiPrefix) {</span>
|
|
536
|
+
<span class="cstat-no" title="statement not covered" > const path = (contextId ? contextId + '/' + name : name)</span>
|
|
537
|
+
<span class="cstat-no" title="statement not covered" > return (withApiPrefix ? app.get('apiPath') + '/' + path : path)</span>
|
|
538
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
539
|
+
<span class="cstat-no" title="statement not covered" > remoteService.getContextId = function () {</span>
|
|
540
|
+
<span class="cstat-no" title="statement not covered" > return contextId</span>
|
|
541
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
542
|
+
<span class="cstat-no" title="statement not covered" > return remoteService</span>
|
|
402
543
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
403
544
|
|
|
404
545
|
export function createStorageService (options = {}) {
|
|
@@ -406,7 +547,7 @@ export function createStorageService (options = {}) {
|
|
|
406
547
|
return app.createService('storage', Object.assign({
|
|
407
548
|
servicesPath,
|
|
408
549
|
modelsPath,
|
|
409
|
-
methods: ['create', 'get', 'find', 'remove', 'createMultipartUpload', 'completeMultipartUpload', 'uploadPart', 'putObject'],
|
|
550
|
+
methods: ['create', 'get', 'find', 'remove', 'createMultipartUpload', 'completeMultipartUpload', 'uploadPart', 'putObject', 'uploadFile', 'downloadFile'],
|
|
410
551
|
events: ['multipart-upload-created', 'multipart-upload-completed', 'part-uploaded', 'object-put'],
|
|
411
552
|
id: '_id'
|
|
412
553
|
}, options))
|
|
@@ -417,17 +558,47 @@ export <span class="fstat-no" title="function not covered" >function removeStora
|
|
|
417
558
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('storage', options.context))</span>
|
|
418
559
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
419
560
|
|
|
420
|
-
export
|
|
561
|
+
export function createMessagesService (options = {}) {
|
|
562
|
+
const app = this
|
|
563
|
+
return app.createService('messages', Object.assign({
|
|
564
|
+
servicesPath,
|
|
565
|
+
modelsPath
|
|
566
|
+
}, options))
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
export <span class="fstat-no" title="function not covered" >function removeMessagesService (options = {}) {</span>
|
|
570
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
571
|
+
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('messages', options.context))</span>
|
|
572
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
573
|
+
|
|
574
|
+
export <span class="fstat-no" title="function not covered" >function createConfigurationsService (options = {}) {</span>
|
|
421
575
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
422
|
-
<span class="cstat-no" title="statement not covered" > return app.createService('
|
|
576
|
+
<span class="cstat-no" title="statement not covered" > return app.createService('configurations', Object.assign({</span>
|
|
423
577
|
<span class="cstat-no" title="statement not covered" > servicesPath,</span>
|
|
424
578
|
<span class="cstat-no" title="statement not covered" > modelsPath</span>
|
|
425
579
|
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
426
580
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
427
581
|
|
|
428
|
-
export <span class="fstat-no" title="function not covered" >function
|
|
582
|
+
export <span class="fstat-no" title="function not covered" >async function createDefaultConfigurations (context) {</span>
|
|
429
583
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
430
|
-
<span class="cstat-no" title="statement not covered" >
|
|
584
|
+
<span class="cstat-no" title="statement not covered" > const defaultConfigurations = app.get('defaultConfigurations')</span>
|
|
585
|
+
<span class="cstat-no" title="statement not covered" > if (!defaultConfigurations) return</span>
|
|
586
|
+
<span class="cstat-no" title="statement not covered" > const configurationsService = app.getService('configurations', context)</span>
|
|
587
|
+
<span class="cstat-no" title="statement not covered" > // Create default configurations if not already done</span>
|
|
588
|
+
<span class="cstat-no" title="statement not covered" > const configurations = await configurationsService.find({ paginate: false })</span>
|
|
589
|
+
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < defaultConfigurations.length; i++) {</span>
|
|
590
|
+
<span class="cstat-no" title="statement not covered" > const defaultConfiguration = defaultConfigurations[i]</span>
|
|
591
|
+
<span class="cstat-no" title="statement not covered" > const createdConfiguration = _.find(configurations, { name: defaultConfiguration.name })</span>
|
|
592
|
+
<span class="cstat-no" title="statement not covered" > if (!createdConfiguration) {</span>
|
|
593
|
+
<span class="cstat-no" title="statement not covered" > app.logger.info('Initializing default configuration (name = ' + defaultConfiguration.name + ')')</span>
|
|
594
|
+
<span class="cstat-no" title="statement not covered" > await configurationsService.create(defaultConfiguration)</span>
|
|
595
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
596
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
597
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
598
|
+
|
|
599
|
+
export <span class="fstat-no" title="function not covered" >function removeConfigurationsService (options = {}) {</span>
|
|
600
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
601
|
+
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('configurations', options.context))</span>
|
|
431
602
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
432
603
|
|
|
433
604
|
export <span class="fstat-no" title="function not covered" >function createDatabasesService (options = {}) {</span>
|
|
@@ -443,40 +614,29 @@ export <span class="fstat-no" title="function not covered" >function removeDatab
|
|
|
443
614
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('databases', options.context))</span>
|
|
444
615
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
445
616
|
|
|
446
|
-
export
|
|
617
|
+
export function createTagsService (options = {}) {
|
|
618
|
+
const app = this
|
|
619
|
+
return app.createService('tags', Object.assign({
|
|
620
|
+
servicesPath,
|
|
621
|
+
modelsPath
|
|
622
|
+
}, options))
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
export <span class="fstat-no" title="function not covered" >async function createDefaultTags (context) {</span>
|
|
447
626
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
448
|
-
<span class="cstat-no" title="statement not covered"
|
|
449
|
-
<span class="cstat-no" title="statement not covered" >
|
|
450
|
-
<span class="cstat-no" title="statement not covered" >
|
|
451
|
-
<span class="cstat-no" title="statement not covered" >
|
|
452
|
-
<span class="cstat-no" title="statement not covered"
|
|
453
|
-
<span class="cstat-no" title="statement not covered" >
|
|
454
|
-
<span class="cstat-no" title="statement not covered" >
|
|
455
|
-
<span class="cstat-no" title="statement not covered" >
|
|
456
|
-
<span class="cstat-no" title="statement not covered" >
|
|
457
|
-
<span class="cstat-no" title="statement not covered" >
|
|
458
|
-
<span class="cstat-no" title="statement not covered" >
|
|
459
|
-
<span class="cstat-no" title="statement not covered" > // it is a perspective and permissions are not available in this case</span>
|
|
460
|
-
<span class="cstat-no" title="statement not covered" > // Updating abilities in this case will result in loosing permissions for orgs/groups as none are available</span>
|
|
461
|
-
<span class="cstat-no" title="statement not covered" > if (_.has(user, 'organisations') || _.has(user, 'groups')) authorisationsService.updateAbilities(user)</span>
|
|
462
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
463
|
-
<span class="cstat-no" title="statement not covered" > // Ensure org services are correctly distributed when replicated</span>
|
|
464
|
-
<span class="cstat-no" title="statement not covered" > orgsService.on('created', organisation => {</span>
|
|
465
|
-
<span class="cstat-no" title="statement not covered" > // Check if already done (initiator)</span>
|
|
466
|
-
<span class="cstat-no" title="statement not covered" > const orgMembersService = app.getService('members', organisation)</span>
|
|
467
|
-
<span class="cstat-no" title="statement not covered" > if (!orgMembersService) {</span>
|
|
468
|
-
<span class="cstat-no" title="statement not covered" > // Jump from infos/stats to real DB object</span>
|
|
469
|
-
<span class="cstat-no" title="statement not covered" > const db = app.db.client.db(organisation._id.toString())</span>
|
|
470
|
-
<span class="cstat-no" title="statement not covered" > orgsService.createOrganisationServices(organisation, db)</span>
|
|
627
|
+
<span class="cstat-no" title="statement not covered" > const defaultTags = app.get('tags').defaultTags</span>
|
|
628
|
+
<span class="cstat-no" title="statement not covered" > if (!defaultTags) return</span>
|
|
629
|
+
<span class="cstat-no" title="statement not covered" > const tagsService = app.getService('tags', context)</span>
|
|
630
|
+
<span class="cstat-no" title="statement not covered" > // Create default tags if not already done</span>
|
|
631
|
+
<span class="cstat-no" title="statement not covered" > const tags = await tagsService.find({ paginate: false })</span>
|
|
632
|
+
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < defaultTags.length; i++) {</span>
|
|
633
|
+
<span class="cstat-no" title="statement not covered" > const defaultTag = defaultTags[i]</span>
|
|
634
|
+
<span class="cstat-no" title="statement not covered" > const createdTag = _.find(tags, { name: defaultTag.name })</span>
|
|
635
|
+
<span class="cstat-no" title="statement not covered" > if (!createdTag) {</span>
|
|
636
|
+
<span class="cstat-no" title="statement not covered" > app.logger.info('Initializing default tag (name = ' + defaultTag.name + ')')</span>
|
|
637
|
+
<span class="cstat-no" title="statement not covered" > await tagsService.create(defaultTag)</span>
|
|
471
638
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
472
|
-
<span class="cstat-no" title="statement not covered" > }
|
|
473
|
-
<span class="cstat-no" title="statement not covered" > orgsService.on('removed', organisation => {</span>
|
|
474
|
-
<span class="cstat-no" title="statement not covered" > // Check if already done (initiator)</span>
|
|
475
|
-
<span class="cstat-no" title="statement not covered" > const orgMembersService = app.getService('members', organisation)</span>
|
|
476
|
-
<span class="cstat-no" title="statement not covered" > if (!orgMembersService) return</span>
|
|
477
|
-
<span class="cstat-no" title="statement not covered" > orgsService.removeOrganisationServices(organisation)</span>
|
|
478
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
479
|
-
<span class="cstat-no" title="statement not covered" > return orgsService</span>
|
|
639
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
480
640
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
481
641
|
|
|
482
642
|
export default async function () {
|
|
@@ -484,7 +644,12 @@ export default async function () {
|
|
|
484
644
|
|
|
485
645
|
const authConfig = app.get('authentication')
|
|
486
646
|
if (authConfig) {
|
|
487
|
-
await app.createService('users', {
|
|
647
|
+
await app.createService('users', {
|
|
648
|
+
modelsPath,
|
|
649
|
+
servicesPath,
|
|
650
|
+
methods: ['create', 'get', 'find', 'update', 'patch', 'remove', 'logout'],
|
|
651
|
+
events: ['logout']
|
|
652
|
+
})
|
|
488
653
|
debug('\'users\' service created')
|
|
489
654
|
await app.createService('account', {
|
|
490
655
|
servicesPath,
|
|
@@ -498,40 +663,46 @@ export default async function () {
|
|
|
498
663
|
const storageConfig = app.get('storage')
|
|
499
664
|
if (storageConfig) {
|
|
500
665
|
await createStorageService.call(app)
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
<span class="
|
|
515
|
-
<span class="cstat-no" title="statement not covered" > await createMessagesService.call(app)</span>
|
|
666
|
+
debug('\'storage\' service created')
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
const importExportConfig = app.get('import-export')
|
|
670
|
+
if (importExportConfig) {
|
|
671
|
+
await app.createService('import-export', {
|
|
672
|
+
servicesPath,
|
|
673
|
+
events: ['import-created', 'import-completed', 'export-created', 'export-completed']
|
|
674
|
+
}, app)
|
|
675
|
+
debug('\'import-export\' service created')
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
const messagesConfig = app.get('messages')
|
|
679
|
+
if (messagesConfig) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
680
|
+
<span class="cstat-no" title="statement not covered" > await createMessagesService.call(app, messagesConfig)</span>
|
|
516
681
|
<span class="cstat-no" title="statement not covered" > debug('\'messages\' service created')</span>
|
|
517
682
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
683
|
+
|
|
684
|
+
const mailerConfig = app.get('mailer')
|
|
685
|
+
if (mailerConfig) {
|
|
686
|
+
await app.createService('mailer', { servicesPath })
|
|
687
|
+
debug('\'mailer\' service created')
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
const pushConfig = app.get('push')
|
|
691
|
+
if (pushConfig) {
|
|
692
|
+
await app.createService('push', { servicesPath })
|
|
693
|
+
debug('\'push\' service created')
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
const tagsConfig = app.get('tags')
|
|
697
|
+
if (tagsConfig) {
|
|
698
|
+
await createTagsService.call(app, tagsConfig)
|
|
699
|
+
debug('\'tags\' service created')
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
const configurationsConfig = app.get('configurations')
|
|
703
|
+
if (configurationsConfig) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
704
|
+
<span class="cstat-no" title="statement not covered" > await createConfigurationsService.call(app, configurationsConfig)</span>
|
|
705
|
+
<span class="cstat-no" title="statement not covered" > debug('\'configurations\' service created')</span>
|
|
535
706
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
536
707
|
}
|
|
537
708
|
</pre></td></tr></table></pre>
|
|
@@ -541,7 +712,7 @@ export default async function () {
|
|
|
541
712
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
542
713
|
Code coverage generated by
|
|
543
714
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
544
|
-
at
|
|
715
|
+
at 2026-03-10T09:15:24.743Z
|
|
545
716
|
</div>
|
|
546
717
|
<script src="../../../prettify.js"></script>
|
|
547
718
|
<script>
|