@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.
Files changed (336) hide show
  1. package/.editorconfig +14 -0
  2. package/.eslintignore +4 -0
  3. package/.eslintrc.js +9 -0
  4. package/.prettierignore +25 -0
  5. package/.prettierrc.json +12 -0
  6. package/CODE_OF_CONDUCT.md +76 -0
  7. package/jest.config.js +23 -0
  8. package/lib/esm/index.js +12034 -152
  9. package/package.json +3 -2
  10. package/tsconfig.cjs.json +7 -0
  11. package/tsconfig.esm.json +8 -0
  12. package/tsconfig.lib.json +8 -0
  13. package/lib/esm/activities/activity-parsing-options.js +0 -19
  14. package/lib/esm/activities/activity.interface.js +0 -1
  15. package/lib/esm/activities/activity.js +0 -281
  16. package/lib/esm/activities/activity.json.interface.js +0 -1
  17. package/lib/esm/activities/activity.spec.js +0 -348
  18. package/lib/esm/activities/activity.types.js +0 -1046
  19. package/lib/esm/activities/activityt-types.spec.js +0 -16
  20. package/lib/esm/activities/devices/device.interface.js +0 -1
  21. package/lib/esm/activities/devices/device.js +0 -26
  22. package/lib/esm/activities/devices/device.json.interface.js +0 -1
  23. package/lib/esm/constants/constants.js +0 -8
  24. package/lib/esm/creators/creator.interface.js +0 -1
  25. package/lib/esm/creators/creator.js +0 -37
  26. package/lib/esm/creators/creator.json.interface.js +0 -1
  27. package/lib/esm/creators/creator.spec.js +0 -25
  28. package/lib/esm/data/data-active-lap.js +0 -4
  29. package/lib/esm/data/data-active-lengths.js +0 -4
  30. package/lib/esm/data/data-aerobic-training-effect.js +0 -8
  31. package/lib/esm/data/data-anaerobic-training-effect.js +0 -8
  32. package/lib/esm/data/data-stance-time-balance-left.js +0 -4
  33. package/lib/esm/data/data-stance-time-balance-right.js +0 -4
  34. package/lib/esm/data/data-stance-time-balance.js +0 -3
  35. package/lib/esm/data/data-store.spec.js +0 -78
  36. package/lib/esm/data/data-total-cycles.js +0 -4
  37. package/lib/esm/data/data.absolute-pressure.js +0 -5
  38. package/lib/esm/data/data.accumulated-power.js +0 -8
  39. package/lib/esm/data/data.activity-types.js +0 -7
  40. package/lib/esm/data/data.air-power-avg.js +0 -4
  41. package/lib/esm/data/data.air-power-max.js +0 -4
  42. package/lib/esm/data/data.air-power-min.js +0 -4
  43. package/lib/esm/data/data.air-power.js +0 -8
  44. package/lib/esm/data/data.alti-baro-profile.js +0 -4
  45. package/lib/esm/data/data.altitude-avg.js +0 -4
  46. package/lib/esm/data/data.altitude-gps.js +0 -5
  47. package/lib/esm/data/data.altitude-max.js +0 -4
  48. package/lib/esm/data/data.altitude-min.js +0 -4
  49. package/lib/esm/data/data.altitude-smooth.js +0 -4
  50. package/lib/esm/data/data.altitude.js +0 -8
  51. package/lib/esm/data/data.array.js +0 -13
  52. package/lib/esm/data/data.ascent-time.js +0 -4
  53. package/lib/esm/data/data.ascent.js +0 -4
  54. package/lib/esm/data/data.auto-lap-distance.js +0 -5
  55. package/lib/esm/data/data.auto-lap-duration.js +0 -4
  56. package/lib/esm/data/data.auto-lap-used.js +0 -7
  57. package/lib/esm/data/data.auto-pause-used.js +0 -7
  58. package/lib/esm/data/data.avg-stride-length.js +0 -4
  59. package/lib/esm/data/data.balance.js +0 -6
  60. package/lib/esm/data/data.bare.js +0 -4
  61. package/lib/esm/data/data.battery-charge.js +0 -8
  62. package/lib/esm/data/data.battery-consumption.js +0 -8
  63. package/lib/esm/data/data.battery-current.js +0 -8
  64. package/lib/esm/data/data.battery-life-estimation.js +0 -4
  65. package/lib/esm/data/data.battery-voltage.js +0 -8
  66. package/lib/esm/data/data.bike-pod-used.js +0 -7
  67. package/lib/esm/data/data.boolean.js +0 -9
  68. package/lib/esm/data/data.cadence-avg.js +0 -4
  69. package/lib/esm/data/data.cadence-max.js +0 -4
  70. package/lib/esm/data/data.cadence-min.js +0 -4
  71. package/lib/esm/data/data.cadence.js +0 -8
  72. package/lib/esm/data/data.cycling-dynamics.js +0 -3
  73. package/lib/esm/data/data.cycling-position.js +0 -37
  74. package/lib/esm/data/data.cycling-seated-time.js +0 -5
  75. package/lib/esm/data/data.cycling-standing-time.js +0 -5
  76. package/lib/esm/data/data.descent-time.js +0 -4
  77. package/lib/esm/data/data.descent.js +0 -4
  78. package/lib/esm/data/data.description.js +0 -4
  79. package/lib/esm/data/data.device-location.js +0 -4
  80. package/lib/esm/data/data.device-names.js +0 -7
  81. package/lib/esm/data/data.distance.js +0 -15
  82. package/lib/esm/data/data.duration.js +0 -56
  83. package/lib/esm/data/data.ehpe.js +0 -5
  84. package/lib/esm/data/data.enabled-navigation-systems.js +0 -4
  85. package/lib/esm/data/data.end-altitude.js +0 -4
  86. package/lib/esm/data/data.end-position.js +0 -4
  87. package/lib/esm/data/data.energy.js +0 -8
  88. package/lib/esm/data/data.epoc.js +0 -5
  89. package/lib/esm/data/data.event.js +0 -3
  90. package/lib/esm/data/data.evpe.js +0 -4
  91. package/lib/esm/data/data.feeling.js +0 -15
  92. package/lib/esm/data/data.foot-pod-used.js +0 -7
  93. package/lib/esm/data/data.form-power.js +0 -4
  94. package/lib/esm/data/data.fused-altitude.js +0 -7
  95. package/lib/esm/data/data.fused-location.js +0 -7
  96. package/lib/esm/data/data.gnss-distance.js +0 -4
  97. package/lib/esm/data/data.grade-adjusted-pace-avg.js +0 -15
  98. package/lib/esm/data/data.grade-adjusted-pace-max.js +0 -15
  99. package/lib/esm/data/data.grade-adjusted-pace-min.js +0 -15
  100. package/lib/esm/data/data.grade-adjusted-pace.js +0 -25
  101. package/lib/esm/data/data.grade-adjusted-speed-avg.js +0 -46
  102. package/lib/esm/data/data.grade-adjusted-speed-max.js +0 -46
  103. package/lib/esm/data/data.grade-adjusted-speed-min.js +0 -46
  104. package/lib/esm/data/data.grade-adjusted-speed.js +0 -78
  105. package/lib/esm/data/data.grade-smooth.js +0 -7
  106. package/lib/esm/data/data.grade.js +0 -7
  107. package/lib/esm/data/data.ground-time.js +0 -8
  108. package/lib/esm/data/data.heart-rate-avg.js +0 -4
  109. package/lib/esm/data/data.heart-rate-max.js +0 -4
  110. package/lib/esm/data/data.heart-rate-min.js +0 -4
  111. package/lib/esm/data/data.heart-rate-used.js +0 -7
  112. package/lib/esm/data/data.heart-rate-zone-five-duration.js +0 -4
  113. package/lib/esm/data/data.heart-rate-zone-four-duration.js +0 -4
  114. package/lib/esm/data/data.heart-rate-zone-one-duration.js +0 -4
  115. package/lib/esm/data/data.heart-rate-zone-three-duration.js +0 -4
  116. package/lib/esm/data/data.heart-rate-zone-two-duration.js +0 -4
  117. package/lib/esm/data/data.heart-rate.js +0 -8
  118. package/lib/esm/data/data.ibi.js +0 -8
  119. package/lib/esm/data/data.interface.js +0 -5
  120. package/lib/esm/data/data.js +0 -62
  121. package/lib/esm/data/data.json.interface.js +0 -1
  122. package/lib/esm/data/data.latitude-degrees.js +0 -5
  123. package/lib/esm/data/data.left-balance.js +0 -4
  124. package/lib/esm/data/data.leg-stiffness.js +0 -16
  125. package/lib/esm/data/data.longitude-degrees.js +0 -5
  126. package/lib/esm/data/data.moving-time.js +0 -4
  127. package/lib/esm/data/data.number-of-satellites.js +0 -7
  128. package/lib/esm/data/data.number-of.samples.js +0 -4
  129. package/lib/esm/data/data.number.js +0 -13
  130. package/lib/esm/data/data.pace-avg.js +0 -8
  131. package/lib/esm/data/data.pace-max.js +0 -8
  132. package/lib/esm/data/data.pace-min.js +0 -8
  133. package/lib/esm/data/data.pace.js +0 -46
  134. package/lib/esm/data/data.pause.js +0 -4
  135. package/lib/esm/data/data.peak-epoc.js +0 -7
  136. package/lib/esm/data/data.peak-training-effect.js +0 -4
  137. package/lib/esm/data/data.percent.js +0 -4
  138. package/lib/esm/data/data.pool-length.js +0 -5
  139. package/lib/esm/data/data.position.interface.js +0 -1
  140. package/lib/esm/data/data.position.js +0 -18
  141. package/lib/esm/data/data.power-avg.js +0 -4
  142. package/lib/esm/data/data.power-down.js +0 -4
  143. package/lib/esm/data/data.power-intensity-factor.js +0 -5
  144. package/lib/esm/data/data.power-left.js +0 -4
  145. package/lib/esm/data/data.power-max.js +0 -4
  146. package/lib/esm/data/data.power-min.js +0 -4
  147. package/lib/esm/data/data.power-normalized.js +0 -4
  148. package/lib/esm/data/data.power-pedal-smoothness-left.js +0 -4
  149. package/lib/esm/data/data.power-pedal-smoothness-right.js +0 -4
  150. package/lib/esm/data/data.power-pod-used.js +0 -7
  151. package/lib/esm/data/data.power-right.js +0 -4
  152. package/lib/esm/data/data.power-torque-effectiveness-left.js +0 -4
  153. package/lib/esm/data/data.power-torque-effectiveness-right.js +0 -4
  154. package/lib/esm/data/data.power-training-stress-score.js +0 -5
  155. package/lib/esm/data/data.power-up.js +0 -4
  156. package/lib/esm/data/data.power-work.js +0 -5
  157. package/lib/esm/data/data.power-zone-five-duration.js +0 -4
  158. package/lib/esm/data/data.power-zone-four-duration.js +0 -4
  159. package/lib/esm/data/data.power-zone-one-duration.js +0 -4
  160. package/lib/esm/data/data.power-zone-three-duration.js +0 -4
  161. package/lib/esm/data/data.power-zone-two-duration.js +0 -4
  162. package/lib/esm/data/data.power.js +0 -8
  163. package/lib/esm/data/data.recovery-time.js +0 -7
  164. package/lib/esm/data/data.rider-position-change-event.js +0 -8
  165. package/lib/esm/data/data.right-balance.js +0 -4
  166. package/lib/esm/data/data.rpe.js +0 -23
  167. package/lib/esm/data/data.satellite-5-best-snr.js +0 -4
  168. package/lib/esm/data/data.sea-level-pressure.js +0 -5
  169. package/lib/esm/data/data.spec.js +0 -25
  170. package/lib/esm/data/data.speed-avg.js +0 -46
  171. package/lib/esm/data/data.speed-max.js +0 -46
  172. package/lib/esm/data/data.speed-min.js +0 -46
  173. package/lib/esm/data/data.speed-zone-five-duration.js +0 -4
  174. package/lib/esm/data/data.speed-zone-four-duration.js +0 -4
  175. package/lib/esm/data/data.speed-zone-one-duration.js +0 -4
  176. package/lib/esm/data/data.speed-zone-three-duration.js +0 -4
  177. package/lib/esm/data/data.speed-zone-two-duration.js +0 -4
  178. package/lib/esm/data/data.speed.js +0 -88
  179. package/lib/esm/data/data.sport-profile-name.js +0 -4
  180. package/lib/esm/data/data.stance-time.js +0 -5
  181. package/lib/esm/data/data.start-altitude.js +0 -4
  182. package/lib/esm/data/data.start-event.js +0 -4
  183. package/lib/esm/data/data.start-position.js +0 -4
  184. package/lib/esm/data/data.step-length.js +0 -4
  185. package/lib/esm/data/data.steps-old.js +0 -4
  186. package/lib/esm/data/data.steps.js +0 -4
  187. package/lib/esm/data/data.stop-all-event.js +0 -4
  188. package/lib/esm/data/data.stop-event.js +0 -4
  189. package/lib/esm/data/data.store.export.spec.js +0 -66
  190. package/lib/esm/data/data.store.js +0 -1213
  191. package/lib/esm/data/data.string.js +0 -13
  192. package/lib/esm/data/data.stryd-altitude.js +0 -4
  193. package/lib/esm/data/data.stryd-distance.js +0 -4
  194. package/lib/esm/data/data.stryd-speed.js +0 -4
  195. package/lib/esm/data/data.swim-pace-avg.js +0 -8
  196. package/lib/esm/data/data.swim-pace-max.js +0 -8
  197. package/lib/esm/data/data.swim-pace-min.js +0 -8
  198. package/lib/esm/data/data.swim-pace.js +0 -19
  199. package/lib/esm/data/data.swolf-25m.js +0 -4
  200. package/lib/esm/data/data.swolf-50m.js +0 -4
  201. package/lib/esm/data/data.target-distance.js +0 -4
  202. package/lib/esm/data/data.target-heart-rate-zone.js +0 -4
  203. package/lib/esm/data/data.target-power-zone.js +0 -4
  204. package/lib/esm/data/data.target-speed-zone.js +0 -4
  205. package/lib/esm/data/data.target-time.js +0 -4
  206. package/lib/esm/data/data.temperature-avg.js +0 -4
  207. package/lib/esm/data/data.temperature-max.js +0 -4
  208. package/lib/esm/data/data.temperature-min.js +0 -4
  209. package/lib/esm/data/data.temperature.js +0 -8
  210. package/lib/esm/data/data.time.js +0 -6
  211. package/lib/esm/data/data.timer-time.js +0 -4
  212. package/lib/esm/data/data.vertical-oscillation.js +0 -5
  213. package/lib/esm/data/data.vertical-ratio.js +0 -5
  214. package/lib/esm/data/data.vertical-speed-avg.js +0 -53
  215. package/lib/esm/data/data.vertical-speed-max.js +0 -53
  216. package/lib/esm/data/data.vertical-speed-min.js +0 -53
  217. package/lib/esm/data/data.vertical-speed.js +0 -103
  218. package/lib/esm/data/data.vo2-max.js +0 -7
  219. package/lib/esm/data/ibi/data.ibi.filters.js +0 -52
  220. package/lib/esm/data/ibi/data.ibi.js +0 -98
  221. package/lib/esm/data/ibi/data.ibi.spec.js +0 -66
  222. package/lib/esm/duration/duration.class.abstract.js +0 -36
  223. package/lib/esm/duration/duration.class.interface.js +0 -1
  224. package/lib/esm/errors/duration-exceeded-event-lib.error.js +0 -9
  225. package/lib/esm/errors/empty-event-sports-libs.error.js +0 -9
  226. package/lib/esm/errors/event-lib.error.js +0 -8
  227. package/lib/esm/errors/lib.error.js +0 -6
  228. package/lib/esm/errors/parsing-event-lib.error.js +0 -9
  229. package/lib/esm/events/adapters/exporters/exporter.gpx.js +0 -75
  230. package/lib/esm/events/adapters/exporters/exporter.interface.js +0 -1
  231. package/lib/esm/events/adapters/exporters/exporter.json.js +0 -20
  232. package/lib/esm/events/adapters/file-type.enum.js +0 -7
  233. package/lib/esm/events/adapters/importers/fit/importer.fit.ant-plus.device.names.js +0 -25
  234. package/lib/esm/events/adapters/importers/fit/importer.fit.coros.device.names.js +0 -5
  235. package/lib/esm/events/adapters/importers/fit/importer.fit.development.device.names.js +0 -4
  236. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.device.names.js +0 -462
  237. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.data.js +0 -877
  238. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.js +0 -106
  239. package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.spec.js +0 -32
  240. package/lib/esm/events/adapters/importers/fit/importer.fit.hammerhead.device.names.js +0 -4
  241. package/lib/esm/events/adapters/importers/fit/importer.fit.integration.spec.js +0 -44
  242. package/lib/esm/events/adapters/importers/fit/importer.fit.js +0 -978
  243. package/lib/esm/events/adapters/importers/fit/importer.fit.lezyne.device.names.js +0 -3
  244. package/lib/esm/events/adapters/importers/fit/importer.fit.magellan.device.names.js +0 -5
  245. package/lib/esm/events/adapters/importers/fit/importer.fit.mapper.js +0 -231
  246. package/lib/esm/events/adapters/importers/fit/importer.fit.saris.device.names.js +0 -3
  247. package/lib/esm/events/adapters/importers/fit/importer.fit.spec.js +0 -326
  248. package/lib/esm/events/adapters/importers/fit/importer.fit.srm.device.names.js +0 -7
  249. package/lib/esm/events/adapters/importers/fit/importer.fit.suunto.device.names.js +0 -16
  250. package/lib/esm/events/adapters/importers/fit/importer.fit.wahoo.device.names.js +0 -10
  251. package/lib/esm/events/adapters/importers/gpx/gx-parser.js +0 -36
  252. package/lib/esm/events/adapters/importers/gpx/importer.gpx.integration.spec.js +0 -44
  253. package/lib/esm/events/adapters/importers/gpx/importer.gpx.js +0 -102
  254. package/lib/esm/events/adapters/importers/gpx/importer.gpx.mapper.js +0 -142
  255. package/lib/esm/events/adapters/importers/gpx/importer.gpx.spec.js +0 -71
  256. package/lib/esm/events/adapters/importers/json/importer.json.js +0 -160
  257. package/lib/esm/events/adapters/importers/sample-info.interface.js +0 -1
  258. package/lib/esm/events/adapters/importers/suunto/importer.suunto.activity.ids.js +0 -85
  259. package/lib/esm/events/adapters/importers/suunto/importer.suunto.device.names.js +0 -26
  260. package/lib/esm/events/adapters/importers/suunto/importer.suunto.integration.spec.js +0 -44
  261. package/lib/esm/events/adapters/importers/suunto/importer.suunto.json.js +0 -717
  262. package/lib/esm/events/adapters/importers/suunto/importer.suunto.sml.js +0 -125
  263. package/lib/esm/events/adapters/importers/tcx/importer.tcx.integration.spec.js +0 -46
  264. package/lib/esm/events/adapters/importers/tcx/importer.tcx.js +0 -442
  265. package/lib/esm/events/adapters/importers/tcx/importer.tcx.mapper.js +0 -91
  266. package/lib/esm/events/adapters/importers/tcx/utils.tcx.js +0 -36
  267. package/lib/esm/events/event.interface.js +0 -1
  268. package/lib/esm/events/event.js +0 -123
  269. package/lib/esm/events/event.json.interface.js +0 -1
  270. package/lib/esm/events/event.spec.js +0 -51
  271. package/lib/esm/events/utilities/activity.utilities.js +0 -1841
  272. package/lib/esm/events/utilities/activity.utilities.spec.js +0 -373
  273. package/lib/esm/events/utilities/event.utilities.js +0 -57
  274. package/lib/esm/events/utilities/grade-calculator/grade-calculator.js +0 -121
  275. package/lib/esm/events/utilities/grade-calculator/grade-calculator.spec.js +0 -93
  276. package/lib/esm/events/utilities/grade-calculator/low-pass-filter.js +0 -86
  277. package/lib/esm/events/utilities/helpers.js +0 -162
  278. package/lib/esm/geodesy/adapters/adapter.interface.js +0 -1
  279. package/lib/esm/geodesy/adapters/geolib.adapter.js +0 -28
  280. package/lib/esm/id/id.abstract.class.js +0 -9
  281. package/lib/esm/id/id.class.interface.js +0 -1
  282. package/lib/esm/id/id.class.spec.js +0 -13
  283. package/lib/esm/intensity-zones/intensity-zones.interface.js +0 -1
  284. package/lib/esm/intensity-zones/intensity-zones.js +0 -29
  285. package/lib/esm/intensity-zones/intensity-zones.json.interface.js +0 -1
  286. package/lib/esm/intensity-zones/intensity-zones.spec.js +0 -30
  287. package/lib/esm/laps/lap.interface.js +0 -1
  288. package/lib/esm/laps/lap.js +0 -29
  289. package/lib/esm/laps/lap.json.interface.js +0 -1
  290. package/lib/esm/laps/lap.types.js +0 -52
  291. package/lib/esm/meta-data/event-meta-data.interface.js +0 -6
  292. package/lib/esm/meta-data/meta-data.js +0 -57
  293. package/lib/esm/meta-data/meta-data.json.interface.js +0 -1
  294. package/lib/esm/privacy/privacy.class.interface.js +0 -5
  295. package/lib/esm/serializable/serializable.class.interface.js +0 -1
  296. package/lib/esm/service-tokens/oauth1-service-token.interface.js +0 -1
  297. package/lib/esm/service-tokens/oauth2-service-token.interface.js +0 -1
  298. package/lib/esm/specs/activities-parsing.integration.spec.js +0 -1847
  299. package/lib/esm/specs/activity-duration-stream.integration.spec.js +0 -57
  300. package/lib/esm/specs/fixtures/streams/strava/rides/3171472783.json +0 -52534
  301. package/lib/esm/specs/fixtures/streams/strava/rides/3171487458.json +0 -78818
  302. package/lib/esm/specs/fixtures/streams/strava/rides/343080886.json +0 -105090
  303. package/lib/esm/specs/fixtures/streams/strava/rides/5910143591.json +0 -110711
  304. package/lib/esm/specs/fixtures/streams/strava/runs/2451375851.json +0 -74846
  305. package/lib/esm/specs/fixtures/streams/strava/runs/2709634581.json +0 -66817
  306. package/lib/esm/specs/fixtures/streams/strava/runs/3156040843.json +0 -17594
  307. package/lib/esm/specs/fixtures/streams/strava/runs/3182900697.json +0 -17322
  308. package/lib/esm/specs/fixtures/streams/strava/runs/3183465494.json +0 -20463
  309. package/lib/esm/specs/fixtures/streams/strava/runs/3183490558.json +0 -58202
  310. package/lib/esm/specs/spec-utils.js +0 -159
  311. package/lib/esm/specs/strava-streams-compliance.spec.js +0 -951
  312. package/lib/esm/stats/stats.class.abstract.js +0 -32
  313. package/lib/esm/stats/stats.class.interface.js +0 -1
  314. package/lib/esm/stats/stats.json.interface.js +0 -1
  315. package/lib/esm/streams/compressed.stream.interface.js +0 -12
  316. package/lib/esm/streams/ibi-stream.js +0 -43
  317. package/lib/esm/streams/low-pass.stream.filter.js +0 -9
  318. package/lib/esm/streams/stream.filter.interface.js +0 -1
  319. package/lib/esm/streams/stream.interface.js +0 -1
  320. package/lib/esm/streams/stream.js +0 -72
  321. package/lib/esm/streams/stream.spec.js +0 -168
  322. package/lib/esm/tiles/tile.settings.interface.js +0 -41
  323. package/lib/esm/users/settings/dashboard/user.dashboard.settings.interface.js +0 -13
  324. package/lib/esm/users/settings/user.app.settings.interface.js +0 -5
  325. package/lib/esm/users/settings/user.chart.settings.interface.js +0 -23
  326. package/lib/esm/users/settings/user.map.settings.interface.js +0 -22
  327. package/lib/esm/users/settings/user.my-tracks.settings.interface.js +0 -1
  328. package/lib/esm/users/settings/user.settings.interface.js +0 -1
  329. package/lib/esm/users/settings/user.stats-settings.interface.js +0 -1
  330. package/lib/esm/users/settings/user.summaries.settings.interface.js +0 -1
  331. package/lib/esm/users/settings/user.unit.settings.interface.js +0 -73
  332. package/lib/esm/users/user.account.privileges.interface.js +0 -1
  333. package/lib/esm/users/user.export-to-csv.settings.interface.js +0 -1
  334. package/lib/esm/users/user.interface.js +0 -1
  335. package/lib/esm/users/user.js +0 -38
  336. 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 {};