@nativesquare/soma 0.2.0 → 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAkEA,eAAO,MAAM,mBAAmB;;;;;CAAuB,CAAC;AACxD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAAwC,CAAC;AACtE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyC,CAAC;AACxE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAC;AAChE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsC,CAAC;AAClE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsC,CAAC;AAClE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA6C,CAAC;AAChF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0C,CAAC;AAC1E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAIF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;6BAAqC,CAAC;AAC9D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAsC,CAAC;AAChE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAkC,CAAC;AACxD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAmC,CAAC;AAC1D,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAmC,CAAC;AAC1D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAA0C,CAAC;AACxE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAuC,CAAC;AAClE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAA4C,CAAC"}
@@ -0,0 +1,78 @@
1
+ // ─── Soma Validators ─────────────────────────────────────────────────────────
2
+ // Re-exports the Convex validators for each Soma table so host apps can use
3
+ // them for type-safe argument validation in their own mutations.
4
+ //
5
+ // Two flavors are exported for each table:
6
+ //
7
+ // *Validator — Full validator including connectionId (v.string()) and userId.
8
+ // Use when the mutation args map 1:1 to a soma.ingestX() call.
9
+ //
10
+ // *Data — Data-only validator (no connectionId/userId).
11
+ // Use when connection is resolved server-side and the client
12
+ // only sends the health data payload.
13
+ //
14
+ // ─── Examples ────────────────────────────────────────────────────────────────
15
+ //
16
+ // Direct ingest (client provides connectionId):
17
+ //
18
+ // import { activityValidator } from "@nativesquare/soma/validators";
19
+ //
20
+ // export const storeActivity = mutation({
21
+ // args: activityValidator,
22
+ // handler: async (ctx, args) => {
23
+ // await soma.ingestActivity(ctx, args);
24
+ // },
25
+ // });
26
+ //
27
+ // Batch sync (connection resolved server-side):
28
+ //
29
+ // import { activityData } from "@nativesquare/soma/validators";
30
+ //
31
+ // export const syncHealthKit = mutation({
32
+ // args: { activities: v.array(v.object(activityData)) },
33
+ // handler: async (ctx, args) => {
34
+ // const connectionId = await soma.connect(ctx, { userId, provider: "HEALTHKIT" });
35
+ // for (const activity of args.activities) {
36
+ // await soma.ingestActivity(ctx, { connectionId, userId, ...activity });
37
+ // }
38
+ // },
39
+ // });
40
+ import { v } from "convex/values";
41
+ import { connectionValidator as _connectionValidator } from "./component/validators/connection.js";
42
+ import { athleteValidator as _athleteValidator } from "./component/validators/athlete.js";
43
+ import { activityValidator as _activityValidator } from "./component/validators/activity.js";
44
+ import { bodyValidator as _bodyValidator } from "./component/validators/body.js";
45
+ import { dailyValidator as _dailyValidator } from "./component/validators/daily.js";
46
+ import { sleepValidator as _sleepValidator } from "./component/validators/sleep.js";
47
+ import { menstruationValidator as _menstruationValidator } from "./component/validators/menstruation.js";
48
+ import { nutritionValidator as _nutritionValidator } from "./component/validators/nutrition.js";
49
+ import { plannedWorkoutValidator as _plannedWorkoutValidator } from "./component/validators/plannedWorkout.js";
50
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
51
+ const asString = { connectionId: v.string() };
52
+ function stripConnection(validator) {
53
+ const { connectionId, userId, ...rest } = validator;
54
+ return rest;
55
+ }
56
+ // ─── Full validators (connectionId as v.string() + userId) ───────────────────
57
+ export const connectionValidator = _connectionValidator;
58
+ export const athleteValidator = { ..._athleteValidator, ...asString };
59
+ export const activityValidator = { ..._activityValidator, ...asString };
60
+ export const bodyValidator = { ..._bodyValidator, ...asString };
61
+ export const dailyValidator = { ..._dailyValidator, ...asString };
62
+ export const sleepValidator = { ..._sleepValidator, ...asString };
63
+ export const menstruationValidator = { ..._menstruationValidator, ...asString };
64
+ export const nutritionValidator = { ..._nutritionValidator, ...asString };
65
+ export const plannedWorkoutValidator = {
66
+ ..._plannedWorkoutValidator,
67
+ ...asString,
68
+ };
69
+ // ─── Data-only validators (no connectionId / userId) ─────────────────────────
70
+ export const athleteData = stripConnection(_athleteValidator);
71
+ export const activityData = stripConnection(_activityValidator);
72
+ export const bodyData = stripConnection(_bodyValidator);
73
+ export const dailyData = stripConnection(_dailyValidator);
74
+ export const sleepData = stripConnection(_sleepValidator);
75
+ export const menstruationData = stripConnection(_menstruationValidator);
76
+ export const nutritionData = stripConnection(_nutritionValidator);
77
+ export const plannedWorkoutData = stripConnection(_plannedWorkoutValidator);
78
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "bugs": {
7
7
  "url": "https://github.com/NativeSquare/soma/issues"
8
8
  },
9
- "version": "0.2.0",
9
+ "version": "0.3.0",
10
10
  "license": "Apache-2.0",
11
11
  "keywords": [
12
12
  "convex",
@@ -57,6 +57,10 @@
57
57
  "types": "./dist/strava/index.d.ts",
58
58
  "default": "./dist/strava/index.js"
59
59
  },
60
+ "./validators": {
61
+ "types": "./dist/validators.d.ts",
62
+ "default": "./dist/validators.js"
63
+ },
60
64
  "./test": "./src/test.ts",
61
65
  "./_generated/component.js": {
62
66
  "types": "./dist/component/_generated/component.d.ts"
@@ -0,0 +1,89 @@
1
+ // ─── Soma Validators ─────────────────────────────────────────────────────────
2
+ // Re-exports the Convex validators for each Soma table so host apps can use
3
+ // them for type-safe argument validation in their own mutations.
4
+ //
5
+ // Two flavors are exported for each table:
6
+ //
7
+ // *Validator — Full validator including connectionId (v.string()) and userId.
8
+ // Use when the mutation args map 1:1 to a soma.ingestX() call.
9
+ //
10
+ // *Data — Data-only validator (no connectionId/userId).
11
+ // Use when connection is resolved server-side and the client
12
+ // only sends the health data payload.
13
+ //
14
+ // ─── Examples ────────────────────────────────────────────────────────────────
15
+ //
16
+ // Direct ingest (client provides connectionId):
17
+ //
18
+ // import { activityValidator } from "@nativesquare/soma/validators";
19
+ //
20
+ // export const storeActivity = mutation({
21
+ // args: activityValidator,
22
+ // handler: async (ctx, args) => {
23
+ // await soma.ingestActivity(ctx, args);
24
+ // },
25
+ // });
26
+ //
27
+ // Batch sync (connection resolved server-side):
28
+ //
29
+ // import { activityData } from "@nativesquare/soma/validators";
30
+ //
31
+ // export const syncHealthKit = mutation({
32
+ // args: { activities: v.array(v.object(activityData)) },
33
+ // handler: async (ctx, args) => {
34
+ // const connectionId = await soma.connect(ctx, { userId, provider: "HEALTHKIT" });
35
+ // for (const activity of args.activities) {
36
+ // await soma.ingestActivity(ctx, { connectionId, userId, ...activity });
37
+ // }
38
+ // },
39
+ // });
40
+
41
+ import { v } from "convex/values";
42
+ import { connectionValidator as _connectionValidator } from "./component/validators/connection.js";
43
+ import { athleteValidator as _athleteValidator } from "./component/validators/athlete.js";
44
+ import { activityValidator as _activityValidator } from "./component/validators/activity.js";
45
+ import { bodyValidator as _bodyValidator } from "./component/validators/body.js";
46
+ import { dailyValidator as _dailyValidator } from "./component/validators/daily.js";
47
+ import { sleepValidator as _sleepValidator } from "./component/validators/sleep.js";
48
+ import { menstruationValidator as _menstruationValidator } from "./component/validators/menstruation.js";
49
+ import { nutritionValidator as _nutritionValidator } from "./component/validators/nutrition.js";
50
+ import { plannedWorkoutValidator as _plannedWorkoutValidator } from "./component/validators/plannedWorkout.js";
51
+
52
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
53
+
54
+ const asString = { connectionId: v.string() };
55
+
56
+ type WithConnection = { connectionId: unknown; userId: unknown };
57
+
58
+ function stripConnection<T extends WithConnection>(
59
+ validator: T,
60
+ ): Omit<T, "connectionId" | "userId"> {
61
+ const { connectionId, userId, ...rest } = validator;
62
+ return rest as Omit<T, "connectionId" | "userId">;
63
+ }
64
+
65
+ // ─── Full validators (connectionId as v.string() + userId) ───────────────────
66
+
67
+ export const connectionValidator = _connectionValidator;
68
+ export const athleteValidator = { ..._athleteValidator, ...asString };
69
+ export const activityValidator = { ..._activityValidator, ...asString };
70
+ export const bodyValidator = { ..._bodyValidator, ...asString };
71
+ export const dailyValidator = { ..._dailyValidator, ...asString };
72
+ export const sleepValidator = { ..._sleepValidator, ...asString };
73
+ export const menstruationValidator = { ..._menstruationValidator, ...asString };
74
+ export const nutritionValidator = { ..._nutritionValidator, ...asString };
75
+ export const plannedWorkoutValidator = {
76
+ ..._plannedWorkoutValidator,
77
+ ...asString,
78
+ };
79
+
80
+ // ─── Data-only validators (no connectionId / userId) ─────────────────────────
81
+
82
+ export const athleteData = stripConnection(_athleteValidator);
83
+ export const activityData = stripConnection(_activityValidator);
84
+ export const bodyData = stripConnection(_bodyValidator);
85
+ export const dailyData = stripConnection(_dailyValidator);
86
+ export const sleepData = stripConnection(_sleepValidator);
87
+ export const menstruationData = stripConnection(_menstruationValidator);
88
+ export const nutritionData = stripConnection(_nutritionValidator);
89
+ export const plannedWorkoutData = stripConnection(_plannedWorkoutValidator);