@sports-alliance/sports-lib 7.0.8 → 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.
Files changed (326) hide show
  1. package/lib/esm/index.js +12034 -152
  2. package/package.json +2 -2
  3. package/lib/esm/activities/activity-parsing-options.js +0 -19
  4. package/lib/esm/activities/activity.interface.js +0 -1
  5. package/lib/esm/activities/activity.js +0 -281
  6. package/lib/esm/activities/activity.json.interface.js +0 -1
  7. package/lib/esm/activities/activity.spec.js +0 -348
  8. package/lib/esm/activities/activity.types.js +0 -1046
  9. package/lib/esm/activities/activityt-types.spec.js +0 -16
  10. package/lib/esm/activities/devices/device.interface.js +0 -1
  11. package/lib/esm/activities/devices/device.js +0 -26
  12. package/lib/esm/activities/devices/device.json.interface.js +0 -1
  13. package/lib/esm/constants/constants.js +0 -8
  14. package/lib/esm/creators/creator.interface.js +0 -1
  15. package/lib/esm/creators/creator.js +0 -37
  16. package/lib/esm/creators/creator.json.interface.js +0 -1
  17. package/lib/esm/creators/creator.spec.js +0 -25
  18. package/lib/esm/data/data-active-lap.js +0 -4
  19. package/lib/esm/data/data-active-lengths.js +0 -4
  20. package/lib/esm/data/data-aerobic-training-effect.js +0 -8
  21. package/lib/esm/data/data-anaerobic-training-effect.js +0 -8
  22. package/lib/esm/data/data-stance-time-balance-left.js +0 -4
  23. package/lib/esm/data/data-stance-time-balance-right.js +0 -4
  24. package/lib/esm/data/data-stance-time-balance.js +0 -3
  25. package/lib/esm/data/data-store.spec.js +0 -78
  26. package/lib/esm/data/data-total-cycles.js +0 -4
  27. package/lib/esm/data/data.absolute-pressure.js +0 -5
  28. package/lib/esm/data/data.accumulated-power.js +0 -8
  29. package/lib/esm/data/data.activity-types.js +0 -7
  30. package/lib/esm/data/data.air-power-avg.js +0 -4
  31. package/lib/esm/data/data.air-power-max.js +0 -4
  32. package/lib/esm/data/data.air-power-min.js +0 -4
  33. package/lib/esm/data/data.air-power.js +0 -8
  34. package/lib/esm/data/data.alti-baro-profile.js +0 -4
  35. package/lib/esm/data/data.altitude-avg.js +0 -4
  36. package/lib/esm/data/data.altitude-gps.js +0 -5
  37. package/lib/esm/data/data.altitude-max.js +0 -4
  38. package/lib/esm/data/data.altitude-min.js +0 -4
  39. package/lib/esm/data/data.altitude-smooth.js +0 -4
  40. package/lib/esm/data/data.altitude.js +0 -8
  41. package/lib/esm/data/data.array.js +0 -13
  42. package/lib/esm/data/data.ascent-time.js +0 -4
  43. package/lib/esm/data/data.ascent.js +0 -4
  44. package/lib/esm/data/data.auto-lap-distance.js +0 -5
  45. package/lib/esm/data/data.auto-lap-duration.js +0 -4
  46. package/lib/esm/data/data.auto-lap-used.js +0 -7
  47. package/lib/esm/data/data.auto-pause-used.js +0 -7
  48. package/lib/esm/data/data.avg-stride-length.js +0 -4
  49. package/lib/esm/data/data.balance.js +0 -6
  50. package/lib/esm/data/data.bare.js +0 -4
  51. package/lib/esm/data/data.battery-charge.js +0 -8
  52. package/lib/esm/data/data.battery-consumption.js +0 -8
  53. package/lib/esm/data/data.battery-current.js +0 -8
  54. package/lib/esm/data/data.battery-life-estimation.js +0 -4
  55. package/lib/esm/data/data.battery-voltage.js +0 -8
  56. package/lib/esm/data/data.bike-pod-used.js +0 -7
  57. package/lib/esm/data/data.boolean.js +0 -9
  58. package/lib/esm/data/data.cadence-avg.js +0 -4
  59. package/lib/esm/data/data.cadence-max.js +0 -4
  60. package/lib/esm/data/data.cadence-min.js +0 -4
  61. package/lib/esm/data/data.cadence.js +0 -8
  62. package/lib/esm/data/data.cycling-dynamics.js +0 -3
  63. package/lib/esm/data/data.cycling-position.js +0 -37
  64. package/lib/esm/data/data.cycling-seated-time.js +0 -5
  65. package/lib/esm/data/data.cycling-standing-time.js +0 -5
  66. package/lib/esm/data/data.descent-time.js +0 -4
  67. package/lib/esm/data/data.descent.js +0 -4
  68. package/lib/esm/data/data.description.js +0 -4
  69. package/lib/esm/data/data.device-location.js +0 -4
  70. package/lib/esm/data/data.device-names.js +0 -7
  71. package/lib/esm/data/data.distance.js +0 -15
  72. package/lib/esm/data/data.duration.js +0 -56
  73. package/lib/esm/data/data.ehpe.js +0 -5
  74. package/lib/esm/data/data.enabled-navigation-systems.js +0 -4
  75. package/lib/esm/data/data.end-altitude.js +0 -4
  76. package/lib/esm/data/data.end-position.js +0 -4
  77. package/lib/esm/data/data.energy.js +0 -8
  78. package/lib/esm/data/data.epoc.js +0 -5
  79. package/lib/esm/data/data.event.js +0 -3
  80. package/lib/esm/data/data.evpe.js +0 -4
  81. package/lib/esm/data/data.feeling.js +0 -15
  82. package/lib/esm/data/data.foot-pod-used.js +0 -7
  83. package/lib/esm/data/data.form-power.js +0 -4
  84. package/lib/esm/data/data.fused-altitude.js +0 -7
  85. package/lib/esm/data/data.fused-location.js +0 -7
  86. package/lib/esm/data/data.gnss-distance.js +0 -4
  87. package/lib/esm/data/data.grade-adjusted-pace-avg.js +0 -15
  88. package/lib/esm/data/data.grade-adjusted-pace-max.js +0 -15
  89. package/lib/esm/data/data.grade-adjusted-pace-min.js +0 -15
  90. package/lib/esm/data/data.grade-adjusted-pace.js +0 -25
  91. package/lib/esm/data/data.grade-adjusted-speed-avg.js +0 -46
  92. package/lib/esm/data/data.grade-adjusted-speed-max.js +0 -46
  93. package/lib/esm/data/data.grade-adjusted-speed-min.js +0 -46
  94. package/lib/esm/data/data.grade-adjusted-speed.js +0 -78
  95. package/lib/esm/data/data.grade-smooth.js +0 -7
  96. package/lib/esm/data/data.grade.js +0 -7
  97. package/lib/esm/data/data.ground-time.js +0 -8
  98. package/lib/esm/data/data.heart-rate-avg.js +0 -4
  99. package/lib/esm/data/data.heart-rate-max.js +0 -4
  100. package/lib/esm/data/data.heart-rate-min.js +0 -4
  101. package/lib/esm/data/data.heart-rate-used.js +0 -7
  102. package/lib/esm/data/data.heart-rate-zone-five-duration.js +0 -4
  103. package/lib/esm/data/data.heart-rate-zone-four-duration.js +0 -4
  104. package/lib/esm/data/data.heart-rate-zone-one-duration.js +0 -4
  105. package/lib/esm/data/data.heart-rate-zone-three-duration.js +0 -4
  106. package/lib/esm/data/data.heart-rate-zone-two-duration.js +0 -4
  107. package/lib/esm/data/data.heart-rate.js +0 -8
  108. package/lib/esm/data/data.ibi.js +0 -8
  109. package/lib/esm/data/data.interface.js +0 -5
  110. package/lib/esm/data/data.js +0 -62
  111. package/lib/esm/data/data.json.interface.js +0 -1
  112. package/lib/esm/data/data.latitude-degrees.js +0 -5
  113. package/lib/esm/data/data.left-balance.js +0 -4
  114. package/lib/esm/data/data.leg-stiffness.js +0 -16
  115. package/lib/esm/data/data.longitude-degrees.js +0 -5
  116. package/lib/esm/data/data.moving-time.js +0 -4
  117. package/lib/esm/data/data.number-of-satellites.js +0 -7
  118. package/lib/esm/data/data.number-of.samples.js +0 -4
  119. package/lib/esm/data/data.number.js +0 -13
  120. package/lib/esm/data/data.pace-avg.js +0 -8
  121. package/lib/esm/data/data.pace-max.js +0 -8
  122. package/lib/esm/data/data.pace-min.js +0 -8
  123. package/lib/esm/data/data.pace.js +0 -46
  124. package/lib/esm/data/data.pause.js +0 -4
  125. package/lib/esm/data/data.peak-epoc.js +0 -7
  126. package/lib/esm/data/data.peak-training-effect.js +0 -4
  127. package/lib/esm/data/data.percent.js +0 -4
  128. package/lib/esm/data/data.pool-length.js +0 -5
  129. package/lib/esm/data/data.position.interface.js +0 -1
  130. package/lib/esm/data/data.position.js +0 -18
  131. package/lib/esm/data/data.power-avg.js +0 -4
  132. package/lib/esm/data/data.power-down.js +0 -4
  133. package/lib/esm/data/data.power-intensity-factor.js +0 -5
  134. package/lib/esm/data/data.power-left.js +0 -4
  135. package/lib/esm/data/data.power-max.js +0 -4
  136. package/lib/esm/data/data.power-min.js +0 -4
  137. package/lib/esm/data/data.power-normalized.js +0 -4
  138. package/lib/esm/data/data.power-pedal-smoothness-left.js +0 -4
  139. package/lib/esm/data/data.power-pedal-smoothness-right.js +0 -4
  140. package/lib/esm/data/data.power-pod-used.js +0 -7
  141. package/lib/esm/data/data.power-right.js +0 -4
  142. package/lib/esm/data/data.power-torque-effectiveness-left.js +0 -4
  143. package/lib/esm/data/data.power-torque-effectiveness-right.js +0 -4
  144. package/lib/esm/data/data.power-training-stress-score.js +0 -5
  145. package/lib/esm/data/data.power-up.js +0 -4
  146. package/lib/esm/data/data.power-work.js +0 -5
  147. package/lib/esm/data/data.power-zone-five-duration.js +0 -4
  148. package/lib/esm/data/data.power-zone-four-duration.js +0 -4
  149. package/lib/esm/data/data.power-zone-one-duration.js +0 -4
  150. package/lib/esm/data/data.power-zone-three-duration.js +0 -4
  151. package/lib/esm/data/data.power-zone-two-duration.js +0 -4
  152. package/lib/esm/data/data.power.js +0 -8
  153. package/lib/esm/data/data.recovery-time.js +0 -7
  154. package/lib/esm/data/data.rider-position-change-event.js +0 -8
  155. package/lib/esm/data/data.right-balance.js +0 -4
  156. package/lib/esm/data/data.rpe.js +0 -23
  157. package/lib/esm/data/data.satellite-5-best-snr.js +0 -4
  158. package/lib/esm/data/data.sea-level-pressure.js +0 -5
  159. package/lib/esm/data/data.spec.js +0 -25
  160. package/lib/esm/data/data.speed-avg.js +0 -46
  161. package/lib/esm/data/data.speed-max.js +0 -46
  162. package/lib/esm/data/data.speed-min.js +0 -46
  163. package/lib/esm/data/data.speed-zone-five-duration.js +0 -4
  164. package/lib/esm/data/data.speed-zone-four-duration.js +0 -4
  165. package/lib/esm/data/data.speed-zone-one-duration.js +0 -4
  166. package/lib/esm/data/data.speed-zone-three-duration.js +0 -4
  167. package/lib/esm/data/data.speed-zone-two-duration.js +0 -4
  168. package/lib/esm/data/data.speed.js +0 -88
  169. package/lib/esm/data/data.sport-profile-name.js +0 -4
  170. package/lib/esm/data/data.stance-time.js +0 -5
  171. package/lib/esm/data/data.start-altitude.js +0 -4
  172. package/lib/esm/data/data.start-event.js +0 -4
  173. package/lib/esm/data/data.start-position.js +0 -4
  174. package/lib/esm/data/data.step-length.js +0 -4
  175. package/lib/esm/data/data.steps-old.js +0 -4
  176. package/lib/esm/data/data.steps.js +0 -4
  177. package/lib/esm/data/data.stop-all-event.js +0 -4
  178. package/lib/esm/data/data.stop-event.js +0 -4
  179. package/lib/esm/data/data.store.export.spec.js +0 -66
  180. package/lib/esm/data/data.store.js +0 -1213
  181. package/lib/esm/data/data.string.js +0 -13
  182. package/lib/esm/data/data.stryd-altitude.js +0 -4
  183. package/lib/esm/data/data.stryd-distance.js +0 -4
  184. package/lib/esm/data/data.stryd-speed.js +0 -4
  185. package/lib/esm/data/data.swim-pace-avg.js +0 -8
  186. package/lib/esm/data/data.swim-pace-max.js +0 -8
  187. package/lib/esm/data/data.swim-pace-min.js +0 -8
  188. package/lib/esm/data/data.swim-pace.js +0 -19
  189. package/lib/esm/data/data.swolf-25m.js +0 -4
  190. package/lib/esm/data/data.swolf-50m.js +0 -4
  191. package/lib/esm/data/data.target-distance.js +0 -4
  192. package/lib/esm/data/data.target-heart-rate-zone.js +0 -4
  193. package/lib/esm/data/data.target-power-zone.js +0 -4
  194. package/lib/esm/data/data.target-speed-zone.js +0 -4
  195. package/lib/esm/data/data.target-time.js +0 -4
  196. package/lib/esm/data/data.temperature-avg.js +0 -4
  197. package/lib/esm/data/data.temperature-max.js +0 -4
  198. package/lib/esm/data/data.temperature-min.js +0 -4
  199. package/lib/esm/data/data.temperature.js +0 -8
  200. package/lib/esm/data/data.time.js +0 -6
  201. package/lib/esm/data/data.timer-time.js +0 -4
  202. package/lib/esm/data/data.vertical-oscillation.js +0 -5
  203. package/lib/esm/data/data.vertical-ratio.js +0 -5
  204. package/lib/esm/data/data.vertical-speed-avg.js +0 -53
  205. package/lib/esm/data/data.vertical-speed-max.js +0 -53
  206. package/lib/esm/data/data.vertical-speed-min.js +0 -53
  207. package/lib/esm/data/data.vertical-speed.js +0 -103
  208. package/lib/esm/data/data.vo2-max.js +0 -7
  209. package/lib/esm/data/ibi/data.ibi.filters.js +0 -52
  210. package/lib/esm/data/ibi/data.ibi.js +0 -98
  211. package/lib/esm/data/ibi/data.ibi.spec.js +0 -66
  212. package/lib/esm/duration/duration.class.abstract.js +0 -36
  213. package/lib/esm/duration/duration.class.interface.js +0 -1
  214. package/lib/esm/errors/duration-exceeded-event-lib.error.js +0 -9
  215. package/lib/esm/errors/empty-event-sports-libs.error.js +0 -9
  216. package/lib/esm/errors/event-lib.error.js +0 -8
  217. package/lib/esm/errors/lib.error.js +0 -6
  218. package/lib/esm/errors/parsing-event-lib.error.js +0 -9
  219. package/lib/esm/events/adapters/exporters/exporter.gpx.js +0 -75
  220. package/lib/esm/events/adapters/exporters/exporter.interface.js +0 -1
  221. package/lib/esm/events/adapters/exporters/exporter.json.js +0 -20
  222. package/lib/esm/events/adapters/file-type.enum.js +0 -7
  223. package/lib/esm/events/adapters/importers/fit/importer.fit.ant-plus.device.names.js +0 -25
  224. package/lib/esm/events/adapters/importers/fit/importer.fit.coros.device.names.js +0 -5
  225. package/lib/esm/events/adapters/importers/fit/importer.fit.development.device.names.js +0 -4
  226. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.device.names.js +0 -462
  227. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.data.js +0 -877
  228. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.js +0 -106
  229. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.spec.js +0 -32
  230. package/lib/esm/events/adapters/importers/fit/importer.fit.hammerhead.device.names.js +0 -4
  231. package/lib/esm/events/adapters/importers/fit/importer.fit.integration.spec.js +0 -44
  232. package/lib/esm/events/adapters/importers/fit/importer.fit.js +0 -978
  233. package/lib/esm/events/adapters/importers/fit/importer.fit.lezyne.device.names.js +0 -3
  234. package/lib/esm/events/adapters/importers/fit/importer.fit.magellan.device.names.js +0 -5
  235. package/lib/esm/events/adapters/importers/fit/importer.fit.mapper.js +0 -231
  236. package/lib/esm/events/adapters/importers/fit/importer.fit.saris.device.names.js +0 -3
  237. package/lib/esm/events/adapters/importers/fit/importer.fit.spec.js +0 -326
  238. package/lib/esm/events/adapters/importers/fit/importer.fit.srm.device.names.js +0 -7
  239. package/lib/esm/events/adapters/importers/fit/importer.fit.suunto.device.names.js +0 -16
  240. package/lib/esm/events/adapters/importers/fit/importer.fit.wahoo.device.names.js +0 -10
  241. package/lib/esm/events/adapters/importers/gpx/gx-parser.js +0 -36
  242. package/lib/esm/events/adapters/importers/gpx/importer.gpx.integration.spec.js +0 -44
  243. package/lib/esm/events/adapters/importers/gpx/importer.gpx.js +0 -102
  244. package/lib/esm/events/adapters/importers/gpx/importer.gpx.mapper.js +0 -142
  245. package/lib/esm/events/adapters/importers/gpx/importer.gpx.spec.js +0 -71
  246. package/lib/esm/events/adapters/importers/json/importer.json.js +0 -160
  247. package/lib/esm/events/adapters/importers/sample-info.interface.js +0 -1
  248. package/lib/esm/events/adapters/importers/suunto/importer.suunto.activity.ids.js +0 -85
  249. package/lib/esm/events/adapters/importers/suunto/importer.suunto.device.names.js +0 -26
  250. package/lib/esm/events/adapters/importers/suunto/importer.suunto.integration.spec.js +0 -44
  251. package/lib/esm/events/adapters/importers/suunto/importer.suunto.json.js +0 -717
  252. package/lib/esm/events/adapters/importers/suunto/importer.suunto.sml.js +0 -125
  253. package/lib/esm/events/adapters/importers/tcx/importer.tcx.integration.spec.js +0 -46
  254. package/lib/esm/events/adapters/importers/tcx/importer.tcx.js +0 -442
  255. package/lib/esm/events/adapters/importers/tcx/importer.tcx.mapper.js +0 -91
  256. package/lib/esm/events/adapters/importers/tcx/utils.tcx.js +0 -36
  257. package/lib/esm/events/event.interface.js +0 -1
  258. package/lib/esm/events/event.js +0 -123
  259. package/lib/esm/events/event.json.interface.js +0 -1
  260. package/lib/esm/events/event.spec.js +0 -51
  261. package/lib/esm/events/utilities/activity.utilities.js +0 -1841
  262. package/lib/esm/events/utilities/activity.utilities.spec.js +0 -373
  263. package/lib/esm/events/utilities/event.utilities.js +0 -57
  264. package/lib/esm/events/utilities/grade-calculator/grade-calculator.js +0 -121
  265. package/lib/esm/events/utilities/grade-calculator/grade-calculator.spec.js +0 -93
  266. package/lib/esm/events/utilities/grade-calculator/low-pass-filter.js +0 -86
  267. package/lib/esm/events/utilities/helpers.js +0 -162
  268. package/lib/esm/geodesy/adapters/adapter.interface.js +0 -1
  269. package/lib/esm/geodesy/adapters/geolib.adapter.js +0 -28
  270. package/lib/esm/id/id.abstract.class.js +0 -9
  271. package/lib/esm/id/id.class.interface.js +0 -1
  272. package/lib/esm/id/id.class.spec.js +0 -13
  273. package/lib/esm/intensity-zones/intensity-zones.interface.js +0 -1
  274. package/lib/esm/intensity-zones/intensity-zones.js +0 -29
  275. package/lib/esm/intensity-zones/intensity-zones.json.interface.js +0 -1
  276. package/lib/esm/intensity-zones/intensity-zones.spec.js +0 -30
  277. package/lib/esm/laps/lap.interface.js +0 -1
  278. package/lib/esm/laps/lap.js +0 -29
  279. package/lib/esm/laps/lap.json.interface.js +0 -1
  280. package/lib/esm/laps/lap.types.js +0 -52
  281. package/lib/esm/meta-data/event-meta-data.interface.js +0 -6
  282. package/lib/esm/meta-data/meta-data.js +0 -57
  283. package/lib/esm/meta-data/meta-data.json.interface.js +0 -1
  284. package/lib/esm/privacy/privacy.class.interface.js +0 -5
  285. package/lib/esm/serializable/serializable.class.interface.js +0 -1
  286. package/lib/esm/service-tokens/oauth1-service-token.interface.js +0 -1
  287. package/lib/esm/service-tokens/oauth2-service-token.interface.js +0 -1
  288. package/lib/esm/specs/activities-parsing.integration.spec.js +0 -1847
  289. package/lib/esm/specs/activity-duration-stream.integration.spec.js +0 -57
  290. package/lib/esm/specs/fixtures/streams/strava/rides/3171472783.json +0 -52534
  291. package/lib/esm/specs/fixtures/streams/strava/rides/3171487458.json +0 -78818
  292. package/lib/esm/specs/fixtures/streams/strava/rides/343080886.json +0 -105090
  293. package/lib/esm/specs/fixtures/streams/strava/rides/5910143591.json +0 -110711
  294. package/lib/esm/specs/fixtures/streams/strava/runs/2451375851.json +0 -74846
  295. package/lib/esm/specs/fixtures/streams/strava/runs/2709634581.json +0 -66817
  296. package/lib/esm/specs/fixtures/streams/strava/runs/3156040843.json +0 -17594
  297. package/lib/esm/specs/fixtures/streams/strava/runs/3182900697.json +0 -17322
  298. package/lib/esm/specs/fixtures/streams/strava/runs/3183465494.json +0 -20463
  299. package/lib/esm/specs/fixtures/streams/strava/runs/3183490558.json +0 -58202
  300. package/lib/esm/specs/spec-utils.js +0 -159
  301. package/lib/esm/specs/strava-streams-compliance.spec.js +0 -951
  302. package/lib/esm/stats/stats.class.abstract.js +0 -32
  303. package/lib/esm/stats/stats.class.interface.js +0 -1
  304. package/lib/esm/stats/stats.json.interface.js +0 -1
  305. package/lib/esm/streams/compressed.stream.interface.js +0 -12
  306. package/lib/esm/streams/ibi-stream.js +0 -43
  307. package/lib/esm/streams/low-pass.stream.filter.js +0 -9
  308. package/lib/esm/streams/stream.filter.interface.js +0 -1
  309. package/lib/esm/streams/stream.interface.js +0 -1
  310. package/lib/esm/streams/stream.js +0 -72
  311. package/lib/esm/streams/stream.spec.js +0 -168
  312. package/lib/esm/tiles/tile.settings.interface.js +0 -41
  313. package/lib/esm/users/settings/dashboard/user.dashboard.settings.interface.js +0 -13
  314. package/lib/esm/users/settings/user.app.settings.interface.js +0 -5
  315. package/lib/esm/users/settings/user.chart.settings.interface.js +0 -23
  316. package/lib/esm/users/settings/user.map.settings.interface.js +0 -22
  317. package/lib/esm/users/settings/user.my-tracks.settings.interface.js +0 -1
  318. package/lib/esm/users/settings/user.settings.interface.js +0 -1
  319. package/lib/esm/users/settings/user.stats-settings.interface.js +0 -1
  320. package/lib/esm/users/settings/user.summaries.settings.interface.js +0 -1
  321. package/lib/esm/users/settings/user.unit.settings.interface.js +0 -73
  322. package/lib/esm/users/user.account.privileges.interface.js +0 -1
  323. package/lib/esm/users/user.export-to-csv.settings.interface.js +0 -1
  324. package/lib/esm/users/user.interface.js +0 -1
  325. package/lib/esm/users/user.js +0 -38
  326. package/lib/esm/users/user.service.meta.interface.js +0 -1
@@ -1,86 +0,0 @@
1
- export class LowPassFilter {
2
- static smooth(values, smoothing = 0.5) {
3
- return new LowPassFilter(smoothing).smoothArray(values);
4
- }
5
- constructor(smoothing) {
6
- this._smoothing = smoothing || 0.5; // must be smaller than 1
7
- this._buffer = []; // FIFO queue
8
- this._bufferMaxSize = 10;
9
- }
10
- /**
11
- * Init buffer with array of values
12
- * @param {number[]} values
13
- * @returns {number[]}
14
- */
15
- init(values) {
16
- for (let i = 0; i < values.length; i++) {
17
- this.__push(values[i]);
18
- }
19
- return this._buffer;
20
- }
21
- /**
22
- * Add new value to buffer (FIFO queue)
23
- * @param {number} value
24
- * @returns {number}
25
- * @private
26
- */
27
- __push(value) {
28
- const removed = this._buffer.length === this._bufferMaxSize ? this._buffer.shift() : 0;
29
- this._buffer.push(value);
30
- return removed;
31
- }
32
- /**
33
- * Smooth value from stream
34
- * @param {number} nextValue
35
- * @returns {number}
36
- */
37
- next(nextValue) {
38
- // push new value to the end, and remove oldest one
39
- const removed = this.__push(nextValue);
40
- // smooth value using all values from buffer
41
- const result = this._buffer.reduce((last, current) => {
42
- return this._smoothing * current + (1 - this._smoothing) * last;
43
- }, removed);
44
- // replace smoothed value
45
- this._buffer[this._buffer.length - 1] = result;
46
- return result;
47
- }
48
- /**
49
- * Smooth array of values
50
- * @param {number[]} values
51
- * @returns {number[]}
52
- */
53
- smoothArray(values) {
54
- let value = values.filter(v => Number.isFinite(v))[0];
55
- if (!value) {
56
- return values;
57
- }
58
- for (let i = 1; i < values.length; i++) {
59
- if (values[i] === null) {
60
- continue;
61
- }
62
- const currentValue = values[i];
63
- value += (currentValue - value) * this._smoothing;
64
- values[i] = Math.round(value * 100) / 100;
65
- }
66
- return values;
67
- }
68
- get bufferMaxSize() {
69
- return this._bufferMaxSize;
70
- }
71
- set bufferMaxSize(value) {
72
- this._bufferMaxSize = value;
73
- }
74
- get buffer() {
75
- return this._buffer;
76
- }
77
- set buffer(value) {
78
- this._buffer = value;
79
- }
80
- get smoothing() {
81
- return this._smoothing;
82
- }
83
- set smoothing(value) {
84
- this._smoothing = value;
85
- }
86
- }
@@ -1,162 +0,0 @@
1
- export function isNumberOrString(property) {
2
- return typeof property === 'number' || typeof property === 'string';
3
- }
4
- export function isNumber(property) {
5
- return typeof property === 'number' && !isNaN(property);
6
- }
7
- /**
8
- * Converts speed from m/s to pace as of seconds per km
9
- * @param {number} number
10
- * @return {number}
11
- */
12
- export function convertSpeedToPace(number) {
13
- return number === 0 ? Infinity : 1000 / number;
14
- }
15
- /**
16
- * Converts m/s to seconds per 100m
17
- * @param number
18
- */
19
- export function convertSpeedToSwimPace(number) {
20
- return number === 0 ? Infinity : 100 / number;
21
- }
22
- export function convertSpeedToSpeedInKilometersPerHour(number) {
23
- return number * 3.6;
24
- }
25
- export function convertSpeedToSpeedInMilesPerHour(number) {
26
- return number * 2.237;
27
- }
28
- export function convertSpeedToSpeedInFeetPerSecond(number) {
29
- return number * 3.28084;
30
- }
31
- export function convertSpeedToSpeedInMetersPerMinute(number) {
32
- return number * 60;
33
- }
34
- export function convertSpeedToSpeedInFeetPerMinute(number) {
35
- return number * 196.85;
36
- }
37
- export function convertSpeedToSpeedInFeetPerHour(number) {
38
- return number * 11811.024;
39
- }
40
- export function convertSpeedToSpeedInMetersPerHour(number) {
41
- return number * 3600;
42
- }
43
- export function convertSpeedToSpeedInKnots(number) {
44
- return number * 1.943844;
45
- }
46
- export function convertPaceToPaceInMinutesPerMile(number) {
47
- return number * 1.60934;
48
- }
49
- export function convertMetersToMiles(number) {
50
- return number === 0 ? 0 : number / 1609;
51
- }
52
- /**
53
- * Converts m/s to seconds per 100m
54
- * @param number
55
- */
56
- export function convertSwimPaceToSwimPacePer100Yard(number) {
57
- return number * 1.93613298;
58
- }
59
- export function getSize(obj) {
60
- return getSizeWithOptionalFormat(obj, false);
61
- }
62
- export function getSizeFormated(obj) {
63
- return getSizeWithOptionalFormat(obj, true);
64
- }
65
- function getSizeWithOptionalFormat(obj, format = true) {
66
- let size;
67
- try {
68
- size = new Blob([obj]).size;
69
- }
70
- catch (e) {
71
- size = Buffer.from(obj).length;
72
- }
73
- function formatByteSize(bytes) {
74
- if (bytes < 1024) {
75
- return bytes + ' bytes';
76
- }
77
- else if (bytes < 1048576) {
78
- return (bytes / 1024).toFixed(4) + ' KiB';
79
- }
80
- else if (bytes < 1073741824) {
81
- return (bytes / 1048576).toFixed(4) + ' MiB';
82
- }
83
- else {
84
- return (bytes / 1073741824).toFixed(4) + ' GiB';
85
- }
86
- }
87
- return format ? formatByteSize(size) : size;
88
- }
89
- /**
90
- * from https://stackoverflow.com/questions/48340403/fill-missing-numeric-values-in-an-array
91
- * Very badly written
92
- * @param array
93
- */
94
- export function fillMissingValuesLinear(array) {
95
- let i = 0, j, delta;
96
- while (i < array.length) {
97
- if (array[i] !== null) {
98
- i++;
99
- continue;
100
- }
101
- j = i;
102
- // eslint-disable-next-line no-empty
103
- while (array[++j] === null) { }
104
- // @ts-ignore
105
- delta = (array[j] - array[i - 1]) / (j - i + 1);
106
- do {
107
- // @ts-ignore
108
- array[i] = delta + array[i - 1];
109
- i++;
110
- } while (i < j);
111
- }
112
- return array;
113
- }
114
- export const mean = (array) => {
115
- return array.reduce((a, b) => a + b, 0) / array.length;
116
- };
117
- export const meanWindowSmoothing = (array, windowSize = 7, roundDecimals = 3) => {
118
- const roundDecimalsFactor = Math.pow(10, roundDecimals);
119
- return array.map((value, index) => {
120
- const window = array.slice(index, index + windowSize); // Get window
121
- return Math.round(mean(window) * roundDecimalsFactor) / roundDecimalsFactor; // Round and return
122
- });
123
- };
124
- const median = (inputArray) => {
125
- const s = inputArray.slice().sort((a, b) => {
126
- return a - b;
127
- });
128
- return s[Math.floor((s.length - 1) / 2)];
129
- };
130
- /**
131
- * Remove spikes into a vector (http://fourier.eng.hmc.edu/e161/lectures/smooth_sharpen/node2.html)
132
- * @param array to be filtered
133
- * @param window Window size (should be odd number)
134
- */
135
- export const medianFilter = (array, window = 11) => {
136
- if (window % 2 === 0) {
137
- throw new Error('Window size should be an odd number');
138
- }
139
- if (array.length < window) {
140
- return array;
141
- }
142
- const f = [];
143
- const w = [];
144
- let i;
145
- w.push(array[0]);
146
- for (i = 0; i < array.length; i++) {
147
- const midWindowIndex = Math.floor(window / 2);
148
- if (array.length - 1 >= i + midWindowIndex) {
149
- w.push(array[i + midWindowIndex]);
150
- }
151
- f.push(median(w));
152
- if (i >= midWindowIndex) {
153
- w.shift();
154
- }
155
- }
156
- return f;
157
- };
158
- export const standardDeviation = (stream) => {
159
- const avg = mean(stream);
160
- const variance = mean(stream.map(value => Math.pow(value, 2))) - Math.pow(avg, 2);
161
- return variance > 0 ? Math.sqrt(variance) : 0;
162
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,28 +0,0 @@
1
- import getPreciseDistance from 'geolib/es/getPreciseDistance';
2
- import getDistance from 'geolib/es/getDistance';
3
- import findNearest from 'geolib/es/findNearest';
4
- export class GeoLibAdapter {
5
- constructor() {
6
- this.findNearest = findNearest;
7
- }
8
- getDistance(positionArray, precise = false, accuracy = 0.1) {
9
- let distance = 0;
10
- const excludeFirstPointsArray = positionArray.slice(1);
11
- let firstPosition = positionArray[0];
12
- for (const nextPosition of excludeFirstPointsArray) {
13
- const firstPositionAsDecimal = {
14
- longitude: firstPosition.longitudeDegrees,
15
- latitude: firstPosition.latitudeDegrees
16
- };
17
- const nextPositionAsDecimal = {
18
- longitude: nextPosition.longitudeDegrees,
19
- latitude: nextPosition.latitudeDegrees
20
- };
21
- distance += precise
22
- ? getPreciseDistance(firstPositionAsDecimal, nextPositionAsDecimal, accuracy)
23
- : getDistance(firstPositionAsDecimal, nextPositionAsDecimal, accuracy);
24
- firstPosition = nextPosition;
25
- }
26
- return distance;
27
- }
28
- }
@@ -1,9 +0,0 @@
1
- export class IDClass {
2
- getID() {
3
- return this.id || null;
4
- }
5
- setID(id) {
6
- this.id = id;
7
- return this;
8
- }
9
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import { IDClass } from './id.abstract.class';
2
- describe('IDClass', () => {
3
- let idClass;
4
- beforeEach(() => {
5
- idClass = new IdClass();
6
- });
7
- it('should correctly set an ID', () => {
8
- idClass.setID('123');
9
- expect(idClass.getID()).toBe('123');
10
- });
11
- });
12
- export class IdClass extends IDClass {
13
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- import { isNumber } from '../events/utilities/helpers';
2
- export class IntensityZones {
3
- constructor(type) {
4
- this.type = type;
5
- }
6
- toJSON() {
7
- const json = {
8
- type: this.type,
9
- zone1Duration: this.zone1Duration,
10
- zone2Duration: this.zone2Duration,
11
- zone3Duration: this.zone3Duration,
12
- zone4Duration: this.zone4Duration,
13
- zone5Duration: this.zone5Duration
14
- };
15
- if (isNumber(this.zone2LowerLimit)) {
16
- json.zone2LowerLimit = this.zone2LowerLimit;
17
- }
18
- if (isNumber(this.zone3LowerLimit)) {
19
- json.zone3LowerLimit = this.zone3LowerLimit;
20
- }
21
- if (isNumber(this.zone4LowerLimit)) {
22
- json.zone4LowerLimit = this.zone4LowerLimit;
23
- }
24
- if (isNumber(this.zone5LowerLimit)) {
25
- json.zone5LowerLimit = this.zone5LowerLimit;
26
- }
27
- return json;
28
- }
29
- }
@@ -1,30 +0,0 @@
1
- import { IntensityZones } from './intensity-zones';
2
- describe('Zone', () => {
3
- let zones;
4
- beforeEach(() => {
5
- zones = new IntensityZones('test');
6
- });
7
- it('should export correctly to JSON', () => {
8
- zones.zone1Duration = 0;
9
- zones.zone2LowerLimit = 1;
10
- zones.zone2Duration = 2;
11
- zones.zone3LowerLimit = 3;
12
- zones.zone3Duration = 4;
13
- zones.zone4LowerLimit = 5;
14
- zones.zone4Duration = 6;
15
- zones.zone5LowerLimit = 7;
16
- zones.zone5Duration = 8;
17
- expect(zones.toJSON()).toEqual({
18
- type: 'test',
19
- zone1Duration: 0,
20
- zone2Duration: 2,
21
- zone2LowerLimit: 1,
22
- zone3Duration: 4,
23
- zone3LowerLimit: 3,
24
- zone4Duration: 6,
25
- zone4LowerLimit: 5,
26
- zone5Duration: 8,
27
- zone5LowerLimit: 7
28
- });
29
- });
30
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- import { DurationClassAbstract } from '../duration/duration.class.abstract';
2
- export class Lap extends DurationClassAbstract {
3
- constructor(startDate, endDate, lapId, type) {
4
- super(startDate, endDate);
5
- this.lapId = lapId;
6
- this.type = type;
7
- }
8
- getStartIndex(activity) {
9
- return activity.getDateIndex(this.startDate);
10
- }
11
- getEndIndex(activity) {
12
- return activity.getDateIndex(this.endDate);
13
- }
14
- toJSON(activity) {
15
- const stats = {};
16
- this.stats.forEach((value, key) => {
17
- Object.assign(stats, value.toJSON());
18
- });
19
- return {
20
- lapId: this.lapId,
21
- startDate: this.startDate.getTime(),
22
- endDate: this.endDate.getTime(),
23
- startIndex: activity ? this.getStartIndex(activity) : null,
24
- endIndex: activity ? this.getEndIndex(activity) : null,
25
- type: this.type,
26
- stats: stats
27
- };
28
- }
29
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,52 +0,0 @@
1
- export class LapTypesHelper {
2
- static getLapTypesAsUniqueArray() {
3
- return Array.from(new Set(Object.keys(LapTypes).reduce((array, key) => {
4
- array.push(LapTypes[key]); // Important get the key via the enum else it will be chaos
5
- return array;
6
- }, [])));
7
- }
8
- }
9
- /**
10
- * This enum works like a all matchers for normalized lap types between different naming across services
11
- */
12
- export var LapTypes;
13
- (function (LapTypes) {
14
- LapTypes["unknown"] = "Unknown";
15
- LapTypes["Unknown"] = "Unknown";
16
- LapTypes["Start"] = "Start";
17
- LapTypes["start"] = "Start";
18
- LapTypes["Stop"] = "Stop";
19
- LapTypes["stop"] = "Stop";
20
- LapTypes["Manual"] = "Manual";
21
- LapTypes["manual"] = "Manual";
22
- LapTypes["Autolap"] = "Autolap";
23
- LapTypes["AutoLap"] = "Autolap";
24
- LapTypes["autolap"] = "Autolap";
25
- LapTypes["Auto lap"] = "Autolap";
26
- LapTypes["Distance"] = "Distance";
27
- LapTypes["distance"] = "Distance";
28
- LapTypes["Location"] = "Location";
29
- LapTypes["location"] = "Location";
30
- LapTypes["interval"] = "Interval";
31
- LapTypes["Interval"] = "Interval";
32
- LapTypes["Low Interval"] = "Low Interval";
33
- LapTypes["High Interval"] = "High Interval";
34
- LapTypes["Time"] = "Time";
35
- LapTypes["time"] = "Time";
36
- LapTypes["HeartRate"] = "Heart Rate";
37
- LapTypes["Heart Rate"] = "Heart Rate";
38
- LapTypes["position_start"] = "Position start";
39
- LapTypes["Position start"] = "Position start";
40
- LapTypes["position_lap"] = "Position lap";
41
- LapTypes["Position lap"] = "Position lap";
42
- LapTypes["position_waypoint"] = "Position waypoint";
43
- LapTypes["Position waypoint"] = "Position waypoint";
44
- LapTypes["position_marked"] = "Position marked";
45
- LapTypes["Position marked"] = "Position marked";
46
- LapTypes["session_end"] = "Session end";
47
- LapTypes["Session end"] = "Session end";
48
- LapTypes["fitness_equipment"] = "Fitness equipment";
49
- LapTypes["fitness equipment"] = "Fitness equipment";
50
- LapTypes["Fitness equipment"] = "Fitness equipment";
51
- LapTypes["FitnessEquipment"] = "Fitness equipment";
52
- })(LapTypes || (LapTypes = {}));
@@ -1,6 +0,0 @@
1
- export var ServiceNames;
2
- (function (ServiceNames) {
3
- ServiceNames["SuuntoApp"] = "Suunto app";
4
- ServiceNames["GarminAPI"] = "Garmin API";
5
- ServiceNames["COROSAPI"] = "COROS API";
6
- })(ServiceNames || (ServiceNames = {}));
@@ -1,57 +0,0 @@
1
- import { ServiceNames } from './event-meta-data.interface';
2
- export class SuuntoAppEventMetaData {
3
- constructor(serviceWorkoutID, serviceUserName, date) {
4
- this.serviceWorkoutID = serviceWorkoutID;
5
- this.serviceUserName = serviceUserName;
6
- this.date = date;
7
- this.serviceName = ServiceNames.SuuntoApp;
8
- }
9
- toJSON() {
10
- return {
11
- serviceWorkoutID: this.serviceWorkoutID,
12
- serviceName: this.serviceName,
13
- serviceUserName: this.serviceUserName,
14
- date: this.date.getTime()
15
- };
16
- }
17
- }
18
- export class COROSAPIEventMetaData {
19
- constructor(serviceWorkoutID, serviceOpenId, serviceFITFileURI, date) {
20
- this.serviceWorkoutID = serviceWorkoutID;
21
- this.serviceOpenId = serviceOpenId;
22
- this.serviceFITFileURI = serviceFITFileURI;
23
- this.date = date;
24
- this.serviceName = ServiceNames.COROSAPI;
25
- }
26
- toJSON() {
27
- return {
28
- serviceWorkoutID: this.serviceWorkoutID,
29
- serviceName: this.serviceName,
30
- serviceOpenId: this.serviceOpenId,
31
- serviceFITFileURI: this.serviceFITFileURI,
32
- date: this.date.getTime()
33
- };
34
- }
35
- }
36
- export class GarminAPIEventMetaData {
37
- constructor(serviceUserID, serviceActivityFileID, serviceActivityFileType, serviceManual, serviceStartTimeInSeconds, date) {
38
- this.serviceUserID = serviceUserID;
39
- this.serviceActivityFileID = serviceActivityFileID;
40
- this.serviceActivityFileType = serviceActivityFileType;
41
- this.serviceManual = serviceManual;
42
- this.serviceStartTimeInSeconds = serviceStartTimeInSeconds;
43
- this.date = date;
44
- this.serviceName = ServiceNames.GarminAPI;
45
- }
46
- toJSON() {
47
- return {
48
- serviceUserID: this.serviceUserID,
49
- serviceName: this.serviceName,
50
- serviceActivityFileID: this.serviceActivityFileID,
51
- serviceActivityFileType: this.serviceActivityFileType,
52
- serviceManual: this.serviceManual,
53
- serviceStartTimeInSeconds: this.serviceStartTimeInSeconds,
54
- date: this.date.getTime()
55
- };
56
- }
57
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- export var Privacy;
2
- (function (Privacy) {
3
- Privacy["Public"] = "public";
4
- Privacy["Private"] = "private";
5
- })(Privacy || (Privacy = {}));
@@ -1 +0,0 @@
1
- export {};