@nativesquare/soma 0.3.0 → 0.5.0
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/dist/client/index.d.ts +283 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +328 -0
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +2 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +77 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/garmin.d.ts +164 -0
- package/dist/component/garmin.d.ts.map +1 -0
- package/dist/component/garmin.js +609 -0
- package/dist/component/garmin.js.map +1 -0
- package/dist/component/public.d.ts +761 -761
- package/dist/component/schema.d.ts +405 -388
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +14 -2
- package/dist/component/schema.js.map +1 -1
- package/dist/component/strava.d.ts +5 -4
- package/dist/component/strava.d.ts.map +1 -1
- package/dist/component/strava.js +18 -1
- package/dist/component/strava.js.map +1 -1
- package/dist/component/validators/activity.d.ts +42 -42
- package/dist/component/validators/body.d.ts +47 -47
- package/dist/component/validators/daily.d.ts +17 -17
- package/dist/component/validators/plannedWorkout.d.ts +5 -5
- package/dist/component/validators/samples.d.ts +2 -2
- package/dist/component/validators/shared.d.ts +17 -17
- package/dist/component/validators/sleep.d.ts +17 -17
- package/dist/garmin/activity.d.ts +101 -0
- package/dist/garmin/activity.d.ts.map +1 -0
- package/dist/garmin/activity.js +207 -0
- package/dist/garmin/activity.js.map +1 -0
- package/dist/garmin/auth.d.ts +65 -0
- package/dist/garmin/auth.d.ts.map +1 -0
- package/dist/garmin/auth.js +155 -0
- package/dist/garmin/auth.js.map +1 -0
- package/dist/garmin/body.d.ts +26 -0
- package/dist/garmin/body.d.ts.map +1 -0
- package/dist/garmin/body.js +44 -0
- package/dist/garmin/body.js.map +1 -0
- package/dist/garmin/client.d.ts +99 -0
- package/dist/garmin/client.d.ts.map +1 -0
- package/dist/garmin/client.js +153 -0
- package/dist/garmin/client.js.map +1 -0
- package/dist/garmin/daily.d.ts +74 -0
- package/dist/garmin/daily.d.ts.map +1 -0
- package/dist/garmin/daily.js +143 -0
- package/dist/garmin/daily.js.map +1 -0
- package/dist/garmin/index.d.ts +20 -0
- package/dist/garmin/index.d.ts.map +1 -0
- package/dist/garmin/index.js +21 -0
- package/dist/garmin/index.js.map +1 -0
- package/dist/garmin/maps/activity-type.d.ts +7 -0
- package/dist/garmin/maps/activity-type.d.ts.map +1 -0
- package/dist/garmin/maps/activity-type.js +98 -0
- package/dist/garmin/maps/activity-type.js.map +1 -0
- package/dist/garmin/maps/sleep-level.d.ts +6 -0
- package/dist/garmin/maps/sleep-level.d.ts.map +1 -0
- package/dist/garmin/maps/sleep-level.js +21 -0
- package/dist/garmin/maps/sleep-level.js.map +1 -0
- package/dist/garmin/menstruation.d.ts +23 -0
- package/dist/garmin/menstruation.d.ts.map +1 -0
- package/dist/garmin/menstruation.js +34 -0
- package/dist/garmin/menstruation.js.map +1 -0
- package/dist/garmin/sleep.d.ts +62 -0
- package/dist/garmin/sleep.d.ts.map +1 -0
- package/dist/garmin/sleep.js +125 -0
- package/dist/garmin/sleep.js.map +1 -0
- package/dist/garmin/sync.d.ts +39 -0
- package/dist/garmin/sync.d.ts.map +1 -0
- package/dist/garmin/sync.js +175 -0
- package/dist/garmin/sync.js.map +1 -0
- package/dist/garmin/types.d.ts +212 -0
- package/dist/garmin/types.d.ts.map +1 -0
- package/dist/garmin/types.js +8 -0
- package/dist/garmin/types.js.map +1 -0
- package/dist/validators.d.ts +331 -331
- package/package.json +5 -1
- package/src/client/index.ts +446 -1
- package/src/component/_generated/api.ts +2 -0
- package/src/component/_generated/component.ts +89 -0
- package/src/component/garmin.ts +711 -0
- package/src/component/schema.ts +15 -2
- package/src/component/strava.ts +23 -1
- package/src/garmin/activity.test.ts +178 -0
- package/src/garmin/activity.ts +272 -0
- package/src/garmin/auth.test.ts +128 -0
- package/src/garmin/auth.ts +249 -0
- package/src/garmin/body.ts +59 -0
- package/src/garmin/client.ts +254 -0
- package/src/garmin/daily.ts +211 -0
- package/src/garmin/index.ts +76 -0
- package/src/garmin/maps/activity-type.test.ts +78 -0
- package/src/garmin/maps/activity-type.ts +116 -0
- package/src/garmin/maps/sleep-level.ts +22 -0
- package/src/garmin/menstruation.ts +42 -0
- package/src/garmin/sleep.test.ts +110 -0
- package/src/garmin/sleep.ts +170 -0
- package/src/garmin/sync.ts +223 -0
- package/src/garmin/types.ts +338 -0
package/dist/client/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { ComponentApi } from "../component/_generated/component.js";
|
|
2
2
|
import type { ActionCtx, MutationCtx, QueryCtx } from "./types.js";
|
|
3
|
+
import { type HttpRouter } from "convex/server";
|
|
3
4
|
export type SomaComponent = ComponentApi;
|
|
5
|
+
export declare const STRAVA_CALLBACK_PATH = "/api/strava/callback";
|
|
6
|
+
export declare const GARMIN_CALLBACK_PATH = "/api/garmin/callback";
|
|
4
7
|
/**
|
|
5
8
|
* Configuration for the Strava integration.
|
|
6
9
|
*
|
|
@@ -20,6 +23,19 @@ export interface SomaStravaConfig {
|
|
|
20
23
|
*/
|
|
21
24
|
baseUrl?: string;
|
|
22
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for the Garmin integration.
|
|
28
|
+
*
|
|
29
|
+
* If not provided to the constructor, the Soma class will attempt to
|
|
30
|
+
* read `GARMIN_CONSUMER_KEY` and `GARMIN_CONSUMER_SECRET` from
|
|
31
|
+
* environment variables automatically.
|
|
32
|
+
*/
|
|
33
|
+
export interface SomaGarminConfig {
|
|
34
|
+
/** Your Garmin application's Consumer Key. */
|
|
35
|
+
consumerKey: string;
|
|
36
|
+
/** Your Garmin application's Consumer Secret. */
|
|
37
|
+
consumerSecret: string;
|
|
38
|
+
}
|
|
23
39
|
/**
|
|
24
40
|
* Client class for the @nativesquare/soma Convex component.
|
|
25
41
|
*
|
|
@@ -57,8 +73,10 @@ export interface SomaStravaConfig {
|
|
|
57
73
|
export declare class Soma {
|
|
58
74
|
component: SomaComponent;
|
|
59
75
|
private stravaConfig?;
|
|
76
|
+
private garminConfig?;
|
|
60
77
|
constructor(component: SomaComponent, options?: {
|
|
61
78
|
strava?: SomaStravaConfig;
|
|
79
|
+
garmin?: SomaGarminConfig;
|
|
62
80
|
});
|
|
63
81
|
/**
|
|
64
82
|
* Read Strava config from environment variables.
|
|
@@ -69,6 +87,15 @@ export declare class Soma {
|
|
|
69
87
|
* Get the resolved Strava config, or throw a clear error if not configured.
|
|
70
88
|
*/
|
|
71
89
|
private requireStravaConfig;
|
|
90
|
+
/**
|
|
91
|
+
* Read Garmin config from environment variables.
|
|
92
|
+
* Returns undefined if the required vars are not set.
|
|
93
|
+
*/
|
|
94
|
+
private readGarminEnv;
|
|
95
|
+
/**
|
|
96
|
+
* Get the resolved Garmin config, or throw a clear error if not configured.
|
|
97
|
+
*/
|
|
98
|
+
private requireGarminConfig;
|
|
72
99
|
/**
|
|
73
100
|
* Connect a user to a wearable provider.
|
|
74
101
|
*
|
|
@@ -560,6 +587,189 @@ export declare class Soma {
|
|
|
560
587
|
disconnectStrava(ctx: ActionCtx, args: {
|
|
561
588
|
userId: string;
|
|
562
589
|
}): Promise<null>;
|
|
590
|
+
/**
|
|
591
|
+
* Step 1 of the Garmin OAuth 1.0a flow: obtain a request token.
|
|
592
|
+
*
|
|
593
|
+
* Returns the temporary `token`, `tokenSecret`, and the `authUrl` to
|
|
594
|
+
* redirect the user to.
|
|
595
|
+
*
|
|
596
|
+
* If `userId` is provided, the pending OAuth state is stored inside the
|
|
597
|
+
* component automatically, and the callback handler registered by
|
|
598
|
+
* `registerRoutes` will complete the flow without further host-app
|
|
599
|
+
* intervention. This is the recommended approach.
|
|
600
|
+
*
|
|
601
|
+
* If `userId` is omitted, the host app must store `token` and `tokenSecret`
|
|
602
|
+
* itself and pass them to `connectGarmin` manually.
|
|
603
|
+
*
|
|
604
|
+
* @param ctx - Action context from the host app
|
|
605
|
+
* @param opts.callbackUrl - The URL Garmin will redirect to after authorization
|
|
606
|
+
* @param opts.userId - The host app's user identifier (required for `registerRoutes` flow)
|
|
607
|
+
* @returns `{ token, tokenSecret, authUrl }`
|
|
608
|
+
*
|
|
609
|
+
* @example
|
|
610
|
+
* ```ts
|
|
611
|
+
* // Recommended: pass userId so registerRoutes can handle the callback
|
|
612
|
+
* const { authUrl } = await soma.getGarminRequestToken(ctx, {
|
|
613
|
+
* userId: "user_123",
|
|
614
|
+
* callbackUrl: "https://your-app.convex.site/api/garmin/callback",
|
|
615
|
+
* });
|
|
616
|
+
* // Redirect user to authUrl — the callback is handled automatically
|
|
617
|
+
* ```
|
|
618
|
+
*/
|
|
619
|
+
getGarminRequestToken(ctx: ActionCtx, opts: {
|
|
620
|
+
callbackUrl?: string;
|
|
621
|
+
userId?: string;
|
|
622
|
+
}): Promise<{
|
|
623
|
+
authUrl: string;
|
|
624
|
+
token: string;
|
|
625
|
+
tokenSecret: string;
|
|
626
|
+
}>;
|
|
627
|
+
/**
|
|
628
|
+
* Step 3 of the Garmin OAuth 1.0a flow + initial data sync.
|
|
629
|
+
*
|
|
630
|
+
* Exchanges the request token + verifier for permanent access tokens,
|
|
631
|
+
* creates/reactivates the Soma connection, stores tokens securely,
|
|
632
|
+
* and syncs the last 30 days of all data types (activities, dailies,
|
|
633
|
+
* sleep, body composition, menstruation).
|
|
634
|
+
*
|
|
635
|
+
* Call this from your OAuth callback endpoint after receiving the
|
|
636
|
+
* `oauth_verifier` query parameter from Garmin.
|
|
637
|
+
*
|
|
638
|
+
* @param ctx - Action context from the host app
|
|
639
|
+
* @param args.userId - The host app's user identifier
|
|
640
|
+
* @param args.token - The request token from Step 1
|
|
641
|
+
* @param args.tokenSecret - The request token secret from Step 1
|
|
642
|
+
* @param args.verifier - The oauth_verifier from the callback
|
|
643
|
+
* @returns `{ connectionId, synced, errors }`
|
|
644
|
+
*
|
|
645
|
+
* @example
|
|
646
|
+
* ```ts
|
|
647
|
+
* export const handleGarminCallback = action({
|
|
648
|
+
* args: {
|
|
649
|
+
* userId: v.string(),
|
|
650
|
+
* token: v.string(),
|
|
651
|
+
* tokenSecret: v.string(),
|
|
652
|
+
* verifier: v.string(),
|
|
653
|
+
* },
|
|
654
|
+
* handler: async (ctx, args) => {
|
|
655
|
+
* return await soma.connectGarmin(ctx, args);
|
|
656
|
+
* },
|
|
657
|
+
* });
|
|
658
|
+
* ```
|
|
659
|
+
*/
|
|
660
|
+
connectGarmin(ctx: ActionCtx, args: {
|
|
661
|
+
userId: string;
|
|
662
|
+
token: string;
|
|
663
|
+
tokenSecret: string;
|
|
664
|
+
verifier: string;
|
|
665
|
+
}): Promise<{
|
|
666
|
+
connectionId: string;
|
|
667
|
+
errors: Array<{
|
|
668
|
+
error: string;
|
|
669
|
+
id: string;
|
|
670
|
+
type: string;
|
|
671
|
+
}>;
|
|
672
|
+
synced: {
|
|
673
|
+
activities: number;
|
|
674
|
+
body: number;
|
|
675
|
+
dailies: number;
|
|
676
|
+
menstruation: number;
|
|
677
|
+
sleep: number;
|
|
678
|
+
};
|
|
679
|
+
}>;
|
|
680
|
+
/**
|
|
681
|
+
* Complete a Garmin OAuth flow using stored pending state.
|
|
682
|
+
*
|
|
683
|
+
* This is called automatically by the `registerRoutes` callback handler.
|
|
684
|
+
* It looks up the pending OAuth state stored during `getGarminRequestToken`,
|
|
685
|
+
* exchanges for permanent tokens, creates the connection, and syncs data.
|
|
686
|
+
*
|
|
687
|
+
* @param ctx - Action context from the host app
|
|
688
|
+
* @param args.oauthToken - The oauth_token from the callback query params
|
|
689
|
+
* @param args.oauthVerifier - The oauth_verifier from the callback query params
|
|
690
|
+
* @returns `{ connectionId, synced, errors }`
|
|
691
|
+
*/
|
|
692
|
+
completeGarminOAuth(ctx: ActionCtx, args: {
|
|
693
|
+
oauthToken: string;
|
|
694
|
+
oauthVerifier: string;
|
|
695
|
+
}): Promise<{
|
|
696
|
+
connectionId: string;
|
|
697
|
+
errors: Array<{
|
|
698
|
+
error: string;
|
|
699
|
+
id: string;
|
|
700
|
+
type: string;
|
|
701
|
+
}>;
|
|
702
|
+
synced: {
|
|
703
|
+
activities: number;
|
|
704
|
+
body: number;
|
|
705
|
+
dailies: number;
|
|
706
|
+
menstruation: number;
|
|
707
|
+
sleep: number;
|
|
708
|
+
};
|
|
709
|
+
}>;
|
|
710
|
+
/**
|
|
711
|
+
* Sync all data types from Garmin for an already-connected user.
|
|
712
|
+
*
|
|
713
|
+
* Fetches activities, dailies, sleep, body composition, and menstruation
|
|
714
|
+
* data for the specified time range (defaults to last 30 days).
|
|
715
|
+
*
|
|
716
|
+
* @param ctx - Action context from the host app
|
|
717
|
+
* @param args.userId - The host app's user identifier
|
|
718
|
+
* @param args.startTimeInSeconds - Optional start of time range (Unix epoch seconds)
|
|
719
|
+
* @param args.endTimeInSeconds - Optional end of time range (Unix epoch seconds)
|
|
720
|
+
* @returns `{ synced, errors }`
|
|
721
|
+
*
|
|
722
|
+
* @example
|
|
723
|
+
* ```ts
|
|
724
|
+
* export const syncGarmin = action({
|
|
725
|
+
* args: { userId: v.string() },
|
|
726
|
+
* handler: async (ctx, { userId }) => {
|
|
727
|
+
* return await soma.syncGarmin(ctx, { userId });
|
|
728
|
+
* },
|
|
729
|
+
* });
|
|
730
|
+
* ```
|
|
731
|
+
*/
|
|
732
|
+
syncGarmin(ctx: ActionCtx, args: {
|
|
733
|
+
userId: string;
|
|
734
|
+
startTimeInSeconds?: number;
|
|
735
|
+
endTimeInSeconds?: number;
|
|
736
|
+
}): Promise<{
|
|
737
|
+
errors: Array<{
|
|
738
|
+
error: string;
|
|
739
|
+
id: string;
|
|
740
|
+
type: string;
|
|
741
|
+
}>;
|
|
742
|
+
synced: {
|
|
743
|
+
activities: number;
|
|
744
|
+
body: number;
|
|
745
|
+
dailies: number;
|
|
746
|
+
menstruation: number;
|
|
747
|
+
sleep: number;
|
|
748
|
+
};
|
|
749
|
+
}>;
|
|
750
|
+
/**
|
|
751
|
+
* Disconnect a user from Garmin.
|
|
752
|
+
*
|
|
753
|
+
* Deletes stored tokens and sets the connection to inactive.
|
|
754
|
+
* Garmin OAuth 1.0a tokens cannot be revoked via API, so cleanup
|
|
755
|
+
* is local only.
|
|
756
|
+
*
|
|
757
|
+
* @param ctx - Action context from the host app
|
|
758
|
+
* @param args.userId - The host app's user identifier
|
|
759
|
+
*
|
|
760
|
+
* @example
|
|
761
|
+
* ```ts
|
|
762
|
+
* export const disconnectGarmin = action({
|
|
763
|
+
* args: { userId: v.string() },
|
|
764
|
+
* handler: async (ctx, { userId }) => {
|
|
765
|
+
* await soma.disconnectGarmin(ctx, { userId });
|
|
766
|
+
* },
|
|
767
|
+
* });
|
|
768
|
+
* ```
|
|
769
|
+
*/
|
|
770
|
+
disconnectGarmin(ctx: ActionCtx, args: {
|
|
771
|
+
userId: string;
|
|
772
|
+
}): Promise<null>;
|
|
563
773
|
}
|
|
564
774
|
/**
|
|
565
775
|
* Common args shape for all ingestion methods.
|
|
@@ -599,5 +809,78 @@ type PaginateTimeRangeArgs = TimeRangeArgs & {
|
|
|
599
809
|
cursor: string | null;
|
|
600
810
|
};
|
|
601
811
|
};
|
|
812
|
+
/**
|
|
813
|
+
* Per-provider options for `registerRoutes`.
|
|
814
|
+
*/
|
|
815
|
+
export interface StravaRouteOptions {
|
|
816
|
+
/** HTTP path for the OAuth callback. @default "/api/strava/callback" */
|
|
817
|
+
path?: string;
|
|
818
|
+
/** Override STRAVA_CLIENT_ID env var. */
|
|
819
|
+
clientId?: string;
|
|
820
|
+
/** Override STRAVA_CLIENT_SECRET env var. */
|
|
821
|
+
clientSecret?: string;
|
|
822
|
+
/** Override STRAVA_BASE_URL env var. */
|
|
823
|
+
baseUrl?: string;
|
|
824
|
+
/** URL to redirect the user to after a successful connection. */
|
|
825
|
+
onSuccess?: string;
|
|
826
|
+
}
|
|
827
|
+
export interface GarminRouteOptions {
|
|
828
|
+
/** HTTP path for the OAuth callback. @default "/api/garmin/callback" */
|
|
829
|
+
path?: string;
|
|
830
|
+
/** Override GARMIN_CONSUMER_KEY env var. */
|
|
831
|
+
consumerKey?: string;
|
|
832
|
+
/** Override GARMIN_CONSUMER_SECRET env var. */
|
|
833
|
+
consumerSecret?: string;
|
|
834
|
+
/** URL to redirect the user to after a successful connection. */
|
|
835
|
+
onSuccess?: string;
|
|
836
|
+
}
|
|
837
|
+
export interface RegisterRoutesOptions {
|
|
838
|
+
strava?: StravaRouteOptions;
|
|
839
|
+
garmin?: GarminRouteOptions;
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* Register OAuth callback HTTP routes for Soma providers.
|
|
843
|
+
*
|
|
844
|
+
* Call this from your `convex/http.ts` to set up the callback endpoints
|
|
845
|
+
* that Strava and Garmin redirect to after user authorization. The handlers
|
|
846
|
+
* complete the OAuth exchange, create the connection, and sync data
|
|
847
|
+
* automatically.
|
|
848
|
+
*
|
|
849
|
+
* When called with no `opts`, registers both Strava and Garmin routes with
|
|
850
|
+
* default paths and credentials from environment variables. When `opts` is
|
|
851
|
+
* provided, only registers routes for the providers specified.
|
|
852
|
+
*
|
|
853
|
+
* @param http - The Convex HTTP router from `httpRouter()`
|
|
854
|
+
* @param component - The Soma component reference (`components.soma`)
|
|
855
|
+
* @param opts - Optional per-provider configuration
|
|
856
|
+
*
|
|
857
|
+
* @example
|
|
858
|
+
* ```ts
|
|
859
|
+
* // convex/http.ts
|
|
860
|
+
* import { httpRouter } from "convex/server";
|
|
861
|
+
* import { registerRoutes } from "@nativesquare/soma";
|
|
862
|
+
* import { components } from "./_generated/api";
|
|
863
|
+
*
|
|
864
|
+
* const http = httpRouter();
|
|
865
|
+
* registerRoutes(http, components.soma);
|
|
866
|
+
* export default http;
|
|
867
|
+
* ```
|
|
868
|
+
*
|
|
869
|
+
* @example
|
|
870
|
+
* ```ts
|
|
871
|
+
* // With custom paths and redirect
|
|
872
|
+
* registerRoutes(http, components.soma, {
|
|
873
|
+
* strava: {
|
|
874
|
+
* path: "/oauth/strava/callback",
|
|
875
|
+
* onSuccess: "https://myapp.com/settings",
|
|
876
|
+
* },
|
|
877
|
+
* garmin: {
|
|
878
|
+
* path: "/oauth/garmin/callback",
|
|
879
|
+
* onSuccess: "https://myapp.com/settings",
|
|
880
|
+
* },
|
|
881
|
+
* });
|
|
882
|
+
* ```
|
|
883
|
+
*/
|
|
884
|
+
export declare function registerRoutes(http: HttpRouter, component: SomaComponent, opts?: RegisterRoutesOptions): void;
|
|
602
885
|
export {};
|
|
603
886
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGnE,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|