@kalisio/kdk 1.4.2 → 1.6.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/.nyc_output/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
- package/.nyc_output/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
- package/.nyc_output/{2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json → 27401f21-8ccf-42fa-8230-4232189d86b3.json} +0 -0
- package/.nyc_output/{81d21e46-766a-46bc-b1b7-143ca577347a.json → 52278ef5-c337-4724-97be-e2e4416847c5.json} +0 -0
- package/.nyc_output/{aaf3ebbb-f895-4d7b-9255-bc5dee832570.json → 5dd49b8a-4c84-42f9-a3d5-712247a84775.json} +0 -0
- package/.nyc_output/{dbeb2602-0ac2-4e66-978b-0d29548359ca.json → 612b4859-9645-45c1-a41e-1fae420518c4.json} +0 -0
- package/.nyc_output/{e47d1e4c-2fff-4dcb-908f-d3081162547c.json → bab87fe9-d99a-4759-99e6-3fc4622eeca0.json} +0 -0
- package/.nyc_output/processinfo/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
- package/.nyc_output/processinfo/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
- package/.nyc_output/processinfo/27401f21-8ccf-42fa-8230-4232189d86b3.json +1 -0
- package/.nyc_output/processinfo/52278ef5-c337-4724-97be-e2e4416847c5.json +1 -0
- package/.nyc_output/processinfo/5dd49b8a-4c84-42f9-a3d5-712247a84775.json +1 -0
- package/.nyc_output/processinfo/612b4859-9645-45c1-a41e-1fae420518c4.json +1 -0
- package/.nyc_output/processinfo/bab87fe9-d99a-4759-99e6-3fc4622eeca0.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +69 -10
- package/coverage/core/api/application.js.html +500 -422
- package/coverage/core/api/authentication.js.html +119 -119
- package/coverage/core/api/db.js.html +172 -172
- package/coverage/core/api/hooks/hooks.account.js.html +45 -45
- package/coverage/core/api/hooks/hooks.authentication.js.html +71 -71
- package/coverage/core/api/hooks/hooks.authorisations.js.html +368 -353
- package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/core/api/hooks/hooks.organisations.js.html +190 -190
- package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/core/api/hooks/hooks.query.js.html +277 -211
- package/coverage/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/core/api/hooks/hooks.users.js.html +263 -263
- package/coverage/core/api/hooks/index.html +172 -172
- package/coverage/core/api/hooks/index.js.html +24 -24
- package/coverage/core/api/index.html +76 -76
- package/coverage/core/api/index.js.html +30 -30
- package/coverage/core/api/marshall.js.html +57 -57
- package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/core/api/models/index.html +50 -50
- package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/core/api/oauth2-handler.js.html +18 -18
- package/coverage/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/core/api/services/account/account.service.js.html +104 -104
- package/coverage/core/api/services/account/index.html +32 -32
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +156 -132
- package/coverage/core/api/services/authorisations/index.html +28 -28
- package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/core/api/services/databases/index.html +24 -24
- package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/core/api/services/devices/index.html +28 -28
- package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/core/api/services/groups/index.html +13 -13
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +118 -118
- package/coverage/core/api/services/mailer/index.html +24 -24
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/core/api/services/organisations/index.html +24 -24
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/core/api/services/pusher/index.html +34 -34
- package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/core/api/services/storage/index.html +21 -21
- package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/core/api/services/users/index.html +21 -21
- package/coverage/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +16 -16
- package/coverage/core/common/permissions.js.html +320 -290
- package/coverage/index.html +181 -181
- package/coverage/lcov-report/core/api/application.js.html +500 -422
- package/coverage/lcov-report/core/api/authentication.js.html +119 -119
- package/coverage/lcov-report/core/api/db.js.html +172 -172
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +45 -45
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +71 -71
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +368 -353
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +190 -190
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +277 -211
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +263 -263
- package/coverage/lcov-report/core/api/hooks/index.html +172 -172
- package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
- package/coverage/lcov-report/core/api/index.html +76 -76
- package/coverage/lcov-report/core/api/index.js.html +30 -30
- package/coverage/lcov-report/core/api/marshall.js.html +57 -57
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/models/index.html +50 -50
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +104 -104
- package/coverage/lcov-report/core/api/services/account/index.html +32 -32
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +156 -132
- package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +118 -118
- package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/lcov-report/core/api/services/users/index.html +21 -21
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +16 -16
- package/coverage/lcov-report/core/common/permissions.js.html +320 -290
- package/coverage/lcov-report/index.html +181 -181
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +25 -7
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +14 -5
- package/coverage/lcov-report/map/api/models/index.html +7 -7
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/features/index.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.js.html +1 -1
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +1 -1
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
- package/coverage/lcov.info +3683 -3825
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +25 -7
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +14 -5
- package/coverage/map/api/models/index.html +7 -7
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/map/api/services/catalog/index.html +1 -1
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +1 -1
- package/coverage/map/api/services/features/index.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/map/api/services/geocoder/index.html +1 -1
- package/coverage/map/api/services/index.html +1 -1
- package/coverage/map/api/services/index.js.html +1 -1
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +1 -1
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +1 -1
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +1 -1
- package/extras/tours/map/navigation-bar.js +49 -1
- package/lib/core/api/application.js +35 -9
- package/lib/core/api/application.js.map +1 -1
- package/lib/core/api/hooks/hooks.authorisations.js +8 -1
- package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.query.js +135 -100
- package/lib/core/api/hooks/hooks.query.js.map +1 -1
- package/lib/core/api/services/authorisations/authorisations.service.js +13 -1
- package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
- package/lib/core/api/services/pusher/pusher.service.js +40 -16
- package/lib/core/api/services/pusher/pusher.service.js.map +1 -1
- package/lib/core/client/components/collection/KColumn.vue +29 -28
- package/lib/core/client/components/collection/KFilter.vue +97 -72
- package/lib/core/client/components/editor/KModalEditor.vue +3 -4
- package/lib/core/client/components/editor/KSettingsEditor.vue +6 -2
- package/lib/core/client/components/form/KFileField.vue +14 -36
- package/lib/core/client/components/form/KRoleField.vue +5 -2
- package/lib/core/client/components/form/KTextField.vue +12 -2
- package/lib/core/client/components/form/KUnitField.vue +57 -0
- package/lib/core/client/components/form/KUrlField.vue +1 -1
- package/lib/core/client/components/frame/KAction.vue +1 -2
- package/lib/core/client/components/frame/KModal.vue +66 -20
- package/lib/core/client/components/frame/KScrollArea.vue +65 -0
- package/lib/core/client/components/frame/index.js +6 -1
- package/lib/core/client/components/frame/index.js.map +1 -1
- package/lib/core/client/components/input/KColorChooser.vue +3 -5
- package/lib/core/client/components/input/KIconChooser.vue +38 -40
- package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
- package/lib/core/client/components/layout/KAbout.vue +47 -49
- package/lib/core/client/components/team/KAddMember.vue +1 -1
- package/lib/core/client/components/team/KChangeRole.vue +11 -14
- package/lib/core/client/components/team/KGroupCard.vue +12 -5
- package/lib/core/client/components/team/KGroupsActivity.vue +1 -1
- package/lib/core/client/components/team/KJoinGroup.vue +22 -22
- package/lib/core/client/components/team/KMemberCard.vue +19 -4
- package/lib/core/client/components/viewer/KModalViewer.vue +10 -9
- package/lib/core/client/i18n/core_en.json +72 -8
- package/lib/core/client/i18n/core_fr.json +66 -8
- package/lib/core/client/index.js +31 -0
- package/lib/core/client/index.js.map +1 -1
- package/lib/core/client/layout.js +8 -1
- package/lib/core/client/layout.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-widget.js +5 -3
- package/lib/core/client/mixins/mixin.base-widget.js.map +1 -1
- package/lib/core/client/reader.js +85 -0
- package/lib/core/client/reader.js.map +1 -0
- package/lib/core/client/readers/index.js +30 -0
- package/lib/core/client/readers/index.js.map +1 -0
- package/lib/core/client/readers/reader.csv.js +54 -0
- package/lib/core/client/readers/reader.csv.js.map +1 -0
- package/lib/core/client/readers/reader.json.js +49 -0
- package/lib/core/client/readers/reader.json.js.map +1 -0
- package/lib/core/client/services/index.js +14 -3
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/services/local-settings.service.js +6 -4
- package/lib/core/client/services/local-settings.service.js.map +1 -1
- package/lib/core/client/time.js +4 -3
- package/lib/core/client/time.js.map +1 -1
- package/lib/core/client/units.js +195 -0
- package/lib/core/client/units.js.map +1 -0
- package/lib/core/common/permissions.js +44 -34
- package/lib/core/common/permissions.js.map +1 -1
- package/lib/core/common/schemas/settings.update.json +72 -0
- package/lib/map/api/hooks/hooks.query.js +7 -2
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/api/models/features.model.mongodb.js +3 -0
- package/lib/map/api/models/features.model.mongodb.js.map +1 -1
- package/lib/map/client/components/KCaptureToolbar.vue +151 -0
- package/lib/map/client/components/KColorLegend.vue +16 -4
- package/lib/map/client/components/KFeaturesChart.vue +10 -11
- package/lib/map/client/components/KFeaturesFilter.vue +40 -39
- package/lib/map/client/components/KFeaturesTable.vue +15 -16
- package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
- package/lib/map/client/components/KLayerStyleEditor.vue +3 -2
- package/lib/map/client/components/KLayerStyleForm.vue +38 -27
- package/lib/map/client/components/KMeasureTool.vue +337 -0
- package/lib/map/client/components/KTimeline.vue +5 -9
- package/lib/map/client/components/catalog/KAddLayer.vue +3 -2
- package/lib/map/client/components/catalog/KCatalog.vue +26 -7
- package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
- package/lib/map/client/components/catalog/KLayerCategories.vue +3 -2
- package/lib/map/client/components/catalog/KLayersSelector.vue +8 -6
- package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +1 -1
- package/lib/map/client/components/widget/KInformationBox.vue +8 -17
- package/lib/map/client/components/widget/KMapillaryViewer.vue +5 -1
- package/lib/map/client/components/widget/KTimeSeries.vue +92 -9
- package/lib/map/client/i18n/map_en.json +51 -20
- package/lib/map/client/i18n/map_fr.json +51 -20
- package/lib/map/client/init.js +7 -1
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +9 -0
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +16 -21
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.popup.js +7 -1
- package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js +7 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +54 -9
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +51 -97
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +43 -11
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.popup.js +7 -1
- package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.style.js +1 -1
- package/lib/map/client/mixins/map/mixin.style.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js +7 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +2 -0
- package/lib/map/client/mixins/mixin.activity.js.map +1 -1
- package/lib/map/client/mixins/mixin.context.js +26 -3
- package/lib/map/client/mixins/mixin.context.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-service.js +3 -3
- package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
- package/lib/map/client/mixins/mixin.infobox.js +4 -0
- package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
- package/lib/map/client/mixins/mixin.weacast.js +7 -5
- package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
- package/lib/map/client/readers/index.js +54 -0
- package/lib/map/client/readers/index.js.map +1 -0
- package/lib/map/client/readers/reader.geojson.js +87 -0
- package/lib/map/client/readers/reader.geojson.js.map +1 -0
- package/lib/map/client/readers/reader.gpx.js +52 -0
- package/lib/map/client/readers/reader.gpx.js.map +1 -0
- package/lib/map/client/readers/reader.kml.js +52 -0
- package/lib/map/client/readers/reader.kml.js.map +1 -0
- package/lib/map/client/readers/reader.shp.js +116 -0
- package/lib/map/client/readers/reader.shp.js.map +1 -0
- package/lib/map/client/utils.js +0 -7
- package/lib/map/client/utils.js.map +1 -1
- package/lib/test/client/core/account.js +1 -1
- package/lib/test/client/core/account.js.map +1 -1
- package/lib/test/client/core/runner.js +1 -2
- package/lib/test/client/core/runner.js.map +1 -1
- package/lib/test/client/core/screens.js +1 -1
- package/lib/test/client/core/screens.js.map +1 -1
- package/lib/test/client/core/utils.js +2 -2
- package/lib/test/client/core/utils.js.map +1 -1
- package/lib/test/client/map/catalog.js +50 -49
- package/lib/test/client/map/catalog.js.map +1 -1
- package/package.json +3 -3
- package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
- package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
- package/.nyc_output/processinfo/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
- package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +0 -1
- package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +0 -1
- package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
- package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +0 -1
- package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
- package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +0 -1
- package/extras/testcafe/Dockerfile +0 -48
- package/extras/testcafe/docker-entrypoint.sh +0 -27
- package/extras/testcafe/page-models/core/account.js +0 -75
- package/extras/testcafe/page-models/core/base-collection.js +0 -41
- package/extras/testcafe/page-models/core/base-page.js +0 -25
- package/extras/testcafe/page-models/core/groups.js +0 -36
- package/extras/testcafe/page-models/core/index.js +0 -140
- package/extras/testcafe/page-models/core/layout.js +0 -145
- package/extras/testcafe/page-models/core/members.js +0 -98
- package/extras/testcafe/page-models/core/organisations.js +0 -76
- package/extras/testcafe/page-models/core/screens.js +0 -99
- package/extras/testcafe/page-models/core/tags.js +0 -21
- package/extras/testcafe/page-models/map/add-layer.js +0 -51
- package/extras/testcafe/page-models/map/catalog.js +0 -132
- package/extras/testcafe/page-models/map/index.js +0 -36
- package/extras/testcafe/page-models/map/map-activity.js +0 -42
- package/extras/testcafe/page-models/map/timeline.js +0 -67
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">1.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>4/320</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>0/143</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>0/47</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">1.36% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>4/294</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
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
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line low'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -548,31 +548,57 @@
|
|
|
548
548
|
<a name='L489'></a><a href='#L489'>489</a>
|
|
549
549
|
<a name='L490'></a><a href='#L490'>490</a>
|
|
550
550
|
<a name='L491'></a><a href='#L491'>491</a>
|
|
551
|
-
<a name='L492'></a><a href='#L492'>492</a
|
|
552
|
-
<
|
|
553
|
-
<
|
|
554
|
-
<
|
|
555
|
-
<
|
|
556
|
-
<
|
|
557
|
-
<
|
|
558
|
-
<
|
|
559
|
-
<
|
|
560
|
-
<
|
|
561
|
-
<
|
|
562
|
-
<
|
|
563
|
-
<
|
|
564
|
-
<
|
|
565
|
-
<
|
|
566
|
-
<
|
|
567
|
-
<
|
|
568
|
-
<
|
|
569
|
-
<
|
|
551
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
552
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
553
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
554
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
555
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
556
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
557
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
558
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
559
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
560
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
561
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
562
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
563
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
564
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
565
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
566
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
567
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
568
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
569
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
570
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
571
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
572
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
573
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
574
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
575
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
576
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
577
|
+
<a name='L518'></a><a href='#L518'>518</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
570
578
|
<span class="cline-any cline-yes">1x</span>
|
|
571
579
|
<span class="cline-any cline-yes">1x</span>
|
|
572
580
|
<span class="cline-any cline-yes">1x</span>
|
|
581
|
+
<span class="cline-any cline-no"> </span>
|
|
582
|
+
<span class="cline-any cline-no"> </span>
|
|
583
|
+
<span class="cline-any cline-no"> </span>
|
|
584
|
+
<span class="cline-any cline-no"> </span>
|
|
585
|
+
<span class="cline-any cline-no"> </span>
|
|
586
|
+
<span class="cline-any cline-no"> </span>
|
|
587
|
+
<span class="cline-any cline-no"> </span>
|
|
588
|
+
<span class="cline-any cline-no"> </span>
|
|
589
|
+
<span class="cline-any cline-no"> </span>
|
|
590
|
+
<span class="cline-any cline-no"> </span>
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
592
|
+
<span class="cline-any cline-no"> </span>
|
|
593
|
+
<span class="cline-any cline-no"> </span>
|
|
594
|
+
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-no"> </span>
|
|
596
|
+
<span class="cline-any cline-no"> </span>
|
|
597
|
+
<span class="cline-any cline-no"> </span>
|
|
598
|
+
<span class="cline-any cline-no"> </span>
|
|
573
599
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-
|
|
575
|
-
<span class="cline-any cline-
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
601
|
+
<span class="cline-any cline-no"> </span>
|
|
576
602
|
<span class="cline-any cline-neutral"> </span>
|
|
577
603
|
<span class="cline-any cline-neutral"> </span>
|
|
578
604
|
<span class="cline-any cline-no"> </span>
|
|
@@ -583,113 +609,113 @@
|
|
|
583
609
|
<span class="cline-any cline-neutral"> </span>
|
|
584
610
|
<span class="cline-any cline-neutral"> </span>
|
|
585
611
|
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-
|
|
587
|
-
<span class="cline-any cline-
|
|
612
|
+
<span class="cline-any cline-no"> </span>
|
|
613
|
+
<span class="cline-any cline-no"> </span>
|
|
588
614
|
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-
|
|
590
|
-
<span class="cline-any cline-
|
|
615
|
+
<span class="cline-any cline-no"> </span>
|
|
616
|
+
<span class="cline-any cline-no"> </span>
|
|
591
617
|
<span class="cline-any cline-neutral"> </span>
|
|
592
618
|
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-
|
|
594
|
-
<span class="cline-any cline-
|
|
595
|
-
<span class="cline-any cline-
|
|
596
|
-
<span class="cline-any cline-
|
|
597
|
-
<span class="cline-any cline-
|
|
598
|
-
<span class="cline-any cline-
|
|
619
|
+
<span class="cline-any cline-no"> </span>
|
|
620
|
+
<span class="cline-any cline-no"> </span>
|
|
621
|
+
<span class="cline-any cline-no"> </span>
|
|
622
|
+
<span class="cline-any cline-no"> </span>
|
|
623
|
+
<span class="cline-any cline-no"> </span>
|
|
624
|
+
<span class="cline-any cline-no"> </span>
|
|
599
625
|
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-
|
|
626
|
+
<span class="cline-any cline-no"> </span>
|
|
601
627
|
<span class="cline-any cline-neutral"> </span>
|
|
602
628
|
<span class="cline-any cline-neutral"> </span>
|
|
603
629
|
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-
|
|
605
|
-
<span class="cline-any cline-
|
|
606
|
-
<span class="cline-any cline-
|
|
607
|
-
<span class="cline-any cline-
|
|
630
|
+
<span class="cline-any cline-no"> </span>
|
|
631
|
+
<span class="cline-any cline-no"> </span>
|
|
632
|
+
<span class="cline-any cline-no"> </span>
|
|
633
|
+
<span class="cline-any cline-no"> </span>
|
|
608
634
|
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-
|
|
610
|
-
<span class="cline-any cline-
|
|
635
|
+
<span class="cline-any cline-no"> </span>
|
|
636
|
+
<span class="cline-any cline-no"> </span>
|
|
611
637
|
<span class="cline-any cline-neutral"> </span>
|
|
612
638
|
<span class="cline-any cline-no"> </span>
|
|
613
639
|
<span class="cline-any cline-neutral"> </span>
|
|
614
640
|
<span class="cline-any cline-neutral"> </span>
|
|
615
641
|
<span class="cline-any cline-neutral"> </span>
|
|
616
642
|
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-
|
|
618
|
-
<span class="cline-any cline-
|
|
619
|
-
<span class="cline-any cline-
|
|
620
|
-
<span class="cline-any cline-
|
|
643
|
+
<span class="cline-any cline-no"> </span>
|
|
644
|
+
<span class="cline-any cline-no"> </span>
|
|
645
|
+
<span class="cline-any cline-no"> </span>
|
|
646
|
+
<span class="cline-any cline-no"> </span>
|
|
621
647
|
<span class="cline-any cline-no"> </span>
|
|
622
648
|
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-
|
|
649
|
+
<span class="cline-any cline-no"> </span>
|
|
624
650
|
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-
|
|
626
|
-
<span class="cline-any cline-
|
|
651
|
+
<span class="cline-any cline-no"> </span>
|
|
652
|
+
<span class="cline-any cline-no"> </span>
|
|
627
653
|
<span class="cline-any cline-neutral"> </span>
|
|
628
654
|
<span class="cline-any cline-no"> </span>
|
|
629
655
|
<span class="cline-any cline-neutral"> </span>
|
|
630
656
|
<span class="cline-any cline-neutral"> </span>
|
|
631
657
|
<span class="cline-any cline-neutral"> </span>
|
|
632
658
|
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-
|
|
659
|
+
<span class="cline-any cline-no"> </span>
|
|
634
660
|
<span class="cline-any cline-neutral"> </span>
|
|
635
661
|
<span class="cline-any cline-neutral"> </span>
|
|
636
662
|
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-
|
|
663
|
+
<span class="cline-any cline-no"> </span>
|
|
638
664
|
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-
|
|
665
|
+
<span class="cline-any cline-no"> </span>
|
|
640
666
|
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-
|
|
667
|
+
<span class="cline-any cline-no"> </span>
|
|
642
668
|
<span class="cline-any cline-no"> </span>
|
|
643
669
|
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-
|
|
670
|
+
<span class="cline-any cline-no"> </span>
|
|
645
671
|
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-
|
|
647
|
-
<span class="cline-any cline-
|
|
672
|
+
<span class="cline-any cline-no"> </span>
|
|
673
|
+
<span class="cline-any cline-no"> </span>
|
|
648
674
|
<span class="cline-any cline-neutral"> </span>
|
|
649
675
|
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-
|
|
651
|
-
<span class="cline-any cline-
|
|
676
|
+
<span class="cline-any cline-no"> </span>
|
|
677
|
+
<span class="cline-any cline-no"> </span>
|
|
652
678
|
<span class="cline-any cline-neutral"> </span>
|
|
653
679
|
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-
|
|
655
|
-
<span class="cline-any cline-
|
|
680
|
+
<span class="cline-any cline-no"> </span>
|
|
681
|
+
<span class="cline-any cline-no"> </span>
|
|
656
682
|
<span class="cline-any cline-neutral"> </span>
|
|
657
683
|
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-
|
|
659
|
-
<span class="cline-any cline-
|
|
684
|
+
<span class="cline-any cline-no"> </span>
|
|
685
|
+
<span class="cline-any cline-no"> </span>
|
|
660
686
|
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-yes">11x</span>
|
|
662
|
-
<span class="cline-any cline-yes">9x</span>
|
|
663
|
-
<span class="cline-any cline-yes">4x</span>
|
|
664
|
-
<span class="cline-any cline-yes">4x</span>
|
|
665
687
|
<span class="cline-any cline-no"> </span>
|
|
666
|
-
<span class="cline-any cline-
|
|
667
|
-
<span class="cline-any cline-
|
|
688
|
+
<span class="cline-any cline-no"> </span>
|
|
689
|
+
<span class="cline-any cline-no"> </span>
|
|
690
|
+
<span class="cline-any cline-no"> </span>
|
|
691
|
+
<span class="cline-any cline-no"> </span>
|
|
692
|
+
<span class="cline-any cline-no"> </span>
|
|
693
|
+
<span class="cline-any cline-no"> </span>
|
|
668
694
|
<span class="cline-any cline-neutral"> </span>
|
|
669
695
|
<span class="cline-any cline-neutral"> </span>
|
|
670
696
|
<span class="cline-any cline-neutral"> </span>
|
|
671
697
|
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-
|
|
698
|
+
<span class="cline-any cline-no"> </span>
|
|
673
699
|
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-
|
|
675
|
-
<span class="cline-any cline-
|
|
700
|
+
<span class="cline-any cline-no"> </span>
|
|
701
|
+
<span class="cline-any cline-no"> </span>
|
|
676
702
|
<span class="cline-any cline-neutral"> </span>
|
|
677
703
|
<span class="cline-any cline-neutral"> </span>
|
|
678
704
|
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-
|
|
705
|
+
<span class="cline-any cline-no"> </span>
|
|
680
706
|
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-
|
|
707
|
+
<span class="cline-any cline-no"> </span>
|
|
682
708
|
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-
|
|
684
|
-
<span class="cline-any cline-
|
|
685
|
-
<span class="cline-any cline-
|
|
686
|
-
<span class="cline-any cline-
|
|
687
|
-
<span class="cline-any cline-
|
|
688
|
-
<span class="cline-any cline-
|
|
709
|
+
<span class="cline-any cline-no"> </span>
|
|
710
|
+
<span class="cline-any cline-no"> </span>
|
|
711
|
+
<span class="cline-any cline-no"> </span>
|
|
712
|
+
<span class="cline-any cline-no"> </span>
|
|
713
|
+
<span class="cline-any cline-no"> </span>
|
|
714
|
+
<span class="cline-any cline-no"> </span>
|
|
689
715
|
<span class="cline-any cline-neutral"> </span>
|
|
690
716
|
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-
|
|
692
|
-
<span class="cline-any cline-
|
|
717
|
+
<span class="cline-any cline-no"> </span>
|
|
718
|
+
<span class="cline-any cline-no"> </span>
|
|
693
719
|
<span class="cline-any cline-neutral"> </span>
|
|
694
720
|
<span class="cline-any cline-no"> </span>
|
|
695
721
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -698,44 +724,44 @@
|
|
|
698
724
|
<span class="cline-any cline-neutral"> </span>
|
|
699
725
|
<span class="cline-any cline-neutral"> </span>
|
|
700
726
|
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-
|
|
702
|
-
<span class="cline-any cline-
|
|
703
|
-
<span class="cline-any cline-
|
|
704
|
-
<span class="cline-any cline-
|
|
705
|
-
<span class="cline-any cline-
|
|
727
|
+
<span class="cline-any cline-no"> </span>
|
|
728
|
+
<span class="cline-any cline-no"> </span>
|
|
729
|
+
<span class="cline-any cline-no"> </span>
|
|
730
|
+
<span class="cline-any cline-no"> </span>
|
|
731
|
+
<span class="cline-any cline-no"> </span>
|
|
706
732
|
<span class="cline-any cline-neutral"> </span>
|
|
707
733
|
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-
|
|
734
|
+
<span class="cline-any cline-no"> </span>
|
|
709
735
|
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-
|
|
711
|
-
<span class="cline-any cline-
|
|
736
|
+
<span class="cline-any cline-no"> </span>
|
|
737
|
+
<span class="cline-any cline-no"> </span>
|
|
712
738
|
<span class="cline-any cline-neutral"> </span>
|
|
713
739
|
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-
|
|
740
|
+
<span class="cline-any cline-no"> </span>
|
|
715
741
|
<span class="cline-any cline-neutral"> </span>
|
|
716
742
|
<span class="cline-any cline-neutral"> </span>
|
|
717
743
|
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-
|
|
744
|
+
<span class="cline-any cline-no"> </span>
|
|
719
745
|
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-
|
|
721
|
-
<span class="cline-any cline-
|
|
722
|
-
<span class="cline-any cline-
|
|
746
|
+
<span class="cline-any cline-no"> </span>
|
|
747
|
+
<span class="cline-any cline-no"> </span>
|
|
748
|
+
<span class="cline-any cline-no"> </span>
|
|
723
749
|
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-
|
|
750
|
+
<span class="cline-any cline-no"> </span>
|
|
725
751
|
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
727
753
|
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-
|
|
729
|
-
<span class="cline-any cline-
|
|
730
|
-
<span class="cline-any cline-
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </span>
|
|
756
|
+
<span class="cline-any cline-no"> </span>
|
|
731
757
|
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-
|
|
733
|
-
<span class="cline-any cline-
|
|
758
|
+
<span class="cline-any cline-no"> </span>
|
|
759
|
+
<span class="cline-any cline-no"> </span>
|
|
734
760
|
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-
|
|
761
|
+
<span class="cline-any cline-no"> </span>
|
|
736
762
|
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-
|
|
738
|
-
<span class="cline-any cline-
|
|
763
|
+
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
739
765
|
<span class="cline-any cline-neutral"> </span>
|
|
740
766
|
<span class="cline-any cline-no"> </span>
|
|
741
767
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -743,129 +769,155 @@
|
|
|
743
769
|
<span class="cline-any cline-neutral"> </span>
|
|
744
770
|
<span class="cline-any cline-neutral"> </span>
|
|
745
771
|
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-
|
|
747
|
-
<span class="cline-any cline-
|
|
748
|
-
<span class="cline-any cline-
|
|
749
|
-
<span class="cline-any cline-
|
|
750
|
-
<span class="cline-any cline-
|
|
772
|
+
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-no"> </span>
|
|
774
|
+
<span class="cline-any cline-no"> </span>
|
|
775
|
+
<span class="cline-any cline-no"> </span>
|
|
776
|
+
<span class="cline-any cline-no"> </span>
|
|
751
777
|
<span class="cline-any cline-neutral"> </span>
|
|
752
778
|
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-
|
|
754
|
-
<span class="cline-any cline-
|
|
755
|
-
<span class="cline-any cline-
|
|
756
|
-
<span class="cline-any cline-
|
|
779
|
+
<span class="cline-any cline-no"> </span>
|
|
780
|
+
<span class="cline-any cline-no"> </span>
|
|
781
|
+
<span class="cline-any cline-no"> </span>
|
|
782
|
+
<span class="cline-any cline-no"> </span>
|
|
757
783
|
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-
|
|
784
|
+
<span class="cline-any cline-no"> </span>
|
|
759
785
|
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-
|
|
761
|
-
<span class="cline-any cline-
|
|
786
|
+
<span class="cline-any cline-no"> </span>
|
|
787
|
+
<span class="cline-any cline-no"> </span>
|
|
762
788
|
<span class="cline-any cline-neutral"> </span>
|
|
763
789
|
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-
|
|
765
|
-
<span class="cline-any cline-
|
|
790
|
+
<span class="cline-any cline-no"> </span>
|
|
791
|
+
<span class="cline-any cline-no"> </span>
|
|
766
792
|
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-
|
|
793
|
+
<span class="cline-any cline-no"> </span>
|
|
768
794
|
<span class="cline-any cline-neutral"> </span>
|
|
769
795
|
<span class="cline-any cline-neutral"> </span>
|
|
770
796
|
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-
|
|
772
|
-
<span class="cline-any cline-
|
|
797
|
+
<span class="cline-any cline-no"> </span>
|
|
798
|
+
<span class="cline-any cline-no"> </span>
|
|
773
799
|
<span class="cline-any cline-no"> </span>
|
|
774
800
|
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-
|
|
801
|
+
<span class="cline-any cline-no"> </span>
|
|
776
802
|
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-
|
|
778
|
-
<span class="cline-any cline-
|
|
779
|
-
<span class="cline-any cline-
|
|
803
|
+
<span class="cline-any cline-no"> </span>
|
|
804
|
+
<span class="cline-any cline-no"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
780
806
|
<span class="cline-any cline-neutral"> </span>
|
|
781
807
|
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-
|
|
783
|
-
<span class="cline-any cline-
|
|
784
|
-
<span class="cline-any cline-
|
|
785
|
-
<span class="cline-any cline-
|
|
786
|
-
<span class="cline-any cline-
|
|
787
|
-
<span class="cline-any cline-
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-no"> </span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-no"> </span>
|
|
788
816
|
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-yes">4x</span>
|
|
790
|
-
<span class="cline-any cline-yes">4x</span>
|
|
791
|
-
<span class="cline-any cline-yes">4x</span>
|
|
792
|
-
<span class="cline-any cline-yes">3x</span>
|
|
793
|
-
<span class="cline-any cline-yes">3x</span>
|
|
794
|
-
<span class="cline-any cline-yes">3x</span>
|
|
795
817
|
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-no"> </span>
|
|
819
|
+
<span class="cline-any cline-no"> </span>
|
|
796
820
|
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-
|
|
821
|
+
<span class="cline-any cline-no"> </span>
|
|
798
822
|
<span class="cline-any cline-neutral"> </span>
|
|
823
|
+
<span class="cline-any cline-no"> </span>
|
|
799
824
|
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-
|
|
801
|
-
<span class="cline-any cline-
|
|
802
|
-
<span class="cline-any cline-yes">1x</span>
|
|
803
|
-
<span class="cline-any cline-yes">1x</span>
|
|
825
|
+
<span class="cline-any cline-no"> </span>
|
|
826
|
+
<span class="cline-any cline-no"> </span>
|
|
804
827
|
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-
|
|
828
|
+
<span class="cline-any cline-no"> </span>
|
|
806
829
|
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-
|
|
830
|
+
<span class="cline-any cline-no"> </span>
|
|
831
|
+
<span class="cline-any cline-no"> </span>
|
|
832
|
+
<span class="cline-any cline-no"> </span>
|
|
808
833
|
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-
|
|
810
|
-
<span class="cline-any cline-yes">1x</span>
|
|
811
|
-
<span class="cline-any cline-yes">1x</span>
|
|
834
|
+
<span class="cline-any cline-no"> </span>
|
|
812
835
|
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-yes">1x</span>
|
|
814
836
|
<span class="cline-any cline-neutral"> </span>
|
|
815
837
|
<span class="cline-any cline-no"> </span>
|
|
838
|
+
<span class="cline-any cline-no"> </span>
|
|
816
839
|
<span class="cline-any cline-neutral"> </span>
|
|
840
|
+
<span class="cline-any cline-no"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
844
|
+
<span class="cline-any cline-no"> </span>
|
|
817
845
|
<span class="cline-any cline-neutral"> </span>
|
|
846
|
+
<span class="cline-any cline-no"> </span>
|
|
847
|
+
<span class="cline-any cline-no"> </span>
|
|
848
|
+
<span class="cline-any cline-no"> </span>
|
|
849
|
+
<span class="cline-any cline-no"> </span>
|
|
818
850
|
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-yes">3x</span>
|
|
820
851
|
<span class="cline-any cline-neutral"> </span>
|
|
852
|
+
<span class="cline-any cline-no"> </span>
|
|
853
|
+
<span class="cline-any cline-no"> </span>
|
|
854
|
+
<span class="cline-any cline-no"> </span>
|
|
855
|
+
<span class="cline-any cline-no"> </span>
|
|
821
856
|
<span class="cline-any cline-neutral"> </span>
|
|
822
857
|
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-
|
|
858
|
+
<span class="cline-any cline-no"> </span>
|
|
859
|
+
<span class="cline-any cline-no"> </span>
|
|
860
|
+
<span class="cline-any cline-no"> </span>
|
|
861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
862
|
+
<span class="cline-any cline-no"> </span>
|
|
863
|
+
<span class="cline-any cline-no"> </span>
|
|
824
864
|
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-no"> </span>
|
|
866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
867
|
+
<span class="cline-any cline-no"> </span>
|
|
825
868
|
<span class="cline-any cline-neutral"> </span>
|
|
826
869
|
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-yes">5x</span>
|
|
828
|
-
<span class="cline-any cline-yes">5x</span>
|
|
829
870
|
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-
|
|
871
|
+
<span class="cline-any cline-no"> </span>
|
|
831
872
|
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-yes">5x</span>
|
|
833
|
-
<span class="cline-any cline-yes">5x</span>
|
|
834
873
|
<span class="cline-any cline-neutral"> </span>
|
|
835
874
|
<span class="cline-any cline-neutral"> </span>
|
|
836
875
|
<span class="cline-any cline-no"> </span>
|
|
837
876
|
<span class="cline-any cline-neutral"> </span>
|
|
838
877
|
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-yes">5x</span>
|
|
840
878
|
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-
|
|
842
|
-
<span class="cline-any cline-
|
|
879
|
+
<span class="cline-any cline-no"> </span>
|
|
880
|
+
<span class="cline-any cline-no"> </span>
|
|
843
881
|
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-
|
|
845
|
-
<span class="cline-any cline-yes">5x</span>
|
|
882
|
+
<span class="cline-any cline-no"> </span>
|
|
846
883
|
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-
|
|
848
|
-
<span class="cline-any cline-
|
|
884
|
+
<span class="cline-any cline-no"> </span>
|
|
885
|
+
<span class="cline-any cline-no"> </span>
|
|
849
886
|
<span class="cline-any cline-neutral"> </span>
|
|
850
887
|
<span class="cline-any cline-neutral"> </span>
|
|
851
888
|
<span class="cline-any cline-no"> </span>
|
|
852
889
|
<span class="cline-any cline-neutral"> </span>
|
|
853
890
|
<span class="cline-any cline-neutral"> </span>
|
|
891
|
+
<span class="cline-any cline-no"> </span>
|
|
854
892
|
<span class="cline-any cline-neutral"> </span>
|
|
893
|
+
<span class="cline-any cline-no"> </span>
|
|
894
|
+
<span class="cline-any cline-no"> </span>
|
|
855
895
|
<span class="cline-any cline-neutral"> </span>
|
|
896
|
+
<span class="cline-any cline-no"> </span>
|
|
897
|
+
<span class="cline-any cline-no"> </span>
|
|
856
898
|
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-
|
|
858
|
-
<span class="cline-any cline-
|
|
859
|
-
<span class="cline-any cline-yes">5x</span>
|
|
899
|
+
<span class="cline-any cline-no"> </span>
|
|
900
|
+
<span class="cline-any cline-no"> </span>
|
|
860
901
|
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-yes">5x</span>
|
|
862
902
|
<span class="cline-any cline-neutral"> </span>
|
|
903
|
+
<span class="cline-any cline-no"> </span>
|
|
863
904
|
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-yes">5x</span>
|
|
865
|
-
<span class="cline-any cline-yes">5x</span>
|
|
866
|
-
<span class="cline-any cline-yes">5x</span>
|
|
867
905
|
<span class="cline-any cline-neutral"> </span>
|
|
868
|
-
<span class="cline-any cline-
|
|
906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
907
|
+
<span class="cline-any cline-neutral"> </span>
|
|
908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
909
|
+
<span class="cline-any cline-no"> </span>
|
|
910
|
+
<span class="cline-any cline-no"> </span>
|
|
911
|
+
<span class="cline-any cline-no"> </span>
|
|
912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
913
|
+
<span class="cline-any cline-no"> </span>
|
|
914
|
+
<span class="cline-any cline-neutral"> </span>
|
|
915
|
+
<span class="cline-any cline-neutral"> </span>
|
|
916
|
+
<span class="cline-any cline-no"> </span>
|
|
917
|
+
<span class="cline-any cline-no"> </span>
|
|
918
|
+
<span class="cline-any cline-no"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
920
|
+
<span class="cline-any cline-no"> </span>
|
|
869
921
|
<span class="cline-any cline-no"> </span>
|
|
870
922
|
<span class="cline-any cline-no"> </span>
|
|
871
923
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -947,54 +999,54 @@
|
|
|
947
999
|
<span class="cline-any cline-neutral"> </span>
|
|
948
1000
|
<span class="cline-any cline-neutral"> </span>
|
|
949
1001
|
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-
|
|
1002
|
+
<span class="cline-any cline-no"> </span>
|
|
951
1003
|
<span class="cline-any cline-neutral"> </span>
|
|
952
1004
|
<span class="cline-any cline-neutral"> </span>
|
|
953
|
-
<span class="cline-any cline-
|
|
1005
|
+
<span class="cline-any cline-no"> </span>
|
|
954
1006
|
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-
|
|
1007
|
+
<span class="cline-any cline-no"> </span>
|
|
956
1008
|
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
958
1010
|
<span class="cline-any cline-neutral"> </span>
|
|
959
1011
|
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-
|
|
1012
|
+
<span class="cline-any cline-no"> </span>
|
|
961
1013
|
<span class="cline-any cline-no"> </span>
|
|
962
1014
|
<span class="cline-any cline-no"> </span>
|
|
963
1015
|
<span class="cline-any cline-no"> </span>
|
|
964
1016
|
<span class="cline-any cline-neutral"> </span>
|
|
965
1017
|
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-
|
|
1018
|
+
<span class="cline-any cline-no"> </span>
|
|
967
1019
|
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-
|
|
969
|
-
<span class="cline-any cline-
|
|
970
|
-
<span class="cline-any cline-
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1021
|
+
<span class="cline-any cline-no"> </span>
|
|
1022
|
+
<span class="cline-any cline-no"> </span>
|
|
971
1023
|
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-
|
|
973
|
-
<span class="cline-any cline-
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-no"> </span>
|
|
974
1026
|
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
976
1028
|
<span class="cline-any cline-neutral"> </span>
|
|
977
1029
|
<span class="cline-any cline-neutral"> </span>
|
|
978
1030
|
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
980
1032
|
<span class="cline-any cline-no"> </span>
|
|
981
1033
|
<span class="cline-any cline-neutral"> </span>
|
|
982
1034
|
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-
|
|
984
|
-
<span class="cline-any cline-
|
|
1035
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
|
+
<span class="cline-any cline-no"> </span>
|
|
985
1037
|
<span class="cline-any cline-neutral"> </span>
|
|
986
1038
|
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-
|
|
988
|
-
<span class="cline-any cline-
|
|
1039
|
+
<span class="cline-any cline-no"> </span>
|
|
1040
|
+
<span class="cline-any cline-no"> </span>
|
|
989
1041
|
<span class="cline-any cline-neutral"> </span>
|
|
990
1042
|
<span class="cline-any cline-neutral"> </span>
|
|
991
1043
|
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-
|
|
993
|
-
<span class="cline-any cline-
|
|
994
|
-
<span class="cline-any cline-
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-no"> </span>
|
|
1046
|
+
<span class="cline-any cline-no"> </span>
|
|
995
1047
|
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-
|
|
997
|
-
<span class="cline-any cline-
|
|
1048
|
+
<span class="cline-any cline-no"> </span>
|
|
1049
|
+
<span class="cline-any cline-no"> </span>
|
|
998
1050
|
<span class="cline-any cline-neutral"> </span>
|
|
999
1051
|
<span class="cline-any cline-no"> </span>
|
|
1000
1052
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1021,49 +1073,49 @@
|
|
|
1021
1073
|
<span class="cline-any cline-neutral"> </span>
|
|
1022
1074
|
<span class="cline-any cline-neutral"> </span>
|
|
1023
1075
|
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-
|
|
1025
|
-
<span class="cline-any cline-
|
|
1026
|
-
<span class="cline-any cline-
|
|
1027
|
-
<span class="cline-any cline-
|
|
1028
|
-
<span class="cline-any cline-
|
|
1029
|
-
<span class="cline-any cline-
|
|
1076
|
+
<span class="cline-any cline-no"> </span>
|
|
1077
|
+
<span class="cline-any cline-no"> </span>
|
|
1078
|
+
<span class="cline-any cline-no"> </span>
|
|
1079
|
+
<span class="cline-any cline-no"> </span>
|
|
1080
|
+
<span class="cline-any cline-no"> </span>
|
|
1081
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
1082
|
<span class="cline-any cline-neutral"> </span>
|
|
1031
1083
|
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-
|
|
1033
|
-
<span class="cline-any cline-
|
|
1034
|
-
<span class="cline-any cline-
|
|
1035
|
-
<span class="cline-any cline-
|
|
1084
|
+
<span class="cline-any cline-no"> </span>
|
|
1085
|
+
<span class="cline-any cline-no"> </span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
1087
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
1088
|
<span class="cline-any cline-neutral"> </span>
|
|
1037
1089
|
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-
|
|
1090
|
+
<span class="cline-any cline-no"> </span>
|
|
1039
1091
|
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-
|
|
1092
|
+
<span class="cline-any cline-no"> </span>
|
|
1041
1093
|
<span class="cline-any cline-neutral"> </span>
|
|
1042
1094
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import path from 'path'
|
|
1043
1095
|
import url from 'url'
|
|
1044
1096
|
import makeDebug from 'debug'
|
|
1045
1097
|
import logger from 'winston'
|
|
1046
|
-
import _ from 'lodash'
|
|
1047
|
-
import sift from 'sift'
|
|
1048
|
-
import 'winston-daily-rotate-file'
|
|
1049
|
-
import compress from 'compression'
|
|
1050
|
-
import cors from 'cors'
|
|
1051
|
-
import helmet from 'helmet'
|
|
1052
|
-
import bodyParser from 'body-parser'
|
|
1053
|
-
import { RateLimiter as SocketLimiter } from 'limiter'
|
|
1054
|
-
import HttpLimiter from 'express-rate-limit'
|
|
1055
|
-
import feathers from '@feathersjs/feathers'
|
|
1056
|
-
import configuration from '@feathersjs/configuration'
|
|
1057
|
-
import { TooManyRequests, Forbidden, BadRequest } from '@feathersjs/errors'
|
|
1058
|
-
import express from '@feathersjs/express'
|
|
1059
|
-
import rest from '@feathersjs/express/rest'
|
|
1060
|
-
import socketio from '@feathersjs/socketio'
|
|
1061
|
-
import { ObjectID } from 'mongodb'
|
|
1062
|
-
import { Database, idToString } from './db'
|
|
1063
|
-
import auth, { authSocket } from './authentication'
|
|
1098
|
+
<span class="cstat-no" title="statement not covered" >import _ from 'lodash'</span>
|
|
1099
|
+
<span class="cstat-no" title="statement not covered" >import sift from 'sift'</span>
|
|
1100
|
+
<span class="cstat-no" title="statement not covered" >import 'winston-daily-rotate-file'</span>
|
|
1101
|
+
<span class="cstat-no" title="statement not covered" >import compress from 'compression'</span>
|
|
1102
|
+
<span class="cstat-no" title="statement not covered" >import cors from 'cors'</span>
|
|
1103
|
+
<span class="cstat-no" title="statement not covered" >import helmet from 'helmet'</span>
|
|
1104
|
+
<span class="cstat-no" title="statement not covered" >import bodyParser from 'body-parser'</span>
|
|
1105
|
+
<span class="cstat-no" title="statement not covered" >import { RateLimiter as SocketLimiter } from 'limiter'</span>
|
|
1106
|
+
<span class="cstat-no" title="statement not covered" >import HttpLimiter from 'express-rate-limit'</span>
|
|
1107
|
+
<span class="cstat-no" title="statement not covered" >import feathers from '@feathersjs/feathers'</span>
|
|
1108
|
+
<span class="cstat-no" title="statement not covered" >import configuration from '@feathersjs/configuration'</span>
|
|
1109
|
+
<span class="cstat-no" title="statement not covered" >import { TooManyRequests, Forbidden, BadRequest } from '@feathersjs/errors'</span>
|
|
1110
|
+
<span class="cstat-no" title="statement not covered" >import express from '@feathersjs/express'</span>
|
|
1111
|
+
<span class="cstat-no" title="statement not covered" >import rest from '@feathersjs/express/rest'</span>
|
|
1112
|
+
<span class="cstat-no" title="statement not covered" >import socketio from '@feathersjs/socketio'</span>
|
|
1113
|
+
<span class="cstat-no" title="statement not covered" >import { ObjectID } from 'mongodb'</span>
|
|
1114
|
+
<span class="cstat-no" title="statement not covered" >import { Database, idToString } from './db'</span>
|
|
1115
|
+
<span class="cstat-no" title="statement not covered" >import auth, { authSocket } from './authentication'</span>
|
|
1064
1116
|
|
|
1065
|
-
const debug = makeDebug('kdk:core:application')
|
|
1066
|
-
const debugLimiter = makeDebug('kdk:core:application:limiter')
|
|
1117
|
+
const debug = <span class="cstat-no" title="statement not covered" >makeDebug('</span>kdk:core:application')
|
|
1118
|
+
const debugLimiter = <span class="cstat-no" title="statement not covered" >makeDebug('</span>kdk:core:application:limiter')
|
|
1067
1119
|
|
|
1068
1120
|
function <span class="fstat-no" title="function not covered" >tooManyRequests (s</span>ocket, message, key) {
|
|
1069
1121
|
<span class="cstat-no" title="statement not covered" > debug(m</span>essage)
|
|
@@ -1073,114 +1125,114 @@ function <span class="fstat-no" title="function not covered" >tooManyRequests (s
|
|
|
1073
1125
|
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >(</span>) => <span class="cstat-no" title="statement not covered" >s</span>ocket.d</span>isconnect(true), 3000)
|
|
1074
1126
|
}
|
|
1075
1127
|
|
|
1076
|
-
export function declareService (
|
|
1077
|
-
const feathersPath = app.get('apiPath') + '/' + path
|
|
1078
|
-
const feathersService = app.
|
|
1128
|
+
export function <span class="fstat-no" title="function not covered" >declareService (p</span>ath, app, service, middlewares = <span class="branch-0 cbranch-no" title="branch not covered" >{}) {</span>
|
|
1129
|
+
const feathersPath = <span class="cstat-no" title="statement not covered" >app.get('apiPath') + '/' + path</span>
|
|
1130
|
+
const feathersService = <span class="cstat-no" title="statement not covered" >app.s</span>ervice(feathersPath)
|
|
1079
1131
|
// Some internal Feathers service might internally declare the service
|
|
1080
|
-
if (feathersService) {
|
|
1081
|
-
return
|
|
1132
|
+
<span class="cstat-no" title="statement not covered" > if (feathersService) {</span>
|
|
1133
|
+
<span class="cstat-no" title="statement not covered" > return f</span>eathersService
|
|
1082
1134
|
}
|
|
1083
1135
|
// Initialize our service by providing any middleware as well
|
|
1084
|
-
let args = [
|
|
1085
|
-
if (middlewares.before) args =
|
|
1086
|
-
args.
|
|
1087
|
-
|
|
1088
|
-
app.
|
|
1089
|
-
debug('Service declared on path ' + feathersPath)
|
|
1136
|
+
let args = <span class="cstat-no" title="statement not covered" >[f</span>eathersPath]
|
|
1137
|
+
<span class="cstat-no" title="statement not covered" > if (middlewares.before) <span class="cstat-no" title="statement not covered" >args = a</span></span>rgs.concat(middlewares.before)
|
|
1138
|
+
<span class="cstat-no" title="statement not covered" > args.p</span>ush(service)
|
|
1139
|
+
<span class="cstat-no" title="statement not covered" > if (middlewares.after) <span class="cstat-no" title="statement not covered" >args = a</span></span>rgs.concat(middlewares.after)
|
|
1140
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se.apply(app, args)
|
|
1141
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>Service declared on path ' + feathersPath)
|
|
1090
1142
|
// Return the Feathers service, ie base service + Feathers' internals
|
|
1091
|
-
return
|
|
1143
|
+
<span class="cstat-no" title="statement not covered" > return a</span>pp.service(feathersPath)
|
|
1092
1144
|
}
|
|
1093
1145
|
|
|
1094
|
-
export function configureService (
|
|
1095
|
-
try {
|
|
1096
|
-
const hooks = require(
|
|
1097
|
-
service.
|
|
1098
|
-
debug(
|
|
1146
|
+
export function <span class="fstat-no" title="function not covered" >configureService (n</span>ame, service, servicesPath) {
|
|
1147
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1148
|
+
const hooks = <span class="cstat-no" title="statement not covered" >require(p</span>ath.join(servicesPath, name, name + '.hooks'))
|
|
1149
|
+
<span class="cstat-no" title="statement not covered" > service.h</span>ooks(hooks)
|
|
1150
|
+
<span class="cstat-no" title="statement not covered" > debug(n</span>ame + ' service hooks configured on path ' + servicesPath)
|
|
1099
1151
|
} catch (error) {
|
|
1100
|
-
debug('No ' + name + ' service hooks configured on path ' + servicesPath)
|
|
1101
|
-
|
|
1152
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>No ' + name + ' service hooks configured on path ' + servicesPath)
|
|
1153
|
+
<span class="cstat-no" title="statement not covered" > if (error.code !== 'MODULE_NOT_FOUND') {</span>
|
|
1102
1154
|
// Log error in this case as this might be linked to a syntax error in required file
|
|
1103
1155
|
<span class="cstat-no" title="statement not covered" > debug(e</span>rror)
|
|
1104
1156
|
}
|
|
1105
1157
|
// As this is optionnal this require has to fail silently
|
|
1106
1158
|
}
|
|
1107
1159
|
|
|
1108
|
-
try {
|
|
1109
|
-
const channels = require(
|
|
1110
|
-
_.
|
|
1111
|
-
|
|
1160
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1161
|
+
const channels = <span class="cstat-no" title="statement not covered" >require(p</span>ath.join(servicesPath, name, name + '.channels'))
|
|
1162
|
+
<span class="cstat-no" title="statement not covered" > _.f</span>orOwn(channels, <span class="fstat-no" title="function not covered" >(p</span>ublisher, event) => {
|
|
1163
|
+
<span class="cstat-no" title="statement not covered" > if (event === 'all') <span class="cstat-no" title="statement not covered" >service.p</span>ublish(publisher)</span>
|
|
1112
1164
|
else <span class="cstat-no" title="statement not covered" >service.p</span>ublish(event, publisher)
|
|
1113
1165
|
})
|
|
1114
|
-
debug(
|
|
1166
|
+
<span class="cstat-no" title="statement not covered" > debug(n</span>ame + ' service channels configured on path ' + servicesPath)
|
|
1115
1167
|
} catch (error) {
|
|
1116
|
-
debug('No ' + name + ' service channels configured on path ' + servicesPath)
|
|
1117
|
-
|
|
1168
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>No ' + name + ' service channels configured on path ' + servicesPath)
|
|
1169
|
+
<span class="cstat-no" title="statement not covered" > if (error.code !== 'MODULE_NOT_FOUND') {</span>
|
|
1118
1170
|
// Log error in this case as this might be linked to a syntax error in required file
|
|
1119
1171
|
<span class="cstat-no" title="statement not covered" > debug(e</span>rror)
|
|
1120
1172
|
}
|
|
1121
1173
|
// As this is optionnal this require has to fail silently
|
|
1122
1174
|
}
|
|
1123
1175
|
|
|
1124
|
-
return
|
|
1176
|
+
<span class="cstat-no" title="statement not covered" > return s</span>ervice
|
|
1125
1177
|
}
|
|
1126
1178
|
|
|
1127
|
-
export function createProxyService (
|
|
1128
|
-
const targetService = options.service
|
|
1129
|
-
function proxyParams (
|
|
1130
|
-
if (options.params) {
|
|
1179
|
+
export function <span class="fstat-no" title="function not covered" >createProxyService (o</span>ptions) {
|
|
1180
|
+
const targetService = <span class="cstat-no" title="statement not covered" >options.service</span>
|
|
1181
|
+
function <span class="fstat-no" title="function not covered" >proxyParams (p</span>arams) {
|
|
1182
|
+
<span class="cstat-no" title="statement not covered" > if (options.params) {</span>
|
|
1131
1183
|
let proxiedParams
|
|
1132
|
-
|
|
1184
|
+
<span class="cstat-no" title="statement not covered" > if (typeof options.params === 'function') {</span>
|
|
1133
1185
|
<span class="cstat-no" title="statement not covered" > proxiedParams = o</span>ptions.params(params)
|
|
1134
1186
|
} else {
|
|
1135
|
-
proxiedParams = _
|
|
1187
|
+
<span class="cstat-no" title="statement not covered" > proxiedParams = _</span>.merge(params, options.params)
|
|
1136
1188
|
}
|
|
1137
|
-
return
|
|
1138
|
-
} else return
|
|
1189
|
+
<span class="cstat-no" title="statement not covered" > return p</span>roxiedParams
|
|
1190
|
+
} else <span class="cstat-no" title="statement not covered" >return p</span>arams
|
|
1139
1191
|
}
|
|
1140
|
-
function proxyId (
|
|
1141
|
-
if (options.id) return
|
|
1142
|
-
else return
|
|
1192
|
+
function <span class="fstat-no" title="function not covered" >proxyId (i</span>d) {
|
|
1193
|
+
<span class="cstat-no" title="statement not covered" > if (options.id) <span class="cstat-no" title="statement not covered" >return o</span>ptions.id(id)</span>
|
|
1194
|
+
else <span class="cstat-no" title="statement not covered" >return i</span>d
|
|
1143
1195
|
}
|
|
1144
|
-
function proxyData (
|
|
1145
|
-
if (options.data) return
|
|
1146
|
-
else return
|
|
1196
|
+
function <span class="fstat-no" title="function not covered" >proxyData (d</span>ata) {
|
|
1197
|
+
<span class="cstat-no" title="statement not covered" > if (options.data) <span class="cstat-no" title="statement not covered" >return o</span>ptions.data(data)</span>
|
|
1198
|
+
else <span class="cstat-no" title="statement not covered" >return d</span>ata
|
|
1147
1199
|
}
|
|
1148
|
-
function proxyResult (
|
|
1149
|
-
if (options.result) return
|
|
1150
|
-
else return
|
|
1200
|
+
function <span class="fstat-no" title="function not covered" >proxyResult (d</span>ata) {
|
|
1201
|
+
<span class="cstat-no" title="statement not covered" > if (options.result) <span class="cstat-no" title="statement not covered" >return o</span>ptions.result(data)</span>
|
|
1202
|
+
else <span class="cstat-no" title="statement not covered" >return d</span>ata
|
|
1151
1203
|
}
|
|
1152
|
-
return {
|
|
1153
|
-
async find (
|
|
1154
|
-
async get (
|
|
1155
|
-
async create (
|
|
1204
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1205
|
+
async <span class="fstat-no" title="function not covered" >find (p</span>arams) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.find(proxyParams(params))) },
|
|
1206
|
+
async <span class="fstat-no" title="function not covered" >get (i</span>d, params) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.get(proxyId(id), proxyParams(params))) },
|
|
1207
|
+
async <span class="fstat-no" title="function not covered" >create (d</span>ata, params) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.create(proxyData(data), proxyParams(params))) },
|
|
1156
1208
|
async <span class="fstat-no" title="function not covered" >update (i</span>d, data, params) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.update(proxyId(id), proxyData(data), proxyParams(params))) },
|
|
1157
|
-
async patch (
|
|
1158
|
-
async remove (
|
|
1209
|
+
async <span class="fstat-no" title="function not covered" >patch (i</span>d, data, params) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.patch(proxyId(id), proxyData(data), proxyParams(params))) },
|
|
1210
|
+
async <span class="fstat-no" title="function not covered" >remove (i</span>d, params) <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{ <span class="cstat-no" title="statement not covered" >r</span></span>eturn p</span>roxyResult(await targetService.remove(proxyId(id), proxyParams(params))) }
|
|
1159
1211
|
}
|
|
1160
1212
|
}
|
|
1161
1213
|
|
|
1162
|
-
export function createService (
|
|
1163
|
-
const createFeathersService = require('feathers-' + app.db.adapter)
|
|
1214
|
+
export function <span class="fstat-no" title="function not covered" >createService (n</span>ame, app, options = <span class="branch-0 cbranch-no" title="branch not covered" >{}) {</span>
|
|
1215
|
+
const createFeathersService = <span class="cstat-no" title="statement not covered" >require('</span>feathers-' + app.db.adapter)
|
|
1164
1216
|
|
|
1165
|
-
const paginate = app.
|
|
1166
|
-
const serviceOptions = Object.
|
|
1217
|
+
const paginate = <span class="cstat-no" title="statement not covered" >app.g</span>et('paginate')
|
|
1218
|
+
const serviceOptions = <span class="cstat-no" title="statement not covered" >Object.a</span>ssign({
|
|
1167
1219
|
name: name,
|
|
1168
1220
|
paginate
|
|
1169
1221
|
}, options)
|
|
1170
|
-
|
|
1222
|
+
<span class="cstat-no" title="statement not covered" > if (serviceOptions.disabled) <span class="cstat-no" title="statement not covered" >return u</span></span>ndefined
|
|
1171
1223
|
// For DB services a model has to be provided
|
|
1172
|
-
const fileName = serviceOptions.fileName || name
|
|
1224
|
+
const fileName = <span class="cstat-no" title="statement not covered" >serviceOptions.fileName || name</span>
|
|
1173
1225
|
|
|
1174
|
-
let dbService = false
|
|
1175
|
-
try {
|
|
1176
|
-
if (serviceOptions.modelsPath) {
|
|
1177
|
-
const configureModel = require(
|
|
1178
|
-
configureModel(
|
|
1179
|
-
dbService =
|
|
1226
|
+
let dbService = <span class="cstat-no" title="statement not covered" >false</span>
|
|
1227
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1228
|
+
<span class="cstat-no" title="statement not covered" > if (serviceOptions.modelsPath) {</span>
|
|
1229
|
+
const configureModel = <span class="cstat-no" title="statement not covered" >require(p</span>ath.join(serviceOptions.modelsPath, fileName + '.model.' + app.db.adapter))
|
|
1230
|
+
<span class="cstat-no" title="statement not covered" > configureModel(a</span>pp, serviceOptions)
|
|
1231
|
+
<span class="cstat-no" title="statement not covered" > dbService = t</span>rue
|
|
1180
1232
|
}
|
|
1181
1233
|
} catch (error) {
|
|
1182
|
-
debug('No ' + fileName + ' service model configured on path ' + serviceOptions.modelsPath)
|
|
1183
|
-
|
|
1234
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>No ' + fileName + ' service model configured on path ' + serviceOptions.modelsPath)
|
|
1235
|
+
<span class="cstat-no" title="statement not covered" > if (error.code !== 'MODULE_NOT_FOUND') {</span>
|
|
1184
1236
|
// Log error in this case as this might be linked to a syntax error in required file
|
|
1185
1237
|
<span class="cstat-no" title="statement not covered" > debug(e</span>rror)
|
|
1186
1238
|
}
|
|
@@ -1189,44 +1241,44 @@ export function createService (name, app, options = <span class="branch-0 cbranc
|
|
|
1189
1241
|
|
|
1190
1242
|
// Initialize our service with any options it requires
|
|
1191
1243
|
let service
|
|
1192
|
-
if (dbService) {
|
|
1193
|
-
service =
|
|
1194
|
-
dbService =
|
|
1195
|
-
} else if (serviceOptions.proxy) {
|
|
1196
|
-
service =
|
|
1244
|
+
<span class="cstat-no" title="statement not covered" > if (dbService) {</span>
|
|
1245
|
+
<span class="cstat-no" title="statement not covered" > service = c</span>reateFeathersService(serviceOptions)
|
|
1246
|
+
<span class="cstat-no" title="statement not covered" > dbService = s</span>ervice
|
|
1247
|
+
} else <span class="cstat-no" title="statement not covered" >if (serviceOptions.proxy) {</span>
|
|
1248
|
+
<span class="cstat-no" title="statement not covered" > service = c</span>reateProxyService(serviceOptions.proxy)
|
|
1197
1249
|
} else {
|
|
1198
1250
|
// Otherwise we expect the service to be provided as a Feathers service interface
|
|
1199
|
-
service =
|
|
1251
|
+
<span class="cstat-no" title="statement not covered" > service = r</span>equire(path.join(serviceOptions.servicesPath, fileName, fileName + '.service'))
|
|
1200
1252
|
// If we get a function try to call it assuming it will return the service object
|
|
1201
|
-
if (typeof service === 'function') {
|
|
1202
|
-
service =
|
|
1253
|
+
<span class="cstat-no" title="statement not covered" > if (typeof service === 'function') {</span>
|
|
1254
|
+
<span class="cstat-no" title="statement not covered" > service = s</span>ervice(name, app, serviceOptions)
|
|
1203
1255
|
}
|
|
1204
1256
|
// Need to set this manually for services not using class inheritance or default adapters
|
|
1205
|
-
if (serviceOptions.events) service.
|
|
1257
|
+
<span class="cstat-no" title="statement not covered" > if (serviceOptions.events) <span class="cstat-no" title="statement not covered" >service.e</span></span>vents = serviceOptions.events
|
|
1206
1258
|
}
|
|
1207
1259
|
|
|
1208
1260
|
// Get our initialized service so that we can register hooks and filters
|
|
1209
|
-
let servicePath = serviceOptions.path || name
|
|
1261
|
+
let servicePath = <span class="cstat-no" title="statement not covered" >serviceOptions.path || name</span>
|
|
1210
1262
|
let contextId
|
|
1211
|
-
if (serviceOptions.context) {
|
|
1212
|
-
contextId =
|
|
1213
|
-
servicePath =
|
|
1263
|
+
<span class="cstat-no" title="statement not covered" > if (serviceOptions.context) {</span>
|
|
1264
|
+
<span class="cstat-no" title="statement not covered" > contextId = i</span>dToString(serviceOptions.context)
|
|
1265
|
+
<span class="cstat-no" title="statement not covered" > servicePath = c</span>ontextId + '/' + servicePath
|
|
1214
1266
|
}
|
|
1215
|
-
service =
|
|
1267
|
+
<span class="cstat-no" title="statement not covered" > service = d</span>eclareService(servicePath, app, service, serviceOptions.middlewares)
|
|
1216
1268
|
// Register hooks and event filters
|
|
1217
|
-
service =
|
|
1269
|
+
<span class="cstat-no" title="statement not covered" > service = c</span>onfigureService(fileName, service, serviceOptions.servicesPath)
|
|
1218
1270
|
// Optionnally a specific service mixin can be provided, apply it
|
|
1219
|
-
if (dbService && serviceOptions.servicesPath) {
|
|
1220
|
-
try {
|
|
1221
|
-
let serviceMixin = require(
|
|
1271
|
+
<span class="cstat-no" title="statement not covered" > if (dbService && serviceOptions.servicesPath) {</span>
|
|
1272
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1273
|
+
let serviceMixin = <span class="cstat-no" title="statement not covered" >require(p</span>ath.join(serviceOptions.servicesPath, fileName, fileName + '.service'))
|
|
1222
1274
|
// If we get a function try to call it assuming it will return the mixin object
|
|
1223
|
-
|
|
1224
|
-
serviceMixin =
|
|
1275
|
+
<span class="cstat-no" title="statement not covered" > if (typeof serviceMixin === 'function') {</span>
|
|
1276
|
+
<span class="cstat-no" title="statement not covered" > serviceMixin = s</span>erviceMixin.bind(dbService)(fileName, app, serviceOptions)
|
|
1225
1277
|
}
|
|
1226
|
-
service.
|
|
1278
|
+
<span class="cstat-no" title="statement not covered" > service.m</span>ixin(serviceMixin)
|
|
1227
1279
|
} catch (error) {
|
|
1228
|
-
debug('No ' + fileName + ' service mixin configured on path ' + serviceOptions.servicesPath)
|
|
1229
|
-
|
|
1280
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>No ' + fileName + ' service mixin configured on path ' + serviceOptions.servicesPath)
|
|
1281
|
+
<span class="cstat-no" title="statement not covered" > if (error.code !== 'MODULE_NOT_FOUND') {</span>
|
|
1230
1282
|
// Log error in this case as this might be linked to a syntax error in required file
|
|
1231
1283
|
<span class="cstat-no" title="statement not covered" > debug(e</span>rror)
|
|
1232
1284
|
}
|
|
@@ -1234,109 +1286,135 @@ export function createService (name, app, options = <span class="branch-0 cbranc
|
|
|
1234
1286
|
}
|
|
1235
1287
|
}
|
|
1236
1288
|
// Then configuration
|
|
1237
|
-
service.
|
|
1238
|
-
service.
|
|
1239
|
-
service.
|
|
1240
|
-
service.
|
|
1241
|
-
service.
|
|
1289
|
+
<span class="cstat-no" title="statement not covered" > service.n</span>ame = name
|
|
1290
|
+
<span class="cstat-no" title="statement not covered" > service.a</span>pp = app
|
|
1291
|
+
<span class="cstat-no" title="statement not covered" > service.o</span>ptions = serviceOptions
|
|
1292
|
+
<span class="cstat-no" title="statement not covered" > service.p</span>ath = servicePath
|
|
1293
|
+
<span class="cstat-no" title="statement not covered" > service.c</span>ontext = serviceOptions.context
|
|
1242
1294
|
|
|
1243
1295
|
// Add some utility functions
|
|
1244
|
-
service.
|
|
1245
|
-
let path = service.path
|
|
1246
|
-
if (withApiPrefix) {
|
|
1247
|
-
path =
|
|
1296
|
+
<span class="cstat-no" title="statement not covered" > service.g</span>etPath = <span class="fstat-no" title="function not covered" >function (w</span>ithApiPrefix) {
|
|
1297
|
+
let path = <span class="cstat-no" title="statement not covered" >service.path</span>
|
|
1298
|
+
<span class="cstat-no" title="statement not covered" > if (withApiPrefix) {</span>
|
|
1299
|
+
<span class="cstat-no" title="statement not covered" > path = a</span>pp.get('apiPath') + '/' + path
|
|
1248
1300
|
}
|
|
1249
|
-
return
|
|
1301
|
+
<span class="cstat-no" title="statement not covered" > return p</span>ath
|
|
1250
1302
|
}
|
|
1251
|
-
service.
|
|
1252
|
-
return
|
|
1303
|
+
<span class="cstat-no" title="statement not covered" > service.g</span>etContextId = <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1304
|
+
<span class="cstat-no" title="statement not covered" > return c</span>ontextId // As string
|
|
1253
1305
|
}
|
|
1254
1306
|
|
|
1255
|
-
debug(
|
|
1256
|
-
app.
|
|
1307
|
+
<span class="cstat-no" title="statement not covered" > debug(s</span>ervice.name + ' service registration completed')
|
|
1308
|
+
<span class="cstat-no" title="statement not covered" > app.e</span>mit('service', service)
|
|
1257
1309
|
|
|
1258
|
-
return
|
|
1310
|
+
<span class="cstat-no" title="statement not covered" > return s</span>ervice
|
|
1259
1311
|
}
|
|
1260
1312
|
|
|
1261
|
-
export function createWebhook (
|
|
1262
|
-
let webhookPath = path
|
|
1263
|
-
|
|
1313
|
+
export function <span class="fstat-no" title="function not covered" >createWebhook (p</span>ath, app, options = <span class="branch-0 cbranch-no" title="branch not covered" >{}) {</span>
|
|
1314
|
+
let webhookPath = <span class="cstat-no" title="statement not covered" >path</span>
|
|
1315
|
+
<span class="cstat-no" title="statement not covered" > if (options.context) {</span>
|
|
1264
1316
|
<span class="cstat-no" title="statement not covered" > webhookPath = i</span>dToString(options.context) + '/' + webhookPath
|
|
1265
1317
|
}
|
|
1266
|
-
const isAllowed = (payload) => {
|
|
1318
|
+
const isAllowed = (<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >payload) => {</span></span>
|
|
1267
1319
|
// Default is to expose all services/operations
|
|
1268
|
-
|
|
1269
|
-
const result = [
|
|
1270
|
-
return
|
|
1320
|
+
<span class="cstat-no" title="statement not covered" > if (!options.filter) <span class="cstat-no" title="statement not covered" >return t</span></span>rue
|
|
1321
|
+
const result = <span class="cstat-no" title="statement not covered" >[p</span>ayload].filter(sift(options.filter))
|
|
1322
|
+
<span class="cstat-no" title="statement not covered" > return r</span>esult.length > 0
|
|
1271
1323
|
}
|
|
1272
1324
|
|
|
1273
|
-
app.
|
|
1274
|
-
const payload = req.body
|
|
1275
|
-
const config = app.
|
|
1276
|
-
res.
|
|
1277
|
-
const params = {}
|
|
1278
|
-
try {
|
|
1325
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > app.p</span></span>ost(app.get('apiPath') + '/webhooks/' + webhookPath, <span class="fstat-no" title="function not covered" >async (r</span>eq, res, next) => {
|
|
1326
|
+
const payload = <span class="cstat-no" title="statement not covered" >req.body</span>
|
|
1327
|
+
const config = <span class="cstat-no" title="statement not covered" >app.g</span>et('authentication')
|
|
1328
|
+
<span class="cstat-no" title="statement not covered" > res.s</span>et('content-type', 'application/json')
|
|
1329
|
+
const params = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1330
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1331
|
+
<span class="cstat-no" title="statement not covered" > if (options.preprocessor) {</span>
|
|
1332
|
+
<span class="cstat-no" title="statement not covered" > await o</span>ptions.preprocessor(req, res, payload)
|
|
1333
|
+
}
|
|
1279
1334
|
// Authenticate when required
|
|
1280
|
-
|
|
1281
|
-
try {
|
|
1282
|
-
|
|
1283
|
-
<span class="
|
|
1284
|
-
|
|
1285
|
-
|
|
1335
|
+
<span class="cstat-no" title="statement not covered" > if (config) {</span>
|
|
1336
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1337
|
+
// Token is in header or payload
|
|
1338
|
+
const header = <span class="cstat-no" title="statement not covered" >req.headers.authorization</span>
|
|
1339
|
+
let accessToken
|
|
1340
|
+
<span class="cstat-no" title="statement not covered" > if (header) {</span>
|
|
1341
|
+
// Should be of the form: 'Bearer xxx'
|
|
1342
|
+
const tokens = <span class="cstat-no" title="statement not covered" >header.m</span>atch(/(\S+)\s+(\S+)/)
|
|
1343
|
+
<span class="cstat-no" title="statement not covered" > if (tokens.length >= 2) <span class="cstat-no" title="statement not covered" >accessToken = t</span></span>okens[2]
|
|
1344
|
+
} else {
|
|
1345
|
+
<span class="cstat-no" title="statement not covered" > accessToken = p</span>ayload.accessToken
|
|
1286
1346
|
}
|
|
1347
|
+
const tokenPayload = <span class="cstat-no" title="statement not covered" >await app.p</span>assport.verifyJWT(accessToken, config)
|
|
1348
|
+
<span class="cstat-no" title="statement not covered" > params.u</span>ser = await app.getService('users').get(tokenPayload.userId)
|
|
1349
|
+
<span class="cstat-no" title="statement not covered" > params.c</span>heckAuthorisation = true
|
|
1287
1350
|
} catch (error) {
|
|
1288
|
-
throw
|
|
1351
|
+
<span class="cstat-no" title="statement not covered" > throw n</span>ew Forbidden('Could not verify webhook')
|
|
1289
1352
|
}
|
|
1290
1353
|
}
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1354
|
+
<span class="cstat-no" title="statement not covered" > if (req.headers['content-type'] !== 'application/json') {</span>
|
|
1355
|
+
<span class="cstat-no" title="statement not covered" > throw n</span>ew BadRequest('Webhooks expect application/json content type')
|
|
1356
|
+
}
|
|
1357
|
+
<span class="cstat-no" title="statement not covered" > if (!isAllowed(payload)) <span class="cstat-no" title="statement not covered" >throw n</span></span>ew Forbidden('Service or operation not allowed for webhook')
|
|
1358
|
+
const service = <span class="cstat-no" title="statement not covered" >app.g</span>etService(payload.service, options.context || payload.context)
|
|
1359
|
+
<span class="cstat-no" title="statement not covered" > if (!service) <span class="cstat-no" title="statement not covered" >throw n</span></span>ew BadRequest('Service could not be found')
|
|
1360
|
+
<span class="cstat-no" title="statement not covered" > if (typeof service[payload.operation] !== 'function') <span class="cstat-no" title="statement not covered" >throw n</span></span>ew BadRequest('Service operation could not be found')
|
|
1361
|
+
const args = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
1362
|
+
// Get/Update/Patch/Remove
|
|
1363
|
+
const operationsWithId = <span class="cstat-no" title="statement not covered" >['</span>get', 'update', 'patch', 'remove']
|
|
1364
|
+
<span class="cstat-no" title="statement not covered" > if (operationsWithId.includes(payload.operation)) {</span>
|
|
1365
|
+
<span class="cstat-no" title="statement not covered" > if (!_.has(payload, 'id')) <span class="cstat-no" title="statement not covered" >throw n</span></span>ew BadRequest('Missing id for operation')
|
|
1366
|
+
<span class="cstat-no" title="statement not covered" > args.p</span>ush(_.get(payload, 'id'))
|
|
1367
|
+
}
|
|
1297
1368
|
// Create/Update/Patch
|
|
1298
|
-
|
|
1369
|
+
const operationsWithData = <span class="cstat-no" title="statement not covered" >['</span>create', 'update', 'patch']
|
|
1370
|
+
<span class="cstat-no" title="statement not covered" > if (operationsWithData.includes(payload.operation)) {</span>
|
|
1371
|
+
<span class="cstat-no" title="statement not covered" > if (!_.has(payload, 'data')) <span class="cstat-no" title="statement not covered" >throw n</span></span>ew BadRequest('Missing data for operation')
|
|
1372
|
+
<span class="cstat-no" title="statement not covered" > args.p</span>ush(_.get(payload, 'data'))
|
|
1373
|
+
}
|
|
1299
1374
|
// Params
|
|
1300
|
-
args.
|
|
1301
|
-
|
|
1302
|
-
|
|
1375
|
+
<span class="cstat-no" title="statement not covered" > args.p</span>ush(params)
|
|
1376
|
+
<span class="cstat-no" title="statement not covered" > if (options.postprocessor) {</span>
|
|
1377
|
+
<span class="cstat-no" title="statement not covered" > await o</span>ptions.postprocessor(service, args, payload)
|
|
1378
|
+
}
|
|
1379
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1380
|
+
const result = <span class="cstat-no" title="statement not covered" >await service[p</span>ayload.operation].apply(service, args)
|
|
1303
1381
|
// Send back result
|
|
1304
|
-
res.
|
|
1382
|
+
<span class="cstat-no" title="statement not covered" > res.j</span>son(result)
|
|
1305
1383
|
} catch (error) {
|
|
1306
1384
|
<span class="cstat-no" title="statement not covered" > throw n</span>ew BadRequest('Service operation could not be performed')
|
|
1307
1385
|
}
|
|
1308
1386
|
} catch (error) {
|
|
1309
1387
|
// Send back error
|
|
1310
|
-
res.
|
|
1388
|
+
<span class="cstat-no" title="statement not covered" > res.s</span>tatus(error.code).json(error.toJSON())
|
|
1311
1389
|
}
|
|
1312
1390
|
})
|
|
1313
1391
|
|
|
1314
|
-
debug(`
|
|
1392
|
+
<span class="cstat-no" title="statement not covered" > debug(`W</span>ebhook ${webhookPath} registration completed`)
|
|
1315
1393
|
}
|
|
1316
1394
|
|
|
1317
|
-
function setupLogger (
|
|
1318
|
-
debug('Setup application loggers')
|
|
1319
|
-
const logsConfig = app.
|
|
1395
|
+
function <span class="fstat-no" title="function not covered" >setupLogger (a</span>pp) {
|
|
1396
|
+
<span class="cstat-no" title="statement not covered" > debug('</span>Setup application loggers')
|
|
1397
|
+
const logsConfig = <span class="cstat-no" title="statement not covered" >app.g</span>et('logs')
|
|
1320
1398
|
// Use winston default logger
|
|
1321
|
-
app.
|
|
1399
|
+
<span class="cstat-no" title="statement not covered" > app.l</span>ogger = logger
|
|
1322
1400
|
// Remove winston defaults
|
|
1323
|
-
try {
|
|
1324
|
-
logger.
|
|
1401
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1402
|
+
<span class="cstat-no" title="statement not covered" > logger.c</span>lear()
|
|
1325
1403
|
} catch (error) {
|
|
1326
1404
|
// Logger might be down, use console
|
|
1327
1405
|
<span class="cstat-no" title="statement not covered" > console.e</span>rror('Could not remove default logger transport(s)', error)
|
|
1328
1406
|
}
|
|
1329
1407
|
// We have one entry per log type
|
|
1330
|
-
const logsTypes =
|
|
1408
|
+
const logsTypes = <span class="cstat-no" title="statement not covered" >logsConfig ? Object.getOwnPropertyNames(logsConfig) : []</span>
|
|
1331
1409
|
// Create corresponding winston transports with options
|
|
1332
|
-
logsTypes.
|
|
1333
|
-
const options = logsConfig[
|
|
1410
|
+
<span class="cstat-no" title="statement not covered" > logsTypes.f</span>orEach(<span class="fstat-no" title="function not covered" >logType => {</span>
|
|
1411
|
+
const options = <span class="cstat-no" title="statement not covered" >logsConfig[l</span>ogType]
|
|
1334
1412
|
// Setup default log level if not defined
|
|
1335
|
-
if (!options.level) {
|
|
1336
|
-
options.
|
|
1413
|
+
<span class="cstat-no" title="statement not covered" > if (!options.level) {</span>
|
|
1414
|
+
<span class="cstat-no" title="statement not covered" > options.l</span>evel = (process.env.NODE_ENV === 'development' ? 'debug' : 'info')
|
|
1337
1415
|
}
|
|
1338
|
-
try {
|
|
1339
|
-
logger.
|
|
1416
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1417
|
+
<span class="cstat-no" title="statement not covered" > logger.a</span>dd(new logger.transports[logType](options))
|
|
1340
1418
|
} catch (error) {
|
|
1341
1419
|
// Logger might be down, use console
|
|
1342
1420
|
<span class="cstat-no" title="statement not covered" > console.e</span>rror('Could not setup default log levels', error)
|
|
@@ -1344,19 +1422,19 @@ function setupLogger (app) {
|
|
|
1344
1422
|
})
|
|
1345
1423
|
}
|
|
1346
1424
|
|
|
1347
|
-
function setupSockets (
|
|
1348
|
-
const apiLimiter = app.
|
|
1349
|
-
const connections = {}
|
|
1350
|
-
let nbConnections = 0
|
|
1425
|
+
function <span class="fstat-no" title="function not covered" >setupSockets (a</span>pp) {
|
|
1426
|
+
const apiLimiter = <span class="cstat-no" title="statement not covered" >app.g</span>et('apiLimiter')
|
|
1427
|
+
const connections = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
1428
|
+
let nbConnections = <span class="cstat-no" title="statement not covered" >0</span>
|
|
1351
1429
|
|
|
1352
|
-
return
|
|
1430
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >i</span>o => {</span>
|
|
1353
1431
|
// By default EventEmitters will print a warning if more than 10 listeners are added for a particular event.
|
|
1354
1432
|
// The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.
|
|
1355
|
-
io.
|
|
1356
|
-
const maxConnections = _.
|
|
1357
|
-
const maxIpConnections = _.
|
|
1433
|
+
<span class="cstat-no" title="statement not covered" > io.s</span>ockets.setMaxListeners(0)
|
|
1434
|
+
const maxConnections = <span class="cstat-no" title="statement not covered" >_.g</span>et(apiLimiter, 'websocket.maxConcurrency', 0)
|
|
1435
|
+
const maxIpConnections = <span class="cstat-no" title="statement not covered" >_.g</span>et(apiLimiter, 'websocket.concurrency', 0)
|
|
1358
1436
|
|
|
1359
|
-
io.
|
|
1437
|
+
<span class="cstat-no" title="statement not covered" > io.o</span>n('connection', <span class="fstat-no" title="function not covered" >socket => {</span>
|
|
1360
1438
|
<span class="cstat-no" title="statement not covered" > nbConnections++</span>
|
|
1361
1439
|
<span class="cstat-no" title="statement not covered" > debug(`N</span>ew socket connection on server with pid ${process.pid}`, socket.id, socket.conn.remoteAddress, nbConnections)
|
|
1362
1440
|
// Setup disconnect handler first
|
|
@@ -1437,55 +1515,55 @@ function setupSockets (app) {
|
|
|
1437
1515
|
}
|
|
1438
1516
|
}
|
|
1439
1517
|
|
|
1440
|
-
export function kalisio () {
|
|
1441
|
-
const app = express(
|
|
1518
|
+
export function <span class="fstat-no" title="function not covered" >kalisio () {</span>
|
|
1519
|
+
const app = <span class="cstat-no" title="statement not covered" >express(f</span>eathers())
|
|
1442
1520
|
// By default EventEmitters will print a warning if more than 10 listeners are added for a particular event.
|
|
1443
1521
|
// The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.
|
|
1444
|
-
app.
|
|
1522
|
+
<span class="cstat-no" title="statement not covered" > app.s</span>etMaxListeners(0)
|
|
1445
1523
|
// Load app configuration first
|
|
1446
|
-
app.
|
|
1524
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>onfigure(configuration())
|
|
1447
1525
|
// Then setup logger
|
|
1448
|
-
setupLogger(
|
|
1526
|
+
<span class="cstat-no" title="statement not covered" > setupLogger(a</span>pp)
|
|
1449
1527
|
|
|
1450
1528
|
// This retrieve corresponding service options from app config if any
|
|
1451
|
-
app.
|
|
1529
|
+
<span class="cstat-no" title="statement not covered" > app.g</span>etServiceOptions = <span class="fstat-no" title="function not covered" >function (n</span>ame) {
|
|
1452
1530
|
const services = <span class="cstat-no" title="statement not covered" >app.g</span>et('services')
|
|
1453
1531
|
<span class="cstat-no" title="statement not covered" > if (!services) <span class="cstat-no" title="statement not covered" >return {</span></span>}
|
|
1454
1532
|
<span class="cstat-no" title="statement not covered" > return _</span>.get(services, name, {})
|
|
1455
1533
|
}
|
|
1456
1534
|
// This avoid managing the API path before each service name
|
|
1457
|
-
app.
|
|
1535
|
+
<span class="cstat-no" title="statement not covered" > app.g</span>etService = <span class="fstat-no" title="function not covered" >function (p</span>ath, context) {
|
|
1458
1536
|
// Context is given as string ID
|
|
1459
|
-
if (context && typeof context === 'string') {
|
|
1460
|
-
return
|
|
1461
|
-
} else if (context && typeof context === 'object') {
|
|
1537
|
+
<span class="cstat-no" title="statement not covered" > if (context && typeof context === 'string') {</span>
|
|
1538
|
+
<span class="cstat-no" title="statement not covered" > return a</span>pp.service(app.get('apiPath') + '/' + context + '/' + path)
|
|
1539
|
+
} else <span class="cstat-no" title="statement not covered" >if (context && typeof context === 'object') {</span>
|
|
1462
1540
|
// Could be Object ID or raw object
|
|
1463
|
-
if (ObjectID.isValid(context)) return
|
|
1464
|
-
else return
|
|
1541
|
+
<span class="cstat-no" title="statement not covered" > if (ObjectID.isValid(context)) <span class="cstat-no" title="statement not covered" >return a</span>pp.service(app.get('apiPath') + '/' + context.toString() + '/' + path)</span>
|
|
1542
|
+
else <span class="cstat-no" title="statement not covered" >return a</span>pp.service(app.get('apiPath') + '/' + context._id.toString() + '/' + path)
|
|
1465
1543
|
} else {
|
|
1466
|
-
return
|
|
1544
|
+
<span class="cstat-no" title="statement not covered" > return a</span>pp.service(app.get('apiPath') + '/' + path)
|
|
1467
1545
|
}
|
|
1468
1546
|
}
|
|
1469
1547
|
// This is used to add hooks/filters to services
|
|
1470
|
-
app.
|
|
1548
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>onfigureService = <span class="fstat-no" title="function not covered" >function (n</span>ame, service, servicesPath) {
|
|
1471
1549
|
<span class="cstat-no" title="statement not covered" > return c</span>onfigureService(name, service, servicesPath)
|
|
1472
1550
|
}
|
|
1473
1551
|
// This is used to create standard services
|
|
1474
|
-
app.
|
|
1475
|
-
return
|
|
1552
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>reateService = <span class="fstat-no" title="function not covered" >function (n</span>ame, options) {
|
|
1553
|
+
<span class="cstat-no" title="statement not covered" > return c</span>reateService(name, app, options)
|
|
1476
1554
|
}
|
|
1477
1555
|
// This is used to create webhooks
|
|
1478
|
-
app.
|
|
1479
|
-
return
|
|
1556
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>reateWebhook = <span class="fstat-no" title="function not covered" >function (p</span>ath, options) {
|
|
1557
|
+
<span class="cstat-no" title="statement not covered" > return c</span>reateWebhook(path, app, options)
|
|
1480
1558
|
}
|
|
1481
1559
|
// Override Feathers configure that do not manage async operations,
|
|
1482
1560
|
// here we also simply call the function given as parameter but await for it
|
|
1483
|
-
app.
|
|
1484
|
-
await
|
|
1485
|
-
return
|
|
1561
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > app.c</span></span>onfigure = <span class="fstat-no" title="function not covered" >async function (f</span>n) {
|
|
1562
|
+
<span class="cstat-no" title="statement not covered" > await f</span>n.call(this, this)
|
|
1563
|
+
<span class="cstat-no" title="statement not covered" > return t</span>his
|
|
1486
1564
|
}
|
|
1487
|
-
const apiLimiter = app.
|
|
1488
|
-
|
|
1565
|
+
const apiLimiter = <span class="cstat-no" title="statement not covered" >app.g</span>et('apiLimiter')
|
|
1566
|
+
<span class="cstat-no" title="statement not covered" > if (apiLimiter && apiLimiter.http) {</span>
|
|
1489
1567
|
// Function used to filter whitelisted services, defaults to none
|
|
1490
1568
|
const services = <span class="cstat-no" title="statement not covered" >_.g</span>et(apiLimiter.http, 'services', (<span class="fstat-no" title="function not covered" >service) => <span class="cstat-no" title="statement not covered" >f</span>alse)</span>
|
|
1491
1569
|
const handler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>eq, res, next) => {</span>
|
|
@@ -1512,23 +1590,23 @@ export function kalisio () {
|
|
|
1512
1590
|
}
|
|
1513
1591
|
|
|
1514
1592
|
// Enable CORS, security, compression, and body parsing
|
|
1515
|
-
app.
|
|
1516
|
-
app.
|
|
1517
|
-
app.
|
|
1518
|
-
const bodyParserConfig = app.
|
|
1519
|
-
app.
|
|
1520
|
-
app.
|
|
1593
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se(cors(app.get('cors')))
|
|
1594
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se(helmet(app.get('helmet')))
|
|
1595
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se(compress(app.get('compression')))
|
|
1596
|
+
const bodyParserConfig = <span class="cstat-no" title="statement not covered" >app.g</span>et('bodyParser')
|
|
1597
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se(bodyParser.json(_.get(bodyParserConfig, 'json')))
|
|
1598
|
+
<span class="cstat-no" title="statement not covered" > app.u</span>se(bodyParser.urlencoded(Object.assign({ extended: true }, _.get(bodyParserConfig, 'urlencoded'))))
|
|
1521
1599
|
|
|
1522
1600
|
// Set up plugins and providers
|
|
1523
|
-
app.
|
|
1524
|
-
const socketioConfig = app.get('socketio') || {}
|
|
1525
|
-
app.
|
|
1526
|
-
app.
|
|
1601
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>onfigure(rest())
|
|
1602
|
+
const socketioConfig = <span class="cstat-no" title="statement not covered" >app.get('socketio') || {}</span>
|
|
1603
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>onfigure(socketio(Object.assign({ path: app.get('apiPath') + 'ws' }, socketioConfig), setupSockets(app)))
|
|
1604
|
+
<span class="cstat-no" title="statement not covered" > app.c</span>onfigure(auth)
|
|
1527
1605
|
|
|
1528
1606
|
// Initialize DB
|
|
1529
|
-
app.
|
|
1607
|
+
<span class="cstat-no" title="statement not covered" > app.d</span>b = Database.create(app)
|
|
1530
1608
|
|
|
1531
|
-
return
|
|
1609
|
+
<span class="cstat-no" title="statement not covered" > return a</span>pp
|
|
1532
1610
|
}
|
|
1533
1611
|
</pre></td></tr></table></pre>
|
|
1534
1612
|
|
|
@@ -1537,7 +1615,7 @@ export function kalisio () {
|
|
|
1537
1615
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1538
1616
|
Code coverage generated by
|
|
1539
1617
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1540
|
-
at
|
|
1618
|
+
at Thu Feb 17 2022 13:49:01 GMT+0100 (GMT+01:00)
|
|
1541
1619
|
</div>
|
|
1542
1620
|
</div>
|
|
1543
1621
|
<script src="../../prettify.js"></script>
|