@nativesquare/soma 0.13.1 → 0.14.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.
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/strava.d.ts +45 -33
- package/dist/client/strava.d.ts.map +1 -1
- package/dist/client/strava.js +138 -22
- package/dist/client/strava.js.map +1 -1
- package/dist/client/types.d.ts +111 -2
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +2 -2
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/component.d.ts +26 -17
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/garmin/auth.d.ts +2 -1
- package/dist/component/garmin/auth.d.ts.map +1 -1
- package/dist/component/garmin/auth.js +6 -1
- package/dist/component/garmin/auth.js.map +1 -1
- package/dist/component/garmin/private.d.ts +18 -143
- package/dist/component/garmin/private.d.ts.map +1 -1
- package/dist/component/garmin/private.js +16 -179
- package/dist/component/garmin/private.js.map +1 -1
- package/dist/component/garmin/public.d.ts +43 -85
- package/dist/component/garmin/public.d.ts.map +1 -1
- package/dist/component/garmin/public.js +155 -32
- package/dist/component/garmin/public.js.map +1 -1
- package/dist/component/garmin/utils.d.ts +48 -0
- package/dist/component/garmin/utils.d.ts.map +1 -1
- package/dist/component/garmin/utils.js +65 -0
- package/dist/component/garmin/utils.js.map +1 -1
- package/dist/component/garmin/webhooks.d.ts +1 -14
- package/dist/component/garmin/webhooks.d.ts.map +1 -1
- package/dist/component/garmin/webhooks.js +17 -28
- package/dist/component/garmin/webhooks.js.map +1 -1
- package/dist/component/private.d.ts +59 -0
- package/dist/component/private.d.ts.map +1 -1
- package/dist/component/private.js +182 -1
- package/dist/component/private.js.map +1 -1
- package/dist/component/public.d.ts +3 -3
- package/dist/component/schema.d.ts +4 -4
- package/dist/component/strava/auth.d.ts +2 -1
- package/dist/component/strava/auth.d.ts.map +1 -1
- package/dist/component/strava/auth.js +6 -1
- package/dist/component/strava/auth.js.map +1 -1
- package/dist/component/strava/public.d.ts +21 -56
- package/dist/component/strava/public.d.ts.map +1 -1
- package/dist/component/strava/public.js +89 -132
- package/dist/component/strava/public.js.map +1 -1
- package/dist/component/strava/webhooks.d.ts +10 -0
- package/dist/component/strava/webhooks.d.ts.map +1 -0
- package/dist/component/strava/webhooks.js +231 -0
- package/dist/component/strava/webhooks.js.map +1 -0
- package/dist/component/utils.d.ts +10 -0
- package/dist/component/utils.d.ts.map +1 -1
- package/dist/component/utils.js.map +1 -1
- package/dist/component/validators/daily.d.ts +2 -2
- package/dist/component/validators/shared.d.ts +16 -0
- package/dist/component/validators/shared.d.ts.map +1 -1
- package/dist/component/validators/shared.js +2 -2
- package/dist/component/validators/shared.js.map +1 -1
- package/dist/validators.d.ts +5 -4
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +9 -1
- package/src/client/strava.ts +190 -26
- package/src/client/types.ts +129 -2
- package/src/component/_generated/api.ts +2 -2
- package/src/component/_generated/component.ts +38 -6
- package/src/component/garmin/auth.ts +9 -2
- package/src/component/garmin/private.ts +34 -255
- package/src/component/garmin/public.ts +221 -64
- package/src/component/garmin/utils.ts +102 -0
- package/src/component/garmin/webhooks.ts +36 -59
- package/src/component/private.ts +245 -1
- package/src/component/strava/auth.ts +9 -2
- package/src/component/strava/public.ts +106 -171
- package/src/component/strava/webhooks.ts +310 -0
- package/src/component/utils.ts +11 -0
- package/src/component/validators/shared.ts +48 -2
- package/src/validators.ts +1 -0
- package/dist/component/strava/private.d.ts +0 -49
- package/dist/component/strava/private.d.ts.map +0 -1
- package/dist/component/strava/private.js +0 -121
- package/dist/component/strava/private.js.map +0 -1
- package/src/component/strava/private.ts +0 -147
package/dist/client/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { ComponentApi } from "../component/_generated/component.js";
|
|
2
2
|
import type { MutationCtx, QueryCtx, SomaStravaConfig, SomaGarminConfig, IngestArgs, ListTimeRangeArgs, PaginateTimeRangeArgs, RegisterRoutesOptions } from "./types.js";
|
|
3
|
-
export type { ActionCtx, SomaError, SomaResult, SomaStravaConfig, SomaGarminConfig, IngestArgs, TimeRangeArgs, ListTimeRangeArgs, PaginateTimeRangeArgs, StravaOAuthOptions, StravaConnectEvent, GarminConnectEvent, GarminWebhookActionArgs, GarminWebhookActionResult, GarminWebhookEvent, GarminOAuthOptions, GarminWebhookEventName, GarminWebhookHandler, GarminWebhookOptions, RegisterRoutesOptions, } from "./types.js";
|
|
3
|
+
export type { ActionCtx, SomaError, SomaErrorType, SomaResult, SomaStravaConfig, SomaGarminConfig, IngestArgs, TimeRangeArgs, ListTimeRangeArgs, PaginateTimeRangeArgs, StravaOAuthOptions, StravaConnectEvent, GarminConnectEvent, GarminWebhookActionArgs, GarminWebhookActionResult, GarminWebhookEvent, GarminOAuthOptions, GarminWebhookEventName, GarminWebhookHandler, GarminWebhookOptions, StravaWebhookActionArgs, StravaWebhookActionResult, StravaWebhookEvent, StravaWebhookEventName, StravaWebhookHandler, StravaWebhookItem, StravaWebhookOptions, RegisterRoutesOptions, } from "./types.js";
|
|
4
4
|
import type { HttpRouter } from "convex/server";
|
|
5
5
|
import { SomaGarmin } from "./garmin.js";
|
|
6
6
|
import { SomaStrava } from "./strava.js";
|
|
7
7
|
export { SomaGarmin } from "./garmin.js";
|
|
8
8
|
export { SomaStrava } from "./strava.js";
|
|
9
|
-
export {
|
|
9
|
+
export { STRAVA_OAUTH_CALLBACK_PATH, STRAVA_WEBHOOK_BASE_PATH } from "./strava.js";
|
|
10
10
|
export { GARMIN_OAUTH_CALLBACK_PATH, GARMIN_WEBHOOK_BASE_PATH } from "./garmin.js";
|
|
11
11
|
export type SomaComponent = ComponentApi;
|
|
12
12
|
/**
|
|
@@ -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,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { SomaGarmin } from "./garmin.js";
|
|
|
2
2
|
import { SomaStrava } from "./strava.js";
|
|
3
3
|
export { SomaGarmin } from "./garmin.js";
|
|
4
4
|
export { SomaStrava } from "./strava.js";
|
|
5
|
-
export {
|
|
5
|
+
export { STRAVA_OAUTH_CALLBACK_PATH, STRAVA_WEBHOOK_BASE_PATH } from "./strava.js";
|
|
6
6
|
export { GARMIN_OAUTH_CALLBACK_PATH, GARMIN_WEBHOOK_BASE_PATH } from "./garmin.js";
|
|
7
7
|
/**
|
|
8
8
|
* Client class for the @nativesquare/soma Convex component.
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/strava.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { SomaComponent } from "./index.js";
|
|
2
2
|
import type { ActionCtx, SomaStravaConfig, RegisterRoutesOptions } from "./types.js";
|
|
3
3
|
import { type HttpRouter } from "convex/server";
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const STRAVA_OAUTH_CALLBACK_PATH = "/api/strava/callback";
|
|
5
|
+
export declare const STRAVA_WEBHOOK_BASE_PATH = "/api/strava/webhook";
|
|
5
6
|
export declare class SomaStrava {
|
|
6
7
|
private component;
|
|
7
8
|
private requireConfig;
|
|
@@ -36,64 +37,75 @@ export declare class SomaStrava {
|
|
|
36
37
|
scope?: string;
|
|
37
38
|
}): Promise<any>;
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
+
* Disconnect a user from Strava.
|
|
40
41
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
42
|
+
* Revokes the token at Strava (best-effort), deletes stored tokens,
|
|
43
|
+
* and sets the connection to inactive.
|
|
43
44
|
*
|
|
44
45
|
* @param ctx - Action context from the host app
|
|
45
46
|
* @param args.userId - The host app's user identifier
|
|
46
|
-
* @param args.after - Only sync activities after this Unix epoch timestamp (for incremental sync)
|
|
47
|
-
* @returns `{ synced, errors }`
|
|
48
47
|
*
|
|
49
48
|
* @example
|
|
50
49
|
* ```ts
|
|
51
|
-
* export const
|
|
50
|
+
* export const disconnectStrava = action({
|
|
52
51
|
* args: { userId: v.string() },
|
|
53
52
|
* handler: async (ctx, { userId }) => {
|
|
54
|
-
*
|
|
53
|
+
* await soma.strava.disconnect(ctx, { userId });
|
|
55
54
|
* },
|
|
56
55
|
* });
|
|
57
56
|
* ```
|
|
58
57
|
*/
|
|
59
|
-
|
|
58
|
+
disconnect(ctx: ActionCtx, args: {
|
|
59
|
+
userId: string;
|
|
60
|
+
}): Promise<null>;
|
|
61
|
+
/**
|
|
62
|
+
* Pull the authenticated athlete profile from Strava.
|
|
63
|
+
*
|
|
64
|
+
* Automatically refreshes the access token if expired.
|
|
65
|
+
*
|
|
66
|
+
* @param ctx - Action context from the host app
|
|
67
|
+
* @param args.userId - The host app's user identifier
|
|
68
|
+
*/
|
|
69
|
+
pullAthlete(ctx: ActionCtx, args: {
|
|
70
|
+
userId: string;
|
|
71
|
+
}): Promise<any>;
|
|
72
|
+
/**
|
|
73
|
+
* Pull activities from Strava.
|
|
74
|
+
*
|
|
75
|
+
* Fetches activities, transforms them into the normalized Soma schema,
|
|
76
|
+
* and ingests them with automatic deduplication.
|
|
77
|
+
*
|
|
78
|
+
* @param ctx - Action context from the host app
|
|
79
|
+
* @param args.userId - The host app's user identifier
|
|
80
|
+
* @param args.after - Only pull activities after this Unix epoch timestamp
|
|
81
|
+
* @param args.before - Only pull activities before this Unix epoch timestamp
|
|
82
|
+
*/
|
|
83
|
+
pullActivities(ctx: ActionCtx, args: {
|
|
60
84
|
userId: string;
|
|
61
85
|
after?: number;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
synced: {
|
|
65
|
-
activities: number;
|
|
66
|
-
athletes: number;
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
errors: Array<{
|
|
70
|
-
id: string;
|
|
71
|
-
message: string;
|
|
72
|
-
type: string;
|
|
73
|
-
}>;
|
|
74
|
-
}>;
|
|
86
|
+
before?: number;
|
|
87
|
+
}): Promise<any>;
|
|
75
88
|
/**
|
|
76
|
-
*
|
|
89
|
+
* Pull all supported data types from Strava in a single call.
|
|
77
90
|
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
91
|
+
* Equivalent to calling `pullAthlete` and `pullActivities`. Automatically
|
|
92
|
+
* refreshes the access token if expired.
|
|
80
93
|
*
|
|
81
94
|
* @param ctx - Action context from the host app
|
|
82
95
|
* @param args.userId - The host app's user identifier
|
|
96
|
+
* @param args.after - Only pull activities after this Unix epoch timestamp
|
|
97
|
+
* @param args.before - Only pull activities before this Unix epoch timestamp
|
|
83
98
|
*
|
|
84
99
|
* @example
|
|
85
100
|
* ```ts
|
|
86
|
-
*
|
|
87
|
-
* args: { userId: v.string() },
|
|
88
|
-
* handler: async (ctx, { userId }) => {
|
|
89
|
-
* await soma.strava.disconnect(ctx, { userId });
|
|
90
|
-
* },
|
|
91
|
-
* });
|
|
101
|
+
* await soma.strava.pullAll(ctx, { userId: "user_123" });
|
|
92
102
|
* ```
|
|
93
103
|
*/
|
|
94
|
-
|
|
104
|
+
pullAll(ctx: ActionCtx, args: {
|
|
95
105
|
userId: string;
|
|
96
|
-
|
|
106
|
+
after?: number;
|
|
107
|
+
before?: number;
|
|
108
|
+
}): Promise<any>;
|
|
97
109
|
static registerRoutes(http: HttpRouter, component: SomaComponent, opts?: RegisterRoutesOptions["strava"]): void;
|
|
98
110
|
}
|
|
99
111
|
//# sourceMappingURL=strava.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strava.d.ts","sourceRoot":"","sources":["../../src/client/strava.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"strava.d.ts","sourceRoot":"","sources":["../../src/client/strava.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EAItB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAE9D,qBAAa,UAAU;IAEnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;gBADb,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,MAAM,gBAAgB;IAG/C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,UAAU,CACd,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAW/D;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CACd,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAU1B;;;;;;;OAOG;IACG,WAAW,CACf,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAU1B;;;;;;;;;;OAUG;IACG,cAAc,CAClB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAUH;;;;;;;;;;;;;;;OAeG;IACG,OAAO,CACX,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAUH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,aAAa,EACxB,IAAI,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC;CAkMzC"}
|
package/dist/client/strava.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { httpActionGeneric } from "convex/server";
|
|
2
|
-
export const
|
|
2
|
+
export const STRAVA_OAUTH_CALLBACK_PATH = "/api/strava/callback";
|
|
3
|
+
export const STRAVA_WEBHOOK_BASE_PATH = "/api/strava/webhook";
|
|
3
4
|
export class SomaStrava {
|
|
4
5
|
component;
|
|
5
6
|
requireConfig;
|
|
@@ -41,56 +42,86 @@ export class SomaStrava {
|
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
|
-
*
|
|
45
|
+
* Disconnect a user from Strava.
|
|
45
46
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
47
|
+
* Revokes the token at Strava (best-effort), deletes stored tokens,
|
|
48
|
+
* and sets the connection to inactive.
|
|
48
49
|
*
|
|
49
50
|
* @param ctx - Action context from the host app
|
|
50
51
|
* @param args.userId - The host app's user identifier
|
|
51
|
-
* @param args.after - Only sync activities after this Unix epoch timestamp (for incremental sync)
|
|
52
|
-
* @returns `{ synced, errors }`
|
|
53
52
|
*
|
|
54
53
|
* @example
|
|
55
54
|
* ```ts
|
|
56
|
-
* export const
|
|
55
|
+
* export const disconnectStrava = action({
|
|
57
56
|
* args: { userId: v.string() },
|
|
58
57
|
* handler: async (ctx, { userId }) => {
|
|
59
|
-
*
|
|
58
|
+
* await soma.strava.disconnect(ctx, { userId });
|
|
60
59
|
* },
|
|
61
60
|
* });
|
|
62
61
|
* ```
|
|
63
62
|
*/
|
|
64
|
-
async
|
|
63
|
+
async disconnect(ctx, args) {
|
|
65
64
|
const config = this.requireConfig();
|
|
66
|
-
return await ctx.runAction(this.component.strava.public.
|
|
65
|
+
return await ctx.runAction(this.component.strava.public.disconnectStrava, {
|
|
67
66
|
...args,
|
|
68
67
|
clientId: config.clientId,
|
|
69
68
|
clientSecret: config.clientSecret,
|
|
70
69
|
});
|
|
71
70
|
}
|
|
72
71
|
/**
|
|
73
|
-
*
|
|
72
|
+
* Pull the authenticated athlete profile from Strava.
|
|
74
73
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
74
|
+
* Automatically refreshes the access token if expired.
|
|
75
|
+
*
|
|
76
|
+
* @param ctx - Action context from the host app
|
|
77
|
+
* @param args.userId - The host app's user identifier
|
|
78
|
+
*/
|
|
79
|
+
async pullAthlete(ctx, args) {
|
|
80
|
+
const config = this.requireConfig();
|
|
81
|
+
return await ctx.runAction(this.component.strava.public.pullAthlete, {
|
|
82
|
+
...args,
|
|
83
|
+
clientId: config.clientId,
|
|
84
|
+
clientSecret: config.clientSecret,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Pull activities from Strava.
|
|
89
|
+
*
|
|
90
|
+
* Fetches activities, transforms them into the normalized Soma schema,
|
|
91
|
+
* and ingests them with automatic deduplication.
|
|
92
|
+
*
|
|
93
|
+
* @param ctx - Action context from the host app
|
|
94
|
+
* @param args.userId - The host app's user identifier
|
|
95
|
+
* @param args.after - Only pull activities after this Unix epoch timestamp
|
|
96
|
+
* @param args.before - Only pull activities before this Unix epoch timestamp
|
|
97
|
+
*/
|
|
98
|
+
async pullActivities(ctx, args) {
|
|
99
|
+
const config = this.requireConfig();
|
|
100
|
+
return await ctx.runAction(this.component.strava.public.pullActivities, {
|
|
101
|
+
...args,
|
|
102
|
+
clientId: config.clientId,
|
|
103
|
+
clientSecret: config.clientSecret,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Pull all supported data types from Strava in a single call.
|
|
108
|
+
*
|
|
109
|
+
* Equivalent to calling `pullAthlete` and `pullActivities`. Automatically
|
|
110
|
+
* refreshes the access token if expired.
|
|
77
111
|
*
|
|
78
112
|
* @param ctx - Action context from the host app
|
|
79
113
|
* @param args.userId - The host app's user identifier
|
|
114
|
+
* @param args.after - Only pull activities after this Unix epoch timestamp
|
|
115
|
+
* @param args.before - Only pull activities before this Unix epoch timestamp
|
|
80
116
|
*
|
|
81
117
|
* @example
|
|
82
118
|
* ```ts
|
|
83
|
-
*
|
|
84
|
-
* args: { userId: v.string() },
|
|
85
|
-
* handler: async (ctx, { userId }) => {
|
|
86
|
-
* await soma.strava.disconnect(ctx, { userId });
|
|
87
|
-
* },
|
|
88
|
-
* });
|
|
119
|
+
* await soma.strava.pullAll(ctx, { userId: "user_123" });
|
|
89
120
|
* ```
|
|
90
121
|
*/
|
|
91
|
-
async
|
|
122
|
+
async pullAll(ctx, args) {
|
|
92
123
|
const config = this.requireConfig();
|
|
93
|
-
return await ctx.runAction(this.component.strava.public.
|
|
124
|
+
return await ctx.runAction(this.component.strava.public.pullAll, {
|
|
94
125
|
...args,
|
|
95
126
|
clientId: config.clientId,
|
|
96
127
|
clientSecret: config.clientSecret,
|
|
@@ -98,7 +129,7 @@ export class SomaStrava {
|
|
|
98
129
|
}
|
|
99
130
|
static registerRoutes(http, component, opts) {
|
|
100
131
|
const oauth = opts?.oauth ?? {};
|
|
101
|
-
const path = oauth.path ??
|
|
132
|
+
const path = oauth.path ?? STRAVA_OAUTH_CALLBACK_PATH;
|
|
102
133
|
http.route({
|
|
103
134
|
path,
|
|
104
135
|
method: "GET",
|
|
@@ -157,6 +188,91 @@ export class SomaStrava {
|
|
|
157
188
|
});
|
|
158
189
|
}),
|
|
159
190
|
});
|
|
191
|
+
// ── Strava Webhook Routes ──────────────────────────────────────
|
|
192
|
+
const webhookCfg = typeof opts?.webhook === "object" ? opts.webhook : undefined;
|
|
193
|
+
if (webhookCfg?.events) {
|
|
194
|
+
const webhookPath = webhookCfg.path ?? STRAVA_WEBHOOK_BASE_PATH;
|
|
195
|
+
const verifyToken = webhookCfg.verifyToken ?? process.env.STRAVA_WEBHOOK_VERIFY_TOKEN;
|
|
196
|
+
const autoIngest = webhookCfg.autoIngest ?? true;
|
|
197
|
+
// GET: Strava subscription verification challenge
|
|
198
|
+
http.route({
|
|
199
|
+
path: webhookPath,
|
|
200
|
+
method: "GET",
|
|
201
|
+
handler: httpActionGeneric(async (_ctx, request) => {
|
|
202
|
+
const url = new URL(request.url);
|
|
203
|
+
const mode = url.searchParams.get("hub.mode");
|
|
204
|
+
const challenge = url.searchParams.get("hub.challenge");
|
|
205
|
+
const token = url.searchParams.get("hub.verify_token");
|
|
206
|
+
if (mode === "subscribe" && token === verifyToken && challenge) {
|
|
207
|
+
return new Response(JSON.stringify({ "hub.challenge": challenge }), { status: 200, headers: { "Content-Type": "application/json" } });
|
|
208
|
+
}
|
|
209
|
+
return new Response("Forbidden", { status: 403 });
|
|
210
|
+
}),
|
|
211
|
+
});
|
|
212
|
+
// POST: Strava webhook event
|
|
213
|
+
http.route({
|
|
214
|
+
path: webhookPath,
|
|
215
|
+
method: "POST",
|
|
216
|
+
handler: httpActionGeneric(async (ctx, request) => {
|
|
217
|
+
let payload;
|
|
218
|
+
try {
|
|
219
|
+
payload = await request.json();
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return new Response("Invalid JSON body", { status: 400 });
|
|
223
|
+
}
|
|
224
|
+
// Determine event name and check if it's registered
|
|
225
|
+
const p = payload;
|
|
226
|
+
const eventName = `${p.object_type}-${p.aspect_type}`;
|
|
227
|
+
if (!webhookCfg.events?.[eventName]) {
|
|
228
|
+
// Event type not registered — silently ignore
|
|
229
|
+
return new Response("OK", { status: 200 });
|
|
230
|
+
}
|
|
231
|
+
const webhookClientId = opts?.clientId ?? process.env.STRAVA_CLIENT_ID;
|
|
232
|
+
const webhookClientSecret = opts?.clientSecret ?? process.env.STRAVA_CLIENT_SECRET;
|
|
233
|
+
if (!webhookClientId || !webhookClientSecret) {
|
|
234
|
+
console.error("[soma] Strava webhook: missing client credentials");
|
|
235
|
+
return new Response("OK", { status: 200 });
|
|
236
|
+
}
|
|
237
|
+
let result;
|
|
238
|
+
try {
|
|
239
|
+
result = await ctx.runAction(component.strava.webhooks.handleStravaWebhook, { payload, clientId: webhookClientId, clientSecret: webhookClientSecret, autoIngest });
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
console.error("[soma] Strava webhook error:", error instanceof Error ? error.message : error);
|
|
243
|
+
}
|
|
244
|
+
if (result) {
|
|
245
|
+
const event = {
|
|
246
|
+
eventName,
|
|
247
|
+
errors: result.errors,
|
|
248
|
+
rawPayload: payload,
|
|
249
|
+
items: result.items,
|
|
250
|
+
};
|
|
251
|
+
// Fire per-event handler
|
|
252
|
+
const specificHandler = webhookCfg.events?.[eventName];
|
|
253
|
+
if (typeof specificHandler === "function") {
|
|
254
|
+
try {
|
|
255
|
+
await specificHandler(ctx, event);
|
|
256
|
+
}
|
|
257
|
+
catch (callbackError) {
|
|
258
|
+
console.error(`[soma] strava webhook events["${eventName}"] callback error:`, callbackError instanceof Error ? callbackError.message : callbackError);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Fire catch-all handler
|
|
262
|
+
if (webhookCfg.onEvent) {
|
|
263
|
+
try {
|
|
264
|
+
await webhookCfg.onEvent(ctx, event);
|
|
265
|
+
}
|
|
266
|
+
catch (callbackError) {
|
|
267
|
+
console.error("[soma] strava webhook onEvent callback error:", callbackError instanceof Error ? callbackError.message : callbackError);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Always return 200 to prevent Strava retries
|
|
272
|
+
return new Response("OK", { status: 200 });
|
|
273
|
+
}),
|
|
274
|
+
});
|
|
275
|
+
}
|
|
160
276
|
}
|
|
161
277
|
}
|
|
162
278
|
//# sourceMappingURL=strava.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strava.js","sourceRoot":"","sources":["../../src/client/strava.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"strava.js","sourceRoot":"","sources":["../../src/client/strava.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export interface SomaGarminConfig {
|
|
|
28
28
|
/** Your Garmin application's Client Secret. */
|
|
29
29
|
clientSecret: string;
|
|
30
30
|
}
|
|
31
|
+
export type { SomaErrorType } from "../component/validators/shared.js";
|
|
31
32
|
/**
|
|
32
33
|
* A structured error from a Soma operation.
|
|
33
34
|
*
|
|
@@ -36,8 +37,8 @@ export interface SomaGarminConfig {
|
|
|
36
37
|
* (missing connection, nonexistent document) are thrown as exceptions.
|
|
37
38
|
*/
|
|
38
39
|
export interface SomaError {
|
|
39
|
-
/** Category of the failed item
|
|
40
|
-
type:
|
|
40
|
+
/** Category of the failed item — see {@link SomaErrorType} for valid values. */
|
|
41
|
+
type: import("../component/validators/shared.js").SomaErrorType;
|
|
41
42
|
/** Identifier of the failed item, or `"fetch"` for API-level failures. */
|
|
42
43
|
id: string;
|
|
43
44
|
/** Human-readable error description. */
|
|
@@ -158,6 +159,63 @@ export interface GarminWebhookEvent {
|
|
|
158
159
|
export type GarminWebhookEventName = "activities" | "activity-details" | "manually-updated-activities" | "move-iq" | "blood-pressures" | "body-compositions" | "dailies" | "epochs" | "health-snapshot" | "sleeps" | "hrv" | "stress" | "pulse-ox" | "respiration" | "skin-temp" | "user-metrics" | "menstrual-cycle-tracking";
|
|
159
160
|
/** Handler for a specific webhook event or the catch-all `onEvent`. */
|
|
160
161
|
export type GarminWebhookHandler = (ctx: GenericActionCtx<GenericDataModel>, event: GarminWebhookEvent) => Promise<void>;
|
|
162
|
+
/** Strava webhook event type names (object_type + aspect_type combined). */
|
|
163
|
+
export type StravaWebhookEventName = "activity-create" | "activity-update" | "activity-delete" | "athlete-update" | "athlete-deauthorize";
|
|
164
|
+
/** Args accepted by the Strava webhook handler action inside the component. */
|
|
165
|
+
export type StravaWebhookActionArgs = {
|
|
166
|
+
payload: {
|
|
167
|
+
object_type: string;
|
|
168
|
+
object_id: number;
|
|
169
|
+
aspect_type: string;
|
|
170
|
+
owner_id: number;
|
|
171
|
+
subscription_id: number;
|
|
172
|
+
event_time: number;
|
|
173
|
+
updates?: Record<string, unknown>;
|
|
174
|
+
};
|
|
175
|
+
clientId: string;
|
|
176
|
+
clientSecret: string;
|
|
177
|
+
autoIngest?: boolean;
|
|
178
|
+
};
|
|
179
|
+
/** Result returned by the Strava webhook handler action inside the component. */
|
|
180
|
+
export interface StravaWebhookActionResult {
|
|
181
|
+
errors: SomaError[];
|
|
182
|
+
items: StravaWebhookItem[];
|
|
183
|
+
}
|
|
184
|
+
/** A single transformed item from a Strava webhook, with user/connection mapping. */
|
|
185
|
+
export interface StravaWebhookItem {
|
|
186
|
+
/** The Soma connection ID that this data belongs to. */
|
|
187
|
+
connectionId: string;
|
|
188
|
+
/** The host app's user ID. */
|
|
189
|
+
userId: string;
|
|
190
|
+
/** The transformed data in Soma's normalized format, or null for delete/deauthorize events. */
|
|
191
|
+
data: Record<string, unknown> | null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Event data passed to Strava webhook handlers after processing.
|
|
195
|
+
*
|
|
196
|
+
* The host app receives the full set of transformed items plus the raw Strava
|
|
197
|
+
* notification payload, regardless of the `autoIngest` setting.
|
|
198
|
+
*/
|
|
199
|
+
export interface StravaWebhookEvent {
|
|
200
|
+
/** The combined event name (e.g. `"activity-create"`, `"athlete-deauthorize"`). */
|
|
201
|
+
eventName: StravaWebhookEventName;
|
|
202
|
+
/** Errors encountered during connection resolution, data fetching, or transformation. */
|
|
203
|
+
errors: SomaError[];
|
|
204
|
+
/** The raw Strava webhook notification payload. */
|
|
205
|
+
rawPayload: unknown;
|
|
206
|
+
/**
|
|
207
|
+
* Transformed items in Soma's normalized format.
|
|
208
|
+
*
|
|
209
|
+
* For `activity-create` / `activity-update` / `athlete-update`, contains the
|
|
210
|
+
* fetched and transformed data. For `activity-delete` / `athlete-deauthorize`,
|
|
211
|
+
* items have `data: null`.
|
|
212
|
+
*
|
|
213
|
+
* When `autoIngest` is `true`, these are the same items written to the database.
|
|
214
|
+
*/
|
|
215
|
+
items: StravaWebhookItem[];
|
|
216
|
+
}
|
|
217
|
+
/** Handler for a specific Strava webhook event or the catch-all `onEvent`. */
|
|
218
|
+
export type StravaWebhookHandler = (ctx: GenericActionCtx<GenericDataModel>, event: StravaWebhookEvent) => Promise<void>;
|
|
161
219
|
/**
|
|
162
220
|
* Per-provider options for `registerRoutes`.
|
|
163
221
|
*/
|
|
@@ -214,6 +272,50 @@ export interface GarminWebhookOptions {
|
|
|
214
272
|
*/
|
|
215
273
|
events?: Partial<Record<GarminWebhookEventName, GarminWebhookHandler | true>>;
|
|
216
274
|
}
|
|
275
|
+
export interface StravaWebhookOptions {
|
|
276
|
+
/** HTTP path for the webhook endpoint. @default "/api/strava/webhook" */
|
|
277
|
+
path?: string;
|
|
278
|
+
/**
|
|
279
|
+
* Strava webhook subscription verify token.
|
|
280
|
+
* Must match the token used when creating the subscription via Strava's API.
|
|
281
|
+
* Falls back to `STRAVA_WEBHOOK_VERIFY_TOKEN` env var.
|
|
282
|
+
*/
|
|
283
|
+
verifyToken?: string;
|
|
284
|
+
/**
|
|
285
|
+
* Whether to automatically ingest transformed data into the Soma database.
|
|
286
|
+
*
|
|
287
|
+
* When `true` (default), fetched data is transformed and written to the
|
|
288
|
+
* database automatically. When `false`, the webhook still fetches and
|
|
289
|
+
* transforms the data, but skips the database write — useful when you want
|
|
290
|
+
* to handle ingestion yourself via the `onEvent` / per-event callbacks.
|
|
291
|
+
*
|
|
292
|
+
* @default true
|
|
293
|
+
*/
|
|
294
|
+
autoIngest?: boolean;
|
|
295
|
+
/** Called after every webhook event is processed, regardless of event type. */
|
|
296
|
+
onEvent?: StravaWebhookHandler;
|
|
297
|
+
/**
|
|
298
|
+
* Per-event-type webhook handlers.
|
|
299
|
+
*
|
|
300
|
+
* Unlike Garmin (which registers per-type HTTP routes), Strava sends all
|
|
301
|
+
* events to a single endpoint. **Only event types listed here are processed.**
|
|
302
|
+
* Unlisted event types are silently ignored (200 returned, no processing).
|
|
303
|
+
*
|
|
304
|
+
* Pass a handler function for custom logic after processing,
|
|
305
|
+
* or `true` to enable default processing for that event type.
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* events: {
|
|
310
|
+
* "activity-create": async (ctx, event) => { // custom side-effect },
|
|
311
|
+
* "activity-update": true, // default processing only
|
|
312
|
+
* "athlete-update": true,
|
|
313
|
+
* "athlete-deauthorize": true,
|
|
314
|
+
* }
|
|
315
|
+
* ```
|
|
316
|
+
*/
|
|
317
|
+
events?: Partial<Record<StravaWebhookEventName, StravaWebhookHandler | true>>;
|
|
318
|
+
}
|
|
217
319
|
export interface RegisterRoutesOptions {
|
|
218
320
|
strava?: {
|
|
219
321
|
/** Override STRAVA_CLIENT_ID env var. */
|
|
@@ -222,6 +324,13 @@ export interface RegisterRoutesOptions {
|
|
|
222
324
|
clientSecret?: string;
|
|
223
325
|
/** OAuth callback configuration. */
|
|
224
326
|
oauth?: StravaOAuthOptions;
|
|
327
|
+
/**
|
|
328
|
+
* Webhook configuration.
|
|
329
|
+
*
|
|
330
|
+
* Disabled by default. Only event types listed in `events` are processed.
|
|
331
|
+
* Omit entirely or set to `false` to skip webhook routes.
|
|
332
|
+
*/
|
|
333
|
+
webhook?: StravaWebhookOptions | false;
|
|
225
334
|
};
|
|
226
335
|
garmin?: {
|
|
227
336
|
/** Override GARMIN_CLIENT_ID env var. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EACnB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,IAAI,CAC1B,kBAAkB,CAAC,gBAAgB,CAAC,EACpC,UAAU,GAAG,aAAa,CAC7B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,IAAI,CACxB,gBAAgB,CAAC,gBAAgB,CAAC,EAClC,UAAU,GAAG,aAAa,GAAG,WAAW,CAC3C,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|