incyclist-services 1.6.7 → 1.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/activities/active-rides/service.js +14 -4
- package/lib/activities/base/convert/tcx/tcx.d.ts +7 -1
- package/lib/activities/base/convert/tcx/tcx.js +78 -2
- package/lib/i18n/units/converter.d.ts +16 -0
- package/lib/i18n/units/converter.js +180 -0
- package/lib/i18n/units/index.d.ts +2 -0
- package/lib/i18n/units/index.js +18 -0
- package/lib/i18n/units/types.d.ts +13 -0
- package/lib/routes/free-ride/service.js +2 -1
- package/lib/settings/bindings/index.d.ts +1 -0
- package/lib/settings/bindings/index.js +17 -0
- package/lib/settings/bindings/json.d.ts +15 -0
- package/lib/settings/bindings/json.js +118 -0
- package/lib/settings/bindings/types.d.ts +13 -0
- package/lib/settings/bindings/types.js +9 -0
- package/lib/settings/display/index.d.ts +1 -0
- package/lib/settings/display/index.js +17 -0
- package/lib/{ride/current → settings/display/user}/index.d.ts +1 -0
- package/lib/{ride/current → settings/display/user}/index.js +1 -0
- package/lib/settings/display/user/service.d.ts +23 -0
- package/lib/settings/display/user/service.js +167 -0
- package/lib/settings/display/user/types.d.ts +22 -0
- package/lib/settings/service/mock.d.ts +13 -0
- package/lib/settings/service/mock.js +50 -0
- package/lib/settings/service/service.d.ts +48 -0
- package/lib/settings/service/service.js +245 -0
- package/lib/video/VideoSyncHelper.js +9 -3
- package/lib/video/types.d.ts +1 -0
- package/package.json +2 -2
- package/lib/activities/active-rides/activities.d.ts +0 -0
- package/lib/activities/active-rides/activities.js +0 -0
- package/lib/activities/active-rides/index.js.map +0 -1
- package/lib/activities/active-rides/mq.js.map +0 -1
- package/lib/activities/active-rides/service.js.map +0 -1
- package/lib/activities/active-rides/sessions.js.map +0 -1
- package/lib/activities/active-rides/types.js.map +0 -1
- package/lib/activities/base/api/active-rides/api.js.map +0 -1
- package/lib/activities/base/api/active-rides/index.js.map +0 -1
- package/lib/activities/base/api/active-rides/types.js.map +0 -1
- package/lib/activities/base/api/consts.d.ts +0 -2
- package/lib/activities/base/api/consts.js +0 -6
- package/lib/activities/base/api/fitconvert/consts.js.map +0 -1
- package/lib/activities/base/api/fitconvert/fitconvert.js.map +0 -1
- package/lib/activities/base/api/fitconvert/index.js.map +0 -1
- package/lib/activities/base/api/fitconvert.d.ts +0 -8
- package/lib/activities/base/api/fitconvert.js +0 -57
- package/lib/activities/base/api/index.js.map +0 -1
- package/lib/activities/base/convert/converter.js.map +0 -1
- package/lib/activities/base/convert/factory.js.map +0 -1
- package/lib/activities/base/convert/fit/index.js.map +0 -1
- package/lib/activities/base/convert/fit/remote-fit.js.map +0 -1
- package/lib/activities/base/convert/index.js.map +0 -1
- package/lib/activities/base/convert/tcx/index.js.map +0 -1
- package/lib/activities/base/convert/tcx/tcx.js.map +0 -1
- package/lib/activities/base/convert/types.js.map +0 -1
- package/lib/activities/base/index.js.map +0 -1
- package/lib/activities/base/model/index.js.map +0 -1
- package/lib/activities/base/repo/db.js.map +0 -1
- package/lib/activities/base/repo/index.js.map +0 -1
- package/lib/activities/base/repo/migration/factory.js.map +0 -1
- package/lib/activities/base/repo/migration/types.js.map +0 -1
- package/lib/activities/base/repo/migration/v0.js.map +0 -1
- package/lib/activities/base/repo/migration/v1.js.map +0 -1
- package/lib/activities/base/repo/migration/v2.js.map +0 -1
- package/lib/activities/base/repo/migration/v3.js.map +0 -1
- package/lib/activities/base/repo/types.js.map +0 -1
- package/lib/activities/base/utils/activity.js.map +0 -1
- package/lib/activities/base/utils/helpers.js.map +0 -1
- package/lib/activities/base/utils/index.js.map +0 -1
- package/lib/activities/index.js.map +0 -1
- package/lib/activities/list/index.js.map +0 -1
- package/lib/activities/list/service.js.map +0 -1
- package/lib/activities/list/types.js.map +0 -1
- package/lib/activities/ride/duration.js.map +0 -1
- package/lib/activities/ride/index.js.map +0 -1
- package/lib/activities/ride/service.js.map +0 -1
- package/lib/activities/ride/stats.js.map +0 -1
- package/lib/activities/ride/types.js.map +0 -1
- package/lib/activities/upload/factory.js.map +0 -1
- package/lib/activities/upload/index.js.map +0 -1
- package/lib/activities/upload/intervals.js.map +0 -1
- package/lib/activities/upload/strava copy.d.ts +0 -18
- package/lib/activities/upload/strava copy.js +0 -170
- package/lib/activities/upload/strava.js.map +0 -1
- package/lib/activities/upload/types.js.map +0 -1
- package/lib/activities/upload/velohero.js.map +0 -1
- package/lib/api/appInfo/index.js.map +0 -1
- package/lib/api/bindings/index.js.map +0 -1
- package/lib/api/bindings/secret/index.js.map +0 -1
- package/lib/api/download/index.js.map +0 -1
- package/lib/api/form/index.js.map +0 -1
- package/lib/api/fs/index.js.map +0 -1
- package/lib/api/index.js.map +0 -1
- package/lib/api/mq/index.js.map +0 -1
- package/lib/api/overpass/index.d.ts +0 -13
- package/lib/api/overpass/index.js +0 -129
- package/lib/api/overpass/index.js.map +0 -1
- package/lib/api/path/index.js.map +0 -1
- package/lib/api/repository/index.js.map +0 -1
- package/lib/api/repository/json/index.js.map +0 -1
- package/lib/api/repository/types.js.map +0 -1
- package/lib/api/rest/RestApiClient.js.map +0 -1
- package/lib/api/rest/api.js.map +0 -1
- package/lib/api/rest/incyclist.js.map +0 -1
- package/lib/api/rest/index.js.map +0 -1
- package/lib/api/rest/types.js.map +0 -1
- package/lib/api/ui/index.js.map +0 -1
- package/lib/api/video/index.js.map +0 -1
- package/lib/apps/base/api/base.js.map +0 -1
- package/lib/apps/base/api/index.js.map +0 -1
- package/lib/apps/base/api/intervals/api.js.map +0 -1
- package/lib/apps/base/api/intervals/index.js.map +0 -1
- package/lib/apps/base/api/intervals/types.js.map +0 -1
- package/lib/apps/base/api/komoot/api.js.map +0 -1
- package/lib/apps/base/api/komoot/index.js.map +0 -1
- package/lib/apps/base/api/komoot/types.js.map +0 -1
- package/lib/apps/base/api/overpass/index.d.ts +0 -13
- package/lib/apps/base/api/overpass/index.js +0 -129
- package/lib/apps/base/api/strava/api.js.map +0 -1
- package/lib/apps/base/api/strava/index.js.map +0 -1
- package/lib/apps/base/api/strava/types.js.map +0 -1
- package/lib/apps/base/api/velohero/api.js.map +0 -1
- package/lib/apps/base/api/velohero/index.js.map +0 -1
- package/lib/apps/base/api/velohero/types.js.map +0 -1
- package/lib/apps/base/app/index.js.map +0 -1
- package/lib/apps/base/index.js.map +0 -1
- package/lib/apps/base/types.js.map +0 -1
- package/lib/apps/index.js.map +0 -1
- package/lib/apps/intervals/IntervalsAppConnection.js.map +0 -1
- package/lib/apps/intervals/StravaAppConnection.d.ts +0 -28
- package/lib/apps/intervals/StravaAppConnection.js +0 -211
- package/lib/apps/intervals/index.js.map +0 -1
- package/lib/apps/intervals/types.js.map +0 -1
- package/lib/apps/komoot/KomootAppConnection.js.map +0 -1
- package/lib/apps/komoot/index.js.map +0 -1
- package/lib/apps/komoot/types.js.map +0 -1
- package/lib/apps/service.js.map +0 -1
- package/lib/apps/strava/StravaAppConnection.js.map +0 -1
- package/lib/apps/strava/index.js.map +0 -1
- package/lib/apps/strava/types.js.map +0 -1
- package/lib/apps/types.js.map +0 -1
- package/lib/apps/velohero/VeloHeroAppConnection.js.map +0 -1
- package/lib/apps/velohero/index.js.map +0 -1
- package/lib/apps/velohero/types.js.map +0 -1
- package/lib/autoupdate/api.js.map +0 -1
- package/lib/autoupdate/autoupdate.js.map +0 -1
- package/lib/autoupdate/index.js.map +0 -1
- package/lib/avatars/index.js.map +0 -1
- package/lib/avatars/service.js.map +0 -1
- package/lib/avatars/types.js.map +0 -1
- package/lib/base/cardlist/index.js.map +0 -1
- package/lib/base/cardlist/types.js.map +0 -1
- package/lib/base/decorators/Injection.js.map +0 -1
- package/lib/base/decorators/index.js.map +0 -1
- package/lib/base/service.js.map +0 -1
- package/lib/base/types/index.js.map +0 -1
- package/lib/base/types/lists.js.map +0 -1
- package/lib/base/types/observer.js.map +0 -1
- package/lib/base/types/singleton.js.map +0 -1
- package/lib/coaches/coach.js.map +0 -1
- package/lib/coaches/index.js.map +0 -1
- package/lib/coaches/service.js.map +0 -1
- package/lib/coaches/types.js.map +0 -1
- package/lib/devices/access/index.js.map +0 -1
- package/lib/devices/access/model.js.map +0 -1
- package/lib/devices/access/service.js.map +0 -1
- package/lib/devices/configuration/index.js.map +0 -1
- package/lib/devices/configuration/model/app/index.js.map +0 -1
- package/lib/devices/configuration/model/index.js.map +0 -1
- package/lib/devices/configuration/model/repository/index.js.map +0 -1
- package/lib/devices/configuration/model/repository/legacy.js.map +0 -1
- package/lib/devices/configuration/model/service/index.js.map +0 -1
- package/lib/devices/configuration/service.js.map +0 -1
- package/lib/devices/index.js.map +0 -1
- package/lib/devices/pairing/index.js.map +0 -1
- package/lib/devices/pairing/model.js.map +0 -1
- package/lib/devices/pairing/service.js.map +0 -1
- package/lib/devices/ride/index.js.map +0 -1
- package/lib/devices/ride/model.js.map +0 -1
- package/lib/devices/ride/service.js.map +0 -1
- package/lib/free-ride/service.d.ts +0 -35
- package/lib/free-ride/service.js +0 -231
- package/lib/i18n/countries/index.js.map +0 -1
- package/lib/i18n/countries/model.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/maps/ways/consts.d.ts +0 -11
- package/lib/maps/ways/consts.js +0 -11
- package/lib/maps/ways/options.d.ts +0 -20
- package/lib/maps/ways/options.js +0 -294
- package/lib/maps/ways/service.d.ts +0 -43
- package/lib/maps/ways/service.js +0 -328
- package/lib/maps/ways/types.d.ts +0 -102
- package/lib/maps/ways/utils.d.ts +0 -62
- package/lib/maps/ways/utils.js +0 -725
- package/lib/monitoring/index.js.map +0 -1
- package/lib/monitoring/online/index.js.map +0 -1
- package/lib/monitoring/online/service.js.map +0 -1
- package/lib/ride/base/base.js.map +0 -1
- package/lib/ride/base/display.d.ts +0 -27
- package/lib/ride/base/display.js +0 -113
- package/lib/ride/base/index.js.map +0 -1
- package/lib/ride/base/types.js.map +0 -1
- package/lib/ride/current/index.js.map +0 -1
- package/lib/ride/current/service.d.ts +0 -110
- package/lib/ride/current/service.js +0 -854
- package/lib/ride/current/service.js.map +0 -1
- package/lib/ride/index.js.map +0 -1
- package/lib/ride/route/FollowRouteDisplayService.js.map +0 -1
- package/lib/ride/route/FreeRideDisplayService.js.map +0 -1
- package/lib/ride/route/GpxDisplayService.js.map +0 -1
- package/lib/ride/route/RouteDisplayService.js.map +0 -1
- package/lib/ride/route/VideoDisplayService.d.ts +0 -3
- package/lib/ride/route/VideoDisplayService.js +0 -7
- package/lib/ride/route/VideoDisplayService.js.map +0 -1
- package/lib/ride/types.js.map +0 -1
- package/lib/ride/workout/WorkoutDisplayService.js.map +0 -1
- package/lib/routes/base/api/consts.js.map +0 -1
- package/lib/routes/base/api/index.js.map +0 -1
- package/lib/routes/base/api/types.js.map +0 -1
- package/lib/routes/base/model/route.js.map +0 -1
- package/lib/routes/base/model/tacx.js.map +0 -1
- package/lib/routes/base/parsers/bikelab.js.map +0 -1
- package/lib/routes/base/parsers/epm.js.map +0 -1
- package/lib/routes/base/parsers/factory.js.map +0 -1
- package/lib/routes/base/parsers/geojson.d.ts +0 -16
- package/lib/routes/base/parsers/gpx.js.map +0 -1
- package/lib/routes/base/parsers/incyclist.js.map +0 -1
- package/lib/routes/base/parsers/index.js.map +0 -1
- package/lib/routes/base/parsers/kwt.js.map +0 -1
- package/lib/routes/base/parsers/multixml.js.map +0 -1
- package/lib/routes/base/parsers/tacx/TacxParser.js.map +0 -1
- package/lib/routes/base/parsers/tacx/TacxReader.js.map +0 -1
- package/lib/routes/base/parsers/tacx/pgmf.js.map +0 -1
- package/lib/routes/base/parsers/tacx/rlv.js.map +0 -1
- package/lib/routes/base/parsers/types.js.map +0 -1
- package/lib/routes/base/parsers/utils.js.map +0 -1
- package/lib/routes/base/parsers/xml.js.map +0 -1
- package/lib/routes/base/types/index.js.map +0 -1
- package/lib/routes/base/utils/index.js.map +0 -1
- package/lib/routes/base/utils/localization.js.map +0 -1
- package/lib/routes/base/utils/route.js.map +0 -1
- package/lib/routes/download/service.js.map +0 -1
- package/lib/routes/download/types.js.map +0 -1
- package/lib/routes/index.js.map +0 -1
- package/lib/routes/list/RouteListObserver.js.map +0 -1
- package/lib/routes/list/cards/ActiveImportCard.js.map +0 -1
- package/lib/routes/list/cards/FreeRideCard.js.map +0 -1
- package/lib/routes/list/cards/RouteCard.js.map +0 -1
- package/lib/routes/list/cards/RouteImportCard.js.map +0 -1
- package/lib/routes/list/cards/base.js.map +0 -1
- package/lib/routes/list/cards/types.js.map +0 -1
- package/lib/routes/list/index.js.map +0 -1
- package/lib/routes/list/lists/alternatives.js.map +0 -1
- package/lib/routes/list/lists/myroutes.js.map +0 -1
- package/lib/routes/list/lists/selected.js.map +0 -1
- package/lib/routes/list/loaders/DBLoader.js.map +0 -1
- package/lib/routes/list/loaders/LegacyDB.js.map +0 -1
- package/lib/routes/list/loaders/StravaActivityLoader.js.map +0 -1
- package/lib/routes/list/loaders/api.js.map +0 -1
- package/lib/routes/list/loaders/db.js.map +0 -1
- package/lib/routes/list/loaders/types.js.map +0 -1
- package/lib/routes/list/service.js.map +0 -1
- package/lib/routes/list/types.js.map +0 -1
- package/lib/routes/list/utils.js.map +0 -1
- package/lib/routes/sync/factory.js.map +0 -1
- package/lib/routes/sync/index.js.map +0 -1
- package/lib/routes/sync/komoot/provider.js.map +0 -1
- package/lib/routes/sync/types.js.map +0 -1
- package/lib/settings/index.js.map +0 -1
- package/lib/settings/user/bindings/index.js.map +0 -1
- package/lib/settings/user/bindings/json.js.map +0 -1
- package/lib/settings/user/bindings/types.js.map +0 -1
- package/lib/settings/user/mock.js.map +0 -1
- package/lib/settings/user/service.js.map +0 -1
- package/lib/utils/calc.js.map +0 -1
- package/lib/utils/clone.js.map +0 -1
- package/lib/utils/fileinfo.js.map +0 -1
- package/lib/utils/formatting.js.map +0 -1
- package/lib/utils/geo.js.map +0 -1
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/logging.js.map +0 -1
- package/lib/utils/math.js.map +0 -1
- package/lib/utils/merge.js.map +0 -1
- package/lib/utils/nextTick.js.map +0 -1
- package/lib/utils/sleep.js.map +0 -1
- package/lib/utils/time.js.map +0 -1
- package/lib/utils/valid.js.map +0 -1
- package/lib/utils/vector.js.map +0 -1
- package/lib/utils/xml.js.map +0 -1
- package/lib/video/ConvertSession.d.ts +0 -5
- package/lib/video/ConvertSession.js +0 -62
- package/lib/workouts/base/api/consts.js.map +0 -1
- package/lib/workouts/base/api/index.js.map +0 -1
- package/lib/workouts/base/model/Segment.js.map +0 -1
- package/lib/workouts/base/model/Step.js.map +0 -1
- package/lib/workouts/base/model/Workout.js.map +0 -1
- package/lib/workouts/base/model/index.js.map +0 -1
- package/lib/workouts/base/model/types.js.map +0 -1
- package/lib/workouts/base/parsers/Json.d.ts +0 -12
- package/lib/workouts/base/parsers/Json.js +0 -70
- package/lib/workouts/base/parsers/Json.js.map +0 -1
- package/lib/workouts/base/parsers/factory.js.map +0 -1
- package/lib/workouts/base/parsers/index.js.map +0 -1
- package/lib/workouts/base/parsers/types.js.map +0 -1
- package/lib/workouts/base/parsers/zwo.d.ts +0 -37
- package/lib/workouts/base/parsers/zwo.js +0 -265
- package/lib/workouts/base/parsers/zwo.js.map +0 -1
- package/lib/workouts/index.js.map +0 -1
- package/lib/workouts/list/cards/ActiveImportCard.js.map +0 -1
- package/lib/workouts/list/cards/WorkoutCard.js.map +0 -1
- package/lib/workouts/list/cards/WorkoutCreateCard.js.map +0 -1
- package/lib/workouts/list/cards/WorkoutImportCard.js.map +0 -1
- package/lib/workouts/list/cards/base.js.map +0 -1
- package/lib/workouts/list/cards/index.js.map +0 -1
- package/lib/workouts/list/cards/types.js.map +0 -1
- package/lib/workouts/list/index.js.map +0 -1
- package/lib/workouts/list/loaders/api.js.map +0 -1
- package/lib/workouts/list/loaders/db.js.map +0 -1
- package/lib/workouts/list/loaders/loader.js.map +0 -1
- package/lib/workouts/list/service.js.map +0 -1
- package/lib/workouts/list/types.js.map +0 -1
- package/lib/workouts/ride/index.js.map +0 -1
- package/lib/workouts/ride/service.js.map +0 -1
- package/lib/workouts/ride/types.js.map +0 -1
- /package/lib/{maps/ways → i18n/units}/types.js +0 -0
- /package/lib/{routes/base/parsers/geojson.js → settings/display/user/types.js} +0 -0
- /package/lib/{free-ride → settings/service}/index.d.ts +0 -0
- /package/lib/{free-ride → settings/service}/index.js +0 -0
|
@@ -94,6 +94,7 @@ let ActiveRidesService = (() => {
|
|
|
94
94
|
}
|
|
95
95
|
init(session, maxLength = 10) {
|
|
96
96
|
this.maxLength = maxLength;
|
|
97
|
+
this.logEvent({ message: 'init active rides list', session });
|
|
97
98
|
try {
|
|
98
99
|
if (this.observer) {
|
|
99
100
|
this.observer.stop({ immediately: true });
|
|
@@ -545,6 +546,7 @@ let ActiveRidesService = (() => {
|
|
|
545
546
|
}
|
|
546
547
|
onDisconnect() {
|
|
547
548
|
this.getMessageQueue().onDisconnect();
|
|
549
|
+
this.isSubscribed = false;
|
|
548
550
|
}
|
|
549
551
|
onConnect(props) {
|
|
550
552
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -643,7 +645,12 @@ let ActiveRidesService = (() => {
|
|
|
643
645
|
const items = yield this.getApi().getBySessionId(sessionId);
|
|
644
646
|
if (!items.length)
|
|
645
647
|
return;
|
|
646
|
-
|
|
648
|
+
let item = items[0];
|
|
649
|
+
if (item.sessionId !== sessionId) {
|
|
650
|
+
item = items.find(i => i.sessionId === sessionId);
|
|
651
|
+
if (!item)
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
647
654
|
const others = (_a = this.others) !== null && _a !== void 0 ? _a : [];
|
|
648
655
|
const localItem = others.find(e => e.sessionId === sessionId);
|
|
649
656
|
if (localItem) {
|
|
@@ -666,7 +673,7 @@ let ActiveRidesService = (() => {
|
|
|
666
673
|
}
|
|
667
674
|
onActivityUpdateEvent(session, payload) {
|
|
668
675
|
return __awaiter(this, void 0, void 0, function* () {
|
|
669
|
-
var _a, _b, _c, _d, _e, _f;
|
|
676
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
670
677
|
try {
|
|
671
678
|
if (session === this.session)
|
|
672
679
|
return;
|
|
@@ -696,7 +703,9 @@ let ActiveRidesService = (() => {
|
|
|
696
703
|
currentSpeed: payload.speed,
|
|
697
704
|
currentLap: payload.lap
|
|
698
705
|
};
|
|
699
|
-
|
|
706
|
+
if (!existing) {
|
|
707
|
+
this.addActiveRide(entry);
|
|
708
|
+
}
|
|
700
709
|
}
|
|
701
710
|
if (prevActive === 0) {
|
|
702
711
|
this.isStarted = true;
|
|
@@ -704,7 +713,8 @@ let ActiveRidesService = (() => {
|
|
|
704
713
|
}
|
|
705
714
|
else {
|
|
706
715
|
this.isStarted = true;
|
|
707
|
-
this.logEvent({ message: 'group ride user joined', active: this.others.length + 1, activityId: (_e = this.activity) === null || _e === void 0 ? void 0 : _e.id, route: (_f = this.activity.route) === null || _f === void 0 ? void 0 : _f.title, routeHash: this.getRouteHash()
|
|
716
|
+
this.logEvent({ message: 'group ride user joined', active: this.others.length + 1, activityId: (_e = this.activity) === null || _e === void 0 ? void 0 : _e.id, route: (_f = this.activity.route) === null || _f === void 0 ? void 0 : _f.title, routeHash: this.getRouteHash(),
|
|
717
|
+
remote: { uuid: (_g = item.user) === null || _g === void 0 ? void 0 : _g.id, session: item.sessionId } });
|
|
708
718
|
}
|
|
709
719
|
}
|
|
710
720
|
}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { EventLogger } from 'gd-eventlog';
|
|
2
|
-
import { TrackPoint, ActivityLap } from 'tcx-builder';
|
|
2
|
+
import { TrackPoint, ActivityLap, AbstractSource } from 'tcx-builder';
|
|
3
3
|
import { IActivityConverter } from '../types';
|
|
4
4
|
import { ActivityDetails } from '../../model';
|
|
5
5
|
import { TcxLapMarker } from './types';
|
|
6
6
|
import { Step } from '../../../../workouts';
|
|
7
|
+
export declare class IncyclistAttribution extends AbstractSource {
|
|
8
|
+
toXml(): string;
|
|
9
|
+
constructor();
|
|
10
|
+
protected getAppInfo(): import("../../../../api/appInfo").IAppInfo;
|
|
11
|
+
protected getBindings(): import("../../../../api").IncyclistBindings;
|
|
12
|
+
}
|
|
7
13
|
export declare class TcxConverter implements IActivityConverter {
|
|
8
14
|
protected logger: EventLogger;
|
|
9
15
|
constructor();
|
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
9
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
10
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
11
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
12
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
13
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
14
|
+
var _, done = false;
|
|
15
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
16
|
+
var context = {};
|
|
17
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
18
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
19
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
20
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
21
|
+
if (kind === "accessor") {
|
|
22
|
+
if (result === void 0) continue;
|
|
23
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
24
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
25
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
26
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
27
|
+
}
|
|
28
|
+
else if (_ = accept(result)) {
|
|
29
|
+
if (kind === "field") initializers.unshift(_);
|
|
30
|
+
else descriptor[key] = _;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
34
|
+
done = true;
|
|
35
|
+
};
|
|
2
36
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
37
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
38
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -9,10 +43,51 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
43
|
});
|
|
10
44
|
};
|
|
11
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.TcxConverter = void 0;
|
|
46
|
+
exports.TcxConverter = exports.IncyclistAttribution = void 0;
|
|
13
47
|
const gd_eventlog_1 = require("gd-eventlog");
|
|
14
48
|
const tcx_builder_1 = require("tcx-builder");
|
|
15
49
|
const ride_1 = require("../../../ride");
|
|
50
|
+
const api_1 = require("../../../../api");
|
|
51
|
+
const decorators_1 = require("../../../../base/decorators");
|
|
52
|
+
let IncyclistAttribution = (() => {
|
|
53
|
+
var _a;
|
|
54
|
+
let _classSuper = tcx_builder_1.AbstractSource;
|
|
55
|
+
let _instanceExtraInitializers = [];
|
|
56
|
+
let _getBindings_decorators;
|
|
57
|
+
return _a = class IncyclistAttribution extends _classSuper {
|
|
58
|
+
toXml() {
|
|
59
|
+
const appInfo = this.getAppInfo();
|
|
60
|
+
const channel = appInfo.getChannel();
|
|
61
|
+
const os = appInfo.getOS().platform;
|
|
62
|
+
let xmlElement = '';
|
|
63
|
+
xmlElement += tcx_builder_1.BaseObject.buildXmlNode('Name', 'Incyclist');
|
|
64
|
+
xmlElement += tcx_builder_1.BaseObject.buildXmlNode('Channel', channel);
|
|
65
|
+
xmlElement += tcx_builder_1.BaseObject.buildXmlNode('OS', os);
|
|
66
|
+
return xmlElement;
|
|
67
|
+
}
|
|
68
|
+
constructor() {
|
|
69
|
+
const attr = new tcx_builder_1.AbstractSourceAttributes('Application_t');
|
|
70
|
+
super(attr, 'Incyclist');
|
|
71
|
+
__runInitializers(this, _instanceExtraInitializers);
|
|
72
|
+
}
|
|
73
|
+
getAppInfo() {
|
|
74
|
+
const appInfo = this.getBindings().appInfo;
|
|
75
|
+
return appInfo;
|
|
76
|
+
}
|
|
77
|
+
getBindings() {
|
|
78
|
+
return (0, api_1.getBindings)();
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
(() => {
|
|
82
|
+
var _b;
|
|
83
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_b = _classSuper[Symbol.metadata]) !== null && _b !== void 0 ? _b : null) : void 0;
|
|
84
|
+
_getBindings_decorators = [decorators_1.Injectable];
|
|
85
|
+
__esDecorate(_a, null, _getBindings_decorators, { kind: "method", name: "getBindings", static: false, private: false, access: { has: obj => "getBindings" in obj, get: obj => obj.getBindings }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
86
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
87
|
+
})(),
|
|
88
|
+
_a;
|
|
89
|
+
})();
|
|
90
|
+
exports.IncyclistAttribution = IncyclistAttribution;
|
|
16
91
|
class TcxConverter {
|
|
17
92
|
constructor() {
|
|
18
93
|
this.logger = new gd_eventlog_1.EventLogger('TcxExporter');
|
|
@@ -24,7 +99,8 @@ class TcxConverter {
|
|
|
24
99
|
const startTime = new Date(activity.startTime);
|
|
25
100
|
const trackPoints = this.creatTrackPoints(activity, startTime);
|
|
26
101
|
const laps = this.createLaps(startTime, activity, trackPoints);
|
|
27
|
-
const
|
|
102
|
+
const creator = new IncyclistAttribution();
|
|
103
|
+
const tcxActivity = new tcx_builder_1.Activity('Biking', { Id: startTime, Notes: 'Incyclist Ride', Laps: laps, Creator: creator });
|
|
28
104
|
const activityList = new tcx_builder_1.ActivityList({ activity: [tcxActivity] });
|
|
29
105
|
const tcxObj = new tcx_builder_1.TrainingCenterDatabase({ activities: activityList });
|
|
30
106
|
const xml = tcxObj.toXml();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IncyclistService } from "../../base/service";
|
|
2
|
+
import { UnitConversionRules, ConvertProps, Unit, Dimension, UnitType } from "./types";
|
|
3
|
+
export declare class UnitConverterService extends IncyclistService {
|
|
4
|
+
constructor();
|
|
5
|
+
protected readonly metric: Record<Dimension, Unit>;
|
|
6
|
+
protected readonly imperial: Record<Dimension, Unit>;
|
|
7
|
+
protected readonly appDefault: Record<Dimension, Unit>;
|
|
8
|
+
protected readonly formulas: UnitConversionRules;
|
|
9
|
+
convert(value: number, dimension: Dimension, props?: ConvertProps): number;
|
|
10
|
+
getUnit(dimension: Dimension): Unit;
|
|
11
|
+
getUnits(): UnitType;
|
|
12
|
+
getUnitConversionShortcuts: () => any[];
|
|
13
|
+
protected getUserSettings(): import("../../settings/service/service").UserSettingsService;
|
|
14
|
+
}
|
|
15
|
+
export declare const useUnitConverter: () => UnitConverterService;
|
|
16
|
+
export declare const getUnitConversionShortcuts: () => any[];
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
9
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
10
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
11
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
12
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
13
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
14
|
+
var _, done = false;
|
|
15
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
16
|
+
var context = {};
|
|
17
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
18
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
19
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
20
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
21
|
+
if (kind === "accessor") {
|
|
22
|
+
if (result === void 0) continue;
|
|
23
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
24
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
25
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
26
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
27
|
+
}
|
|
28
|
+
else if (_ = accept(result)) {
|
|
29
|
+
if (kind === "field") initializers.unshift(_);
|
|
30
|
+
else descriptor[key] = _;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
34
|
+
done = true;
|
|
35
|
+
};
|
|
36
|
+
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
37
|
+
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
38
|
+
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.getUnitConversionShortcuts = exports.useUnitConverter = exports.UnitConverterService = void 0;
|
|
42
|
+
const decorators_1 = require("../../base/decorators");
|
|
43
|
+
const service_1 = require("../../base/service");
|
|
44
|
+
const service_2 = require("../../settings/service/service");
|
|
45
|
+
let UnitConverterService = (() => {
|
|
46
|
+
let _classDecorators = [decorators_1.Singleton];
|
|
47
|
+
let _classDescriptor;
|
|
48
|
+
let _classExtraInitializers = [];
|
|
49
|
+
let _classThis;
|
|
50
|
+
let _classSuper = service_1.IncyclistService;
|
|
51
|
+
let _instanceExtraInitializers = [];
|
|
52
|
+
let _getUserSettings_decorators;
|
|
53
|
+
var UnitConverterService = _classThis = class extends _classSuper {
|
|
54
|
+
constructor() {
|
|
55
|
+
super('UnitConverter');
|
|
56
|
+
this.metric = (__runInitializers(this, _instanceExtraInitializers), {
|
|
57
|
+
distance: 'km',
|
|
58
|
+
elevation: 'm',
|
|
59
|
+
speed: 'km/h',
|
|
60
|
+
weight: 'kg'
|
|
61
|
+
});
|
|
62
|
+
this.imperial = {
|
|
63
|
+
distance: 'mi',
|
|
64
|
+
elevation: 'ft',
|
|
65
|
+
speed: 'mph',
|
|
66
|
+
weight: 'lbs'
|
|
67
|
+
};
|
|
68
|
+
this.appDefault = this.metric;
|
|
69
|
+
this.formulas = {
|
|
70
|
+
distance: {
|
|
71
|
+
unit: 'm',
|
|
72
|
+
formulas: {
|
|
73
|
+
'km': 1 / 1000,
|
|
74
|
+
'mi': 1 / 1609.344,
|
|
75
|
+
'yd': 1.0936132983,
|
|
76
|
+
'ft': 3.280839895
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
elevation: {
|
|
80
|
+
unit: 'm',
|
|
81
|
+
formulas: {
|
|
82
|
+
'km': 1 / 1000,
|
|
83
|
+
'mi': 1 / 1609.344,
|
|
84
|
+
'yd': 1.0936132983,
|
|
85
|
+
'ft': 3.280839895
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
speed: {
|
|
89
|
+
unit: 'km/h',
|
|
90
|
+
formulas: {
|
|
91
|
+
'mph': 0.621371,
|
|
92
|
+
'm/s': 1 / 3.6
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
weight: {
|
|
96
|
+
unit: 'kg',
|
|
97
|
+
formulas: {
|
|
98
|
+
'lbs': 2.20462,
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
this.getUnitConversionShortcuts = () => {
|
|
103
|
+
const C = this.convert.bind(this);
|
|
104
|
+
const U = this.getUnit.bind(this);
|
|
105
|
+
return [C, U];
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
convert(value, dimension, props) {
|
|
109
|
+
var _a, _b;
|
|
110
|
+
if (value === undefined || value === null || Number.isNaN(value))
|
|
111
|
+
return undefined;
|
|
112
|
+
try {
|
|
113
|
+
const units = this.getUnits() === 'metric' ? this.metric : this.imperial;
|
|
114
|
+
const from = (_a = props === null || props === void 0 ? void 0 : props.from) !== null && _a !== void 0 ? _a : this.formulas[dimension].unit;
|
|
115
|
+
const to = (_b = props === null || props === void 0 ? void 0 : props.to) !== null && _b !== void 0 ? _b : units[dimension];
|
|
116
|
+
const round = (val, digits) => {
|
|
117
|
+
const factor = Math.pow(10, digits);
|
|
118
|
+
return Math.round(val * factor) / factor;
|
|
119
|
+
};
|
|
120
|
+
if (from === to) {
|
|
121
|
+
return (props === null || props === void 0 ? void 0 : props.digits) === undefined ? value : round(value, props.digits);
|
|
122
|
+
}
|
|
123
|
+
let res = value;
|
|
124
|
+
if (from !== this.formulas[dimension].unit) {
|
|
125
|
+
const factor = this.formulas[dimension].formulas[from];
|
|
126
|
+
res = res / factor;
|
|
127
|
+
}
|
|
128
|
+
if (to !== this.formulas[dimension].unit) {
|
|
129
|
+
const factor = this.formulas[dimension].formulas[to];
|
|
130
|
+
res = res * factor;
|
|
131
|
+
}
|
|
132
|
+
return (props === null || props === void 0 ? void 0 : props.digits) === undefined ? res : round(res, props.digits);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const p = props !== null && props !== void 0 ? props : {};
|
|
136
|
+
this.logError(err, 'convert', { convertArgs: Object.assign({ value, dimension }, p) });
|
|
137
|
+
return value;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
getUnit(dimension) {
|
|
141
|
+
try {
|
|
142
|
+
const units = this.getUnits() === 'metric' ? this.metric : this.imperial;
|
|
143
|
+
return units[dimension];
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
this.logError(err, 'getUnit');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
getUnits() {
|
|
151
|
+
const type = this.getUserSettings().getValue('preferences.units', 'metric');
|
|
152
|
+
return type;
|
|
153
|
+
}
|
|
154
|
+
getUserSettings() {
|
|
155
|
+
return (0, service_2.useUserSettings)();
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
__setFunctionName(_classThis, "UnitConverterService");
|
|
159
|
+
(() => {
|
|
160
|
+
var _a;
|
|
161
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_a = _classSuper[Symbol.metadata]) !== null && _a !== void 0 ? _a : null) : void 0;
|
|
162
|
+
_getUserSettings_decorators = [decorators_1.Injectable];
|
|
163
|
+
__esDecorate(_classThis, 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);
|
|
164
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
165
|
+
UnitConverterService = _classThis = _classDescriptor.value;
|
|
166
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
167
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
168
|
+
})();
|
|
169
|
+
return UnitConverterService = _classThis;
|
|
170
|
+
})();
|
|
171
|
+
exports.UnitConverterService = UnitConverterService;
|
|
172
|
+
const useUnitConverter = () => new UnitConverterService();
|
|
173
|
+
exports.useUnitConverter = useUnitConverter;
|
|
174
|
+
const getUnitConversionShortcuts = () => {
|
|
175
|
+
const c = (0, exports.useUnitConverter)();
|
|
176
|
+
const C = (0, exports.useUnitConverter)().convert.bind(c);
|
|
177
|
+
const U = (0, exports.useUnitConverter)().getUnit.bind(c);
|
|
178
|
+
return [C, U];
|
|
179
|
+
};
|
|
180
|
+
exports.getUnitConversionShortcuts = getUnitConversionShortcuts;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./converter"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type UnitType = 'metric' | 'imperial';
|
|
2
|
+
export type Dimension = 'distance' | 'elevation' | 'speed' | 'weight';
|
|
3
|
+
export type Unit = 'm' | 'km' | 'ft' | 'mi' | 'yd' | 'km/h' | 'mph' | 'm/s' | 'kg' | 'lbs';
|
|
4
|
+
export type ConvertProps = {
|
|
5
|
+
from?: Unit;
|
|
6
|
+
to?: Unit;
|
|
7
|
+
digits?: number;
|
|
8
|
+
};
|
|
9
|
+
export type FormulaDefinition = {
|
|
10
|
+
unit: Unit;
|
|
11
|
+
formulas: Record<string, number>;
|
|
12
|
+
};
|
|
13
|
+
export type UnitConversionRules = Record<Dimension, FormulaDefinition>;
|
|
@@ -101,8 +101,9 @@ let FreeRideService = (() => {
|
|
|
101
101
|
var _a;
|
|
102
102
|
return (_a = opts === null || opts === void 0 ? void 0 : opts.map(o => this.buildId(o)).join('|')) !== null && _a !== void 0 ? _a : 'none';
|
|
103
103
|
};
|
|
104
|
-
let loadAsync =
|
|
104
|
+
let loadAsync = true;
|
|
105
105
|
if (((_a = from === null || from === void 0 ? void 0 : from.options) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
106
|
+
loadAsync = false;
|
|
106
107
|
this.options = this.evaluateOptions(from.options, from);
|
|
107
108
|
if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.length) {
|
|
108
109
|
prepared = true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UserSettingsBinding } from "./types";
|
|
2
|
+
export default class JSONFileBindig extends UserSettingsBinding {
|
|
3
|
+
protected static _instance: UserSettingsBinding;
|
|
4
|
+
path: string;
|
|
5
|
+
settings: any;
|
|
6
|
+
savePromise: Promise<boolean> | null;
|
|
7
|
+
static getInstance(path?: string): UserSettingsBinding;
|
|
8
|
+
constructor(path?: string);
|
|
9
|
+
getAll(): Promise<any>;
|
|
10
|
+
set(key: string, value: any): Promise<boolean>;
|
|
11
|
+
canOverwrite(): boolean;
|
|
12
|
+
save(settings?: any): Promise<boolean>;
|
|
13
|
+
waitForSaveFinished(): Promise<void>;
|
|
14
|
+
verify(settings: any): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
17
|
+
const DEFAULT_PATH = './settings.json';
|
|
18
|
+
class JSONFileBindig extends types_1.UserSettingsBinding {
|
|
19
|
+
static getInstance(path) {
|
|
20
|
+
var _a;
|
|
21
|
+
JSONFileBindig._instance = (_a = JSONFileBindig._instance) !== null && _a !== void 0 ? _a : new JSONFileBindig(path);
|
|
22
|
+
return JSONFileBindig._instance;
|
|
23
|
+
}
|
|
24
|
+
constructor(path = DEFAULT_PATH) {
|
|
25
|
+
super();
|
|
26
|
+
this.path = path;
|
|
27
|
+
this.savePromise = null;
|
|
28
|
+
}
|
|
29
|
+
getAll() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const settings = yield promises_1.default.readFile(this.path);
|
|
32
|
+
const valid = this.verify(settings);
|
|
33
|
+
if (!valid)
|
|
34
|
+
throw new Error('invalid JSON object');
|
|
35
|
+
return this.settings;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
set(key, value) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
if (value === null) {
|
|
41
|
+
delete this.settings[key];
|
|
42
|
+
}
|
|
43
|
+
else if (Array.isArray(value)) {
|
|
44
|
+
this.settings[key] = [...value];
|
|
45
|
+
}
|
|
46
|
+
else if (typeof (value) === 'object') {
|
|
47
|
+
this.settings[key] = Object.assign({}, value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.settings[key] = value;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
yield this.save();
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch (_a) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
canOverwrite() {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
save(settings) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
if (settings) {
|
|
67
|
+
this.verify(settings);
|
|
68
|
+
this.settings = settings;
|
|
69
|
+
}
|
|
70
|
+
if (this.savePromise) {
|
|
71
|
+
yield this.waitForSaveFinished();
|
|
72
|
+
}
|
|
73
|
+
this.savePromise = this.save(JSON.stringify(this.settings, null, 2));
|
|
74
|
+
try {
|
|
75
|
+
yield this.savePromise;
|
|
76
|
+
this.savePromise = null;
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
catch (_a) {
|
|
80
|
+
this.savePromise = null;
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
waitForSaveFinished() {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
return new Promise(done => {
|
|
88
|
+
const iv = setInterval(() => {
|
|
89
|
+
if (this.savePromise) {
|
|
90
|
+
clearInterval(iv);
|
|
91
|
+
done();
|
|
92
|
+
}
|
|
93
|
+
}, 50);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
verify(settings) {
|
|
98
|
+
if (typeof settings === 'string') {
|
|
99
|
+
try {
|
|
100
|
+
JSON.parse(settings);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
catch (_a) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
try {
|
|
109
|
+
JSON.stringify(settings);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
catch (_b) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.default = JSONFileBindig;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface IUserSettingsBinding {
|
|
2
|
+
getAll(): Promise<any>;
|
|
3
|
+
set(key: string, value: any): Promise<boolean>;
|
|
4
|
+
save(settings: any, final?: boolean): Promise<boolean>;
|
|
5
|
+
canOverwrite(): boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class UserSettingsBinding implements IUserSettingsBinding {
|
|
8
|
+
static getInstance(): IUserSettingsBinding;
|
|
9
|
+
abstract getAll(): Promise<any>;
|
|
10
|
+
abstract set(key: string, value: any): Promise<boolean>;
|
|
11
|
+
abstract save(settings: any, final?: boolean): Promise<boolean>;
|
|
12
|
+
abstract canOverwrite(): boolean;
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserSettingsBinding = void 0;
|
|
4
|
+
class UserSettingsBinding {
|
|
5
|
+
static getInstance() {
|
|
6
|
+
throw new Error("Method not implemented.");
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserSettingsBinding = UserSettingsBinding;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./user"), exports);
|