@nativesquare/soma 0.17.1 → 0.18.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.
@@ -152,7 +152,11 @@ async function ingestAndUpdate(
152
152
  * Handle a webhook for Garmin activities (push or ping mode).
153
153
  */
154
154
  export const handleGarminWebhookActivities = action({
155
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
155
+ args: {
156
+ payload: v.any(),
157
+ autoIngest: v.optional(v.boolean()),
158
+ rawPassthrough: v.optional(v.boolean()),
159
+ },
156
160
  handler: async (ctx, args): Promise<WebhookResult> => {
157
161
  const shouldIngest = args.autoIngest !== false;
158
162
  if (isWebhookPushMode(args.payload)) {
@@ -160,7 +164,7 @@ export const handleGarminWebhookActivities = action({
160
164
  if (pushResult.success && pushResult.data.activities.length > 0) {
161
165
  const result: WebhookResult = await ctx.runAction(
162
166
  internal.garmin.private.processActivityPushPayload,
163
- { payload: args.payload },
167
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
164
168
  );
165
169
  return shouldIngest
166
170
  ? await ingestAndUpdate(ctx, result, api.public.ingestActivity)
@@ -187,7 +191,11 @@ export const handleGarminWebhookActivities = action({
187
191
  * Handle a webhook for Garmin activity details (push or ping mode).
188
192
  */
189
193
  export const handleGarminWebhookActivityDetails = action({
190
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
194
+ args: {
195
+ payload: v.any(),
196
+ autoIngest: v.optional(v.boolean()),
197
+ rawPassthrough: v.optional(v.boolean()),
198
+ },
191
199
  handler: async (ctx, args): Promise<WebhookResult> => {
192
200
  const shouldIngest = args.autoIngest !== false;
193
201
  if (isWebhookPushMode(args.payload)) {
@@ -199,7 +207,7 @@ export const handleGarminWebhookActivityDetails = action({
199
207
  ) {
200
208
  const result: WebhookResult = await ctx.runAction(
201
209
  internal.garmin.private.processActivityDetailsPushPayload,
202
- { payload: args.payload },
210
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
203
211
  );
204
212
  return shouldIngest
205
213
  ? await ingestAndUpdate(ctx, result, api.public.ingestActivity)
@@ -230,7 +238,11 @@ export const handleGarminWebhookActivityDetails = action({
230
238
  * Handle a webhook for Garmin manually updated activities (push or ping mode).
231
239
  */
232
240
  export const handleGarminWebhookManuallyUpdatedActivities = action({
233
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
241
+ args: {
242
+ payload: v.any(),
243
+ autoIngest: v.optional(v.boolean()),
244
+ rawPassthrough: v.optional(v.boolean()),
245
+ },
234
246
  handler: async (ctx, args): Promise<WebhookResult> => {
235
247
  const shouldIngest = args.autoIngest !== false;
236
248
  if (isWebhookPushMode(args.payload)) {
@@ -245,7 +257,7 @@ export const handleGarminWebhookManuallyUpdatedActivities = action({
245
257
  const result: WebhookResult = await ctx.runAction(
246
258
  internal.garmin.private
247
259
  .processManuallyUpdatedActivitiesPushPayload,
248
- { payload: args.payload },
260
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
249
261
  );
250
262
  return shouldIngest
251
263
  ? await ingestAndUpdate(ctx, result, api.public.ingestActivity)
@@ -279,7 +291,11 @@ export const handleGarminWebhookManuallyUpdatedActivities = action({
279
291
  * Handle a webhook for Garmin Move IQ auto-detected activities (push or ping mode).
280
292
  */
281
293
  export const handleGarminWebhookMoveIQ = action({
282
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
294
+ args: {
295
+ payload: v.any(),
296
+ autoIngest: v.optional(v.boolean()),
297
+ rawPassthrough: v.optional(v.boolean()),
298
+ },
283
299
  handler: async (ctx, args): Promise<WebhookResult> => {
284
300
  const shouldIngest = args.autoIngest !== false;
285
301
  if (isWebhookPushMode(args.payload)) {
@@ -291,7 +307,7 @@ export const handleGarminWebhookMoveIQ = action({
291
307
  ) {
292
308
  const result: WebhookResult = await ctx.runAction(
293
309
  internal.garmin.private.processMoveIQPushPayload,
294
- { payload: args.payload },
310
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
295
311
  );
296
312
  return shouldIngest
297
313
  ? await ingestAndUpdate(ctx, result, api.public.ingestActivity)
@@ -322,7 +338,11 @@ export const handleGarminWebhookMoveIQ = action({
322
338
  * Handle a webhook for Garmin blood pressure summaries (push or ping mode).
323
339
  */
324
340
  export const handleGarminWebhookBloodPressures = action({
325
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
341
+ args: {
342
+ payload: v.any(),
343
+ autoIngest: v.optional(v.boolean()),
344
+ rawPassthrough: v.optional(v.boolean()),
345
+ },
326
346
  handler: async (ctx, args): Promise<WebhookResult> => {
327
347
  const shouldIngest = args.autoIngest !== false;
328
348
  if (isWebhookPushMode(args.payload)) {
@@ -334,7 +354,7 @@ export const handleGarminWebhookBloodPressures = action({
334
354
  ) {
335
355
  const result: WebhookResult = await ctx.runAction(
336
356
  internal.garmin.private.processBloodPressurePushPayload,
337
- { payload: args.payload },
357
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
338
358
  );
339
359
  return shouldIngest
340
360
  ? await ingestAndUpdate(ctx, result, api.public.ingestBody)
@@ -365,7 +385,11 @@ export const handleGarminWebhookBloodPressures = action({
365
385
  * Handle a webhook for Garmin body composition summaries (push or ping mode).
366
386
  */
367
387
  export const handleGarminWebhookBodyCompositions = action({
368
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
388
+ args: {
389
+ payload: v.any(),
390
+ autoIngest: v.optional(v.boolean()),
391
+ rawPassthrough: v.optional(v.boolean()),
392
+ },
369
393
  handler: async (ctx, args): Promise<WebhookResult> => {
370
394
  const shouldIngest = args.autoIngest !== false;
371
395
  if (isWebhookPushMode(args.payload)) {
@@ -377,7 +401,7 @@ export const handleGarminWebhookBodyCompositions = action({
377
401
  ) {
378
402
  const result: WebhookResult = await ctx.runAction(
379
403
  internal.garmin.private.processBodyCompositionsPushPayload,
380
- { payload: args.payload },
404
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
381
405
  );
382
406
  return shouldIngest
383
407
  ? await ingestAndUpdate(ctx, result, api.public.ingestBody)
@@ -408,7 +432,11 @@ export const handleGarminWebhookBodyCompositions = action({
408
432
  * Handle a webhook for Garmin daily summaries (push or ping mode).
409
433
  */
410
434
  export const handleGarminWebhookDailies = action({
411
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
435
+ args: {
436
+ payload: v.any(),
437
+ autoIngest: v.optional(v.boolean()),
438
+ rawPassthrough: v.optional(v.boolean()),
439
+ },
412
440
  handler: async (ctx, args): Promise<WebhookResult> => {
413
441
  const shouldIngest = args.autoIngest !== false;
414
442
  if (isWebhookPushMode(args.payload)) {
@@ -420,7 +448,7 @@ export const handleGarminWebhookDailies = action({
420
448
  ) {
421
449
  const result: WebhookResult = await ctx.runAction(
422
450
  internal.garmin.private.processDailiesPushPayload,
423
- { payload: args.payload },
451
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
424
452
  );
425
453
  return shouldIngest
426
454
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -451,7 +479,11 @@ export const handleGarminWebhookDailies = action({
451
479
  * Handle a webhook for Garmin epoch summaries (push or ping mode).
452
480
  */
453
481
  export const handleGarminWebhookEpochs = action({
454
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
482
+ args: {
483
+ payload: v.any(),
484
+ autoIngest: v.optional(v.boolean()),
485
+ rawPassthrough: v.optional(v.boolean()),
486
+ },
455
487
  handler: async (ctx, args): Promise<WebhookResult> => {
456
488
  const shouldIngest = args.autoIngest !== false;
457
489
  if (isWebhookPushMode(args.payload)) {
@@ -463,7 +495,7 @@ export const handleGarminWebhookEpochs = action({
463
495
  ) {
464
496
  const result: WebhookResult = await ctx.runAction(
465
497
  internal.garmin.private.processEpochPushPayload,
466
- { payload: args.payload },
498
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
467
499
  );
468
500
  return shouldIngest
469
501
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -494,7 +526,11 @@ export const handleGarminWebhookEpochs = action({
494
526
  * Handle a webhook for Garmin health snapshot summaries (push or ping mode).
495
527
  */
496
528
  export const handleGarminWebhookHealthSnapshot = action({
497
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
529
+ args: {
530
+ payload: v.any(),
531
+ autoIngest: v.optional(v.boolean()),
532
+ rawPassthrough: v.optional(v.boolean()),
533
+ },
498
534
  handler: async (ctx, args): Promise<WebhookResult> => {
499
535
  const shouldIngest = args.autoIngest !== false;
500
536
  if (isWebhookPushMode(args.payload)) {
@@ -506,7 +542,7 @@ export const handleGarminWebhookHealthSnapshot = action({
506
542
  ) {
507
543
  const result: WebhookResult = await ctx.runAction(
508
544
  internal.garmin.private.processHealthSnapshotPushPayload,
509
- { payload: args.payload },
545
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
510
546
  );
511
547
  return shouldIngest
512
548
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -537,7 +573,11 @@ export const handleGarminWebhookHealthSnapshot = action({
537
573
  * Handle a webhook for Garmin sleep summaries (push or ping mode).
538
574
  */
539
575
  export const handleGarminWebhookSleeps = action({
540
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
576
+ args: {
577
+ payload: v.any(),
578
+ autoIngest: v.optional(v.boolean()),
579
+ rawPassthrough: v.optional(v.boolean()),
580
+ },
541
581
  handler: async (ctx, args): Promise<WebhookResult> => {
542
582
  const shouldIngest = args.autoIngest !== false;
543
583
  if (isWebhookPushMode(args.payload)) {
@@ -549,7 +589,7 @@ export const handleGarminWebhookSleeps = action({
549
589
  ) {
550
590
  const result: WebhookResult = await ctx.runAction(
551
591
  internal.garmin.private.processSleepsPushPayload,
552
- { payload: args.payload },
592
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
553
593
  );
554
594
  return shouldIngest
555
595
  ? await ingestAndUpdate(ctx, result, api.public.ingestSleep)
@@ -580,7 +620,11 @@ export const handleGarminWebhookSleeps = action({
580
620
  * Handle a webhook for Garmin skin temperature summaries (push or ping mode).
581
621
  */
582
622
  export const handleGarminWebhookSkinTemp = action({
583
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
623
+ args: {
624
+ payload: v.any(),
625
+ autoIngest: v.optional(v.boolean()),
626
+ rawPassthrough: v.optional(v.boolean()),
627
+ },
584
628
  handler: async (ctx, args): Promise<WebhookResult> => {
585
629
  const shouldIngest = args.autoIngest !== false;
586
630
  if (isWebhookPushMode(args.payload)) {
@@ -592,7 +636,7 @@ export const handleGarminWebhookSkinTemp = action({
592
636
  ) {
593
637
  const result: WebhookResult = await ctx.runAction(
594
638
  internal.garmin.private.processSkinTemperaturePushPayload,
595
- { payload: args.payload },
639
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
596
640
  );
597
641
  return shouldIngest
598
642
  ? await ingestAndUpdate(ctx, result, api.public.ingestBody)
@@ -623,7 +667,11 @@ export const handleGarminWebhookSkinTemp = action({
623
667
  * Handle a webhook for Garmin user metrics (push or ping mode).
624
668
  */
625
669
  export const handleGarminWebhookUserMetrics = action({
626
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
670
+ args: {
671
+ payload: v.any(),
672
+ autoIngest: v.optional(v.boolean()),
673
+ rawPassthrough: v.optional(v.boolean()),
674
+ },
627
675
  handler: async (ctx, args): Promise<WebhookResult> => {
628
676
  const shouldIngest = args.autoIngest !== false;
629
677
  if (isWebhookPushMode(args.payload)) {
@@ -635,7 +683,7 @@ export const handleGarminWebhookUserMetrics = action({
635
683
  ) {
636
684
  const result: WebhookResult = await ctx.runAction(
637
685
  internal.garmin.private.processUserMetricsPushPayload,
638
- { payload: args.payload },
686
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
639
687
  );
640
688
  return shouldIngest
641
689
  ? await ingestAndUpdate(ctx, result, api.public.ingestBody)
@@ -666,7 +714,11 @@ export const handleGarminWebhookUserMetrics = action({
666
714
  * Handle a webhook for Garmin menstrual cycle tracking (push or ping mode).
667
715
  */
668
716
  export const handleGarminWebhookMenstrualCycleTracking = action({
669
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
717
+ args: {
718
+ payload: v.any(),
719
+ autoIngest: v.optional(v.boolean()),
720
+ rawPassthrough: v.optional(v.boolean()),
721
+ },
670
722
  handler: async (ctx, args): Promise<WebhookResult> => {
671
723
  const shouldIngest = args.autoIngest !== false;
672
724
  if (isWebhookPushMode(args.payload)) {
@@ -678,7 +730,7 @@ export const handleGarminWebhookMenstrualCycleTracking = action({
678
730
  ) {
679
731
  const result: WebhookResult = await ctx.runAction(
680
732
  internal.garmin.private.processMenstrualCycleTrackingPushPayload,
681
- { payload: args.payload },
733
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
682
734
  );
683
735
  return shouldIngest
684
736
  ? await ingestAndUpdate(ctx, result, api.public.ingestMenstruation)
@@ -709,7 +761,11 @@ export const handleGarminWebhookMenstrualCycleTracking = action({
709
761
  * Handle a webhook for Garmin HRV summaries (push or ping mode).
710
762
  */
711
763
  export const handleGarminWebhookHRVSummary = action({
712
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
764
+ args: {
765
+ payload: v.any(),
766
+ autoIngest: v.optional(v.boolean()),
767
+ rawPassthrough: v.optional(v.boolean()),
768
+ },
713
769
  handler: async (ctx, args): Promise<WebhookResult> => {
714
770
  const shouldIngest = args.autoIngest !== false;
715
771
  if (isWebhookPushMode(args.payload)) {
@@ -721,7 +777,7 @@ export const handleGarminWebhookHRVSummary = action({
721
777
  ) {
722
778
  const result: WebhookResult = await ctx.runAction(
723
779
  internal.garmin.private.processHRVSummaryPushPayload,
724
- { payload: args.payload },
780
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
725
781
  );
726
782
  return shouldIngest
727
783
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -752,7 +808,11 @@ export const handleGarminWebhookHRVSummary = action({
752
808
  * Handle a webhook for Garmin stress detail summaries (push or ping mode).
753
809
  */
754
810
  export const handleGarminWebhookStress = action({
755
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
811
+ args: {
812
+ payload: v.any(),
813
+ autoIngest: v.optional(v.boolean()),
814
+ rawPassthrough: v.optional(v.boolean()),
815
+ },
756
816
  handler: async (ctx, args): Promise<WebhookResult> => {
757
817
  const shouldIngest = args.autoIngest !== false;
758
818
  if (isWebhookPushMode(args.payload)) {
@@ -764,7 +824,7 @@ export const handleGarminWebhookStress = action({
764
824
  ) {
765
825
  const result: WebhookResult = await ctx.runAction(
766
826
  internal.garmin.private.processStressPushPayload,
767
- { payload: args.payload },
827
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
768
828
  );
769
829
  return shouldIngest
770
830
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -795,7 +855,11 @@ export const handleGarminWebhookStress = action({
795
855
  * Handle a webhook for Garmin pulse oximetry (SpO2) summaries (push or ping mode).
796
856
  */
797
857
  export const handleGarminWebhookPulseOx = action({
798
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
858
+ args: {
859
+ payload: v.any(),
860
+ autoIngest: v.optional(v.boolean()),
861
+ rawPassthrough: v.optional(v.boolean()),
862
+ },
799
863
  handler: async (ctx, args): Promise<WebhookResult> => {
800
864
  const shouldIngest = args.autoIngest !== false;
801
865
  if (isWebhookPushMode(args.payload)) {
@@ -807,7 +871,7 @@ export const handleGarminWebhookPulseOx = action({
807
871
  ) {
808
872
  const result: WebhookResult = await ctx.runAction(
809
873
  internal.garmin.private.processPulseOxPushPayload,
810
- { payload: args.payload },
874
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
811
875
  );
812
876
  return shouldIngest
813
877
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -838,7 +902,11 @@ export const handleGarminWebhookPulseOx = action({
838
902
  * Handle a webhook for Garmin respiration summaries (push or ping mode).
839
903
  */
840
904
  export const handleGarminWebhookRespiration = action({
841
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
905
+ args: {
906
+ payload: v.any(),
907
+ autoIngest: v.optional(v.boolean()),
908
+ rawPassthrough: v.optional(v.boolean()),
909
+ },
842
910
  handler: async (ctx, args): Promise<WebhookResult> => {
843
911
  const shouldIngest = args.autoIngest !== false;
844
912
  if (isWebhookPushMode(args.payload)) {
@@ -850,7 +918,7 @@ export const handleGarminWebhookRespiration = action({
850
918
  ) {
851
919
  const result: WebhookResult = await ctx.runAction(
852
920
  internal.garmin.private.processRespirationPushPayload,
853
- { payload: args.payload },
921
+ { payload: args.payload, rawPassthrough: args.rawPassthrough ?? false },
854
922
  );
855
923
  return shouldIngest
856
924
  ? await ingestAndUpdate(ctx, result, api.public.ingestDaily)
@@ -890,7 +958,11 @@ type GarminDeregistrationResult = WebhookResult<Record<string, unknown> | null>;
890
958
  * who deregisters after a prior in-app disconnect).
891
959
  */
892
960
  export const handleGarminWebhookDeregistration = action({
893
- args: { payload: v.any(), autoIngest: v.optional(v.boolean()) },
961
+ args: {
962
+ payload: v.any(),
963
+ autoIngest: v.optional(v.boolean()),
964
+ rawPassthrough: v.optional(v.boolean()),
965
+ },
894
966
  handler: async (ctx, args): Promise<GarminDeregistrationResult> => {
895
967
  const shouldIngest = args.autoIngest !== false;
896
968