@strong-together/shared 1.0.5

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/index.mjs ADDED
@@ -0,0 +1,559 @@
1
+ // src/modules/aerobics/aerobics.schemas.ts
2
+ import z from "zod";
3
+ var addAerobicInput = z.object({
4
+ durationMins: z.number(),
5
+ durationSec: z.number(),
6
+ type: z.string()
7
+ });
8
+ var addAerobicsRequest = z.object({
9
+ body: z.object({
10
+ tz: z.string(),
11
+ record: addAerobicInput
12
+ })
13
+ });
14
+ var getAerobicsRequest = z.object({
15
+ query: z.object({
16
+ tz: z.string().optional()
17
+ })
18
+ });
19
+ var aerobicsDailyRecordSchema = z.object({
20
+ type: z.string(),
21
+ duration_sec: z.number(),
22
+ duration_mins: z.number()
23
+ });
24
+ var aerobicsWeeklyRecordSchema = aerobicsDailyRecordSchema.extend({
25
+ workout_time_utc: z.string()
26
+ });
27
+ var weeklyDataSchema = z.object({
28
+ records: z.array(aerobicsWeeklyRecordSchema),
29
+ total_duration_sec: z.number(),
30
+ total_duration_mins: z.number()
31
+ });
32
+ var userAerobicsResponseSchema = z.object({
33
+ daily: z.record(z.string(), z.array(aerobicsDailyRecordSchema)),
34
+ weekly: z.record(z.string(), weeklyDataSchema)
35
+ });
36
+
37
+ // src/modules/analytics/analytics.schemas.ts
38
+ import { z as z2 } from "zod";
39
+ var workoutRmRecordSchema = z2.object({
40
+ exercise: z2.string(),
41
+ pr_weight: z2.number().nullable(),
42
+ pr_reps: z2.number().nullable(),
43
+ max_1rm: z2.number()
44
+ });
45
+ var adherenceExerciseStatsSchema = z2.object({
46
+ planned: z2.number(),
47
+ actual: z2.number(),
48
+ adherence_pct: z2.number().nullable()
49
+ });
50
+ var getAnalyticsResponseSchema = z2.object({
51
+ _1RM: z2.record(z2.string(), workoutRmRecordSchema),
52
+ goals: z2.record(z2.string(), z2.record(z2.string(), adherenceExerciseStatsSchema))
53
+ });
54
+
55
+ // src/modules/auth/password/password.schemas.ts
56
+ import { z as z3 } from "zod";
57
+ var sendChangePassEmailRequest = z3.object({
58
+ body: z3.object({ identifier: z3.string() })
59
+ });
60
+ var resetPasswordRequest = z3.object({
61
+ body: z3.object({
62
+ newPassword: z3.string().min(8, "Password must be at least 8 characters long")
63
+ }),
64
+ query: z3.object({
65
+ token: z3.string().optional()
66
+ })
67
+ });
68
+ var resetPasswordResponseSchema = z3.object({
69
+ ok: z3.boolean()
70
+ });
71
+
72
+ // src/modules/auth/session/session.schemas.ts
73
+ import { z as z4 } from "zod";
74
+ var loginRequest = z4.object({
75
+ body: z4.object({
76
+ identifier: z4.string().min(3).refine(
77
+ (val) => {
78
+ const isEmail = z4.string().email().safeParse(val).success;
79
+ const isUsername = /^[a-zA-Z0-9_]{3,20}$/.test(val);
80
+ return isEmail || isUsername;
81
+ },
82
+ {
83
+ message: "Must be a valid email or username"
84
+ }
85
+ ),
86
+ password: z4.string().min(1, "Username and password are required")
87
+ })
88
+ });
89
+ var loginResponseSchema = z4.object({
90
+ message: z4.string(),
91
+ user: z4.string(),
92
+ accessToken: z4.string(),
93
+ refreshToken: z4.string()
94
+ });
95
+ var logoutResponseSchema = z4.object({
96
+ message: z4.string()
97
+ });
98
+ var refreshTokenResponseSchema = z4.object({
99
+ message: z4.string(),
100
+ accessToken: z4.string(),
101
+ refreshToken: z4.string(),
102
+ userId: z4.string()
103
+ });
104
+
105
+ // src/modules/auth/verification/verification.schemas.ts
106
+ import z5 from "zod";
107
+ var verifyAccountRequest = z5.object({
108
+ query: z5.object({
109
+ token: z5.string().optional()
110
+ })
111
+ });
112
+ var sendVerificationMailRequest = z5.object({
113
+ body: z5.object({ email: z5.string().trim().email("Invalid email") })
114
+ });
115
+ var changeEmailAndVerifyRequest = z5.object({
116
+ body: z5.object({ username: z5.string(), password: z5.string(), newEmail: z5.string().trim().email("Invalid email") })
117
+ });
118
+ var checkUserVerifyRequest = z5.object({
119
+ query: z5.object({ username: z5.string() })
120
+ });
121
+
122
+ // src/modules/bootstrap/bootstrap.schemas.ts
123
+ import { z as z10 } from "zod";
124
+
125
+ // src/modules/messages/messages.schemas.ts
126
+ import { z as z6 } from "zod";
127
+ var getAllMessagesRequest = z6.object({
128
+ query: z6.object({
129
+ tz: z6.string()
130
+ })
131
+ });
132
+ var allUserMessageSchema = z6.object({
133
+ id: z6.string(),
134
+ subject: z6.string(),
135
+ msg: z6.string(),
136
+ sent_at: z6.string(),
137
+ is_read: z6.boolean(),
138
+ sender_full_name: z6.string(),
139
+ sender_profile_image_url: z6.string().nullable()
140
+ });
141
+ var getAllUserMessagesResponseSchema = z6.object({
142
+ messages: z6.array(allUserMessageSchema)
143
+ });
144
+ var markMessageAsReadRequest = z6.object({
145
+ params: z6.object({
146
+ id: z6.string()
147
+ // MSG ID
148
+ })
149
+ });
150
+ var messageAsReadSchema = z6.object({
151
+ id: z6.string(),
152
+ is_read: z6.boolean()
153
+ });
154
+ var markMessageAsReadResponseSchema = messageAsReadSchema;
155
+ var deleteMessageRequest = z6.object({
156
+ params: z6.object({
157
+ id: z6.string()
158
+ // MSG ID
159
+ })
160
+ });
161
+ var deletedMessageSchema = z6.object({
162
+ id: z6.string()
163
+ });
164
+ var deleteMessageResponseSchema = deletedMessageSchema;
165
+
166
+ // src/modules/user/update/update.schemas.ts
167
+ import { z as z7 } from "zod";
168
+ var updateUserRequest = z7.object({
169
+ body: z7.object({
170
+ username: z7.string().trim().min(3, "Username must be at least 3 characters").max(15, "Username must be at most 15 characters").regex(/^[a-zA-Z0-9_]+$/, "Username may contain letters, numbers, and underscore only"),
171
+ fullName: z7.string().trim().min(1, "Full name is required").max(20, "Full name is too long").regex(/^[a-zA-Z\s]+$/, "Full name may contain letters and spaces only"),
172
+ email: z7.string().trim().toLowerCase().email("Invalid email format")
173
+ }).partial()
174
+ });
175
+ var deleteProfilePicRequest = z7.object({
176
+ body: z7.object({
177
+ path: z7.string()
178
+ })
179
+ });
180
+ var userDataSchema = z7.object({
181
+ id: z7.string(),
182
+ username: z7.string(),
183
+ email: z7.string().nullable(),
184
+ name: z7.string(),
185
+ gender: z7.string(),
186
+ created_at: z7.string(),
187
+ profile_image_url: z7.string().nullable(),
188
+ push_token: z7.string().nullable(),
189
+ role: z7.string(),
190
+ is_first_login: z7.boolean(),
191
+ token_version: z7.number(),
192
+ is_verified: z7.boolean(),
193
+ auth_provider: z7.string()
194
+ });
195
+ var userDataResponseSchema = z7.object({
196
+ user_data: userDataSchema
197
+ });
198
+ var getAuthenticatedUserByIdResponseSchema = userDataSchema;
199
+ var updateAuthenticatedUserResponseSchema = z7.object({
200
+ message: z7.string(),
201
+ emailChanged: z7.boolean(),
202
+ user: userDataSchema
203
+ });
204
+ var setProfilePicAndUpdateDBResponseSchema = z7.object({
205
+ path: z7.string(),
206
+ url: z7.string(),
207
+ message: z7.string()
208
+ });
209
+
210
+ // src/modules/workout/plan/plan.schemas.ts
211
+ import { z as z8 } from "zod";
212
+ var workoutExerciseSchema = z8.object({
213
+ id: z8.number(),
214
+ sets: z8.array(z8.number()),
215
+ order_index: z8.number()
216
+ });
217
+ var exerciseInPlanSchema = z8.object({
218
+ id: z8.number(),
219
+ sets: z8.array(z8.number()),
220
+ is_active: z8.boolean(),
221
+ targetmuscle: z8.string(),
222
+ specifictargetmuscle: z8.string(),
223
+ exercise: z8.string(),
224
+ workoutsplit: z8.string()
225
+ });
226
+ var workoutSplitSchema = z8.object({
227
+ id: z8.number(),
228
+ workout_id: z8.number(),
229
+ name: z8.string(),
230
+ created_at: z8.string(),
231
+ muscle_group: z8.string().nullable(),
232
+ is_active: z8.boolean(),
233
+ exercisetoworkoutsplit: z8.array(exerciseInPlanSchema)
234
+ });
235
+ var wholeUserWorkoutPlanSchema = z8.object({
236
+ id: z8.number(),
237
+ name: z8.string(),
238
+ numberofsplits: z8.number(),
239
+ created_at: z8.string(),
240
+ is_deleted: z8.boolean(),
241
+ level: z8.string(),
242
+ user_id: z8.string(),
243
+ trainer_id: z8.string(),
244
+ is_active: z8.boolean(),
245
+ updated_at: z8.string(),
246
+ workoutsplits: z8.array(workoutSplitSchema).nullable()
247
+ });
248
+ var workoutSplitsMapItemSchema = z8.object({
249
+ id: z8.number(),
250
+ name: z8.string(),
251
+ sets: z8.array(z8.number()),
252
+ order_index: z8.number(),
253
+ targetmuscle: z8.string(),
254
+ specifictargetmuscle: z8.string()
255
+ });
256
+ var workoutSplitsMapSchema = z8.record(z8.string(), z8.array(workoutSplitsMapItemSchema));
257
+ var addWorkoutSplitPayloadSchema = z8.record(
258
+ z8.string(),
259
+ z8.array(workoutExerciseSchema).min(1, "Each split must include at least one exercise")
260
+ );
261
+ var addWorkoutRequest = z8.object({
262
+ body: z8.object({
263
+ workoutData: addWorkoutSplitPayloadSchema,
264
+ workoutName: z8.string().optional(),
265
+ tz: z8.string()
266
+ })
267
+ });
268
+ var addWorkoutResponseSchema = z8.object({
269
+ message: z8.string(),
270
+ workoutPlan: wholeUserWorkoutPlanSchema,
271
+ workoutPlanForEditWorkout: workoutSplitsMapSchema
272
+ });
273
+ var getWholeWorkoutPlanRequest = z8.object({
274
+ query: z8.object({
275
+ tz: z8.string().optional()
276
+ })
277
+ });
278
+ var getWholeUserWorkoutPlanResponseSchema = z8.object({
279
+ workoutPlan: wholeUserWorkoutPlanSchema.nullable(),
280
+ workoutPlanForEditWorkout: workoutSplitsMapSchema.nullable()
281
+ });
282
+
283
+ // src/modules/workout/tracking/tracking.schemas.ts
284
+ import { z as z9 } from "zod";
285
+ var finishedExerciseEntry = z9.object({
286
+ exercisetosplit_id: z9.number(),
287
+ weight: z9.array(z9.number()),
288
+ reps: z9.array(z9.number()),
289
+ notes: z9.string().optional().nullable()
290
+ });
291
+ var exerciseMetadataSchema = z9.object({
292
+ targetmuscle: z9.string(),
293
+ specifictargetmuscle: z9.string()
294
+ });
295
+ var exerciseTrackingPrMaxSchema = z9.object({
296
+ exercise: z9.string(),
297
+ weight: z9.number(),
298
+ reps: z9.number(),
299
+ workout_time_utc: z9.string()
300
+ });
301
+ var exerciseTrackingAnalysisSchema = z9.object({
302
+ unique_days: z9.number(),
303
+ most_frequent_split: z9.string().nullable(),
304
+ most_frequent_split_days: z9.number().nullable(),
305
+ lastWorkoutDate: z9.string().nullable(),
306
+ splitDaysByName: z9.record(z9.string(), z9.number()),
307
+ prs: z9.object({
308
+ pr_max: exerciseTrackingPrMaxSchema.nullable()
309
+ })
310
+ });
311
+ var trackingMapItemSchema = z9.object({
312
+ id: z9.number(),
313
+ exercisetosplit_id: z9.number(),
314
+ weight: z9.array(z9.number()),
315
+ reps: z9.array(z9.number()),
316
+ notes: z9.string().nullable(),
317
+ exercise_id: z9.number(),
318
+ workoutsplit_id: z9.number(),
319
+ splitname: z9.string(),
320
+ exercise: z9.string(),
321
+ workoutdate: z9.string(),
322
+ order_index: z9.number(),
323
+ exercisetoworkoutsplit: z9.object({
324
+ sets: z9.array(z9.number()),
325
+ exercises: exerciseMetadataSchema
326
+ })
327
+ });
328
+ var trackingByDateItemSchema = trackingMapItemSchema.omit({ workoutdate: true });
329
+ var trackingBySplitNameItemSchema = trackingMapItemSchema.omit({ splitname: true });
330
+ var exerciseTrackingAndStatsSchema = z9.object({
331
+ exerciseTrackingAnalysis: exerciseTrackingAnalysisSchema,
332
+ exerciseTrackingMaps: z9.object({
333
+ byDate: z9.record(z9.string(), z9.array(trackingByDateItemSchema)),
334
+ byETSId: z9.record(z9.string(), z9.array(trackingMapItemSchema)),
335
+ bySplitName: z9.record(z9.string(), z9.array(trackingBySplitNameItemSchema))
336
+ })
337
+ });
338
+ var finishWorkoutRequest = z9.object({
339
+ body: z9.object({
340
+ workout: z9.array(finishedExerciseEntry),
341
+ tz: z9.string().optional(),
342
+ workout_start_utc: z9.string().datetime("workout_start_utc must be a valid ISO datetime"),
343
+ workout_end_utc: z9.string().datetime("workout_end_utc must be a valid ISO datetime").optional().nullable()
344
+ })
345
+ });
346
+ var finishUserWorkoutResponseSchema = exerciseTrackingAndStatsSchema;
347
+ var getExerciseTrackingRequest = z9.object({
348
+ query: z9.object({
349
+ tz: z9.string().optional()
350
+ })
351
+ });
352
+ var getExerciseTrackingResponseSchema = exerciseTrackingAndStatsSchema;
353
+
354
+ // src/modules/bootstrap/bootstrap.schemas.ts
355
+ var bootstrapRequest = z10.object({
356
+ query: z10.object({
357
+ tz: z10.string().optional()
358
+ })
359
+ });
360
+ var bootstrapResponseSchema = z10.object({
361
+ user: userDataSchema,
362
+ workout: getWholeUserWorkoutPlanResponseSchema,
363
+ tracking: exerciseTrackingAndStatsSchema,
364
+ messages: getAllUserMessagesResponseSchema,
365
+ aerobics: userAerobicsResponseSchema
366
+ });
367
+
368
+ // src/modules/exercises/exercises.schemas.ts
369
+ import { z as z11 } from "zod";
370
+ var getAllExercisesResponseSchema = z11.record(
371
+ z11.string(),
372
+ z11.array(
373
+ z11.object({
374
+ id: z11.number(),
375
+ name: z11.string(),
376
+ specificTargetMuscle: z11.string()
377
+ })
378
+ )
379
+ );
380
+
381
+ // src/modules/oauth/apple/apple.schemas.ts
382
+ import { z as z12 } from "zod";
383
+ var appleNameInput = z12.object({
384
+ givenName: z12.string().nullable(),
385
+ familyName: z12.string().nullable()
386
+ });
387
+ var appleOAuthRequest = z12.object({
388
+ body: z12.object({
389
+ idToken: z12.string({
390
+ required_error: "Missing or invalid Apple identityToken",
391
+ invalid_type_error: "Missing or invalid Apple identityToken"
392
+ }),
393
+ rawNonce: z12.string(),
394
+ name: appleNameInput.optional(),
395
+ email: z12.string().email().nullable()
396
+ })
397
+ });
398
+
399
+ // src/modules/oauth/google/google.schemas.ts
400
+ import { z as z13 } from "zod";
401
+ var googleOAuthRequest = z13.object({
402
+ body: z13.object({
403
+ idToken: z13.string().optional()
404
+ })
405
+ });
406
+
407
+ // src/modules/oauth/oauth.schemas.ts
408
+ import { z as z14 } from "zod";
409
+ var oAuthLoginResponseSchema = z14.object({
410
+ message: z14.string(),
411
+ user: z14.string(),
412
+ accessToken: z14.string(),
413
+ refreshToken: z14.string().nullable(),
414
+ missingFields: z14.array(z14.string()).nullable()
415
+ });
416
+ var proceedLoginResponseSchema = loginResponseSchema;
417
+
418
+ // src/modules/user/create/create.schemas.ts
419
+ import { z as z15 } from "zod";
420
+ var createUserRequest = z15.object({
421
+ body: z15.object({
422
+ username: z15.string().trim().min(3, "Username must be at least 3 characters").max(15, "Username must be at most 15 characters").regex(/^[a-zA-Z0-9_]+$/, "Username may contain letters, numbers, and underscore only"),
423
+ fullName: z15.preprocess(
424
+ // Map "", null, undefined -> "User"
425
+ (val) => {
426
+ if (val == null) return "User";
427
+ if (typeof val === "string" && val.trim() === "") return "User";
428
+ return val;
429
+ },
430
+ z15.string().trim().max(20, "Full name is too long").regex(/^[a-zA-Z\s]+$/, "Full name may contain letters and spaces only")
431
+ ),
432
+ email: z15.string().trim().toLowerCase().email("Invalid email format"),
433
+ password: z15.string().min(8, "Password must be at least 8 characters long"),
434
+ gender: z15.preprocess(
435
+ (val) => val === "" || val == null ? "Unknown" : val,
436
+ z15.enum(["Male", "Female", "Other", "Unknown"])
437
+ )
438
+ })
439
+ });
440
+ var createUserUserSchema = z15.object({
441
+ id: z15.string(),
442
+ username: z15.string(),
443
+ name: z15.string(),
444
+ email: z15.string().nullable(),
445
+ gender: z15.string(),
446
+ role: z15.string(),
447
+ created_at: z15.string()
448
+ });
449
+ var createUserResponseSchema = z15.object({
450
+ message: z15.string(),
451
+ user: createUserUserSchema
452
+ });
453
+
454
+ // src/modules/user/push-tokens/push-tokens.schemas.ts
455
+ import { z as z16 } from "zod";
456
+ var saveUserPushTokenRequest = z16.object({
457
+ body: z16.object({
458
+ token: z16.string()
459
+ })
460
+ });
461
+
462
+ // src/modules/video-analysis/video-analysis.schemas.ts
463
+ import { z as z17 } from "zod";
464
+ var getPresignedUrlS3Request = z17.object({
465
+ body: z17.object({
466
+ exercise: z17.string(),
467
+ fileType: z17.string(),
468
+ jobId: z17.string()
469
+ })
470
+ });
471
+ var getPresignedUrlFromS3ResponseSchema = z17.object({
472
+ uploadUrl: z17.string(),
473
+ fileKey: z17.string(),
474
+ requestId: z17.string()
475
+ });
476
+
477
+ // src/modules/web-sockets/web-sockets.schemas.ts
478
+ import { z as z18 } from "zod";
479
+ var generateTicketRequest = z18.object({
480
+ body: z18.object({
481
+ username: z18.string()
482
+ })
483
+ });
484
+ var generateTicketResponseSchema = z18.object({
485
+ ticket: z18.string()
486
+ });
487
+ export {
488
+ addAerobicsRequest,
489
+ addWorkoutRequest,
490
+ addWorkoutResponseSchema,
491
+ adherenceExerciseStatsSchema,
492
+ aerobicsDailyRecordSchema,
493
+ aerobicsWeeklyRecordSchema,
494
+ allUserMessageSchema,
495
+ appleOAuthRequest,
496
+ bootstrapRequest,
497
+ bootstrapResponseSchema,
498
+ changeEmailAndVerifyRequest,
499
+ checkUserVerifyRequest,
500
+ createUserRequest,
501
+ createUserResponseSchema,
502
+ createUserUserSchema,
503
+ deleteMessageRequest,
504
+ deleteMessageResponseSchema,
505
+ deleteProfilePicRequest,
506
+ deletedMessageSchema,
507
+ exerciseInPlanSchema,
508
+ exerciseMetadataSchema,
509
+ exerciseTrackingAnalysisSchema,
510
+ exerciseTrackingAndStatsSchema,
511
+ exerciseTrackingPrMaxSchema,
512
+ finishUserWorkoutResponseSchema,
513
+ finishWorkoutRequest,
514
+ generateTicketRequest,
515
+ generateTicketResponseSchema,
516
+ getAerobicsRequest,
517
+ getAllExercisesResponseSchema,
518
+ getAllMessagesRequest,
519
+ getAllUserMessagesResponseSchema,
520
+ getAnalyticsResponseSchema,
521
+ getAuthenticatedUserByIdResponseSchema,
522
+ getExerciseTrackingRequest,
523
+ getExerciseTrackingResponseSchema,
524
+ getPresignedUrlFromS3ResponseSchema,
525
+ getPresignedUrlS3Request,
526
+ getWholeUserWorkoutPlanResponseSchema,
527
+ getWholeWorkoutPlanRequest,
528
+ googleOAuthRequest,
529
+ loginRequest,
530
+ loginResponseSchema,
531
+ logoutResponseSchema,
532
+ markMessageAsReadRequest,
533
+ markMessageAsReadResponseSchema,
534
+ messageAsReadSchema,
535
+ oAuthLoginResponseSchema,
536
+ proceedLoginResponseSchema,
537
+ refreshTokenResponseSchema,
538
+ resetPasswordRequest,
539
+ resetPasswordResponseSchema,
540
+ saveUserPushTokenRequest,
541
+ sendChangePassEmailRequest,
542
+ sendVerificationMailRequest,
543
+ setProfilePicAndUpdateDBResponseSchema,
544
+ trackingByDateItemSchema,
545
+ trackingBySplitNameItemSchema,
546
+ trackingMapItemSchema,
547
+ updateAuthenticatedUserResponseSchema,
548
+ updateUserRequest,
549
+ userAerobicsResponseSchema,
550
+ userDataResponseSchema,
551
+ userDataSchema,
552
+ verifyAccountRequest,
553
+ weeklyDataSchema,
554
+ wholeUserWorkoutPlanSchema,
555
+ workoutRmRecordSchema,
556
+ workoutSplitSchema,
557
+ workoutSplitsMapItemSchema,
558
+ workoutSplitsMapSchema
559
+ };
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@strong-together/shared",
3
+ "version": "1.0.5",
4
+ "main": "./dist/index.js",
5
+ "module": "./dist/index.mjs",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsup src/index.ts --format cjs,esm --dts --clean",
12
+ "dev": "tsup src/index.ts --format cjs,esm --watch --dts"
13
+ },
14
+ "devDependencies": {
15
+ "tsup": "^8.0.0",
16
+ "typescript": "^5.0.0"
17
+ },
18
+ "dependencies": {
19
+ "zod": "^3.25.76"
20
+ }
21
+ }