gymmonk-schema 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -626
- package/dist/common.d.ts +27 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +35 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +10 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -17
- package/dist/index.js.map +1 -1
- package/package.json +9 -11
- package/dist/audit/audit-log.schema.d.ts +0 -78
- package/dist/audit/audit-log.schema.d.ts.map +0 -1
- package/dist/audit/audit-log.schema.js +0 -78
- package/dist/audit/audit-log.schema.js.map +0 -1
- package/dist/audit/index.d.ts +0 -2
- package/dist/audit/index.d.ts.map +0 -1
- package/dist/audit/index.js +0 -2
- package/dist/audit/index.js.map +0 -1
- package/dist/auth/device/device.schema.d.ts +0 -10
- package/dist/auth/device/device.schema.d.ts.map +0 -1
- package/dist/auth/device/device.schema.js +0 -10
- package/dist/auth/device/device.schema.js.map +0 -1
- package/dist/auth/device/index.d.ts +0 -2
- package/dist/auth/device/index.d.ts.map +0 -1
- package/dist/auth/device/index.js +0 -2
- package/dist/auth/device/index.js.map +0 -1
- package/dist/auth/index.d.ts +0 -10
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -10
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/otp/index.d.ts +0 -2
- package/dist/auth/otp/index.d.ts.map +0 -1
- package/dist/auth/otp/index.js +0 -2
- package/dist/auth/otp/index.js.map +0 -1
- package/dist/auth/otp/otp.schema.d.ts +0 -8
- package/dist/auth/otp/otp.schema.d.ts.map +0 -1
- package/dist/auth/otp/otp.schema.js +0 -9
- package/dist/auth/otp/otp.schema.js.map +0 -1
- package/dist/auth/password-history/index.d.ts +0 -2
- package/dist/auth/password-history/index.d.ts.map +0 -1
- package/dist/auth/password-history/index.js +0 -2
- package/dist/auth/password-history/index.js.map +0 -1
- package/dist/auth/password-history/password-history.schema.d.ts +0 -8
- package/dist/auth/password-history/password-history.schema.d.ts.map +0 -1
- package/dist/auth/password-history/password-history.schema.js +0 -8
- package/dist/auth/password-history/password-history.schema.js.map +0 -1
- package/dist/auth/permission/index.d.ts +0 -3
- package/dist/auth/permission/index.d.ts.map +0 -1
- package/dist/auth/permission/index.js +0 -3
- package/dist/auth/permission/index.js.map +0 -1
- package/dist/auth/permission/permission.dto.d.ts +0 -7
- package/dist/auth/permission/permission.dto.d.ts.map +0 -1
- package/dist/auth/permission/permission.dto.js +0 -6
- package/dist/auth/permission/permission.dto.js.map +0 -1
- package/dist/auth/permission/permission.schema.d.ts +0 -7
- package/dist/auth/permission/permission.schema.d.ts.map +0 -1
- package/dist/auth/permission/permission.schema.js +0 -7
- package/dist/auth/permission/permission.schema.js.map +0 -1
- package/dist/auth/resource/index.d.ts +0 -2
- package/dist/auth/resource/index.d.ts.map +0 -1
- package/dist/auth/resource/index.js +0 -2
- package/dist/auth/resource/index.js.map +0 -1
- package/dist/auth/resource/resource.schema.d.ts +0 -7
- package/dist/auth/resource/resource.schema.d.ts.map +0 -1
- package/dist/auth/resource/resource.schema.js +0 -7
- package/dist/auth/resource/resource.schema.js.map +0 -1
- package/dist/auth/role/index.d.ts +0 -3
- package/dist/auth/role/index.d.ts.map +0 -1
- package/dist/auth/role/index.js +0 -3
- package/dist/auth/role/index.js.map +0 -1
- package/dist/auth/role/role.dto.d.ts +0 -8
- package/dist/auth/role/role.dto.d.ts.map +0 -1
- package/dist/auth/role/role.dto.js +0 -7
- package/dist/auth/role/role.dto.js.map +0 -1
- package/dist/auth/role/role.schema.d.ts +0 -8
- package/dist/auth/role/role.schema.d.ts.map +0 -1
- package/dist/auth/role/role.schema.js +0 -8
- package/dist/auth/role/role.schema.js.map +0 -1
- package/dist/auth/token/index.d.ts +0 -2
- package/dist/auth/token/index.d.ts.map +0 -1
- package/dist/auth/token/index.js +0 -2
- package/dist/auth/token/index.js.map +0 -1
- package/dist/auth/token/token.schema.d.ts +0 -7
- package/dist/auth/token/token.schema.d.ts.map +0 -1
- package/dist/auth/token/token.schema.js +0 -6
- package/dist/auth/token/token.schema.js.map +0 -1
- package/dist/auth/user/index.d.ts +0 -5
- package/dist/auth/user/index.d.ts.map +0 -1
- package/dist/auth/user/index.js +0 -5
- package/dist/auth/user/index.js.map +0 -1
- package/dist/auth/user/user.dto.d.ts +0 -21
- package/dist/auth/user/user.dto.d.ts.map +0 -1
- package/dist/auth/user/user.dto.js +0 -22
- package/dist/auth/user/user.dto.js.map +0 -1
- package/dist/auth/user/user.public.d.ts +0 -29
- package/dist/auth/user/user.public.d.ts.map +0 -1
- package/dist/auth/user/user.public.js +0 -19
- package/dist/auth/user/user.public.js.map +0 -1
- package/dist/auth/user/user.schema.d.ts +0 -34
- package/dist/auth/user/user.schema.d.ts.map +0 -1
- package/dist/auth/user/user.schema.js +0 -27
- package/dist/auth/user/user.schema.js.map +0 -1
- package/dist/auth/user/user.types.d.ts +0 -4
- package/dist/auth/user/user.types.d.ts.map +0 -1
- package/dist/auth/user/user.types.js +0 -2
- package/dist/auth/user/user.types.js.map +0 -1
- package/dist/auth/user-activity/index.d.ts +0 -2
- package/dist/auth/user-activity/index.d.ts.map +0 -1
- package/dist/auth/user-activity/index.js +0 -2
- package/dist/auth/user-activity/index.js.map +0 -1
- package/dist/auth/user-activity/user-activity.schema.d.ts +0 -10
- package/dist/auth/user-activity/user-activity.schema.d.ts.map +0 -1
- package/dist/auth/user-activity/user-activity.schema.js +0 -11
- package/dist/auth/user-activity/user-activity.schema.js.map +0 -1
- package/dist/common/enums/gender.enum.d.ts +0 -9
- package/dist/common/enums/gender.enum.d.ts.map +0 -1
- package/dist/common/enums/gender.enum.js +0 -4
- package/dist/common/enums/gender.enum.js.map +0 -1
- package/dist/common/enums/index.d.ts +0 -4
- package/dist/common/enums/index.d.ts.map +0 -1
- package/dist/common/enums/index.js +0 -4
- package/dist/common/enums/index.js.map +0 -1
- package/dist/common/enums/notification-type.enum.d.ts +0 -11
- package/dist/common/enums/notification-type.enum.d.ts.map +0 -1
- package/dist/common/enums/notification-type.enum.js +0 -10
- package/dist/common/enums/notification-type.enum.js.map +0 -1
- package/dist/common/enums/status.enum.d.ts +0 -10
- package/dist/common/enums/status.enum.d.ts.map +0 -1
- package/dist/common/enums/status.enum.js +0 -4
- package/dist/common/enums/status.enum.js.map +0 -1
- package/dist/common/index.d.ts +0 -5
- package/dist/common/index.d.ts.map +0 -1
- package/dist/common/index.js +0 -5
- package/dist/common/index.js.map +0 -1
- package/dist/common/pagination/index.d.ts +0 -2
- package/dist/common/pagination/index.d.ts.map +0 -1
- package/dist/common/pagination/index.js +0 -2
- package/dist/common/pagination/index.js.map +0 -1
- package/dist/common/pagination/pagination.schema.d.ts +0 -19
- package/dist/common/pagination/pagination.schema.d.ts.map +0 -1
- package/dist/common/pagination/pagination.schema.js +0 -22
- package/dist/common/pagination/pagination.schema.js.map +0 -1
- package/dist/common/primitives/date.schema.d.ts +0 -14
- package/dist/common/primitives/date.schema.d.ts.map +0 -1
- package/dist/common/primitives/date.schema.js +0 -17
- package/dist/common/primitives/date.schema.js.map +0 -1
- package/dist/common/primitives/index.d.ts +0 -4
- package/dist/common/primitives/index.d.ts.map +0 -1
- package/dist/common/primitives/index.js +0 -4
- package/dist/common/primitives/index.js.map +0 -1
- package/dist/common/primitives/object-id.schema.d.ts +0 -8
- package/dist/common/primitives/object-id.schema.d.ts.map +0 -1
- package/dist/common/primitives/object-id.schema.js +0 -9
- package/dist/common/primitives/object-id.schema.js.map +0 -1
- package/dist/common/primitives/string.schema.d.ts +0 -13
- package/dist/common/primitives/string.schema.d.ts.map +0 -1
- package/dist/common/primitives/string.schema.js +0 -16
- package/dist/common/primitives/string.schema.js.map +0 -1
- package/dist/common/value-objects/address.schema.d.ts +0 -11
- package/dist/common/value-objects/address.schema.d.ts.map +0 -1
- package/dist/common/value-objects/address.schema.js +0 -15
- package/dist/common/value-objects/address.schema.js.map +0 -1
- package/dist/common/value-objects/email.schema.d.ts +0 -4
- package/dist/common/value-objects/email.schema.d.ts.map +0 -1
- package/dist/common/value-objects/email.schema.js +0 -3
- package/dist/common/value-objects/email.schema.js.map +0 -1
- package/dist/common/value-objects/index.d.ts +0 -8
- package/dist/common/value-objects/index.d.ts.map +0 -1
- package/dist/common/value-objects/index.js +0 -8
- package/dist/common/value-objects/index.js.map +0 -1
- package/dist/common/value-objects/mfa.schema.d.ts +0 -19
- package/dist/common/value-objects/mfa.schema.d.ts.map +0 -1
- package/dist/common/value-objects/mfa.schema.js +0 -12
- package/dist/common/value-objects/mfa.schema.js.map +0 -1
- package/dist/common/value-objects/nutritional-values.schema.d.ts +0 -10
- package/dist/common/value-objects/nutritional-values.schema.d.ts.map +0 -1
- package/dist/common/value-objects/nutritional-values.schema.js +0 -9
- package/dist/common/value-objects/nutritional-values.schema.js.map +0 -1
- package/dist/common/value-objects/phone.schema.d.ts +0 -8
- package/dist/common/value-objects/phone.schema.d.ts.map +0 -1
- package/dist/common/value-objects/phone.schema.js +0 -11
- package/dist/common/value-objects/phone.schema.js.map +0 -1
- package/dist/common/value-objects/plan-variant.schema.d.ts +0 -24
- package/dist/common/value-objects/plan-variant.schema.d.ts.map +0 -1
- package/dist/common/value-objects/plan-variant.schema.js +0 -19
- package/dist/common/value-objects/plan-variant.schema.js.map +0 -1
- package/dist/common/value-objects/social-login.schema.d.ts +0 -20
- package/dist/common/value-objects/social-login.schema.d.ts.map +0 -1
- package/dist/common/value-objects/social-login.schema.js +0 -10
- package/dist/common/value-objects/social-login.schema.js.map +0 -1
- package/dist/community/conversation/conversation.schema.d.ts +0 -11
- package/dist/community/conversation/conversation.schema.d.ts.map +0 -1
- package/dist/community/conversation/conversation.schema.js +0 -29
- package/dist/community/conversation/conversation.schema.js.map +0 -1
- package/dist/community/conversation/index.d.ts +0 -2
- package/dist/community/conversation/index.d.ts.map +0 -1
- package/dist/community/conversation/index.js +0 -2
- package/dist/community/conversation/index.js.map +0 -1
- package/dist/community/index.d.ts +0 -4
- package/dist/community/index.d.ts.map +0 -1
- package/dist/community/index.js +0 -4
- package/dist/community/index.js.map +0 -1
- package/dist/community/message/index.d.ts +0 -2
- package/dist/community/message/index.d.ts.map +0 -1
- package/dist/community/message/index.js +0 -2
- package/dist/community/message/index.js.map +0 -1
- package/dist/community/message/message.schema.d.ts +0 -29
- package/dist/community/message/message.schema.d.ts.map +0 -1
- package/dist/community/message/message.schema.js +0 -28
- package/dist/community/message/message.schema.js.map +0 -1
- package/dist/community/post/index.d.ts +0 -2
- package/dist/community/post/index.d.ts.map +0 -1
- package/dist/community/post/index.js +0 -2
- package/dist/community/post/index.js.map +0 -1
- package/dist/community/post/post.schema.d.ts +0 -27
- package/dist/community/post/post.schema.d.ts.map +0 -1
- package/dist/community/post/post.schema.js +0 -32
- package/dist/community/post/post.schema.js.map +0 -1
- package/dist/feedback/feedback.schema.d.ts +0 -35
- package/dist/feedback/feedback.schema.d.ts.map +0 -1
- package/dist/feedback/feedback.schema.js +0 -41
- package/dist/feedback/feedback.schema.js.map +0 -1
- package/dist/feedback/index.d.ts +0 -2
- package/dist/feedback/index.d.ts.map +0 -1
- package/dist/feedback/index.js +0 -2
- package/dist/feedback/index.js.map +0 -1
- package/dist/gym/achievement-badge/achievement-badge.schema.d.ts +0 -11
- package/dist/gym/achievement-badge/achievement-badge.schema.d.ts.map +0 -1
- package/dist/gym/achievement-badge/achievement-badge.schema.js +0 -13
- package/dist/gym/achievement-badge/achievement-badge.schema.js.map +0 -1
- package/dist/gym/achievement-badge/index.d.ts +0 -2
- package/dist/gym/achievement-badge/index.d.ts.map +0 -1
- package/dist/gym/achievement-badge/index.js +0 -2
- package/dist/gym/achievement-badge/index.js.map +0 -1
- package/dist/gym/attendance/attendance.schema.d.ts +0 -25
- package/dist/gym/attendance/attendance.schema.d.ts.map +0 -1
- package/dist/gym/attendance/attendance.schema.js +0 -15
- package/dist/gym/attendance/attendance.schema.js.map +0 -1
- package/dist/gym/attendance/index.d.ts +0 -2
- package/dist/gym/attendance/index.d.ts.map +0 -1
- package/dist/gym/attendance/index.js +0 -2
- package/dist/gym/attendance/index.js.map +0 -1
- package/dist/gym/center/center.dto.d.ts +0 -2
- package/dist/gym/center/center.dto.d.ts.map +0 -1
- package/dist/gym/center/center.dto.js +0 -2
- package/dist/gym/center/center.dto.js.map +0 -1
- package/dist/gym/center/center.schema.d.ts +0 -28
- package/dist/gym/center/center.schema.d.ts.map +0 -1
- package/dist/gym/center/center.schema.js +0 -22
- package/dist/gym/center/center.schema.js.map +0 -1
- package/dist/gym/center/index.d.ts +0 -2
- package/dist/gym/center/index.d.ts.map +0 -1
- package/dist/gym/center/index.js +0 -2
- package/dist/gym/center/index.js.map +0 -1
- package/dist/gym/center-facility/center-facility.schema.d.ts +0 -15
- package/dist/gym/center-facility/center-facility.schema.d.ts.map +0 -1
- package/dist/gym/center-facility/center-facility.schema.js +0 -12
- package/dist/gym/center-facility/center-facility.schema.js.map +0 -1
- package/dist/gym/center-facility/index.d.ts +0 -2
- package/dist/gym/center-facility/index.d.ts.map +0 -1
- package/dist/gym/center-facility/index.js +0 -2
- package/dist/gym/center-facility/index.js.map +0 -1
- package/dist/gym/center-service/center-service.schema.d.ts +0 -27
- package/dist/gym/center-service/center-service.schema.d.ts.map +0 -1
- package/dist/gym/center-service/center-service.schema.js +0 -16
- package/dist/gym/center-service/center-service.schema.js.map +0 -1
- package/dist/gym/center-service/index.d.ts +0 -2
- package/dist/gym/center-service/index.d.ts.map +0 -1
- package/dist/gym/center-service/index.js +0 -2
- package/dist/gym/center-service/index.js.map +0 -1
- package/dist/gym/class-schedule/class-schedule.schema.d.ts +0 -15
- package/dist/gym/class-schedule/class-schedule.schema.d.ts.map +0 -1
- package/dist/gym/class-schedule/class-schedule.schema.js +0 -24
- package/dist/gym/class-schedule/class-schedule.schema.js.map +0 -1
- package/dist/gym/class-schedule/index.d.ts +0 -2
- package/dist/gym/class-schedule/index.d.ts.map +0 -1
- package/dist/gym/class-schedule/index.js +0 -2
- package/dist/gym/class-schedule/index.js.map +0 -1
- package/dist/gym/equipment-catalog/equipment-catalog.schema.d.ts +0 -11
- package/dist/gym/equipment-catalog/equipment-catalog.schema.d.ts.map +0 -1
- package/dist/gym/equipment-catalog/equipment-catalog.schema.js +0 -12
- package/dist/gym/equipment-catalog/equipment-catalog.schema.js.map +0 -1
- package/dist/gym/equipment-catalog/index.d.ts +0 -2
- package/dist/gym/equipment-catalog/index.d.ts.map +0 -1
- package/dist/gym/equipment-catalog/index.js +0 -2
- package/dist/gym/equipment-catalog/index.js.map +0 -1
- package/dist/gym/equipment-inventory/equipment-inventory.schema.d.ts +0 -24
- package/dist/gym/equipment-inventory/equipment-inventory.schema.d.ts.map +0 -1
- package/dist/gym/equipment-inventory/equipment-inventory.schema.js +0 -19
- package/dist/gym/equipment-inventory/equipment-inventory.schema.js.map +0 -1
- package/dist/gym/equipment-inventory/index.d.ts +0 -2
- package/dist/gym/equipment-inventory/index.d.ts.map +0 -1
- package/dist/gym/equipment-inventory/index.js +0 -2
- package/dist/gym/equipment-inventory/index.js.map +0 -1
- package/dist/gym/facility-catalog/facility-catalog.schema.d.ts +0 -8
- package/dist/gym/facility-catalog/facility-catalog.schema.d.ts.map +0 -1
- package/dist/gym/facility-catalog/facility-catalog.schema.js +0 -9
- package/dist/gym/facility-catalog/facility-catalog.schema.js.map +0 -1
- package/dist/gym/facility-catalog/index.d.ts +0 -2
- package/dist/gym/facility-catalog/index.d.ts.map +0 -1
- package/dist/gym/facility-catalog/index.js +0 -2
- package/dist/gym/facility-catalog/index.js.map +0 -1
- package/dist/gym/goal/goal.schema.d.ts +0 -26
- package/dist/gym/goal/goal.schema.d.ts.map +0 -1
- package/dist/gym/goal/goal.schema.js +0 -17
- package/dist/gym/goal/goal.schema.js.map +0 -1
- package/dist/gym/goal/index.d.ts +0 -2
- package/dist/gym/goal/index.d.ts.map +0 -1
- package/dist/gym/goal/index.js +0 -2
- package/dist/gym/goal/index.js.map +0 -1
- package/dist/gym/gym-layout/gym-layout.schema.d.ts +0 -22
- package/dist/gym/gym-layout/gym-layout.schema.d.ts.map +0 -1
- package/dist/gym/gym-layout/gym-layout.schema.js +0 -20
- package/dist/gym/gym-layout/gym-layout.schema.js.map +0 -1
- package/dist/gym/gym-layout/index.d.ts +0 -2
- package/dist/gym/gym-layout/index.d.ts.map +0 -1
- package/dist/gym/gym-layout/index.js +0 -2
- package/dist/gym/gym-layout/index.js.map +0 -1
- package/dist/gym/index.d.ts +0 -15
- package/dist/gym/index.d.ts.map +0 -1
- package/dist/gym/index.js +0 -15
- package/dist/gym/index.js.map +0 -1
- package/dist/gym/organisation/index.d.ts +0 -2
- package/dist/gym/organisation/index.d.ts.map +0 -1
- package/dist/gym/organisation/index.js +0 -2
- package/dist/gym/organisation/index.js.map +0 -1
- package/dist/gym/organisation/organisation.dto.d.ts +0 -2
- package/dist/gym/organisation/organisation.dto.d.ts.map +0 -1
- package/dist/gym/organisation/organisation.dto.js +0 -2
- package/dist/gym/organisation/organisation.dto.js.map +0 -1
- package/dist/gym/organisation/organisation.schema.d.ts +0 -28
- package/dist/gym/organisation/organisation.schema.d.ts.map +0 -1
- package/dist/gym/organisation/organisation.schema.js +0 -28
- package/dist/gym/organisation/organisation.schema.js.map +0 -1
- package/dist/gym/service-catalog/index.d.ts +0 -2
- package/dist/gym/service-catalog/index.d.ts.map +0 -1
- package/dist/gym/service-catalog/index.js +0 -2
- package/dist/gym/service-catalog/index.js.map +0 -1
- package/dist/gym/service-catalog/service-catalog.schema.d.ts +0 -11
- package/dist/gym/service-catalog/service-catalog.schema.d.ts.map +0 -1
- package/dist/gym/service-catalog/service-catalog.schema.js +0 -15
- package/dist/gym/service-catalog/service-catalog.schema.js.map +0 -1
- package/dist/gym/session-booking/index.d.ts +0 -2
- package/dist/gym/session-booking/index.d.ts.map +0 -1
- package/dist/gym/session-booking/index.js +0 -2
- package/dist/gym/session-booking/index.js.map +0 -1
- package/dist/gym/session-booking/session-booking.schema.d.ts +0 -29
- package/dist/gym/session-booking/session-booking.schema.d.ts.map +0 -1
- package/dist/gym/session-booking/session-booking.schema.js +0 -20
- package/dist/gym/session-booking/session-booking.schema.js.map +0 -1
- package/dist/internal/scaffolding.d.ts +0 -2
- package/dist/internal/scaffolding.d.ts.map +0 -1
- package/dist/internal/scaffolding.js +0 -2
- package/dist/internal/scaffolding.js.map +0 -1
- package/dist/landing/contact-request/contact-request.schema.d.ts +0 -13
- package/dist/landing/contact-request/contact-request.schema.d.ts.map +0 -1
- package/dist/landing/contact-request/contact-request.schema.js +0 -22
- package/dist/landing/contact-request/contact-request.schema.js.map +0 -1
- package/dist/landing/contact-request/index.d.ts +0 -2
- package/dist/landing/contact-request/index.d.ts.map +0 -1
- package/dist/landing/contact-request/index.js +0 -2
- package/dist/landing/contact-request/index.js.map +0 -1
- package/dist/landing/index.d.ts +0 -2
- package/dist/landing/index.d.ts.map +0 -1
- package/dist/landing/index.js +0 -2
- package/dist/landing/index.js.map +0 -1
- package/dist/marketing/advertisement/advertisement.schema.d.ts +0 -33
- package/dist/marketing/advertisement/advertisement.schema.d.ts.map +0 -1
- package/dist/marketing/advertisement/advertisement.schema.js +0 -37
- package/dist/marketing/advertisement/advertisement.schema.js.map +0 -1
- package/dist/marketing/advertisement/index.d.ts +0 -2
- package/dist/marketing/advertisement/index.d.ts.map +0 -1
- package/dist/marketing/advertisement/index.js +0 -2
- package/dist/marketing/advertisement/index.js.map +0 -1
- package/dist/marketing/brand/brand.schema.d.ts +0 -18
- package/dist/marketing/brand/brand.schema.d.ts.map +0 -1
- package/dist/marketing/brand/brand.schema.js +0 -26
- package/dist/marketing/brand/brand.schema.js.map +0 -1
- package/dist/marketing/brand/index.d.ts +0 -2
- package/dist/marketing/brand/index.d.ts.map +0 -1
- package/dist/marketing/brand/index.js +0 -2
- package/dist/marketing/brand/index.js.map +0 -1
- package/dist/marketing/index.d.ts +0 -5
- package/dist/marketing/index.d.ts.map +0 -1
- package/dist/marketing/index.js +0 -5
- package/dist/marketing/index.js.map +0 -1
- package/dist/marketing/marketing-campaign/index.d.ts +0 -2
- package/dist/marketing/marketing-campaign/index.d.ts.map +0 -1
- package/dist/marketing/marketing-campaign/index.js +0 -2
- package/dist/marketing/marketing-campaign/index.js.map +0 -1
- package/dist/marketing/marketing-campaign/marketing-campaign.schema.d.ts +0 -54
- package/dist/marketing/marketing-campaign/marketing-campaign.schema.d.ts.map +0 -1
- package/dist/marketing/marketing-campaign/marketing-campaign.schema.js +0 -41
- package/dist/marketing/marketing-campaign/marketing-campaign.schema.js.map +0 -1
- package/dist/marketing/referral/index.d.ts +0 -2
- package/dist/marketing/referral/index.d.ts.map +0 -1
- package/dist/marketing/referral/index.js +0 -2
- package/dist/marketing/referral/index.js.map +0 -1
- package/dist/marketing/referral/referral.schema.d.ts +0 -28
- package/dist/marketing/referral/referral.schema.d.ts.map +0 -1
- package/dist/marketing/referral/referral.schema.js +0 -25
- package/dist/marketing/referral/referral.schema.js.map +0 -1
- package/dist/notification/index.d.ts +0 -3
- package/dist/notification/index.d.ts.map +0 -1
- package/dist/notification/index.js +0 -3
- package/dist/notification/index.js.map +0 -1
- package/dist/notification/notification/index.d.ts +0 -2
- package/dist/notification/notification/index.d.ts.map +0 -1
- package/dist/notification/notification/index.js +0 -2
- package/dist/notification/notification/index.js.map +0 -1
- package/dist/notification/notification/notification.schema.d.ts +0 -59
- package/dist/notification/notification/notification.schema.d.ts.map +0 -1
- package/dist/notification/notification/notification.schema.js +0 -35
- package/dist/notification/notification/notification.schema.js.map +0 -1
- package/dist/notification/notification-template/index.d.ts +0 -2
- package/dist/notification/notification-template/index.d.ts.map +0 -1
- package/dist/notification/notification-template/index.js +0 -2
- package/dist/notification/notification-template/index.js.map +0 -1
- package/dist/notification/notification-template/notification-template.schema.d.ts +0 -43
- package/dist/notification/notification-template/notification-template.schema.d.ts.map +0 -1
- package/dist/notification/notification-template/notification-template.schema.js +0 -36
- package/dist/notification/notification-template/notification-template.schema.js.map +0 -1
- package/dist/nutrition/diet-plan/diet-plan.schema.d.ts +0 -95
- package/dist/nutrition/diet-plan/diet-plan.schema.d.ts.map +0 -1
- package/dist/nutrition/diet-plan/diet-plan.schema.js +0 -46
- package/dist/nutrition/diet-plan/diet-plan.schema.js.map +0 -1
- package/dist/nutrition/diet-plan/index.d.ts +0 -2
- package/dist/nutrition/diet-plan/index.d.ts.map +0 -1
- package/dist/nutrition/diet-plan/index.js +0 -2
- package/dist/nutrition/diet-plan/index.js.map +0 -1
- package/dist/nutrition/diet-tracking/diet-tracking.schema.d.ts +0 -24
- package/dist/nutrition/diet-tracking/diet-tracking.schema.d.ts.map +0 -1
- package/dist/nutrition/diet-tracking/diet-tracking.schema.js +0 -22
- package/dist/nutrition/diet-tracking/diet-tracking.schema.js.map +0 -1
- package/dist/nutrition/diet-tracking/index.d.ts +0 -2
- package/dist/nutrition/diet-tracking/index.d.ts.map +0 -1
- package/dist/nutrition/diet-tracking/index.js +0 -2
- package/dist/nutrition/diet-tracking/index.js.map +0 -1
- package/dist/nutrition/hydration-tracking/hydration-tracking.schema.d.ts +0 -27
- package/dist/nutrition/hydration-tracking/hydration-tracking.schema.d.ts.map +0 -1
- package/dist/nutrition/hydration-tracking/hydration-tracking.schema.js +0 -16
- package/dist/nutrition/hydration-tracking/hydration-tracking.schema.js.map +0 -1
- package/dist/nutrition/hydration-tracking/index.d.ts +0 -2
- package/dist/nutrition/hydration-tracking/index.d.ts.map +0 -1
- package/dist/nutrition/hydration-tracking/index.js +0 -2
- package/dist/nutrition/hydration-tracking/index.js.map +0 -1
- package/dist/nutrition/index.d.ts +0 -6
- package/dist/nutrition/index.d.ts.map +0 -1
- package/dist/nutrition/index.js +0 -6
- package/dist/nutrition/index.js.map +0 -1
- package/dist/nutrition/ingredient/index.d.ts +0 -2
- package/dist/nutrition/ingredient/index.d.ts.map +0 -1
- package/dist/nutrition/ingredient/index.js +0 -2
- package/dist/nutrition/ingredient/index.js.map +0 -1
- package/dist/nutrition/ingredient/ingredient.schema.d.ts +0 -38
- package/dist/nutrition/ingredient/ingredient.schema.d.ts.map +0 -1
- package/dist/nutrition/ingredient/ingredient.schema.js +0 -38
- package/dist/nutrition/ingredient/ingredient.schema.js.map +0 -1
- package/dist/nutrition/recipe/index.d.ts +0 -2
- package/dist/nutrition/recipe/index.d.ts.map +0 -1
- package/dist/nutrition/recipe/index.js +0 -2
- package/dist/nutrition/recipe/index.js.map +0 -1
- package/dist/nutrition/recipe/recipe.schema.d.ts +0 -46
- package/dist/nutrition/recipe/recipe.schema.d.ts.map +0 -1
- package/dist/nutrition/recipe/recipe.schema.js +0 -34
- package/dist/nutrition/recipe/recipe.schema.js.map +0 -1
- package/dist/subscription/coupon/coupon.schema.d.ts +0 -25
- package/dist/subscription/coupon/coupon.schema.d.ts.map +0 -1
- package/dist/subscription/coupon/coupon.schema.js +0 -20
- package/dist/subscription/coupon/coupon.schema.js.map +0 -1
- package/dist/subscription/coupon/index.d.ts +0 -2
- package/dist/subscription/coupon/index.d.ts.map +0 -1
- package/dist/subscription/coupon/index.js +0 -3
- package/dist/subscription/coupon/index.js.map +0 -1
- package/dist/subscription/index.d.ts +0 -7
- package/dist/subscription/index.d.ts.map +0 -1
- package/dist/subscription/index.js +0 -8
- package/dist/subscription/index.js.map +0 -1
- package/dist/subscription/membership/index.d.ts +0 -2
- package/dist/subscription/membership/index.d.ts.map +0 -1
- package/dist/subscription/membership/index.js +0 -2
- package/dist/subscription/membership/index.js.map +0 -1
- package/dist/subscription/membership/membership.schema.d.ts +0 -28
- package/dist/subscription/membership/membership.schema.d.ts.map +0 -1
- package/dist/subscription/membership/membership.schema.js +0 -18
- package/dist/subscription/membership/membership.schema.js.map +0 -1
- package/dist/subscription/membership-plan/index.d.ts +0 -2
- package/dist/subscription/membership-plan/index.d.ts.map +0 -1
- package/dist/subscription/membership-plan/index.js +0 -2
- package/dist/subscription/membership-plan/index.js.map +0 -1
- package/dist/subscription/membership-plan/membership-plan.schema.d.ts +0 -23
- package/dist/subscription/membership-plan/membership-plan.schema.d.ts.map +0 -1
- package/dist/subscription/membership-plan/membership-plan.schema.js +0 -19
- package/dist/subscription/membership-plan/membership-plan.schema.js.map +0 -1
- package/dist/subscription/payment-transaction/index.d.ts +0 -2
- package/dist/subscription/payment-transaction/index.d.ts.map +0 -1
- package/dist/subscription/payment-transaction/index.js +0 -2
- package/dist/subscription/payment-transaction/index.js.map +0 -1
- package/dist/subscription/payment-transaction/payment-transaction.schema.d.ts +0 -47
- package/dist/subscription/payment-transaction/payment-transaction.schema.d.ts.map +0 -1
- package/dist/subscription/payment-transaction/payment-transaction.schema.js +0 -24
- package/dist/subscription/payment-transaction/payment-transaction.schema.js.map +0 -1
- package/dist/subscription/subscription/index.d.ts +0 -2
- package/dist/subscription/subscription/index.d.ts.map +0 -1
- package/dist/subscription/subscription/index.js +0 -2
- package/dist/subscription/subscription/index.js.map +0 -1
- package/dist/subscription/subscription/subscription.schema.d.ts +0 -29
- package/dist/subscription/subscription/subscription.schema.d.ts.map +0 -1
- package/dist/subscription/subscription/subscription.schema.js +0 -21
- package/dist/subscription/subscription/subscription.schema.js.map +0 -1
- package/dist/subscription/subscription-plan/index.d.ts +0 -2
- package/dist/subscription/subscription-plan/index.d.ts.map +0 -1
- package/dist/subscription/subscription-plan/index.js +0 -3
- package/dist/subscription/subscription-plan/index.js.map +0 -1
- package/dist/subscription/subscription-plan/subscription-plan.schema.d.ts +0 -24
- package/dist/subscription/subscription-plan/subscription-plan.schema.d.ts.map +0 -1
- package/dist/subscription/subscription-plan/subscription-plan.schema.js +0 -18
- package/dist/subscription/subscription-plan/subscription-plan.schema.js.map +0 -1
- package/dist/support/index.d.ts +0 -2
- package/dist/support/index.d.ts.map +0 -1
- package/dist/support/index.js +0 -2
- package/dist/support/index.js.map +0 -1
- package/dist/support/support-ticket/index.d.ts +0 -2
- package/dist/support/support-ticket/index.d.ts.map +0 -1
- package/dist/support/support-ticket/index.js +0 -2
- package/dist/support/support-ticket/index.js.map +0 -1
- package/dist/support/support-ticket/support-ticket.schema.d.ts +0 -79
- package/dist/support/support-ticket/support-ticket.schema.d.ts.map +0 -1
- package/dist/support/support-ticket/support-ticket.schema.js +0 -73
- package/dist/support/support-ticket/support-ticket.schema.js.map +0 -1
- package/dist/workout/exercise/exercise.schema.d.ts +0 -36
- package/dist/workout/exercise/exercise.schema.d.ts.map +0 -1
- package/dist/workout/exercise/exercise.schema.js +0 -34
- package/dist/workout/exercise/exercise.schema.js.map +0 -1
- package/dist/workout/exercise/index.d.ts +0 -2
- package/dist/workout/exercise/index.d.ts.map +0 -1
- package/dist/workout/exercise/index.js +0 -2
- package/dist/workout/exercise/index.js.map +0 -1
- package/dist/workout/index.d.ts +0 -4
- package/dist/workout/index.d.ts.map +0 -1
- package/dist/workout/index.js +0 -4
- package/dist/workout/index.js.map +0 -1
- package/dist/workout/workout-plan/index.d.ts +0 -2
- package/dist/workout/workout-plan/index.d.ts.map +0 -1
- package/dist/workout/workout-plan/index.js +0 -2
- package/dist/workout/workout-plan/index.js.map +0 -1
- package/dist/workout/workout-plan/workout-plan.schema.d.ts +0 -28
- package/dist/workout/workout-plan/workout-plan.schema.d.ts.map +0 -1
- package/dist/workout/workout-plan/workout-plan.schema.js +0 -32
- package/dist/workout/workout-plan/workout-plan.schema.js.map +0 -1
- package/dist/workout/workout-tracking/index.d.ts +0 -2
- package/dist/workout/workout-tracking/index.d.ts.map +0 -1
- package/dist/workout/workout-tracking/index.js +0 -2
- package/dist/workout/workout-tracking/index.js.map +0 -1
- package/dist/workout/workout-tracking/workout-tracking.schema.d.ts +0 -26
- package/dist/workout/workout-tracking/workout-tracking.schema.d.ts.map +0 -1
- package/dist/workout/workout-tracking/workout-tracking.schema.js +0 -22
- package/dist/workout/workout-tracking/workout-tracking.schema.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,642 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# gymmonk-schema
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Shared **Zod** schemas, enums and domain types for **GymMonk** (fitness SaaS).
|
|
4
|
+
Single source of truth (SSOT) consumed by both `gymmonk-backend` and
|
|
5
|
+
`gymmonk-web-client`, so validation, wire types and enums never drift between
|
|
6
|
+
the API and the app.
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
[](https://github.com/yourorg/gymmonk-schema/blob/main/LICENSE)
|
|
8
|
+
## What's inside
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
- **Common** (`common.ts`) — reusable primitives: `objectIdSchema`,
|
|
11
|
+
`paginationSchema`, `optionalTrimmedString`, `emptyStringToUndefined`.
|
|
12
|
+
- Domain modules (workouts, training library, membership, check-in, …) are
|
|
13
|
+
added here as they land, each re-exported through `src/index.ts`.
|
|
9
14
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
- [Overview](#overview)
|
|
13
|
-
- [Installation](#installation)
|
|
14
|
-
- [Core Concepts](#core-concepts)
|
|
15
|
-
- [Schemas vs Types](#schemas-vs-types)
|
|
16
|
-
- [Naming Conventions](#naming-conventions)
|
|
17
|
-
- [Library Structure](#library-structure)
|
|
18
|
-
- [Common](#common)
|
|
19
|
-
- [Auth](#auth)
|
|
20
|
-
- [Gym](#gym)
|
|
21
|
-
- [Workout](#workout)
|
|
22
|
-
- [Nutrition](#nutrition)
|
|
23
|
-
- [Subscription](#subscription)
|
|
24
|
-
- [Marketing](#marketing)
|
|
25
|
-
- [Notification](#notification)
|
|
26
|
-
- [Community](#community)
|
|
27
|
-
- [Feedback](#feedback)
|
|
28
|
-
- [Support](#support)
|
|
29
|
-
- [Landing](#landing)
|
|
30
|
-
- [Audit](#audit)
|
|
31
|
-
- [How to Import](#how-to-import)
|
|
32
|
-
- [Usage Examples](#usage-examples)
|
|
33
|
-
- [Backend (Express)](#backend-express)
|
|
34
|
-
- [Frontend (Next.js)](#frontend-nextjs)
|
|
35
|
-
- [Forms (React Hook Form + Zod)](#forms-react-hook-form--zod)
|
|
36
|
-
- [API-doc / OpenAPI](#api-doc--openapi)
|
|
37
|
-
- [Development & Publishing](#development--publishing)
|
|
38
|
-
- [Versioning](#versioning)
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 🎯 Overview
|
|
43
|
-
|
|
44
|
-
This package is the **single source of truth** for:
|
|
45
|
-
|
|
46
|
-
- ✅ Domain models (`User`, `Organisation`, `Center`, `Membership`, `Workout`, etc.)
|
|
47
|
-
- ✅ API DTOs (create/update payloads)
|
|
48
|
-
- ✅ Public view models (safe objects to send to frontend)
|
|
49
|
-
- ✅ Shared primitives (`ObjectId`, dates, pagination, etc.)
|
|
50
|
-
|
|
51
|
-
### 🚀 Designed for Multi-Platform Use
|
|
52
|
-
|
|
53
|
-
It is designed to be used by:
|
|
54
|
-
|
|
55
|
-
- **Backend** (Node.js / Express)
|
|
56
|
-
- **Web frontend** (Next.js)
|
|
57
|
-
- **Mobile app** (React Native)
|
|
58
|
-
- **API-doc project** (OpenAPI/Swagger via zod-to-openapi)
|
|
59
|
-
|
|
60
|
-
So all layers share the same contracts.
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## 📦 Installation
|
|
65
|
-
|
|
66
|
-
In any consumer project (backend, web, app, api-doc):
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
npm install gymmonk-schema
|
|
70
|
-
# or
|
|
71
|
-
yarn add gymmonk-schema
|
|
72
|
-
# or
|
|
73
|
-
pnpm add gymmonk-schema
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 💡 Core Concepts
|
|
79
|
-
|
|
80
|
-
### Schemas vs Types
|
|
81
|
-
|
|
82
|
-
Each entity is represented by a **Zod schema** and a corresponding **TypeScript type**:
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
import { z } from "zod";
|
|
86
|
-
|
|
87
|
-
export const RoleSchema = z.object({
|
|
88
|
-
name: z.string().min(1),
|
|
89
|
-
description: z.string().trim().optional(),
|
|
90
|
-
permissions: z.array(z.string()).default([]),
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
export type Role = z.infer<typeof RoleSchema>;
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
#### Two Different Layers
|
|
97
|
-
|
|
98
|
-
| Layer | Description |
|
|
99
|
-
| ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
100
|
-
| **Schema** (`RoleSchema`) | • Real runtime object<br>• Validates and parses data<br>• Used in controllers, services, forms, API-doc generation |
|
|
101
|
-
| **Type** (`Role`) | • Compile-time only (erased at runtime)<br>• Used by TypeScript for static checking and autocomplete |
|
|
102
|
-
|
|
103
|
-
You will see this pattern throughout the library.
|
|
104
|
-
|
|
105
|
-
### Naming Conventions
|
|
106
|
-
|
|
107
|
-
Inside each domain:
|
|
108
|
-
|
|
109
|
-
- **Schemas** are named: `XxxSchema`
|
|
110
|
-
- **Types** are named: `Xxx` (via `z.infer<typeof XxxSchema>`)
|
|
111
|
-
- **DTOs** (request/response payloads) are named: `XxxCreateDtoSchema`, `XxxUpdateDtoSchema`, etc.
|
|
112
|
-
- **Public view models** (safe to send to frontend): `PublicXxxSchema`, `type PublicXxx`
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## 🏗️ Library Structure
|
|
117
|
-
|
|
118
|
-
At the top level, the package exposes namespaced domains:
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
import {
|
|
122
|
-
Common,
|
|
123
|
-
Auth,
|
|
124
|
-
Gym,
|
|
125
|
-
Workout,
|
|
126
|
-
Nutrition,
|
|
127
|
-
Subscription,
|
|
128
|
-
Marketing,
|
|
129
|
-
Notification,
|
|
130
|
-
Community,
|
|
131
|
-
Feedback,
|
|
132
|
-
Support,
|
|
133
|
-
Landing,
|
|
134
|
-
Audit,
|
|
135
|
-
} from "gymmonk-schema";
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Each domain has its own folder + barrel file and follows the same structure: schemas + types grouped by feature.
|
|
139
|
-
|
|
140
|
-
Below is an overview of what each domain represents.
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
### 🔧 Common
|
|
145
|
-
|
|
146
|
-
Building blocks used everywhere.
|
|
147
|
-
|
|
148
|
-
#### Includes:
|
|
149
|
-
|
|
150
|
-
**Primitives**
|
|
151
|
-
|
|
152
|
-
- `ObjectIdSchema`
|
|
153
|
-
- `IsoDateStringSchema`
|
|
154
|
-
- `IsoDateTimeStringSchema`
|
|
155
|
-
- `NonEmptyStringSchema`, `OptionalStringSchema`, etc.
|
|
156
|
-
|
|
157
|
-
**Value Objects**
|
|
158
|
-
|
|
159
|
-
- `EmailSchema`
|
|
160
|
-
- `PhoneSchema`
|
|
161
|
-
- `AddressSchema`
|
|
162
|
-
- `NutritionalValuesSchema`
|
|
163
|
-
- `PlanVariantSchema` (for flexible pricing options)
|
|
164
|
-
- `MfaSchema`, `SocialLoginSchema`, etc.
|
|
165
|
-
|
|
166
|
-
**Enums**
|
|
167
|
-
|
|
168
|
-
- Gender enum
|
|
169
|
-
- EntityStatus enum
|
|
170
|
-
- NotificationType enum
|
|
171
|
-
|
|
172
|
-
**Pagination**
|
|
173
|
-
|
|
174
|
-
- `PaginationSchema` (common page, limit, etc.)
|
|
175
|
-
|
|
176
|
-
#### Usage Example
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
const id = Common.Primitives.ObjectIdSchema.parse(someString);
|
|
180
|
-
const pagination = Common.Pagination.PaginationSchema.parse(req.query);
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
> ℹ️ _Exact nested names may vary slightly; check `src/common/index.ts` for the authoritative exports._
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
### 🔐 Auth
|
|
188
|
-
|
|
189
|
-
Authentication & authorization related models.
|
|
190
|
-
|
|
191
|
-
#### Includes (names representative):
|
|
192
|
-
|
|
193
|
-
- `UserSchema`, `PublicUserSchema`, `UserRegisterDtoSchema` etc.
|
|
194
|
-
- `RoleSchema` (RBAC roles)
|
|
195
|
-
- `PermissionSchema` (fine-grained permissions)
|
|
196
|
-
- `ResourceSchema` (RBAC resources)
|
|
197
|
-
- `TokenSchema` (access/refresh tokens, device tokens)
|
|
198
|
-
- `OtpSchema` (one-time passwords)
|
|
199
|
-
- `DeviceSchema`
|
|
200
|
-
- `PasswordHistorySchema`
|
|
201
|
-
- `UserActivitySchema` (login, logout, etc.)
|
|
202
|
-
|
|
203
|
-
#### Common Usage:
|
|
204
|
-
|
|
205
|
-
- **Backend**: validate incoming auth requests (register, login, password reset)
|
|
206
|
-
- **Frontend**: type-safe forms for login/register, and PublicUser types for UI
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
### 🏢 Gym
|
|
211
|
-
|
|
212
|
-
All gym/organisation/center management models.
|
|
213
|
-
|
|
214
|
-
#### Includes:
|
|
215
|
-
|
|
216
|
-
**Organisation / Centers**
|
|
217
|
-
|
|
218
|
-
- `OrganisationSchema`
|
|
219
|
-
- `CenterSchema`
|
|
220
|
-
- `CenterFacilitySchema`
|
|
221
|
-
- `CenterServiceSchema`
|
|
222
|
-
|
|
223
|
-
**Catalogs**
|
|
224
|
-
|
|
225
|
-
- `EquipmentCatalogSchema`
|
|
226
|
-
- `FacilityCatalogSchema`
|
|
227
|
-
- `ServiceCatalogSchema`
|
|
228
|
-
|
|
229
|
-
**Operational Models**
|
|
230
|
-
|
|
231
|
-
- `AttendanceSchema`
|
|
232
|
-
- `ClassScheduleSchema`
|
|
233
|
-
- `EquipmentInventorySchema`
|
|
234
|
-
- `GymLayoutSchema`
|
|
235
|
-
- `SessionBookingSchema`
|
|
236
|
-
- `GoalSchema`
|
|
237
|
-
- `AchievementBadgeSchema`
|
|
238
|
-
|
|
239
|
-
#### Used to Define and Validate:
|
|
240
|
-
|
|
241
|
-
- How the gym, centers, facilities, services are modeled
|
|
242
|
-
- Attendance tracking
|
|
243
|
-
- Booking / layout / goals / badges
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
### 💪 Workout
|
|
248
|
-
|
|
249
|
-
Exercise and workout planning & tracking.
|
|
250
|
-
|
|
251
|
-
#### Includes:
|
|
252
|
-
|
|
253
|
-
- `ExerciseSchema` (name, muscle groups, media, equipment)
|
|
254
|
-
- `WorkoutPlanSchema` (list of exercises with sets/reps/duration)
|
|
255
|
-
- `WorkoutTrackingEntrySchema` (what a member actually did, per set, per day)
|
|
256
|
-
|
|
257
|
-
#### Used By:
|
|
258
|
-
|
|
259
|
-
- **Backend**: workout CRUD, tracking endpoints
|
|
260
|
-
- **Frontend/App**: typed workout UI, tracking screens
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
### 🥗 Nutrition
|
|
265
|
-
|
|
266
|
-
Ingredient, recipes, diet plans, hydration.
|
|
267
|
-
|
|
268
|
-
#### Includes:
|
|
269
|
-
|
|
270
|
-
- `IngredientSchema`
|
|
271
|
-
- `RecipeSchema`, `RecipeIngredientSchema`
|
|
272
|
-
- `DietPlanSchema`, `DietPlanMealSchema`, `DietPlanItemSchema`
|
|
273
|
-
- `DietTrackingEntrySchema`
|
|
274
|
-
- `HydrationTrackingSchema`
|
|
275
|
-
|
|
276
|
-
#### Use This For:
|
|
277
|
-
|
|
278
|
-
- Building diet plans and logging diets
|
|
279
|
-
- Aggregating nutrition
|
|
280
|
-
- Hydration tracking
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
### 💳 Subscription
|
|
285
|
-
|
|
286
|
-
Subscription, membership, coupons, payments.
|
|
287
|
-
|
|
288
|
-
#### Includes:
|
|
289
|
-
|
|
290
|
-
- `SubscriptionPlanSchema`
|
|
291
|
-
- `SubscriptionSchema`
|
|
292
|
-
- `MembershipPlanSchema`
|
|
293
|
-
- `MembershipSchema`
|
|
294
|
-
- `CouponSchema`
|
|
295
|
-
- `PaymentTransactionSchema`
|
|
296
|
-
|
|
297
|
-
#### Used For:
|
|
298
|
-
|
|
299
|
-
- Defining product plans and membership plans
|
|
300
|
-
- Linking members to plans (Membership, Subscription)
|
|
301
|
-
- Applying coupons and tracking payments
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
### 📢 Marketing
|
|
306
|
-
|
|
307
|
-
Branding, ads, campaigns, referrals.
|
|
308
|
-
|
|
309
|
-
#### Includes:
|
|
310
|
-
|
|
311
|
-
- `BrandSchema`
|
|
312
|
-
- `AdvertisementSchema`
|
|
313
|
-
- `MarketingCampaignSchema`
|
|
314
|
-
- `ReferralSchema`
|
|
315
|
-
|
|
316
|
-
#### Used For:
|
|
317
|
-
|
|
318
|
-
- Dashboard banners, campaigns, referral systems
|
|
319
|
-
- Representing marketing data in a unified way
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
### 🔔 Notification
|
|
324
|
-
|
|
325
|
-
Notifications and templates.
|
|
326
|
-
|
|
327
|
-
#### Includes:
|
|
328
|
-
|
|
329
|
-
- `NotificationSchema` (delivered notification entries)
|
|
330
|
-
- `NotificationTemplateSchema` (reusable templates per channel)
|
|
331
|
-
|
|
332
|
-
**Supports channels like**: `in_app`, `push`, `email`, `sms`.
|
|
333
|
-
|
|
334
|
-
---
|
|
335
|
-
|
|
336
|
-
### 👥 Community
|
|
337
|
-
|
|
338
|
-
Internal community / communication layer.
|
|
339
|
-
|
|
340
|
-
#### Includes:
|
|
341
|
-
|
|
342
|
-
- `ConversationSchema`
|
|
343
|
-
- `MessageSchema`
|
|
344
|
-
- `PostSchema`
|
|
345
|
-
|
|
346
|
-
#### Used For:
|
|
347
|
-
|
|
348
|
-
- Chats
|
|
349
|
-
- Group conversations
|
|
350
|
-
- Community posts
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
### 💬 Feedback
|
|
355
|
-
|
|
356
|
-
User feedback, bug reports, ratings.
|
|
357
|
-
|
|
358
|
-
#### Includes:
|
|
359
|
-
|
|
360
|
-
- `FeedbackSchema` (type, message, metadata, rating)
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
### 🎫 Support
|
|
365
|
-
|
|
366
|
-
Support tickets.
|
|
367
|
-
|
|
368
|
-
#### Includes:
|
|
369
|
-
|
|
370
|
-
- `SupportTicketSchema` (priority, status, category, assignments, metadata)
|
|
371
|
-
|
|
372
|
-
---
|
|
373
|
-
|
|
374
|
-
### 🌐 Landing
|
|
375
|
-
|
|
376
|
-
Contact requests from marketing/landing pages.
|
|
377
|
-
|
|
378
|
-
#### Includes:
|
|
379
|
-
|
|
380
|
-
- `ContactRequestSchema` (name, email/phone, subject, message, metadata)
|
|
381
|
-
|
|
382
|
-
---
|
|
383
|
-
|
|
384
|
-
### 📝 Audit
|
|
385
|
-
|
|
386
|
-
Audit logs.
|
|
387
|
-
|
|
388
|
-
#### Includes:
|
|
389
|
-
|
|
390
|
-
- `AuditLogSchema` (who, what, when, before/after, metadata)
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
## 📥 How to Import
|
|
395
|
-
|
|
396
|
-
### Top-Level Domains (Recommended)
|
|
397
|
-
|
|
398
|
-
Prefer importing from the root in most cases:
|
|
399
|
-
|
|
400
|
-
```typescript
|
|
401
|
-
import {
|
|
402
|
-
Auth,
|
|
403
|
-
Gym,
|
|
404
|
-
Subscription,
|
|
405
|
-
Workout,
|
|
406
|
-
Nutrition,
|
|
407
|
-
Common,
|
|
408
|
-
} from "gymmonk-schema";
|
|
409
|
-
|
|
410
|
-
// Auth
|
|
411
|
-
const dto = Auth.UserRegisterDtoSchema.parse(body);
|
|
412
|
-
|
|
413
|
-
// Gym
|
|
414
|
-
const center = Gym.CenterSchema.parse(payload);
|
|
415
|
-
|
|
416
|
-
// Subscription
|
|
417
|
-
type Plan = Subscription.SubscriptionPlan;
|
|
418
|
-
const planSchema = Subscription.SubscriptionPlanSchema;
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
> 💡 If you want very fine-grained imports, you can also import directly from subpaths as long as your build/exports are configured for it (check your `package.json` "exports" if you add that later).
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
|
-
## 🎨 Usage Examples
|
|
426
|
-
|
|
427
|
-
### Backend (Express)
|
|
428
|
-
|
|
429
|
-
#### Validate Request Body (DTO)
|
|
430
|
-
|
|
431
|
-
```typescript
|
|
432
|
-
import { Auth } from "gymmonk-schema";
|
|
433
|
-
import type { Request, Response } from "express";
|
|
434
|
-
|
|
435
|
-
export async function registerHandler(req: Request, res: Response) {
|
|
436
|
-
try {
|
|
437
|
-
const dto = Auth.UserRegisterDtoSchema.parse(req.body);
|
|
438
|
-
|
|
439
|
-
// dto is fully validated and typed
|
|
440
|
-
const user = await createUser(dto);
|
|
441
|
-
|
|
442
|
-
const publicUser = Auth.PublicUserSchema.parse(user);
|
|
443
|
-
return res.status(201).json(publicUser);
|
|
444
|
-
} catch (err: any) {
|
|
445
|
-
return res.status(400).json({
|
|
446
|
-
message: "Invalid request",
|
|
447
|
-
errors: err.errors ?? err,
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
```
|
|
452
|
-
|
|
453
|
-
#### Validate Query Params
|
|
454
|
-
|
|
455
|
-
```typescript
|
|
456
|
-
import { Common } from "gymmonk-schema";
|
|
457
|
-
|
|
458
|
-
app.get("/centers", (req, res) => {
|
|
459
|
-
const pagination = Common.Pagination.PaginationSchema.parse(req.query);
|
|
460
|
-
// use pagination.page / pagination.limit
|
|
461
|
-
});
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
---
|
|
465
|
-
|
|
466
|
-
### Frontend (Next.js)
|
|
467
|
-
|
|
468
|
-
#### Validate Data Before Sending to Backend
|
|
469
|
-
|
|
470
|
-
```typescript
|
|
471
|
-
"use client";
|
|
472
|
-
|
|
473
|
-
import { Auth } from "gymmonk-schema";
|
|
474
|
-
|
|
475
|
-
async function submit(formData: any) {
|
|
476
|
-
const dto = Auth.UserRegisterDtoSchema.parse(formData);
|
|
477
|
-
|
|
478
|
-
const res = await fetch("/api/auth/register", {
|
|
479
|
-
method: "POST",
|
|
480
|
-
body: JSON.stringify(dto),
|
|
481
|
-
headers: { "Content-Type": "application/json" },
|
|
482
|
-
});
|
|
483
|
-
|
|
484
|
-
return res.json();
|
|
485
|
-
}
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
#### Strongly Typed UI Components
|
|
489
|
-
|
|
490
|
-
```typescript
|
|
491
|
-
import { Gym } from "gymmonk-schema";
|
|
492
|
-
|
|
493
|
-
type Center = Gym.Center;
|
|
494
|
-
|
|
495
|
-
function CenterCard({ center }: { center: Center }) {
|
|
496
|
-
return (
|
|
497
|
-
<div>
|
|
498
|
-
<h2>{center.name}</h2>
|
|
499
|
-
<p>{center.address?.city}</p>
|
|
500
|
-
</div>
|
|
501
|
-
);
|
|
502
|
-
}
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
---
|
|
506
|
-
|
|
507
|
-
### Forms (React Hook Form + Zod)
|
|
508
|
-
|
|
509
|
-
```typescript
|
|
510
|
-
import { useForm } from "react-hook-form";
|
|
511
|
-
import { zodResolver } from "@hookform/resolvers/zod";
|
|
512
|
-
import { Subscription } from "gymmonk-schema";
|
|
513
|
-
|
|
514
|
-
const schema = Subscription.SubscriptionPlanSchema;
|
|
515
|
-
type PlanForm = Subscription.SubscriptionPlan;
|
|
516
|
-
|
|
517
|
-
export function PlanFormComponent() {
|
|
518
|
-
const form = useForm<PlanForm>({
|
|
519
|
-
resolver: zodResolver(schema),
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
// form.register, form.handleSubmit, etc.
|
|
523
|
-
}
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
---
|
|
527
|
-
|
|
528
|
-
### API-doc / OpenAPI
|
|
529
|
-
|
|
530
|
-
In your API-doc project (contract-first design), you can introspect schemas and generate OpenAPI:
|
|
531
|
-
|
|
532
|
-
```typescript
|
|
533
|
-
import {
|
|
534
|
-
OpenAPIRegistry,
|
|
535
|
-
generateOpenApiDocument,
|
|
536
|
-
} from "@asteasolutions/zod-to-openapi";
|
|
537
|
-
import { Auth, Gym } from "gymmonk-schema";
|
|
538
|
-
|
|
539
|
-
const registry = new OpenAPIRegistry();
|
|
540
|
-
|
|
541
|
-
// Register schemas
|
|
542
|
-
registry.register("User", Auth.PublicUserSchema);
|
|
543
|
-
registry.register("Center", Gym.CenterSchema);
|
|
544
|
-
|
|
545
|
-
// Register routes and use the schemas in request/response definitions…
|
|
546
|
-
|
|
547
|
-
const openapi = generateOpenApiDocument(registry.definitions, {
|
|
548
|
-
openapi: "3.0.0",
|
|
549
|
-
info: {
|
|
550
|
-
title: "GymMonk API",
|
|
551
|
-
version: "1.0.0",
|
|
552
|
-
},
|
|
553
|
-
});
|
|
554
|
-
|
|
555
|
-
// Then write openapi.json and serve via swagger-ui-express
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
This way API docs are always in sync with your code and frontend types.
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
## 🛠️ Development & Publishing
|
|
563
|
-
|
|
564
|
-
In the `gymmonk-schema` repo:
|
|
565
|
-
|
|
566
|
-
### Build
|
|
15
|
+
## Build & publish (npm-first)
|
|
567
16
|
|
|
568
17
|
```bash
|
|
569
|
-
npm
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
**Typical script:**
|
|
573
|
-
|
|
574
|
-
```json
|
|
575
|
-
"build": "tsc"
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
This compiles `src/**/*.ts` → `dist/**/*.js` + `.d.ts`.
|
|
579
|
-
|
|
580
|
-
### Lint + Format
|
|
581
|
-
|
|
582
|
-
Using Biome:
|
|
583
|
-
|
|
584
|
-
```bash
|
|
585
|
-
npm run check # type-check + lint + format (depending on your script)
|
|
586
|
-
npm run lint # if you have a separate lint script
|
|
587
|
-
npm run format # if you have a separate format script
|
|
588
|
-
```
|
|
589
|
-
|
|
590
|
-
### Version Bump
|
|
591
|
-
|
|
592
|
-
Use semantic versioning:
|
|
593
|
-
|
|
594
|
-
```bash
|
|
595
|
-
npm version patch # 0.1.0 -> 0.1.1
|
|
596
|
-
npm version minor # 0.1.0 -> 0.2.0
|
|
597
|
-
npm version major # 0.1.0 -> 1.0.0
|
|
18
|
+
npm install
|
|
19
|
+
npm run build # tsc -> dist/
|
|
20
|
+
npm publish --access public
|
|
598
21
|
```
|
|
599
22
|
|
|
600
|
-
|
|
23
|
+
`prepublishOnly` runs `build` + `check` (type-check + biome) as the publish gate.
|
|
24
|
+
`--access public` is a CLI flag, not a manifest field.
|
|
601
25
|
|
|
602
|
-
|
|
26
|
+
## Consume
|
|
603
27
|
|
|
604
|
-
|
|
605
|
-
npm login
|
|
606
|
-
npm run build
|
|
607
|
-
npm publish --access public
|
|
608
|
-
```
|
|
609
|
-
|
|
610
|
-
Then consumers can install:
|
|
28
|
+
In `gymmonk-backend` and `gymmonk-web-client`:
|
|
611
29
|
|
|
612
30
|
```bash
|
|
613
|
-
npm install gymmonk-schema
|
|
31
|
+
npm install gymmonk-schema@<version>
|
|
32
|
+
# then delete any nested Zod dup so a single Zod instance is used:
|
|
33
|
+
rm -rf node_modules/gymmonk-schema/node_modules
|
|
614
34
|
```
|
|
615
35
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
## 📌 Versioning
|
|
619
|
-
|
|
620
|
-
Follow standard **SemVer**:
|
|
621
|
-
|
|
622
|
-
| Version Type | Pattern | Description |
|
|
623
|
-
| ------------ | ------- | ---------------------------------------------------------------- |
|
|
624
|
-
| **PATCH** | `x.y.Z` | Internal fixes, no breaking changes |
|
|
625
|
-
| **MINOR** | `x.Y.z` | New schemas/fields added in a backwards-compatible way |
|
|
626
|
-
| **MAJOR** | `X.y.z` | Breaking changes (removed fields, renamed, incompatible changes) |
|
|
627
|
-
|
|
628
|
-
### Guidelines:
|
|
629
|
-
|
|
630
|
-
- ✅ **Adding optional fields**: minor
|
|
631
|
-
- ⚠️ **Making a field required or changing its type**: major
|
|
632
|
-
- ⚠️ **Removing schemas or renaming them**: major
|
|
633
|
-
|
|
634
|
-
> 📝 Keep a simple `CHANGELOG.md` to track what changed between versions, especially when schemas or DTOs change in ways that affect consumers.
|
|
635
|
-
|
|
636
|
-
---
|
|
637
|
-
|
|
638
|
-
<div align="center">
|
|
36
|
+
Bump the caret pin in each consumer's `package.json` on every publish (a `0.x`
|
|
37
|
+
caret locks to the same minor, so `npm install` won't auto-pick a new minor).
|
|
639
38
|
|
|
640
|
-
|
|
39
|
+
## Convention
|
|
641
40
|
|
|
642
|
-
|
|
41
|
+
Mirrors the jansathi schema family (`dating-schema`, `near-me-schema`) exactly:
|
|
42
|
+
pure ESM, `tsc`-only build, Zod is a **peer** dependency (`^4.4.0`), NodeNext
|
|
43
|
+
`.js` import specifiers, const-object enums fed to `z.enum(...)`.
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gymmonk-schema — Shared helpers and primitives
|
|
3
|
+
* ==============================================
|
|
4
|
+
* The stable building blocks reused across every GymMonk domain schema.
|
|
5
|
+
* Mirrors the `dating-schema` / `near-me-schema` idiom: pure Zod, const-object
|
|
6
|
+
* enums fed to `z.enum(...)`, NodeNext `.js` import specifiers.
|
|
7
|
+
*
|
|
8
|
+
* @module gymmonk-schema/common
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
/**
|
|
12
|
+
* Converts empty / whitespace-only strings to `undefined`
|
|
13
|
+
* so Zod `.optional()` treats them as "not provided".
|
|
14
|
+
*/
|
|
15
|
+
export declare const emptyStringToUndefined: (value: unknown) => unknown;
|
|
16
|
+
/** Optional trimmed string. Empty strings are coerced to `undefined`. */
|
|
17
|
+
export declare const optionalTrimmedString: (maxLength?: number) => z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
|
|
18
|
+
/** A 24-character hex MongoDB ObjectId string. */
|
|
19
|
+
export declare const objectIdSchema: z.ZodString;
|
|
20
|
+
export type ObjectIdString = z.infer<typeof objectIdSchema>;
|
|
21
|
+
/** Pagination query params shared across list endpoints. */
|
|
22
|
+
export declare const paginationSchema: z.ZodObject<{
|
|
23
|
+
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
24
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export type Pagination = z.infer<typeof paginationSchema>;
|
|
27
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,OAGvD,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,GAAI,kBAAe,gDAC8B,CAAC;AAIpF,kDAAkD;AAClD,eAAO,MAAM,cAAc,aAGgB,CAAC;AAC5C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAI5D,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|