@sports-alliance/sports-lib 7.0.7 → 7.0.9
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/.editorconfig +14 -0
- package/.eslintignore +4 -0
- package/.eslintrc.js +9 -0
- package/.prettierignore +25 -0
- package/.prettierrc.json +12 -0
- package/CODE_OF_CONDUCT.md +76 -0
- package/jest.config.js +23 -0
- package/lib/esm/index.js +12034 -152
- package/package.json +3 -2
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.esm.json +8 -0
- package/tsconfig.lib.json +8 -0
- package/lib/esm/activities/activity-parsing-options.js +0 -19
- package/lib/esm/activities/activity.interface.js +0 -1
- package/lib/esm/activities/activity.js +0 -281
- package/lib/esm/activities/activity.json.interface.js +0 -1
- package/lib/esm/activities/activity.spec.js +0 -348
- package/lib/esm/activities/activity.types.js +0 -1046
- package/lib/esm/activities/activityt-types.spec.js +0 -16
- package/lib/esm/activities/devices/device.interface.js +0 -1
- package/lib/esm/activities/devices/device.js +0 -26
- package/lib/esm/activities/devices/device.json.interface.js +0 -1
- package/lib/esm/constants/constants.js +0 -8
- package/lib/esm/creators/creator.interface.js +0 -1
- package/lib/esm/creators/creator.js +0 -37
- package/lib/esm/creators/creator.json.interface.js +0 -1
- package/lib/esm/creators/creator.spec.js +0 -25
- package/lib/esm/data/data-active-lap.js +0 -4
- package/lib/esm/data/data-active-lengths.js +0 -4
- package/lib/esm/data/data-aerobic-training-effect.js +0 -8
- package/lib/esm/data/data-anaerobic-training-effect.js +0 -8
- package/lib/esm/data/data-stance-time-balance-left.js +0 -4
- package/lib/esm/data/data-stance-time-balance-right.js +0 -4
- package/lib/esm/data/data-stance-time-balance.js +0 -3
- package/lib/esm/data/data-store.spec.js +0 -78
- package/lib/esm/data/data-total-cycles.js +0 -4
- package/lib/esm/data/data.absolute-pressure.js +0 -5
- package/lib/esm/data/data.accumulated-power.js +0 -8
- package/lib/esm/data/data.activity-types.js +0 -7
- package/lib/esm/data/data.air-power-avg.js +0 -4
- package/lib/esm/data/data.air-power-max.js +0 -4
- package/lib/esm/data/data.air-power-min.js +0 -4
- package/lib/esm/data/data.air-power.js +0 -8
- package/lib/esm/data/data.alti-baro-profile.js +0 -4
- package/lib/esm/data/data.altitude-avg.js +0 -4
- package/lib/esm/data/data.altitude-gps.js +0 -5
- package/lib/esm/data/data.altitude-max.js +0 -4
- package/lib/esm/data/data.altitude-min.js +0 -4
- package/lib/esm/data/data.altitude-smooth.js +0 -4
- package/lib/esm/data/data.altitude.js +0 -8
- package/lib/esm/data/data.array.js +0 -13
- package/lib/esm/data/data.ascent-time.js +0 -4
- package/lib/esm/data/data.ascent.js +0 -4
- package/lib/esm/data/data.auto-lap-distance.js +0 -5
- package/lib/esm/data/data.auto-lap-duration.js +0 -4
- package/lib/esm/data/data.auto-lap-used.js +0 -7
- package/lib/esm/data/data.auto-pause-used.js +0 -7
- package/lib/esm/data/data.avg-stride-length.js +0 -4
- package/lib/esm/data/data.balance.js +0 -6
- package/lib/esm/data/data.bare.js +0 -4
- package/lib/esm/data/data.battery-charge.js +0 -8
- package/lib/esm/data/data.battery-consumption.js +0 -8
- package/lib/esm/data/data.battery-current.js +0 -8
- package/lib/esm/data/data.battery-life-estimation.js +0 -4
- package/lib/esm/data/data.battery-voltage.js +0 -8
- package/lib/esm/data/data.bike-pod-used.js +0 -7
- package/lib/esm/data/data.boolean.js +0 -9
- package/lib/esm/data/data.cadence-avg.js +0 -4
- package/lib/esm/data/data.cadence-max.js +0 -4
- package/lib/esm/data/data.cadence-min.js +0 -4
- package/lib/esm/data/data.cadence.js +0 -8
- package/lib/esm/data/data.cycling-dynamics.js +0 -3
- package/lib/esm/data/data.cycling-position.js +0 -37
- package/lib/esm/data/data.cycling-seated-time.js +0 -5
- package/lib/esm/data/data.cycling-standing-time.js +0 -5
- package/lib/esm/data/data.descent-time.js +0 -4
- package/lib/esm/data/data.descent.js +0 -4
- package/lib/esm/data/data.description.js +0 -4
- package/lib/esm/data/data.device-location.js +0 -4
- package/lib/esm/data/data.device-names.js +0 -7
- package/lib/esm/data/data.distance.js +0 -15
- package/lib/esm/data/data.duration.js +0 -56
- package/lib/esm/data/data.ehpe.js +0 -5
- package/lib/esm/data/data.enabled-navigation-systems.js +0 -4
- package/lib/esm/data/data.end-altitude.js +0 -4
- package/lib/esm/data/data.end-position.js +0 -4
- package/lib/esm/data/data.energy.js +0 -8
- package/lib/esm/data/data.epoc.js +0 -5
- package/lib/esm/data/data.event.js +0 -3
- package/lib/esm/data/data.evpe.js +0 -4
- package/lib/esm/data/data.feeling.js +0 -15
- package/lib/esm/data/data.foot-pod-used.js +0 -7
- package/lib/esm/data/data.form-power.js +0 -4
- package/lib/esm/data/data.fused-altitude.js +0 -7
- package/lib/esm/data/data.fused-location.js +0 -7
- package/lib/esm/data/data.gnss-distance.js +0 -4
- package/lib/esm/data/data.grade-adjusted-pace-avg.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace-max.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace-min.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace.js +0 -25
- package/lib/esm/data/data.grade-adjusted-speed-avg.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed-max.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed-min.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed.js +0 -78
- package/lib/esm/data/data.grade-smooth.js +0 -7
- package/lib/esm/data/data.grade.js +0 -7
- package/lib/esm/data/data.ground-time.js +0 -8
- package/lib/esm/data/data.heart-rate-avg.js +0 -4
- package/lib/esm/data/data.heart-rate-max.js +0 -4
- package/lib/esm/data/data.heart-rate-min.js +0 -4
- package/lib/esm/data/data.heart-rate-used.js +0 -7
- package/lib/esm/data/data.heart-rate-zone-five-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-four-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-one-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-three-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-two-duration.js +0 -4
- package/lib/esm/data/data.heart-rate.js +0 -8
- package/lib/esm/data/data.ibi.js +0 -8
- package/lib/esm/data/data.interface.js +0 -5
- package/lib/esm/data/data.js +0 -62
- package/lib/esm/data/data.json.interface.js +0 -1
- package/lib/esm/data/data.latitude-degrees.js +0 -5
- package/lib/esm/data/data.left-balance.js +0 -4
- package/lib/esm/data/data.leg-stiffness.js +0 -16
- package/lib/esm/data/data.longitude-degrees.js +0 -5
- package/lib/esm/data/data.moving-time.js +0 -4
- package/lib/esm/data/data.number-of-satellites.js +0 -7
- package/lib/esm/data/data.number-of.samples.js +0 -4
- package/lib/esm/data/data.number.js +0 -13
- package/lib/esm/data/data.pace-avg.js +0 -8
- package/lib/esm/data/data.pace-max.js +0 -8
- package/lib/esm/data/data.pace-min.js +0 -8
- package/lib/esm/data/data.pace.js +0 -46
- package/lib/esm/data/data.pause.js +0 -4
- package/lib/esm/data/data.peak-epoc.js +0 -7
- package/lib/esm/data/data.peak-training-effect.js +0 -4
- package/lib/esm/data/data.percent.js +0 -4
- package/lib/esm/data/data.pool-length.js +0 -5
- package/lib/esm/data/data.position.interface.js +0 -1
- package/lib/esm/data/data.position.js +0 -18
- package/lib/esm/data/data.power-avg.js +0 -4
- package/lib/esm/data/data.power-down.js +0 -4
- package/lib/esm/data/data.power-intensity-factor.js +0 -5
- package/lib/esm/data/data.power-left.js +0 -4
- package/lib/esm/data/data.power-max.js +0 -4
- package/lib/esm/data/data.power-min.js +0 -4
- package/lib/esm/data/data.power-normalized.js +0 -4
- package/lib/esm/data/data.power-pedal-smoothness-left.js +0 -4
- package/lib/esm/data/data.power-pedal-smoothness-right.js +0 -4
- package/lib/esm/data/data.power-pod-used.js +0 -7
- package/lib/esm/data/data.power-right.js +0 -4
- package/lib/esm/data/data.power-torque-effectiveness-left.js +0 -4
- package/lib/esm/data/data.power-torque-effectiveness-right.js +0 -4
- package/lib/esm/data/data.power-training-stress-score.js +0 -5
- package/lib/esm/data/data.power-up.js +0 -4
- package/lib/esm/data/data.power-work.js +0 -5
- package/lib/esm/data/data.power-zone-five-duration.js +0 -4
- package/lib/esm/data/data.power-zone-four-duration.js +0 -4
- package/lib/esm/data/data.power-zone-one-duration.js +0 -4
- package/lib/esm/data/data.power-zone-three-duration.js +0 -4
- package/lib/esm/data/data.power-zone-two-duration.js +0 -4
- package/lib/esm/data/data.power.js +0 -8
- package/lib/esm/data/data.recovery-time.js +0 -7
- package/lib/esm/data/data.rider-position-change-event.js +0 -8
- package/lib/esm/data/data.right-balance.js +0 -4
- package/lib/esm/data/data.rpe.js +0 -23
- package/lib/esm/data/data.satellite-5-best-snr.js +0 -4
- package/lib/esm/data/data.sea-level-pressure.js +0 -5
- package/lib/esm/data/data.spec.js +0 -25
- package/lib/esm/data/data.speed-avg.js +0 -46
- package/lib/esm/data/data.speed-max.js +0 -46
- package/lib/esm/data/data.speed-min.js +0 -46
- package/lib/esm/data/data.speed-zone-five-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-four-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-one-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-three-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-two-duration.js +0 -4
- package/lib/esm/data/data.speed.js +0 -88
- package/lib/esm/data/data.sport-profile-name.js +0 -4
- package/lib/esm/data/data.stance-time.js +0 -5
- package/lib/esm/data/data.start-altitude.js +0 -4
- package/lib/esm/data/data.start-event.js +0 -4
- package/lib/esm/data/data.start-position.js +0 -4
- package/lib/esm/data/data.step-length.js +0 -4
- package/lib/esm/data/data.steps-old.js +0 -4
- package/lib/esm/data/data.steps.js +0 -4
- package/lib/esm/data/data.stop-all-event.js +0 -4
- package/lib/esm/data/data.stop-event.js +0 -4
- package/lib/esm/data/data.store.export.spec.js +0 -66
- package/lib/esm/data/data.store.js +0 -1213
- package/lib/esm/data/data.string.js +0 -13
- package/lib/esm/data/data.stryd-altitude.js +0 -4
- package/lib/esm/data/data.stryd-distance.js +0 -4
- package/lib/esm/data/data.stryd-speed.js +0 -4
- package/lib/esm/data/data.swim-pace-avg.js +0 -8
- package/lib/esm/data/data.swim-pace-max.js +0 -8
- package/lib/esm/data/data.swim-pace-min.js +0 -8
- package/lib/esm/data/data.swim-pace.js +0 -19
- package/lib/esm/data/data.swolf-25m.js +0 -4
- package/lib/esm/data/data.swolf-50m.js +0 -4
- package/lib/esm/data/data.target-distance.js +0 -4
- package/lib/esm/data/data.target-heart-rate-zone.js +0 -4
- package/lib/esm/data/data.target-power-zone.js +0 -4
- package/lib/esm/data/data.target-speed-zone.js +0 -4
- package/lib/esm/data/data.target-time.js +0 -4
- package/lib/esm/data/data.temperature-avg.js +0 -4
- package/lib/esm/data/data.temperature-max.js +0 -4
- package/lib/esm/data/data.temperature-min.js +0 -4
- package/lib/esm/data/data.temperature.js +0 -8
- package/lib/esm/data/data.time.js +0 -6
- package/lib/esm/data/data.timer-time.js +0 -4
- package/lib/esm/data/data.vertical-oscillation.js +0 -5
- package/lib/esm/data/data.vertical-ratio.js +0 -5
- package/lib/esm/data/data.vertical-speed-avg.js +0 -53
- package/lib/esm/data/data.vertical-speed-max.js +0 -53
- package/lib/esm/data/data.vertical-speed-min.js +0 -53
- package/lib/esm/data/data.vertical-speed.js +0 -103
- package/lib/esm/data/data.vo2-max.js +0 -7
- package/lib/esm/data/ibi/data.ibi.filters.js +0 -52
- package/lib/esm/data/ibi/data.ibi.js +0 -98
- package/lib/esm/data/ibi/data.ibi.spec.js +0 -66
- package/lib/esm/duration/duration.class.abstract.js +0 -36
- package/lib/esm/duration/duration.class.interface.js +0 -1
- package/lib/esm/errors/duration-exceeded-event-lib.error.js +0 -9
- package/lib/esm/errors/empty-event-sports-libs.error.js +0 -9
- package/lib/esm/errors/event-lib.error.js +0 -8
- package/lib/esm/errors/lib.error.js +0 -6
- package/lib/esm/errors/parsing-event-lib.error.js +0 -9
- package/lib/esm/events/adapters/exporters/exporter.gpx.js +0 -75
- package/lib/esm/events/adapters/exporters/exporter.interface.js +0 -1
- package/lib/esm/events/adapters/exporters/exporter.json.js +0 -20
- package/lib/esm/events/adapters/file-type.enum.js +0 -7
- package/lib/esm/events/adapters/importers/fit/importer.fit.ant-plus.device.names.js +0 -25
- package/lib/esm/events/adapters/importers/fit/importer.fit.coros.device.names.js +0 -5
- package/lib/esm/events/adapters/importers/fit/importer.fit.development.device.names.js +0 -4
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.device.names.js +0 -462
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.data.js +0 -877
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.js +0 -106
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.spec.js +0 -32
- package/lib/esm/events/adapters/importers/fit/importer.fit.hammerhead.device.names.js +0 -4
- package/lib/esm/events/adapters/importers/fit/importer.fit.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/fit/importer.fit.js +0 -978
- package/lib/esm/events/adapters/importers/fit/importer.fit.lezyne.device.names.js +0 -3
- package/lib/esm/events/adapters/importers/fit/importer.fit.magellan.device.names.js +0 -5
- package/lib/esm/events/adapters/importers/fit/importer.fit.mapper.js +0 -231
- package/lib/esm/events/adapters/importers/fit/importer.fit.saris.device.names.js +0 -3
- package/lib/esm/events/adapters/importers/fit/importer.fit.spec.js +0 -326
- package/lib/esm/events/adapters/importers/fit/importer.fit.srm.device.names.js +0 -7
- package/lib/esm/events/adapters/importers/fit/importer.fit.suunto.device.names.js +0 -16
- package/lib/esm/events/adapters/importers/fit/importer.fit.wahoo.device.names.js +0 -10
- package/lib/esm/events/adapters/importers/gpx/gx-parser.js +0 -36
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.js +0 -102
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.mapper.js +0 -142
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.spec.js +0 -71
- package/lib/esm/events/adapters/importers/json/importer.json.js +0 -160
- package/lib/esm/events/adapters/importers/sample-info.interface.js +0 -1
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.activity.ids.js +0 -85
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.device.names.js +0 -26
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.json.js +0 -717
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.sml.js +0 -125
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.integration.spec.js +0 -46
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.js +0 -442
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.mapper.js +0 -91
- package/lib/esm/events/adapters/importers/tcx/utils.tcx.js +0 -36
- package/lib/esm/events/event.interface.js +0 -1
- package/lib/esm/events/event.js +0 -123
- package/lib/esm/events/event.json.interface.js +0 -1
- package/lib/esm/events/event.spec.js +0 -51
- package/lib/esm/events/utilities/activity.utilities.js +0 -1841
- package/lib/esm/events/utilities/activity.utilities.spec.js +0 -373
- package/lib/esm/events/utilities/event.utilities.js +0 -57
- package/lib/esm/events/utilities/grade-calculator/grade-calculator.js +0 -121
- package/lib/esm/events/utilities/grade-calculator/grade-calculator.spec.js +0 -93
- package/lib/esm/events/utilities/grade-calculator/low-pass-filter.js +0 -86
- package/lib/esm/events/utilities/helpers.js +0 -162
- package/lib/esm/geodesy/adapters/adapter.interface.js +0 -1
- package/lib/esm/geodesy/adapters/geolib.adapter.js +0 -28
- package/lib/esm/id/id.abstract.class.js +0 -9
- package/lib/esm/id/id.class.interface.js +0 -1
- package/lib/esm/id/id.class.spec.js +0 -13
- package/lib/esm/intensity-zones/intensity-zones.interface.js +0 -1
- package/lib/esm/intensity-zones/intensity-zones.js +0 -29
- package/lib/esm/intensity-zones/intensity-zones.json.interface.js +0 -1
- package/lib/esm/intensity-zones/intensity-zones.spec.js +0 -30
- package/lib/esm/laps/lap.interface.js +0 -1
- package/lib/esm/laps/lap.js +0 -29
- package/lib/esm/laps/lap.json.interface.js +0 -1
- package/lib/esm/laps/lap.types.js +0 -52
- package/lib/esm/meta-data/event-meta-data.interface.js +0 -6
- package/lib/esm/meta-data/meta-data.js +0 -57
- package/lib/esm/meta-data/meta-data.json.interface.js +0 -1
- package/lib/esm/privacy/privacy.class.interface.js +0 -5
- package/lib/esm/serializable/serializable.class.interface.js +0 -1
- package/lib/esm/service-tokens/oauth1-service-token.interface.js +0 -1
- package/lib/esm/service-tokens/oauth2-service-token.interface.js +0 -1
- package/lib/esm/specs/activities-parsing.integration.spec.js +0 -1847
- package/lib/esm/specs/activity-duration-stream.integration.spec.js +0 -57
- package/lib/esm/specs/fixtures/streams/strava/rides/3171472783.json +0 -52534
- package/lib/esm/specs/fixtures/streams/strava/rides/3171487458.json +0 -78818
- package/lib/esm/specs/fixtures/streams/strava/rides/343080886.json +0 -105090
- package/lib/esm/specs/fixtures/streams/strava/rides/5910143591.json +0 -110711
- package/lib/esm/specs/fixtures/streams/strava/runs/2451375851.json +0 -74846
- package/lib/esm/specs/fixtures/streams/strava/runs/2709634581.json +0 -66817
- package/lib/esm/specs/fixtures/streams/strava/runs/3156040843.json +0 -17594
- package/lib/esm/specs/fixtures/streams/strava/runs/3182900697.json +0 -17322
- package/lib/esm/specs/fixtures/streams/strava/runs/3183465494.json +0 -20463
- package/lib/esm/specs/fixtures/streams/strava/runs/3183490558.json +0 -58202
- package/lib/esm/specs/spec-utils.js +0 -159
- package/lib/esm/specs/strava-streams-compliance.spec.js +0 -951
- package/lib/esm/stats/stats.class.abstract.js +0 -32
- package/lib/esm/stats/stats.class.interface.js +0 -1
- package/lib/esm/stats/stats.json.interface.js +0 -1
- package/lib/esm/streams/compressed.stream.interface.js +0 -12
- package/lib/esm/streams/ibi-stream.js +0 -43
- package/lib/esm/streams/low-pass.stream.filter.js +0 -9
- package/lib/esm/streams/stream.filter.interface.js +0 -1
- package/lib/esm/streams/stream.interface.js +0 -1
- package/lib/esm/streams/stream.js +0 -72
- package/lib/esm/streams/stream.spec.js +0 -168
- package/lib/esm/tiles/tile.settings.interface.js +0 -41
- package/lib/esm/users/settings/dashboard/user.dashboard.settings.interface.js +0 -13
- package/lib/esm/users/settings/user.app.settings.interface.js +0 -5
- package/lib/esm/users/settings/user.chart.settings.interface.js +0 -23
- package/lib/esm/users/settings/user.map.settings.interface.js +0 -22
- package/lib/esm/users/settings/user.my-tracks.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.stats-settings.interface.js +0 -1
- package/lib/esm/users/settings/user.summaries.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.unit.settings.interface.js +0 -73
- package/lib/esm/users/user.account.privileges.interface.js +0 -1
- package/lib/esm/users/user.export-to-csv.settings.interface.js +0 -1
- package/lib/esm/users/user.interface.js +0 -1
- package/lib/esm/users/user.js +0 -38
- package/lib/esm/users/user.service.meta.interface.js +0 -1
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { DataLatitudeDegrees } from '../../../../data/data.latitude-degrees';
|
|
2
|
-
import { DataAltitude } from '../../../../data/data.altitude';
|
|
3
|
-
import { DataHeartRate } from '../../../../data/data.heart-rate';
|
|
4
|
-
import { DataCadence } from '../../../../data/data.cadence';
|
|
5
|
-
import { DataDistance } from '../../../../data/data.distance';
|
|
6
|
-
import { DataSpeed } from '../../../../data/data.speed';
|
|
7
|
-
import { DataPace } from '../../../../data/data.pace';
|
|
8
|
-
import { DataPower } from '../../../../data/data.power';
|
|
9
|
-
import { DataLongitudeDegrees } from '../../../../data/data.longitude-degrees';
|
|
10
|
-
import { convertSpeedToPace } from '../../../utilities/helpers';
|
|
11
|
-
import { findChildNode, findChildNodeValue, findTrackPointExtensionValue } from './utils.tcx';
|
|
12
|
-
export const TCXSampleMapper = [
|
|
13
|
-
{
|
|
14
|
-
dataType: DataLatitudeDegrees.type,
|
|
15
|
-
getSampleValue: (trackPointsElement) => {
|
|
16
|
-
const positionChildNode = findChildNode(trackPointsElement.childNodes, 'Position');
|
|
17
|
-
if (!positionChildNode) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
return findChildNodeValue(positionChildNode.childNodes, 'LatitudeDegrees');
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
dataType: DataLongitudeDegrees.type,
|
|
25
|
-
getSampleValue: (trackPointsElement) => {
|
|
26
|
-
const positionChildNode = findChildNode(trackPointsElement.childNodes, 'Position');
|
|
27
|
-
if (!positionChildNode) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
return findChildNodeValue(positionChildNode.childNodes, 'LongitudeDegrees');
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
dataType: DataDistance.type,
|
|
35
|
-
getSampleValue: (trackPointsElement) => {
|
|
36
|
-
return findChildNodeValue(trackPointsElement.childNodes, 'DistanceMeters');
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
dataType: DataAltitude.type,
|
|
41
|
-
getSampleValue: (trackPointsElement) => {
|
|
42
|
-
return findChildNodeValue(trackPointsElement.childNodes, 'AltitudeMeters');
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
dataType: DataCadence.type,
|
|
47
|
-
getSampleValue: (trackPointsElement) => {
|
|
48
|
-
return findChildNodeValue(trackPointsElement.childNodes, 'Cadence');
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
dataType: DataHeartRate.type,
|
|
53
|
-
getSampleValue: (trackPointsElement) => {
|
|
54
|
-
const heartRateChildNode = findChildNode(trackPointsElement.childNodes, 'HeartRateBpm');
|
|
55
|
-
if (!heartRateChildNode) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
return findChildNodeValue(heartRateChildNode.childNodes, 'Value');
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
dataType: DataCadence.type,
|
|
63
|
-
getSampleValue: (trackPointsElement) => {
|
|
64
|
-
return findTrackPointExtensionValue(trackPointsElement.childNodes, 'RunCadence');
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
dataType: DataSpeed.type,
|
|
69
|
-
getSampleValue: (trackPointsElement) => {
|
|
70
|
-
return findTrackPointExtensionValue(trackPointsElement.childNodes, 'Speed');
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
dataType: DataPace.type,
|
|
75
|
-
getSampleValue: (trackPointsElement) => {
|
|
76
|
-
const speed = findTrackPointExtensionValue(trackPointsElement.childNodes, 'Speed');
|
|
77
|
-
return speed !== null ? convertSpeedToPace(speed) : null;
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
dataType: DataPower.type,
|
|
82
|
-
getSampleValue: (trackPointsElement, sampleInfo) => {
|
|
83
|
-
// Ensure power stream compliance when in some cases power sample field could be missing even if others samples have it
|
|
84
|
-
// Just set watts to 0 when this happen
|
|
85
|
-
// Case example: ride file "7555170032.tcx" from integration tests
|
|
86
|
-
return (sampleInfo === null || sampleInfo === void 0 ? void 0 : sampleInfo.hasPowerMeter)
|
|
87
|
-
? findTrackPointExtensionValue(trackPointsElement.childNodes, 'Watts') || 0
|
|
88
|
-
: null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
];
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export const findChildNode = (fromNodeList, childNodeName) => {
|
|
2
|
-
const childNodeFound = Array.from(fromNodeList).find((childNode) => {
|
|
3
|
-
return childNode.nodeName === childNodeName || childNode.nodeName.match(childNodeName) !== null;
|
|
4
|
-
});
|
|
5
|
-
return childNodeFound ? childNodeFound : null;
|
|
6
|
-
};
|
|
7
|
-
export const findChildNodeValue = (fromNodeList, childNodeName) => {
|
|
8
|
-
var _a, _b;
|
|
9
|
-
const predicate = (childNode) => childNode.nodeName === childNodeName || childNode.nodeName.match(childNodeName) !== null;
|
|
10
|
-
let value = (_b = (_a = Array.from(fromNodeList).find(predicate)) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.nodeValue;
|
|
11
|
-
value = value !== undefined ? value : null;
|
|
12
|
-
if (value === null) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
return Number(value);
|
|
16
|
-
};
|
|
17
|
-
// Fetch activity track point extensions according https://www8.garmin.com/xmlschemas/ActivityExtensionv2.xsd schema
|
|
18
|
-
export const findTrackPointExtensionValue = (childNodes, extensionName) => {
|
|
19
|
-
return findExtensionValue(childNodes, extensionName, 'TPX');
|
|
20
|
-
};
|
|
21
|
-
// Fetch activity lap extensions according https://www8.garmin.com/xmlschemas/ActivityExtensionv2.xsd schema
|
|
22
|
-
export const findLapExtensionValue = (childNodes, extensionName) => {
|
|
23
|
-
return findExtensionValue(childNodes, extensionName, 'LX');
|
|
24
|
-
};
|
|
25
|
-
export const findExtensionValue = (childNodes, extensionName, namespace) => {
|
|
26
|
-
const trackPointsChild = findChildNode(childNodes, 'Extensions');
|
|
27
|
-
if (!trackPointsChild) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
const tpxChildNode = findChildNode(trackPointsChild.childNodes, new RegExp(`${namespace}$`, 'gi'));
|
|
31
|
-
if (tpxChildNode) {
|
|
32
|
-
const value = findChildNodeValue(tpxChildNode.childNodes, new RegExp(extensionName + '$'));
|
|
33
|
-
return value !== null ? Number(value) : null;
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/esm/events/event.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { DurationClassAbstract } from '../duration/duration.class.abstract';
|
|
2
|
-
import { Privacy } from '../privacy/privacy.class.interface';
|
|
3
|
-
import { ActivityTypes } from '../activities/activity.types';
|
|
4
|
-
import { DataActivityTypes } from '../data/data.activity-types';
|
|
5
|
-
import { DataDeviceNames } from '../data/data.device-names';
|
|
6
|
-
export class Event extends DurationClassAbstract {
|
|
7
|
-
constructor(name, startDate, endDate, srcFileType, privacy, description, isMerge = false) {
|
|
8
|
-
super(startDate, endDate);
|
|
9
|
-
this.privacy = Privacy.Private;
|
|
10
|
-
this.activities = [];
|
|
11
|
-
this.name = name;
|
|
12
|
-
this.srcFileType = srcFileType;
|
|
13
|
-
if (privacy) {
|
|
14
|
-
this.privacy = privacy;
|
|
15
|
-
}
|
|
16
|
-
if (description) {
|
|
17
|
-
this.description = description;
|
|
18
|
-
}
|
|
19
|
-
this.isMerge = isMerge;
|
|
20
|
-
}
|
|
21
|
-
addActivity(activity) {
|
|
22
|
-
this.activities.push(activity);
|
|
23
|
-
}
|
|
24
|
-
addActivities(activities) {
|
|
25
|
-
activities.forEach(activity => this.addActivity(activity));
|
|
26
|
-
}
|
|
27
|
-
clearActivities() {
|
|
28
|
-
this.activities = [];
|
|
29
|
-
}
|
|
30
|
-
removeActivity(activityToRemove) {
|
|
31
|
-
this.activities = this.activities.filter(activity => activityToRemove.getID() !== activity.getID());
|
|
32
|
-
}
|
|
33
|
-
getActivities() {
|
|
34
|
-
this.sortActivities(); // PErhaps move on adding ? Lets check performance
|
|
35
|
-
return this.activities;
|
|
36
|
-
}
|
|
37
|
-
getFirstActivity() {
|
|
38
|
-
return this.getActivities().reduce((activityA, activityB) => {
|
|
39
|
-
return activityA.startDate < activityB.startDate ? activityA : activityB;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
getLastActivity() {
|
|
43
|
-
return this.getActivities().reduce((activityA, activityB) => {
|
|
44
|
-
return activityA.startDate < activityB.startDate ? activityB : activityA;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
getActivityTypesAsArray() {
|
|
48
|
-
const activityTypesStat = this.getStat(DataActivityTypes.type);
|
|
49
|
-
if (!activityTypesStat) {
|
|
50
|
-
throw new Error(`Event with id ${this.getID()} has no activity types`);
|
|
51
|
-
}
|
|
52
|
-
return activityTypesStat.getValue();
|
|
53
|
-
}
|
|
54
|
-
getActivityTypesAsString() {
|
|
55
|
-
const activityTypesStat = this.getStat(DataActivityTypes.type);
|
|
56
|
-
if (!activityTypesStat) {
|
|
57
|
-
throw new Error(`Event with id ${this.getID()} has no activity types`);
|
|
58
|
-
}
|
|
59
|
-
return activityTypesStat.getValue().length > 1
|
|
60
|
-
? `${this.getUniqueStringWithMultiplier(activityTypesStat
|
|
61
|
-
.getValue()
|
|
62
|
-
.map((activityType) => ActivityTypes[activityType]))}`
|
|
63
|
-
: ActivityTypes[activityTypesStat.getDisplayValue()];
|
|
64
|
-
}
|
|
65
|
-
getDeviceNamesAsString() {
|
|
66
|
-
const deviceNamesStat = this.getStat(DataDeviceNames.type);
|
|
67
|
-
if (!deviceNamesStat) {
|
|
68
|
-
throw new Error(`Event with id ${this.getID()} has no device names`);
|
|
69
|
-
}
|
|
70
|
-
return `${this.getUniqueStringWithMultiplier(deviceNamesStat.getValue())}`;
|
|
71
|
-
}
|
|
72
|
-
sortActivities() {
|
|
73
|
-
this.activities.sort((activityA, activityB) => {
|
|
74
|
-
return +activityA.startDate - +activityB.startDate;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
getUniqueStringWithMultiplier(arrayOfStrings) {
|
|
78
|
-
const uniqueObject = arrayOfStrings.reduce((uniqueObj, type, index) => {
|
|
79
|
-
if (!uniqueObj[type]) {
|
|
80
|
-
uniqueObj[type] = 1;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
uniqueObj[type] += 1;
|
|
84
|
-
}
|
|
85
|
-
return uniqueObj;
|
|
86
|
-
}, {});
|
|
87
|
-
return Object.keys(uniqueObject)
|
|
88
|
-
.reduce((uniqueArray, key, index, object) => {
|
|
89
|
-
if (uniqueObject[key] === 1) {
|
|
90
|
-
uniqueArray.push(key);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
uniqueArray.push(uniqueObject[key] + 'x ' + key);
|
|
94
|
-
}
|
|
95
|
-
return uniqueArray;
|
|
96
|
-
}, [])
|
|
97
|
-
.join(', ');
|
|
98
|
-
}
|
|
99
|
-
isMultiSport() {
|
|
100
|
-
return !this.isMerge && this.getActivities().length > 1;
|
|
101
|
-
}
|
|
102
|
-
toJSON() {
|
|
103
|
-
const stats = {};
|
|
104
|
-
this.stats.forEach((value, key) => {
|
|
105
|
-
Object.assign(stats, value.toJSON());
|
|
106
|
-
});
|
|
107
|
-
return {
|
|
108
|
-
name: this.name,
|
|
109
|
-
srcFileType: this.srcFileType,
|
|
110
|
-
description: this.description || null,
|
|
111
|
-
privacy: this.privacy,
|
|
112
|
-
startDate: this.startDate.getTime(),
|
|
113
|
-
endDate: this.endDate.getTime(),
|
|
114
|
-
stats: stats,
|
|
115
|
-
isMerge: this.isMerge,
|
|
116
|
-
activities: this.getActivities().reduce((activities, activity) => {
|
|
117
|
-
const jsonActivity = activity.toJSON();
|
|
118
|
-
activities.push(jsonActivity);
|
|
119
|
-
return activities;
|
|
120
|
-
}, [])
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Event } from './event';
|
|
2
|
-
import { Activity } from '../activities/activity';
|
|
3
|
-
import { Creator } from '../creators/creator';
|
|
4
|
-
import { ActivityTypes } from '../activities/activity.types';
|
|
5
|
-
import { FileType } from './adapters/file-type.enum';
|
|
6
|
-
describe('Event', () => {
|
|
7
|
-
let event;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
event = new Event('Test', new Date(0), new Date(200), FileType.FIT);
|
|
10
|
-
event.description = 'Test';
|
|
11
|
-
});
|
|
12
|
-
it('should add an activity', () => {
|
|
13
|
-
expect(event.getActivities().length).toBe(0);
|
|
14
|
-
event.addActivity(new Activity(new Date(0), new Date(new Date(0).getTime() + 10), ActivityTypes.Running, new Creator('Test')));
|
|
15
|
-
expect(event.getActivities().length).toBe(1);
|
|
16
|
-
});
|
|
17
|
-
it('should remove an activity', () => {
|
|
18
|
-
const activity = new Activity(new Date(0), new Date(new Date(0).getTime() + 10), ActivityTypes.Running, new Creator('Test'));
|
|
19
|
-
event.addActivity(activity);
|
|
20
|
-
expect(event.getActivities().length).toBe(1);
|
|
21
|
-
event.removeActivity(activity);
|
|
22
|
-
expect(event.getActivities().length).toBe(0);
|
|
23
|
-
});
|
|
24
|
-
it('should get the first and the last activity', () => {
|
|
25
|
-
const activityA = new Activity(new Date(20), new Date(30), ActivityTypes.Running, new Creator('Test'));
|
|
26
|
-
const activityB = new Activity(new Date(0), new Date(10), ActivityTypes.Running, new Creator('Test'));
|
|
27
|
-
event.addActivity(activityA);
|
|
28
|
-
event.addActivity(activityB);
|
|
29
|
-
// Should get them sorted by date
|
|
30
|
-
expect(event.getFirstActivity()).toEqual(activityB);
|
|
31
|
-
expect(event.getLastActivity()).toEqual(activityA);
|
|
32
|
-
});
|
|
33
|
-
it('should export correctly to JSON', () => {
|
|
34
|
-
const d1 = new Date(0);
|
|
35
|
-
const d2 = new Date(new Date(0).getTime() + 200);
|
|
36
|
-
const activity = new Activity(d1, d2, ActivityTypes.Running, new Creator('Test'));
|
|
37
|
-
event.addActivity(activity);
|
|
38
|
-
event.setID('123');
|
|
39
|
-
expect(event.toJSON()).toEqual({
|
|
40
|
-
name: 'Test',
|
|
41
|
-
description: 'Test',
|
|
42
|
-
isMerge: false,
|
|
43
|
-
privacy: 'private',
|
|
44
|
-
srcFileType: FileType.FIT,
|
|
45
|
-
stats: {},
|
|
46
|
-
activities: [activity.toJSON()],
|
|
47
|
-
startDate: d1.getTime(),
|
|
48
|
-
endDate: d2.getTime()
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
});
|