dating-schema 0.44.0 → 0.45.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.
Files changed (39) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/plan-features-data.d.ts.map +1 -1
  6. package/dist/plan-features-data.js.map +1 -1
  7. package/dist/responses/common.d.ts +36 -0
  8. package/dist/responses/common.d.ts.map +1 -0
  9. package/dist/responses/common.js +5 -0
  10. package/dist/responses/common.js.map +1 -0
  11. package/dist/responses/discover.d.ts +97 -0
  12. package/dist/responses/discover.d.ts.map +1 -0
  13. package/dist/responses/discover.js +5 -0
  14. package/dist/responses/discover.js.map +1 -0
  15. package/dist/responses/index.d.ts +15 -0
  16. package/dist/responses/index.d.ts.map +1 -0
  17. package/dist/responses/index.js +15 -0
  18. package/dist/responses/index.js.map +1 -0
  19. package/dist/responses/interactions.d.ts +74 -0
  20. package/dist/responses/interactions.d.ts.map +1 -0
  21. package/dist/responses/interactions.js +5 -0
  22. package/dist/responses/interactions.js.map +1 -0
  23. package/dist/responses/matches.d.ts +40 -0
  24. package/dist/responses/matches.d.ts.map +1 -0
  25. package/dist/responses/matches.js +5 -0
  26. package/dist/responses/matches.js.map +1 -0
  27. package/dist/responses/monetization.d.ts +71 -0
  28. package/dist/responses/monetization.d.ts.map +1 -0
  29. package/dist/responses/monetization.js +6 -0
  30. package/dist/responses/monetization.js.map +1 -0
  31. package/dist/responses/profile.d.ts +67 -0
  32. package/dist/responses/profile.d.ts.map +1 -0
  33. package/dist/responses/profile.js +5 -0
  34. package/dist/responses/profile.js.map +1 -0
  35. package/dist/responses/safety.d.ts +17 -0
  36. package/dist/responses/safety.d.ts.map +1 -0
  37. package/dist/responses/safety.js +6 -0
  38. package/dist/responses/safety.js.map +1 -0
  39. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @module dating-schema
8
8
  */
9
+ export * from './responses/index.js';
9
10
  export { BADGE_DISPLAY, type BadgeDisplayInfo, type BadgeKey, badgeKeySchema, type UpdateBadgesBody, updateBadgesBodySchema, } from './badges.js';
10
11
  export { type AgeRange, ageRangeSchema, emptyStringToUndefined, type Gender, genderSchema, type InterestedIn, interestedInSchema, type LookingFor, lookingForSchema, type MaritalStatus, type MatchStatus, type MessageType, maritalStatusSchema, matchStatusSchema, messageTypeSchema, optionalTrimmedString, type Pagination, type Photo, paginationSchema, photoSchema, type SwipeAction, swipeActionSchema, } from './common.js';
11
12
  export { getFieldMeta, getFieldOptions } from './field-helpers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@
6
6
  *
7
7
  * @module dating-schema
8
8
  */
9
+ // ─── API Response types (entities, results, params) ─────────────────────────
10
+ export * from './responses/index.js';
9
11
  // ─── Badge schemas ──────────────────────────────────────────────────────────
10
12
  export { BADGE_DISPLAY, badgeKeySchema, updateBadgesBodySchema, } from './badges.js';
11
13
  // ─── Common helpers and enums ────────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,OAAO,EACL,aAAa,EAGb,cAAc,EAEd,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO;AAEL,cAAc;AACd,cAAc,EACd,sBAAsB;AAEtB,QAAQ;AACR,YAAY,EAEZ,kBAAkB,EAElB,gBAAgB,EAIhB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EAGrB,gBAAgB,EAChB,WAAW,EAEX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,gFAAgF;AAChF,OAAO,EAEL,eAAe,EAEf,oBAAoB,EAIpB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EAErB,gBAAgB,EAGhB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,GAG3B,MAAM,wBAAwB,CAAC;AAChC,gFAAgF;AAChF,OAAO,EAOL,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EAEV,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,WAAW,EAIX,0BAA0B,EAC1B,aAAa,EACb,sBAAsB,EAEtB,SAAS,GAEV,MAAM,kBAAkB,CAAC;AAC1B,gFAAgF;AAChF,OAAO,EAEL,mBAAmB,EAEnB,iBAAiB,EACjB,oBAAoB,EAEpB,oBAAoB,EAEpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,gFAAgF;AAChF,OAAO,EACL,cAAc,EACd,MAAM,EACN,MAAM,EACN,SAAS,EAGT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAU,EAIV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EAEjB,cAAc,EACd,YAAY,EACZ,MAAM,GACP,MAAM,2BAA2B,CAAC;AAEnC,gFAAgF;AAChF,OAAO,EAEL,eAAe,EAIf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EAEL,4BAA4B,EAE5B,wBAAwB,EAExB,YAAY,GACb,MAAM,mBAAmB,CAAC","sourcesContent":["/**\n * dating-schema — Shared Zod schemas for the Dating feature\n *\n * Single source of truth consumed by both jansathi-frontend and reform-backend.\n * Guarantees identical validation logic and TypeScript types on both sides.\n *\n * @module dating-schema\n */\n\n// ─── Badge schemas ──────────────────────────────────────────────────────────\nexport {\n BADGE_DISPLAY,\n type BadgeDisplayInfo,\n type BadgeKey,\n badgeKeySchema,\n type UpdateBadgesBody,\n updateBadgesBodySchema,\n} from './badges.js';\n\n// ─── Common helpers and enums ────────────────────────────────────────────────\nexport {\n type AgeRange,\n // sub-schemas\n ageRangeSchema,\n emptyStringToUndefined,\n type Gender,\n // enums\n genderSchema,\n type InterestedIn,\n interestedInSchema,\n type LookingFor,\n lookingForSchema,\n type MaritalStatus,\n type MatchStatus,\n type MessageType,\n maritalStatusSchema,\n matchStatusSchema,\n messageTypeSchema,\n optionalTrimmedString,\n type Pagination,\n type Photo,\n paginationSchema,\n photoSchema,\n type SwipeAction,\n swipeActionSchema,\n} from './common.js';\nexport { getFieldMeta, getFieldOptions } from './field-helpers.js';\n// ─── Interaction schemas ─────────────────────────────────────────────────────\nexport {\n type BoostBody,\n boostBodySchema,\n type ComplimentBody,\n complimentBodySchema,\n type ImageLikeBody,\n type InteractionListQuery,\n type InteractionType,\n imageLikeBodySchema,\n interactionListQuerySchema,\n interactionTypeSchema,\n type RewindBody,\n rewindBodySchema,\n type SwipeBody,\n type SwipeResponse,\n swipeBodySchema,\n swipeResponseSchema,\n} from './interactions.js';\nexport {\n getOnboardingFieldConfig,\n ONBOARDING_FIELDS,\n ONBOARDING_STEP_GROUPS,\n ONBOARDING_TOTAL_MAIN_STEPS,\n ONBOARDING_TOTAL_SUB_STEPS,\n type OnboardingFieldConfig,\n type OnboardingStepGroup,\n} from './onboarding-config.js';\n// ─── Plan limits ─────────────────────────────────────────────────────────────\nexport {\n type BooleanFeatureKey,\n type EnumFeatureKey,\n type ExploreAccessLevel,\n type FeatureDisplayItem,\n type FeatureKey,\n type FilterLevel,\n getMinPlanForFeature,\n getPlanFeatureDisplay,\n getPlanLimit,\n getPlanLimits,\n hasRemainingQuota,\n isFeatureEnabled,\n isPaidPlan,\n type NumericFeatureKey,\n PAID_PLANS,\n PLAN_FEATURE_DISPLAY,\n PLAN_IDS,\n PLAN_LIMITS,\n type PlanDisplayValue,\n type PlanId,\n type PlanLimits,\n PREMIUM_EXPLORE_CATEGORIES,\n PREMIUM_PLANS,\n renderPlanDisplayValue,\n type ScoreBreakdownLevel,\n TOP_PLANS,\n type WhoLikedYouLevel,\n} from './plan-limits.js';\n// ─── Profile schemas ─────────────────────────────────────────────────────────\nexport {\n type CreateProfileInput,\n createProfileSchema,\n type FullProfileData,\n fullProfileSchema,\n getCognitiveBandRank,\n type OnboardingFormData,\n onboardingFormSchema,\n type UpdateProfileInput,\n updateProfileSchema,\n} from './profile.js';\n// ─── Profile field configs (option arrays with labels for UI rendering) ──────\nexport {\n allFieldGroups,\n basics,\n career,\n cognitive,\n type FieldGroup,\n type FieldOption,\n familyHome,\n favourites,\n financeLegal,\n healthWellness,\n heroIdentity,\n interestCategories,\n interests,\n lifestyle,\n lookingFor,\n type MultiSelectField,\n type OptionCategory,\n type ProfileField,\n personality,\n relationshipIntimacy,\n religionCommunity,\n type SelectField,\n selfAssessment,\n storyPrompts,\n values,\n} from './profile-fields/index.js';\n\n// ─── Safety schemas ──────────────────────────────────────────────────────────\nexport {\n type BlockBody,\n blockBodySchema,\n type ReportBody,\n type ReportReason,\n type ReportStatus,\n reportBodySchema,\n reportReasonSchema,\n reportStatusSchema,\n} from './safety.js';\n\n// ─── Subscription schemas ────────────────────────────────────────────────────\nexport {\n type CreateSubscriptionBody,\n createSubscriptionBodySchema,\n type SubscriptionStatus,\n subscriptionStatusSchema,\n type Tenure,\n tenureSchema,\n} from './subscription.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,cAAc,sBAAsB,CAAC;AAErC,+EAA+E;AAC/E,OAAO,EACL,aAAa,EAGb,cAAc,EAEd,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO;AAEL,cAAc;AACd,cAAc,EACd,sBAAsB;AAEtB,QAAQ;AACR,YAAY,EAEZ,kBAAkB,EAElB,gBAAgB,EAIhB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EAGrB,gBAAgB,EAChB,WAAW,EAEX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,gFAAgF;AAChF,OAAO,EAEL,eAAe,EAEf,oBAAoB,EAIpB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EAErB,gBAAgB,EAGhB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,GAG3B,MAAM,wBAAwB,CAAC;AAChC,gFAAgF;AAChF,OAAO,EAOL,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EAEV,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,WAAW,EAIX,0BAA0B,EAC1B,aAAa,EACb,sBAAsB,EAEtB,SAAS,GAEV,MAAM,kBAAkB,CAAC;AAC1B,gFAAgF;AAChF,OAAO,EAEL,mBAAmB,EAEnB,iBAAiB,EACjB,oBAAoB,EAEpB,oBAAoB,EAEpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,gFAAgF;AAChF,OAAO,EACL,cAAc,EACd,MAAM,EACN,MAAM,EACN,SAAS,EAGT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAU,EAIV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EAEjB,cAAc,EACd,YAAY,EACZ,MAAM,GACP,MAAM,2BAA2B,CAAC;AAEnC,gFAAgF;AAChF,OAAO,EAEL,eAAe,EAIf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EAEL,4BAA4B,EAE5B,wBAAwB,EAExB,YAAY,GACb,MAAM,mBAAmB,CAAC","sourcesContent":["/**\n * dating-schema — Shared Zod schemas for the Dating feature\n *\n * Single source of truth consumed by both jansathi-frontend and reform-backend.\n * Guarantees identical validation logic and TypeScript types on both sides.\n *\n * @module dating-schema\n */\n\n// ─── API Response types (entities, results, params) ─────────────────────────\nexport * from './responses/index.js';\n\n// ─── Badge schemas ──────────────────────────────────────────────────────────\nexport {\n BADGE_DISPLAY,\n type BadgeDisplayInfo,\n type BadgeKey,\n badgeKeySchema,\n type UpdateBadgesBody,\n updateBadgesBodySchema,\n} from './badges.js';\n\n// ─── Common helpers and enums ────────────────────────────────────────────────\nexport {\n type AgeRange,\n // sub-schemas\n ageRangeSchema,\n emptyStringToUndefined,\n type Gender,\n // enums\n genderSchema,\n type InterestedIn,\n interestedInSchema,\n type LookingFor,\n lookingForSchema,\n type MaritalStatus,\n type MatchStatus,\n type MessageType,\n maritalStatusSchema,\n matchStatusSchema,\n messageTypeSchema,\n optionalTrimmedString,\n type Pagination,\n type Photo,\n paginationSchema,\n photoSchema,\n type SwipeAction,\n swipeActionSchema,\n} from './common.js';\nexport { getFieldMeta, getFieldOptions } from './field-helpers.js';\n// ─── Interaction schemas ─────────────────────────────────────────────────────\nexport {\n type BoostBody,\n boostBodySchema,\n type ComplimentBody,\n complimentBodySchema,\n type ImageLikeBody,\n type InteractionListQuery,\n type InteractionType,\n imageLikeBodySchema,\n interactionListQuerySchema,\n interactionTypeSchema,\n type RewindBody,\n rewindBodySchema,\n type SwipeBody,\n type SwipeResponse,\n swipeBodySchema,\n swipeResponseSchema,\n} from './interactions.js';\nexport {\n getOnboardingFieldConfig,\n ONBOARDING_FIELDS,\n ONBOARDING_STEP_GROUPS,\n ONBOARDING_TOTAL_MAIN_STEPS,\n ONBOARDING_TOTAL_SUB_STEPS,\n type OnboardingFieldConfig,\n type OnboardingStepGroup,\n} from './onboarding-config.js';\n// ─── Plan limits ─────────────────────────────────────────────────────────────\nexport {\n type BooleanFeatureKey,\n type EnumFeatureKey,\n type ExploreAccessLevel,\n type FeatureDisplayItem,\n type FeatureKey,\n type FilterLevel,\n getMinPlanForFeature,\n getPlanFeatureDisplay,\n getPlanLimit,\n getPlanLimits,\n hasRemainingQuota,\n isFeatureEnabled,\n isPaidPlan,\n type NumericFeatureKey,\n PAID_PLANS,\n PLAN_FEATURE_DISPLAY,\n PLAN_IDS,\n PLAN_LIMITS,\n type PlanDisplayValue,\n type PlanId,\n type PlanLimits,\n PREMIUM_EXPLORE_CATEGORIES,\n PREMIUM_PLANS,\n renderPlanDisplayValue,\n type ScoreBreakdownLevel,\n TOP_PLANS,\n type WhoLikedYouLevel,\n} from './plan-limits.js';\n// ─── Profile schemas ─────────────────────────────────────────────────────────\nexport {\n type CreateProfileInput,\n createProfileSchema,\n type FullProfileData,\n fullProfileSchema,\n getCognitiveBandRank,\n type OnboardingFormData,\n onboardingFormSchema,\n type UpdateProfileInput,\n updateProfileSchema,\n} from './profile.js';\n// ─── Profile field configs (option arrays with labels for UI rendering) ──────\nexport {\n allFieldGroups,\n basics,\n career,\n cognitive,\n type FieldGroup,\n type FieldOption,\n familyHome,\n favourites,\n financeLegal,\n healthWellness,\n heroIdentity,\n interestCategories,\n interests,\n lifestyle,\n lookingFor,\n type MultiSelectField,\n type OptionCategory,\n type ProfileField,\n personality,\n relationshipIntimacy,\n religionCommunity,\n type SelectField,\n selfAssessment,\n storyPrompts,\n values,\n} from './profile-fields/index.js';\n\n// ─── Safety schemas ──────────────────────────────────────────────────────────\nexport {\n type BlockBody,\n blockBodySchema,\n type ReportBody,\n type ReportReason,\n type ReportStatus,\n reportBodySchema,\n reportReasonSchema,\n reportStatusSchema,\n} from './safety.js';\n\n// ─── Subscription schemas ────────────────────────────────────────────────────\nexport {\n type CreateSubscriptionBody,\n createSubscriptionBodySchema,\n type SubscriptionStatus,\n subscriptionStatusSchema,\n type Tenure,\n tenureSchema,\n} from './subscription.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-features-data.d.ts","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EA4PzD,CAAC"}
1
+ {"version":3,"file":"plan-features-data.d.ts","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EA2PzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-features-data.js","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan feature display data -- separated to keep plan-limits.ts clean.\n *\n * Each plan value is one of:\n * - false -> locked (show lock icon)\n * - true -> enabled (show label with checkmark)\n * - \"10 likes per day\" -> show this display text\n * - { text: \"...\", helpText?: \"...\" } -> display text + per-plan helpText override\n *\n * 4-tier system: Lite (free) -> Basic (decoy) -> Premium (target) -> Black (elite)\n */\n\nimport type { FeatureDisplayItem } from './plan-limits.js';\n\nexport const PLAN_FEATURE_DISPLAY_DATA: FeatureDisplayItem[] = [\n // ── Core actions ──\n {\n key: 'dailyLikes',\n label: 'Likes per day',\n available: true,\n helpText: 'The number of profiles you can like each day. Passing left is always unlimited.',\n plans: {\n lite: '10 likes per day',\n basic: '50 likes per day',\n premium: '300 likes per day',\n black: 'Unlimited likes',\n },\n },\n {\n key: 'dailyCompliments',\n label: 'Compliments',\n available: true,\n helpText:\n 'Send a compliment with a personal note to stand out. They see it even before matching with you.',\n plans: {\n lite: '1 compliment per day',\n basic: '5 compliments per day',\n premium: '10 compliments per day',\n black: 'Unlimited compliments',\n },\n },\n {\n key: 'dailyRewinds',\n label: 'Rewind',\n available: true,\n helpText: 'Accidentally passed on someone? Tap rewind to bring their profile back instantly.',\n plans: {\n lite: false,\n basic: 'Unlimited rewinds',\n premium: 'Unlimited rewinds',\n black: 'Unlimited rewinds',\n },\n },\n\n // ── Visibility & discovery ──\n {\n key: 'showAds',\n label: 'Ad-free experience',\n available: true,\n helpText: 'Browse profiles, chat, and explore without any ads interrupting your experience.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'whoLikedYou',\n label: 'See who likes you',\n available: true,\n helpText:\n 'See all your interactions in one place: profiles you liked, people who liked you, compliments you sent, and compliments you received.',\n plans: {\n lite: false,\n basic: 'See who likes you (blurred)',\n premium: 'See all interactions',\n black: 'See all interactions',\n },\n },\n {\n key: 'filterLevel',\n label: 'Search filters',\n available: true,\n helpText: 'Filter profiles by age, location, religion, education, profession, and more.',\n plans: {\n lite: 'Basic filters',\n basic: 'Advanced filters',\n premium: 'All filters',\n black: 'All filters',\n },\n },\n {\n key: 'scoreVisibleProfiles',\n label: 'Compatibility scores',\n available: true,\n helpText:\n 'See how compatible you are with each profile based on 120+ data points across Social Fit, Personality, and Intimacy.',\n plans: {\n lite: '3 compatibility scores per day',\n basic: 'Unlimited compatibility scores',\n premium: 'Unlimited compatibility scores',\n black: 'Unlimited compatibility scores',\n },\n },\n {\n key: 'scoreBreakdown',\n label: 'Compatibility score breakdown',\n available: true,\n helpText:\n 'See the detailed compatibility breakdown across Social Fit, Personality, and Intimacy dimensions for every profile.',\n plans: {\n lite: false,\n basic: false,\n premium: 'Full compatibility score breakdown',\n black: 'Full compatibility score breakdown',\n },\n },\n {\n key: 'dimensionControl',\n label: 'Compatibility dimension control',\n available: true,\n helpText:\n 'Control which compatibility dimensions (Social Fit, Personality, Intimacy) matter most to you. Your discover feed re-ranks profiles based on your priorities.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'premiumExplore',\n label: 'Premium Explore categories',\n available: true,\n helpText:\n 'Access exclusive Explore categories like High IQ Dating, IIT/IIM Dating, Casual Dating, Elite Black Circle, and more curated collections.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'monthlyBoosts',\n label: 'Profile boosts',\n available: true,\n helpText:\n 'Boost your profile to the top of the discover feed for 30 minutes and get seen by more people.',\n plans: {\n lite: false,\n basic: '3 boosts per month',\n premium: '5 boosts per month',\n black: '10 boosts per month',\n },\n },\n\n // ── Communication ──\n {\n key: 'readReceipts',\n label: 'Read receipts',\n available: true,\n helpText: 'Know exactly when someone has read your message. No more guessing.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'calls',\n label: 'Voice & video calls',\n available: false,\n helpText:\n 'Talk face-to-face or voice-only with your matches directly inside the app, no phone number needed.',\n plans: {\n lite: false,\n basic: '3 voice + 2 video calls per day',\n premium: 'Unlimited calls',\n black: 'Unlimited calls',\n },\n },\n {\n key: 'voiceMessages',\n label: 'Voice messages in chat',\n available: false,\n helpText: 'Record and send short voice clips in chat instead of typing.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'messageBeforeMatch',\n label: 'Send a message first',\n available: true,\n helpText: 'Introduce yourself with a message before the other person swipes on you.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n\n // ── Insights ──\n {\n key: 'photoInsights',\n label: 'Photo Insights',\n available: true,\n helpText:\n 'See which of your photos gets the most likes and attention, and get tips to improve.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'viewContactNumber',\n label: 'View contact number',\n available: true,\n helpText:\n 'See the phone number of profiles who have chosen to share it. Both the user and their family contact if shared.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n\n // ── Premium perks ──\n {\n key: 'incognitoMode',\n label: 'Incognito Mode',\n available: true,\n helpText:\n 'Go invisible. Your profile is hidden from everyone except the people you choose to like.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'travelMode',\n label: 'Teleport Mode',\n available: true,\n helpText: 'Browse profiles in any city, district, or state without physically being there.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'seePublicBlackProfiles',\n label: 'Discover Black Circle profiles',\n available: true,\n helpText:\n 'See profiles of Black Circle members who have chosen to be publicly discoverable.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: {\n text: 'Discover Black Circle profiles',\n helpText:\n 'As a Black Circle member, you have unrestricted access to all Black Circle profiles, not just publicly discoverable ones.',\n },\n },\n },\n\n // ── Black exclusive ──\n {\n key: 'exclusiveLeague',\n label: 'The Black Circle',\n available: true,\n helpText:\n 'An exclusive community of celebrities, founders, and high-net-worth individuals. Your profile is only visible to other verified Black Circle members.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'verifiedBadge',\n label: 'Verified Elite badge',\n available: true,\n helpText:\n 'A distinctive badge on your profile, granted after admin verification. Signals you are a verified Black Circle member.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'vipSupport',\n label: 'Dedicated concierge',\n available: true,\n helpText:\n 'A personal matchmaking concierge who helps curate your matches and provides priority support.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n];\n"]}
1
+ {"version":3,"file":"plan-features-data.js","sourceRoot":"","sources":["../src/plan-features-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan feature display data -- separated to keep plan-limits.ts clean.\n *\n * Each plan value is one of:\n * - false -> locked (show lock icon)\n * - true -> enabled (show label with checkmark)\n * - \"10 likes per day\" -> show this display text\n * - { text: \"...\", helpText?: \"...\" } -> display text + per-plan helpText override\n *\n * 4-tier system: Lite (free) -> Basic (decoy) -> Premium (target) -> Black (elite)\n */\n\nimport type { FeatureDisplayItem } from './plan-limits.js';\n\nexport const PLAN_FEATURE_DISPLAY_DATA: FeatureDisplayItem[] = [\n // ── Core actions ──\n {\n key: 'dailyLikes',\n label: 'Likes per day',\n available: true,\n helpText: 'The number of profiles you can like each day. Passing left is always unlimited.',\n plans: {\n lite: '10 likes per day',\n basic: '50 likes per day',\n premium: '300 likes per day',\n black: 'Unlimited likes',\n },\n },\n {\n key: 'dailyCompliments',\n label: 'Compliments',\n available: true,\n helpText:\n 'Send a compliment with a personal note to stand out. They see it even before matching with you.',\n plans: {\n lite: '1 compliment per day',\n basic: '5 compliments per day',\n premium: '10 compliments per day',\n black: 'Unlimited compliments',\n },\n },\n {\n key: 'dailyRewinds',\n label: 'Rewind',\n available: true,\n helpText: 'Accidentally passed on someone? Tap rewind to bring their profile back instantly.',\n plans: {\n lite: false,\n basic: 'Unlimited rewinds',\n premium: 'Unlimited rewinds',\n black: 'Unlimited rewinds',\n },\n },\n\n // ── Visibility & discovery ──\n {\n key: 'showAds',\n label: 'Ad-free experience',\n available: true,\n helpText: 'Browse profiles, chat, and explore without any ads interrupting your experience.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'whoLikedYou',\n label: 'See who likes you',\n available: true,\n helpText:\n 'See all your interactions in one place: profiles you liked, people who liked you, compliments you sent, and compliments you received.',\n plans: {\n lite: false,\n basic: 'See who likes you (blurred)',\n premium: 'See all interactions',\n black: 'See all interactions',\n },\n },\n {\n key: 'filterLevel',\n label: 'Search filters',\n available: true,\n helpText: 'Filter profiles by age, location, religion, education, profession, and more.',\n plans: {\n lite: 'Basic filters',\n basic: 'Advanced filters',\n premium: 'All filters',\n black: 'All filters',\n },\n },\n {\n key: 'scoreVisibleProfiles',\n label: 'Compatibility scores',\n available: true,\n helpText:\n 'See how compatible you are with each profile based on 120+ data points across Social Fit, Personality, and Intimacy.',\n plans: {\n lite: '3 compatibility scores per day',\n basic: 'Unlimited compatibility scores',\n premium: 'Unlimited compatibility scores',\n black: 'Unlimited compatibility scores',\n },\n },\n {\n key: 'scoreBreakdown',\n label: 'Compatibility score breakdown',\n available: true,\n helpText:\n 'See the detailed compatibility breakdown across Social Fit, Personality, and Intimacy dimensions for every profile.',\n plans: {\n lite: false,\n basic: false,\n premium: 'Full compatibility score breakdown',\n black: 'Full compatibility score breakdown',\n },\n },\n {\n key: 'dimensionControl',\n label: 'Compatibility dimension control',\n available: true,\n helpText:\n 'Control which compatibility dimensions (Social Fit, Personality, Intimacy) matter most to you. Your discover feed re-ranks profiles based on your priorities.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'premiumExplore',\n label: 'Premium Explore categories',\n available: true,\n helpText:\n 'Access exclusive Explore categories like High IQ Dating, IIT/IIM Dating, Casual Dating, Elite Black Circle, and more curated collections.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: true,\n },\n },\n {\n key: 'monthlyBoosts',\n label: 'Profile boosts',\n available: true,\n helpText:\n 'Boost your profile to the top of the discover feed for 30 minutes and get seen by more people.',\n plans: {\n lite: false,\n basic: '3 boosts per month',\n premium: '5 boosts per month',\n black: '10 boosts per month',\n },\n },\n\n // ── Communication ──\n {\n key: 'readReceipts',\n label: 'Read receipts',\n available: true,\n helpText: 'Know exactly when someone has read your message. No more guessing.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'calls',\n label: 'Voice & video calls',\n available: false,\n helpText:\n 'Talk face-to-face or voice-only with your matches directly inside the app, no phone number needed.',\n plans: {\n lite: false,\n basic: '3 voice + 2 video calls per day',\n premium: 'Unlimited calls',\n black: 'Unlimited calls',\n },\n },\n {\n key: 'voiceMessages',\n label: 'Voice messages in chat',\n available: false,\n helpText: 'Record and send short voice clips in chat instead of typing.',\n plans: { lite: false, basic: true, premium: true, black: true },\n },\n {\n key: 'messageBeforeMatch',\n label: 'Send a message first',\n available: true,\n helpText: 'Introduce yourself with a message before the other person swipes on you.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n\n // ── Insights ──\n {\n key: 'photoInsights',\n label: 'Photo Insights',\n available: true,\n helpText:\n 'See which of your photos gets the most likes and attention, and get tips to improve.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'viewContactNumber',\n label: 'View contact number',\n available: true,\n helpText:\n 'See the phone number of profiles who have chosen to share it. Both the user and their family contact if shared.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n\n // ── Premium perks ──\n {\n key: 'incognitoMode',\n label: 'Incognito Mode',\n available: true,\n helpText:\n 'Go invisible. Your profile is hidden from everyone except the people you choose to like.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'travelMode',\n label: 'Teleport Mode',\n available: true,\n helpText: 'Browse profiles in any city, district, or state without physically being there.',\n plans: { lite: false, basic: false, premium: true, black: true },\n },\n {\n key: 'seePublicBlackProfiles',\n label: 'Discover Black Circle profiles',\n available: true,\n helpText: 'See profiles of Black Circle members who have chosen to be publicly discoverable.',\n plans: {\n lite: false,\n basic: false,\n premium: true,\n black: {\n text: 'Discover Black Circle profiles',\n helpText:\n 'As a Black Circle member, you have unrestricted access to all Black Circle profiles, not just publicly discoverable ones.',\n },\n },\n },\n\n // ── Black exclusive ──\n {\n key: 'exclusiveLeague',\n label: 'The Black Circle',\n available: true,\n helpText:\n 'An exclusive community of celebrities, founders, and high-net-worth individuals. Your profile is only visible to other verified Black Circle members.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'verifiedBadge',\n label: 'Verified Elite badge',\n available: true,\n helpText:\n 'A distinctive badge on your profile, granted after admin verification. Signals you are a verified Black Circle member.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n {\n key: 'vipSupport',\n label: 'Dedicated concierge',\n available: true,\n helpText:\n 'A personal matchmaking concierge who helps curate your matches and provides priority support.',\n plans: { lite: false, basic: false, premium: false, black: true },\n },\n];\n"]}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Common API response types shared across all dating endpoints.
3
+ */
4
+ /** Standard API response envelope. */
5
+ export interface ApiResponse<T = unknown> {
6
+ success: boolean;
7
+ data: T;
8
+ message?: string;
9
+ }
10
+ /** Photo attached to a dating profile. */
11
+ export interface DatingPhoto {
12
+ url: string;
13
+ assetId?: string;
14
+ order: number;
15
+ }
16
+ /** Minimal profile info for lists, matches, and interactions. */
17
+ export interface ProfileSummary {
18
+ userId: string;
19
+ displayName: string;
20
+ photos: DatingPhoto[];
21
+ lastActiveAt?: string;
22
+ }
23
+ /** Standard pagination request params. */
24
+ export interface PaginationParams {
25
+ page?: number;
26
+ limit?: number;
27
+ }
28
+ /** Standard paginated response shape. */
29
+ export interface PaginatedResult<T> {
30
+ total: number;
31
+ page: number;
32
+ limit: number;
33
+ totalPages?: number;
34
+ items: T[];
35
+ }
36
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/responses/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sCAAsC;AACtC,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,EAAE,CAAC;CACZ"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Common API response types shared across all dating endpoints.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/responses/common.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Common API response types shared across all dating endpoints.\n */\n\n/** Standard API response envelope. */\nexport interface ApiResponse<T = unknown> {\n success: boolean;\n data: T;\n message?: string;\n}\n\n/** Photo attached to a dating profile. */\nexport interface DatingPhoto {\n url: string;\n assetId?: string;\n order: number;\n}\n\n/** Minimal profile info for lists, matches, and interactions. */\nexport interface ProfileSummary {\n userId: string;\n displayName: string;\n photos: DatingPhoto[];\n lastActiveAt?: string;\n}\n\n/** Standard pagination request params. */\nexport interface PaginationParams {\n page?: number;\n limit?: number;\n}\n\n/** Standard paginated response shape. */\nexport interface PaginatedResult<T> {\n total: number;\n page: number;\n limit: number;\n totalPages?: number;\n items: T[];\n}\n"]}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Discover feed and explore category response types.
3
+ */
4
+ import type { DatingProfile } from './profile.js';
5
+ import type { PaginationParams } from './common.js';
6
+ /** Discover feed query parameters. */
7
+ export interface DiscoverParams extends PaginationParams {
8
+ maxDistance?: number;
9
+ gender?: string;
10
+ religion?: string;
11
+ diet?: string;
12
+ smoking?: string;
13
+ alcohol?: string;
14
+ educationLevel?: string;
15
+ relationshipIntent?: string;
16
+ sexualOrientation?: string;
17
+ hobbies?: string;
18
+ chronotype?: string;
19
+ fitnessLevel?: string;
20
+ verifiedOnly?: boolean;
21
+ exploreCategory?: string;
22
+ }
23
+ /** Compatibility score breakdown dimensions. */
24
+ export interface CompatibilityBreakdown {
25
+ total: number;
26
+ intentAlignment: number;
27
+ lifestyleMatch: number;
28
+ interestOverlap: number;
29
+ personalityProximity: number;
30
+ valuesAlignment: number;
31
+ communicationCompat: number;
32
+ dealbreakerScore: number;
33
+ }
34
+ /** A profile in the discover feed (with compatibility data). */
35
+ export interface DiscoverProfile extends Partial<DatingProfile> {
36
+ compatibilityScore?: number;
37
+ compatibilityBreakdown?: CompatibilityBreakdown;
38
+ }
39
+ /** Paginated discover feed result. */
40
+ export interface DiscoverResult {
41
+ profiles: DiscoverProfile[];
42
+ page: number;
43
+ totalPages: number;
44
+ total: number;
45
+ }
46
+ /** Single explore category count. */
47
+ export interface ExploreCategoryCount {
48
+ slug: string;
49
+ count: number;
50
+ }
51
+ /** All explore category counts (grid + section breakdowns). */
52
+ export interface ExploreCountsResult {
53
+ defaultDistanceKm: number;
54
+ gridCounts: ExploreCategoryCount[];
55
+ sectionCounts: {
56
+ profession: ExploreCategoryCount[];
57
+ language: ExploreCategoryCount[];
58
+ religion: ExploreCategoryCount[];
59
+ zodiac: ExploreCategoryCount[];
60
+ diet: ExploreCategoryCount[];
61
+ education: ExploreCategoryCount[];
62
+ };
63
+ }
64
+ /** Query params for explore counts. */
65
+ export interface ExploreCountsParams {
66
+ maxDistance?: number;
67
+ }
68
+ /** Query params for a single category count. */
69
+ export interface CategoryCountParams {
70
+ category: string;
71
+ maxDistance: number;
72
+ }
73
+ /** Single category count result. */
74
+ export interface CategoryCountResult {
75
+ count: number;
76
+ }
77
+ /** Moderation list filter params. */
78
+ export interface ModerationListParams {
79
+ page?: number;
80
+ limit?: number;
81
+ search?: string;
82
+ isVerified?: string;
83
+ isEliteInstitute?: string;
84
+ isHighIq?: string;
85
+ blackCircleStatus?: string;
86
+ }
87
+ /** Paginated moderation profile list. */
88
+ export interface ModerationListResult {
89
+ profiles: import('./profile.js').ModerationProfile[];
90
+ pagination: {
91
+ page: number;
92
+ limit: number;
93
+ total: number;
94
+ totalPages: number;
95
+ };
96
+ }
97
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/responses/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Discover feed and explore category response types.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/responses/discover.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Discover feed and explore category response types.\n */\n\nimport type { DatingProfile } from './profile.js';\nimport type { PaginationParams } from './common.js';\n\n/** Discover feed query parameters. */\nexport interface DiscoverParams extends PaginationParams {\n maxDistance?: number;\n gender?: string;\n religion?: string;\n diet?: string;\n smoking?: string;\n alcohol?: string;\n educationLevel?: string;\n relationshipIntent?: string;\n sexualOrientation?: string;\n hobbies?: string;\n chronotype?: string;\n fitnessLevel?: string;\n verifiedOnly?: boolean;\n exploreCategory?: string;\n}\n\n/** Compatibility score breakdown dimensions. */\nexport interface CompatibilityBreakdown {\n total: number;\n intentAlignment: number;\n lifestyleMatch: number;\n interestOverlap: number;\n personalityProximity: number;\n valuesAlignment: number;\n communicationCompat: number;\n dealbreakerScore: number;\n}\n\n/** A profile in the discover feed (with compatibility data). */\nexport interface DiscoverProfile extends Partial<DatingProfile> {\n compatibilityScore?: number;\n compatibilityBreakdown?: CompatibilityBreakdown;\n}\n\n/** Paginated discover feed result. */\nexport interface DiscoverResult {\n profiles: DiscoverProfile[];\n page: number;\n totalPages: number;\n total: number;\n}\n\n/** Single explore category count. */\nexport interface ExploreCategoryCount {\n slug: string;\n count: number;\n}\n\n/** All explore category counts (grid + section breakdowns). */\nexport interface ExploreCountsResult {\n defaultDistanceKm: number;\n gridCounts: ExploreCategoryCount[];\n sectionCounts: {\n profession: ExploreCategoryCount[];\n language: ExploreCategoryCount[];\n religion: ExploreCategoryCount[];\n zodiac: ExploreCategoryCount[];\n diet: ExploreCategoryCount[];\n education: ExploreCategoryCount[];\n };\n}\n\n/** Query params for explore counts. */\nexport interface ExploreCountsParams {\n maxDistance?: number;\n}\n\n/** Query params for a single category count. */\nexport interface CategoryCountParams {\n category: string;\n maxDistance: number;\n}\n\n/** Single category count result. */\nexport interface CategoryCountResult {\n count: number;\n}\n\n/** Moderation list filter params. */\nexport interface ModerationListParams {\n page?: number;\n limit?: number;\n search?: string;\n isVerified?: string;\n isEliteInstitute?: string;\n isHighIq?: string;\n blackCircleStatus?: string;\n}\n\n/** Paginated moderation profile list. */\nexport interface ModerationListResult {\n profiles: import('./profile.js').ModerationProfile[];\n pagination: {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n };\n}\n"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Dating API response types -- single source of truth.
3
+ *
4
+ * Consumed by both jansathi-frontend and reform-backend.
5
+ * Request types (Zod schemas) are in the parent src/ directory.
6
+ * Response/entity types are here, organized by feature.
7
+ */
8
+ export * from './common.js';
9
+ export * from './profile.js';
10
+ export * from './discover.js';
11
+ export * from './interactions.js';
12
+ export * from './matches.js';
13
+ export * from './safety.js';
14
+ export * from './monetization.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/responses/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Dating API response types -- single source of truth.
3
+ *
4
+ * Consumed by both jansathi-frontend and reform-backend.
5
+ * Request types (Zod schemas) are in the parent src/ directory.
6
+ * Response/entity types are here, organized by feature.
7
+ */
8
+ export * from './common.js';
9
+ export * from './profile.js';
10
+ export * from './discover.js';
11
+ export * from './interactions.js';
12
+ export * from './matches.js';
13
+ export * from './safety.js';
14
+ export * from './monetization.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/responses/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC","sourcesContent":["/**\n * Dating API response types -- single source of truth.\n *\n * Consumed by both jansathi-frontend and reform-backend.\n * Request types (Zod schemas) are in the parent src/ directory.\n * Response/entity types are here, organized by feature.\n */\n\nexport * from './common.js';\nexport * from './profile.js';\nexport * from './discover.js';\nexport * from './interactions.js';\nexport * from './matches.js';\nexport * from './safety.js';\nexport * from './monetization.js';\n"]}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Swipe, compliment, and interaction list response types.
3
+ */
4
+ import type { ProfileSummary } from './common.js';
5
+ /** Result of recording a swipe (like/pass). */
6
+ export interface SwipeResult {
7
+ matched: boolean;
8
+ matchId?: string;
9
+ }
10
+ /** Result of rewinding the last swipe. */
11
+ export interface RewindResult {
12
+ undone: boolean;
13
+ matchRemoved: boolean;
14
+ }
15
+ /** A compliment entity. */
16
+ export interface Compliment {
17
+ _id: string;
18
+ fromUserId: string;
19
+ toUserId: string;
20
+ text: string;
21
+ isRead: boolean;
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ }
25
+ /** Result of sending a compliment (may trigger a match). */
26
+ export interface SendComplimentResult {
27
+ compliment: Compliment;
28
+ matched: boolean;
29
+ matchId?: string;
30
+ }
31
+ /** Paginated compliment list. */
32
+ export interface ComplimentListResult {
33
+ compliments: Compliment[];
34
+ total: number;
35
+ page: number;
36
+ limit: number;
37
+ }
38
+ /** A profile in the "users I liked" list. */
39
+ export interface LikedProfile {
40
+ swipedAt: string;
41
+ profile: ProfileSummary | null;
42
+ }
43
+ /** A profile in the "users who liked me" list (may be blurred for basic plan). */
44
+ export interface LikedMeProfile extends LikedProfile {
45
+ isBlurred?: boolean;
46
+ }
47
+ /** A compliment with the sender/receiver's profile summary. */
48
+ export interface ComplimentWithProfile {
49
+ compliment: Compliment;
50
+ profile: ProfileSummary | null;
51
+ }
52
+ /** Paginated "liked" list result. */
53
+ export interface LikedResult {
54
+ profiles: LikedProfile[];
55
+ total: number;
56
+ page: number;
57
+ limit: number;
58
+ }
59
+ /** Paginated "liked me" list result (with upgrade prompt for free users). */
60
+ export interface LikedMeResult {
61
+ profiles: LikedMeProfile[];
62
+ total: number;
63
+ page: number;
64
+ limit: number;
65
+ upgradeRequired?: boolean;
66
+ }
67
+ /** Paginated compliment interaction list. */
68
+ export interface ComplimentInteractionResult {
69
+ compliments: ComplimentWithProfile[];
70
+ total: number;
71
+ page: number;
72
+ limit: number;
73
+ }
74
+ //# sourceMappingURL=interactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../src/responses/interactions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iCAAiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,6CAA6C;AAC7C,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Swipe, compliment, and interaction list response types.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../src/responses/interactions.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Swipe, compliment, and interaction list response types.\n */\n\nimport type { ProfileSummary } from './common.js';\n\n/** Result of recording a swipe (like/pass). */\nexport interface SwipeResult {\n matched: boolean;\n matchId?: string;\n}\n\n/** Result of rewinding the last swipe. */\nexport interface RewindResult {\n undone: boolean;\n matchRemoved: boolean;\n}\n\n/** A compliment entity. */\nexport interface Compliment {\n _id: string;\n fromUserId: string;\n toUserId: string;\n text: string;\n isRead: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\n/** Result of sending a compliment (may trigger a match). */\nexport interface SendComplimentResult {\n compliment: Compliment;\n matched: boolean;\n matchId?: string;\n}\n\n/** Paginated compliment list. */\nexport interface ComplimentListResult {\n compliments: Compliment[];\n total: number;\n page: number;\n limit: number;\n}\n\n/** A profile in the \"users I liked\" list. */\nexport interface LikedProfile {\n swipedAt: string;\n profile: ProfileSummary | null;\n}\n\n/** A profile in the \"users who liked me\" list (may be blurred for basic plan). */\nexport interface LikedMeProfile extends LikedProfile {\n isBlurred?: boolean;\n}\n\n/** A compliment with the sender/receiver's profile summary. */\nexport interface ComplimentWithProfile {\n compliment: Compliment;\n profile: ProfileSummary | null;\n}\n\n/** Paginated \"liked\" list result. */\nexport interface LikedResult {\n profiles: LikedProfile[];\n total: number;\n page: number;\n limit: number;\n}\n\n/** Paginated \"liked me\" list result (with upgrade prompt for free users). */\nexport interface LikedMeResult {\n profiles: LikedMeProfile[];\n total: number;\n page: number;\n limit: number;\n upgradeRequired?: boolean;\n}\n\n/** Paginated compliment interaction list. */\nexport interface ComplimentInteractionResult {\n compliments: ComplimentWithProfile[];\n total: number;\n page: number;\n limit: number;\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Match entity and related response types.
3
+ */
4
+ import type { ProfileSummary } from './common.js';
5
+ /** Chat metadata for a match. */
6
+ export interface ChatSummary {
7
+ lastMessage: string | null;
8
+ lastMessageAt: string | null;
9
+ unreadCount: number;
10
+ }
11
+ /** A match between two users. */
12
+ export interface Match {
13
+ _id: string;
14
+ users: [string, string];
15
+ status: 'active' | 'unmatched' | 'blocked';
16
+ matchedAt: string;
17
+ unmatchedAt?: string;
18
+ unmatchedBy?: string;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ /** A match with the partner's profile summary and chat info. */
23
+ export interface MatchWithPartner {
24
+ match: Match;
25
+ partner: ProfileSummary | null;
26
+ chat: ChatSummary;
27
+ }
28
+ /** Paginated match list. */
29
+ export interface MatchListResult {
30
+ matches: MatchWithPartner[];
31
+ total: number;
32
+ page: number;
33
+ limit: number;
34
+ }
35
+ /** Single match detail with partner info. */
36
+ export interface SingleMatchResult {
37
+ match: Match;
38
+ partner: ProfileSummary | null;
39
+ }
40
+ //# sourceMappingURL=matches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matches.d.ts","sourceRoot":"","sources":["../../src/responses/matches.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Match entity and related response types.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=matches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../src/responses/matches.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Match entity and related response types.\n */\n\nimport type { ProfileSummary } from './common.js';\n\n/** Chat metadata for a match. */\nexport interface ChatSummary {\n lastMessage: string | null;\n lastMessageAt: string | null;\n unreadCount: number;\n}\n\n/** A match between two users. */\nexport interface Match {\n _id: string;\n users: [string, string];\n status: 'active' | 'unmatched' | 'blocked';\n matchedAt: string;\n unmatchedAt?: string;\n unmatchedBy?: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/** A match with the partner's profile summary and chat info. */\nexport interface MatchWithPartner {\n match: Match;\n partner: ProfileSummary | null;\n chat: ChatSummary;\n}\n\n/** Paginated match list. */\nexport interface MatchListResult {\n matches: MatchWithPartner[];\n total: number;\n page: number;\n limit: number;\n}\n\n/** Single match detail with partner info. */\nexport interface SingleMatchResult {\n match: Match;\n partner: ProfileSummary | null;\n}\n"]}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Boost, subscription, and pricing plan response types.
3
+ * Request types (CreateSubscriptionBody) are in ../subscription.ts.
4
+ */
5
+ import type { PlanId } from '../plan-limits.js';
6
+ import type { Tenure } from '../subscription.js';
7
+ /** Result of activating a profile boost. */
8
+ export interface BoostResult {
9
+ alreadyActive: boolean;
10
+ boostedUntil: string;
11
+ lastBoostedAt: string;
12
+ }
13
+ /** Current boost status. */
14
+ export interface BoostStatus {
15
+ isActive: boolean;
16
+ boostedUntil: string | null;
17
+ lastBoostedAt: string | null;
18
+ }
19
+ /** User's subscription entity. */
20
+ export interface Subscription {
21
+ _id?: string;
22
+ userId?: string;
23
+ planId: PlanId;
24
+ tenure?: Tenure;
25
+ status: 'active' | 'grace' | 'expired' | 'cancelled';
26
+ startDate?: string;
27
+ endDate?: string;
28
+ autoRenew?: boolean;
29
+ isFreeTier?: boolean;
30
+ /** True when user is eligible for the launch offer. */
31
+ launchOfferEligible?: boolean;
32
+ }
33
+ /** A pricing plan's tenure/duration variation with pricing. */
34
+ export interface TenureVariation {
35
+ tenureId: string;
36
+ label: string;
37
+ basePrice: number;
38
+ discountPct: number;
39
+ finalPrice: number;
40
+ effectiveLabel: string;
41
+ enabled: boolean;
42
+ }
43
+ /** Launch offer details for a pricing plan. */
44
+ export interface LaunchOfferResponse {
45
+ enabled: boolean;
46
+ price: number;
47
+ tenure: string;
48
+ label: string;
49
+ badge: string;
50
+ validUntil?: string;
51
+ maxRedemptions?: number;
52
+ redemptionCount: number;
53
+ oncePerUser: boolean;
54
+ }
55
+ /** Full pricing plan with tenures and launch offer. */
56
+ export interface PricingPlanResponse {
57
+ planId: PlanId;
58
+ name: string;
59
+ tagline: string;
60
+ accentColor: string;
61
+ bgColor: string;
62
+ isPopular: boolean;
63
+ sortOrder: number;
64
+ baseMonthlyPrice: number;
65
+ tenures: TenureVariation[];
66
+ features: string[];
67
+ cardFeatures: string[];
68
+ isActive: boolean;
69
+ launchOffer?: LaunchOfferResponse;
70
+ }
71
+ //# sourceMappingURL=monetization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monetization.d.ts","sourceRoot":"","sources":["../../src/responses/monetization.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Boost, subscription, and pricing plan response types.
3
+ * Request types (CreateSubscriptionBody) are in ../subscription.ts.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=monetization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monetization.js","sourceRoot":"","sources":["../../src/responses/monetization.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Boost, subscription, and pricing plan response types.\n * Request types (CreateSubscriptionBody) are in ../subscription.ts.\n */\n\nimport type { PlanId } from '../plan-limits.js';\nimport type { Tenure } from '../subscription.js';\n\n/** Result of activating a profile boost. */\nexport interface BoostResult {\n alreadyActive: boolean;\n boostedUntil: string;\n lastBoostedAt: string;\n}\n\n/** Current boost status. */\nexport interface BoostStatus {\n isActive: boolean;\n boostedUntil: string | null;\n lastBoostedAt: string | null;\n}\n\n/** User's subscription entity. */\nexport interface Subscription {\n _id?: string;\n userId?: string;\n planId: PlanId;\n tenure?: Tenure;\n status: 'active' | 'grace' | 'expired' | 'cancelled';\n startDate?: string;\n endDate?: string;\n autoRenew?: boolean;\n isFreeTier?: boolean;\n /** True when user is eligible for the launch offer. */\n launchOfferEligible?: boolean;\n}\n\n/** A pricing plan's tenure/duration variation with pricing. */\nexport interface TenureVariation {\n tenureId: string;\n label: string;\n basePrice: number;\n discountPct: number;\n finalPrice: number;\n effectiveLabel: string;\n enabled: boolean;\n}\n\n/** Launch offer details for a pricing plan. */\nexport interface LaunchOfferResponse {\n enabled: boolean;\n price: number;\n tenure: string;\n label: string;\n badge: string;\n validUntil?: string;\n maxRedemptions?: number;\n redemptionCount: number;\n oncePerUser: boolean;\n}\n\n/** Full pricing plan with tenures and launch offer. */\nexport interface PricingPlanResponse {\n planId: PlanId;\n name: string;\n tagline: string;\n accentColor: string;\n bgColor: string;\n isPopular: boolean;\n sortOrder: number;\n baseMonthlyPrice: number;\n tenures: TenureVariation[];\n features: string[];\n cardFeatures: string[];\n isActive: boolean;\n launchOffer?: LaunchOfferResponse;\n}\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Dating profile entity and related response types.
3
+ */
4
+ import type { BadgeKey } from '../badges.js';
5
+ import type { PlanId } from '../plan-limits.js';
6
+ import type { DatingPhoto } from './common.js';
7
+ /** Full dating profile (own profile or tier-filtered view of another user). */
8
+ export interface DatingProfile {
9
+ _id: string;
10
+ userId: string;
11
+ displayName: string;
12
+ photos: DatingPhoto[];
13
+ dateOfBirth: string;
14
+ gender: string;
15
+ pronouns?: string;
16
+ currentLocation?: {
17
+ displayName?: string;
18
+ state?: {
19
+ _id: string;
20
+ name: string;
21
+ };
22
+ district?: {
23
+ _id: string;
24
+ name: string;
25
+ };
26
+ latitude?: number;
27
+ longitude?: number;
28
+ };
29
+ hometown?: string;
30
+ relationshipIntent?: string;
31
+ sexualOrientation?: string;
32
+ relationshipStructure?: string;
33
+ mbtiType?: string;
34
+ bio?: string;
35
+ selfKeywords?: string[];
36
+ height?: number;
37
+ educationLevel?: string;
38
+ profession?: string;
39
+ diet?: string;
40
+ smoking?: string;
41
+ alcohol?: string;
42
+ hobbies?: string[];
43
+ planId: PlanId;
44
+ isOnboarded: boolean;
45
+ isActive: boolean;
46
+ lastActiveAt?: string;
47
+ boostedUntil?: string;
48
+ badges?: BadgeKey[];
49
+ [key: string]: unknown;
50
+ }
51
+ /** Profile view for admin moderation panel. */
52
+ export interface ModerationProfile {
53
+ _id: string;
54
+ userId: string;
55
+ displayName: string;
56
+ photos: DatingPhoto[];
57
+ gender: string;
58
+ dateOfBirth: string;
59
+ planId: string;
60
+ blackCircleStatus: string;
61
+ isVerified: boolean;
62
+ isEliteInstitute: boolean;
63
+ isHighIq: boolean;
64
+ isActive: boolean;
65
+ createdAt: string;
66
+ }
67
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/responses/profile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,QAAQ,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Dating profile entity and related response types.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/responses/profile.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Dating profile entity and related response types.\n */\n\nimport type { BadgeKey } from '../badges.js';\nimport type { PlanId } from '../plan-limits.js';\nimport type { DatingPhoto } from './common.js';\n\n/** Full dating profile (own profile or tier-filtered view of another user). */\nexport interface DatingProfile {\n _id: string;\n userId: string;\n displayName: string;\n photos: DatingPhoto[];\n dateOfBirth: string;\n gender: string;\n pronouns?: string;\n currentLocation?: {\n displayName?: string;\n state?: { _id: string; name: string };\n district?: { _id: string; name: string };\n latitude?: number;\n longitude?: number;\n };\n hometown?: string;\n relationshipIntent?: string;\n sexualOrientation?: string;\n relationshipStructure?: string;\n mbtiType?: string;\n bio?: string;\n selfKeywords?: string[];\n height?: number;\n educationLevel?: string;\n profession?: string;\n diet?: string;\n smoking?: string;\n alcohol?: string;\n hobbies?: string[];\n planId: PlanId;\n isOnboarded: boolean;\n isActive: boolean;\n lastActiveAt?: string;\n boostedUntil?: string;\n badges?: BadgeKey[];\n [key: string]: unknown;\n}\n\n/** Profile view for admin moderation panel. */\nexport interface ModerationProfile {\n _id: string;\n userId: string;\n displayName: string;\n photos: DatingPhoto[];\n gender: string;\n dateOfBirth: string;\n planId: string;\n blackCircleStatus: string;\n isVerified: boolean;\n isEliteInstitute: boolean;\n isHighIq: boolean;\n isActive: boolean;\n createdAt: string;\n}\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Safety-related response types (blocks).
3
+ * Request types (ReportBody, BlockBody) are in ../safety.ts.
4
+ */
5
+ /** A blocked user record. */
6
+ export interface BlockedUser {
7
+ _id: string;
8
+ blockerUserId: string;
9
+ blockedUserId: string;
10
+ createdAt: string;
11
+ }
12
+ /** Paginated block list. */
13
+ export interface BlockListResult {
14
+ blocks: BlockedUser[];
15
+ total: number;
16
+ }
17
+ //# sourceMappingURL=safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/responses/safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Safety-related response types (blocks).
3
+ * Request types (ReportBody, BlockBody) are in ../safety.ts.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/responses/safety.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Safety-related response types (blocks).\n * Request types (ReportBody, BlockBody) are in ../safety.ts.\n */\n\n/** A blocked user record. */\nexport interface BlockedUser {\n _id: string;\n blockerUserId: string;\n blockedUserId: string;\n createdAt: string;\n}\n\n/** Paginated block list. */\nexport interface BlockListResult {\n blocks: BlockedUser[];\n total: number;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dating-schema",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "description": "Shared Zod schemas for the Dating feature — single source of truth for API contracts, validation, and TypeScript types (frontend + backend).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",