@kalisio/kdk 2.4.1 → 2.5.1
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 +12 -12
- package/core/api/authentication.js +51 -7
- package/core/api/hooks/hooks.authentication.js +1 -59
- package/core/api/hooks/hooks.authorisations.js +8 -102
- package/core/api/hooks/hooks.model.js +4 -0
- package/core/api/hooks/hooks.push.js +18 -14
- package/core/api/hooks/hooks.users.js +0 -91
- package/core/api/hooks/index.js +0 -2
- package/core/api/services/account/account.service.js +1 -1
- package/core/api/services/authorisations/authorisations.service.js +28 -29
- package/core/api/services/index.js +38 -50
- package/core/api/services/messages/messages.hooks.js +4 -3
- package/core/api/services/users/users.service.js +5 -0
- package/core/client/api.js +182 -71
- package/core/client/broadcaster.js +20 -0
- package/core/client/capabilities.js +17 -7
- package/core/client/components/KActivity.vue +29 -34
- package/core/client/components/KAvatar.vue +0 -6
- package/core/client/components/KChip.vue +142 -39
- package/core/client/components/KContent.vue +13 -32
- package/core/client/components/KDialog.vue +29 -8
- package/core/client/components/KEditor.vue +120 -0
- package/core/client/components/KFollower.vue +75 -0
- package/core/client/components/KLogo.vue +2 -3
- package/core/client/components/KModal.vue +30 -10
- package/core/client/components/KSponsor.vue +1 -1
- package/core/client/components/KTextArea.vue +2 -5
- package/core/client/components/account/KDeleteAccountManager.vue +1 -1
- package/core/client/components/account/KProfile.vue +52 -14
- package/core/client/components/account/KSubscription.vue +19 -9
- package/core/client/components/account/KSubscriptionsManager.vue +10 -11
- package/core/client/components/action/KAction.vue +44 -24
- package/core/client/components/action/KBugReportAction.vue +4 -5
- package/core/client/components/action/KToggleStickyVisibility.vue +41 -0
- package/core/client/components/action/KToggleWidgetVisibility.vue +41 -0
- package/core/client/components/app/KPlatform.vue +122 -35
- package/core/client/components/app/KRequestProgressBar.vue +59 -0
- package/core/client/components/app/KSettings.vue +13 -2
- package/core/client/components/app/KTour.vue +2 -2
- package/core/client/components/chart/KTimeSeriesChart.vue +11 -3
- package/core/client/components/collection/KCard.vue +27 -33
- package/core/client/components/collection/KCardSection.vue +3 -23
- package/core/client/components/collection/KColumn.vue +0 -5
- package/core/client/components/collection/KDescriptionCardSection.vue +10 -5
- package/core/client/components/collection/KFilterView.vue +15 -0
- package/core/client/components/collection/KGrid.vue +4 -9
- package/core/client/components/collection/KHistory.vue +0 -5
- package/core/client/components/collection/KHistoryEntry.vue +0 -2
- package/core/client/components/collection/KItem.vue +1 -2
- package/core/client/components/collection/KSearchFilterControl.vue +139 -0
- package/core/client/components/collection/KTable.vue +1 -4
- package/core/client/components/collection/KTagsFilterControl.vue +70 -0
- package/core/client/components/collection/KTagsFilterView.vue +61 -0
- package/core/client/components/collection/KTimeFilterControl.vue +40 -0
- package/core/client/components/collection/KTimeFilterView.vue +106 -0
- package/core/client/components/collection/KTimeLine.vue +18 -11
- package/core/client/components/document/KBrowser.vue +283 -0
- package/core/client/components/document/KCsv.vue +52 -0
- package/core/client/components/document/KDocument.vue +19 -5
- package/core/client/components/document/KImage.vue +50 -19
- package/core/client/components/document/KMarkdown.vue +10 -2
- package/core/client/components/document/KUploader.vue +126 -0
- package/core/client/components/document/KVideo.vue +39 -0
- package/core/client/components/form/KDateField.vue +70 -0
- package/core/client/components/form/KDateTimeRangeField.vue +6 -17
- package/core/client/components/form/KDatetimeField.vue +6 -13
- package/core/client/components/form/KForm.vue +8 -8
- package/core/client/components/form/KOptionsField.vue +2 -0
- package/core/client/components/form/KResolutionField.vue +54 -52
- package/core/client/components/form/KSelectField.vue +27 -13
- package/core/client/components/form/KTextareaField.vue +23 -5
- package/core/client/components/graphics/KIcon.vue +64 -0
- package/core/client/components/index.js +1 -3
- package/core/client/components/input/KColorPicker.vue +70 -0
- package/core/client/components/input/KIconPicker.vue +188 -0
- package/core/client/components/input/KShapePicker.vue +81 -0
- package/core/client/components/input/index.js +7 -1
- package/core/client/components/layout/KFab.vue +1 -1
- package/core/client/components/layout/KLayout.vue +14 -2
- package/core/client/components/layout/KOpener.vue +9 -11
- package/core/client/components/layout/KPage.vue +31 -17
- package/core/client/components/layout/KWindow.vue +34 -18
- package/core/client/components/menu/KMenu.vue +52 -36
- package/core/client/components/menu/KSubMenu.vue +105 -0
- package/core/client/components/messages/KMessageCard.vue +207 -0
- package/core/client/components/messages/KMessageComposer.vue +199 -0
- package/core/client/components/messages/KMessagesTimeLine.vue +137 -0
- package/core/client/components/messages/index.js +7 -0
- package/core/client/components/screen/KErrorScreen.vue +2 -3
- package/core/client/components/screen/KLogoutScreen.vue +3 -1
- package/core/client/components/screen/KOAuthLoginScreen.vue +15 -0
- package/core/client/components/screen/KOAuthLogoutScreen.vue +33 -0
- package/core/client/components/screen/KUnauthorizedScreen.vue +16 -0
- package/core/client/components/time/KAbsoluteTimeRange.vue +7 -14
- package/core/client/components/time/KDate.vue +55 -28
- package/core/client/components/time/KDateTime.vue +93 -37
- package/core/client/components/time/KDateTimeRange.vue +197 -52
- package/core/client/components/time/KTime.vue +55 -27
- package/core/client/composables/activity.js +40 -30
- package/core/client/composables/{counter.js → collection-counter.js} +2 -4
- package/core/client/composables/collection-filter.js +111 -0
- package/core/client/composables/collection-timerange.js +56 -0
- package/core/client/composables/collection.js +13 -11
- package/core/client/composables/context.js +92 -0
- package/core/client/composables/errors.js +83 -0
- package/core/client/composables/index.js +5 -1
- package/core/client/composables/layout.js +14 -11
- package/core/client/composables/messages.js +4 -4
- package/core/client/composables/pwa.js +20 -27
- package/core/client/composables/schema.js +1 -1
- package/core/client/composables/screen.js +21 -9
- package/core/client/composables/selection.js +16 -4
- package/core/client/composables/session.js +13 -7
- package/core/client/composables/store.js +2 -1
- package/core/client/context.js +38 -0
- package/core/client/directives/v-hover.js +7 -4
- package/core/client/document.js +43 -15
- package/core/client/events.js +2 -2
- package/core/client/exporter.js +5 -4
- package/core/client/filter.js +1 -8
- package/core/client/guards.js +3 -3
- package/core/client/hooks/hooks.logger.js +1 -1
- package/core/client/hooks/hooks.offline.js +32 -0
- package/core/client/hooks/index.js +2 -1
- package/core/client/i18n/core_en.json +95 -268
- package/core/client/i18n/core_fr.json +181 -353
- package/core/client/index.js +22 -8
- package/core/client/layout.js +64 -25
- package/core/client/local-cache.js +67 -0
- package/core/client/local-storage.js +6 -2
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-activity.js +22 -10
- package/core/client/mixins/mixin.base-editor.js +1 -1
- package/core/client/mixins/mixin.base-field.js +10 -1
- package/core/client/mixins/mixin.base-item.js +14 -11
- package/core/client/mixins/mixin.service.js +1 -5
- package/core/client/platform.js +44 -0
- package/core/client/readers/reader.blob.js +3 -3
- package/core/client/readers/reader.csv.js +2 -2
- package/core/client/readers/reader.json.js +2 -2
- package/core/client/services/index.js +7 -11
- package/core/client/storage.js +43 -8
- package/core/client/template-context.js +14 -14
- package/core/client/time.js +2 -2
- package/core/client/units.js +7 -4
- package/core/client/utils/index.js +6 -5
- package/core/client/utils/utils.collection.js +71 -0
- package/core/client/utils/utils.colors.js +29 -8
- package/core/client/utils/utils.content.js +14 -14
- package/core/client/utils/utils.files.js +17 -0
- package/core/client/utils/utils.items.js +4 -0
- package/core/client/utils/utils.math.js +18 -1
- package/core/client/utils/utils.push.js +22 -13
- package/core/client/utils/utils.screen.js +6 -2
- package/core/client/utils/utils.services.js +42 -0
- package/core/client/utils/utils.session.js +48 -12
- package/core/client/utils/utils.shapes.js +15 -11
- package/core/common/permissions.js +3 -108
- package/core/common/schemas/messages.update.json +16 -0
- package/core/common/schemas/settings.update.json +27 -8
- package/core/common/utils.js +2 -0
- package/core/common/utils.offline.js +38 -0
- package/coverage/core/api/application.js.html +296 -296
- package/coverage/core/api/authentication.js.html +206 -74
- package/coverage/core/api/db.js.html +61 -61
- package/coverage/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/core/api/hooks/hooks.schemas.js.html +1 -1
- 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.users.js.html +54 -327
- package/coverage/core/api/hooks/index.html +64 -94
- package/coverage/core/api/hooks/index.js.html +4 -10
- package/coverage/core/api/index.html +41 -56
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +9 -9
- package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +13 -58
- package/coverage/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/core/api/models/organisations.model.mongodb.js.html +3 -3
- package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/users.model.mongodb.js.html +1 -1
- package/coverage/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/core/api/services/account/account.service.js.html +67 -67
- package/coverage/core/api/services/account/index.html +16 -16
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +141 -144
- package/coverage/core/api/services/authorisations/index.html +19 -19
- package/coverage/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/core/api/services/databases/index.html +32 -32
- package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/core/api/services/groups/index.html +1 -1
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +1 -1
- package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/core/api/services/import-export/index.html +1 -1
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +118 -154
- package/coverage/core/api/services/mailer/index.html +1 -1
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/core/api/services/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +89 -86
- package/coverage/core/api/services/organisations/index.html +1 -1
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/core/api/services/organisations/organisations.service.js.html +23 -23
- package/coverage/core/api/services/push/index.html +1 -1
- package/coverage/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/core/api/services/push/push.service.js.html +1 -1
- package/coverage/core/api/services/storage/index.html +5 -5
- package/coverage/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/core/api/services/storage/storage.service.js.html +27 -27
- package/coverage/core/api/services/tags/index.html +1 -1
- package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/core/api/services/users/index.html +23 -8
- package/coverage/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/core/api/services/users/users.service.js.html +100 -0
- package/coverage/core/api/utils.js.html +1 -1
- 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 +195 -510
- package/coverage/core/common/schema.js.html +1 -1
- package/coverage/core/common/utils.js.html +12 -6
- package/coverage/core/common/utils.offline.js.html +199 -0
- package/coverage/index.html +142 -172
- package/coverage/lcov-report/core/api/application.js.html +296 -296
- package/coverage/lcov-report/core/api/authentication.js.html +206 -74
- package/coverage/lcov-report/core/api/db.js.html +61 -61
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +1 -1
- 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.users.js.html +54 -327
- package/coverage/lcov-report/core/api/hooks/index.html +64 -94
- package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
- package/coverage/lcov-report/core/api/index.html +41 -56
- package/coverage/lcov-report/core/api/index.js.html +1 -1
- package/coverage/lcov-report/core/api/marshall.js.html +9 -9
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +13 -58
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +3 -3
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/account/index.html +16 -16
- 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 +141 -144
- package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/lcov-report/core/api/services/databases/index.html +32 -32
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +118 -154
- package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +89 -86
- package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +23 -23
- package/coverage/lcov-report/core/api/services/push/index.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/index.html +5 -5
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +27 -27
- package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/index.html +23 -8
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
- package/coverage/lcov-report/core/api/utils.js.html +1 -1
- 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 +195 -510
- package/coverage/lcov-report/core/common/schema.js.html +1 -1
- package/coverage/lcov-report/core/common/utils.js.html +12 -6
- package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
- package/coverage/lcov-report/index.html +142 -172
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +20 -44
- 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 +49 -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/map/api/models/styles.model.mongodb.js.html +112 -0
- 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 +29 -11
- 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 +78 -9
- 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 +287 -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/lcov-report/map/api/services/styles/index.html +116 -0
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
- 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 +8 -5
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +7 -7
- 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 +1 -1
- 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 +6 -6
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/lcov-report/map/common/wcs-utils.js.html +9 -9
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
- package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
- package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
- package/coverage/lcov.info +2581 -3278
- package/coverage/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +20 -44
- 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 +49 -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/map/api/models/styles.model.mongodb.js.html +112 -0
- 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 +29 -11
- 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 +78 -9
- 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 +287 -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/map/api/services/styles/index.html +116 -0
- package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
- 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 +8 -5
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +7 -7
- 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 +1 -1
- 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 +6 -6
- package/coverage/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/map/common/wcs-utils.js.html +9 -9
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +11 -11
- package/coverage/map/common/wms-utils.js.html +8 -8
- package/coverage/map/common/wmts-utils.js.html +7 -7
- package/coverage/tmp/coverage-323534-1747828879483-0.json +1 -0
- package/coverage/tmp/coverage-323546-1747828879453-0.json +1 -0
- package/coverage/tmp/coverage-323557-1747828879439-0.json +1 -0
- package/coverage/tmp/coverage-323569-1747828879416-0.json +1 -0
- package/coverage/tmp/coverage-323576-1747828879390-0.json +1 -0
- package/extras/configs/helpers.js +78 -0
- package/extras/configs/panes.left.js +118 -0
- package/extras/configs/panes.top.js +222 -0
- package/extras/configs/stickies.js +57 -0
- package/extras/configs/widgets.left.js +23 -0
- package/extras/configs/widgets.top.js +73 -0
- package/extras/css/core.variables.scss +8 -0
- package/extras/images/north.svg +3 -0
- package/extras/tours/map/side-nav.js +3 -3
- package/map/api/hooks/hooks.catalog.js +56 -23
- package/map/api/hooks/hooks.query.js +16 -24
- package/map/api/models/catalog.model.mongodb.js +16 -2
- package/{core/api/models/groups.model.mongodb.js → map/api/models/styles.model.mongodb.js} +2 -1
- package/map/api/services/catalog/catalog.hooks.js +13 -7
- package/map/api/services/features/features.hooks.js +28 -5
- package/map/api/services/features/features.service.js +101 -0
- package/map/api/services/index.js +125 -46
- package/map/api/services/styles/styles.hooks.js +37 -0
- package/map/client/cesium/utils/index.js +1 -0
- package/map/client/cesium/utils/utils.cesium.js +397 -0
- package/map/client/cesium/utils/utils.features.js +8 -0
- package/map/client/cesium/utils/utils.geojson.js +59 -0
- package/map/client/cesium/utils/utils.style.js +134 -17
- package/map/client/components/KEditLayerData.vue +17 -79
- package/map/client/components/KFeatureEditor.vue +2 -7
- package/map/client/components/KFeaturesChart.vue +2 -6
- package/map/client/components/KFeaturesFilterEditor.vue +300 -0
- package/map/client/components/KFeaturesFilterManager.vue +196 -0
- package/map/client/components/KFeaturesTable.vue +0 -5
- package/map/client/components/KFilterCondition.vue +303 -0
- package/map/client/components/KLayerEditionToolbar.vue +4 -3
- package/map/client/components/KLayerEditor.vue +451 -36
- package/map/client/components/KMeasureTool.vue +36 -9
- package/map/client/components/KProjectMenu.vue +14 -8
- package/map/client/components/catalog/KAddLayer.vue +0 -4
- package/map/client/components/catalog/KBaseLayersSelector.vue +42 -46
- package/map/client/components/catalog/KConnectLayer.vue +295 -291
- package/map/client/components/catalog/KCreateLayer.vue +141 -146
- package/map/client/components/catalog/KCreateOfflineView.vue +100 -0
- package/map/client/components/catalog/KCreateView.vue +2 -8
- package/map/client/components/catalog/KFilteredLayerItem.vue +72 -25
- package/map/client/components/catalog/KImportLayer.vue +121 -129
- package/map/client/components/catalog/KLayerItem.vue +44 -32
- package/map/client/components/catalog/KLayersPanel.vue +45 -17
- package/map/client/components/catalog/KLayersSelector.vue +51 -50
- package/map/client/components/catalog/KProjectManager.vue +4 -8
- package/map/client/components/catalog/KProjectSelector.vue +33 -2
- package/map/client/components/catalog/KProjectsPanel.vue +84 -106
- package/map/client/components/catalog/KSelectLayers.vue +56 -69
- package/map/client/components/catalog/KSelectViews.vue +56 -69
- package/map/client/components/catalog/KViewSelector.vue +32 -2
- package/map/client/components/catalog/KViewsPanel.vue +178 -110
- package/map/client/components/catalog/KWeatherLayersSelector.vue +77 -85
- package/map/client/components/form/KLocationField.vue +21 -2
- package/map/client/components/form/KOwsLayerField.vue +1 -1
- package/map/client/components/form/KOwsServiceField.vue +102 -63
- package/map/client/components/form/KSelectLayersField.vue +1 -1
- package/map/client/components/form/KSelectViewsField.vue +1 -1
- package/map/client/components/form/KTimezoneField.vue +0 -1
- package/map/client/components/legend/KLegend.vue +4 -4
- package/map/client/components/location/KLocationCardSection.vue +16 -0
- package/map/client/components/location/KLocationMap.vue +3 -2
- package/map/client/components/location/KLocationSearch.vue +46 -8
- package/map/client/components/location/KLocationTimeLineCard.vue +25 -3
- package/map/client/components/location/KLocationTip.vue +57 -10
- package/map/client/components/selection/KFeaturesSelection.vue +71 -0
- package/map/client/components/selection/KSelectedLayerFeatures.vue +343 -0
- package/map/client/components/{KAttribution.vue → stickies/KAttribution.vue} +39 -33
- package/map/client/components/stickies/KLevelSlider.vue +114 -0
- package/map/client/components/stickies/KNorthArrow.vue +26 -0
- package/map/client/components/stickies/KPosition.vue +103 -0
- package/map/client/components/stickies/KTarget.vue +34 -0
- package/map/client/components/styles/KLayerStyleAction.vue +58 -0
- package/map/client/components/styles/KStyleEditor.vue +273 -0
- package/map/client/components/styles/KStyleEditorSection.vue +79 -0
- package/map/client/components/styles/KStyleManager.vue +183 -0
- package/map/client/components/styles/KStylePreview.vue +64 -0
- package/map/client/components/styles/KStylePreviewItem.vue +68 -0
- package/map/client/components/styles/KStylePropertiesGroup.vue +76 -0
- package/map/client/components/styles/KStyleProperty.vue +136 -0
- package/map/client/components/styles/KStyleTip.vue +118 -0
- package/map/client/components/tools/KGeolocateTool.vue +3 -2
- package/map/client/components/tools/KSearchTool.vue +34 -6
- package/map/client/components/widget/KMapillaryViewer.vue +1 -1
- package/map/client/components/widget/KStackableTimeSeries.vue +8 -5
- package/map/client/composables/activity.js +29 -43
- package/map/client/composables/catalog.js +1 -1
- package/map/client/composables/highlight.js +117 -57
- package/map/client/composables/location.js +33 -14
- package/map/client/composables/project.js +9 -10
- package/map/client/composables/selection.js +136 -23
- package/map/client/geocoder.js +104 -0
- package/map/client/geolocation.js +1 -1
- package/map/client/globe.js +3 -0
- package/map/client/hooks/hooks.offline.js +95 -0
- package/map/client/hooks/index.js +1 -0
- package/map/client/i18n/map_en.json +159 -94
- package/map/client/i18n/map_fr.json +186 -127
- package/map/client/index.js +3 -0
- package/map/client/init.js +44 -8
- package/map/client/leaflet/BoxSelection.js +2 -2
- package/map/client/leaflet/GradientPath.js +84 -4
- package/map/client/leaflet/WindBarb.js +323 -0
- package/map/client/leaflet/utils/index.js +1 -0
- package/map/client/leaflet/utils/utils.events.js +8 -3
- package/map/client/leaflet/utils/utils.geojson.js +221 -0
- package/map/client/leaflet/utils/utils.style.js +10 -9
- package/map/client/map.js +3 -0
- package/map/client/mixins/globe/mixin.base-globe.js +151 -19
- package/map/client/mixins/globe/mixin.geojson-layers.js +208 -86
- package/map/client/mixins/globe/mixin.popup.js +3 -2
- package/map/client/mixins/globe/mixin.style.js +3 -1
- package/map/client/mixins/globe/mixin.tooltip.js +3 -2
- package/map/client/mixins/map/index.js +1 -3
- package/map/client/mixins/map/mixin.base-map.js +267 -79
- package/map/client/mixins/map/mixin.canvas-layers.js +44 -10
- package/map/client/mixins/map/mixin.edit-layers.js +142 -57
- package/map/client/mixins/map/mixin.geojson-layers.js +127 -204
- package/map/client/mixins/map/mixin.pmtiles-layers.js +24 -11
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +1 -2
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +2 -1
- package/map/client/mixins/mixin.activity.js +61 -41
- package/map/client/mixins/mixin.context.js +19 -14
- package/map/client/mixins/mixin.feature-selection.js +0 -1
- package/map/client/mixins/mixin.feature-service.js +41 -59
- package/map/client/mixins/mixin.weacast.js +1 -1
- package/map/client/navigator.js +38 -0
- package/map/client/pixi-utils.js +1 -1
- package/map/client/planets.js +1 -1
- package/map/client/readers/reader.kml.js +57 -1
- package/map/client/utils/index.js +1 -0
- package/map/client/utils/utils.capture.js +10 -7
- package/map/client/utils/utils.catalog.js +2 -2
- package/map/client/utils/utils.features.js +193 -39
- package/map/client/utils/utils.js +0 -21
- package/map/client/utils/utils.layers.js +381 -4
- package/map/client/utils/utils.location.js +39 -74
- package/map/client/utils/utils.offline.js +89 -0
- package/map/client/utils/utils.style.js +133 -80
- package/map/common/geotiff-grid-source.js +2 -1
- package/map/common/permissions.js +2 -0
- package/map/common/schemas/capture.create.json +4 -4
- package/map/common/schemas/catalog.update.json +18 -2
- package/map/common/schemas/projects.create.json +2 -2
- package/map/common/schemas/projects.update.json +2 -2
- package/map/common/tms-utils.js +5 -5
- package/map/common/wcs-grid-source.js +2 -2
- package/map/common/wcs-utils.js +8 -8
- package/map/common/wfs-utils.js +10 -10
- package/map/common/wms-utils.js +7 -7
- package/map/common/wmts-utils.js +6 -6
- package/package.json +7 -4
- package/test/api/core/account.test.js +0 -72
- package/test/api/core/authentication.test.js +184 -0
- package/test/api/core/config/default.cjs +1 -3
- package/test/api/core/index.test.js +33 -96
- package/test/api/core/offline.test.js +55 -0
- package/test/api/core/push.test.js +3 -3
- package/test/api/core/{test-log-2024-06-06.log → test-log-2025-02-05.log} +3 -3
- package/test/api/core/{test-log-2024-11-15.log → test-log-2025-05-21.log} +1 -9
- package/test/api/map/alerts.test.js +1 -1
- package/test/api/map/config/default.cjs +2 -1
- package/test/api/map/data/vigicrues.observations.Q.json +47042 -0
- package/test/api/map/index.test.js +113 -9
- package/test/api/map/style.test.js +62 -0
- package/test/client/core/layout.js +2 -2
- package/test/client/core/runner.js +1 -1
- package/test/client/core/utils.js +52 -0
- package/test/client/map/catalog.js +1 -0
- package/core/api/hooks/hooks.groups.js +0 -48
- package/core/api/hooks/hooks.organisations.js +0 -152
- package/core/api/models/organisations.model.mongodb.js +0 -3
- package/core/api/models/tags.model.mongodb.js +0 -10
- package/core/api/services/groups/groups.hooks.js +0 -31
- package/core/api/services/organisations/organisations.hooks.js +0 -31
- package/core/api/services/organisations/organisations.service.js +0 -86
- package/core/api/services/tags/tags.hooks.js +0 -31
- package/core/api/utils.js +0 -11
- package/core/client/components/KChipsPane.vue +0 -103
- package/core/client/components/document/index.js +0 -9
- package/core/client/components/team/KAddMember.vue +0 -378
- package/core/client/components/team/KAddTag.vue +0 -121
- package/core/client/components/team/KChangeRole.vue +0 -118
- package/core/client/components/team/KGroupCard.vue +0 -110
- package/core/client/components/team/KGroupsActivity.vue +0 -78
- package/core/client/components/team/KJoinGroup.vue +0 -132
- package/core/client/components/team/KMemberCard.vue +0 -328
- package/core/client/components/team/KMemberFilter.vue +0 -49
- package/core/client/components/team/KMembersActivity.vue +0 -136
- package/core/client/components/team/KOrganisationsActivity.vue +0 -51
- package/core/client/components/team/KTagCard.vue +0 -72
- package/core/client/components/team/KTagsActivity.vue +0 -73
- package/core/client/components/team/index.js +0 -9
- package/core/client/mixins/mixin.base-context.js +0 -54
- package/core/client/utils/utils.platform.js +0 -12
- package/core/common/schemas/groups.create.json +0 -28
- package/core/common/schemas/groups.update.json +0 -28
- package/core/common/schemas/organisations.create.json +0 -28
- package/core/common/schemas/organisations.update.json +0 -49
- package/core/common/schemas/tags.create.json +0 -35
- package/core/common/schemas/tags.update.json +0 -35
- package/coverage/tmp/coverage-280506-1731704745613-0.json +0 -1
- package/coverage/tmp/coverage-280518-1731704745599-0.json +0 -1
- package/coverage/tmp/coverage-280529-1731704745588-0.json +0 -1
- package/coverage/tmp/coverage-280541-1731704745574-0.json +0 -1
- package/coverage/tmp/coverage-280548-1731704745545-0.json +0 -1
- package/map/client/components/KFeaturesFilter.vue +0 -259
- package/map/client/components/KLayerStyleEditor.vue +0 -118
- package/map/client/components/KLayerStyleForm.vue +0 -740
- package/map/client/components/KLevelSlider.vue +0 -100
- package/map/client/components/KNorth.vue +0 -31
- package/map/client/components/KPositionIndicator.vue +0 -83
- package/map/client/components/catalog/KCreateProject.vue +0 -100
- package/map/client/mixins/map/mixin.forecast-layers.js +0 -81
- package/map/client/mixins/map/mixin.georaster-layers.js +0 -107
- package/test/api/core/team.test.js +0 -670
- package/test/api/core/test-log-2023-12-19.log +0 -7
- package/test/api/core/test-log-2024-01-04.log +0 -14
- package/test/api/core/test-log-2024-05-14.log +0 -6
- package/test/api/core/test-log-2024-06-26.log +0 -25
- package/test/api/core/test-log-2024-06-28.log +0 -2
- package/test/api/core/test-log-2024-07-09.log +0 -0
- package/test/api/core/test-log-2024-08-13.log +0 -69
- package/test/api/core/test-log-2024-10-28.log +0 -53
- package/test/api/core/test-log-2024-11-05.log +0 -30
- package/test/api/core/test-log-2024-11-18.log +0 -0
- package/test/api/core/test-log-2024-12-03.log +0 -30
- package/test/api/map/test-log-2023-11-24.log +0 -121
- package/test/api/map/test-log-2023-12-12.log +0 -29
- package/test/api/map/test-log-2023-12-13.log +0 -5
- package/test/api/map/test-log-2024-01-04.log +0 -2
- package/test/api/map/test-log-2024-01-11.log +0 -1
- package/test/api/map/test-log-2024-01-25.log +0 -19
- package/test/api/map/test-log-2024-06-06.log +0 -39
- package/test/api/map/test-log-2024-08-13.log +0 -13
- package/test/api/map/test-log-2024-08-20.log +0 -55
- package/test/api/map/test-log-2024-09-09.log +0 -92
- package/test/api/map/test-log-2024-10-28.log +0 -11
- /package/extras/{logos → images}/kalisio.png +0 -0
- /package/extras/{icons → images}/target.svg +0 -0
- /package/test/api/map/data/{vigicrues.observations.json → vigicrues.observations.H.json} +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">80.75% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>235/291</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">66.23% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>51/77</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">75% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>8
|
|
42
|
+
<span class='fraction'>6/8</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">80.75% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>235/291</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -355,102 +355,7 @@
|
|
|
355
355
|
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
356
|
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
357
|
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
453
|
-
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
454
359
|
<span class="cline-any cline-yes">1x</span>
|
|
455
360
|
<span class="cline-any cline-yes">1x</span>
|
|
456
361
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -488,12 +393,12 @@
|
|
|
488
393
|
<span class="cline-any cline-yes">2x</span>
|
|
489
394
|
<span class="cline-any cline-yes">1x</span>
|
|
490
395
|
<span class="cline-any cline-yes">1x</span>
|
|
491
|
-
<span class="cline-any cline-yes">
|
|
396
|
+
<span class="cline-any cline-yes">4x</span>
|
|
492
397
|
<span class="cline-any cline-no"> </span>
|
|
493
398
|
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-yes">
|
|
495
|
-
<span class="cline-any cline-yes">
|
|
496
|
-
<span class="cline-any cline-yes">
|
|
399
|
+
<span class="cline-any cline-yes">4x</span>
|
|
400
|
+
<span class="cline-any cline-yes">4x</span>
|
|
401
|
+
<span class="cline-any cline-yes">4x</span>
|
|
497
402
|
<span class="cline-any cline-yes">1x</span>
|
|
498
403
|
<span class="cline-any cline-yes">1x</span>
|
|
499
404
|
<span class="cline-any cline-no"> </span>
|
|
@@ -504,12 +409,12 @@
|
|
|
504
409
|
<span class="cline-any cline-no"> </span>
|
|
505
410
|
<span class="cline-any cline-yes">1x</span>
|
|
506
411
|
<span class="cline-any cline-yes">1x</span>
|
|
507
|
-
<span class="cline-any cline-yes">
|
|
412
|
+
<span class="cline-any cline-yes">4x</span>
|
|
508
413
|
<span class="cline-any cline-no"> </span>
|
|
509
414
|
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-yes">
|
|
511
|
-
<span class="cline-any cline-yes">
|
|
512
|
-
<span class="cline-any cline-yes">
|
|
415
|
+
<span class="cline-any cline-yes">4x</span>
|
|
416
|
+
<span class="cline-any cline-yes">4x</span>
|
|
417
|
+
<span class="cline-any cline-yes">4x</span>
|
|
513
418
|
<span class="cline-any cline-yes">1x</span>
|
|
514
419
|
<span class="cline-any cline-yes">1x</span>
|
|
515
420
|
<span class="cline-any cline-no"> </span>
|
|
@@ -520,26 +425,9 @@
|
|
|
520
425
|
<span class="cline-any cline-no"> </span>
|
|
521
426
|
<span class="cline-any cline-yes">1x</span>
|
|
522
427
|
<span class="cline-any cline-yes">1x</span>
|
|
523
|
-
<span class="cline-any cline-yes">
|
|
428
|
+
<span class="cline-any cline-yes">4x</span>
|
|
524
429
|
<span class="cline-any cline-no"> </span>
|
|
525
430
|
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-yes">6x</span>
|
|
527
|
-
<span class="cline-any cline-yes">6x</span>
|
|
528
|
-
<span class="cline-any cline-yes">6x</span>
|
|
529
|
-
<span class="cline-any cline-yes">6x</span>
|
|
530
|
-
<span class="cline-any cline-yes">6x</span>
|
|
531
|
-
<span class="cline-any cline-yes">6x</span>
|
|
532
|
-
<span class="cline-any cline-yes">6x</span>
|
|
533
|
-
<span class="cline-any cline-yes">4x</span>
|
|
534
|
-
<span class="cline-any cline-yes">4x</span>
|
|
535
|
-
<span class="cline-any cline-yes">4x</span>
|
|
536
|
-
<span class="cline-any cline-yes">6x</span>
|
|
537
|
-
<span class="cline-any cline-yes">6x</span>
|
|
538
|
-
<span class="cline-any cline-yes">4x</span>
|
|
539
|
-
<span class="cline-any cline-yes">4x</span>
|
|
540
|
-
<span class="cline-any cline-yes">4x</span>
|
|
541
|
-
<span class="cline-any cline-yes">4x</span>
|
|
542
|
-
<span class="cline-any cline-yes">4x</span>
|
|
543
431
|
<span class="cline-any cline-yes">4x</span>
|
|
544
432
|
<span class="cline-any cline-yes">4x</span>
|
|
545
433
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -547,272 +435,149 @@
|
|
|
547
435
|
<span class="cline-any cline-yes">4x</span>
|
|
548
436
|
<span class="cline-any cline-yes">4x</span>
|
|
549
437
|
<span class="cline-any cline-yes">4x</span>
|
|
438
|
+
<span class="cline-any cline-yes">3x</span>
|
|
439
|
+
<span class="cline-any cline-yes">3x</span>
|
|
440
|
+
<span class="cline-any cline-yes">3x</span>
|
|
550
441
|
<span class="cline-any cline-yes">4x</span>
|
|
551
442
|
<span class="cline-any cline-yes">4x</span>
|
|
443
|
+
<span class="cline-any cline-yes">3x</span>
|
|
444
|
+
<span class="cline-any cline-yes">3x</span>
|
|
445
|
+
<span class="cline-any cline-yes">3x</span>
|
|
446
|
+
<span class="cline-any cline-yes">3x</span>
|
|
447
|
+
<span class="cline-any cline-yes">3x</span>
|
|
448
|
+
<span class="cline-any cline-yes">3x</span>
|
|
449
|
+
<span class="cline-any cline-yes">3x</span>
|
|
450
|
+
<span class="cline-any cline-yes">3x</span>
|
|
451
|
+
<span class="cline-any cline-yes">3x</span>
|
|
452
|
+
<span class="cline-any cline-yes">3x</span>
|
|
453
|
+
<span class="cline-any cline-yes">3x</span>
|
|
454
|
+
<span class="cline-any cline-yes">3x</span>
|
|
455
|
+
<span class="cline-any cline-yes">3x</span>
|
|
456
|
+
<span class="cline-any cline-yes">3x</span>
|
|
552
457
|
<span class="cline-any cline-no"> </span>
|
|
553
458
|
<span class="cline-any cline-no"> </span>
|
|
554
459
|
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-yes">4x</span>
|
|
556
|
-
<span class="cline-any cline-yes">4x</span>
|
|
557
|
-
<span class="cline-any cline-yes">4x</span>
|
|
558
|
-
<span class="cline-any cline-yes">4x</span>
|
|
559
|
-
<span class="cline-any cline-yes">4x</span>
|
|
560
|
-
<span class="cline-any cline-yes">4x</span>
|
|
561
|
-
<span class="cline-any cline-yes">4x</span>
|
|
562
|
-
<span class="cline-any cline-yes">4x</span>
|
|
563
|
-
<span class="cline-any cline-yes">4x</span>
|
|
564
|
-
<span class="cline-any cline-yes">4x</span>
|
|
565
|
-
<span class="cline-any cline-yes">4x</span>
|
|
566
|
-
<span class="cline-any cline-yes">4x</span>
|
|
567
|
-
<span class="cline-any cline-yes">4x</span>
|
|
568
|
-
<span class="cline-any cline-yes">4x</span>
|
|
569
|
-
<span class="cline-any cline-yes">4x</span>
|
|
570
|
-
<span class="cline-any cline-yes">1x</span>
|
|
571
|
-
<span class="cline-any cline-yes">4x</span>
|
|
572
460
|
<span class="cline-any cline-yes">3x</span>
|
|
573
461
|
<span class="cline-any cline-yes">3x</span>
|
|
574
|
-
<span class="cline-any cline-yes">
|
|
575
|
-
<span class="cline-any cline-yes">
|
|
576
|
-
<span class="cline-any cline-yes">
|
|
577
|
-
<span class="cline-any cline-yes">
|
|
462
|
+
<span class="cline-any cline-yes">3x</span>
|
|
463
|
+
<span class="cline-any cline-yes">3x</span>
|
|
464
|
+
<span class="cline-any cline-yes">3x</span>
|
|
465
|
+
<span class="cline-any cline-yes">3x</span>
|
|
466
|
+
<span class="cline-any cline-yes">3x</span>
|
|
467
|
+
<span class="cline-any cline-yes">3x</span>
|
|
468
|
+
<span class="cline-any cline-yes">3x</span>
|
|
469
|
+
<span class="cline-any cline-yes">3x</span>
|
|
470
|
+
<span class="cline-any cline-yes">3x</span>
|
|
471
|
+
<span class="cline-any cline-yes">3x</span>
|
|
472
|
+
<span class="cline-any cline-yes">3x</span>
|
|
473
|
+
<span class="cline-any cline-yes">3x</span>
|
|
474
|
+
<span class="cline-any cline-yes">3x</span>
|
|
578
475
|
<span class="cline-any cline-yes">1x</span>
|
|
579
476
|
<span class="cline-any cline-yes">3x</span>
|
|
477
|
+
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-yes">2x</span>
|
|
580
479
|
<span class="cline-any cline-yes">3x</span>
|
|
581
480
|
<span class="cline-any cline-yes">3x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
|
+
<span class="cline-any cline-yes">1x</span>
|
|
484
|
+
<span class="cline-any cline-yes">2x</span>
|
|
485
|
+
<span class="cline-any cline-yes">2x</span>
|
|
486
|
+
<span class="cline-any cline-yes">2x</span>
|
|
487
|
+
<span class="cline-any cline-yes">2x</span>
|
|
582
488
|
<span class="cline-any cline-yes">3x</span>
|
|
583
|
-
<span class="cline-any cline-yes">4x</span>
|
|
584
489
|
<span class="cline-any cline-yes">1x</span>
|
|
585
|
-
<span class="cline-any cline-yes">
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
586
491
|
<span class="cline-any cline-no"> </span>
|
|
587
492
|
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-yes">
|
|
493
|
+
<span class="cline-any cline-yes">3x</span>
|
|
589
494
|
<span class="cline-any cline-yes">1x</span>
|
|
590
495
|
<span class="cline-any cline-yes">1x</span>
|
|
591
496
|
<span class="cline-any cline-yes">1x</span>
|
|
592
497
|
<span class="cline-any cline-yes">1x</span>
|
|
593
498
|
<span class="cline-any cline-yes">1x</span>
|
|
499
|
+
<span class="cline-any cline-yes">3x</span>
|
|
500
|
+
<span class="cline-any cline-yes">2x</span>
|
|
501
|
+
<span class="cline-any cline-yes">2x</span>
|
|
594
502
|
<span class="cline-any cline-yes">4x</span>
|
|
595
|
-
<span class="cline-any cline-yes">4x</span>
|
|
596
|
-
<span class="cline-any cline-yes">4x</span>
|
|
597
|
-
<span class="cline-any cline-yes">6x</span>
|
|
598
503
|
<span class="cline-any cline-yes">1x</span>
|
|
599
504
|
<span class="cline-any cline-yes">1x</span>
|
|
600
|
-
<span class="cline-any cline-yes">
|
|
505
|
+
<span class="cline-any cline-yes">105x</span>
|
|
601
506
|
<span class="cline-any cline-no"> </span>
|
|
602
507
|
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-yes">
|
|
604
|
-
<span class="cline-any cline-yes">
|
|
605
|
-
<span class="cline-any cline-yes">
|
|
606
|
-
<span class="cline-any cline-yes">
|
|
607
|
-
<span class="cline-any cline-yes">
|
|
608
|
-
<span class="cline-any cline-yes">
|
|
609
|
-
<span class="cline-any cline-yes">
|
|
610
|
-
<span class="cline-any cline-yes">
|
|
611
|
-
<span class="cline-any cline-yes">
|
|
612
|
-
<span class="cline-any cline-yes">
|
|
613
|
-
<span class="cline-any cline-yes">
|
|
614
|
-
<span class="cline-any cline-yes">
|
|
615
|
-
<span class="cline-any cline-yes">
|
|
616
|
-
<span class="cline-any cline-yes">
|
|
617
|
-
<span class="cline-any cline-yes">
|
|
618
|
-
<span class="cline-any cline-yes">
|
|
619
|
-
<span class="cline-any cline-yes">
|
|
620
|
-
<span class="cline-any cline-yes">
|
|
621
|
-
<span class="cline-any cline-yes">
|
|
622
|
-
<span class="cline-any cline-yes">
|
|
623
|
-
<span class="cline-any cline-yes">
|
|
624
|
-
<span class="cline-any cline-yes">
|
|
508
|
+
<span class="cline-any cline-yes">105x</span>
|
|
509
|
+
<span class="cline-any cline-yes">105x</span>
|
|
510
|
+
<span class="cline-any cline-yes">105x</span>
|
|
511
|
+
<span class="cline-any cline-yes">105x</span>
|
|
512
|
+
<span class="cline-any cline-yes">105x</span>
|
|
513
|
+
<span class="cline-any cline-yes">105x</span>
|
|
514
|
+
<span class="cline-any cline-yes">105x</span>
|
|
515
|
+
<span class="cline-any cline-yes">105x</span>
|
|
516
|
+
<span class="cline-any cline-yes">105x</span>
|
|
517
|
+
<span class="cline-any cline-yes">105x</span>
|
|
518
|
+
<span class="cline-any cline-yes">105x</span>
|
|
519
|
+
<span class="cline-any cline-yes">105x</span>
|
|
520
|
+
<span class="cline-any cline-yes">10x</span>
|
|
521
|
+
<span class="cline-any cline-yes">10x</span>
|
|
522
|
+
<span class="cline-any cline-yes">10x</span>
|
|
523
|
+
<span class="cline-any cline-yes">105x</span>
|
|
524
|
+
<span class="cline-any cline-yes">105x</span>
|
|
525
|
+
<span class="cline-any cline-yes">5x</span>
|
|
526
|
+
<span class="cline-any cline-yes">5x</span>
|
|
527
|
+
<span class="cline-any cline-yes">5x</span>
|
|
528
|
+
<span class="cline-any cline-yes">105x</span>
|
|
529
|
+
<span class="cline-any cline-yes">105x</span>
|
|
625
530
|
<span class="cline-any cline-no"> </span>
|
|
626
531
|
<span class="cline-any cline-no"> </span>
|
|
627
532
|
<span class="cline-any cline-no"> </span>
|
|
628
|
-
<span class="cline-any cline-yes">
|
|
629
|
-
<span class="cline-any cline-yes">
|
|
630
|
-
<span class="cline-any cline-yes">77x</span>
|
|
631
|
-
<span class="cline-any cline-yes">77x</span>
|
|
632
|
-
<span class="cline-any cline-yes">77x</span>
|
|
633
|
-
<span class="cline-any cline-yes">77x</span>
|
|
634
|
-
<span class="cline-any cline-yes">77x</span>
|
|
635
|
-
<span class="cline-any cline-yes">278x</span>
|
|
636
|
-
<span class="cline-any cline-yes">278x</span>
|
|
637
|
-
<span class="cline-any cline-yes">278x</span>
|
|
638
|
-
<span class="cline-any cline-yes">63x</span>
|
|
639
|
-
<span class="cline-any cline-yes">63x</span>
|
|
640
|
-
<span class="cline-any cline-yes">63x</span>
|
|
641
|
-
<span class="cline-any cline-yes">63x</span>
|
|
642
|
-
<span class="cline-any cline-yes">63x</span>
|
|
533
|
+
<span class="cline-any cline-yes">105x</span>
|
|
534
|
+
<span class="cline-any cline-yes">105x</span>
|
|
643
535
|
<span class="cline-any cline-yes">6x</span>
|
|
644
536
|
<span class="cline-any cline-yes">6x</span>
|
|
645
537
|
<span class="cline-any cline-yes">6x</span>
|
|
646
|
-
<span class="cline-any cline-no"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
538
|
<span class="cline-any cline-yes">6x</span>
|
|
649
|
-
<span class="cline-any cline-yes">63x</span>
|
|
650
|
-
<span class="cline-any cline-yes">63x</span>
|
|
651
|
-
<span class="cline-any cline-yes">63x</span>
|
|
652
539
|
<span class="cline-any cline-yes">6x</span>
|
|
653
|
-
<span class="cline-any cline-yes">
|
|
654
|
-
<span class="cline-any cline-yes">
|
|
655
|
-
<span class="cline-any cline-yes">
|
|
656
|
-
<span class="cline-any cline-yes">
|
|
657
|
-
<span class="cline-any cline-yes">
|
|
658
|
-
<span class="cline-any cline-yes">3x</span>
|
|
659
|
-
<span class="cline-any cline-yes">60x</span>
|
|
660
|
-
<span class="cline-any cline-yes">63x</span>
|
|
661
|
-
<span class="cline-any cline-yes">44x</span>
|
|
662
|
-
<span class="cline-any cline-yes">44x</span>
|
|
663
|
-
<span class="cline-any cline-yes">44x</span>
|
|
664
|
-
<span class="cline-any cline-yes">44x</span>
|
|
665
|
-
<span class="cline-any cline-yes">44x</span>
|
|
666
|
-
<span class="cline-any cline-yes">19x</span>
|
|
667
|
-
<span class="cline-any cline-yes">19x</span>
|
|
668
|
-
<span class="cline-any cline-yes">19x</span>
|
|
540
|
+
<span class="cline-any cline-yes">105x</span>
|
|
541
|
+
<span class="cline-any cline-yes">105x</span>
|
|
542
|
+
<span class="cline-any cline-yes">105x</span>
|
|
543
|
+
<span class="cline-any cline-yes">4x</span>
|
|
544
|
+
<span class="cline-any cline-yes">4x</span>
|
|
669
545
|
<span class="cline-any cline-yes">4x</span>
|
|
670
546
|
<span class="cline-any cline-yes">4x</span>
|
|
671
547
|
<span class="cline-any cline-yes">4x</span>
|
|
672
|
-
<span class="cline-any cline-yes">44x</span>
|
|
673
|
-
<span class="cline-any cline-yes">25x</span>
|
|
674
|
-
<span class="cline-any cline-yes">25x</span>
|
|
675
|
-
<span class="cline-any cline-yes">25x</span>
|
|
676
|
-
<span class="cline-any cline-yes">25x</span>
|
|
677
|
-
<span class="cline-any cline-yes">25x</span>
|
|
678
|
-
<span class="cline-any cline-yes">24x</span>
|
|
679
|
-
<span class="cline-any cline-yes">23x</span>
|
|
680
|
-
<span class="cline-any cline-yes">23x</span>
|
|
681
|
-
<span class="cline-any cline-yes">24x</span>
|
|
682
|
-
<span class="cline-any cline-yes">24x</span>
|
|
683
|
-
<span class="cline-any cline-yes">25x</span>
|
|
684
|
-
<span class="cline-any cline-yes">1x</span>
|
|
685
548
|
<span class="cline-any cline-yes">1x</span>
|
|
686
549
|
<span class="cline-any cline-yes">1x</span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
550
|
<span class="cline-any cline-yes">1x</span>
|
|
691
|
-
<span class="cline-any cline-yes">25x</span>
|
|
692
|
-
<span class="cline-any cline-yes">40x</span>
|
|
693
|
-
<span class="cline-any cline-yes">40x</span>
|
|
694
|
-
<span class="cline-any cline-yes">40x</span>
|
|
695
|
-
<span class="cline-any cline-yes">63x</span>
|
|
696
|
-
<span class="cline-any cline-yes">14x</span>
|
|
697
|
-
<span class="cline-any cline-yes">14x</span>
|
|
698
|
-
<span class="cline-any cline-yes">14x</span>
|
|
699
|
-
<span class="cline-any cline-yes">14x</span>
|
|
700
|
-
<span class="cline-any cline-yes">14x</span>
|
|
701
|
-
<span class="cline-any cline-yes">14x</span>
|
|
702
|
-
<span class="cline-any cline-yes">14x</span>
|
|
703
|
-
<span class="cline-any cline-yes">14x</span>
|
|
704
|
-
<span class="cline-any cline-yes">14x</span>
|
|
705
|
-
<span class="cline-any cline-yes">1x</span>
|
|
706
|
-
<span class="cline-any cline-yes">1x</span>
|
|
707
|
-
<span class="cline-any cline-yes">1x</span>
|
|
708
|
-
<span class="cline-any cline-yes">13x</span>
|
|
709
|
-
<span class="cline-any cline-yes">14x</span>
|
|
710
|
-
<span class="cline-any cline-yes">2x</span>
|
|
711
|
-
<span class="cline-any cline-yes">2x</span>
|
|
712
|
-
<span class="cline-any cline-yes">13x</span>
|
|
713
|
-
<span class="cline-any cline-yes">13x</span>
|
|
714
|
-
<span class="cline-any cline-yes">13x</span>
|
|
715
|
-
<span class="cline-any cline-yes">13x</span>
|
|
716
|
-
<span class="cline-any cline-yes">278x</span>
|
|
717
|
-
<span class="cline-any cline-yes">215x</span>
|
|
718
|
-
<span class="cline-any cline-yes">215x</span>
|
|
719
|
-
<span class="cline-any cline-yes">257x</span>
|
|
720
|
-
<span class="cline-any cline-yes">257x</span>
|
|
721
|
-
<span class="cline-any cline-yes">257x</span>
|
|
722
|
-
<span class="cline-any cline-yes">278x</span>
|
|
723
|
-
<span class="cline-any cline-yes">1x</span>
|
|
724
|
-
<span class="cline-any cline-yes">1x</span>
|
|
725
|
-
<span class="cline-any cline-yes">1x</span>
|
|
726
|
-
<span class="cline-any cline-yes">8x</span>
|
|
727
|
-
<span class="cline-any cline-yes">8x</span>
|
|
728
|
-
<span class="cline-any cline-yes">8x</span>
|
|
729
|
-
<span class="cline-any cline-yes">8x</span>
|
|
730
|
-
<span class="cline-any cline-yes">8x</span>
|
|
731
|
-
<span class="cline-any cline-yes">8x</span>
|
|
732
|
-
<span class="cline-any cline-yes">8x</span>
|
|
733
|
-
<span class="cline-any cline-yes">8x</span>
|
|
734
|
-
<span class="cline-any cline-yes">8x</span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
551
|
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-yes">8x</span>
|
|
738
|
-
<span class="cline-any cline-yes">8x</span>
|
|
739
|
-
<span class="cline-any cline-yes">8x</span>
|
|
740
|
-
<span class="cline-any cline-yes">8x</span>
|
|
741
552
|
<span class="cline-any cline-yes">1x</span>
|
|
742
553
|
<span class="cline-any cline-yes">1x</span>
|
|
743
554
|
<span class="cline-any cline-yes">1x</span>
|
|
744
|
-
<span class="cline-any cline-yes">2x</span>
|
|
745
|
-
<span class="cline-any cline-yes">13x</span>
|
|
746
|
-
<span class="cline-any cline-yes">13x</span>
|
|
747
|
-
<span class="cline-any cline-yes">13x</span>
|
|
748
|
-
<span class="cline-any cline-yes">13x</span>
|
|
749
|
-
<span class="cline-any cline-yes">13x</span>
|
|
750
|
-
<span class="cline-any cline-yes">13x</span>
|
|
751
|
-
<span class="cline-any cline-yes">13x</span>
|
|
752
|
-
<span class="cline-any cline-yes">13x</span>
|
|
753
|
-
<span class="cline-any cline-yes">13x</span>
|
|
754
|
-
<span class="cline-any cline-yes">13x</span>
|
|
755
|
-
<span class="cline-any cline-yes">13x</span>
|
|
756
|
-
<span class="cline-any cline-yes">13x</span>
|
|
757
|
-
<span class="cline-any cline-yes">13x</span>
|
|
758
|
-
<span class="cline-any cline-yes">11x</span>
|
|
759
|
-
<span class="cline-any cline-yes">13x</span>
|
|
760
|
-
<span class="cline-any cline-yes">5x</span>
|
|
761
|
-
<span class="cline-any cline-yes">5x</span>
|
|
762
|
-
<span class="cline-any cline-yes">5x</span>
|
|
763
|
-
<span class="cline-any cline-yes">5x</span>
|
|
764
|
-
<span class="cline-any cline-yes">5x</span>
|
|
765
|
-
<span class="cline-any cline-yes">5x</span>
|
|
766
|
-
<span class="cline-any cline-yes">5x</span>
|
|
767
|
-
<span class="cline-any cline-yes">5x</span>
|
|
768
|
-
<span class="cline-any cline-yes">5x</span>
|
|
769
|
-
<span class="cline-any cline-yes">5x</span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-no"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-no"> </span>
|
|
775
|
-
<span class="cline-any cline-no"> </span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-no"> </span>
|
|
778
|
-
<span class="cline-any cline-no"> </span>
|
|
779
|
-
<span class="cline-any cline-yes">5x</span>
|
|
780
|
-
<span class="cline-any cline-yes">11x</span>
|
|
781
|
-
<span class="cline-any cline-yes">13x</span>
|
|
782
|
-
<span class="cline-any cline-yes">2x</span>
|
|
783
|
-
<span class="cline-any cline-yes">1x</span>
|
|
784
555
|
<span class="cline-any cline-yes">1x</span>
|
|
785
556
|
<span class="cline-any cline-yes">4x</span>
|
|
786
557
|
<span class="cline-any cline-yes">4x</span>
|
|
787
558
|
<span class="cline-any cline-yes">4x</span>
|
|
559
|
+
<span class="cline-any cline-yes">2x</span>
|
|
788
560
|
<span class="cline-any cline-yes">4x</span>
|
|
789
561
|
<span class="cline-any cline-yes">4x</span>
|
|
790
562
|
<span class="cline-any cline-yes">4x</span>
|
|
791
|
-
<span class="cline-any cline-yes">4x</span>
|
|
792
|
-
<span class="cline-any cline-yes">4x</span>
|
|
793
|
-
<span class="cline-any cline-yes">1x</span>
|
|
794
|
-
<span class="cline-any cline-yes">1x</span>
|
|
795
|
-
<span class="cline-any cline-yes">1x</span>
|
|
796
|
-
<span class="cline-any cline-yes">1x</span>
|
|
797
|
-
<span class="cline-any cline-yes">1x</span>
|
|
798
563
|
<span class="cline-any cline-yes">1x</span>
|
|
799
564
|
<span class="cline-any cline-yes">1x</span>
|
|
800
565
|
<span class="cline-any cline-yes">1x</span>
|
|
566
|
+
<span class="cline-any cline-yes">3x</span>
|
|
567
|
+
<span class="cline-any cline-yes">4x</span>
|
|
801
568
|
<span class="cline-any cline-yes">1x</span>
|
|
802
569
|
<span class="cline-any cline-yes">1x</span>
|
|
803
570
|
<span class="cline-any cline-yes">1x</span>
|
|
804
571
|
<span class="cline-any cline-yes">1x</span>
|
|
805
572
|
<span class="cline-any cline-yes">1x</span>
|
|
806
573
|
<span class="cline-any cline-yes">1x</span>
|
|
807
|
-
<span class="cline-any cline-yes">4x</span>
|
|
808
|
-
<span class="cline-any cline-yes">4x</span>
|
|
809
|
-
<span class="cline-any cline-yes">4x</span>
|
|
810
|
-
<span class="cline-any cline-yes">4x</span>
|
|
811
574
|
<span class="cline-any cline-yes">1x</span>
|
|
812
575
|
<span class="cline-any cline-yes">1x</span>
|
|
813
576
|
<span class="cline-any cline-no"> </span>
|
|
814
577
|
<span class="cline-any cline-no"> </span>
|
|
815
578
|
<span class="cline-any cline-no"> </span>
|
|
579
|
+
<span class="cline-any cline-yes">1x</span>
|
|
580
|
+
<span class="cline-any cline-no"> </span>
|
|
816
581
|
<span class="cline-any cline-no"> </span>
|
|
817
582
|
<span class="cline-any cline-no"> </span>
|
|
818
583
|
<span class="cline-any cline-no"> </span>
|
|
@@ -831,10 +596,57 @@
|
|
|
831
596
|
<span class="cline-any cline-no"> </span>
|
|
832
597
|
<span class="cline-any cline-no"> </span>
|
|
833
598
|
<span class="cline-any cline-no"> </span>
|
|
599
|
+
<span class="cline-any cline-yes">1x</span>
|
|
600
|
+
<span class="cline-any cline-yes">1x</span>
|
|
601
|
+
<span class="cline-any cline-yes">1x</span>
|
|
602
|
+
<span class="cline-any cline-yes">4x</span>
|
|
603
|
+
<span class="cline-any cline-yes">2x</span>
|
|
604
|
+
<span class="cline-any cline-yes">2x</span>
|
|
605
|
+
<span class="cline-any cline-yes">2x</span>
|
|
606
|
+
<span class="cline-any cline-yes">2x</span>
|
|
607
|
+
<span class="cline-any cline-yes">2x</span>
|
|
608
|
+
<span class="cline-any cline-yes">2x</span>
|
|
609
|
+
<span class="cline-any cline-yes">2x</span>
|
|
610
|
+
<span class="cline-any cline-yes">2x</span>
|
|
611
|
+
<span class="cline-any cline-yes">2x</span>
|
|
612
|
+
<span class="cline-any cline-no"> </span>
|
|
834
613
|
<span class="cline-any cline-no"> </span>
|
|
835
614
|
<span class="cline-any cline-no"> </span>
|
|
615
|
+
<span class="cline-any cline-yes">2x</span>
|
|
616
|
+
<span class="cline-any cline-yes">2x</span>
|
|
617
|
+
<span class="cline-any cline-yes">1x</span>
|
|
618
|
+
<span class="cline-any cline-yes">1x</span>
|
|
619
|
+
<span class="cline-any cline-yes">2x</span>
|
|
620
|
+
<span class="cline-any cline-yes">2x</span>
|
|
621
|
+
<span class="cline-any cline-yes">2x</span>
|
|
622
|
+
<span class="cline-any cline-yes">2x</span>
|
|
623
|
+
<span class="cline-any cline-yes">105x</span>
|
|
624
|
+
<span class="cline-any cline-yes">101x</span>
|
|
625
|
+
<span class="cline-any cline-yes">101x</span>
|
|
626
|
+
<span class="cline-any cline-yes">102x</span>
|
|
627
|
+
<span class="cline-any cline-yes">102x</span>
|
|
628
|
+
<span class="cline-any cline-yes">102x</span>
|
|
629
|
+
<span class="cline-any cline-yes">105x</span>
|
|
630
|
+
<span class="cline-any cline-yes">1x</span>
|
|
631
|
+
<span class="cline-any cline-yes">1x</span>
|
|
632
|
+
<span class="cline-any cline-yes">1x</span>
|
|
633
|
+
<span class="cline-any cline-yes">5x</span>
|
|
634
|
+
<span class="cline-any cline-yes">5x</span>
|
|
635
|
+
<span class="cline-any cline-yes">5x</span>
|
|
636
|
+
<span class="cline-any cline-yes">5x</span>
|
|
637
|
+
<span class="cline-any cline-yes">5x</span>
|
|
638
|
+
<span class="cline-any cline-yes">5x</span>
|
|
639
|
+
<span class="cline-any cline-yes">5x</span>
|
|
640
|
+
<span class="cline-any cline-yes">5x</span>
|
|
641
|
+
<span class="cline-any cline-yes">5x</span>
|
|
836
642
|
<span class="cline-any cline-no"> </span>
|
|
837
643
|
<span class="cline-any cline-no"> </span>
|
|
644
|
+
<span class="cline-any cline-yes">5x</span>
|
|
645
|
+
<span class="cline-any cline-yes">5x</span>
|
|
646
|
+
<span class="cline-any cline-yes">5x</span>
|
|
647
|
+
<span class="cline-any cline-yes">5x</span>
|
|
648
|
+
<span class="cline-any cline-yes">1x</span>
|
|
649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
838
650
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
839
651
|
import makeDebug from 'debug'
|
|
840
652
|
import common from 'feathers-hooks-common'
|
|
@@ -845,7 +657,6 @@ import {
|
|
|
845
657
|
hasServiceAbilities, hasResourceAbilities, getQueryForAbilities,
|
|
846
658
|
Roles, RoleNames, countSubjectsForResource
|
|
847
659
|
} from '../../common/permissions.js'
|
|
848
|
-
import { isTagEqual } from '../utils.js'
|
|
849
660
|
|
|
850
661
|
const { getItems, replaceItems } = common
|
|
851
662
|
const { Forbidden } = errors
|
|
@@ -862,7 +673,7 @@ export function createJWT (options = {}) {
|
|
|
862
673
|
const accessTokens = await Promise.all(items.map(item => hook.app.getService('authentication').createAccessToken(
|
|
863
674
|
// Provided function can be used to pick or omit properties in JWT payload
|
|
864
675
|
(typeof options.payload === 'function' ? options.payload(user) : {}),
|
|
865
|
-
// Provided function can be used for custom options
|
|
676
|
+
// Provided function can be used for custom options depending on the user,
|
|
866
677
|
// then we merge with default auth options for global properties like aud, iss, etc.
|
|
867
678
|
_.merge({}, defaults, (typeof options.jwt === 'function' ? options.jwt(user) : options)))
|
|
868
679
|
))
|
|
@@ -1023,14 +834,16 @@ export async function authorise (hook) {
|
|
|
1023
834
|
if (checkAuthorisation) {
|
|
1024
835
|
// Build ability for user
|
|
1025
836
|
const authorisationService = hook.app.getService('authorisations')
|
|
1026
|
-
// If no user we allow for a stateless token with permissions inside
|
|
1027
837
|
let subject = hook.params.user
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
//
|
|
1031
|
-
|
|
838
|
+
const payload = _.get(hook.params, 'authentication.payload')
|
|
839
|
+
if (payload) {
|
|
840
|
+
// If no user we allow for a stateless token with permissions inside, e.g.
|
|
841
|
+
// token targeting API gateway (sub = keyId) or app used through iframe (appId = keyId)
|
|
842
|
+
if (!subject <span class="branch-0 cbranch-no" title="branch not covered" >&& (payload.sub || payload.appId))</span> <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1032
843
|
<span class="cstat-no" title="statement not covered" > subject = Object.assign({ _id: (payload.sub || payload.appId) }, payload)</span>
|
|
1033
|
-
|
|
844
|
+
} else if (subject) { // Otherwise we allow to "extend" user abilities by providing additional information in the token
|
|
845
|
+
subject = Object.assign(subject, _.omit(payload, ['aud', 'iss', 'exp', 'sub', 'iat', 'jti', 'nbf']))
|
|
846
|
+
}
|
|
1034
847
|
}
|
|
1035
848
|
const abilities = await authorisationService.getAbilities(subject)
|
|
1036
849
|
hook.params.abilities = abilities
|
|
@@ -1048,33 +861,33 @@ export async function authorise (hook) {
|
|
|
1048
861
|
// simply check against the object we'd like to create
|
|
1049
862
|
// Support custom methods as create operation as they have similar signature
|
|
1050
863
|
const DEFAULT_METHODS = ['find', 'get', 'create', 'update', 'patch', 'remove']
|
|
1051
|
-
if ((operation === 'create')
|
|
864
|
+
if ((operation === 'create') <span class="branch-0 cbranch-no" title="branch not covered" >|| !DEFAULT_METHODS.includes(operation))</span> {
|
|
1052
865
|
const resource = hook.data
|
|
1053
866
|
debug('Target resource is ', resource)
|
|
1054
|
-
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) {
|
|
1055
|
-
debug('Resource access not granted')
|
|
1056
|
-
throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)
|
|
1057
|
-
}
|
|
1058
|
-
} else {
|
|
1059
|
-
// When we find/update/patch/remove multiple items this ensures that
|
|
1060
|
-
// only the ones authorised by constraints on the resources will be fetched
|
|
1061
|
-
// This avoid fetching all first then check it one by one
|
|
1062
|
-
const dbQuery = objectifyIDs(getQueryForAbilities(abilities, operation, resourceType))
|
|
1063
|
-
if (dbQuery) {
|
|
1064
|
-
hook.params.query = _.transform(hook.params.query, (result, value, key) => {
|
|
1065
|
-
|
|
1066
|
-
else result[key] = value
|
|
1067
|
-
}, {})
|
|
1068
|
-
_.merge(hook.params.query, dbQuery)
|
|
1069
|
-
} else {
|
|
1070
|
-
if (operation === 'find') { // You don't have right to read any items but you have access to the service so the result is empty
|
|
1071
|
-
hook.result = (!_.get(hook, 'params.paginate', true)
|
|
1072
|
-
|
|
867
|
+
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
868
|
+
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
870
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
871
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > // When we find/update/patch/remove multiple items this ensures that</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" > // only the ones authorised by constraints on the resources will be fetched</span>
|
|
874
|
+
<span class="cstat-no" title="statement not covered" > // This avoid fetching all first then check it one by one</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > const dbQuery = objectifyIDs(getQueryForAbilities(abilities, operation, resourceType))</span>
|
|
876
|
+
<span class="cstat-no" title="statement not covered" > if (dbQuery) {</span>
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > hook.params.query = _.transform(hook.params.query, (result, value, key) => {</span>
|
|
878
|
+
<span class="cstat-no" title="statement not covered" > if (key === '$or') result.$and = [{ $or: value }]</span>
|
|
879
|
+
<span class="cstat-no" title="statement not covered" > else result[key] = value</span>
|
|
880
|
+
<span class="cstat-no" title="statement not covered" > }, {})</span>
|
|
881
|
+
<span class="cstat-no" title="statement not covered" > _.merge(hook.params.query, dbQuery)</span>
|
|
882
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
883
|
+
<span class="cstat-no" title="statement not covered" > if (operation === 'find') { // You don't have right to read any items but you have access to the service so the result is empty</span>
|
|
884
|
+
<span class="cstat-no" title="statement not covered" > hook.result = (!_.get(hook, 'params.paginate', true) ? [] : { total: 0, skip: 0, data: [] })</span>
|
|
885
|
+
<span class="cstat-no" title="statement not covered" > } else { // You don't have the right to update/patch/remove any items so any tentative should throw</span>
|
|
1073
886
|
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
1074
887
|
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
1075
888
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
889
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
890
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1078
891
|
debug('Resource access granted')
|
|
1079
892
|
// Some specific services might not expose a get function, in this case we cannot check for authorisation
|
|
1080
893
|
// this has to be implemented by the service itself
|
|
@@ -1087,10 +900,10 @@ export async function authorise (hook) {
|
|
|
1087
900
|
const resource = await hook.service.get(hook.id, params)
|
|
1088
901
|
debug('Target resource is', resource)
|
|
1089
902
|
// Then check against the object we'd like to manage
|
|
1090
|
-
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) {
|
|
1091
|
-
debug('Resource access not granted')
|
|
1092
|
-
throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)
|
|
1093
|
-
}
|
|
903
|
+
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
904
|
+
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
905
|
+
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
906
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1094
907
|
// Avoid fetching again the object in this case
|
|
1095
908
|
if (operation === 'get') {
|
|
1096
909
|
hook.result = resource
|
|
@@ -1126,101 +939,6 @@ export function updateAbilities (options = {}) {
|
|
|
1126
939
|
}
|
|
1127
940
|
}
|
|
1128
941
|
|
|
1129
|
-
export function preventRemovingLastOwner (resourceScope) {
|
|
1130
|
-
return async function (hook) {
|
|
1131
|
-
// By pass check ?
|
|
1132
|
-
if (hook.params.force) <span class="branch-0 cbranch-no" title="branch not covered" >return hook</span>
|
|
1133
|
-
const params = hook.params
|
|
1134
|
-
const data = hook.data || {}
|
|
1135
|
-
const query = params.query || {}
|
|
1136
|
-
const scope = data.scope || query.scope
|
|
1137
|
-
const grantedPermissions = data.permissions || query.permissions
|
|
1138
|
-
const grantedRole = (grantedPermissions ? Roles[grantedPermissions] : undefined)
|
|
1139
|
-
const resource = hook.params.resource
|
|
1140
|
-
const subjects = hook.params.subjects
|
|
1141
|
-
const subjectService = hook.params.subjectsService
|
|
1142
|
-
// On create check if we try to downgrade permissions otherwise let pass through
|
|
1143
|
-
if (!_.isUndefined(grantedRole) && (grantedRole === Roles.owner)) return hook
|
|
1144
|
-
|
|
1145
|
-
if ((scope === resourceScope) && resource && resource._id) {
|
|
1146
|
-
// Count existing owners
|
|
1147
|
-
const owners = await countSubjectsForResource(subjectService, resourceScope, resource._id, Roles.owner)
|
|
1148
|
-
// Now count owners we change/remove permissions on
|
|
1149
|
-
const removedOwners = subjects.reduce((count, subject) => {
|
|
1150
|
-
const resources = _.get(subject, resourceScope, [])
|
|
1151
|
-
const ownedResource = _.find(resources, { _id: resource._id, permissions: RoleNames[Roles.owner] })
|
|
1152
|
-
return (ownedResource <span class="branch-0 cbranch-no" title="branch not covered" >? count + 1 </span>: count)
|
|
1153
|
-
}, 0)
|
|
1154
|
-
// If none remains stop
|
|
1155
|
-
if (removedOwners >= owners.total) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1156
|
-
<span class="cstat-no" title="statement not covered" > debug('Cannot remove the last owner of resource ', resource)</span>
|
|
1157
|
-
<span class="cstat-no" title="statement not covered" > const resourceName = resource.name ? resource.name : resource._id.toString()</span>
|
|
1158
|
-
<span class="cstat-no" title="statement not covered" > throw new Forbidden('You are not allowed to remove the last owner of resource ' + resourceName, {</span>
|
|
1159
|
-
<span class="cstat-no" title="statement not covered" > translation: {</span>
|
|
1160
|
-
<span class="cstat-no" title="statement not covered" > key: 'CANNOT_REMOVE_LAST_OWNER',</span>
|
|
1161
|
-
<span class="cstat-no" title="statement not covered" > params: { resource: resourceName }</span>
|
|
1162
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1163
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
1164
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1165
|
-
}
|
|
1166
|
-
return hook
|
|
1167
|
-
}
|
|
1168
|
-
}
|
|
1169
|
-
|
|
1170
|
-
export async function removeOrganisationGroupsAuthorisations (hook) {
|
|
1171
|
-
const app = hook.app
|
|
1172
|
-
const authorisationService = app.getService('authorisations')
|
|
1173
|
-
const org = hook.params.resource
|
|
1174
|
-
const user = hook.params.user
|
|
1175
|
-
// Unset membership for the all org groups
|
|
1176
|
-
const orgGroupService = app.getService('groups', org)
|
|
1177
|
-
const groups = await orgGroupService.find({ paginate: false })
|
|
1178
|
-
await Promise.all(groups.map(group => {
|
|
1179
|
-
// Unset membership on group for the all org users
|
|
1180
|
-
return authorisationService.remove(group._id.toString(), {
|
|
1181
|
-
query: {
|
|
1182
|
-
scope: 'groups'
|
|
1183
|
-
},
|
|
1184
|
-
user,
|
|
1185
|
-
force: hook.params.force,
|
|
1186
|
-
// Because we already have resource set it as objects to avoid populating
|
|
1187
|
-
// Moreover used as an after hook the resource might not already exist anymore
|
|
1188
|
-
subjects: hook.params.subjects,
|
|
1189
|
-
subjectsService: hook.params.subjectsService,
|
|
1190
|
-
resource: group,
|
|
1191
|
-
resourcesService: orgGroupService
|
|
1192
|
-
})
|
|
1193
|
-
}))
|
|
1194
|
-
debug('Authorisations unset on groups for organisation ' + org._id)
|
|
1195
|
-
return hook
|
|
1196
|
-
}
|
|
1197
|
-
|
|
1198
|
-
export <span class="fstat-no" title="function not covered" >async function removeOrganisationTagsAuthorisations (hook) {</span>
|
|
1199
|
-
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
1200
|
-
<span class="cstat-no" title="statement not covered" > const org = hook.params.resource</span>
|
|
1201
|
-
<span class="cstat-no" title="statement not covered" > const subjectService = hook.params.subjectsService</span>
|
|
1202
|
-
<span class="cstat-no" title="statement not covered" > const orgTagsService = app.getService('tags', org)</span>
|
|
1203
|
-
<span class="cstat-no" title="statement not covered" > const subjects = hook.params.subjects || []</span>
|
|
1204
|
-
<span class="cstat-no" title="statement not covered" > if (subjects.length === 0) return hook</span>
|
|
1205
|
-
<span class="cstat-no" title="statement not covered" > // Retrieve org tags</span>
|
|
1206
|
-
<span class="cstat-no" title="statement not covered" > const orgTags = await orgTagsService.find({ paginate: false })</span>
|
|
1207
|
-
<span class="cstat-no" title="statement not covered" > const promises = []</span>
|
|
1208
|
-
<span class="cstat-no" title="statement not covered" > subjects.forEach(subject => {</span>
|
|
1209
|
-
<span class="cstat-no" title="statement not covered" > const tags = subject.tags || []</span>
|
|
1210
|
-
<span class="cstat-no" title="statement not covered" > // Find tags from org</span>
|
|
1211
|
-
<span class="cstat-no" title="statement not covered" > const fromOrg = _.intersectionWith(tags, orgTags, isTagEqual)</span>
|
|
1212
|
-
<span class="cstat-no" title="statement not covered" > // Clear removed tags</span>
|
|
1213
|
-
<span class="cstat-no" title="statement not covered" > const notFromOrg = _.differenceWith(tags, orgTags, isTagEqual)</span>
|
|
1214
|
-
<span class="cstat-no" title="statement not covered" > // Update subject if required</span>
|
|
1215
|
-
<span class="cstat-no" title="statement not covered" > if (fromOrg.length > 0) {</span>
|
|
1216
|
-
<span class="cstat-no" title="statement not covered" > promises.push(subjectService.patch(subject._id.toString(), { tags: notFromOrg }))</span>
|
|
1217
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1218
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
1219
|
-
<span class="cstat-no" title="statement not covered" > // Perform subject updates in parallel</span>
|
|
1220
|
-
<span class="cstat-no" title="statement not covered" > await Promise.all(promises)</span>
|
|
1221
|
-
<span class="cstat-no" title="statement not covered" > debug(`Tags unset on ${promises.length} subjects for organisation ` + org._id)</span>
|
|
1222
|
-
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
1223
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1224
942
|
</pre></td></tr></table></pre>
|
|
1225
943
|
|
|
1226
944
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -1228,7 +946,7 @@ export <span class="fstat-no" title="function not covered" >async function remov
|
|
|
1228
946
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1229
947
|
Code coverage generated by
|
|
1230
948
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1231
|
-
at
|
|
949
|
+
at 2025-05-21T12:01:19.833Z
|
|
1232
950
|
</div>
|
|
1233
951
|
<script src="../../../prettify.js"></script>
|
|
1234
952
|
<script>
|