@kalisio/kdk 2.0.0 → 2.1.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/.codeclimate.yml +0 -1
- package/.travis.test.sh +3 -0
- package/core/api/application.js +591 -0
- package/core/api/authentication.js +203 -0
- package/core/api/db.js +226 -0
- package/core/api/hooks/hooks.authentication.js +74 -0
- package/core/api/hooks/hooks.authorisations.js +376 -0
- package/core/api/hooks/hooks.groups.js +48 -0
- package/core/api/hooks/hooks.logger.js +26 -0
- package/core/api/hooks/hooks.model.js +290 -0
- package/core/api/hooks/hooks.organisations.js +156 -0
- package/core/api/hooks/hooks.push.js +54 -0
- package/core/api/hooks/hooks.query.js +246 -0
- package/core/api/hooks/hooks.schemas.js +73 -0
- package/core/api/hooks/hooks.service.js +78 -0
- package/core/api/hooks/hooks.storage.js +36 -0
- package/core/api/hooks/hooks.users.js +261 -0
- package/core/api/hooks/index.js +12 -0
- package/core/api/index.js +21 -0
- package/core/api/marshall.js +90 -0
- package/core/api/models/groups.model.mongodb.js +8 -0
- package/core/api/models/organisations.model.mongodb.js +3 -0
- package/core/api/models/tags.model.mongodb.js +10 -0
- package/core/api/models/users.model.mongodb.js +10 -0
- package/core/api/services/account/account.hooks.js +37 -0
- package/core/api/services/account/account.service.js +120 -0
- package/core/api/services/authorisations/authorisations.hooks.js +33 -0
- package/core/api/services/authorisations/authorisations.service.js +139 -0
- package/core/api/services/databases/databases.hooks.js +36 -0
- package/core/api/services/databases/databases.service.js +5 -0
- package/core/api/services/groups/groups.hooks.js +31 -0
- package/core/api/services/index.js +126 -0
- package/core/api/services/mailer/mailer.hooks.js +35 -0
- package/core/api/services/mailer/mailer.service.js +11 -0
- package/core/api/services/organisations/organisations.hooks.js +31 -0
- package/core/api/services/organisations/organisations.service.js +86 -0
- package/core/api/services/push/push.hooks.js +35 -0
- package/core/api/services/push/push.service.js +12 -0
- package/core/api/services/storage/storage.hooks.js +35 -0
- package/core/api/services/storage/storage.service.js +29 -0
- package/core/api/services/tags/tags.hooks.js +31 -0
- package/core/api/services/users/users.hooks.js +75 -0
- package/core/api/utils.js +11 -0
- package/core/client/api.js +293 -0
- package/core/client/capabilities.js +22 -0
- package/core/client/components/KAction.vue +393 -0
- package/core/client/components/KAvatar.vue +129 -0
- package/core/client/components/KBlock.vue +67 -0
- package/core/client/components/KChip.vue +68 -0
- package/core/client/components/KChipsPane.vue +103 -0
- package/core/client/components/KContent.vue +105 -0
- package/core/client/components/KDialog.vue +160 -0
- package/core/client/components/KExpandable.vue +49 -0
- package/core/client/components/KLogo.vue +32 -0
- package/core/client/components/KModal.vue +173 -0
- package/core/client/components/KPanel.vue +64 -0
- package/core/client/components/KScrollArea.vue +88 -0
- package/core/client/components/KSponsor.vue +40 -0
- package/core/client/components/KStamp.vue +65 -0
- package/core/client/components/KStore.vue +102 -0
- package/core/client/components/KTextArea.vue +143 -0
- package/core/client/components/KTree.vue +31 -0
- package/core/client/components/KVersion.vue +19 -0
- package/core/client/components/account/KAccount.vue +68 -0
- package/core/client/components/account/KDeleteAccountManager.vue +62 -0
- package/core/client/components/account/KEmailManager.vue +128 -0
- package/core/client/components/account/KPasswordManager.vue +90 -0
- package/core/client/components/account/KProfile.vue +109 -0
- package/core/client/components/account/KResetPassword.vue +120 -0
- package/core/client/components/account/KSendResetPassword.vue +90 -0
- package/core/client/components/account/KSubscription.vue +71 -0
- package/core/client/components/account/KSubscriptionsManager.vue +46 -0
- package/core/client/components/account/KVerifyEmailManager.vue +105 -0
- package/core/client/components/account/index.js +7 -0
- package/core/client/components/app/KAbout.vue +98 -0
- package/core/client/components/app/KHome.vue +12 -0
- package/core/client/components/app/KPlatform.vue +55 -0
- package/core/client/components/app/KSettings.vue +43 -0
- package/core/client/components/app/KTerms.vue +41 -0
- package/core/client/components/app/KTour.vue +448 -0
- package/core/client/components/app/KWelcome.vue +133 -0
- package/core/client/components/app/index.js +11 -0
- package/core/client/components/chart/KChart.vue +197 -0
- package/core/client/components/chart/KDataTable.vue +183 -0
- package/core/client/components/chart/KStatisticsChart.vue +94 -0
- package/core/client/components/chart/KTimeSeriesChart.vue +431 -0
- package/core/client/components/chart/index.js +9 -0
- package/core/client/components/collection/KBoard.vue +65 -0
- package/core/client/components/collection/KCard.vue +196 -0
- package/core/client/components/collection/KCardSection.vue +52 -0
- package/core/client/components/collection/KColumn.vue +225 -0
- package/core/client/components/collection/KFilter.vue +158 -0
- package/core/client/components/collection/KGrid.vue +121 -0
- package/core/client/components/collection/KHistory.vue +112 -0
- package/core/client/components/collection/KHistoryEntry.vue +111 -0
- package/core/client/components/collection/KItem.vue +128 -0
- package/core/client/components/collection/KList.vue +135 -0
- package/core/client/components/collection/KSorter.vue +46 -0
- package/core/client/components/collection/KTable.vue +238 -0
- package/core/client/components/collection/index.js +19 -0
- package/core/client/components/editor/KEditor.vue +52 -0
- package/core/client/components/editor/KModalEditor.vue +96 -0
- package/core/client/components/editor/index.js +7 -0
- package/core/client/components/form/KChipsField.vue +162 -0
- package/core/client/components/form/KColorField.vue +69 -0
- package/core/client/components/form/KColorScaleField.vue +86 -0
- package/core/client/components/form/KDateTimeRangeField.vue +65 -0
- package/core/client/components/form/KDatetimeField.vue +70 -0
- package/core/client/components/form/KEmailField.vue +33 -0
- package/core/client/components/form/KFileField.vue +161 -0
- package/core/client/components/form/KForm.vue +247 -0
- package/core/client/components/form/KIconField.vue +101 -0
- package/core/client/components/form/KItemField.vue +123 -0
- package/core/client/components/form/KNumberField.vue +33 -0
- package/core/client/components/form/KOptionsField.vue +63 -0
- package/core/client/components/form/KPasswordField.vue +57 -0
- package/core/client/components/form/KPhoneField.vue +32 -0
- package/core/client/components/form/KPropertyItemField.vue +119 -0
- package/core/client/components/form/KRoleField.vue +60 -0
- package/core/client/components/form/KSelectField.vue +143 -0
- package/core/client/components/form/KTextField.vue +48 -0
- package/core/client/components/form/KTextareaField.vue +88 -0
- package/core/client/components/form/KToggleField.vue +46 -0
- package/core/client/components/form/KTokenField.vue +80 -0
- package/core/client/components/form/KUnitField.vue +57 -0
- package/core/client/components/form/KUrlField.vue +32 -0
- package/core/client/components/form/KView.vue +118 -0
- package/core/client/components/form/index.js +7 -0
- package/core/client/components/index.js +48 -0
- package/core/client/components/input/KColorChooser.vue +63 -0
- package/core/client/components/input/KIconChooser.vue +308 -0
- package/core/client/components/input/KOptionsChooser.vue +122 -0
- package/core/client/components/input/KPalette.vue +40 -0
- package/core/client/components/input/index.js +11 -0
- package/core/client/components/layout/KFab.vue +113 -0
- package/core/client/components/layout/KLayout.vue +64 -0
- package/core/client/components/layout/KOpener.vue +140 -0
- package/core/client/components/layout/KPage.vue +320 -0
- package/core/client/components/layout/KPageSticky.vue +53 -0
- package/core/client/components/layout/KWindow.vue +443 -0
- package/core/client/components/layout/index.js +13 -0
- package/core/client/components/media/KColorScale.vue +254 -0
- package/core/client/components/media/KImageViewer.vue +44 -0
- package/core/client/components/media/KMarkdownViewer.vue +55 -0
- package/core/client/components/media/KMediaBrowser.vue +340 -0
- package/core/client/components/media/KShape.vue +120 -0
- package/core/client/components/media/index.js +13 -0
- package/core/client/components/menu/KMenu.vue +147 -0
- package/core/client/components/menu/KRadialFab.vue +122 -0
- package/core/client/components/menu/KRadialFabItem.vue +73 -0
- package/core/client/components/menu/index.js +9 -0
- package/core/client/components/screen/KEndpointScreen.vue +80 -0
- package/core/client/components/screen/KErrorScreen.vue +24 -0
- package/core/client/components/screen/KLoginScreen.vue +79 -0
- package/core/client/components/screen/KLogoutScreen.vue +20 -0
- package/core/client/components/screen/KRegisterScreen.vue +114 -0
- package/core/client/components/screen/KScreen.vue +106 -0
- package/core/client/components/screen/KScreenFooter.vue +32 -0
- package/core/client/components/screen/KScreenHeader.vue +17 -0
- package/core/client/components/screen/index.js +5 -0
- package/core/client/components/team/KAddMember.vue +375 -0
- package/core/client/components/team/KAddTag.vue +121 -0
- package/core/client/components/team/KChangeRole.vue +118 -0
- package/core/client/components/team/KGroupCard.vue +110 -0
- package/core/client/components/team/KGroupsActivity.vue +66 -0
- package/core/client/components/team/KJoinGroup.vue +132 -0
- package/core/client/components/team/KMemberCard.vue +328 -0
- package/core/client/components/team/KMemberFilter.vue +49 -0
- package/core/client/components/team/KMembersActivity.vue +126 -0
- package/core/client/components/team/KOrganisationsActivity.vue +53 -0
- package/core/client/components/team/KTagCard.vue +72 -0
- package/core/client/components/team/KTagsActivity.vue +61 -0
- package/core/client/components/team/index.js +9 -0
- package/core/client/components/time/KAbsoluteTimeRange.vue +183 -0
- package/core/client/components/time/KDate.vue +75 -0
- package/core/client/components/time/KDateTime.vue +172 -0
- package/core/client/components/time/KDateTimeRange.vue +118 -0
- package/core/client/components/time/KRelativeTimeRanges.vue +193 -0
- package/core/client/components/time/KTime.vue +74 -0
- package/core/client/components/time/index.js +7 -0
- package/core/client/components/viewer/KModalViewer.vue +47 -0
- package/core/client/components/viewer/KViewer.vue +30 -0
- package/core/client/composables/activity.js +67 -0
- package/core/client/composables/collection.js +181 -0
- package/core/client/composables/index.js +8 -0
- package/core/client/composables/pwa.js +71 -0
- package/core/client/composables/schema.js +64 -0
- package/core/client/composables/selection.js +88 -0
- package/core/client/composables/session.js +150 -0
- package/core/client/composables/store.js +49 -0
- package/core/client/composables/version.js +47 -0
- package/core/client/events.js +3 -0
- package/core/client/filter.js +60 -0
- package/core/client/guards.js +101 -0
- package/core/client/hooks/hooks.events.js +7 -0
- package/core/client/hooks/hooks.logger.js +24 -0
- package/core/client/hooks/hooks.users.js +22 -0
- package/core/client/hooks/index.js +3 -0
- package/core/client/i18n/core_en.json +840 -0
- package/core/client/i18n/core_fr.json +838 -0
- package/core/client/i18n.js +88 -0
- package/core/client/index.js +84 -0
- package/core/client/layout.js +323 -0
- package/core/client/local-storage.js +28 -0
- package/core/client/mixins/index.js +12 -0
- package/core/client/mixins/mixin.account.js +61 -0
- package/core/client/mixins/mixin.base-activity.js +232 -0
- package/core/client/mixins/mixin.base-collection.js +162 -0
- package/core/client/mixins/mixin.base-context.js +54 -0
- package/core/client/mixins/mixin.base-editor.js +194 -0
- package/core/client/mixins/mixin.base-field.js +105 -0
- package/core/client/mixins/mixin.base-item.js +166 -0
- package/core/client/mixins/mixin.base-modal.js +36 -0
- package/core/client/mixins/mixin.base-viewer.js +43 -0
- package/core/client/mixins/mixin.object-proxy.js +46 -0
- package/core/client/mixins/mixin.schema-proxy.js +97 -0
- package/core/client/mixins/mixin.service.js +22 -0
- package/core/client/reader.js +65 -0
- package/core/client/readers/index.js +3 -0
- package/core/client/readers/reader.blob.js +39 -0
- package/core/client/readers/reader.csv.js +36 -0
- package/core/client/readers/reader.json.js +34 -0
- package/core/client/search.js +47 -0
- package/core/client/services/index.js +47 -0
- package/core/client/services/local-settings.service.js +67 -0
- package/core/client/sorter.js +31 -0
- package/core/client/storage.js +102 -0
- package/core/client/store.js +39 -0
- package/core/client/theme.js +40 -0
- package/core/client/time.js +167 -0
- package/core/client/units.js +218 -0
- package/core/client/utils/index.js +203 -0
- package/core/client/utils/utils.account.js +47 -0
- package/core/client/utils/utils.colors.js +36 -0
- package/core/client/utils/utils.content.js +185 -0
- package/core/client/utils/utils.locale.js +28 -0
- package/core/client/utils/utils.platform.js +11 -0
- package/core/client/utils/utils.push.js +53 -0
- package/core/client/utils/utils.pwa.js +63 -0
- package/core/client/utils/utils.session.js +89 -0
- package/core/common/errors.js +1 -0
- package/core/common/index.js +10 -0
- package/core/common/permissions.js +318 -0
- package/core/common/schema.js +35 -0
- package/core/common/schemas/groups.create.json +28 -0
- package/core/common/schemas/groups.update.json +28 -0
- package/core/common/schemas/organisations.create.json +28 -0
- package/core/common/schemas/organisations.update.json +49 -0
- package/core/common/schemas/settings.update.json +234 -0
- package/core/common/schemas/tags.create.json +35 -0
- package/core/common/schemas/tags.update.json +35 -0
- package/core/common/schemas/users.update-profile.json +33 -0
- package/core/common/utils.js +45 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/core/api/application.js.html +1849 -0
- package/coverage/core/api/authentication.js.html +694 -0
- package/coverage/core/api/db.js.html +763 -0
- package/coverage/core/api/hooks/hooks.account.js.html +169 -0
- package/coverage/core/api/hooks/hooks.authentication.js.html +274 -0
- package/coverage/core/api/hooks/hooks.authorisations.js.html +1213 -0
- package/coverage/core/api/hooks/hooks.groups.js.html +229 -0
- package/coverage/core/api/hooks/hooks.logger.js.html +163 -0
- package/coverage/core/api/hooks/hooks.model.js.html +994 -0
- package/coverage/core/api/hooks/hooks.organisations.js.html +553 -0
- package/coverage/core/api/hooks/hooks.push.js.html +232 -0
- package/coverage/core/api/hooks/hooks.query.js.html +838 -0
- package/coverage/core/api/hooks/hooks.schemas.js.html +304 -0
- package/coverage/core/api/hooks/hooks.service.js.html +319 -0
- package/coverage/core/api/hooks/hooks.storage.js.html +193 -0
- package/coverage/core/api/hooks/hooks.tags.js.html +850 -0
- package/coverage/core/api/hooks/hooks.users.js.html +826 -0
- package/coverage/core/api/hooks/index.html +296 -0
- package/coverage/core/api/hooks/index.js.html +121 -0
- package/coverage/core/api/index.html +191 -0
- package/coverage/core/api/index.js.html +148 -0
- package/coverage/core/api/marshall.js.html +355 -0
- package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/core/api/models/index.html +161 -0
- package/coverage/core/api/models/organisations.model.mongodb.js.html +94 -0
- package/coverage/core/api/models/tags.model.mongodb.js.html +115 -0
- package/coverage/core/api/models/users.model.mongodb.js.html +115 -0
- package/coverage/core/api/services/account/account.hooks.js.html +196 -0
- package/coverage/core/api/services/account/account.service.js.html +445 -0
- package/coverage/core/api/services/account/index.html +131 -0
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +502 -0
- package/coverage/core/api/services/authorisations/index.html +131 -0
- package/coverage/core/api/services/databases/databases.hooks.js.html +193 -0
- package/coverage/core/api/services/databases/databases.service.js.html +100 -0
- package/coverage/core/api/services/databases/index.html +131 -0
- package/coverage/core/api/services/groups/groups.hooks.js.html +178 -0
- package/coverage/core/api/services/groups/index.html +116 -0
- package/coverage/core/api/services/index.html +116 -0
- package/coverage/core/api/services/index.js.html +475 -0
- package/coverage/core/api/services/mailer/index.html +131 -0
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +190 -0
- package/coverage/core/api/services/mailer/mailer.service.js.html +118 -0
- package/coverage/core/api/services/organisations/index.html +131 -0
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +178 -0
- package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
- package/coverage/core/api/services/push/index.html +131 -0
- package/coverage/core/api/services/push/push.hooks.js.html +193 -0
- package/coverage/core/api/services/push/push.service.js.html +121 -0
- package/coverage/core/api/services/storage/index.html +131 -0
- package/coverage/core/api/services/storage/storage.hooks.js.html +190 -0
- package/coverage/core/api/services/storage/storage.service.js.html +172 -0
- package/coverage/core/api/services/tags/index.html +116 -0
- package/coverage/core/api/services/tags/tags.hooks.js.html +178 -0
- package/coverage/core/api/services/users/index.html +116 -0
- package/coverage/core/api/services/users/users.hooks.js.html +313 -0
- package/coverage/core/api/utils.js.html +118 -0
- package/coverage/core/common/errors.js.html +88 -0
- package/coverage/core/common/index.html +176 -0
- package/coverage/core/common/index.js.html +115 -0
- package/coverage/core/common/permissions.js.html +1039 -0
- package/coverage/core/common/schema.js.html +190 -0
- package/coverage/core/common/utils.js.html +220 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/core/api/application.js.html +1849 -0
- package/coverage/lcov-report/core/api/authentication.js.html +694 -0
- package/coverage/lcov-report/core/api/db.js.html +763 -0
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +169 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +274 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1213 -0
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +229 -0
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +163 -0
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +994 -0
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +553 -0
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +232 -0
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +838 -0
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +304 -0
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +319 -0
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +193 -0
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +850 -0
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +826 -0
- package/coverage/lcov-report/core/api/hooks/index.html +296 -0
- package/coverage/lcov-report/core/api/hooks/index.js.html +121 -0
- package/coverage/lcov-report/core/api/index.html +191 -0
- package/coverage/lcov-report/core/api/index.js.html +148 -0
- package/coverage/lcov-report/core/api/marshall.js.html +355 -0
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/lcov-report/core/api/models/index.html +161 -0
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +94 -0
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +115 -0
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +115 -0
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +196 -0
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +445 -0
- package/coverage/lcov-report/core/api/services/account/index.html +131 -0
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +502 -0
- package/coverage/lcov-report/core/api/services/authorisations/index.html +131 -0
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +193 -0
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +100 -0
- package/coverage/lcov-report/core/api/services/databases/index.html +131 -0
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/groups/index.html +116 -0
- package/coverage/lcov-report/core/api/services/index.html +116 -0
- package/coverage/lcov-report/core/api/services/index.js.html +475 -0
- package/coverage/lcov-report/core/api/services/mailer/index.html +131 -0
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +190 -0
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +118 -0
- package/coverage/lcov-report/core/api/services/organisations/index.html +131 -0
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
- package/coverage/lcov-report/core/api/services/push/index.html +131 -0
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +193 -0
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +121 -0
- package/coverage/lcov-report/core/api/services/storage/index.html +131 -0
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +190 -0
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +172 -0
- package/coverage/lcov-report/core/api/services/tags/index.html +116 -0
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/users/index.html +116 -0
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +313 -0
- package/coverage/lcov-report/core/api/utils.js.html +118 -0
- package/coverage/lcov-report/core/common/errors.js.html +88 -0
- package/coverage/lcov-report/core/common/index.html +176 -0
- package/coverage/lcov-report/core/common/index.js.html +115 -0
- package/coverage/lcov-report/core/common/permissions.js.html +1039 -0
- package/coverage/lcov-report/core/common/schema.js.html +190 -0
- package/coverage/lcov-report/core/common/utils.js.html +220 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +476 -0
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +340 -0
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +337 -0
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1168 -0
- package/coverage/lcov-report/map/api/hooks/index.html +161 -0
- package/coverage/lcov-report/map/api/hooks/index.js.html +94 -0
- package/coverage/lcov-report/map/api/index.html +131 -0
- package/coverage/lcov-report/map/api/index.js.html +139 -0
- package/coverage/lcov-report/map/api/marshall.js.html +178 -0
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +106 -0
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +127 -0
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +196 -0
- package/coverage/lcov-report/map/api/models/index.html +146 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +274 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +610 -0
- package/coverage/lcov-report/map/api/services/alerts/index.html +131 -0
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +313 -0
- package/coverage/lcov-report/map/api/services/catalog/index.html +116 -0
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1510 -0
- package/coverage/lcov-report/map/api/services/daptiles/index.html +116 -0
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +205 -0
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +241 -0
- package/coverage/lcov-report/map/api/services/features/index.html +131 -0
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +322 -0
- package/coverage/lcov-report/map/api/services/geocoder/index.html +131 -0
- package/coverage/lcov-report/map/api/services/index.html +116 -0
- package/coverage/lcov-report/map/api/services/index.js.html +769 -0
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +466 -0
- package/coverage/lcov-report/map/common/errors.js.html +94 -0
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +535 -0
- package/coverage/lcov-report/map/common/grid.js.html +1612 -0
- package/coverage/lcov-report/map/common/index.html +371 -0
- package/coverage/lcov-report/map/common/index.js.html +172 -0
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +556 -0
- package/coverage/lcov-report/map/common/moment-utils.js.html +157 -0
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +868 -0
- package/coverage/lcov-report/map/common/opendap-utils.js.html +826 -0
- package/coverage/lcov-report/map/common/permissions.js.html +118 -0
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +418 -0
- package/coverage/lcov-report/map/common/tms-utils.js.html +274 -0
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +364 -0
- package/coverage/lcov-report/map/common/wcs-utils.js.html +586 -0
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1033 -0
- package/coverage/lcov-report/map/common/wfs-utils.js.html +574 -0
- package/coverage/lcov-report/map/common/wms-utils.js.html +436 -0
- package/coverage/lcov-report/map/common/wmts-utils.js.html +547 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +10742 -0
- package/coverage/map/api/hooks/hooks.catalog.js.html +340 -0
- package/coverage/map/api/hooks/hooks.features.js.html +337 -0
- package/coverage/map/api/hooks/hooks.query.js.html +1168 -0
- package/coverage/map/api/hooks/index.html +161 -0
- package/coverage/map/api/hooks/index.js.html +94 -0
- package/coverage/map/api/index.html +131 -0
- package/coverage/map/api/index.js.html +139 -0
- package/coverage/map/api/marshall.js.html +178 -0
- package/coverage/map/api/models/alerts.model.mongodb.js.html +106 -0
- package/coverage/map/api/models/catalog.model.mongodb.js.html +127 -0
- package/coverage/map/api/models/features.model.mongodb.js.html +196 -0
- package/coverage/map/api/models/index.html +146 -0
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +274 -0
- package/coverage/map/api/services/alerts/alerts.service.js.html +610 -0
- package/coverage/map/api/services/alerts/index.html +131 -0
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +313 -0
- package/coverage/map/api/services/catalog/index.html +116 -0
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1510 -0
- package/coverage/map/api/services/daptiles/index.html +116 -0
- package/coverage/map/api/services/features/features.hooks.js.html +205 -0
- package/coverage/map/api/services/features/features.service.js.html +241 -0
- package/coverage/map/api/services/features/index.html +131 -0
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +322 -0
- package/coverage/map/api/services/geocoder/index.html +131 -0
- package/coverage/map/api/services/index.html +116 -0
- package/coverage/map/api/services/index.js.html +769 -0
- package/coverage/map/common/dynamic-grid-source.js.html +466 -0
- package/coverage/map/common/errors.js.html +94 -0
- package/coverage/map/common/geotiff-grid-source.js.html +535 -0
- package/coverage/map/common/grid.js.html +1612 -0
- package/coverage/map/common/index.html +371 -0
- package/coverage/map/common/index.js.html +172 -0
- package/coverage/map/common/meteo-model-grid-source.js.html +556 -0
- package/coverage/map/common/moment-utils.js.html +157 -0
- package/coverage/map/common/opendap-grid-source.js.html +868 -0
- package/coverage/map/common/opendap-utils.js.html +826 -0
- package/coverage/map/common/permissions.js.html +118 -0
- package/coverage/map/common/time-based-grid-source.js.html +418 -0
- package/coverage/map/common/tms-utils.js.html +274 -0
- package/coverage/map/common/wcs-grid-source.js.html +364 -0
- package/coverage/map/common/wcs-utils.js.html +586 -0
- package/coverage/map/common/weacast-grid-source.js.html +1033 -0
- package/coverage/map/common/wfs-utils.js.html +574 -0
- package/coverage/map/common/wms-utils.js.html +436 -0
- package/coverage/map/common/wmts-utils.js.html +547 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/tmp/coverage-59096-1692631696256-0.json +1 -0
- package/coverage/tmp/coverage-59108-1692631696233-0.json +1 -0
- package/coverage/tmp/coverage-59119-1692631696222-0.json +1 -0
- package/coverage/tmp/coverage-59131-1692631696200-0.json +1 -0
- package/coverage/tmp/coverage-59138-1692631696175-0.json +1 -0
- package/extras/css/core.variables.scss +5 -1
- package/extras/tours/core/account-profile.js +14 -31
- package/extras/tours/core/account.js +143 -0
- package/extras/tours/core/add-member.js +7 -6
- package/extras/tours/core/add-tag.js +13 -0
- package/extras/tours/core/create-tag.js +26 -0
- package/extras/tours/core/edit-member-role.js +13 -0
- package/extras/tours/core/join-group.js +0 -12
- package/extras/tours/core/login.js +0 -7
- package/extras/tours/core/members.js +13 -26
- package/extras/tours/core/send-reset-password.js +1 -1
- package/extras/tours/core/tags.js +17 -4
- package/extras/tours/map/navigation-bar.js +1 -1
- package/extras/tours/map/side-nav.js +3 -2
- package/map/api/config/categories.cjs +42 -0
- package/map/api/config/layers.cjs +43 -0
- package/map/api/config/sublegends.cjs +42 -0
- package/map/api/hooks/hooks.catalog.js +85 -0
- package/map/api/hooks/hooks.features.js +84 -0
- package/map/api/hooks/hooks.query.js +361 -0
- package/map/api/hooks/index.js +3 -0
- package/map/api/index.js +18 -0
- package/map/api/marshall.js +31 -0
- package/map/api/models/alerts.model.mongodb.js +7 -0
- package/map/api/models/catalog.model.mongodb.js +14 -0
- package/map/api/models/features.model.mongodb.js +37 -0
- package/map/api/services/alerts/alerts.hooks.js +63 -0
- package/map/api/services/alerts/alerts.service.js +175 -0
- package/map/api/services/catalog/catalog.hooks.js +76 -0
- package/map/api/services/daptiles/daptiles.service.js +475 -0
- package/map/api/services/features/features.hooks.js +40 -0
- package/map/api/services/features/features.service.js +52 -0
- package/map/api/services/geocoder/geocoder.hooks.js +31 -0
- package/map/api/services/geocoder/geocoder.service.js +79 -0
- package/map/api/services/index.js +228 -0
- package/map/client/canvas-draw-context.js +16 -0
- package/map/client/cesium/utils.js +132 -0
- package/map/client/components/KCaptureToolbar.vue +155 -0
- package/map/client/components/KColorLegend.vue +349 -0
- package/map/client/components/KCompass.vue +143 -0
- package/map/client/components/KEditLayerData.vue +85 -0
- package/map/client/components/KFeatureActionButton.vue +119 -0
- package/map/client/components/KFeatureEditor.vue +92 -0
- package/map/client/components/KFeaturesChart.vue +285 -0
- package/map/client/components/KFeaturesFilter.vue +259 -0
- package/map/client/components/KFeaturesTable.vue +99 -0
- package/map/client/components/KLayerEditionToolbar.vue +54 -0
- package/map/client/components/KLayerEditor.vue +48 -0
- package/map/client/components/KLayerStyleEditor.vue +118 -0
- package/map/client/components/KLayerStyleForm.vue +906 -0
- package/map/client/components/KLevelSlider.vue +100 -0
- package/map/client/components/KMeasureTool.vue +568 -0
- package/map/client/components/KPositionIndicator.vue +90 -0
- package/map/client/components/KTimeline.vue +293 -0
- package/map/client/components/KTimezoneMap.vue +158 -0
- package/map/client/components/KUrlLegend.vue +122 -0
- package/map/client/components/catalog/KAddLayer.vue +66 -0
- package/map/client/components/catalog/KBaseLayersSelector.vue +114 -0
- package/map/client/components/catalog/KConnectLayer.vue +323 -0
- package/map/client/components/catalog/KCreateLayer.vue +184 -0
- package/map/client/components/catalog/KCreateView.vue +108 -0
- package/map/client/components/catalog/KFilteredLayerItem.vue +53 -0
- package/map/client/components/catalog/KImportLayer.vue +168 -0
- package/map/client/components/catalog/KLayerCategories.vue +274 -0
- package/map/client/components/catalog/KLayerItem.vue +71 -0
- package/map/client/components/catalog/KLayersPanel.vue +137 -0
- package/map/client/components/catalog/KLayersSelector.vue +73 -0
- package/map/client/components/catalog/KViewSelector.vue +46 -0
- package/map/client/components/catalog/KViewsPanel.vue +118 -0
- package/map/client/components/catalog/KWeatherLayersSelector.vue +129 -0
- package/map/client/components/form/KDirectionField.vue +113 -0
- package/map/client/components/form/KLayerCategoryField.vue +46 -0
- package/map/client/components/form/KLocationField.vue +189 -0
- package/map/client/components/form/KOwsLayerField.vue +130 -0
- package/map/client/components/form/KOwsServiceField.vue +238 -0
- package/map/client/components/form/KTimezoneField.vue +142 -0
- package/map/client/components/index.js +1 -0
- package/map/client/components/legend/KColorScaleLegend.vue +31 -0
- package/map/client/components/legend/KImageLegend.vue +52 -0
- package/map/client/components/legend/KLegend.vue +191 -0
- package/map/client/components/legend/KLegendRenderer.vue +20 -0
- package/map/client/components/legend/KSymbolsLegend.vue +101 -0
- package/map/client/components/location/KGeocodersFilter.vue +44 -0
- package/map/client/components/location/KLocationCardSection.vue +61 -0
- package/map/client/components/location/KLocationMap.vue +280 -0
- package/map/client/components/location/KLocationSearch.vue +144 -0
- package/map/client/components/location/KLocationTip.vue +29 -0
- package/map/client/components/tools/KGeolocateTool.vue +46 -0
- package/map/client/components/tools/KSearchTool.vue +93 -0
- package/map/client/components/widget/KElevationProfile.vue +454 -0
- package/map/client/components/widget/KInformationBox.vue +145 -0
- package/map/client/components/widget/KMapillaryViewer.vue +178 -0
- package/map/client/components/widget/KStackableTimeSeries.vue +214 -0
- package/map/client/components/widget/KTimeSeries.vue +500 -0
- package/map/client/composables/activity.js +88 -0
- package/map/client/composables/highlight.js +216 -0
- package/map/client/composables/index.js +7 -0
- package/map/client/composables/location.js +53 -0
- package/map/client/composables/measure.js +42 -0
- package/map/client/composables/probe.js +133 -0
- package/map/client/composables/selection.js +300 -0
- package/map/client/composables/weather.js +213 -0
- package/map/client/elevation-utils.js +258 -0
- package/map/client/geolocation.js +119 -0
- package/map/client/globe.js +13 -0
- package/map/client/i18n/map_en.json +645 -0
- package/map/client/i18n/map_fr.json +646 -0
- package/map/client/index.js +18 -0
- package/map/client/init.js +80 -0
- package/map/client/leaflet/BoxSelection.js +142 -0
- package/map/client/leaflet/GSMaPLayer.js +55 -0
- package/map/client/leaflet/GradientPath.js +180 -0
- package/map/client/leaflet/MaskLayer.js +57 -0
- package/map/client/leaflet/TiledFeatureLayer.js +572 -0
- package/map/client/leaflet/TiledMeshLayer.js +486 -0
- package/map/client/leaflet/TiledWindLayer.js +384 -0
- package/map/client/leaflet/utils.js +246 -0
- package/map/client/map.js +15 -0
- package/map/client/mixins/globe/index.js +8 -0
- package/map/client/mixins/globe/mixin.base-globe.js +462 -0
- package/map/client/mixins/globe/mixin.file-layers.js +40 -0
- package/map/client/mixins/globe/mixin.geojson-layers.js +314 -0
- package/map/client/mixins/globe/mixin.globe-activity.js +52 -0
- package/map/client/mixins/globe/mixin.opendap-layers.js +51 -0
- package/map/client/mixins/globe/mixin.popup.js +82 -0
- package/map/client/mixins/globe/mixin.style.js +110 -0
- package/map/client/mixins/globe/mixin.tooltip.js +101 -0
- package/map/client/mixins/index.js +9 -0
- package/map/client/mixins/map/index.js +16 -0
- package/map/client/mixins/map/mixin.base-map.js +592 -0
- package/map/client/mixins/map/mixin.canvas-layers.js +529 -0
- package/map/client/mixins/map/mixin.edit-layers.js +474 -0
- package/map/client/mixins/map/mixin.file-layers.js +49 -0
- package/map/client/mixins/map/mixin.forecast-layers.js +79 -0
- package/map/client/mixins/map/mixin.geojson-layers.js +557 -0
- package/map/client/mixins/map/mixin.georaster-layers.js +114 -0
- package/map/client/mixins/map/mixin.gsmap-layers.js +27 -0
- package/map/client/mixins/map/mixin.heatmap-layers.js +116 -0
- package/map/client/mixins/map/mixin.map-activity.js +38 -0
- package/map/client/mixins/map/mixin.mapillary-layers.js +45 -0
- package/map/client/mixins/map/mixin.popup.js +53 -0
- package/map/client/mixins/map/mixin.style.js +73 -0
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +120 -0
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +126 -0
- package/map/client/mixins/map/mixin.tooltip.js +47 -0
- package/map/client/mixins/mixin.activity.js +477 -0
- package/map/client/mixins/mixin.catalog-panel.js +25 -0
- package/map/client/mixins/mixin.context.js +252 -0
- package/map/client/mixins/mixin.feature-selection.js +28 -0
- package/map/client/mixins/mixin.feature-service.js +403 -0
- package/map/client/mixins/mixin.infobox.js +29 -0
- package/map/client/mixins/mixin.levels.js +66 -0
- package/map/client/mixins/mixin.style.js +29 -0
- package/map/client/mixins/mixin.weacast.js +212 -0
- package/map/client/pixi-utils.js +256 -0
- package/map/client/readers/index.js +4 -0
- package/map/client/readers/reader.geojson.js +64 -0
- package/map/client/readers/reader.gpx.js +36 -0
- package/map/client/readers/reader.kml.js +36 -0
- package/map/client/readers/reader.shp.js +82 -0
- package/map/client/utils/utils.location.js +45 -0
- package/map/client/utils.js +303 -0
- package/map/common/dynamic-grid-source.js +127 -0
- package/map/common/errors.js +3 -0
- package/map/common/geotiff-grid-source.js +150 -0
- package/map/common/grid.js +509 -0
- package/map/common/index.js +29 -0
- package/map/common/meteo-model-grid-source.js +157 -0
- package/map/common/moment-utils.js +24 -0
- package/map/common/opendap-grid-source.js +261 -0
- package/map/common/opendap-utils.js +247 -0
- package/map/common/permissions.js +11 -0
- package/map/common/schemas/catalog.update.json +28 -0
- package/map/common/time-based-grid-source.js +111 -0
- package/map/common/tms-utils.js +63 -0
- package/map/common/wcs-grid-source.js +93 -0
- package/map/common/wcs-utils.js +167 -0
- package/map/common/weacast-grid-source.js +316 -0
- package/map/common/wfs-utils.js +163 -0
- package/map/common/wms-utils.js +117 -0
- package/map/common/wmts-utils.js +154 -0
- package/package.json +18 -15
- package/test/api/core/account.test.js +452 -0
- package/test/api/core/client.test.js.skip +37 -0
- package/test/api/core/config/default.cjs +115 -0
- package/test/api/core/config/email-templates/confirmInvitation/html.ejs +18 -0
- package/test/api/core/config/email-templates/identityChange/html.ejs +14 -0
- package/test/api/core/config/email-templates/newDevice/html.ejs +7 -0
- package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -0
- package/test/api/core/config/email-templates/passwordChange/html.ejs +5 -0
- package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +12 -0
- package/test/api/core/config/email-templates/resetPwd/html.ejs +5 -0
- package/test/api/core/config/email-templates/sendResetPwd/html.ejs +12 -0
- package/test/api/core/config/email-templates/verifySignup/html.ejs +3 -0
- package/test/api/core/data/10k_most_common_passwords.txt +10000 -0
- package/test/api/core/data/invalid-objects.json +60 -0
- package/test/api/core/data/logo.png +0 -0
- package/test/api/core/data/schema.json +57 -0
- package/test/api/core/data/valid-objects.json +38 -0
- package/test/api/core/hooks.test.js +330 -0
- package/test/api/core/index.js +1 -0
- package/test/api/core/index.test.js +478 -0
- package/test/api/core/push.test.js +191 -0
- package/test/api/core/schemas.test.js +82 -0
- package/test/api/core/storage.test.js +153 -0
- package/test/api/core/team.test.js +670 -0
- package/test/api/core/test-log-2023-07-04.log +0 -0
- package/test/api/core/test-log-2023-07-10.log +2 -0
- package/test/api/core/test-log-2023-07-12.log +0 -0
- package/test/api/core/test-log-2023-07-18.log +78 -0
- package/test/api/core/test-log-2023-07-19.log +44 -0
- package/test/api/core/test-log-2023-08-01.log +162 -0
- package/test/api/core/test-log-2023-08-21.log +66 -0
- package/test/api/core/test-log-2023-08-22.log +96 -0
- package/test/api/core/test-log-2023-08-23.log +22 -0
- package/test/api/core/test-log-2023-09-20.log +22 -0
- package/test/api/core/utils.js +83 -0
- package/test/api/index.js +4 -0
- package/test/api/map/alerts.test.js +560 -0
- package/test/api/map/config/default.cjs +125 -0
- package/test/api/map/config/layers.json +38 -0
- package/test/api/map/data/DescribeCoverage.xml +55 -0
- package/test/api/map/data/GetCoverage.tif +0 -0
- package/test/api/map/data/adsb.observations.json +132 -0
- package/test/api/map/data/dataset.grb.das +55 -0
- package/test/api/map/data/dataset.grb.dds +17 -0
- package/test/api/map/data/dataset.grb.dods +0 -0
- package/test/api/map/data/lat_lon_bounds.grb.dods +0 -0
- package/test/api/map/data/subdataset.grb.dods +0 -0
- package/test/api/map/data/vigicrues.observations.json +47042 -0
- package/test/api/map/data/vigicrues.stations.json +15422 -0
- package/test/api/map/data/zones.json +1228 -0
- package/test/api/map/grid-sources.test.js +313 -0
- package/test/api/map/hooks.test.js +98 -0
- package/test/api/map/index.js +0 -0
- package/test/api/map/index.test.js +563 -0
- package/test/api/map/test-log-2023-07-18.log +62 -0
- package/test/api/map/test-log-2023-07-19.log +13 -0
- package/test/api/map/test-log-2023-08-21.log +65 -0
- package/test/api/map/test-log-2023-09-20.log +60 -0
- package/test/client/core/account.js +36 -0
- package/test/client/core/api.js +361 -0
- package/test/client/core/collection.js +64 -0
- package/test/client/core/index.js +8 -0
- package/test/client/core/layout.js +116 -0
- package/test/client/core/runner.js +224 -0
- package/test/client/core/screens.js +35 -0
- package/test/client/core/time.js +10 -0
- package/test/client/core/utils.js +260 -0
- package/test/client/index.js +4 -0
- package/test/client/map/catalog.js +175 -0
- package/test/client/map/controls.js +41 -0
- package/test/client/map/index.js +4 -0
- package/test/client/map/time.js +24 -0
- package/test/client/map/utils.js +27 -0
- package/extras/tours/core/account-dz.js +0 -37
- package/extras/tours/core/account-security.js +0 -52
- package/extras/tours/core/change-password.js +0 -34
- package/extras/tours/core/edit-member-tags.js +0 -18
- package/extras/tours/core/send-change-identity.js +0 -28
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for core/api/hooks/hooks.tags.js</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">core/api/hooks</a> hooks.tags.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">69.01% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>176/255</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">51.06% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>24/47</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">87.5% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>7/8</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">69.01% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>176/255</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</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>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
322
|
+
<span class="cline-any cline-yes">2x</span>
|
|
323
|
+
<span class="cline-any cline-yes">2x</span>
|
|
324
|
+
<span class="cline-any cline-yes">2x</span>
|
|
325
|
+
<span class="cline-any cline-yes">2x</span>
|
|
326
|
+
<span class="cline-any cline-yes">2x</span>
|
|
327
|
+
<span class="cline-any cline-yes">2x</span>
|
|
328
|
+
<span class="cline-any cline-yes">2x</span>
|
|
329
|
+
<span class="cline-any cline-yes">2x</span>
|
|
330
|
+
<span class="cline-any cline-yes">2x</span>
|
|
331
|
+
<span class="cline-any cline-yes">2x</span>
|
|
332
|
+
<span class="cline-any cline-yes">3x</span>
|
|
333
|
+
<span class="cline-any cline-yes">3x</span>
|
|
334
|
+
<span class="cline-any cline-yes">2x</span>
|
|
335
|
+
<span class="cline-any cline-yes">3x</span>
|
|
336
|
+
<span class="cline-any cline-yes">3x</span>
|
|
337
|
+
<span class="cline-any cline-yes">3x</span>
|
|
338
|
+
<span class="cline-any cline-no"> </span>
|
|
339
|
+
<span class="cline-any cline-no"> </span>
|
|
340
|
+
<span class="cline-any cline-yes">2x</span>
|
|
341
|
+
<span class="cline-any cline-yes">3x</span>
|
|
342
|
+
<span class="cline-any cline-yes">2x</span>
|
|
343
|
+
<span class="cline-any cline-yes">2x</span>
|
|
344
|
+
<span class="cline-any cline-yes">6x</span>
|
|
345
|
+
<span class="cline-any cline-no"> </span>
|
|
346
|
+
<span class="cline-any cline-no"> </span>
|
|
347
|
+
<span class="cline-any cline-yes">6x</span>
|
|
348
|
+
<span class="cline-any cline-yes">6x</span>
|
|
349
|
+
<span class="cline-any cline-yes">6x</span>
|
|
350
|
+
<span class="cline-any cline-yes">6x</span>
|
|
351
|
+
<span class="cline-any cline-yes">2x</span>
|
|
352
|
+
<span class="cline-any cline-yes">2x</span>
|
|
353
|
+
<span class="cline-any cline-no"> </span>
|
|
354
|
+
<span class="cline-any cline-no"> </span>
|
|
355
|
+
<span class="cline-any cline-no"> </span>
|
|
356
|
+
<span class="cline-any cline-no"> </span>
|
|
357
|
+
<span class="cline-any cline-no"> </span>
|
|
358
|
+
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-yes">2x</span>
|
|
361
|
+
<span class="cline-any cline-yes">2x</span>
|
|
362
|
+
<span class="cline-any cline-yes">2x</span>
|
|
363
|
+
<span class="cline-any cline-yes">2x</span>
|
|
364
|
+
<span class="cline-any cline-no"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-yes">2x</span>
|
|
368
|
+
<span class="cline-any cline-yes">2x</span>
|
|
369
|
+
<span class="cline-any cline-yes">2x</span>
|
|
370
|
+
<span class="cline-any cline-yes">2x</span>
|
|
371
|
+
<span class="cline-any cline-yes">2x</span>
|
|
372
|
+
<span class="cline-any cline-no"> </span>
|
|
373
|
+
<span class="cline-any cline-no"> </span>
|
|
374
|
+
<span class="cline-any cline-no"> </span>
|
|
375
|
+
<span class="cline-any cline-no"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
378
|
+
<span class="cline-any cline-no"> </span>
|
|
379
|
+
<span class="cline-any cline-no"> </span>
|
|
380
|
+
<span class="cline-any cline-no"> </span>
|
|
381
|
+
<span class="cline-any cline-no"> </span>
|
|
382
|
+
<span class="cline-any cline-no"> </span>
|
|
383
|
+
<span class="cline-any cline-no"> </span>
|
|
384
|
+
<span class="cline-any cline-no"> </span>
|
|
385
|
+
<span class="cline-any cline-no"> </span>
|
|
386
|
+
<span class="cline-any cline-no"> </span>
|
|
387
|
+
<span class="cline-any cline-no"> </span>
|
|
388
|
+
<span class="cline-any cline-no"> </span>
|
|
389
|
+
<span class="cline-any cline-no"> </span>
|
|
390
|
+
<span class="cline-any cline-no"> </span>
|
|
391
|
+
<span class="cline-any cline-no"> </span>
|
|
392
|
+
<span class="cline-any cline-no"> </span>
|
|
393
|
+
<span class="cline-any cline-no"> </span>
|
|
394
|
+
<span class="cline-any cline-no"> </span>
|
|
395
|
+
<span class="cline-any cline-no"> </span>
|
|
396
|
+
<span class="cline-any cline-no"> </span>
|
|
397
|
+
<span class="cline-any cline-no"> </span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
399
|
+
<span class="cline-any cline-no"> </span>
|
|
400
|
+
<span class="cline-any cline-no"> </span>
|
|
401
|
+
<span class="cline-any cline-no"> </span>
|
|
402
|
+
<span class="cline-any cline-no"> </span>
|
|
403
|
+
<span class="cline-any cline-no"> </span>
|
|
404
|
+
<span class="cline-any cline-yes">2x</span>
|
|
405
|
+
<span class="cline-any cline-yes">2x</span>
|
|
406
|
+
<span class="cline-any cline-yes">1x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">1x</span>
|
|
410
|
+
<span class="cline-any cline-yes">1x</span>
|
|
411
|
+
<span class="cline-any cline-yes">1x</span>
|
|
412
|
+
<span class="cline-any cline-yes">1x</span>
|
|
413
|
+
<span class="cline-any cline-yes">1x</span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-yes">1x</span>
|
|
418
|
+
<span class="cline-any cline-yes">1x</span>
|
|
419
|
+
<span class="cline-any cline-no"> </span>
|
|
420
|
+
<span class="cline-any cline-yes">1x</span>
|
|
421
|
+
<span class="cline-any cline-yes">1x</span>
|
|
422
|
+
<span class="cline-any cline-yes">1x</span>
|
|
423
|
+
<span class="cline-any cline-yes">1x</span>
|
|
424
|
+
<span class="cline-any cline-yes">1x</span>
|
|
425
|
+
<span class="cline-any cline-yes">1x</span>
|
|
426
|
+
<span class="cline-any cline-yes">1x</span>
|
|
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">1x</span>
|
|
430
|
+
<span class="cline-any cline-yes">1x</span>
|
|
431
|
+
<span class="cline-any cline-yes">1x</span>
|
|
432
|
+
<span class="cline-any cline-yes">2x</span>
|
|
433
|
+
<span class="cline-any cline-yes">2x</span>
|
|
434
|
+
<span class="cline-any cline-yes">2x</span>
|
|
435
|
+
<span class="cline-any cline-yes">2x</span>
|
|
436
|
+
<span class="cline-any cline-yes">2x</span>
|
|
437
|
+
<span class="cline-any cline-yes">2x</span>
|
|
438
|
+
<span class="cline-any cline-yes">2x</span>
|
|
439
|
+
<span class="cline-any cline-yes">2x</span>
|
|
440
|
+
<span class="cline-any cline-yes">2x</span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
443
|
+
<span class="cline-any cline-yes">2x</span>
|
|
444
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
|
+
<span class="cline-any cline-yes">2x</span>
|
|
446
|
+
<span class="cline-any cline-yes">2x</span>
|
|
447
|
+
<span class="cline-any cline-no"> </span>
|
|
448
|
+
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-yes">2x</span>
|
|
450
|
+
<span class="cline-any cline-yes">2x</span>
|
|
451
|
+
<span class="cline-any cline-yes">2x</span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-yes">2x</span>
|
|
454
|
+
<span class="cline-any cline-yes">2x</span>
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-no"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-no"> </span>
|
|
459
|
+
<span class="cline-any cline-no"> </span>
|
|
460
|
+
<span class="cline-any cline-yes">2x</span>
|
|
461
|
+
<span class="cline-any cline-yes">2x</span>
|
|
462
|
+
<span class="cline-any cline-yes">2x</span>
|
|
463
|
+
<span class="cline-any cline-yes">2x</span>
|
|
464
|
+
<span class="cline-any cline-yes">2x</span>
|
|
465
|
+
<span class="cline-any cline-yes">2x</span>
|
|
466
|
+
<span class="cline-any cline-yes">2x</span>
|
|
467
|
+
<span class="cline-any cline-yes">2x</span>
|
|
468
|
+
<span class="cline-any cline-yes">2x</span>
|
|
469
|
+
<span class="cline-any cline-yes">2x</span>
|
|
470
|
+
<span class="cline-any cline-yes">2x</span>
|
|
471
|
+
<span class="cline-any cline-yes">2x</span>
|
|
472
|
+
<span class="cline-any cline-yes">2x</span>
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
474
|
+
<span class="cline-any cline-no"> </span>
|
|
475
|
+
<span class="cline-any cline-yes">2x</span>
|
|
476
|
+
<span class="cline-any cline-yes">2x</span>
|
|
477
|
+
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-yes">2x</span>
|
|
479
|
+
<span class="cline-any cline-yes">2x</span>
|
|
480
|
+
<span class="cline-any cline-no"> </span>
|
|
481
|
+
<span class="cline-any cline-no"> </span>
|
|
482
|
+
<span class="cline-any cline-yes">2x</span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</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>
|
|
488
|
+
<span class="cline-any cline-yes">2x</span>
|
|
489
|
+
<span class="cline-any cline-yes">2x</span>
|
|
490
|
+
<span class="cline-any cline-yes">2x</span>
|
|
491
|
+
<span class="cline-any cline-yes">2x</span>
|
|
492
|
+
<span class="cline-any cline-yes">2x</span>
|
|
493
|
+
<span class="cline-any cline-yes">2x</span>
|
|
494
|
+
<span class="cline-any cline-no"> </span>
|
|
495
|
+
<span class="cline-any cline-no"> </span>
|
|
496
|
+
<span class="cline-any cline-no"> </span>
|
|
497
|
+
<span class="cline-any cline-yes">2x</span>
|
|
498
|
+
<span class="cline-any cline-no"> </span>
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-no"> </span>
|
|
501
|
+
<span class="cline-any cline-no"> </span>
|
|
502
|
+
<span class="cline-any cline-yes">2x</span>
|
|
503
|
+
<span class="cline-any cline-yes">2x</span>
|
|
504
|
+
<span class="cline-any cline-yes">2x</span>
|
|
505
|
+
<span class="cline-any cline-yes">2x</span>
|
|
506
|
+
<span class="cline-any cline-yes">2x</span>
|
|
507
|
+
<span class="cline-any cline-yes">2x</span>
|
|
508
|
+
<span class="cline-any cline-yes">2x</span>
|
|
509
|
+
<span class="cline-any cline-yes">1x</span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-no"> </span>
|
|
512
|
+
<span class="cline-any cline-yes">1x</span>
|
|
513
|
+
<span class="cline-any cline-yes">1x</span>
|
|
514
|
+
<span class="cline-any cline-yes">1x</span>
|
|
515
|
+
<span class="cline-any cline-yes">1x</span>
|
|
516
|
+
<span class="cline-any cline-yes">1x</span>
|
|
517
|
+
<span class="cline-any cline-yes">1x</span>
|
|
518
|
+
<span class="cline-any cline-yes">1x</span>
|
|
519
|
+
<span class="cline-any cline-yes">1x</span>
|
|
520
|
+
<span class="cline-any cline-yes">1x</span>
|
|
521
|
+
<span class="cline-any cline-yes">1x</span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-yes">1x</span>
|
|
525
|
+
<span class="cline-any cline-yes">1x</span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
528
|
+
<span class="cline-any cline-yes">1x</span>
|
|
529
|
+
<span class="cline-any cline-yes">1x</span>
|
|
530
|
+
<span class="cline-any cline-yes">1x</span>
|
|
531
|
+
<span class="cline-any cline-yes">1x</span>
|
|
532
|
+
<span class="cline-any cline-yes">1x</span>
|
|
533
|
+
<span class="cline-any cline-yes">1x</span>
|
|
534
|
+
<span class="cline-any cline-yes">1x</span>
|
|
535
|
+
<span class="cline-any cline-yes">1x</span>
|
|
536
|
+
<span class="cline-any cline-yes">1x</span>
|
|
537
|
+
<span class="cline-any cline-yes">1x</span>
|
|
538
|
+
<span class="cline-any cline-yes">1x</span>
|
|
539
|
+
<span class="cline-any cline-yes">1x</span>
|
|
540
|
+
<span class="cline-any cline-yes">1x</span>
|
|
541
|
+
<span class="cline-any cline-yes">1x</span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-yes">1x</span>
|
|
545
|
+
<span class="cline-any cline-yes">2x</span>
|
|
546
|
+
<span class="cline-any cline-yes">2x</span>
|
|
547
|
+
<span class="cline-any cline-yes">1x</span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
549
|
+
<span class="cline-any cline-no"> </span>
|
|
550
|
+
<span class="cline-any cline-yes">1x</span>
|
|
551
|
+
<span class="cline-any cline-yes">1x</span>
|
|
552
|
+
<span class="cline-any cline-yes">1x</span>
|
|
553
|
+
<span class="cline-any cline-yes">1x</span>
|
|
554
|
+
<span class="cline-any cline-yes">1x</span>
|
|
555
|
+
<span class="cline-any cline-yes">1x</span>
|
|
556
|
+
<span class="cline-any cline-yes">1x</span>
|
|
557
|
+
<span class="cline-any cline-yes">1x</span>
|
|
558
|
+
<span class="cline-any cline-yes">1x</span>
|
|
559
|
+
<span class="cline-any cline-yes">1x</span>
|
|
560
|
+
<span class="cline-any cline-yes">1x</span>
|
|
561
|
+
<span class="cline-any cline-yes">1x</span>
|
|
562
|
+
<span class="cline-any cline-yes">1x</span>
|
|
563
|
+
<span class="cline-any cline-yes">1x</span>
|
|
564
|
+
<span class="cline-any cline-yes">1x</span>
|
|
565
|
+
<span class="cline-any cline-yes">1x</span>
|
|
566
|
+
<span class="cline-any cline-yes">1x</span>
|
|
567
|
+
<span class="cline-any cline-yes">1x</span>
|
|
568
|
+
<span class="cline-any cline-yes">1x</span>
|
|
569
|
+
<span class="cline-any cline-yes">1x</span>
|
|
570
|
+
<span class="cline-any cline-yes">1x</span>
|
|
571
|
+
<span class="cline-any cline-yes">1x</span>
|
|
572
|
+
<span class="cline-any cline-yes">1x</span>
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-yes">1x</span>
|
|
576
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
577
|
+
import errors from '@feathersjs/errors'
|
|
578
|
+
import common from 'feathers-hooks-common'
|
|
579
|
+
import { populateObject, unpopulateObject } from './hooks.query.js'
|
|
580
|
+
import makeDebug from 'debug'
|
|
581
|
+
|
|
582
|
+
const { getItems } = common
|
|
583
|
+
const { BadRequest } = errors
|
|
584
|
+
const debug = makeDebug('kdk:core:tags:hooks')
|
|
585
|
+
|
|
586
|
+
export function isTagEqual (tag1, tag2) {
|
|
587
|
+
// If tags already exists in DB directly use IDs for comparison
|
|
588
|
+
if (tag1._id && tag2._id) return (tag1._id.toString() === tag2._id.toString())
|
|
589
|
+
|
|
590
|
+
let equal = (tag1.value === tag2.value <span class="branch-0 cbranch-no" title="branch not covered" >&& tag1.scope === tag2.scope)</span>
|
|
591
|
+
// when context is provided use it as well
|
|
592
|
+
if (tag1.context <span class="branch-0 cbranch-no" title="branch not covered" >&& tag2.context)</span> <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
593
|
+
<span class="cstat-no" title="statement not covered" > equal = equal && (tag1.context.toString() === tag2.context.toString())</span>
|
|
594
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
595
|
+
return equal
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
export function populateTagResource (hook) {
|
|
599
|
+
if (hook.type !== 'before') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
600
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'populateTagResource\' hook should only be used as a \'before\' hook.')</span>
|
|
601
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
602
|
+
|
|
603
|
+
// Avoid populating any target resource when resource parameters are not present
|
|
604
|
+
return populateObject({ serviceField: 'resourcesService', idField: 'resource', throwOnNotFound: false })(hook)
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
export <span class="fstat-no" title="function not covered" >function unpopulateTagResource (hook) {</span>
|
|
608
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
609
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'unpopulateTagResource\' hook should only be used as a \'after\' hook.')</span>
|
|
610
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
611
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
612
|
+
<span class="cstat-no" title="statement not covered" > // Avoid populating any target resource when resource parameters are not present</span>
|
|
613
|
+
<span class="cstat-no" title="statement not covered" > return unpopulateObject({ serviceField: 'resourcesService', idField: 'resource' })(hook)</span>
|
|
614
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
615
|
+
|
|
616
|
+
export async function updateTags (hook) {
|
|
617
|
+
const item = getItems(hook)
|
|
618
|
+
if (!item.tags) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
619
|
+
<span class="cstat-no" title="statement not covered" > debug('No tags to update for object ', item)</span>
|
|
620
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
|
|
621
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
622
|
+
// Tag service is contextual, look for context on initiator service
|
|
623
|
+
const context = hook.service.context
|
|
624
|
+
// Retrieve previous version of the item
|
|
625
|
+
const previousTags = _.get(hook.params, 'previousItem.tags')
|
|
626
|
+
if (previousTags) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
627
|
+
<span class="cstat-no" title="statement not covered" > // Find common tags</span>
|
|
628
|
+
<span class="cstat-no" title="statement not covered" > const commonTags = _.intersectionWith(item.tags, previousTags, isTagEqual)</span>
|
|
629
|
+
<span class="cstat-no" title="statement not covered" > // Clear removed tags</span>
|
|
630
|
+
<span class="cstat-no" title="statement not covered" > const removedTags = _.differenceWith(previousTags, commonTags, isTagEqual)</span>
|
|
631
|
+
<span class="cstat-no" title="statement not covered" > debug('Removing tags for object ', item, removedTags)</span>
|
|
632
|
+
<span class="cstat-no" title="statement not covered" > const removePromises = removedTags.map(tag => {</span>
|
|
633
|
+
<span class="cstat-no" title="statement not covered" > // When a contextual service is used we might not provide the context in tag, extract from service instead</span>
|
|
634
|
+
<span class="cstat-no" title="statement not covered" > const tagService = hook.app.getService('tags', tag.context || context)</span>
|
|
635
|
+
<span class="cstat-no" title="statement not covered" > if (!tagService) return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
|
|
636
|
+
<span class="cstat-no" title="statement not covered" > else return tagService.remove(null, { query: tag })</span>
|
|
637
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
638
|
+
<span class="cstat-no" title="statement not covered" > // And add new ones</span>
|
|
639
|
+
<span class="cstat-no" title="statement not covered" > const addedTags = _.differenceWith(item.tags, commonTags, isTagEqual)</span>
|
|
640
|
+
<span class="cstat-no" title="statement not covered" > debug('Adding tags for object ', item, addedTags)</span>
|
|
641
|
+
<span class="cstat-no" title="statement not covered" > const addedPromises = addedTags.map(tag => {</span>
|
|
642
|
+
<span class="cstat-no" title="statement not covered" > // When a contextual service is used we might not provide the context in tag, extract from service instead</span>
|
|
643
|
+
<span class="cstat-no" title="statement not covered" > const tagService = hook.app.getService('tags', tag.context || context)</span>
|
|
644
|
+
<span class="cstat-no" title="statement not covered" > if (!tagService) return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
|
|
645
|
+
<span class="cstat-no" title="statement not covered" > else return tagService.create(tag)</span>
|
|
646
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
647
|
+
<span class="cstat-no" title="statement not covered" > let [oldTags, newTags] = await Promise.all([</span>
|
|
648
|
+
<span class="cstat-no" title="statement not covered" > Promise.all(removePromises),</span>
|
|
649
|
+
<span class="cstat-no" title="statement not covered" > Promise.all(addedPromises)</span>
|
|
650
|
+
<span class="cstat-no" title="statement not covered" > ])</span>
|
|
651
|
+
<span class="cstat-no" title="statement not covered" > debug('Tags removed/added', oldTags, newTags)</span>
|
|
652
|
+
<span class="cstat-no" title="statement not covered" > // Update tags to include information added when they are created (eg _id)</span>
|
|
653
|
+
<span class="cstat-no" title="statement not covered" > // and add also context because tags might come from different ones on the same target object</span>
|
|
654
|
+
<span class="cstat-no" title="statement not covered" > newTags = newTags.map(tag => {</span>
|
|
655
|
+
<span class="cstat-no" title="statement not covered" > if (!context || tag.context) return tag</span>
|
|
656
|
+
<span class="cstat-no" title="statement not covered" > else return Object.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)</span>
|
|
657
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
658
|
+
<span class="cstat-no" title="statement not covered" > item.tags = commonTags.concat(newTags)</span>
|
|
659
|
+
} else {
|
|
660
|
+
if (hook.method !== 'remove') {
|
|
661
|
+
// Add new tags
|
|
662
|
+
debug('Adding tags for object ', item)
|
|
663
|
+
const addPromises = item.tags.map(tag => {
|
|
664
|
+
// When a contextual service is used we might not provide the context in tag, extract from service instead
|
|
665
|
+
const tagService = hook.app.getService('tags', tag.context || context)
|
|
666
|
+
if (!tagService) <span class="branch-0 cbranch-no" title="branch not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
|
|
667
|
+
else return tagService.create(tag)
|
|
668
|
+
})
|
|
669
|
+
// Update tags to include information added when they are created (eg _id)
|
|
670
|
+
let newTags = await Promise.all(addPromises)
|
|
671
|
+
// and add also context because tags might come from different ones on the same target object
|
|
672
|
+
newTags = newTags.map(tag => {
|
|
673
|
+
if (!context <span class="branch-0 cbranch-no" title="branch not covered" >|| tag.context)</span> return tag
|
|
674
|
+
<span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > else return Object.assign({ context: (typeof context === 'object' ? context._id.toString() : context.toString()) }, tag)</span></span>
|
|
675
|
+
})
|
|
676
|
+
item.tags = newTags
|
|
677
|
+
} else {
|
|
678
|
+
debug('Removing tags for object ', item)
|
|
679
|
+
const removePromises = item.tags.map(tag => {
|
|
680
|
+
// When a contextual service is used we might not provide the context in tag, extract from service instead
|
|
681
|
+
const tagService = hook.app.getService('tags', tag.context || context)
|
|
682
|
+
if (!tagService) <span class="branch-0 cbranch-no" title="branch not covered" >return Promise.reject(new Error('No valid context found to retrieve tag service for ', tag))</span>
|
|
683
|
+
else return tagService.remove(null, { query: tag })
|
|
684
|
+
})
|
|
685
|
+
await Promise.all(removePromises)
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
// Avoid transferring some internal data
|
|
689
|
+
// item.tags = item.tags.map(tag => _.omit(tag, ['count']))
|
|
690
|
+
|
|
691
|
+
return hook
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
export function addTagIfNew (hook) {
|
|
695
|
+
if (hook.type !== 'before') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
696
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'addTagIfNew\' hook should only be used as a \'before\' hook.')</span>
|
|
697
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
698
|
+
const tagService = hook.service
|
|
699
|
+
const value = _.get(hook, 'data.value')
|
|
700
|
+
const scope = _.get(hook, 'data.scope')
|
|
701
|
+
if (!value || !scope) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
702
|
+
<span class="cstat-no" title="statement not covered" > throw new BadRequest('Scope and value should be provided to create a tag')</span>
|
|
703
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
704
|
+
|
|
705
|
+
return tagService.find({ query: { value, scope } })
|
|
706
|
+
.then(result => {
|
|
707
|
+
// If it already exist avoid creating it in DB,
|
|
708
|
+
// simply update counter and return it
|
|
709
|
+
if (result.total > 0) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
710
|
+
<span class="cstat-no" title="statement not covered" > const tag = result.data[0]</span>
|
|
711
|
+
<span class="cstat-no" title="statement not covered" > hook.result = tag</span>
|
|
712
|
+
<span class="cstat-no" title="statement not covered" > tag.count += 1</span>
|
|
713
|
+
<span class="cstat-no" title="statement not covered" > debug('Increasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)</span>
|
|
714
|
+
<span class="cstat-no" title="statement not covered" > return tagService.patch(tag._id.toString(), { count: tag.count })</span>
|
|
715
|
+
} else {
|
|
716
|
+
// Otherwise initialize tag counter
|
|
717
|
+
hook.data.count = 1
|
|
718
|
+
return Promise.resolve(hook)
|
|
719
|
+
}
|
|
720
|
+
})
|
|
721
|
+
.then(() => {
|
|
722
|
+
return hook
|
|
723
|
+
})
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
export function removeTagIfUnused (hook) {
|
|
727
|
+
if (hook.type !== 'before') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
728
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'removeTagIfUnused\' hook should only be used as a \'before\' hook.')</span>
|
|
729
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
730
|
+
|
|
731
|
+
const tagService = hook.service
|
|
732
|
+
const value = _.get(hook.params, 'query.value')
|
|
733
|
+
const scope = _.get(hook.params, 'query.scope')
|
|
734
|
+
if (!value || !scope) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
735
|
+
<span class="cstat-no" title="statement not covered" > throw new BadRequest('Scope and value should be provided to remove a tag')</span>
|
|
736
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
737
|
+
|
|
738
|
+
return tagService.find({ query: { value, scope } })
|
|
739
|
+
.then(result => {
|
|
740
|
+
// If it already exist decrease counter and erase it if not used anymore
|
|
741
|
+
if (result.total > 0) {
|
|
742
|
+
const tag = result.data[0]
|
|
743
|
+
hook.result = tag
|
|
744
|
+
tag.count -= 1
|
|
745
|
+
if (tag.count <= 0) {
|
|
746
|
+
debug('Removing unused tag ' + tag.value + ' with scope ' + tag.scope)
|
|
747
|
+
return tagService.remove(tag._id.toString())
|
|
748
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
749
|
+
<span class="cstat-no" title="statement not covered" > debug('Decreasing tag ' + tag.value + ' count (' + tag.count + ') with scope ' + tag.scope)</span>
|
|
750
|
+
<span class="cstat-no" title="statement not covered" > return tagService.patch(tag._id.toString(), { count: tag.count })</span>
|
|
751
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
752
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
753
|
+
<span class="cstat-no" title="statement not covered" > // Should not be possible, this will skip DB call</span>
|
|
754
|
+
<span class="cstat-no" title="statement not covered" > hook.result = null</span>
|
|
755
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
|
|
756
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
757
|
+
})
|
|
758
|
+
.then(() => {
|
|
759
|
+
return hook
|
|
760
|
+
})
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
export function tagResource (hook) {
|
|
764
|
+
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
765
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'tagResource\' hook should only be used as a \'after\' hook.')</span>
|
|
766
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
767
|
+
const tag = hook.result
|
|
768
|
+
const params = hook.params
|
|
769
|
+
const query = params.query
|
|
770
|
+
const context = hook.service.context
|
|
771
|
+
const resourcesService = params.resourcesService
|
|
772
|
+
const resource = params.resource
|
|
773
|
+
// If not already tagged
|
|
774
|
+
if (!_.find(resource.tags, resourceTag => isTagEqual(resourceTag, tag))) {
|
|
775
|
+
// Initialize on first tag
|
|
776
|
+
if (!resource.tags) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
777
|
+
<span class="cstat-no" title="statement not covered" > resource.tags = []</span>
|
|
778
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
779
|
+
// Add context because tags might come from different ones on the same target object
|
|
780
|
+
if (context) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
781
|
+
<span class="cstat-no" title="statement not covered" > tag.context = (typeof context === 'object' ? context._id.toString() : context.toString())</span>
|
|
782
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
783
|
+
resource.tags.push(tag)
|
|
784
|
+
return resourcesService.patch(resource._id.toString(), {
|
|
785
|
+
tags: resource.tags
|
|
786
|
+
}, {
|
|
787
|
+
user: hook.params.user,
|
|
788
|
+
// Forward query so that any update param could be processed as usual on resource
|
|
789
|
+
// Delete own parameters from query otherwise it will be used to filter items
|
|
790
|
+
query: _.omit(query, ['resource', 'resourcesService', 'scope', 'value', 'context'])
|
|
791
|
+
})
|
|
792
|
+
.then(subject => {
|
|
793
|
+
debug('Tag ' + tag.value + ' set on resource ' + resource._id.toString() + ' with scope ' + tag.scope)
|
|
794
|
+
return hook
|
|
795
|
+
})
|
|
796
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
797
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
|
|
798
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
export function untagResource (hook) {
|
|
802
|
+
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
803
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'untagResource\' hook should only be used as a \'after\' hook.')</span>
|
|
804
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
805
|
+
|
|
806
|
+
const tag = hook.result
|
|
807
|
+
const params = hook.params
|
|
808
|
+
const query = params.query
|
|
809
|
+
const resourcesService = params.resourcesService
|
|
810
|
+
const resource = params.resource
|
|
811
|
+
// If already tagged
|
|
812
|
+
const tagIndex = _.findIndex(resource.tags, resourceTag => isTagEqual(resourceTag, tag))
|
|
813
|
+
if (tagIndex >= 0) {
|
|
814
|
+
_.pullAt(resource.tags, tagIndex)
|
|
815
|
+
return resourcesService.patch(resource._id.toString(), {
|
|
816
|
+
tags: resource.tags
|
|
817
|
+
}, {
|
|
818
|
+
user: params.user,
|
|
819
|
+
// Forward query so that any update param could be processed as usual on resource
|
|
820
|
+
// Delete own parameters from query otherwise it will be used to filter items
|
|
821
|
+
query: _.omit(query, ['resource', 'resourcesService', 'scope', 'value', 'context'])
|
|
822
|
+
})
|
|
823
|
+
.then(subject => {
|
|
824
|
+
debug('Tag ' + tag.value + ' unset on resource ' + resource._id.toString() + ' with scope ' + tag.scope)
|
|
825
|
+
return hook
|
|
826
|
+
})
|
|
827
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
828
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(hook)</span>
|
|
829
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
830
|
+
}
|
|
831
|
+
</pre></td></tr></table></pre>
|
|
832
|
+
|
|
833
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
834
|
+
</div><!-- /wrapper -->
|
|
835
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
836
|
+
Code coverage generated by
|
|
837
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
838
|
+
at 2023-07-19T10:31:22.380Z
|
|
839
|
+
</div>
|
|
840
|
+
<script src="../../../prettify.js"></script>
|
|
841
|
+
<script>
|
|
842
|
+
window.onload = function () {
|
|
843
|
+
prettyPrint();
|
|
844
|
+
};
|
|
845
|
+
</script>
|
|
846
|
+
<script src="../../../sorter.js"></script>
|
|
847
|
+
<script src="../../../block-navigation.js"></script>
|
|
848
|
+
</body>
|
|
849
|
+
</html>
|
|
850
|
+
|