@tryterra/react-native 2.1.0 → 2.2.1

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 (59) hide show
  1. package/README.md +31 -0
  2. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/Conversions.kt +103 -14
  3. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/ReadConversions.kt +250 -0
  4. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TerraBridgeOpsImpl.kt +47 -5
  5. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TerraBridgeStreamsImpl.kt +1 -3
  6. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/generated/BridgeOps.kt +89 -0
  7. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/generated/BridgeTypes.kt +672 -0
  8. package/docs/availability.md +154 -4
  9. package/frameworks/TerraSDK.xcframework/Info.plist +5 -5
  10. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Info.plist +0 -0
  11. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.abi.json +1385 -226
  12. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.package.swiftinterface +37 -1
  13. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +37 -1
  14. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  15. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.swiftinterface +37 -1
  16. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/TerraSDK +0 -0
  17. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Info.plist +2 -2
  18. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/DWARF/TerraSDK +0 -0
  19. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/TerraSDK.yml +6589 -6468
  20. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Info.plist +0 -0
  21. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +1385 -226
  22. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +37 -1
  23. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +37 -1
  24. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  25. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +37 -1
  26. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +1385 -226
  27. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +37 -1
  28. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +37 -1
  29. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  30. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +37 -1
  31. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/TerraSDK +0 -0
  32. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/_CodeSignature/CodeResources +21 -21
  33. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Info.plist +2 -2
  34. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/DWARF/TerraSDK +0 -0
  35. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/TerraSDK.yml +6590 -6469
  36. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/TerraSDK.yml +6508 -6387
  37. package/ios/TerraBridgeCore/Conversions+Reads.swift +259 -0
  38. package/ios/TerraBridgeCore/Conversions.swift +129 -2
  39. package/ios/TerraBridgeCore/Generated/BridgeOps.swift +172 -0
  40. package/ios/TerraBridgeCore/Generated/BridgeTypes.swift +734 -1
  41. package/ios/TerraBridgeCore/TerraBridgeOpsImpl.swift +64 -0
  42. package/lib/Terra.d.ts +74 -5
  43. package/lib/Terra.js +69 -13
  44. package/lib/generated/client.d.ts +37 -1
  45. package/lib/generated/client.js +60 -0
  46. package/lib/generated/codecs.d.ts +85 -1
  47. package/lib/generated/codecs.js +710 -2
  48. package/lib/generated/ops.d.ts +1 -1
  49. package/lib/generated/ops.js +24 -0
  50. package/lib/generated/types.d.ts +314 -1
  51. package/lib/generated/types.js +133 -1
  52. package/lib/index.d.ts +1 -1
  53. package/package.json +3 -3
  54. package/src/Terra.ts +146 -16
  55. package/src/generated/client.ts +74 -2
  56. package/src/generated/codecs.ts +705 -3
  57. package/src/generated/ops.ts +36 -0
  58. package/src/generated/types.ts +556 -1
  59. package/src/index.ts +2 -0
@@ -12,6 +12,7 @@ public enum BridgeOp: String, CaseIterable, Sendable {
12
12
  case clientAttach = "client.attach"
13
13
  case clientConnect = "client.connect"
14
14
  case clientConnections = "client.connections"
15
+ case clientAvailability = "client.availability"
15
16
  case clientDisconnect = "client.disconnect"
16
17
  case tokenSetProviderPresent = "token.setProviderPresent"
17
18
  case tokenResolve = "token.resolve"
@@ -30,20 +31,31 @@ public enum BridgeOp: String, CaseIterable, Sendable {
30
31
  case backgroundIsRegistered = "background.isRegistered"
31
32
  case backgroundCancel = "background.cancel"
32
33
  case bodyHeartRate = "body.heartRate"
34
+ case bodyRestingHeartRate = "body.restingHeartRate"
35
+ case bodyReadings = "body.readings"
33
36
  case bodyLogHeartRate = "body.logHeartRate"
34
37
  case bodyLog = "body.log"
35
38
  case bodyDelete = "body.delete"
36
39
  case dailySteps = "daily.steps"
40
+ case dailyTotals = "daily.totals"
41
+ case dailyIntraday = "daily.intraday"
37
42
  case dailyLog = "daily.log"
38
43
  case dailyDelete = "daily.delete"
39
44
  case sleepSegments = "sleep.segments"
40
45
  case sleepLog = "sleep.log"
41
46
  case sleepDelete = "sleep.delete"
42
47
  case activityWorkouts = "activity.workouts"
48
+ case activityRoutes = "activity.routes"
49
+ case activityIntensity = "activity.intensity"
43
50
  case activityLog = "activity.log"
44
51
  case activityDelete = "activity.delete"
52
+ case nutritionQuantities = "nutrition.quantities"
45
53
  case nutritionLog = "nutrition.log"
46
54
  case nutritionDelete = "nutrition.delete"
55
+ case nutritionHydration = "nutrition.hydration"
56
+ case menstruationFlow = "menstruation.flow"
57
+ case menstruationEvents = "menstruation.events"
58
+ case athleteProfile = "athlete.profile"
47
59
  case plannedWorkoutsPlanned = "plannedWorkouts.planned"
48
60
  case plannedWorkoutsMarkComplete = "plannedWorkouts.markComplete"
49
61
  case plannedWorkoutsDelete = "plannedWorkouts.delete"
@@ -56,6 +68,7 @@ public enum BridgeOp: String, CaseIterable, Sendable {
56
68
  case .clientAttach: return true
57
69
  case .clientConnect: return true
58
70
  case .clientConnections: return true
71
+ case .clientAvailability: return true
59
72
  case .clientDisconnect: return true
60
73
  case .tokenSetProviderPresent: return true
61
74
  case .tokenResolve: return true
@@ -74,20 +87,31 @@ public enum BridgeOp: String, CaseIterable, Sendable {
74
87
  case .backgroundIsRegistered: return true
75
88
  case .backgroundCancel: return false
76
89
  case .bodyHeartRate: return true
90
+ case .bodyRestingHeartRate: return true
91
+ case .bodyReadings: return true
77
92
  case .bodyLogHeartRate: return true
78
93
  case .bodyLog: return true
79
94
  case .bodyDelete: return true
80
95
  case .dailySteps: return true
96
+ case .dailyTotals: return true
97
+ case .dailyIntraday: return true
81
98
  case .dailyLog: return true
82
99
  case .dailyDelete: return true
83
100
  case .sleepSegments: return true
84
101
  case .sleepLog: return true
85
102
  case .sleepDelete: return true
86
103
  case .activityWorkouts: return true
104
+ case .activityRoutes: return true
105
+ case .activityIntensity: return true
87
106
  case .activityLog: return true
88
107
  case .activityDelete: return true
108
+ case .nutritionQuantities: return true
89
109
  case .nutritionLog: return true
90
110
  case .nutritionDelete: return true
111
+ case .nutritionHydration: return true
112
+ case .menstruationFlow: return true
113
+ case .menstruationEvents: return true
114
+ case .athleteProfile: return true
91
115
  case .plannedWorkoutsPlanned: return true
92
116
  case .plannedWorkoutsMarkComplete: return true
93
117
  case .plannedWorkoutsDelete: return true
@@ -105,6 +129,8 @@ public protocol TerraBridgeOps: Sendable {
105
129
  func clientAttach(_ request: Empty) async throws -> BootstrapState
106
130
  func clientConnect(_ request: ConnectRequest) async throws -> Connection
107
131
  func clientConnections(_ request: Empty) async throws -> ConnectionList
132
+ /// Whether the device can serve the source at all. Needs no connection and prompts for nothing.
133
+ func clientAvailability(_ request: SourceRequest) async throws -> AvailabilityResult
108
134
  func clientDisconnect(_ request: SourceRequest) async throws -> Empty
109
135
  /// Tells the broker whether JS can answer at all. Without it a link asks a provider that is not
110
136
  /// there and waits out the timeout.
@@ -125,21 +151,47 @@ public protocol TerraBridgeOps: Sendable {
125
151
  /// backgroundRefreshUnscheduled.
126
152
  func backgroundIsRegistered(_ request: Empty) async throws -> BoolResult
127
153
  func bodyHeartRate(_ request: RangeRequest) async throws -> HeartRateList
154
+ /// The store's own daily figures. Health Connect grants them under daily, so Android answers
155
+ /// authorization_not_determined where only body was asked for.
156
+ func bodyRestingHeartRate(_ request: RangeRequest) async throws -> RestingHeartRateList
157
+ func bodyReadings(_ request: RangeRequest) async throws -> BodyReadingList
128
158
  /// Its own op rather than an overload: Swift overloads log by element type and JS cannot.
129
159
  func bodyLogHeartRate(_ request: HeartRateEntryList) async throws -> RecordIdList
130
160
  func bodyLog(_ request: BodyEntryList) async throws -> RecordIdList
131
161
  func bodyDelete(_ request: RecordIdRequest) async throws -> Empty
132
162
  func dailySteps(_ request: RangeRequest) async throws -> StepCountList
163
+ /// One total per metric per whole local day the range touches. A day with nothing recorded has
164
+ /// no total, not a zero.
165
+ func dailyTotals(_ request: RangeRequest) async throws -> DayTotalList
166
+ /// The active energy, basal energy, distance and floors records the totals are made of.
167
+ func dailyIntraday(_ request: RangeRequest) async throws -> IntradaySampleList
133
168
  func dailyLog(_ request: StepEntryList) async throws -> RecordIdList
134
169
  func dailyDelete(_ request: RecordIdRequest) async throws -> Empty
135
170
  func sleepSegments(_ request: RangeRequest) async throws -> SleepSegmentList
136
171
  func sleepLog(_ request: SleepEntryList) async throws -> RecordIdList
137
172
  func sleepDelete(_ request: RecordIdRequest) async throws -> Empty
138
173
  func activityWorkouts(_ request: RangeRequest) async throws -> WorkoutList
174
+ /// The GPS tracks of the workouts in the range, each naming its workout.
175
+ func activityRoutes(_ request: RangeRequest) async throws -> WorkoutRouteList
176
+ /// Speed, power and cycling cadence readings in the range.
177
+ func activityIntensity(_ request: RangeRequest) async throws -> WorkoutIntensityList
139
178
  func activityLog(_ request: WorkoutEntryList) async throws -> RecordIdList
140
179
  func activityDelete(_ request: RecordIdRequest) async throws -> Empty
180
+ /// One quantity per nutrient a meal recorded, not grouped into meals. Water is not among them.
181
+ func nutritionQuantities(_ request: RangeRequest) async throws -> DietaryQuantityList
141
182
  func nutritionLog(_ request: NutritionEntryList) async throws -> RecordIdList
142
183
  func nutritionDelete(_ request: RecordIdRequest) async throws -> Empty
184
+ /// Water drunk in the range, one sample per drink.
185
+ func nutritionHydration(_ request: RangeRequest) async throws -> HydrationList
186
+ /// Logged flow days overlapping the range, one per day. A day logged with no flow is noFlow,
187
+ /// not left out.
188
+ func menstruationFlow(_ request: RangeRequest) async throws -> MenstruationFlowDayList
189
+ /// Ovulation tests, cervical mucus and intermenstrual bleeding logged in the range.
190
+ func menstruationEvents(_ request: RangeRequest) async throws -> MenstrualEventList
191
+ /// Characteristics have no history.
192
+ ///
193
+ /// Available on ios only.
194
+ func athleteProfile(_ request: Empty) async throws -> AthleteProfileResult
143
195
  /// Available on ios only.
144
196
  func plannedWorkoutsPlanned(_ request: Empty) async throws -> PlannedWorkoutList
145
197
  /// Available on ios only.
@@ -177,6 +229,9 @@ public enum BridgeCodecs {
177
229
  case .clientConnections:
178
230
  let value = try decoder.decode(Empty.self, from: payload)
179
231
  return try encoder.encode(value)
232
+ case .clientAvailability:
233
+ let value = try decoder.decode(SourceRequest.self, from: payload)
234
+ return try encoder.encode(value)
180
235
  case .clientDisconnect:
181
236
  let value = try decoder.decode(SourceRequest.self, from: payload)
182
237
  return try encoder.encode(value)
@@ -231,6 +286,12 @@ public enum BridgeCodecs {
231
286
  case .bodyHeartRate:
232
287
  let value = try decoder.decode(RangeRequest.self, from: payload)
233
288
  return try encoder.encode(value)
289
+ case .bodyRestingHeartRate:
290
+ let value = try decoder.decode(RangeRequest.self, from: payload)
291
+ return try encoder.encode(value)
292
+ case .bodyReadings:
293
+ let value = try decoder.decode(RangeRequest.self, from: payload)
294
+ return try encoder.encode(value)
234
295
  case .bodyLogHeartRate:
235
296
  let value = try decoder.decode(HeartRateEntryList.self, from: payload)
236
297
  return try encoder.encode(value)
@@ -243,6 +304,12 @@ public enum BridgeCodecs {
243
304
  case .dailySteps:
244
305
  let value = try decoder.decode(RangeRequest.self, from: payload)
245
306
  return try encoder.encode(value)
307
+ case .dailyTotals:
308
+ let value = try decoder.decode(RangeRequest.self, from: payload)
309
+ return try encoder.encode(value)
310
+ case .dailyIntraday:
311
+ let value = try decoder.decode(RangeRequest.self, from: payload)
312
+ return try encoder.encode(value)
246
313
  case .dailyLog:
247
314
  let value = try decoder.decode(StepEntryList.self, from: payload)
248
315
  return try encoder.encode(value)
@@ -261,18 +328,39 @@ public enum BridgeCodecs {
261
328
  case .activityWorkouts:
262
329
  let value = try decoder.decode(RangeRequest.self, from: payload)
263
330
  return try encoder.encode(value)
331
+ case .activityRoutes:
332
+ let value = try decoder.decode(RangeRequest.self, from: payload)
333
+ return try encoder.encode(value)
334
+ case .activityIntensity:
335
+ let value = try decoder.decode(RangeRequest.self, from: payload)
336
+ return try encoder.encode(value)
264
337
  case .activityLog:
265
338
  let value = try decoder.decode(WorkoutEntryList.self, from: payload)
266
339
  return try encoder.encode(value)
267
340
  case .activityDelete:
268
341
  let value = try decoder.decode(RecordIdRequest.self, from: payload)
269
342
  return try encoder.encode(value)
343
+ case .nutritionQuantities:
344
+ let value = try decoder.decode(RangeRequest.self, from: payload)
345
+ return try encoder.encode(value)
270
346
  case .nutritionLog:
271
347
  let value = try decoder.decode(NutritionEntryList.self, from: payload)
272
348
  return try encoder.encode(value)
273
349
  case .nutritionDelete:
274
350
  let value = try decoder.decode(RecordIdRequest.self, from: payload)
275
351
  return try encoder.encode(value)
352
+ case .nutritionHydration:
353
+ let value = try decoder.decode(RangeRequest.self, from: payload)
354
+ return try encoder.encode(value)
355
+ case .menstruationFlow:
356
+ let value = try decoder.decode(RangeRequest.self, from: payload)
357
+ return try encoder.encode(value)
358
+ case .menstruationEvents:
359
+ let value = try decoder.decode(RangeRequest.self, from: payload)
360
+ return try encoder.encode(value)
361
+ case .athleteProfile:
362
+ let value = try decoder.decode(Empty.self, from: payload)
363
+ return try encoder.encode(value)
276
364
  case .plannedWorkoutsPlanned:
277
365
  let value = try decoder.decode(Empty.self, from: payload)
278
366
  return try encoder.encode(value)
@@ -304,6 +392,9 @@ public enum BridgeCodecs {
304
392
  case .clientConnections:
305
393
  let value = try decoder.decode(ConnectionList.self, from: payload)
306
394
  return try encoder.encode(value)
395
+ case .clientAvailability:
396
+ let value = try decoder.decode(AvailabilityResult.self, from: payload)
397
+ return try encoder.encode(value)
307
398
  case .clientDisconnect:
308
399
  let value = try decoder.decode(Empty.self, from: payload)
309
400
  return try encoder.encode(value)
@@ -359,6 +450,12 @@ public enum BridgeCodecs {
359
450
  case .bodyHeartRate:
360
451
  let value = try decoder.decode(HeartRateList.self, from: payload)
361
452
  return try encoder.encode(value)
453
+ case .bodyRestingHeartRate:
454
+ let value = try decoder.decode(RestingHeartRateList.self, from: payload)
455
+ return try encoder.encode(value)
456
+ case .bodyReadings:
457
+ let value = try decoder.decode(BodyReadingList.self, from: payload)
458
+ return try encoder.encode(value)
362
459
  case .bodyLogHeartRate:
363
460
  let value = try decoder.decode(RecordIdList.self, from: payload)
364
461
  return try encoder.encode(value)
@@ -371,6 +468,12 @@ public enum BridgeCodecs {
371
468
  case .dailySteps:
372
469
  let value = try decoder.decode(StepCountList.self, from: payload)
373
470
  return try encoder.encode(value)
471
+ case .dailyTotals:
472
+ let value = try decoder.decode(DayTotalList.self, from: payload)
473
+ return try encoder.encode(value)
474
+ case .dailyIntraday:
475
+ let value = try decoder.decode(IntradaySampleList.self, from: payload)
476
+ return try encoder.encode(value)
374
477
  case .dailyLog:
375
478
  let value = try decoder.decode(RecordIdList.self, from: payload)
376
479
  return try encoder.encode(value)
@@ -389,18 +492,39 @@ public enum BridgeCodecs {
389
492
  case .activityWorkouts:
390
493
  let value = try decoder.decode(WorkoutList.self, from: payload)
391
494
  return try encoder.encode(value)
495
+ case .activityRoutes:
496
+ let value = try decoder.decode(WorkoutRouteList.self, from: payload)
497
+ return try encoder.encode(value)
498
+ case .activityIntensity:
499
+ let value = try decoder.decode(WorkoutIntensityList.self, from: payload)
500
+ return try encoder.encode(value)
392
501
  case .activityLog:
393
502
  let value = try decoder.decode(RecordIdList.self, from: payload)
394
503
  return try encoder.encode(value)
395
504
  case .activityDelete:
396
505
  let value = try decoder.decode(Empty.self, from: payload)
397
506
  return try encoder.encode(value)
507
+ case .nutritionQuantities:
508
+ let value = try decoder.decode(DietaryQuantityList.self, from: payload)
509
+ return try encoder.encode(value)
398
510
  case .nutritionLog:
399
511
  let value = try decoder.decode(RecordIdList.self, from: payload)
400
512
  return try encoder.encode(value)
401
513
  case .nutritionDelete:
402
514
  let value = try decoder.decode(Empty.self, from: payload)
403
515
  return try encoder.encode(value)
516
+ case .nutritionHydration:
517
+ let value = try decoder.decode(HydrationList.self, from: payload)
518
+ return try encoder.encode(value)
519
+ case .menstruationFlow:
520
+ let value = try decoder.decode(MenstruationFlowDayList.self, from: payload)
521
+ return try encoder.encode(value)
522
+ case .menstruationEvents:
523
+ let value = try decoder.decode(MenstrualEventList.self, from: payload)
524
+ return try encoder.encode(value)
525
+ case .athleteProfile:
526
+ let value = try decoder.decode(AthleteProfileResult.self, from: payload)
527
+ return try encoder.encode(value)
404
528
  case .plannedWorkoutsPlanned:
405
529
  let value = try decoder.decode(PlannedWorkoutList.self, from: payload)
406
530
  return try encoder.encode(value)
@@ -537,6 +661,10 @@ public struct BridgeDispatch: Sendable {
537
661
  let request = try Self.decodeRequest(Empty.self, from: payload)
538
662
  let response = try await ops.clientConnections(request)
539
663
  return try encoder.encode(response)
664
+ case .clientAvailability:
665
+ let request = try Self.decodeRequest(SourceRequest.self, from: payload)
666
+ let response = try await ops.clientAvailability(request)
667
+ return try encoder.encode(response)
540
668
  case .clientDisconnect:
541
669
  let request = try Self.decodeRequest(SourceRequest.self, from: payload)
542
670
  let response = try await ops.clientDisconnect(request)
@@ -602,6 +730,14 @@ public struct BridgeDispatch: Sendable {
602
730
  let request = try Self.decodeRequest(RangeRequest.self, from: payload)
603
731
  let response = try await ops.bodyHeartRate(request)
604
732
  return try encoder.encode(response)
733
+ case .bodyRestingHeartRate:
734
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
735
+ let response = try await ops.bodyRestingHeartRate(request)
736
+ return try encoder.encode(response)
737
+ case .bodyReadings:
738
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
739
+ let response = try await ops.bodyReadings(request)
740
+ return try encoder.encode(response)
605
741
  case .bodyLogHeartRate:
606
742
  let request = try Self.decodeRequest(HeartRateEntryList.self, from: payload)
607
743
  let response = try await ops.bodyLogHeartRate(request)
@@ -618,6 +754,14 @@ public struct BridgeDispatch: Sendable {
618
754
  let request = try Self.decodeRequest(RangeRequest.self, from: payload)
619
755
  let response = try await ops.dailySteps(request)
620
756
  return try encoder.encode(response)
757
+ case .dailyTotals:
758
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
759
+ let response = try await ops.dailyTotals(request)
760
+ return try encoder.encode(response)
761
+ case .dailyIntraday:
762
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
763
+ let response = try await ops.dailyIntraday(request)
764
+ return try encoder.encode(response)
621
765
  case .dailyLog:
622
766
  let request = try Self.decodeRequest(StepEntryList.self, from: payload)
623
767
  let response = try await ops.dailyLog(request)
@@ -642,6 +786,14 @@ public struct BridgeDispatch: Sendable {
642
786
  let request = try Self.decodeRequest(RangeRequest.self, from: payload)
643
787
  let response = try await ops.activityWorkouts(request)
644
788
  return try encoder.encode(response)
789
+ case .activityRoutes:
790
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
791
+ let response = try await ops.activityRoutes(request)
792
+ return try encoder.encode(response)
793
+ case .activityIntensity:
794
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
795
+ let response = try await ops.activityIntensity(request)
796
+ return try encoder.encode(response)
645
797
  case .activityLog:
646
798
  let request = try Self.decodeRequest(WorkoutEntryList.self, from: payload)
647
799
  let response = try await ops.activityLog(request)
@@ -650,6 +802,10 @@ public struct BridgeDispatch: Sendable {
650
802
  let request = try Self.decodeRequest(RecordIdRequest.self, from: payload)
651
803
  let response = try await ops.activityDelete(request)
652
804
  return try encoder.encode(response)
805
+ case .nutritionQuantities:
806
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
807
+ let response = try await ops.nutritionQuantities(request)
808
+ return try encoder.encode(response)
653
809
  case .nutritionLog:
654
810
  let request = try Self.decodeRequest(NutritionEntryList.self, from: payload)
655
811
  let response = try await ops.nutritionLog(request)
@@ -658,6 +814,22 @@ public struct BridgeDispatch: Sendable {
658
814
  let request = try Self.decodeRequest(RecordIdRequest.self, from: payload)
659
815
  let response = try await ops.nutritionDelete(request)
660
816
  return try encoder.encode(response)
817
+ case .nutritionHydration:
818
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
819
+ let response = try await ops.nutritionHydration(request)
820
+ return try encoder.encode(response)
821
+ case .menstruationFlow:
822
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
823
+ let response = try await ops.menstruationFlow(request)
824
+ return try encoder.encode(response)
825
+ case .menstruationEvents:
826
+ let request = try Self.decodeRequest(RangeRequest.self, from: payload)
827
+ let response = try await ops.menstruationEvents(request)
828
+ return try encoder.encode(response)
829
+ case .athleteProfile:
830
+ let request = try Self.decodeRequest(Empty.self, from: payload)
831
+ let response = try await ops.athleteProfile(request)
832
+ return try encoder.encode(response)
661
833
  case .plannedWorkoutsPlanned:
662
834
  let request = try Self.decodeRequest(Empty.self, from: payload)
663
835
  let response = try await ops.plannedWorkoutsPlanned(request)