90dc-core 1.19.2 → 1.19.4

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.
Files changed (302) hide show
  1. package/dist/lib/dbmodels/index.d.ts +3 -2
  2. package/dist/lib/dbmodels/index.d.ts.map +1 -1
  3. package/dist/lib/dbmodels/{UserProgressPhoto.d.ts → user/UserProgressPhoto.d.ts} +1 -1
  4. package/dist/lib/dbmodels/user/UserProgressPhoto.d.ts.map +1 -0
  5. package/package.json +1 -1
  6. package/dist/index.js +0 -43
  7. package/dist/index.js.map +0 -1
  8. package/dist/lib/Errors/AppError.js +0 -104
  9. package/dist/lib/Errors/AppError.js.map +0 -1
  10. package/dist/lib/Errors/Errors.js +0 -42
  11. package/dist/lib/Errors/Errors.js.map +0 -1
  12. package/dist/lib/classes/Database.js +0 -154
  13. package/dist/lib/classes/Database.js.map +0 -1
  14. package/dist/lib/classes/Redis.js +0 -63
  15. package/dist/lib/classes/Redis.js.map +0 -1
  16. package/dist/lib/clients/EmailClient.js +0 -188
  17. package/dist/lib/clients/EmailClient.js.map +0 -1
  18. package/dist/lib/clients/FirebasePushNotificationClient.js +0 -688
  19. package/dist/lib/clients/FirebasePushNotificationClient.js.map +0 -1
  20. package/dist/lib/clients/ImagesClient.js +0 -271
  21. package/dist/lib/clients/ImagesClient.js.map +0 -1
  22. package/dist/lib/clients/MailingClient.js +0 -84
  23. package/dist/lib/clients/MailingClient.js.map +0 -1
  24. package/dist/lib/clients/PushNotificationClient.js +0 -478
  25. package/dist/lib/clients/PushNotificationClient.js.map +0 -1
  26. package/dist/lib/clients/types/email.types.js +0 -3
  27. package/dist/lib/clients/types/email.types.js.map +0 -1
  28. package/dist/lib/clients/types/images.types.js +0 -3
  29. package/dist/lib/clients/types/images.types.js.map +0 -1
  30. package/dist/lib/clients/types/mailing.types.js +0 -3
  31. package/dist/lib/clients/types/mailing.types.js.map +0 -1
  32. package/dist/lib/config/ConfigValidator.js +0 -162
  33. package/dist/lib/config/ConfigValidator.js.map +0 -1
  34. package/dist/lib/controllers/BaseController.js +0 -64
  35. package/dist/lib/controllers/BaseController.js.map +0 -1
  36. package/dist/lib/db/migrations/20260330000000-create-user-progress-photos.js +0 -60
  37. package/dist/lib/db/migrations/20260330000000-create-user-progress-photos.js.map +0 -1
  38. package/dist/lib/dbmodels/UserProgressPhoto.d.ts.map +0 -1
  39. package/dist/lib/dbmodels/UserProgressPhoto.js +0 -59
  40. package/dist/lib/dbmodels/UserProgressPhoto.js.map +0 -1
  41. package/dist/lib/dbmodels/coaching/Answer.js +0 -51
  42. package/dist/lib/dbmodels/coaching/Answer.js.map +0 -1
  43. package/dist/lib/dbmodels/coaching/ClientNote.js +0 -75
  44. package/dist/lib/dbmodels/coaching/ClientNote.js.map +0 -1
  45. package/dist/lib/dbmodels/coaching/ClientTag.js +0 -45
  46. package/dist/lib/dbmodels/coaching/ClientTag.js.map +0 -1
  47. package/dist/lib/dbmodels/coaching/Question.js +0 -60
  48. package/dist/lib/dbmodels/coaching/Question.js.map +0 -1
  49. package/dist/lib/dbmodels/coaching/Questionnaire.js +0 -39
  50. package/dist/lib/dbmodels/coaching/Questionnaire.js.map +0 -1
  51. package/dist/lib/dbmodels/coaching/QuestionnaireResponse.js +0 -42
  52. package/dist/lib/dbmodels/coaching/QuestionnaireResponse.js.map +0 -1
  53. package/dist/lib/dbmodels/coaching/WeeklyCheckIn.js +0 -69
  54. package/dist/lib/dbmodels/coaching/WeeklyCheckIn.js.map +0 -1
  55. package/dist/lib/dbmodels/coaching/WeightRecord.js +0 -49
  56. package/dist/lib/dbmodels/coaching/WeightRecord.js.map +0 -1
  57. package/dist/lib/dbmodels/diet/DietDay.js +0 -50
  58. package/dist/lib/dbmodels/diet/DietDay.js.map +0 -1
  59. package/dist/lib/dbmodels/diet/DietMeal.js +0 -74
  60. package/dist/lib/dbmodels/diet/DietMeal.js.map +0 -1
  61. package/dist/lib/dbmodels/diet/DietMealCompletion.js +0 -69
  62. package/dist/lib/dbmodels/diet/DietMealCompletion.js.map +0 -1
  63. package/dist/lib/dbmodels/diet/DietMealRecipe.js +0 -67
  64. package/dist/lib/dbmodels/diet/DietMealRecipe.js.map +0 -1
  65. package/dist/lib/dbmodels/diet/DietMealRecipeIngredient.js +0 -46
  66. package/dist/lib/dbmodels/diet/DietMealRecipeIngredient.js.map +0 -1
  67. package/dist/lib/dbmodels/diet/DietProgram.js +0 -98
  68. package/dist/lib/dbmodels/diet/DietProgram.js.map +0 -1
  69. package/dist/lib/dbmodels/diet/Ingredient.js +0 -88
  70. package/dist/lib/dbmodels/diet/Ingredient.js.map +0 -1
  71. package/dist/lib/dbmodels/diet/IngredientTag.js +0 -64
  72. package/dist/lib/dbmodels/diet/IngredientTag.js.map +0 -1
  73. package/dist/lib/dbmodels/diet/IngredientTags.js +0 -29
  74. package/dist/lib/dbmodels/diet/IngredientTags.js.map +0 -1
  75. package/dist/lib/dbmodels/diet/Recipe.js +0 -173
  76. package/dist/lib/dbmodels/diet/Recipe.js.map +0 -1
  77. package/dist/lib/dbmodels/diet/RecipeIngredient.js +0 -78
  78. package/dist/lib/dbmodels/diet/RecipeIngredient.js.map +0 -1
  79. package/dist/lib/dbmodels/diet/RecipeTag.js +0 -44
  80. package/dist/lib/dbmodels/diet/RecipeTag.js.map +0 -1
  81. package/dist/lib/dbmodels/diet/RecipeTags.js +0 -24
  82. package/dist/lib/dbmodels/diet/RecipeTags.js.map +0 -1
  83. package/dist/lib/dbmodels/diet/ShoppingList.js +0 -69
  84. package/dist/lib/dbmodels/diet/ShoppingList.js.map +0 -1
  85. package/dist/lib/dbmodels/diet/ShoppingListItem.js +0 -66
  86. package/dist/lib/dbmodels/diet/ShoppingListItem.js.map +0 -1
  87. package/dist/lib/dbmodels/diet/TranslatedRecipe.js +0 -122
  88. package/dist/lib/dbmodels/diet/TranslatedRecipe.js.map +0 -1
  89. package/dist/lib/dbmodels/diet/TranslatedRecipeTag.js +0 -47
  90. package/dist/lib/dbmodels/diet/TranslatedRecipeTag.js.map +0 -1
  91. package/dist/lib/dbmodels/diet/TranslatedRecipeTags.js +0 -24
  92. package/dist/lib/dbmodels/diet/TranslatedRecipeTags.js.map +0 -1
  93. package/dist/lib/dbmodels/diet/UserDietPreferences.js +0 -85
  94. package/dist/lib/dbmodels/diet/UserDietPreferences.js.map +0 -1
  95. package/dist/lib/dbmodels/gamification/Badge.js +0 -62
  96. package/dist/lib/dbmodels/gamification/Badge.js.map +0 -1
  97. package/dist/lib/dbmodels/gamification/StreaksLog.js +0 -37
  98. package/dist/lib/dbmodels/gamification/StreaksLog.js.map +0 -1
  99. package/dist/lib/dbmodels/gamification/TranslatedBadge.js +0 -45
  100. package/dist/lib/dbmodels/gamification/TranslatedBadge.js.map +0 -1
  101. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/UserRankHistory.js +0 -48
  102. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/UserRankHistory.js.map +0 -1
  103. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpEvent.js +0 -53
  104. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpEvent.js.map +0 -1
  105. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpTransaction.js +0 -68
  106. package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpTransaction.js.map +0 -1
  107. package/dist/lib/dbmodels/index.js +0 -287
  108. package/dist/lib/dbmodels/index.js.map +0 -1
  109. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.d.ts +0 -32
  110. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.d.ts.map +0 -1
  111. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.js +0 -155
  112. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.js.map +0 -1
  113. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.d.ts +0 -22
  114. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.d.ts.map +0 -1
  115. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.js +0 -108
  116. package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.js.map +0 -1
  117. package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.d.ts +0 -20
  118. package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.d.ts.map +0 -1
  119. package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.js +0 -97
  120. package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.js.map +0 -1
  121. package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.d.ts +0 -22
  122. package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.d.ts.map +0 -1
  123. package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.js +0 -115
  124. package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.js.map +0 -1
  125. package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.d.ts +0 -7
  126. package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.d.ts.map +0 -1
  127. package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.js +0 -41
  128. package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.js.map +0 -1
  129. package/dist/lib/dbmodels/notifications/NotificationModels.js +0 -38
  130. package/dist/lib/dbmodels/notifications/NotificationModels.js.map +0 -1
  131. package/dist/lib/dbmodels/notifications/TranslatedNotification.js +0 -45
  132. package/dist/lib/dbmodels/notifications/TranslatedNotification.js.map +0 -1
  133. package/dist/lib/dbmodels/program/Challenge.d.ts +0 -13
  134. package/dist/lib/dbmodels/program/Challenge.d.ts.map +0 -1
  135. package/dist/lib/dbmodels/program/Challenge.js +0 -63
  136. package/dist/lib/dbmodels/program/Challenge.js.map +0 -1
  137. package/dist/lib/dbmodels/program/ChallengeBlueprint.js +0 -75
  138. package/dist/lib/dbmodels/program/ChallengeBlueprint.js.map +0 -1
  139. package/dist/lib/dbmodels/program/CircularProgramDraft.js +0 -82
  140. package/dist/lib/dbmodels/program/CircularProgramDraft.js.map +0 -1
  141. package/dist/lib/dbmodels/program/CoachExerciseNote.js +0 -61
  142. package/dist/lib/dbmodels/program/CoachExerciseNote.js.map +0 -1
  143. package/dist/lib/dbmodels/program/CustomProgramBlueprint.js +0 -84
  144. package/dist/lib/dbmodels/program/CustomProgramBlueprint.js.map +0 -1
  145. package/dist/lib/dbmodels/program/CustomStrengthTest.js +0 -55
  146. package/dist/lib/dbmodels/program/CustomStrengthTest.js.map +0 -1
  147. package/dist/lib/dbmodels/program/CustomStrengthTestExercises.js +0 -69
  148. package/dist/lib/dbmodels/program/CustomStrengthTestExercises.js.map +0 -1
  149. package/dist/lib/dbmodels/program/CustomWorkoutBlueprint.js +0 -58
  150. package/dist/lib/dbmodels/program/CustomWorkoutBlueprint.js.map +0 -1
  151. package/dist/lib/dbmodels/program/Exercise.d.ts +0 -23
  152. package/dist/lib/dbmodels/program/Exercise.d.ts.map +0 -1
  153. package/dist/lib/dbmodels/program/Exercise.js +0 -101
  154. package/dist/lib/dbmodels/program/Exercise.js.map +0 -1
  155. package/dist/lib/dbmodels/program/ExerciseModels.d.ts +0 -28
  156. package/dist/lib/dbmodels/program/ExerciseModels.d.ts.map +0 -1
  157. package/dist/lib/dbmodels/program/ExerciseModels.js +0 -149
  158. package/dist/lib/dbmodels/program/ExerciseModels.js.map +0 -1
  159. package/dist/lib/dbmodels/program/Program.d.ts +0 -15
  160. package/dist/lib/dbmodels/program/Program.d.ts.map +0 -1
  161. package/dist/lib/dbmodels/program/Program.js +0 -76
  162. package/dist/lib/dbmodels/program/Program.js.map +0 -1
  163. package/dist/lib/dbmodels/program/ProgressEntry.d.ts +0 -26
  164. package/dist/lib/dbmodels/program/ProgressEntry.d.ts.map +0 -1
  165. package/dist/lib/dbmodels/program/ProgressEntry.js +0 -77
  166. package/dist/lib/dbmodels/program/ProgressEntry.js.map +0 -1
  167. package/dist/lib/dbmodels/program/RestDay.js +0 -33
  168. package/dist/lib/dbmodels/program/RestDay.js.map +0 -1
  169. package/dist/lib/dbmodels/program/StrengthTest.d.ts +0 -10
  170. package/dist/lib/dbmodels/program/StrengthTest.d.ts.map +0 -1
  171. package/dist/lib/dbmodels/program/StrengthTest.js +0 -39
  172. package/dist/lib/dbmodels/program/StrengthTest.js.map +0 -1
  173. package/dist/lib/dbmodels/program/StrengthTestExercise.d.ts +0 -15
  174. package/dist/lib/dbmodels/program/StrengthTestExercise.d.ts.map +0 -1
  175. package/dist/lib/dbmodels/program/StrengthTestExercise.js +0 -72
  176. package/dist/lib/dbmodels/program/StrengthTestExercise.js.map +0 -1
  177. package/dist/lib/dbmodels/program/StrengthTestSession.js +0 -73
  178. package/dist/lib/dbmodels/program/StrengthTestSession.js.map +0 -1
  179. package/dist/lib/dbmodels/program/Superset.d.ts +0 -13
  180. package/dist/lib/dbmodels/program/Superset.d.ts.map +0 -1
  181. package/dist/lib/dbmodels/program/Superset.js +0 -46
  182. package/dist/lib/dbmodels/program/Superset.js.map +0 -1
  183. package/dist/lib/dbmodels/program/ThirtyDayChallenge.js +0 -70
  184. package/dist/lib/dbmodels/program/ThirtyDayChallenge.js.map +0 -1
  185. package/dist/lib/dbmodels/program/ThirtyDayChallengeStrengthTest.js +0 -55
  186. package/dist/lib/dbmodels/program/ThirtyDayChallengeStrengthTest.js.map +0 -1
  187. package/dist/lib/dbmodels/program/TranslatedChallenge.d.ts +0 -15
  188. package/dist/lib/dbmodels/program/TranslatedChallenge.d.ts.map +0 -1
  189. package/dist/lib/dbmodels/program/TranslatedChallenge.js +0 -69
  190. package/dist/lib/dbmodels/program/TranslatedChallenge.js.map +0 -1
  191. package/dist/lib/dbmodels/program/TranslatedExerciseModel.d.ts +0 -25
  192. package/dist/lib/dbmodels/program/TranslatedExerciseModel.d.ts.map +0 -1
  193. package/dist/lib/dbmodels/program/TranslatedExerciseModel.js +0 -123
  194. package/dist/lib/dbmodels/program/TranslatedExerciseModel.js.map +0 -1
  195. package/dist/lib/dbmodels/program/TranslatedStrengthTest.d.ts +0 -12
  196. package/dist/lib/dbmodels/program/TranslatedStrengthTest.d.ts.map +0 -1
  197. package/dist/lib/dbmodels/program/TranslatedStrengthTest.js +0 -45
  198. package/dist/lib/dbmodels/program/TranslatedStrengthTest.js.map +0 -1
  199. package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.d.ts +0 -16
  200. package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.d.ts.map +0 -1
  201. package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.js +0 -78
  202. package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.js.map +0 -1
  203. package/dist/lib/dbmodels/program/UserChallenge.d.ts +0 -10
  204. package/dist/lib/dbmodels/program/UserChallenge.d.ts.map +0 -1
  205. package/dist/lib/dbmodels/program/UserChallenge.js +0 -47
  206. package/dist/lib/dbmodels/program/UserChallenge.js.map +0 -1
  207. package/dist/lib/dbmodels/program/UserExerciseNote.js +0 -61
  208. package/dist/lib/dbmodels/program/UserExerciseNote.js.map +0 -1
  209. package/dist/lib/dbmodels/program/UserStrengthTests.d.ts +0 -11
  210. package/dist/lib/dbmodels/program/UserStrengthTests.d.ts.map +0 -1
  211. package/dist/lib/dbmodels/program/UserStrengthTests.js +0 -54
  212. package/dist/lib/dbmodels/program/UserStrengthTests.js.map +0 -1
  213. package/dist/lib/dbmodels/program/Workout.d.ts +0 -14
  214. package/dist/lib/dbmodels/program/Workout.d.ts.map +0 -1
  215. package/dist/lib/dbmodels/program/Workout.js +0 -66
  216. package/dist/lib/dbmodels/program/Workout.js.map +0 -1
  217. package/dist/lib/dbmodels/program/WorkoutCompletion.js +0 -65
  218. package/dist/lib/dbmodels/program/WorkoutCompletion.js.map +0 -1
  219. package/dist/lib/dbmodels/program/WorkoutSession.js +0 -93
  220. package/dist/lib/dbmodels/program/WorkoutSession.js.map +0 -1
  221. package/dist/lib/dbmodels/subscription/Subscription.d.ts +0 -19
  222. package/dist/lib/dbmodels/subscription/Subscription.d.ts.map +0 -1
  223. package/dist/lib/dbmodels/subscription/Subscription.js +0 -91
  224. package/dist/lib/dbmodels/subscription/Subscription.js.map +0 -1
  225. package/dist/lib/dbmodels/subscription/SubscriptionEvent.js +0 -79
  226. package/dist/lib/dbmodels/subscription/SubscriptionEvent.js.map +0 -1
  227. package/dist/lib/dbmodels/subscription/SubscriptionLog.d.ts +0 -9
  228. package/dist/lib/dbmodels/subscription/SubscriptionLog.d.ts.map +0 -1
  229. package/dist/lib/dbmodels/subscription/SubscriptionLog.js +0 -42
  230. package/dist/lib/dbmodels/subscription/SubscriptionLog.js.map +0 -1
  231. package/dist/lib/dbmodels/subscription/SubscriptionRefund.js +0 -92
  232. package/dist/lib/dbmodels/subscription/SubscriptionRefund.js.map +0 -1
  233. package/dist/lib/dbmodels/user/DeviceTokens.js +0 -34
  234. package/dist/lib/dbmodels/user/DeviceTokens.js.map +0 -1
  235. package/dist/lib/dbmodels/user/PersistedUser.d.ts +0 -43
  236. package/dist/lib/dbmodels/user/PersistedUser.d.ts.map +0 -1
  237. package/dist/lib/dbmodels/user/PersistedUser.js +0 -237
  238. package/dist/lib/dbmodels/user/PersistedUser.js.map +0 -1
  239. package/dist/lib/dbmodels/user/UserAddons.js +0 -26
  240. package/dist/lib/dbmodels/user/UserAddons.js.map +0 -1
  241. package/dist/lib/dbmodels/user/UserBadges.js +0 -63
  242. package/dist/lib/dbmodels/user/UserBadges.js.map +0 -1
  243. package/dist/lib/dbmodels/user/UserCoach.js +0 -40
  244. package/dist/lib/dbmodels/user/UserCoach.js.map +0 -1
  245. package/dist/lib/dbmodels/user/UserDiscount.js +0 -24
  246. package/dist/lib/dbmodels/user/UserDiscount.js.map +0 -1
  247. package/dist/lib/dbmodels/user/UserOptions.js +0 -34
  248. package/dist/lib/dbmodels/user/UserOptions.js.map +0 -1
  249. package/dist/lib/dbmodels/user/UserStreaks.js +0 -64
  250. package/dist/lib/dbmodels/user/UserStreaks.js.map +0 -1
  251. package/dist/lib/dbmodels/user/UsersFriends.js +0 -46
  252. package/dist/lib/dbmodels/user/UsersFriends.js.map +0 -1
  253. package/dist/lib/enums/ProgramEnums.d.ts +0 -18
  254. package/dist/lib/enums/ProgramEnums.d.ts.map +0 -1
  255. package/dist/lib/enums/ProgramEnums.js +0 -22
  256. package/dist/lib/enums/ProgramEnums.js.map +0 -1
  257. package/dist/lib/enums/ProgramTemplates.js +0 -738
  258. package/dist/lib/enums/ProgramTemplates.js.map +0 -1
  259. package/dist/lib/middlewares/ErrorMiddleware.js +0 -141
  260. package/dist/lib/middlewares/ErrorMiddleware.js.map +0 -1
  261. package/dist/lib/middlewares/ValidationMiddleware.js +0 -24
  262. package/dist/lib/middlewares/ValidationMiddleware.js.map +0 -1
  263. package/dist/lib/models/BlueprintInterfaces.js +0 -3
  264. package/dist/lib/models/BlueprintInterfaces.js.map +0 -1
  265. package/dist/lib/models/ExerciseInterfaces.d.ts +0 -68
  266. package/dist/lib/models/ExerciseInterfaces.d.ts.map +0 -1
  267. package/dist/lib/models/ExerciseInterfaces.js +0 -3
  268. package/dist/lib/models/ExerciseInterfaces.js.map +0 -1
  269. package/dist/lib/models/NotificationInterfaces.js +0 -11
  270. package/dist/lib/models/NotificationInterfaces.js.map +0 -1
  271. package/dist/lib/models/ProgramInterfaces.js +0 -3
  272. package/dist/lib/models/ProgramInterfaces.js.map +0 -1
  273. package/dist/lib/models/UserInterfaces.js +0 -3
  274. package/dist/lib/models/UserInterfaces.js.map +0 -1
  275. package/dist/lib/models/WorkoutInterfaces.js +0 -3
  276. package/dist/lib/models/WorkoutInterfaces.js.map +0 -1
  277. package/dist/lib/scripts/cli.js +0 -82
  278. package/dist/lib/scripts/cli.js.map +0 -1
  279. package/dist/lib/scripts/populate-exercise-thumbnails.js +0 -64
  280. package/dist/lib/scripts/populate-exercise-thumbnails.js.map +0 -1
  281. package/dist/lib/scripts/setup-database.js +0 -43
  282. package/dist/lib/scripts/setup-database.js.map +0 -1
  283. package/dist/lib/scripts/verify-indexes.js +0 -94
  284. package/dist/lib/scripts/verify-indexes.js.map +0 -1
  285. package/dist/lib/testing/testFixtures.js +0 -520
  286. package/dist/lib/testing/testFixtures.js.map +0 -1
  287. package/dist/lib/testing/testHelpers.js +0 -149
  288. package/dist/lib/testing/testHelpers.js.map +0 -1
  289. package/dist/lib/utils/AuthenticationUtil.js +0 -481
  290. package/dist/lib/utils/AuthenticationUtil.js.map +0 -1
  291. package/dist/lib/utils/Logger.js +0 -242
  292. package/dist/lib/utils/Logger.js.map +0 -1
  293. package/dist/lib/utils/NotificationClient.js +0 -371
  294. package/dist/lib/utils/NotificationClient.js.map +0 -1
  295. package/dist/lib/utils/NotificationsUtil.js +0 -95
  296. package/dist/lib/utils/NotificationsUtil.js.map +0 -1
  297. package/dist/lib/utils/SecretManager.js +0 -107
  298. package/dist/lib/utils/SecretManager.js.map +0 -1
  299. package/dist/lib/utils/SentryUtil.js +0 -140
  300. package/dist/lib/utils/SentryUtil.js.map +0 -1
  301. package/dist/lib/utils/imageValidation.js +0 -31
  302. package/dist/lib/utils/imageValidation.js.map +0 -1
@@ -1,162 +0,0 @@
1
- import { z } from "zod";
2
- import { Log } from "../utils/Logger.js";
3
- const logger = Log.getInstance().extend("config-validator");
4
- export const BaseConfigSchema = z.object({
5
- // Environment
6
- NODE_ENV: z.enum([
7
- "development",
8
- "staging",
9
- "production"
10
- ]).default("development"),
11
- PORT: z.coerce.number().min(1000).max(65535).default(3000),
12
- // Database
13
- DB_POOL_MAX: z.coerce.number().min(1).max(100).default(20),
14
- DB_POOL_MIN: z.coerce.number().min(0).max(50).default(5),
15
- // Redis
16
- REDIS_URL: z.url("REDIS_URL must be a valid URL").optional(),
17
- // JWT Authentication
18
- ACCESS_TOKEN_SECRET: z.string().min(20, "JWT_SECRET must be at least 32 characters for security"),
19
- ACCESS_TOKEN_EXPIRY: z.string().default("1hr"),
20
- REFRESH_TOKEN_SECRET: z.string().min(20, 'REFRESH_TOKEN_SECRET must be at least 32 characters for security'),
21
- REFRESH_TOKEN_EXPIRY: z.string().default("30d"),
22
- // Logging
23
- LOG_LEVEL: z.enum([
24
- "debug",
25
- "info",
26
- "warn",
27
- "error"
28
- ]).default("info")
29
- });
30
- export class ConfigValidator {
31
- schema;
32
- config;
33
- constructor(schema, env = process.env){
34
- this.schema = schema;
35
- this.config = this.validate(env);
36
- }
37
- validate(env) {
38
- try {
39
- const validated = this.schema.parse(env);
40
- this.logSuccess();
41
- return validated;
42
- } catch (error) {
43
- if (error instanceof z.ZodError) {
44
- this.logErrors(error);
45
- throw new ConfigurationError("Configuration validation failed", error.issues);
46
- }
47
- throw error;
48
- }
49
- }
50
- get(key) {
51
- return this.config[key];
52
- }
53
- getAll() {
54
- return this.config;
55
- }
56
- has(key) {
57
- return this.config[key] !== undefined;
58
- }
59
- getOrDefault(key, defaultValue) {
60
- return this.config[key] ?? defaultValue;
61
- }
62
- isProduction() {
63
- return this.config.NODE_ENV === "production";
64
- }
65
- isDevelopment() {
66
- return this.config.NODE_ENV === "development";
67
- }
68
- isStaging() {
69
- return this.config.NODE_ENV === "staging";
70
- }
71
- logSuccess() {
72
- logger.info("✅ Configuration validated successfully");
73
- }
74
- logErrors(error) {
75
- logger.error("\n❌ Configuration validation failed:\n");
76
- error.issues.forEach((issue)=>{
77
- const path = issue.path.join(".");
78
- logger.error(` ❌ ${path}: ${issue.message}`);
79
- });
80
- logger.error("\n💡 Fix these issues in your .env file and restart the service.\n");
81
- }
82
- }
83
- export class ConfigurationError extends Error {
84
- validationErrors;
85
- constructor(message, validationErrors){
86
- super(message), this.validationErrors = validationErrors;
87
- this.name = "ConfigurationError";
88
- }
89
- }
90
- export function createConfig(schema, env) {
91
- return new ConfigValidator(schema, env);
92
- }
93
- export const CommonSchemas = {
94
- database: z.object({
95
- DATABASE_URL: z.url(),
96
- DB_POOL_MAX: z.coerce.number().default(20),
97
- DB_POOL_MIN: z.coerce.number().default(5),
98
- DB_ACQUIRE_TIMEOUT: z.coerce.number().default(30000),
99
- DB_IDLE_TIMEOUT: z.coerce.number().default(10000)
100
- }),
101
- redis: z.object({
102
- REDIS_URL: z.url(),
103
- REDIS_MAX_RETRIES: z.coerce.number().default(3),
104
- REDIS_RETRY_DELAY: z.coerce.number().default(1000)
105
- }),
106
- jwt: z.object({
107
- JWT_SECRET: z.string().min(32),
108
- JWT_EXPIRY: z.string().default("1h"),
109
- REFRESH_TOKEN_EXPIRY: z.string().default("7d"),
110
- JWT_ISSUER: z.string().optional(),
111
- JWT_AUDIENCE: z.string().optional()
112
- }),
113
- googleOAuth: z.object({
114
- GOOGLE_CLIENT_ID: z.string().min(1),
115
- GOOGLE_CLIENT_SECRET: z.string().min(1),
116
- GOOGLE_REDIRECT_URI: z.string().url().optional()
117
- }),
118
- appleOAuth: z.object({
119
- APPLE_TEAM_ID: z.string().min(1),
120
- APPLE_CLIENT_ID: z.string().min(1),
121
- APPLE_KEY_ID: z.string().min(1),
122
- APPLE_PRIVATE_KEY_PATH: z.string().min(1)
123
- }),
124
- serviceUrls: z.object({
125
- AUTH_SERVICE_URL: z.url(),
126
- NOTIFICATION_SERVICE_URL: z.url(),
127
- PROGRAM_SERVICE_URL: z.url(),
128
- RESOURCE_SERVICE_URL: z.url(),
129
- IMAGE_SERVICE_URL: z.url()
130
- }),
131
- featureFlags: z.object({
132
- ENABLE_DISTRIBUTED_TRACING: z.coerce.boolean().default(false),
133
- ENABLE_RATE_LIMITING: z.coerce.boolean().default(true),
134
- ENABLE_REQUEST_LOGGING: z.coerce.boolean().default(true)
135
- }),
136
- postmark: z.object({
137
- POSTMARK_API_KEY: z.string().min(1, "Postmark API key is required"),
138
- POSTMARK_FROM_EMAIL: z.string().email("Valid from email is required"),
139
- POSTMARK_REPLY_TO_EMAIL: z.string().email().optional(),
140
- POSTMARK_TIMEOUT_MS: z.coerce.number().positive().default(10000)
141
- }),
142
- pushNotification: z.object({
143
- // APNs Configuration (DEPRECATED - use Firebase instead)
144
- APNS_KEY_ID: z.string().optional(),
145
- APNS_TEAM_ID: z.string().optional(),
146
- APNS_TOPIC: z.string().optional(),
147
- APNS_PRIVATE_KEY: z.string().optional(),
148
- APNS_PRODUCTION: z.enum([
149
- "true",
150
- "false",
151
- "1",
152
- "0"
153
- ]).transform((val)=>val === "true" || val === "1").or(z.boolean()).default(false).optional(),
154
- // FCM Configuration (Firebase Admin SDK)
155
- // Note: These are now loaded from GCP Secret Manager, not environment variables
156
- FCM_PROJECT_ID: z.string().optional(),
157
- FCM_CLIENT_EMAIL: z.string().optional(),
158
- FCM_PRIVATE_KEY: z.string().optional()
159
- })
160
- };
161
-
162
- //# sourceMappingURL=ConfigValidator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/config/ConfigValidator.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {Log} from \"../utils/Logger.js\";\n\nconst logger: Log = Log.getInstance().extend(\"config-validator\");\n\n\nexport const BaseConfigSchema = z.object({\n // Environment\n NODE_ENV: z.enum([\"development\", \"staging\", \"production\"]).default(\"development\"),\n PORT: z.coerce.number().min(1000).max(65535).default(3000),\n\n // Database\n DB_POOL_MAX: z.coerce.number().min(1).max(100).default(20),\n DB_POOL_MIN: z.coerce.number().min(0).max(50).default(5),\n\n // Redis\n REDIS_URL: z.url(\"REDIS_URL must be a valid URL\").optional(),\n\n // JWT Authentication\n ACCESS_TOKEN_SECRET: z.string().min(20, \"JWT_SECRET must be at least 32 characters for security\"),\n ACCESS_TOKEN_EXPIRY: z.string().default(\"1hr\"),\n REFRESH_TOKEN_SECRET: z.string().min(20, 'REFRESH_TOKEN_SECRET must be at least 32 characters for security'),\n REFRESH_TOKEN_EXPIRY: z.string().default(\"30d\"),\n\n // Logging\n LOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n});\n\nexport type BaseConfig = z.output<typeof BaseConfigSchema>;\n\nexport class ConfigValidator<T extends z.ZodType> {\n private readonly schema: T;\n private readonly config: z.output<T>;\n\n constructor(schema: T, env: Record<string, string | undefined> = process.env) {\n this.schema = schema;\n this.config = this.validate(env);\n }\n\n private validate(env: Record<string, string | undefined>): z.output<T> {\n try {\n const validated = this.schema.parse(env);\n this.logSuccess();\n return validated;\n } catch (error) {\n if (error instanceof z.ZodError) {\n this.logErrors(error);\n throw new ConfigurationError(\"Configuration validation failed\", error.issues);\n }\n throw error;\n }\n }\n\n get<K extends keyof z.output<T>>(key: K): z.output<T>[K] {\n return this.config[key];\n }\n\n getAll(): z.output<T> {\n return this.config;\n }\n\n has<K extends keyof z.output<T>>(key: K): boolean {\n return this.config[key] !== undefined;\n }\n\n getOrDefault<K extends keyof z.output<T>>(key: K, defaultValue: z.output<T>[K]): z.output<T>[K] {\n return this.config[key] ?? defaultValue;\n }\n\n isProduction(): boolean {\n return (this.config as any).NODE_ENV === \"production\";\n }\n\n isDevelopment(): boolean {\n return (this.config as any).NODE_ENV === \"development\";\n }\n\n isStaging(): boolean {\n return (this.config as any).NODE_ENV === \"staging\";\n }\n\n private logSuccess(): void {\n logger.info(\"✅ Configuration validated successfully\");\n }\n\n private logErrors(error: z.ZodError): void {\n logger.error(\"\\n❌ Configuration validation failed:\\n\");\n error.issues.forEach((issue) => {\n const path = issue.path.join(\".\");\n logger.error(` ❌ ${path}: ${issue.message}`);\n });\n logger.error(\"\\n💡 Fix these issues in your .env file and restart the service.\\n\");\n }\n}\n\nexport class ConfigurationError extends Error {\n constructor(message: string, public readonly validationErrors: z.ZodIssue[]) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport function createConfig<T extends z.ZodType>(\n schema: T,\n env?: Record<string, string | undefined>\n): ConfigValidator<T> {\n return new ConfigValidator(schema, env);\n}\n\nexport const CommonSchemas = {\n database: z.object({\n DATABASE_URL: z.url(),\n DB_POOL_MAX: z.coerce.number().default(20),\n DB_POOL_MIN: z.coerce.number().default(5),\n DB_ACQUIRE_TIMEOUT: z.coerce.number().default(30000),\n DB_IDLE_TIMEOUT: z.coerce.number().default(10000),\n }),\n\n redis: z.object({\n REDIS_URL: z.url(),\n REDIS_MAX_RETRIES: z.coerce.number().default(3),\n REDIS_RETRY_DELAY: z.coerce.number().default(1000),\n }),\n\n jwt: z.object({\n JWT_SECRET: z.string().min(32),\n JWT_EXPIRY: z.string().default(\"1h\"),\n REFRESH_TOKEN_EXPIRY: z.string().default(\"7d\"),\n JWT_ISSUER: z.string().optional(),\n JWT_AUDIENCE: z.string().optional(),\n }),\n\n googleOAuth: z.object({\n GOOGLE_CLIENT_ID: z.string().min(1),\n GOOGLE_CLIENT_SECRET: z.string().min(1),\n GOOGLE_REDIRECT_URI: z.string().url().optional(),\n }),\n\n appleOAuth: z.object({\n APPLE_TEAM_ID: z.string().min(1),\n APPLE_CLIENT_ID: z.string().min(1),\n APPLE_KEY_ID: z.string().min(1),\n APPLE_PRIVATE_KEY_PATH: z.string().min(1),\n }),\n\n serviceUrls: z.object({\n AUTH_SERVICE_URL: z.url(),\n NOTIFICATION_SERVICE_URL: z.url(),\n PROGRAM_SERVICE_URL: z.url(),\n RESOURCE_SERVICE_URL: z.url(),\n IMAGE_SERVICE_URL: z.url(),\n }),\n\n featureFlags: z.object({\n ENABLE_DISTRIBUTED_TRACING: z.coerce.boolean().default(false),\n ENABLE_RATE_LIMITING: z.coerce.boolean().default(true),\n ENABLE_REQUEST_LOGGING: z.coerce.boolean().default(true),\n }),\n\n postmark: z.object({\n POSTMARK_API_KEY: z.string().min(1, \"Postmark API key is required\"),\n POSTMARK_FROM_EMAIL: z.string().email(\"Valid from email is required\"),\n POSTMARK_REPLY_TO_EMAIL: z.string().email().optional(),\n POSTMARK_TIMEOUT_MS: z.coerce.number().positive().default(10000),\n }),\n\n pushNotification: z.object({\n // APNs Configuration (DEPRECATED - use Firebase instead)\n APNS_KEY_ID: z.string().optional(),\n APNS_TEAM_ID: z.string().optional(),\n APNS_TOPIC: z.string().optional(),\n APNS_PRIVATE_KEY: z.string().optional(),\n APNS_PRODUCTION: z\n .enum([\"true\", \"false\", \"1\", \"0\"])\n .transform((val) => val === \"true\" || val === \"1\")\n .or(z.boolean())\n .default(false)\n .optional(),\n\n // FCM Configuration (Firebase Admin SDK)\n // Note: These are now loaded from GCP Secret Manager, not environment variables\n FCM_PROJECT_ID: z.string().optional(),\n FCM_CLIENT_EMAIL: z.string().optional(),\n FCM_PRIVATE_KEY: z.string().optional(),\n }),\n};"],"names":["z","Log","logger","getInstance","extend","BaseConfigSchema","object","NODE_ENV","enum","default","PORT","coerce","number","min","max","DB_POOL_MAX","DB_POOL_MIN","REDIS_URL","url","optional","ACCESS_TOKEN_SECRET","string","ACCESS_TOKEN_EXPIRY","REFRESH_TOKEN_SECRET","REFRESH_TOKEN_EXPIRY","LOG_LEVEL","ConfigValidator","schema","config","env","process","validate","validated","parse","logSuccess","error","ZodError","logErrors","ConfigurationError","issues","get","key","getAll","has","undefined","getOrDefault","defaultValue","isProduction","isDevelopment","isStaging","info","forEach","issue","path","join","message","Error","validationErrors","name","createConfig","CommonSchemas","database","DATABASE_URL","DB_ACQUIRE_TIMEOUT","DB_IDLE_TIMEOUT","redis","REDIS_MAX_RETRIES","REDIS_RETRY_DELAY","jwt","JWT_SECRET","JWT_EXPIRY","JWT_ISSUER","JWT_AUDIENCE","googleOAuth","GOOGLE_CLIENT_ID","GOOGLE_CLIENT_SECRET","GOOGLE_REDIRECT_URI","appleOAuth","APPLE_TEAM_ID","APPLE_CLIENT_ID","APPLE_KEY_ID","APPLE_PRIVATE_KEY_PATH","serviceUrls","AUTH_SERVICE_URL","NOTIFICATION_SERVICE_URL","PROGRAM_SERVICE_URL","RESOURCE_SERVICE_URL","IMAGE_SERVICE_URL","featureFlags","ENABLE_DISTRIBUTED_TRACING","boolean","ENABLE_RATE_LIMITING","ENABLE_REQUEST_LOGGING","postmark","POSTMARK_API_KEY","POSTMARK_FROM_EMAIL","email","POSTMARK_REPLY_TO_EMAIL","POSTMARK_TIMEOUT_MS","positive","pushNotification","APNS_KEY_ID","APNS_TEAM_ID","APNS_TOPIC","APNS_PRIVATE_KEY","APNS_PRODUCTION","transform","val","or","FCM_PROJECT_ID","FCM_CLIENT_EMAIL","FCM_PRIVATE_KEY"],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- import Router from "@koa/router";
2
- import { validate } from "../middlewares/ValidationMiddleware.js";
3
- export class BaseController extends Router {
4
- registerPost(path, handler, config) {
5
- const middlewares = this.buildMiddlewareStack(handler, config, 201);
6
- this.post(path, ...middlewares);
7
- }
8
- registerGet(path, handler, config) {
9
- const middlewares = this.buildMiddlewareStack(handler, {
10
- ...config,
11
- body: undefined
12
- }, 200);
13
- this.get(path, ...middlewares);
14
- }
15
- registerPatch(path, handler, config) {
16
- const middlewares = this.buildMiddlewareStack(handler, {
17
- ...config,
18
- query: undefined
19
- }, 200);
20
- this.patch(path, ...middlewares);
21
- }
22
- registerDelete(path, handler, config) {
23
- const middlewares = this.buildMiddlewareStack(handler, {
24
- ...config,
25
- query: undefined,
26
- body: undefined
27
- }, 200);
28
- this.delete(path, ...middlewares);
29
- }
30
- registerPut(path, handler, config) {
31
- const middlewares = this.buildMiddlewareStack(handler, {
32
- ...config,
33
- query: undefined
34
- }, 200);
35
- this.put(path, ...middlewares);
36
- }
37
- buildMiddlewareStack(handler, config, defaultStatus) {
38
- const middlewares = [];
39
- // Add custom middlewares first
40
- if (config.middlewares) {
41
- middlewares.push(...config.middlewares);
42
- }
43
- // Add validation middleware
44
- const validationConfig = {};
45
- if (config.params) validationConfig.params = config.params;
46
- if (config.query) validationConfig.query = config.query;
47
- if (config.body) validationConfig.body = config.body;
48
- if (config.response) validationConfig.response = config.response;
49
- middlewares.push(validate(validationConfig));
50
- // Add handler wrapper
51
- middlewares.push(async (ctx)=>{
52
- // Use validated data from ctx.state if available, otherwise fall back to raw data
53
- const params = ctx.state.params ?? ctx.params;
54
- const query = ctx.state.query ?? ctx.query;
55
- const body = ctx.state.body ?? ctx.request.body;
56
- const result = await handler(ctx, params, body, query);
57
- ctx.status = config.status ?? defaultStatus;
58
- ctx.body = result;
59
- });
60
- return middlewares;
61
- }
62
- }
63
-
64
- //# sourceMappingURL=BaseController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/controllers/BaseController.ts"],"sourcesContent":["import Router from \"@koa/router\";\nimport type { Context, Middleware } from \"koa\";\nimport { z, type ZodSchema } from \"zod\";\nimport { validate } from \"../middlewares/ValidationMiddleware.js\";\n\ntype StaticHandler<TParams, TQuery, TBody, TResponse> = (\n ctx: Context,\n params: TParams,\n body: TBody,\n query: TQuery\n) => Promise<TResponse> | TResponse;\n\nexport type RouteConfig<\n TParamsSchema extends ZodSchema | undefined,\n TQuerySchema extends ZodSchema | undefined,\n TBodySchema extends ZodSchema | undefined,\n TResponseSchema extends ZodSchema\n> = {\n params?: TParamsSchema;\n query?: TQuerySchema;\n body?: TBodySchema;\n response: TResponseSchema;\n status?: number;\n middlewares?: Middleware[];\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >;\n};\n\nexport abstract class BaseController extends Router {\n protected registerPost<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TQuerySchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<RouteConfig<TParamsSchema, TQuerySchema, TBodySchema, TResponseSchema>, \"handler\">\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, config, 201);\n this.post(path, ...middlewares);\n }\n\n protected registerGet<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TQuerySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, TQuerySchema, undefined, TResponseSchema>,\n \"handler\" | \"body\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, body: undefined }, 200);\n this.get(path, ...middlewares);\n }\n\n protected registerPatch<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, TBodySchema, TResponseSchema>,\n \"handler\" | \"query\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, query: undefined }, 200);\n this.patch(path, ...middlewares);\n }\n\n protected registerDelete<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, undefined, TResponseSchema>,\n \"handler\" | \"query\" | \"body\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(\n handler,\n { ...config, query: undefined, body: undefined },\n 200\n );\n this.delete(path, ...middlewares);\n }\n\n protected registerPut<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, TBodySchema, TResponseSchema>,\n \"handler\" | \"query\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, query: undefined }, 200);\n this.put(path, ...middlewares);\n }\n\n private buildMiddlewareStack<\n TParamsSchema extends ZodSchema | undefined,\n TQuerySchema extends ZodSchema | undefined,\n TBodySchema extends ZodSchema | undefined,\n TResponseSchema extends ZodSchema\n >(\n handler: StaticHandler<any, any, any, any>,\n config: Omit<RouteConfig<TParamsSchema, TQuerySchema, TBodySchema, TResponseSchema>, \"handler\">,\n defaultStatus: number\n ): Middleware[] {\n const middlewares: Middleware[] = [];\n\n // Add custom middlewares first\n if (config.middlewares) {\n middlewares.push(...config.middlewares);\n }\n\n // Add validation middleware\n const validationConfig: Record<string, ZodSchema> = {};\n if (config.params) validationConfig.params = config.params;\n if (config.query) validationConfig.query = config.query;\n if (config.body) validationConfig.body = config.body;\n if (config.response) validationConfig.response = config.response;\n\n middlewares.push(validate(validationConfig));\n\n // Add handler wrapper\n middlewares.push(async (ctx: Context) => {\n // Use validated data from ctx.state if available, otherwise fall back to raw data\n const params = ctx.state.params ?? ctx.params;\n const query = ctx.state.query ?? ctx.query;\n const body = ctx.state.body ?? (ctx.request as any).body;\n\n const result = await handler(ctx, params, body, query);\n\n ctx.status = config.status ?? defaultStatus;\n ctx.body = result;\n });\n\n return middlewares;\n }\n}"],"names":["Router","validate","BaseController","registerPost","path","handler","config","middlewares","buildMiddlewareStack","post","registerGet","body","undefined","get","registerPatch","query","patch","registerDelete","delete","registerPut","put","defaultStatus","push","validationConfig","params","response","ctx","state","request","result","status"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AAGjC,SAASC,QAAQ,QAAQ,yCAAyC;AA6BlE,OAAO,MAAeC,uBAAuBF;IACjCG,aAMRC,IAAY,EACZC,OAKC,EACDC,MAA+F,EACzF;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAASC,QAAQ;QAC/D,IAAI,CAACG,IAAI,CAACL,SAASG;IACrB;IAEUG,YAKRN,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAEK,MAAMC;QAAU,GAAG;QACvF,IAAI,CAACC,GAAG,CAACT,SAASG;IACpB;IAEUO,cAKRV,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAES,OAAOH;QAAU,GAAG;QACxF,IAAI,CAACI,KAAK,CAACZ,SAASG;IACtB;IAEUU,eAIRb,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAC3CH,SACA;YAAE,GAAGC,MAAM;YAAES,OAAOH;YAAWD,MAAMC;QAAU,GAC/C;QAEF,IAAI,CAACM,MAAM,CAACd,SAASG;IACvB;IAEUY,YAKRf,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAES,OAAOH;QAAU,GAAG;QACxF,IAAI,CAACQ,GAAG,CAAChB,SAASG;IACpB;IAEQC,qBAMNH,OAA0C,EAC1CC,MAA+F,EAC/Fe,aAAqB,EACP;QACd,MAAMd,cAA4B,EAAE;QAEpC,+BAA+B;QAC/B,IAAID,OAAOC,WAAW,EAAE;YACtBA,YAAYe,IAAI,IAAIhB,OAAOC,WAAW;QACxC;QAEA,4BAA4B;QAC5B,MAAMgB,mBAA8C,CAAC;QACrD,IAAIjB,OAAOkB,MAAM,EAAED,iBAAiBC,MAAM,GAAGlB,OAAOkB,MAAM;QAC1D,IAAIlB,OAAOS,KAAK,EAAEQ,iBAAiBR,KAAK,GAAGT,OAAOS,KAAK;QACvD,IAAIT,OAAOK,IAAI,EAAEY,iBAAiBZ,IAAI,GAAGL,OAAOK,IAAI;QACpD,IAAIL,OAAOmB,QAAQ,EAAEF,iBAAiBE,QAAQ,GAAGnB,OAAOmB,QAAQ;QAEhElB,YAAYe,IAAI,CAACrB,SAASsB;QAE1B,sBAAsB;QACtBhB,YAAYe,IAAI,CAAC,OAAOI;YACtB,kFAAkF;YAClF,MAAMF,SAASE,IAAIC,KAAK,CAACH,MAAM,IAAIE,IAAIF,MAAM;YAC7C,MAAMT,QAAQW,IAAIC,KAAK,CAACZ,KAAK,IAAIW,IAAIX,KAAK;YAC1C,MAAMJ,OAAOe,IAAIC,KAAK,CAAChB,IAAI,IAAI,AAACe,IAAIE,OAAO,CAASjB,IAAI;YAExD,MAAMkB,SAAS,MAAMxB,QAAQqB,KAAKF,QAAQb,MAAMI;YAEhDW,IAAII,MAAM,GAAGxB,OAAOwB,MAAM,IAAIT;YAC9BK,IAAIf,IAAI,GAAGkB;QACb;QAEA,OAAOtB;IACT;AACF"}
@@ -1,60 +0,0 @@
1
- import { DataTypes } from "sequelize";
2
- export default {
3
- async up (queryInterface) {
4
- // Ensure uuid-ossp extension exists
5
- await queryInterface.sequelize.query('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";');
6
- await queryInterface.createTable("UserProgressPhotos", {
7
- uuid: {
8
- type: DataTypes.UUID,
9
- defaultValue: queryInterface.sequelize.literal("uuid_generate_v4()"),
10
- allowNull: false,
11
- primaryKey: true
12
- },
13
- userUuid: {
14
- type: DataTypes.UUID,
15
- allowNull: false,
16
- references: {
17
- model: "PersistedUsers",
18
- key: "userUuid"
19
- },
20
- onUpdate: "CASCADE",
21
- onDelete: "CASCADE"
22
- },
23
- firebasePath: {
24
- type: DataTypes.STRING,
25
- allowNull: false
26
- },
27
- photoDate: {
28
- type: DataTypes.DATE,
29
- allowNull: false
30
- },
31
- programId: {
32
- type: DataTypes.UUID,
33
- allowNull: true
34
- },
35
- createdAt: {
36
- type: DataTypes.DATE,
37
- allowNull: false,
38
- defaultValue: queryInterface.sequelize.literal("CURRENT_TIMESTAMP")
39
- },
40
- updatedAt: {
41
- type: DataTypes.DATE,
42
- allowNull: false,
43
- defaultValue: queryInterface.sequelize.literal("CURRENT_TIMESTAMP")
44
- }
45
- });
46
- // Add index on userUuid for efficient querying
47
- await queryInterface.addIndex("UserProgressPhotos", [
48
- "userUuid"
49
- ]);
50
- // Add index on programId for legacy support
51
- await queryInterface.addIndex("UserProgressPhotos", [
52
- "programId"
53
- ]);
54
- },
55
- async down (queryInterface) {
56
- await queryInterface.dropTable("UserProgressPhotos");
57
- }
58
- };
59
-
60
- //# sourceMappingURL=20260330000000-create-user-progress-photos.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/db/migrations/20260330000000-create-user-progress-photos.ts"],"sourcesContent":["import { QueryInterface, DataTypes } from \"sequelize\";\n\nexport default {\n async up(queryInterface: QueryInterface): Promise<void> {\n // Ensure uuid-ossp extension exists\n await queryInterface.sequelize.query(\n 'CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";'\n );\n\n await queryInterface.createTable(\"UserProgressPhotos\", {\n uuid: {\n type: DataTypes.UUID,\n defaultValue: queryInterface.sequelize.literal(\"uuid_generate_v4()\"),\n allowNull: false,\n primaryKey: true,\n },\n userUuid: {\n type: DataTypes.UUID,\n allowNull: false,\n references: {\n model: \"PersistedUsers\",\n key: \"userUuid\",\n },\n onUpdate: \"CASCADE\",\n onDelete: \"CASCADE\",\n },\n firebasePath: {\n type: DataTypes.STRING,\n allowNull: false,\n },\n photoDate: {\n type: DataTypes.DATE,\n allowNull: false,\n },\n programId: {\n type: DataTypes.UUID,\n allowNull: true,\n },\n createdAt: {\n type: DataTypes.DATE,\n allowNull: false,\n defaultValue: queryInterface.sequelize.literal(\"CURRENT_TIMESTAMP\"),\n },\n updatedAt: {\n type: DataTypes.DATE,\n allowNull: false,\n defaultValue: queryInterface.sequelize.literal(\"CURRENT_TIMESTAMP\"),\n },\n });\n\n // Add index on userUuid for efficient querying\n await queryInterface.addIndex(\"UserProgressPhotos\", [\"userUuid\"]);\n\n // Add index on programId for legacy support\n await queryInterface.addIndex(\"UserProgressPhotos\", [\"programId\"]);\n },\n\n async down(queryInterface: QueryInterface): Promise<void> {\n await queryInterface.dropTable(\"UserProgressPhotos\");\n },\n};\n"],"names":["DataTypes","up","queryInterface","sequelize","query","createTable","uuid","type","UUID","defaultValue","literal","allowNull","primaryKey","userUuid","references","model","key","onUpdate","onDelete","firebasePath","STRING","photoDate","DATE","programId","createdAt","updatedAt","addIndex","down","dropTable"],"mappings":"AAAA,SAAyBA,SAAS,QAAQ,YAAY;AAEtD,eAAe;IACb,MAAMC,IAAGC,cAA8B;QACrC,oCAAoC;QACpC,MAAMA,eAAeC,SAAS,CAACC,KAAK,CAClC;QAGF,MAAMF,eAAeG,WAAW,CAAC,sBAAsB;YACrDC,MAAM;gBACJC,MAAMP,UAAUQ,IAAI;gBACpBC,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;gBAC/CC,WAAW;gBACXC,YAAY;YACd;YACAC,UAAU;gBACRN,MAAMP,UAAUQ,IAAI;gBACpBG,WAAW;gBACXG,YAAY;oBACVC,OAAO;oBACPC,KAAK;gBACP;gBACAC,UAAU;gBACVC,UAAU;YACZ;YACAC,cAAc;gBACZZ,MAAMP,UAAUoB,MAAM;gBACtBT,WAAW;YACb;YACAU,WAAW;gBACTd,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;YACb;YACAY,WAAW;gBACThB,MAAMP,UAAUQ,IAAI;gBACpBG,WAAW;YACb;YACAa,WAAW;gBACTjB,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;gBACXF,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;YACjD;YACAe,WAAW;gBACTlB,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;gBACXF,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;YACjD;QACF;QAEA,+CAA+C;QAC/C,MAAMR,eAAewB,QAAQ,CAAC,sBAAsB;YAAC;SAAW;QAEhE,4CAA4C;QAC5C,MAAMxB,eAAewB,QAAQ,CAAC,sBAAsB;YAAC;SAAY;IACnE;IAEA,MAAMC,MAAKzB,cAA8B;QACvC,MAAMA,eAAe0B,SAAS,CAAC;IACjC;AACF,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UserProgressPhoto.d.ts","sourceRoot":"","sources":["../../../src/lib/dbmodels/UserProgressPhoto.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,qBAIa,iBAAkB,SAAQ,KAAK;IAQlC,IAAI,EAAE,MAAM,CAAC;IAQb,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,aAAa,CAAC;IAOpB,YAAY,EAAE,MAAM,CAAC;IAOrB,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACzB"}
@@ -1,59 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { Table, Column, Model, DataType, ForeignKey, BelongsTo, Default, AllowNull } from "sequelize-typescript";
8
- import { PersistedUser } from "./user/PersistedUser.js";
9
- export class UserProgressPhoto extends Model {
10
- }
11
- _ts_decorate([
12
- Default(DataType.UUIDV4),
13
- Column({
14
- type: DataType.UUID,
15
- defaultValue: DataType.UUID,
16
- allowNull: false,
17
- primaryKey: true
18
- })
19
- ], UserProgressPhoto.prototype, "uuid", void 0);
20
- _ts_decorate([
21
- ForeignKey(()=>PersistedUser),
22
- AllowNull(false),
23
- Column({
24
- type: DataType.UUID,
25
- allowNull: false
26
- })
27
- ], UserProgressPhoto.prototype, "userUuid", void 0);
28
- _ts_decorate([
29
- BelongsTo(()=>PersistedUser)
30
- ], UserProgressPhoto.prototype, "user", void 0);
31
- _ts_decorate([
32
- AllowNull(false),
33
- Column({
34
- type: DataType.STRING,
35
- allowNull: false
36
- })
37
- ], UserProgressPhoto.prototype, "firebasePath", void 0);
38
- _ts_decorate([
39
- AllowNull(false),
40
- Column({
41
- type: DataType.DATE,
42
- allowNull: false
43
- })
44
- ], UserProgressPhoto.prototype, "photoDate", void 0);
45
- _ts_decorate([
46
- AllowNull(true),
47
- Column({
48
- type: DataType.UUID,
49
- allowNull: true
50
- })
51
- ], UserProgressPhoto.prototype, "programId", void 0);
52
- UserProgressPhoto = _ts_decorate([
53
- Table({
54
- tableName: "UserProgressPhotos",
55
- timestamps: true
56
- })
57
- ], UserProgressPhoto);
58
-
59
- //# sourceMappingURL=UserProgressPhoto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/dbmodels/UserProgressPhoto.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n DataType,\n ForeignKey,\n BelongsTo,\n Default,\n AllowNull,\n} from \"sequelize-typescript\";\nimport { PersistedUser } from \"./user/PersistedUser.js\";\n\n@Table({\n tableName: \"UserProgressPhotos\",\n timestamps: true,\n})\nexport class UserProgressPhoto extends Model {\n @Default(DataType.UUIDV4)\n @Column({\n type: DataType.UUID,\n defaultValue: DataType.UUID,\n allowNull: false,\n primaryKey: true,\n })\n declare uuid: string;\n\n @ForeignKey(() => PersistedUser)\n @AllowNull(false)\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n declare userUuid: string;\n\n @BelongsTo(() => PersistedUser)\n declare user: PersistedUser;\n\n @AllowNull(false)\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n declare firebasePath: string;\n\n @AllowNull(false)\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare photoDate: Date;\n\n @AllowNull(true)\n @Column({\n type: DataType.UUID,\n allowNull: true,\n })\n declare programId: string | null;\n\n declare createdAt: Date;\n declare updatedAt: Date;\n}\n"],"names":["Table","Column","Model","DataType","ForeignKey","BelongsTo","Default","AllowNull","PersistedUser","UserProgressPhoto","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","STRING","DATE","tableName","timestamps"],"mappings":";;;;;;AAAA,SACEA,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,SAAS,QACJ,uBAAuB;AAC9B,SAASC,aAAa,QAAQ,0BAA0B;AAMxD,OAAO,MAAMC,0BAA0BP;AA4CvC;;qBA3CoBQ;;QAEhBC,MAAMR,SAASS,IAAI;QACnBC,cAAcV,SAASS,IAAI;QAC3BE,WAAW;QACXC,YAAY;;;;mBAIIP;;;QAGhBG,MAAMR,SAASS,IAAI;QACnBE,WAAW;;;;kBAIIN;;;;;QAKfG,MAAMR,SAASa,MAAM;QACrBF,WAAW;;;;;;QAMXH,MAAMR,SAASc,IAAI;QACnBH,WAAW;;;;;;QAMXH,MAAMR,SAASS,IAAI;QACnBE,WAAW;;;;;QAzCbI,WAAW;QACXC,YAAY"}
@@ -1,51 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { Table, Model, Column, DataType, Default, PrimaryKey, Index, ForeignKey, BelongsTo } from "sequelize-typescript";
8
- import { QuestionnaireResponse } from "./QuestionnaireResponse.js";
9
- import { Question } from "./Question.js";
10
- export class Answer extends Model {
11
- }
12
- _ts_decorate([
13
- PrimaryKey,
14
- Default(DataType.UUIDV4),
15
- Column(DataType.UUID)
16
- ], Answer.prototype, "uuid", void 0);
17
- _ts_decorate([
18
- ForeignKey(()=>QuestionnaireResponse),
19
- Index,
20
- Column(DataType.UUID)
21
- ], Answer.prototype, "responseUuid", void 0);
22
- _ts_decorate([
23
- BelongsTo(()=>QuestionnaireResponse)
24
- ], Answer.prototype, "response", void 0);
25
- _ts_decorate([
26
- ForeignKey(()=>Question),
27
- Index,
28
- Column(DataType.UUID)
29
- ], Answer.prototype, "questionUuid", void 0);
30
- _ts_decorate([
31
- BelongsTo(()=>Question)
32
- ], Answer.prototype, "question", void 0);
33
- _ts_decorate([
34
- Column(DataType.JSONB)
35
- ], Answer.prototype, "value", void 0);
36
- _ts_decorate([
37
- Index,
38
- Column(DataType.TEXT)
39
- ], Answer.prototype, "valueText", void 0);
40
- _ts_decorate([
41
- Index,
42
- Column(DataType.FLOAT)
43
- ], Answer.prototype, "valueNumber", void 0);
44
- Answer = _ts_decorate([
45
- Table({
46
- tableName: "Answer",
47
- timestamps: true
48
- })
49
- ], Answer);
50
-
51
- //# sourceMappingURL=Answer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/dbmodels/coaching/Answer.ts"],"sourcesContent":["import {\n Table,\n Model,\n Column,\n DataType,\n Default,\n PrimaryKey,\n Index,\n ForeignKey,\n BelongsTo,\n} from \"sequelize-typescript\";\nimport { QuestionnaireResponse } from \"./QuestionnaireResponse.js\";\nimport { Question } from \"./Question.js\";\n\n@Table({ tableName: \"Answer\", timestamps: true })\nexport class Answer extends Model<Answer> {\n @PrimaryKey\n @Default(DataType.UUIDV4)\n @Column(DataType.UUID)\n declare uuid: string;\n\n @ForeignKey(() => QuestionnaireResponse)\n @Index\n @Column(DataType.UUID)\n declare responseUuid: string;\n\n @BelongsTo(() => QuestionnaireResponse) declare response?: QuestionnaireResponse;\n\n @ForeignKey(() => Question)\n @Index\n @Column(DataType.UUID)\n declare questionUuid: string;\n\n @BelongsTo(() => Question) declare question?: Question;\n\n @Column(DataType.JSONB) declare value: any;\n\n @Index @Column(DataType.TEXT) declare valueText?: string | null;\n @Index @Column(DataType.FLOAT) declare valueNumber?: number | null;\n}\n"],"names":["Table","Model","Column","DataType","Default","PrimaryKey","Index","ForeignKey","BelongsTo","QuestionnaireResponse","Question","Answer","UUIDV4","UUID","JSONB","TEXT","FLOAT","tableName","timestamps"],"mappings":";;;;;;AAAA,SACIA,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,SAAS,QACN,uBAAuB;AAC9B,SAASC,qBAAqB,QAAQ,6BAA6B;AACnE,SAASC,QAAQ,QAAQ,gBAAgB;AAGzC,OAAO,MAAMC,eAAeV;AAwB5B;;;qBAtBsBW;oBACDC;;;mBAGCJ;;oBAEDI;;;kBAGAJ;;;mBAECC;;oBAEDG;;;kBAGAH;;;oBAEAI;;;;oBAEOC;;;;oBACAC;;;;QAxBnBC,WAAW;QAAUC,YAAY"}
@@ -1,75 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { BelongsTo, Column, DataType, Default, ForeignKey, Model, Table, Index } from "sequelize-typescript";
8
- import { PersistedUser } from "../user/PersistedUser.js";
9
- export var ClientNoteType = /*#__PURE__*/ function(ClientNoteType) {
10
- ClientNoteType["CLOSER"] = "CLOSER";
11
- ClientNoteType["HEAD_COACH"] = "HEAD_COACH";
12
- ClientNoteType["COACH"] = "COACH";
13
- ClientNoteType["SYSTEM"] = "SYSTEM";
14
- return ClientNoteType;
15
- }({});
16
- export class ClientNote extends Model {
17
- toJSON() {
18
- return super.toJSON();
19
- }
20
- }
21
- _ts_decorate([
22
- Default(DataType.UUIDV4),
23
- Column({
24
- type: DataType.UUID,
25
- defaultValue: DataType.UUIDV4,
26
- allowNull: false,
27
- primaryKey: true
28
- })
29
- ], ClientNote.prototype, "uuid", void 0);
30
- _ts_decorate([
31
- ForeignKey(()=>PersistedUser),
32
- Column({
33
- type: DataType.UUID,
34
- allowNull: false
35
- })
36
- ], ClientNote.prototype, "clientUuid", void 0);
37
- _ts_decorate([
38
- ForeignKey(()=>PersistedUser),
39
- Column({
40
- type: DataType.UUID,
41
- allowNull: true
42
- })
43
- ], ClientNote.prototype, "coachUuid", void 0);
44
- _ts_decorate([
45
- Column({
46
- type: DataType.TEXT,
47
- allowNull: false
48
- })
49
- ], ClientNote.prototype, "note", void 0);
50
- _ts_decorate([
51
- Default("COACH"),
52
- Column({
53
- type: DataType.ENUM(...Object.values(ClientNoteType)),
54
- allowNull: false
55
- })
56
- ], ClientNote.prototype, "noteType", void 0);
57
- _ts_decorate([
58
- BelongsTo(()=>PersistedUser, {
59
- foreignKey: 'coachUuid',
60
- as: 'coach'
61
- })
62
- ], ClientNote.prototype, "coach", void 0);
63
- ClientNote = _ts_decorate([
64
- Table({
65
- timestamps: true
66
- }),
67
- Index([
68
- 'clientUuid'
69
- ]),
70
- Index([
71
- 'coachUuid'
72
- ])
73
- ], ClientNote);
74
-
75
- //# sourceMappingURL=ClientNote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/dbmodels/coaching/ClientNote.ts"],"sourcesContent":["import { BelongsTo, Column, DataType, Default, ForeignKey, Model, Table, Index } from 'sequelize-typescript';\nimport type { Optional } from 'sequelize';\nimport { PersistedUser } from '../user/PersistedUser.js';\n\nexport enum ClientNoteType {\n\tCLOSER = 'CLOSER',\n\tHEAD_COACH = 'HEAD_COACH',\n\tCOACH = 'COACH',\n\tSYSTEM = 'SYSTEM'\n}\n\nexport interface ClientNoteAttributes {\n\tuuid: string;\n\tclientUuid: string;\n\tcoachUuid: string | null;\n\tnote: string;\n\tnoteType: ClientNoteType;\n\tcreatedAt?: Date;\n\tupdatedAt?: Date;\n}\n\nexport interface ClientNoteCreationAttributes extends Optional<ClientNoteAttributes, \"uuid\" | \"createdAt\" | \"updatedAt\" | \"noteType\" | \"coachUuid\"> {\n}\n\n@Table({timestamps: true})\n@Index(['clientUuid'])\n@Index(['coachUuid'])\nexport class ClientNote extends Model<ClientNoteAttributes, ClientNoteCreationAttributes> {\n\t@Default(DataType.UUIDV4)\n\t@Column({\n\t\ttype: DataType.UUID,\n\t\tdefaultValue: DataType.UUIDV4,\n\t\tallowNull: false,\n\t\tprimaryKey: true\n\t})\n\tdeclare uuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: false })\n\tdeclare clientUuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: true })\n\tdeclare coachUuid: string | null;\n\n\t@Column({ type: DataType.TEXT, allowNull: false })\n\tdeclare note: string;\n\n\t@Default(ClientNoteType.COACH)\n\t@Column({\n\t\ttype: DataType.ENUM(...Object.values(ClientNoteType)),\n\t\tallowNull: false\n\t})\n\tdeclare noteType: ClientNoteType;\n\n\t@BelongsTo(() => PersistedUser, { foreignKey: 'coachUuid', as: 'coach' })\n\tdeclare coach: PersistedUser;\n\n\tdeclare createdAt: Date;\n\tdeclare updatedAt: Date;\n\n\toverride toJSON(): ClientNoteAttributes {\n\t\treturn super.toJSON() as ClientNoteAttributes;\n\t}\n}\n"],"names":["BelongsTo","Column","DataType","Default","ForeignKey","Model","Table","Index","PersistedUser","ClientNoteType","ClientNote","toJSON","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","TEXT","ENUM","Object","values","foreignKey","as","timestamps"],"mappings":";;;;;;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAE7G,SAASC,aAAa,QAAQ,2BAA2B;AAEzD,OAAO,IAAA,AAAKC,wCAAAA;;;;;WAAAA;MAKX;AAkBD,OAAO,MAAMC,mBAAmBL;IAkCtBM,SAA+B;QACvC,OAAO,KAAK,CAACA;IACd;AACD;;qBApCmBC;;QAEjBC,MAAMX,SAASY,IAAI;QACnBC,cAAcb,SAASU,MAAM;QAC7BI,WAAW;QACXC,YAAY;;;;mBAIKT;;QACRK,MAAMX,SAASY,IAAI;QAAEE,WAAW;;;;mBAGxBR;;QACRK,MAAMX,SAASY,IAAI;QAAEE,WAAW;;;;;QAGhCH,MAAMX,SAASgB,IAAI;QAAEF,WAAW;;;;;;QAKzCH,MAAMX,SAASiB,IAAI,IAAIC,OAAOC,MAAM,CAACZ;QACrCO,WAAW;;;;kBAIKR;QAAiBc,YAAY;QAAaC,IAAI;;;;;QA/BxDC,YAAY;;;QACZ;;;QACA"}
@@ -1,45 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { Column, DataType, Default, ForeignKey, Model, Table, Index } from "sequelize-typescript";
8
- import { PersistedUser } from "../user/PersistedUser.js";
9
- export class ClientTag extends Model {
10
- toJSON() {
11
- return super.toJSON();
12
- }
13
- }
14
- _ts_decorate([
15
- Default(DataType.UUIDV4),
16
- Column({
17
- type: DataType.UUID,
18
- defaultValue: DataType.UUIDV4,
19
- allowNull: false,
20
- primaryKey: true
21
- })
22
- ], ClientTag.prototype, "uuid", void 0);
23
- _ts_decorate([
24
- ForeignKey(()=>PersistedUser),
25
- Column({
26
- type: DataType.UUID,
27
- allowNull: false
28
- })
29
- ], ClientTag.prototype, "clientUuid", void 0);
30
- _ts_decorate([
31
- Column({
32
- type: DataType.STRING,
33
- allowNull: false
34
- })
35
- ], ClientTag.prototype, "tag", void 0);
36
- ClientTag = _ts_decorate([
37
- Table({
38
- timestamps: true
39
- }),
40
- Index([
41
- 'clientUuid'
42
- ])
43
- ], ClientTag);
44
-
45
- //# sourceMappingURL=ClientTag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/dbmodels/coaching/ClientTag.ts"],"sourcesContent":["import { Column, DataType, Default, ForeignKey, Model, Table, Index } from 'sequelize-typescript';\nimport type { Optional } from 'sequelize';\nimport { PersistedUser } from '../user/PersistedUser.js';\n\nexport interface ClientTagAttributes {\n\tuuid: string;\n\tclientUuid: string;\n\ttag: string;\n\tcreatedAt?: Date;\n\tupdatedAt?: Date;\n}\n\nexport interface ClientTagCreationAttributes extends Optional<ClientTagAttributes, \"uuid\" | \"createdAt\" | \"updatedAt\"> {\n}\n\n@Table({timestamps: true})\n@Index(['clientUuid'])\nexport class ClientTag extends Model<ClientTagAttributes, ClientTagCreationAttributes> {\n\t@Default(DataType.UUIDV4)\n\t@Column({\n\t\ttype: DataType.UUID,\n\t\tdefaultValue: DataType.UUIDV4,\n\t\tallowNull: false,\n\t\tprimaryKey: true\n\t})\n\tdeclare uuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: false })\n\tdeclare clientUuid: string;\n\n\t@Column({ type: DataType.STRING, allowNull: false })\n\tdeclare tag: string;\n\n\tdeclare createdAt: Date;\n\tdeclare updatedAt: Date;\n\n\toverride toJSON(): ClientTagAttributes {\n\t\treturn super.toJSON() as ClientTagAttributes;\n\t}\n}\n"],"names":["Column","DataType","Default","ForeignKey","Model","Table","Index","PersistedUser","ClientTag","toJSON","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","STRING","timestamps"],"mappings":";;;;;;AAAA,SAASA,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAElG,SAASC,aAAa,QAAQ,2BAA2B;AAezD,OAAO,MAAMC,kBAAkBJ;IAoBrBK,SAA8B;QACtC,OAAO,KAAK,CAACA;IACd;AACD;;qBAtBmBC;;QAEjBC,MAAMV,SAASW,IAAI;QACnBC,cAAcZ,SAASS,MAAM;QAC7BI,WAAW;QACXC,YAAY;;;;mBAIKR;;QACRI,MAAMV,SAASW,IAAI;QAAEE,WAAW;;;;;QAGhCH,MAAMV,SAASe,MAAM;QAAEF,WAAW;;;;;QAhBrCG,YAAY;;;QACZ"}