incyclist-services 1.7.43 → 1.7.45

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 (695) hide show
  1. package/lib/cjs/activities/ride/service.js +1 -1
  2. package/lib/cjs/routes/download/service.js +205 -148
  3. package/lib/cjs/routes/page/service.js +73 -2
  4. package/lib/esm/activities/ride/service.js +1 -1
  5. package/lib/esm/routes/download/service.js +204 -147
  6. package/lib/esm/routes/page/service.js +73 -2
  7. package/lib/esm/src/activities/active-rides/index.js +2 -0
  8. package/lib/esm/src/activities/active-rides/mq.js +187 -0
  9. package/lib/esm/src/activities/active-rides/service.js +870 -0
  10. package/lib/esm/src/activities/active-rides/sessions.js +1 -0
  11. package/lib/esm/src/activities/active-rides/types.js +1 -0
  12. package/lib/esm/src/activities/base/api/active-rides/api.js +118 -0
  13. package/lib/esm/src/activities/base/api/active-rides/index.js +2 -0
  14. package/lib/esm/src/activities/base/api/active-rides/types.js +1 -0
  15. package/lib/esm/src/activities/base/api/fitconvert/consts.js +2 -0
  16. package/lib/esm/src/activities/base/api/fitconvert/fitconvert.js +94 -0
  17. package/lib/esm/src/activities/base/api/fitconvert/index.js +1 -0
  18. package/lib/esm/src/activities/base/api/index.js +1 -0
  19. package/lib/esm/src/activities/base/convert/converter.js +17 -0
  20. package/lib/esm/src/activities/base/convert/factory.js +72 -0
  21. package/lib/esm/src/activities/base/convert/fit/index.js +1 -0
  22. package/lib/esm/src/activities/base/convert/fit/remote-fit.js +51 -0
  23. package/lib/esm/src/activities/base/convert/index.js +4 -0
  24. package/lib/esm/src/activities/base/convert/tcx/index.js +1 -0
  25. package/lib/esm/src/activities/base/convert/tcx/tcx.js +197 -0
  26. package/lib/esm/src/activities/base/convert/tcx/types.js +1 -0
  27. package/lib/esm/src/activities/base/convert/types.js +5 -0
  28. package/lib/esm/src/activities/base/index.js +5 -0
  29. package/lib/esm/src/activities/base/model/index.js +1 -0
  30. package/lib/esm/src/activities/base/repo/db.js +518 -0
  31. package/lib/esm/src/activities/base/repo/index.js +2 -0
  32. package/lib/esm/src/activities/base/repo/migration/factory.js +21 -0
  33. package/lib/esm/src/activities/base/repo/migration/types.js +13 -0
  34. package/lib/esm/src/activities/base/repo/migration/v0.js +14 -0
  35. package/lib/esm/src/activities/base/repo/migration/v1.js +15 -0
  36. package/lib/esm/src/activities/base/repo/migration/v2.js +7 -0
  37. package/lib/esm/src/activities/base/repo/migration/v3.js +23 -0
  38. package/lib/esm/src/activities/base/repo/types.js +1 -0
  39. package/lib/esm/src/activities/base/utils/activity.js +324 -0
  40. package/lib/esm/src/activities/base/utils/helpers.js +46 -0
  41. package/lib/esm/src/activities/base/utils/index.js +2 -0
  42. package/lib/esm/src/activities/index.js +6 -0
  43. package/lib/esm/src/activities/list/index.js +2 -0
  44. package/lib/esm/src/activities/list/service.js +458 -0
  45. package/lib/esm/src/activities/list/types.js +1 -0
  46. package/lib/esm/src/activities/list/utils.js +81 -0
  47. package/lib/esm/src/activities/page/index.js +1 -0
  48. package/lib/esm/src/activities/page/service.js +173 -0
  49. package/lib/esm/src/activities/page/types.js +1 -0
  50. package/lib/esm/src/activities/ride/duration.js +136 -0
  51. package/lib/esm/src/activities/ride/index.js +1 -0
  52. package/lib/esm/src/activities/ride/service.js +1284 -0
  53. package/lib/esm/src/activities/ride/stats.js +189 -0
  54. package/lib/esm/src/activities/ride/types.js +1 -0
  55. package/lib/esm/src/activities/types.js +2 -0
  56. package/lib/esm/src/activities/upload/factory.js +90 -0
  57. package/lib/esm/src/activities/upload/index.js +5 -0
  58. package/lib/esm/src/activities/upload/intervals.js +141 -0
  59. package/lib/esm/src/activities/upload/strava.js +151 -0
  60. package/lib/esm/src/activities/upload/types.js +1 -0
  61. package/lib/esm/src/activities/upload/velohero.js +133 -0
  62. package/lib/esm/src/api/appInfo/index.js +1 -0
  63. package/lib/esm/src/api/bindings/index.js +74 -0
  64. package/lib/esm/src/api/bindings/types.js +1 -0
  65. package/lib/esm/src/api/crypto/types.js +1 -0
  66. package/lib/esm/src/api/download/index.js +1 -0
  67. package/lib/esm/src/api/form/types.js +1 -0
  68. package/lib/esm/src/api/fs/index.js +1 -0
  69. package/lib/esm/src/api/index.js +4 -0
  70. package/lib/esm/src/api/logging/types.js +1 -0
  71. package/lib/esm/src/api/mq/index.js +1 -0
  72. package/lib/esm/src/api/path/index.js +18 -0
  73. package/lib/esm/src/api/repository/index.js +3 -0
  74. package/lib/esm/src/api/repository/json/index.js +90 -0
  75. package/lib/esm/src/api/repository/types.js +1 -0
  76. package/lib/esm/src/api/rest/RestApiClient.js +12 -0
  77. package/lib/esm/src/api/rest/api.js +64 -0
  78. package/lib/esm/src/api/rest/incyclist.js +32 -0
  79. package/lib/esm/src/api/rest/index.js +3 -0
  80. package/lib/esm/src/api/rest/types.js +1 -0
  81. package/lib/esm/src/api/secret/index.js +1 -0
  82. package/lib/esm/src/api/serial/types.js +1 -0
  83. package/lib/esm/src/api/types.js +1 -0
  84. package/lib/esm/src/api/ui/index.js +1 -0
  85. package/lib/esm/src/api/video/index.js +1 -0
  86. package/lib/esm/src/apps/base/api/base.js +58 -0
  87. package/lib/esm/src/apps/base/api/index.js +4 -0
  88. package/lib/esm/src/apps/base/api/intervals/api.js +127 -0
  89. package/lib/esm/src/apps/base/api/intervals/index.js +2 -0
  90. package/lib/esm/src/apps/base/api/intervals/types.js +11 -0
  91. package/lib/esm/src/apps/base/api/komoot/api.js +137 -0
  92. package/lib/esm/src/apps/base/api/komoot/index.js +2 -0
  93. package/lib/esm/src/apps/base/api/komoot/types.js +1 -0
  94. package/lib/esm/src/apps/base/api/strava/api.js +217 -0
  95. package/lib/esm/src/apps/base/api/strava/index.js +2 -0
  96. package/lib/esm/src/apps/base/api/strava/types.js +7 -0
  97. package/lib/esm/src/apps/base/api/velohero/api.js +80 -0
  98. package/lib/esm/src/apps/base/api/velohero/index.js +2 -0
  99. package/lib/esm/src/apps/base/api/velohero/types.js +1 -0
  100. package/lib/esm/src/apps/base/app/index.js +104 -0
  101. package/lib/esm/src/apps/base/index.js +3 -0
  102. package/lib/esm/src/apps/base/types.js +1 -0
  103. package/lib/esm/src/apps/googleMaps/index.js +1 -0
  104. package/lib/esm/src/apps/googleMaps/service.js +121 -0
  105. package/lib/esm/src/apps/index.js +5 -0
  106. package/lib/esm/src/apps/intervals/IntervalsAppConnection.js +183 -0
  107. package/lib/esm/src/apps/intervals/index.js +1 -0
  108. package/lib/esm/src/apps/intervals/types.js +1 -0
  109. package/lib/esm/src/apps/komoot/KomootAppConnection.js +245 -0
  110. package/lib/esm/src/apps/komoot/index.js +2 -0
  111. package/lib/esm/src/apps/komoot/types.js +1 -0
  112. package/lib/esm/src/apps/service.js +188 -0
  113. package/lib/esm/src/apps/strava/StravaAppConnection.js +190 -0
  114. package/lib/esm/src/apps/strava/index.js +2 -0
  115. package/lib/esm/src/apps/strava/types.js +1 -0
  116. package/lib/esm/src/apps/types.js +1 -0
  117. package/lib/esm/src/apps/velohero/VeloHeroAppConnection.js +229 -0
  118. package/lib/esm/src/apps/velohero/index.js +2 -0
  119. package/lib/esm/src/apps/velohero/types.js +1 -0
  120. package/lib/esm/src/appstate/index.js +2 -0
  121. package/lib/esm/src/appstate/service.js +106 -0
  122. package/lib/esm/src/appstate/types.js +1 -0
  123. package/lib/esm/src/autoupdate/api.js +176 -0
  124. package/lib/esm/src/autoupdate/autoupdate.js +21 -0
  125. package/lib/esm/src/autoupdate/index.js +2 -0
  126. package/lib/esm/src/avatars/index.js +2 -0
  127. package/lib/esm/src/avatars/service.js +134 -0
  128. package/lib/esm/src/avatars/types.js +1 -0
  129. package/lib/esm/src/base/cardlist/index.js +39 -0
  130. package/lib/esm/src/base/cardlist/types.js +1 -0
  131. package/lib/esm/src/base/decorators/Injection.js +23 -0
  132. package/lib/esm/src/base/decorators/index.js +2 -0
  133. package/lib/esm/src/base/pages/index.js +1 -0
  134. package/lib/esm/src/base/pages/service.js +124 -0
  135. package/lib/esm/src/base/pages/types.js +1 -0
  136. package/lib/esm/src/base/service.js +32 -0
  137. package/lib/esm/src/base/typedefs.js +1 -0
  138. package/lib/esm/src/base/types/index.js +3 -0
  139. package/lib/esm/src/base/types/lists.js +18 -0
  140. package/lib/esm/src/base/types/observer.js +75 -0
  141. package/lib/esm/src/base/types/singleton.js +20 -0
  142. package/lib/esm/src/coaches/coach.js +161 -0
  143. package/lib/esm/src/coaches/index.js +3 -0
  144. package/lib/esm/src/coaches/service.js +294 -0
  145. package/lib/esm/src/coaches/types.js +1 -0
  146. package/lib/esm/src/devices/access/index.js +2 -0
  147. package/lib/esm/src/devices/access/model.js +1 -0
  148. package/lib/esm/src/devices/access/service.js +512 -0
  149. package/lib/esm/src/devices/configuration/index.js +2 -0
  150. package/lib/esm/src/devices/configuration/model/app/index.js +1 -0
  151. package/lib/esm/src/devices/configuration/model/index.js +3 -0
  152. package/lib/esm/src/devices/configuration/model/repository/index.js +1 -0
  153. package/lib/esm/src/devices/configuration/model/repository/legacy.js +1 -0
  154. package/lib/esm/src/devices/configuration/model/service/index.js +1 -0
  155. package/lib/esm/src/devices/configuration/service.js +993 -0
  156. package/lib/esm/src/devices/configuration/types.js +1 -0
  157. package/lib/esm/src/devices/index.js +5 -0
  158. package/lib/esm/src/devices/page/index.js +1 -0
  159. package/lib/esm/src/devices/page/logobserver.js +15 -0
  160. package/lib/esm/src/devices/page/service.js +410 -0
  161. package/lib/esm/src/devices/page/statemachine.js +335 -0
  162. package/lib/esm/src/devices/page/types.js +1 -0
  163. package/lib/esm/src/devices/pairing/index.js +2 -0
  164. package/lib/esm/src/devices/pairing/model.js +1 -0
  165. package/lib/esm/src/devices/pairing/service.js +1496 -0
  166. package/lib/esm/src/devices/ride/index.js +1 -0
  167. package/lib/esm/src/devices/ride/service.js +1373 -0
  168. package/lib/esm/src/devices/ride/types.js +1 -0
  169. package/lib/esm/src/devices/types.js +1 -0
  170. package/lib/esm/src/i18n/countries/countries.json +255 -0
  171. package/lib/esm/src/i18n/countries/index.js +115 -0
  172. package/lib/esm/src/i18n/countries/model.js +1 -0
  173. package/lib/esm/src/i18n/index.js +3 -0
  174. package/lib/esm/src/i18n/localization/index.js +2 -0
  175. package/lib/esm/src/i18n/localization/service.js +125 -0
  176. package/lib/esm/src/i18n/localization/types.js +1 -0
  177. package/lib/esm/src/i18n/units/converter.js +172 -0
  178. package/lib/esm/src/i18n/units/index.js +2 -0
  179. package/lib/esm/src/i18n/units/types.js +1 -0
  180. package/lib/esm/src/index.js +22 -0
  181. package/lib/esm/src/maps/MapArea/MapArea.js +396 -0
  182. package/lib/esm/src/maps/MapArea/consts.js +8 -0
  183. package/lib/esm/src/maps/MapArea/index.js +3 -0
  184. package/lib/esm/src/maps/MapArea/options.js +402 -0
  185. package/lib/esm/src/maps/MapArea/service.js +276 -0
  186. package/lib/esm/src/maps/MapArea/types.js +1 -0
  187. package/lib/esm/src/maps/MapArea/utils.js +563 -0
  188. package/lib/esm/src/maps/index.js +1 -0
  189. package/lib/esm/src/monitoring/index.js +1 -0
  190. package/lib/esm/src/monitoring/online/index.js +1 -0
  191. package/lib/esm/src/monitoring/online/service.js +113 -0
  192. package/lib/esm/src/ride/base/base.js +227 -0
  193. package/lib/esm/src/ride/base/index.js +1 -0
  194. package/lib/esm/src/ride/base/types.js +1 -0
  195. package/lib/esm/src/ride/display/index.js +1 -0
  196. package/lib/esm/src/ride/display/service.js +1111 -0
  197. package/lib/esm/src/ride/index.js +3 -0
  198. package/lib/esm/src/ride/page/index.js +1 -0
  199. package/lib/esm/src/ride/page/service.js +362 -0
  200. package/lib/esm/src/ride/page/types.js +1 -0
  201. package/lib/esm/src/ride/route/FollowRouteDisplayService.js +32 -0
  202. package/lib/esm/src/ride/route/FreeRideDisplayService.js +578 -0
  203. package/lib/esm/src/ride/route/GpxDisplayService.js +316 -0
  204. package/lib/esm/src/ride/route/RLVDisplayService.js +575 -0
  205. package/lib/esm/src/ride/route/RouteDisplayService.js +406 -0
  206. package/lib/esm/src/ride/route/types.js +1 -0
  207. package/lib/esm/src/ride/types.js +1 -0
  208. package/lib/esm/src/ride/workout/WorkoutDisplayService.js +94 -0
  209. package/lib/esm/src/routes/base/api/consts.js +9 -0
  210. package/lib/esm/src/routes/base/api/index.js +156 -0
  211. package/lib/esm/src/routes/base/api/types.js +1 -0
  212. package/lib/esm/src/routes/base/model/route.js +117 -0
  213. package/lib/esm/src/routes/base/model/tacx.js +28 -0
  214. package/lib/esm/src/routes/base/model/types.js +1 -0
  215. package/lib/esm/src/routes/base/parsers/bikelab.js +103 -0
  216. package/lib/esm/src/routes/base/parsers/epm.js +240 -0
  217. package/lib/esm/src/routes/base/parsers/factory.js +45 -0
  218. package/lib/esm/src/routes/base/parsers/geometry.js +125 -0
  219. package/lib/esm/src/routes/base/parsers/gpx.js +210 -0
  220. package/lib/esm/src/routes/base/parsers/incyclist.js +191 -0
  221. package/lib/esm/src/routes/base/parsers/index.js +46 -0
  222. package/lib/esm/src/routes/base/parsers/kwt.js +4 -0
  223. package/lib/esm/src/routes/base/parsers/multixml.js +34 -0
  224. package/lib/esm/src/routes/base/parsers/tacx/TacxParser.js +249 -0
  225. package/lib/esm/src/routes/base/parsers/tacx/TacxReader.js +79 -0
  226. package/lib/esm/src/routes/base/parsers/tacx/pgmf.js +65 -0
  227. package/lib/esm/src/routes/base/parsers/tacx/rlv.js +80 -0
  228. package/lib/esm/src/routes/base/parsers/types.js +1 -0
  229. package/lib/esm/src/routes/base/parsers/utils.js +130 -0
  230. package/lib/esm/src/routes/base/parsers/xml.js +342 -0
  231. package/lib/esm/src/routes/base/types/index.js +2 -0
  232. package/lib/esm/src/routes/base/utils/index.js +1 -0
  233. package/lib/esm/src/routes/base/utils/localization.js +35 -0
  234. package/lib/esm/src/routes/base/utils/points.js +296 -0
  235. package/lib/esm/src/routes/base/utils/route.js +558 -0
  236. package/lib/esm/src/routes/download/service.js +225 -0
  237. package/lib/esm/src/routes/download/types.js +15 -0
  238. package/lib/esm/src/routes/free-ride/index.js +1 -0
  239. package/lib/esm/src/routes/free-ride/service.js +507 -0
  240. package/lib/esm/src/routes/index.js +5 -0
  241. package/lib/esm/src/routes/list/RouteListObserver.js +18 -0
  242. package/lib/esm/src/routes/list/cards/ActiveImportCard.js +84 -0
  243. package/lib/esm/src/routes/list/cards/FreeRideCard.js +114 -0
  244. package/lib/esm/src/routes/list/cards/RouteCard.js +884 -0
  245. package/lib/esm/src/routes/list/cards/RouteImportCard.js +36 -0
  246. package/lib/esm/src/routes/list/cards/base.js +68 -0
  247. package/lib/esm/src/routes/list/cards/types.js +1 -0
  248. package/lib/esm/src/routes/list/index.js +1 -0
  249. package/lib/esm/src/routes/list/lists/alternatives.js +38 -0
  250. package/lib/esm/src/routes/list/lists/myroutes.js +55 -0
  251. package/lib/esm/src/routes/list/lists/selected.js +35 -0
  252. package/lib/esm/src/routes/list/loaders/DBLoader.js +47 -0
  253. package/lib/esm/src/routes/list/loaders/LegacyDB.js +138 -0
  254. package/lib/esm/src/routes/list/loaders/StravaActivityLoader.js +284 -0
  255. package/lib/esm/src/routes/list/loaders/api.js +218 -0
  256. package/lib/esm/src/routes/list/loaders/db.js +335 -0
  257. package/lib/esm/src/routes/list/loaders/types.js +114 -0
  258. package/lib/esm/src/routes/list/service.js +1306 -0
  259. package/lib/esm/src/routes/list/types.js +1 -0
  260. package/lib/esm/src/routes/list/utils.js +36 -0
  261. package/lib/esm/src/routes/page/index.js +1 -0
  262. package/lib/esm/src/routes/page/service.js +432 -0
  263. package/lib/esm/src/routes/page/types.js +1 -0
  264. package/lib/esm/src/routes/sync/factory.js +119 -0
  265. package/lib/esm/src/routes/sync/index.js +2 -0
  266. package/lib/esm/src/routes/sync/komoot/provider.js +362 -0
  267. package/lib/esm/src/routes/sync/types.js +1 -0
  268. package/lib/esm/src/routes/types.js +1 -0
  269. package/lib/esm/src/services/index.js +1 -0
  270. package/lib/esm/src/services/overpass/index.js +1 -0
  271. package/lib/esm/src/services/overpass/overpass.js +108 -0
  272. package/lib/esm/src/settings/bindings/index.js +1 -0
  273. package/lib/esm/src/settings/bindings/json.js +98 -0
  274. package/lib/esm/src/settings/bindings/types.js +5 -0
  275. package/lib/esm/src/settings/display/index.js +2 -0
  276. package/lib/esm/src/settings/display/support/index.js +1 -0
  277. package/lib/esm/src/settings/display/support/service.js +111 -0
  278. package/lib/esm/src/settings/display/support/types.js +1 -0
  279. package/lib/esm/src/settings/display/user/index.js +2 -0
  280. package/lib/esm/src/settings/display/user/service.js +158 -0
  281. package/lib/esm/src/settings/display/user/types.js +1 -0
  282. package/lib/esm/src/settings/index.js +2 -0
  283. package/lib/esm/src/settings/service/index.js +1 -0
  284. package/lib/esm/src/settings/service/mock.js +31 -0
  285. package/lib/esm/src/settings/service/service.js +228 -0
  286. package/lib/esm/src/settings/types.js +1 -0
  287. package/lib/esm/src/types.js +1 -0
  288. package/lib/esm/src/ui/index.js +1 -0
  289. package/lib/esm/src/ui/service.js +479 -0
  290. package/lib/esm/src/ui/types.js +1 -0
  291. package/lib/esm/src/utils/calc.js +34 -0
  292. package/lib/esm/src/utils/clone.js +5 -0
  293. package/lib/esm/src/utils/fileinfo.js +9 -0
  294. package/lib/esm/src/utils/formatting.js +73 -0
  295. package/lib/esm/src/utils/geo.js +130 -0
  296. package/lib/esm/src/utils/index.js +10 -0
  297. package/lib/esm/src/utils/logging.js +18 -0
  298. package/lib/esm/src/utils/math.js +26 -0
  299. package/lib/esm/src/utils/merge.js +26 -0
  300. package/lib/esm/src/utils/nextTick.js +1 -0
  301. package/lib/esm/src/utils/sleep.js +1 -0
  302. package/lib/esm/src/utils/string.js +4 -0
  303. package/lib/esm/src/utils/time.js +20 -0
  304. package/lib/esm/src/utils/valid.js +11 -0
  305. package/lib/esm/src/utils/vector.js +200 -0
  306. package/lib/esm/src/utils/xml.js +105 -0
  307. package/lib/esm/src/video/VideoConversion.js +167 -0
  308. package/lib/esm/src/video/VideoSyncHelper.js +650 -0
  309. package/lib/esm/src/video/index.js +3 -0
  310. package/lib/esm/src/video/types.js +1 -0
  311. package/lib/esm/src/workouts/base/api/consts.js +9 -0
  312. package/lib/esm/src/workouts/base/api/index.js +127 -0
  313. package/lib/esm/src/workouts/base/model/Segment.js +137 -0
  314. package/lib/esm/src/workouts/base/model/Step.js +158 -0
  315. package/lib/esm/src/workouts/base/model/Workout.js +109 -0
  316. package/lib/esm/src/workouts/base/model/index.js +4 -0
  317. package/lib/esm/src/workouts/base/model/types.js +1 -0
  318. package/lib/esm/src/workouts/base/parsers/factory.js +87 -0
  319. package/lib/esm/src/workouts/base/parsers/incyclist/Json.js +56 -0
  320. package/lib/esm/src/workouts/base/parsers/index.js +35 -0
  321. package/lib/esm/src/workouts/base/parsers/intervals/parser.js +292 -0
  322. package/lib/esm/src/workouts/base/parsers/intervals/types.js +6 -0
  323. package/lib/esm/src/workouts/base/parsers/types.js +1 -0
  324. package/lib/esm/src/workouts/base/parsers/zwo/zwo.js +244 -0
  325. package/lib/esm/src/workouts/calendar/index.js +3 -0
  326. package/lib/esm/src/workouts/calendar/service.js +355 -0
  327. package/lib/esm/src/workouts/calendar/sync/factory.js +124 -0
  328. package/lib/esm/src/workouts/calendar/sync/index.js +2 -0
  329. package/lib/esm/src/workouts/calendar/sync/intervals/provider.js +208 -0
  330. package/lib/esm/src/workouts/calendar/sync/types.js +1 -0
  331. package/lib/esm/src/workouts/calendar/types.js +1 -0
  332. package/lib/esm/src/workouts/index.js +3 -0
  333. package/lib/esm/src/workouts/list/cards/ActiveImportCard.js +68 -0
  334. package/lib/esm/src/workouts/list/cards/ScheduledWorkoutCard.js +38 -0
  335. package/lib/esm/src/workouts/list/cards/WorkoutCard.js +284 -0
  336. package/lib/esm/src/workouts/list/cards/WorkoutCreateCard.js +96 -0
  337. package/lib/esm/src/workouts/list/cards/WorkoutImportCard.js +37 -0
  338. package/lib/esm/src/workouts/list/cards/base.js +54 -0
  339. package/lib/esm/src/workouts/list/cards/index.js +4 -0
  340. package/lib/esm/src/workouts/list/cards/types.js +6 -0
  341. package/lib/esm/src/workouts/list/index.js +2 -0
  342. package/lib/esm/src/workouts/list/loaders/api.js +46 -0
  343. package/lib/esm/src/workouts/list/loaders/db.js +185 -0
  344. package/lib/esm/src/workouts/list/loaders/loader.js +17 -0
  345. package/lib/esm/src/workouts/list/service.js +658 -0
  346. package/lib/esm/src/workouts/list/types.js +1 -0
  347. package/lib/esm/src/workouts/ride/index.js +2 -0
  348. package/lib/esm/src/workouts/ride/service.js +607 -0
  349. package/lib/esm/src/workouts/ride/types.js +1 -0
  350. package/lib/types/routes/download/service.d.ts +5 -0
  351. package/lib/types/routes/page/service.d.ts +15 -1
  352. package/lib/types/routes/page/types.d.ts +8 -0
  353. package/lib/types/src/activities/active-rides/index.d.ts +2 -0
  354. package/lib/types/src/activities/active-rides/mq.d.ts +28 -0
  355. package/lib/types/src/activities/active-rides/service.d.ts +116 -0
  356. package/lib/types/src/activities/active-rides/sessions.d.ts +0 -0
  357. package/lib/types/src/activities/active-rides/types.d.ts +103 -0
  358. package/lib/types/src/activities/base/api/active-rides/api.d.ts +13 -0
  359. package/lib/types/src/activities/base/api/active-rides/index.d.ts +2 -0
  360. package/lib/types/src/activities/base/api/active-rides/types.d.ts +5 -0
  361. package/lib/types/src/activities/base/api/fitconvert/consts.d.ts +2 -0
  362. package/lib/types/src/activities/base/api/fitconvert/fitconvert.d.ts +9 -0
  363. package/lib/types/src/activities/base/api/fitconvert/index.d.ts +1 -0
  364. package/lib/types/src/activities/base/api/index.d.ts +1 -0
  365. package/lib/types/src/activities/base/convert/converter.d.ts +7 -0
  366. package/lib/types/src/activities/base/convert/factory.d.ts +8 -0
  367. package/lib/types/src/activities/base/convert/fit/index.d.ts +1 -0
  368. package/lib/types/src/activities/base/convert/fit/remote-fit.d.ts +13 -0
  369. package/lib/types/src/activities/base/convert/index.d.ts +4 -0
  370. package/lib/types/src/activities/base/convert/tcx/index.d.ts +1 -0
  371. package/lib/types/src/activities/base/convert/tcx/tcx.d.ts +23 -0
  372. package/lib/types/src/activities/base/convert/tcx/types.d.ts +5 -0
  373. package/lib/types/src/activities/base/convert/types.d.ts +7 -0
  374. package/lib/types/src/activities/base/index.d.ts +5 -0
  375. package/lib/types/src/activities/base/model/index.d.ts +206 -0
  376. package/lib/types/src/activities/base/repo/db.d.ts +60 -0
  377. package/lib/types/src/activities/base/repo/index.d.ts +2 -0
  378. package/lib/types/src/activities/base/repo/migration/factory.d.ts +7 -0
  379. package/lib/types/src/activities/base/repo/migration/types.d.ts +15 -0
  380. package/lib/types/src/activities/base/repo/migration/v0.d.ts +5 -0
  381. package/lib/types/src/activities/base/repo/migration/v1.d.ts +5 -0
  382. package/lib/types/src/activities/base/repo/migration/v2.d.ts +5 -0
  383. package/lib/types/src/activities/base/repo/migration/v3.d.ts +5 -0
  384. package/lib/types/src/activities/base/repo/types.d.ts +14 -0
  385. package/lib/types/src/activities/base/utils/activity.d.ts +50 -0
  386. package/lib/types/src/activities/base/utils/helpers.d.ts +4 -0
  387. package/lib/types/src/activities/base/utils/index.d.ts +2 -0
  388. package/lib/types/src/activities/index.d.ts +6 -0
  389. package/lib/types/src/activities/list/index.d.ts +2 -0
  390. package/lib/types/src/activities/list/service.d.ts +59 -0
  391. package/lib/types/src/activities/list/types.d.ts +94 -0
  392. package/lib/types/src/activities/list/utils.d.ts +5 -0
  393. package/lib/types/src/activities/page/index.d.ts +1 -0
  394. package/lib/types/src/activities/page/service.d.ts +24 -0
  395. package/lib/types/src/activities/page/types.d.ts +10 -0
  396. package/lib/types/src/activities/ride/duration.d.ts +32 -0
  397. package/lib/types/src/activities/ride/index.d.ts +1 -0
  398. package/lib/types/src/activities/ride/service.d.ts +248 -0
  399. package/lib/types/src/activities/ride/stats.d.ts +37 -0
  400. package/lib/types/src/activities/ride/types.d.ts +31 -0
  401. package/lib/types/src/activities/types.d.ts +2 -0
  402. package/lib/types/src/activities/upload/factory.d.ts +12 -0
  403. package/lib/types/src/activities/upload/index.d.ts +5 -0
  404. package/lib/types/src/activities/upload/intervals.d.ts +18 -0
  405. package/lib/types/src/activities/upload/strava.d.ts +18 -0
  406. package/lib/types/src/activities/upload/types.d.ts +25 -0
  407. package/lib/types/src/activities/upload/velohero.d.ts +18 -0
  408. package/lib/types/src/api/appInfo/index.d.ts +17 -0
  409. package/lib/types/src/api/bindings/index.d.ts +40 -0
  410. package/lib/types/src/api/bindings/types.d.ts +14 -0
  411. package/lib/types/src/api/crypto/types.d.ts +46 -0
  412. package/lib/types/src/api/download/index.d.ts +11 -0
  413. package/lib/types/src/api/form/types.d.ts +6 -0
  414. package/lib/types/src/api/fs/index.d.ts +15 -0
  415. package/lib/types/src/api/index.d.ts +5 -0
  416. package/lib/types/src/api/logging/types.d.ts +8 -0
  417. package/lib/types/src/api/mq/index.d.ts +7 -0
  418. package/lib/types/src/api/path/index.d.ts +11 -0
  419. package/lib/types/src/api/repository/index.d.ts +8 -0
  420. package/lib/types/src/api/repository/json/index.d.ts +22 -0
  421. package/lib/types/src/api/repository/types.d.ts +36 -0
  422. package/lib/types/src/api/rest/RestApiClient.d.ts +7 -0
  423. package/lib/types/src/api/rest/api.d.ts +15 -0
  424. package/lib/types/src/api/rest/incyclist.d.ts +7 -0
  425. package/lib/types/src/api/rest/index.d.ts +3 -0
  426. package/lib/types/src/api/rest/types.d.ts +9 -0
  427. package/lib/types/src/api/secret/index.d.ts +6 -0
  428. package/lib/types/src/api/serial/types.d.ts +3 -0
  429. package/lib/types/src/api/types.d.ts +7 -0
  430. package/lib/types/src/api/ui/index.d.ts +21 -0
  431. package/lib/types/src/api/video/index.d.ts +21 -0
  432. package/lib/types/src/apps/base/api/base.d.ts +13 -0
  433. package/lib/types/src/apps/base/api/index.d.ts +4 -0
  434. package/lib/types/src/apps/base/api/intervals/api.d.ts +23 -0
  435. package/lib/types/src/apps/base/api/intervals/index.d.ts +2 -0
  436. package/lib/types/src/apps/base/api/intervals/types.d.ts +121 -0
  437. package/lib/types/src/apps/base/api/komoot/api.d.ts +21 -0
  438. package/lib/types/src/apps/base/api/komoot/index.d.ts +2 -0
  439. package/lib/types/src/apps/base/api/komoot/types.d.ts +94 -0
  440. package/lib/types/src/apps/base/api/strava/api.d.ts +40 -0
  441. package/lib/types/src/apps/base/api/strava/index.d.ts +2 -0
  442. package/lib/types/src/apps/base/api/strava/types.d.ts +143 -0
  443. package/lib/types/src/apps/base/api/velohero/api.d.ts +12 -0
  444. package/lib/types/src/apps/base/api/velohero/index.d.ts +2 -0
  445. package/lib/types/src/apps/base/api/velohero/types.d.ts +14 -0
  446. package/lib/types/src/apps/base/app/index.d.ts +20 -0
  447. package/lib/types/src/apps/base/index.d.ts +3 -0
  448. package/lib/types/src/apps/base/types.d.ts +2 -0
  449. package/lib/types/src/apps/googleMaps/index.d.ts +1 -0
  450. package/lib/types/src/apps/googleMaps/service.d.ts +18 -0
  451. package/lib/types/src/apps/index.d.ts +5 -0
  452. package/lib/types/src/apps/intervals/IntervalsAppConnection.d.ts +23 -0
  453. package/lib/types/src/apps/intervals/index.d.ts +0 -0
  454. package/lib/types/src/apps/intervals/types.d.ts +6 -0
  455. package/lib/types/src/apps/komoot/KomootAppConnection.d.ts +25 -0
  456. package/lib/types/src/apps/komoot/index.d.ts +2 -0
  457. package/lib/types/src/apps/komoot/types.d.ts +10 -0
  458. package/lib/types/src/apps/service.d.ts +38 -0
  459. package/lib/types/src/apps/strava/StravaAppConnection.d.ts +28 -0
  460. package/lib/types/src/apps/strava/index.d.ts +2 -0
  461. package/lib/types/src/apps/strava/types.d.ts +6 -0
  462. package/lib/types/src/apps/types.d.ts +16 -0
  463. package/lib/types/src/apps/velohero/VeloHeroAppConnection.d.ts +25 -0
  464. package/lib/types/src/apps/velohero/index.d.ts +2 -0
  465. package/lib/types/src/apps/velohero/types.d.ts +9 -0
  466. package/lib/types/src/appstate/index.d.ts +2 -0
  467. package/lib/types/src/appstate/service.d.ts +17 -0
  468. package/lib/types/src/appstate/types.d.ts +12 -0
  469. package/lib/types/src/autoupdate/api.d.ts +22 -0
  470. package/lib/types/src/autoupdate/autoupdate.d.ts +6 -0
  471. package/lib/types/src/autoupdate/index.d.ts +2 -0
  472. package/lib/types/src/avatars/index.d.ts +2 -0
  473. package/lib/types/src/avatars/service.d.ts +17 -0
  474. package/lib/types/src/avatars/types.d.ts +10 -0
  475. package/lib/types/src/base/cardlist/index.d.ts +33 -0
  476. package/lib/types/src/base/cardlist/types.d.ts +4 -0
  477. package/lib/types/src/base/decorators/Injection.d.ts +2 -0
  478. package/lib/types/src/base/decorators/index.d.ts +2 -0
  479. package/lib/types/src/base/pages/index.d.ts +2 -0
  480. package/lib/types/src/base/pages/service.d.ts +23 -0
  481. package/lib/types/src/base/pages/types.d.ts +8 -0
  482. package/lib/types/src/base/service.d.ts +13 -0
  483. package/lib/types/src/base/typedefs.d.ts +7 -0
  484. package/lib/types/src/base/types/index.d.ts +3 -0
  485. package/lib/types/src/base/types/lists.d.ts +14 -0
  486. package/lib/types/src/base/types/observer.d.ts +21 -0
  487. package/lib/types/src/base/types/singleton.d.ts +1 -0
  488. package/lib/types/src/coaches/coach.d.ts +37 -0
  489. package/lib/types/src/coaches/index.d.ts +3 -0
  490. package/lib/types/src/coaches/service.d.ts +39 -0
  491. package/lib/types/src/coaches/types.d.ts +25 -0
  492. package/lib/types/src/devices/access/index.d.ts +2 -0
  493. package/lib/types/src/devices/access/model.d.ts +37 -0
  494. package/lib/types/src/devices/access/service.d.ts +42 -0
  495. package/lib/types/src/devices/configuration/index.d.ts +2 -0
  496. package/lib/types/src/devices/configuration/model/app/index.d.ts +17 -0
  497. package/lib/types/src/devices/configuration/model/index.d.ts +3 -0
  498. package/lib/types/src/devices/configuration/model/repository/index.d.ts +36 -0
  499. package/lib/types/src/devices/configuration/model/repository/legacy.d.ts +57 -0
  500. package/lib/types/src/devices/configuration/model/service/index.d.ts +18 -0
  501. package/lib/types/src/devices/configuration/service.d.ts +102 -0
  502. package/lib/types/src/devices/configuration/types.d.ts +2 -0
  503. package/lib/types/src/devices/index.d.ts +5 -0
  504. package/lib/types/src/devices/page/index.d.ts +1 -0
  505. package/lib/types/src/devices/page/logobserver.d.ts +8 -0
  506. package/lib/types/src/devices/page/service.d.ts +54 -0
  507. package/lib/types/src/devices/page/statemachine.d.ts +47 -0
  508. package/lib/types/src/devices/page/types.d.ts +74 -0
  509. package/lib/types/src/devices/pairing/index.d.ts +2 -0
  510. package/lib/types/src/devices/pairing/model.d.ts +84 -0
  511. package/lib/types/src/devices/pairing/service.d.ts +150 -0
  512. package/lib/types/src/devices/ride/index.d.ts +2 -0
  513. package/lib/types/src/devices/ride/service.d.ts +139 -0
  514. package/lib/types/src/devices/ride/types.d.ts +54 -0
  515. package/lib/types/src/devices/types.d.ts +3 -0
  516. package/lib/types/src/i18n/countries/index.d.ts +17 -0
  517. package/lib/types/src/i18n/countries/model.d.ts +18 -0
  518. package/lib/types/src/i18n/index.d.ts +3 -0
  519. package/lib/types/src/i18n/localization/index.d.ts +2 -0
  520. package/lib/types/src/i18n/localization/service.d.ts +17 -0
  521. package/lib/types/src/i18n/localization/types.d.ts +3 -0
  522. package/lib/types/src/i18n/units/converter.d.ts +17 -0
  523. package/lib/types/src/i18n/units/index.d.ts +2 -0
  524. package/lib/types/src/i18n/units/types.d.ts +17 -0
  525. package/lib/types/src/index.d.ts +23 -0
  526. package/lib/types/src/maps/MapArea/MapArea.d.ts +34 -0
  527. package/lib/types/src/maps/MapArea/consts.d.ts +11 -0
  528. package/lib/types/src/maps/MapArea/index.d.ts +3 -0
  529. package/lib/types/src/maps/MapArea/options.d.ts +24 -0
  530. package/lib/types/src/maps/MapArea/service.d.ts +54 -0
  531. package/lib/types/src/maps/MapArea/types.d.ts +132 -0
  532. package/lib/types/src/maps/MapArea/utils.d.ts +44 -0
  533. package/lib/types/src/maps/index.d.ts +1 -0
  534. package/lib/types/src/monitoring/index.d.ts +1 -0
  535. package/lib/types/src/monitoring/online/index.d.ts +1 -0
  536. package/lib/types/src/monitoring/online/service.d.ts +19 -0
  537. package/lib/types/src/ride/base/base.d.ts +49 -0
  538. package/lib/types/src/ride/base/index.d.ts +1 -0
  539. package/lib/types/src/ride/base/types.d.ts +181 -0
  540. package/lib/types/src/ride/display/index.d.ts +1 -0
  541. package/lib/types/src/ride/display/service.d.ts +136 -0
  542. package/lib/types/src/ride/index.d.ts +3 -0
  543. package/lib/types/src/ride/page/index.d.ts +1 -0
  544. package/lib/types/src/ride/page/service.d.ts +51 -0
  545. package/lib/types/src/ride/page/types.d.ts +44 -0
  546. package/lib/types/src/ride/route/FollowRouteDisplayService.d.ts +5 -0
  547. package/lib/types/src/ride/route/FreeRideDisplayService.d.ts +85 -0
  548. package/lib/types/src/ride/route/GpxDisplayService.d.ts +62 -0
  549. package/lib/types/src/ride/route/RLVDisplayService.d.ts +99 -0
  550. package/lib/types/src/ride/route/RouteDisplayService.d.ts +69 -0
  551. package/lib/types/src/ride/route/types.d.ts +25 -0
  552. package/lib/types/src/ride/types.d.ts +3 -0
  553. package/lib/types/src/ride/workout/WorkoutDisplayService.d.ts +15 -0
  554. package/lib/types/src/routes/base/api/consts.d.ts +9 -0
  555. package/lib/types/src/routes/base/api/index.d.ts +24 -0
  556. package/lib/types/src/routes/base/api/types.d.ts +77 -0
  557. package/lib/types/src/routes/base/model/route.d.ts +20 -0
  558. package/lib/types/src/routes/base/model/tacx.d.ts +92 -0
  559. package/lib/types/src/routes/base/model/types.d.ts +13 -0
  560. package/lib/types/src/routes/base/parsers/bikelab.d.ts +12 -0
  561. package/lib/types/src/routes/base/parsers/epm.d.ts +28 -0
  562. package/lib/types/src/routes/base/parsers/factory.d.ts +14 -0
  563. package/lib/types/src/routes/base/parsers/geometry.d.ts +28 -0
  564. package/lib/types/src/routes/base/parsers/gpx.d.ts +26 -0
  565. package/lib/types/src/routes/base/parsers/incyclist.d.ts +16 -0
  566. package/lib/types/src/routes/base/parsers/index.d.ts +9 -0
  567. package/lib/types/src/routes/base/parsers/kwt.d.ts +4 -0
  568. package/lib/types/src/routes/base/parsers/multixml.d.ts +13 -0
  569. package/lib/types/src/routes/base/parsers/tacx/TacxParser.d.ts +27 -0
  570. package/lib/types/src/routes/base/parsers/tacx/TacxReader.d.ts +12 -0
  571. package/lib/types/src/routes/base/parsers/tacx/pgmf.d.ts +8 -0
  572. package/lib/types/src/routes/base/parsers/tacx/rlv.d.ts +10 -0
  573. package/lib/types/src/routes/base/parsers/types.d.ts +15 -0
  574. package/lib/types/src/routes/base/parsers/utils.d.ts +24 -0
  575. package/lib/types/src/routes/base/parsers/xml.d.ts +33 -0
  576. package/lib/types/src/routes/base/types/index.d.ts +135 -0
  577. package/lib/types/src/routes/base/utils/index.d.ts +1 -0
  578. package/lib/types/src/routes/base/utils/localization.d.ts +4 -0
  579. package/lib/types/src/routes/base/utils/points.d.ts +24 -0
  580. package/lib/types/src/routes/base/utils/route.d.ts +44 -0
  581. package/lib/types/src/routes/download/service.d.ts +34 -0
  582. package/lib/types/src/routes/download/types.d.ts +8 -0
  583. package/lib/types/src/routes/free-ride/index.d.ts +1 -0
  584. package/lib/types/src/routes/free-ride/service.d.ts +54 -0
  585. package/lib/types/src/routes/index.d.ts +5 -0
  586. package/lib/types/src/routes/list/RouteListObserver.d.ts +13 -0
  587. package/lib/types/src/routes/list/cards/ActiveImportCard.d.ts +32 -0
  588. package/lib/types/src/routes/list/cards/FreeRideCard.d.ts +40 -0
  589. package/lib/types/src/routes/list/cards/RouteCard.d.ts +117 -0
  590. package/lib/types/src/routes/list/cards/RouteImportCard.d.ts +19 -0
  591. package/lib/types/src/routes/list/cards/base.d.ts +24 -0
  592. package/lib/types/src/routes/list/cards/types.d.ts +101 -0
  593. package/lib/types/src/routes/list/index.d.ts +1 -0
  594. package/lib/types/src/routes/list/lists/alternatives.d.ts +5 -0
  595. package/lib/types/src/routes/list/lists/myroutes.d.ts +10 -0
  596. package/lib/types/src/routes/list/lists/selected.d.ts +5 -0
  597. package/lib/types/src/routes/list/loaders/DBLoader.d.ts +22 -0
  598. package/lib/types/src/routes/list/loaders/LegacyDB.d.ts +17 -0
  599. package/lib/types/src/routes/list/loaders/StravaActivityLoader.d.ts +44 -0
  600. package/lib/types/src/routes/list/loaders/api.d.ts +28 -0
  601. package/lib/types/src/routes/list/loaders/db.d.ts +40 -0
  602. package/lib/types/src/routes/list/loaders/types.d.ts +43 -0
  603. package/lib/types/src/routes/list/service.d.ts +164 -0
  604. package/lib/types/src/routes/list/types.d.ts +93 -0
  605. package/lib/types/src/routes/list/utils.d.ts +5 -0
  606. package/lib/types/src/routes/page/index.d.ts +1 -0
  607. package/lib/types/src/routes/page/service.d.ts +60 -0
  608. package/lib/types/src/routes/page/types.d.ts +45 -0
  609. package/lib/types/src/routes/sync/factory.d.ts +14 -0
  610. package/lib/types/src/routes/sync/index.d.ts +2 -0
  611. package/lib/types/src/routes/sync/komoot/provider.d.ts +51 -0
  612. package/lib/types/src/routes/sync/types.d.ts +11 -0
  613. package/lib/types/src/routes/types.d.ts +7 -0
  614. package/lib/types/src/services/index.d.ts +1 -0
  615. package/lib/types/src/services/overpass/index.d.ts +1 -0
  616. package/lib/types/src/services/overpass/overpass.d.ts +14 -0
  617. package/lib/types/src/settings/bindings/index.d.ts +1 -0
  618. package/lib/types/src/settings/bindings/json.d.ts +15 -0
  619. package/lib/types/src/settings/bindings/types.d.ts +8 -0
  620. package/lib/types/src/settings/display/index.d.ts +2 -0
  621. package/lib/types/src/settings/display/support/index.d.ts +1 -0
  622. package/lib/types/src/settings/display/support/service.d.ts +17 -0
  623. package/lib/types/src/settings/display/support/types.d.ts +14 -0
  624. package/lib/types/src/settings/display/user/index.d.ts +2 -0
  625. package/lib/types/src/settings/display/user/service.d.ts +23 -0
  626. package/lib/types/src/settings/display/user/types.d.ts +22 -0
  627. package/lib/types/src/settings/index.d.ts +2 -0
  628. package/lib/types/src/settings/service/index.d.ts +1 -0
  629. package/lib/types/src/settings/service/mock.d.ts +13 -0
  630. package/lib/types/src/settings/service/service.d.ts +48 -0
  631. package/lib/types/src/settings/types.d.ts +2 -0
  632. package/lib/types/src/types.d.ts +8 -0
  633. package/lib/types/src/ui/index.d.ts +1 -0
  634. package/lib/types/src/ui/service.d.ts +56 -0
  635. package/lib/types/src/ui/types.d.ts +1 -0
  636. package/lib/types/src/utils/calc.d.ts +8 -0
  637. package/lib/types/src/utils/clone.d.ts +1 -0
  638. package/lib/types/src/utils/fileinfo.d.ts +2 -0
  639. package/lib/types/src/utils/formatting.d.ts +5 -0
  640. package/lib/types/src/utils/geo.d.ts +15 -0
  641. package/lib/types/src/utils/index.d.ts +10 -0
  642. package/lib/types/src/utils/logging.d.ts +2 -0
  643. package/lib/types/src/utils/math.d.ts +7 -0
  644. package/lib/types/src/utils/merge.d.ts +1 -0
  645. package/lib/types/src/utils/nextTick.d.ts +1 -0
  646. package/lib/types/src/utils/sleep.d.ts +1 -0
  647. package/lib/types/src/utils/string.d.ts +1 -0
  648. package/lib/types/src/utils/time.d.ts +4 -0
  649. package/lib/types/src/utils/valid.d.ts +1 -0
  650. package/lib/types/src/utils/vector.d.ts +25 -0
  651. package/lib/types/src/utils/xml.d.ts +18 -0
  652. package/lib/types/src/video/VideoConversion.d.ts +23 -0
  653. package/lib/types/src/video/VideoSyncHelper.d.ts +76 -0
  654. package/lib/types/src/video/index.d.ts +3 -0
  655. package/lib/types/src/video/types.d.ts +41 -0
  656. package/lib/types/src/workouts/base/api/consts.d.ts +9 -0
  657. package/lib/types/src/workouts/base/api/index.d.ts +17 -0
  658. package/lib/types/src/workouts/base/model/Segment.d.ts +18 -0
  659. package/lib/types/src/workouts/base/model/Step.d.ts +35 -0
  660. package/lib/types/src/workouts/base/model/Workout.d.ts +26 -0
  661. package/lib/types/src/workouts/base/model/index.d.ts +4 -0
  662. package/lib/types/src/workouts/base/model/types.d.ts +61 -0
  663. package/lib/types/src/workouts/base/parsers/factory.d.ts +11 -0
  664. package/lib/types/src/workouts/base/parsers/incyclist/Json.d.ts +12 -0
  665. package/lib/types/src/workouts/base/parsers/index.d.ts +5 -0
  666. package/lib/types/src/workouts/base/parsers/intervals/parser.d.ts +59 -0
  667. package/lib/types/src/workouts/base/parsers/intervals/types.d.ts +57 -0
  668. package/lib/types/src/workouts/base/parsers/types.d.ts +8 -0
  669. package/lib/types/src/workouts/base/parsers/zwo/zwo.d.ts +37 -0
  670. package/lib/types/src/workouts/calendar/index.d.ts +3 -0
  671. package/lib/types/src/workouts/calendar/service.d.ts +50 -0
  672. package/lib/types/src/workouts/calendar/sync/factory.d.ts +10 -0
  673. package/lib/types/src/workouts/calendar/sync/index.d.ts +2 -0
  674. package/lib/types/src/workouts/calendar/sync/intervals/provider.d.ts +22 -0
  675. package/lib/types/src/workouts/calendar/sync/types.d.ts +10 -0
  676. package/lib/types/src/workouts/calendar/types.d.ts +15 -0
  677. package/lib/types/src/workouts/index.d.ts +3 -0
  678. package/lib/types/src/workouts/list/cards/ActiveImportCard.d.ts +27 -0
  679. package/lib/types/src/workouts/list/cards/ScheduledWorkoutCard.d.ts +13 -0
  680. package/lib/types/src/workouts/list/cards/WorkoutCard.d.ts +45 -0
  681. package/lib/types/src/workouts/list/cards/WorkoutCreateCard.d.ts +21 -0
  682. package/lib/types/src/workouts/list/cards/WorkoutImportCard.d.ts +19 -0
  683. package/lib/types/src/workouts/list/cards/base.d.ts +22 -0
  684. package/lib/types/src/workouts/list/cards/index.d.ts +4 -0
  685. package/lib/types/src/workouts/list/cards/types.d.ts +56 -0
  686. package/lib/types/src/workouts/list/index.d.ts +2 -0
  687. package/lib/types/src/workouts/list/loaders/api.d.ts +11 -0
  688. package/lib/types/src/workouts/list/loaders/db.d.ts +27 -0
  689. package/lib/types/src/workouts/list/loaders/loader.d.ts +10 -0
  690. package/lib/types/src/workouts/list/service.d.ts +90 -0
  691. package/lib/types/src/workouts/list/types.d.ts +12 -0
  692. package/lib/types/src/workouts/ride/index.d.ts +2 -0
  693. package/lib/types/src/workouts/ride/service.d.ts +69 -0
  694. package/lib/types/src/workouts/ride/types.d.ts +25 -0
  695. package/package.json +10 -10
@@ -256,7 +256,6 @@ let ActivityRideService = (() => {
256
256
  }
257
257
  catch { }
258
258
  if (showLog) {
259
- console.log('# here', this.state);
260
259
  this.logEvent({ message: 'Dashboard update', items: info.map(i => `${i.title}:${i.data[0]?.value ?? ''}:${i.data[1]?.value ?? ''}${i.data[1]?.label ? '(' + i.data[1]?.label + ')' : ''}`).join('|') });
261
260
  }
262
261
  return info;
@@ -465,6 +464,7 @@ let ActivityRideService = (() => {
465
464
  this.saveObserver.emit(event, ...args);
466
465
  };
467
466
  const run = async () => {
467
+ await (0, sleep_1.sleep)(5);
468
468
  let cntCompleted = 0;
469
469
  let success = false;
470
470
  const localEmitter = new node_events_1.EventEmitter();
@@ -1,172 +1,229 @@
1
1
  "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
2
36
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RouteDownloadService = void 0;
37
+ exports.useRouteDownload = exports.RouteDownloadService = void 0;
4
38
  const api_1 = require("../../api");
39
+ const decorators_1 = require("../../base/decorators");
5
40
  const service_1 = require("../../base/service");
6
41
  const settings_1 = require("../../settings");
7
42
  const utils_1 = require("../../utils");
8
43
  const api_2 = require("../list/loaders/api");
9
44
  const db_1 = require("../list/loaders/db");
10
45
  const types_1 = require("./types");
11
- class RouteDownloadService extends service_1.IncyclistService {
12
- downloads;
13
- progressLogTs;
14
- constructor() {
15
- super('Routes');
16
- this.progressLogTs = {};
17
- this.downloads = [];
18
- }
19
- getRepo() {
20
- return new db_1.RoutesDbLoader();
21
- }
22
- getRoutesApi() {
23
- return new api_2.RoutesApiLoader();
24
- }
25
- download(route) {
26
- const running = this.getObserver(route);
27
- if (running) {
28
- return running;
29
- }
30
- const observer = new types_1.DownloadObserver(this._download(route));
31
- this.downloads.push({ route, observer });
32
- return observer;
33
- }
34
- stopDownload(route) {
35
- const idx = this.downloads.findIndex(d => d.route.description.id === route.description.id);
36
- if (idx === -1)
37
- return;
38
- const info = this.downloads[idx];
39
- info.observer.stop();
40
- this.downloads.splice(idx, 1);
41
- }
42
- async deleteIncompleteFile(route, videoDir) {
43
- const { file } = await this.getDownloadFileName(route, videoDir);
44
- if (file) {
45
- try {
46
- const fs = (0, api_1.getBindings)().fs;
47
- fs.unlink(file);
46
+ let RouteDownloadService = (() => {
47
+ let _classDecorators = [decorators_1.Singleton];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = service_1.IncyclistService;
52
+ var RouteDownloadService = class extends _classSuper {
53
+ static { _classThis = this; }
54
+ static {
55
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
56
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
57
+ RouteDownloadService = _classThis = _classDescriptor.value;
58
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
+ __runInitializers(_classThis, _classExtraInitializers);
60
+ }
61
+ downloads;
62
+ progressLogTs;
63
+ constructor() {
64
+ super('Routes');
65
+ this.progressLogTs = {};
66
+ this.downloads = [];
67
+ }
68
+ getRepo() {
69
+ return new db_1.RoutesDbLoader();
70
+ }
71
+ getRoutesApi() {
72
+ return new api_2.RoutesApiLoader();
73
+ }
74
+ getActiveDownloads() {
75
+ return this.downloads;
76
+ }
77
+ download(route) {
78
+ const running = this.getObserver(route);
79
+ if (running) {
80
+ return running;
48
81
  }
49
- catch (err) {
50
- this.logError(err, 'deleteIncompleteFile');
82
+ const observer = new types_1.DownloadObserver(this._download(route));
83
+ this.downloads.push({ route, observer });
84
+ this.emit('download-started', route, observer);
85
+ return observer;
86
+ }
87
+ stopDownload(route) {
88
+ const idx = this.downloads.findIndex(d => d.route.description.id === route.description.id);
89
+ if (idx === -1)
90
+ return;
91
+ const info = this.downloads[idx];
92
+ info.observer.stop();
93
+ this.downloads.splice(idx, 1);
94
+ }
95
+ async deleteIncompleteFile(route, videoDir) {
96
+ const { file } = await this.getDownloadFileName(route, videoDir);
97
+ if (file) {
98
+ try {
99
+ const fs = (0, api_1.getBindings)().fs;
100
+ fs.unlink(file);
101
+ }
102
+ catch (err) {
103
+ this.logError(err, 'deleteIncompleteFile');
104
+ }
51
105
  }
52
106
  }
53
- }
54
- getObserver(route) {
55
- const info = this.downloads.find(d => d.route.description.id === route.description.id);
56
- return info?.observer;
57
- }
58
- async _download(route) {
59
- await (0, utils_1.waitNextTick)();
60
- const observer = this.getObserver(route);
61
- try {
62
- const videoDir = await this.waitForVideoDir(observer);
63
- observer.once('stopped', () => {
64
- this.deleteIncompleteFile(route, videoDir);
65
- });
66
- this.downloadRoute(route, videoDir, observer);
67
- }
68
- catch (err) {
69
- observer.emit('error', err);
107
+ getObserver(route) {
108
+ const info = this.downloads.find(d => d.route.description.id === route.description.id);
109
+ return info?.observer;
70
110
  }
71
- }
72
- waitForVideoDir(observer) {
73
- const settings = (0, settings_1.useUserSettings)();
74
- const videoDir = settings.get('videos.directory', null);
75
- if (!videoDir) {
76
- const reqId = Date.now().toString();
77
- const settingsObserver = settings.requestNotifyOnChange(reqId, 'videos.directory');
78
- observer?.emit('videoDir.unknown');
79
- return new Promise(done => {
80
- settingsObserver.on('changed', (dir) => {
81
- observer?.emit('videoDir.ok');
82
- settings.stopNotifyOnChange(reqId);
83
- done(dir);
111
+ async _download(route) {
112
+ await (0, utils_1.waitNextTick)();
113
+ const observer = this.getObserver(route);
114
+ try {
115
+ const videoDir = await this.waitForVideoDir(observer);
116
+ observer.once('stopped', () => {
117
+ this.deleteIncompleteFile(route, videoDir);
84
118
  });
85
- });
86
- }
87
- return videoDir;
88
- }
89
- async getDownloadFileName(route, targetDir) {
90
- let url, file, error;
91
- try {
92
- const { path } = (0, api_1.getBindings)();
93
- url = route?.description?.downloadUrl || route?.description?.videoUrl;
94
- if (!url) {
95
- url = await this.restoreFromRepo(route);
96
- }
97
- if (!url || !path) {
98
- return { error: 'download not supported' };
119
+ this.downloadRoute(route, videoDir, observer);
99
120
  }
100
- const info = path.parse(url);
101
- if (!info) {
102
- const logInfo = { ...route.description };
103
- delete logInfo.points;
104
- this.logEvent({ message: 'no URL specified', logInfo });
105
- return { error: 'no URL specified' };
121
+ catch (err) {
122
+ observer.emit('error', err);
106
123
  }
107
- file = path.join(targetDir, info.base);
108
124
  }
109
- catch {
110
- return {};
125
+ waitForVideoDir(observer) {
126
+ const settings = (0, settings_1.useUserSettings)();
127
+ const videoDir = settings.get('videos.directory', null);
128
+ if (!videoDir) {
129
+ const reqId = Date.now().toString();
130
+ const settingsObserver = settings.requestNotifyOnChange(reqId, 'videos.directory');
131
+ observer?.emit('videoDir.unknown');
132
+ return new Promise(done => {
133
+ settingsObserver.on('changed', (dir) => {
134
+ observer?.emit('videoDir.ok');
135
+ settings.stopNotifyOnChange(reqId);
136
+ done(dir);
137
+ });
138
+ });
139
+ }
140
+ return videoDir;
111
141
  }
112
- return { file, url };
113
- }
114
- async downloadRoute(route, targetDir, observer) {
115
- let urlLog;
116
- try {
117
- const { file, url, error } = await this.getDownloadFileName(route, targetDir);
118
- urlLog = url;
119
- if (!file || error) {
120
- observer.emit('error', new Error(error ?? 'download not supported'));
121
- return;
142
+ async getDownloadFileName(route, targetDir) {
143
+ let url, file, error;
144
+ try {
145
+ const { path } = (0, api_1.getBindings)();
146
+ url = route?.description?.downloadUrl || route?.description?.videoUrl;
147
+ if (!url) {
148
+ url = await this.restoreFromRepo(route);
149
+ }
150
+ if (!url || !path) {
151
+ return { error: 'download not supported' };
152
+ }
153
+ const info = path.parse(url);
154
+ if (!info) {
155
+ const logInfo = { ...route.description };
156
+ delete logInfo.points;
157
+ this.logEvent({ message: 'no URL specified', logInfo });
158
+ return { error: 'no URL specified' };
159
+ }
160
+ file = path.join(targetDir, info.base);
122
161
  }
123
- const { id, title } = route.description;
124
- const { downloadManager } = (0, api_1.getBindings)();
125
- if (!downloadManager) {
126
- observer.emit('error', new Error('download not supported'));
127
- return;
162
+ catch {
163
+ return {};
128
164
  }
129
- const session = downloadManager.createSession(url, file);
130
- if (!session) {
131
- observer.emit('error', new Error(error ?? 'download not supported'));
132
- return;
165
+ return { file, url };
166
+ }
167
+ async downloadRoute(route, targetDir, observer) {
168
+ let urlLog;
169
+ try {
170
+ const { file, url, error } = await this.getDownloadFileName(route, targetDir);
171
+ urlLog = url;
172
+ if (!file || error) {
173
+ observer.emit('error', new Error(error ?? 'download not supported'));
174
+ return;
175
+ }
176
+ const { id, title } = route.description;
177
+ const { downloadManager } = (0, api_1.getBindings)();
178
+ if (!downloadManager) {
179
+ observer.emit('error', new Error('download not supported'));
180
+ return;
181
+ }
182
+ const session = downloadManager.createSession(url, file);
183
+ if (!session) {
184
+ observer.emit('error', new Error(error ?? 'download not supported'));
185
+ return;
186
+ }
187
+ observer.setSession(session);
188
+ const onError = (err) => {
189
+ this.logEvent({ message: 'download failed ', title, id, url, reason: err.message });
190
+ observer.emit('error', err);
191
+ };
192
+ const onProgress = (pct, speed, bytes) => { this.onDownloadProgress(id, observer, pct, speed, bytes); };
193
+ this.logEvent({ message: 'start download', title, id, url });
194
+ session.on('started', () => { observer.emit('started'); });
195
+ session.on('close', () => { });
196
+ session.on('progress', onProgress);
197
+ session.on('error', onError);
198
+ session.once('done', () => {
199
+ this.logEvent({ message: 'download finished ', title, id, url });
200
+ observer.emit('done', `video:///${file}`);
201
+ });
202
+ session.start();
133
203
  }
134
- observer.setSession(session);
135
- const onError = (err) => {
136
- this.logEvent({ message: 'download failed ', title, id, url, reason: err.message });
204
+ catch (err) {
205
+ this.logError(err, 'downloadRoute', { url: urlLog });
137
206
  observer.emit('error', err);
138
- };
139
- const onProgress = (pct, speed, bytes) => { this.onDownloadProgress(id, observer, pct, speed, bytes); };
140
- this.logEvent({ message: 'start download', title, id, url });
141
- session.on('started', () => { observer.emit('started'); });
142
- session.on('close', () => { });
143
- session.on('progress', onProgress);
144
- session.on('error', onError);
145
- session.once('done', () => {
146
- this.logEvent({ message: 'download finished ', title, id, url });
147
- observer.emit('done', `video:///${file}`);
148
- });
149
- session.start();
150
- }
151
- catch (err) {
152
- this.logError(err, 'downloadRoute', { url: urlLog });
153
- observer.emit('error', err);
207
+ }
154
208
  }
155
- }
156
- async restoreFromRepo(route) {
157
- await this.getRoutesApi().loadDetails([{ route, added: false }], true);
158
- await (0, utils_1.waitNextTick)();
159
- const descr = this.getRepo().getDescription(route.description.id);
160
- return descr?.downloadUrl || descr?.videoUrl;
161
- }
162
- onDownloadProgress(id, observer, pct, speed, downloaded) {
163
- const prev = this.progressLogTs[id] || 0;
164
- const ts = Date.now();
165
- if (ts - prev > 1000) {
166
- this.logEvent({ message: 'download progress', pctComplete: pct, downloaded, downloadSpeed: speed });
167
- this.progressLogTs[id] = ts;
168
- }
169
- observer.emit('progress', Number(pct));
170
- }
171
- }
209
+ async restoreFromRepo(route) {
210
+ await this.getRoutesApi().loadDetails([{ route, added: false }], true);
211
+ await (0, utils_1.waitNextTick)();
212
+ const descr = this.getRepo().getDescription(route.description.id);
213
+ return descr?.downloadUrl || descr?.videoUrl;
214
+ }
215
+ onDownloadProgress(id, observer, pct, speed, downloaded) {
216
+ const prev = this.progressLogTs[id] || 0;
217
+ const ts = Date.now();
218
+ if (ts - prev > 1000) {
219
+ this.logEvent({ message: 'download progress', pctComplete: pct, downloaded, downloadSpeed: speed });
220
+ this.progressLogTs[id] = ts;
221
+ }
222
+ observer.emit('progress', Number(pct));
223
+ }
224
+ };
225
+ return RouteDownloadService = _classThis;
226
+ })();
172
227
  exports.RouteDownloadService = RouteDownloadService;
228
+ const useRouteDownload = () => new RouteDownloadService();
229
+ exports.useRouteDownload = useRouteDownload;
@@ -44,6 +44,7 @@ const types_1 = require("../../base/types");
44
44
  const uuid_1 = require("uuid");
45
45
  const sleep_1 = require("../../utils/sleep");
46
46
  const devices_1 = require("../../devices");
47
+ const service_1 = require("../download/service");
47
48
  let RoutesPageService = (() => {
48
49
  let _classDecorators = [decorators_1.Singleton];
49
50
  let _classDescriptor;
@@ -54,6 +55,7 @@ let RoutesPageService = (() => {
54
55
  let _getRouteList_decorators;
55
56
  let _getDevicePairing_decorators;
56
57
  let _getUserSettings_decorators;
58
+ let _getRouteDownload_decorators;
57
59
  var RoutesPageService = class extends _classSuper {
58
60
  static { _classThis = this; }
59
61
  static {
@@ -61,9 +63,11 @@ let RoutesPageService = (() => {
61
63
  _getRouteList_decorators = [decorators_1.Injectable];
62
64
  _getDevicePairing_decorators = [decorators_1.Injectable];
63
65
  _getUserSettings_decorators = [decorators_1.Injectable];
66
+ _getRouteDownload_decorators = [decorators_1.Injectable];
64
67
  __esDecorate(this, null, _getRouteList_decorators, { kind: "method", name: "getRouteList", static: false, private: false, access: { has: obj => "getRouteList" in obj, get: obj => obj.getRouteList }, metadata: _metadata }, null, _instanceExtraInitializers);
65
68
  __esDecorate(this, null, _getDevicePairing_decorators, { kind: "method", name: "getDevicePairing", static: false, private: false, access: { has: obj => "getDevicePairing" in obj, get: obj => obj.getDevicePairing }, metadata: _metadata }, null, _instanceExtraInitializers);
66
69
  __esDecorate(this, null, _getUserSettings_decorators, { kind: "method", name: "getUserSettings", static: false, private: false, access: { has: obj => "getUserSettings" in obj, get: obj => obj.getUserSettings }, metadata: _metadata }, null, _instanceExtraInitializers);
70
+ __esDecorate(this, null, _getRouteDownload_decorators, { kind: "method", name: "getRouteDownload", static: false, private: false, access: { has: obj => "getRouteDownload" in obj, get: obj => obj.getRouteDownload }, metadata: _metadata }, null, _instanceExtraInitializers);
67
71
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
68
72
  RoutesPageService = _classThis = _classDescriptor.value;
69
73
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -78,8 +82,12 @@ let RoutesPageService = (() => {
78
82
  showImportDialog = false;
79
83
  importObserver;
80
84
  importProps;
85
+ downloadCache;
86
+ downloadHandlers;
81
87
  constructor() {
82
88
  super('RoutesPage');
89
+ this.downloadCache = new Map();
90
+ this.downloadHandlers = new Map();
83
91
  }
84
92
  openPage() {
85
93
  try {
@@ -120,6 +128,8 @@ let RoutesPageService = (() => {
120
128
  try {
121
129
  gd_eventlog_1.EventLogger.setGlobalConfig('page', null);
122
130
  this.logEvent({ message: 'page closed', page: 'Routes' });
131
+ this.stopEventListener();
132
+ this.downloadCache.clear();
123
133
  super.closePage();
124
134
  }
125
135
  catch (err) {
@@ -153,7 +163,9 @@ let RoutesPageService = (() => {
153
163
  const filters = service.getFilters();
154
164
  if (loading) {
155
165
  return { loading, synchronizing: false, routes: [], displayType,
156
- filters, filterVisible, showImportDialog: false };
166
+ filters, filterVisible,
167
+ downloadRows: this.getDownloadDisplayProps(),
168
+ showImportDialog: false };
157
169
  }
158
170
  else {
159
171
  const showImport = false;
@@ -163,7 +175,9 @@ let RoutesPageService = (() => {
163
175
  const detailRouteId = this.detailRouteId;
164
176
  return { loading, synchronizing, routes, displayType,
165
177
  filters, filterVisible, filterOptions,
166
- detailRouteId, showImportDialog: this.showImportDialog };
178
+ detailRouteId,
179
+ downloadRows: this.getDownloadDisplayProps(),
180
+ showImportDialog: this.showImportDialog };
167
181
  }
168
182
  }
169
183
  catch (err) {
@@ -269,6 +283,9 @@ let RoutesPageService = (() => {
269
283
  this.logError(err, 'getImportDisplayProps');
270
284
  }
271
285
  }
286
+ getDownloadDisplayProps() {
287
+ return Array.from(this.downloadCache.values());
288
+ }
272
289
  updatePageDisplay() {
273
290
  this.getPageObserver()?.emit('page-update');
274
291
  }
@@ -293,6 +310,8 @@ let RoutesPageService = (() => {
293
310
  observer.on('sync-start', this.syncStartHandler);
294
311
  observer.on('sync-done', this.syncStopHandler);
295
312
  observer.on('selected', this.updateSelectStateHandler);
313
+ this.subscribeAllActiveDownloads();
314
+ this.getRouteDownload().on('download-started', this.downloadStartedHandler);
296
315
  }
297
316
  stopEventListener(final) {
298
317
  const { observer } = this.serviceState;
@@ -305,7 +324,56 @@ let RoutesPageService = (() => {
305
324
  observer.off('sync-start', this.syncStartHandler);
306
325
  observer.off('sync-done', this.syncStopHandler);
307
326
  observer.off('selected', this.updateSelectStateHandler);
327
+ this.unsubscribeAllActiveDownloads();
328
+ this.getRouteDownload().off('download-started', this.downloadStartedHandler);
308
329
  }
330
+ subscribeToActiveDownload(route, observer) {
331
+ const routeId = route.description.id;
332
+ const title = route.description.title;
333
+ if (this.downloadHandlers.has(routeId))
334
+ return;
335
+ const onProgress = (pct) => {
336
+ this.downloadCache.set(routeId, { routeId, title, status: 'downloading', pct });
337
+ this.updatePageDisplay();
338
+ };
339
+ const onDone = () => {
340
+ this.downloadCache.set(routeId, { routeId, title, status: 'done' });
341
+ this.downloadHandlers.delete(routeId);
342
+ this.updatePageDisplay();
343
+ };
344
+ const onError = () => {
345
+ this.downloadCache.set(routeId, { routeId, title, status: 'failed' });
346
+ this.downloadHandlers.delete(routeId);
347
+ this.updatePageDisplay();
348
+ };
349
+ this.downloadHandlers.set(routeId, { onProgress, onDone, onError });
350
+ this.downloadCache.set(routeId, { routeId, title, status: 'downloading' });
351
+ observer.on('progress', onProgress);
352
+ observer.on('done', onDone);
353
+ observer.on('error', onError);
354
+ this.updatePageDisplay();
355
+ }
356
+ subscribeAllActiveDownloads() {
357
+ this.getRouteDownload().getActiveDownloads().forEach(({ route, observer }) => {
358
+ this.subscribeToActiveDownload(route, observer);
359
+ });
360
+ }
361
+ unsubscribeAllActiveDownloads() {
362
+ const active = this.getRouteDownload().getActiveDownloads();
363
+ for (const { route, observer } of active) {
364
+ const routeId = route.description.id;
365
+ const handlers = this.downloadHandlers.get(routeId);
366
+ if (handlers) {
367
+ observer.off('progress', handlers.onProgress);
368
+ observer.off('done', handlers.onDone);
369
+ observer.off('error', handlers.onError);
370
+ }
371
+ }
372
+ this.downloadHandlers.clear();
373
+ }
374
+ downloadStartedHandler = (route, observer) => {
375
+ this.subscribeToActiveDownload(route, observer);
376
+ };
309
377
  onSycncStart() {
310
378
  this.updatePageDisplay();
311
379
  }
@@ -357,6 +425,9 @@ let RoutesPageService = (() => {
357
425
  getUserSettings() {
358
426
  return (0, settings_1.useUserSettings)();
359
427
  }
428
+ getRouteDownload() {
429
+ return (0, service_1.useRouteDownload)();
430
+ }
360
431
  };
361
432
  return RoutesPageService = _classThis;
362
433
  })();
@@ -250,7 +250,6 @@ let ActivityRideService = (() => {
250
250
  }
251
251
  catch { }
252
252
  if (showLog) {
253
- console.log('# here', this.state);
254
253
  this.logEvent({ message: 'Dashboard update', items: info.map(i => `${i.title}:${i.data[0]?.value ?? ''}:${i.data[1]?.value ?? ''}${i.data[1]?.label ? '(' + i.data[1]?.label + ')' : ''}`).join('|') });
255
254
  }
256
255
  return info;
@@ -459,6 +458,7 @@ let ActivityRideService = (() => {
459
458
  this.saveObserver.emit(event, ...args);
460
459
  };
461
460
  const run = async () => {
461
+ await sleep(5);
462
462
  let cntCompleted = 0;
463
463
  let success = false;
464
464
  const localEmitter = new EventEmitter();