udp-schema 2.23.0 → 2.28.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/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +11 -1
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/onboarding-config.d.ts.map +1 -1
- package/dist/onboarding-config.js +110 -21
- package/dist/onboarding-config.js.map +1 -1
- package/dist/onboarding-form.d.ts +522 -17
- package/dist/onboarding-form.d.ts.map +1 -1
- package/dist/profile-fields/06-education.d.ts.map +1 -1
- package/dist/profile-fields/06-education.js +0 -9
- package/dist/profile-fields/06-education.js.map +1 -1
- package/dist/profile-fields/07-employment.d.ts +168 -0
- package/dist/profile-fields/07-employment.d.ts.map +1 -1
- package/dist/profile-fields/07-employment.js +212 -3
- package/dist/profile-fields/07-employment.js.map +1 -1
- package/dist/profile-fields/10-worldview.d.ts.map +1 -1
- package/dist/profile-fields/10-worldview.js +3 -23
- package/dist/profile-fields/10-worldview.js.map +1 -1
- package/dist/profile-fields/12-household.d.ts +15 -2
- package/dist/profile-fields/12-household.d.ts.map +1 -1
- package/dist/profile-fields/12-household.js +166 -17
- package/dist/profile-fields/12-household.js.map +1 -1
- package/dist/profile-fields/index.d.ts +1 -1
- package/dist/profile-fields/index.d.ts.map +1 -1
- package/dist/profile-fields/index.js +1 -1
- package/dist/profile-fields/index.js.map +1 -1
- package/dist/profile-fields/types.d.ts +12 -3
- package/dist/profile-fields/types.d.ts.map +1 -1
- package/dist/profile-fields/types.js.map +1 -1
- package/dist/progress-fields.d.ts.map +1 -1
- package/dist/progress-fields.js +17 -3
- package/dist/progress-fields.js.map +1 -1
- package/dist/step-06.schema.d.ts +0 -1
- package/dist/step-06.schema.d.ts.map +1 -1
- package/dist/step-06.schema.js +0 -2
- package/dist/step-06.schema.js.map +1 -1
- package/dist/step-07.schema.d.ts +84 -2
- package/dist/step-07.schema.d.ts.map +1 -1
- package/dist/step-07.schema.js +114 -4
- package/dist/step-07.schema.js.map +1 -1
- package/dist/step-10.schema.d.ts +3 -5
- package/dist/step-10.schema.d.ts.map +1 -1
- package/dist/step-10.schema.js +3 -7
- package/dist/step-10.schema.js.map +1 -1
- package/dist/step-11.schema.d.ts +75 -15
- package/dist/step-11.schema.d.ts.map +1 -1
- package/dist/step-11.schema.js +30 -2
- package/dist/step-11.schema.js.map +1 -1
- package/dist/step-12.schema.d.ts +434 -3
- package/dist/step-12.schema.d.ts.map +1 -1
- package/dist/step-12.schema.js +72 -3
- package/dist/step-12.schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n // 'fullName' is a synthetic key — counts as filled if ANY of\n // firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n // Level/year are inline within the parent yes/no screens — only the\n // 2 parent fields contribute to step progress (the user can complete\n // the screen by answering yes/no without filling level/year).\n 'hasContestedElection',\n 'hasHeldPublicOffice',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'desiredPoliticalPosition',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n // Class 10\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education10th.subjects',\n 'education10th.marksObtained',\n // Class 12\n 'education12th.institutionName',\n 'education12th.boardOrUniversity',\n 'education12th.yearOfPassing',\n 'education12th.courseOrStream',\n 'education12th.subjects',\n 'education12th.marksOrGrade',\n // Degree repeaters + certificates + notes\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n 'educationNotes',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'neurodevelopmentalConditions',\n 'mentalHealthConditions',\n 'personalityPatterns',\n 'neurologicalChronicConditions',\n 'ageOfRealization',\n 'sensoryProfile',\n 'cognitiveStrengths',\n 'executiveFunctionChallenges',\n 'learningStyle',\n 'communicationPreference',\n 'supportAndAccommodations',\n 'maskingAndBurnout',\n 'impactOnLife',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnLgbtqOpinion',\n 'viewOnTransgenderInclusion',\n 'viewOnTransgenderOpinion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Synthetic progress keys — keys that aren't real fields but represent\n * a group of underlying fields. Counted as \"filled\" if ANY underlying\n * field is filled. Used for UI sub-steps that collect multiple fields\n * at once (e.g. the fullName sub-step that saves firstName, middleName,\n * and lastName).\n */\nexport const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]> = {\n fullName: ['firstName', 'middleName', 'lastName'],\n} as const;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n // Synthetic keys (e.g., \"fullName\") — filled if ANY underlying field is filled.\n const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];\n if (syntheticPaths) {\n if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {\n filled++;\n }\n continue;\n }\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"progress-fields.js","sourceRoot":"","sources":["../src/progress-fields.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDP Progress Fields — Single source of truth for step progress counting.\n *\n * Used by both frontend (stepper UI) and backend (computeStepProgressCounts).\n * Each step lists the curated fields that determine filled/total progress.\n *\n * Dot-paths (e.g., \"currentAddress.state\") resolve nested subdocument fields.\n * Only these fields count toward progress — extra fields in the schema are ignored.\n */\n\nexport const UDP_PROGRESS_FIELDS: Record<number, readonly string[]> = {\n 1: [\n // 'fullName' is a synthetic key — counts as filled if ANY of\n // firstName / middleName / lastName is set. See UDP_PROGRESS_SYNTHETIC.\n 'fullName',\n 'gender',\n 'dateOfBirth',\n 'whatsappNumber',\n 'primaryLanguage',\n 'secondaryLanguages',\n 'familyReligion',\n 'personalReligion',\n 'reservationStatus',\n 'minorityStatus',\n ],\n 2: [\n 'politicalSpectrum',\n 'selfPartyAssociation',\n 'partyAssociationRole',\n 'familyPartyAssociation',\n 'relativesInPolitics',\n // Level/year are inline within the parent yes/no screens — only the\n // 2 parent fields contribute to step progress (the user can complete\n // the screen by answering yes/no without filling level/year).\n 'hasContestedElection',\n 'hasHeldPublicOffice',\n 'networkAndCivicEngagement',\n ],\n 3: [\n 'epicNumber',\n 'willVoteThisTime',\n 'didVoteLastTime',\n 'votingFrequency',\n 'primaryVotingIssues',\n ],\n 4: [\n 'participateInRevolution',\n 'leadershipSkillset',\n 'politicalExposure',\n 'comfortWithVisibility',\n 'socialInfluenceLevel',\n 'pastExperience',\n 'desiredPoliticalPosition',\n ],\n 5: ['mbtiType', 'oceanScores'],\n 6: [\n 'highestQualification',\n // Class 10\n 'education10th.board',\n 'education10th.schoolName',\n 'education10th.yearOfPassing',\n 'education10th.subjects',\n 'education10th.marksObtained',\n // Class 12\n 'education12th.institutionName',\n 'education12th.boardOrUniversity',\n 'education12th.yearOfPassing',\n 'education12th.courseOrStream',\n 'education12th.subjects',\n 'education12th.marksOrGrade',\n // Degree repeaters + certificates + notes\n 'diplomas',\n 'graduations',\n 'postGraduations',\n 'doctorates',\n 'postDoctorates',\n 'otherCertificates',\n ],\n 7: [\n 'employmentStatus',\n 'occupation',\n 'workShift',\n 'comfortableWithShift',\n 'desiredShift',\n 'incomeRange',\n 'dreamOccupation',\n ],\n 8: [\n 'neurodiverseIdentity',\n 'neurodevelopmentalConditions',\n 'mentalHealthConditions',\n 'personalityPatterns',\n 'neurologicalChronicConditions',\n 'ageOfRealization',\n 'sensoryProfile',\n 'cognitiveStrengths',\n 'executiveFunctionChallenges',\n 'learningStyle',\n 'communicationPreference',\n 'supportAndAccommodations',\n 'maskingAndBurnout',\n 'impactOnLife',\n ],\n 9: [\n 'disabilityStatus',\n 'generalHealth',\n 'healthInsurance',\n 'diet',\n 'physicalActivity',\n 'sleepQuality',\n 'substanceUse',\n 'stressLevel',\n ],\n 10: [\n 'viewOnAnimalCruelty',\n 'viewOnLgbtqStatements',\n 'viewOnTransgenderInclusion',\n 'facingCasteDiscrimination',\n 'casteDiscriminationPlaces',\n 'viewOnGenderEquality',\n ],\n 11: [\n 'currentAddress.state',\n 'currentAddress.district',\n 'currentAddress.village',\n 'permanentAddress.state',\n 'permanentAddress.district',\n 'permanentAddress.village',\n 'homeNativePlace.state',\n 'homeNativePlace.district',\n 'ancestralPlace.state',\n 'ancestralPlace.district',\n ],\n 12: [\n 'maritalStatus',\n 'familyMembers',\n // Family-link sub-steps — counted toward step-12 progress like any\n // other field. Conditional rendering means missing ones don't block\n // completion.\n 'linkedMother',\n 'linkedStepMother',\n 'linkedFather',\n 'linkedStepFather',\n 'linkedSpouses',\n 'linkedBloodSisters',\n 'linkedHalfSisters',\n 'linkedStepSisters',\n 'linkedBloodBrothers',\n 'linkedHalfBrothers',\n 'linkedStepBrothers',\n 'linkedDaughters',\n 'linkedSons',\n 'linkedOthers',\n 'numberOfDependents',\n 'housingType',\n 'householdIncome',\n 'bplCard',\n 'digitalAccess',\n 'migrationStatus',\n 'landOwnership',\n 'primaryIncomeSource',\n ],\n} as const;\n\n/** Total number of UDP steps */\nexport const UDP_TOTAL_STEPS = 12;\n\n/**\n * Synthetic progress keys — keys that aren't real fields but represent\n * a group of underlying fields. Counted as \"filled\" if ANY underlying\n * field is filled. Used for UI sub-steps that collect multiple fields\n * at once (e.g. the fullName sub-step that saves firstName, middleName,\n * and lastName).\n */\nexport const UDP_PROGRESS_SYNTHETIC: Record<string, readonly string[]> = {\n fullName: ['firstName', 'middleName', 'lastName'],\n} as const;\n\n/**\n * Resolve a dot-path (e.g., \"currentAddress.state\") against a data object.\n * Works with both plain objects and Mongoose subdocuments.\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n}\n\n/** Determine if a field value counts as \"filled\" for progress */\nexport function isFieldFilled(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (typeof value === 'number') return true;\n if (typeof value === 'boolean') return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // Area entity ref - check for name\n if ('name' in value && typeof (value as Record<string, unknown>).name === 'string') {\n return (value as Record<string, unknown>).name !== '';\n }\n return Object.keys(value).length > 0;\n }\n return false;\n}\n\n/**\n * Calculate progress for a single step.\n * Shared between frontend (stepper UI) and backend (API response).\n */\nexport function calculateStepProgress(\n stepNumber: number,\n formData: Record<string, unknown> | undefined | null,\n): { filled: number; total: number } {\n const fields = UDP_PROGRESS_FIELDS[stepNumber];\n if (!fields) return { filled: 0, total: 0 };\n\n const total = fields.length;\n if (!formData || total === 0) return { filled: 0, total };\n\n let filled = 0;\n for (const fieldPath of fields) {\n // Synthetic keys (e.g., \"fullName\") — filled if ANY underlying field is filled.\n const syntheticPaths = UDP_PROGRESS_SYNTHETIC[fieldPath];\n if (syntheticPaths) {\n if (syntheticPaths.some((p) => isFieldFilled(getNestedValue(formData, p)))) {\n filled++;\n }\n continue;\n }\n if (isFieldFilled(getNestedValue(formData, fieldPath))) {\n filled++;\n }\n }\n\n return { filled, total };\n}\n\n/**\n * Calculate overall progress across all steps.\n * Returns per-step breakdown + overall percentage.\n *\n * Mirrors dating-schema's calculateDatingOverallProgress().\n *\n * @param stepData - Map of step number → form data (e.g., { 1: {...}, 2: {...} })\n */\nexport function calculateOverallProgress(\n stepData: Record<number, Record<string, unknown> | undefined | null>,\n): {\n steps: { stepNumber: number; filled: number; total: number }[];\n totalFilled: number;\n totalFields: number;\n percent: number;\n} {\n const steps: { stepNumber: number; filled: number; total: number }[] = [];\n let totalFilled = 0;\n let totalFields = 0;\n\n for (let stepNumber = 1; stepNumber <= UDP_TOTAL_STEPS; stepNumber++) {\n const { filled, total } = calculateStepProgress(stepNumber, stepData[stepNumber]);\n steps.push({ stepNumber, filled, total });\n totalFilled += filled;\n totalFields += total;\n }\n\n const percent = totalFields > 0 ? Math.round((totalFilled / totalFields) * 100) : 0;\n\n return { steps, totalFilled, totalFields, percent };\n}\n"]}
|
package/dist/step-06.schema.d.ts
CHANGED
|
@@ -99,7 +99,6 @@ export declare const step06EducationSchema: z.ZodObject<{
|
|
|
99
99
|
yearOfCompletion: z.ZodOptional<z.ZodString>;
|
|
100
100
|
fieldOrSubject: z.ZodOptional<z.ZodString>;
|
|
101
101
|
}, z.core.$strip>>>;
|
|
102
|
-
educationNotes: z.ZodOptional<z.ZodString>;
|
|
103
102
|
}, z.core.$strip>;
|
|
104
103
|
export type DegreeEntryInput = z.infer<typeof degreeEntrySchema>;
|
|
105
104
|
export type CertificateEntryInput = z.infer<typeof certificateEntrySchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-06.schema.d.ts","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAIH,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"step-06.schema.d.ts","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgEhC,CAAC;AAIH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/step-06.schema.js
CHANGED
|
@@ -81,7 +81,5 @@ export const step06EducationSchema = z.object({
|
|
|
81
81
|
postDoctorates: z.array(degreeEntrySchema).optional(),
|
|
82
82
|
/** Other certificates, short courses, or professional qualifications */
|
|
83
83
|
otherCertificates: z.array(certificateEntrySchema).optional(),
|
|
84
|
-
/** Any additional notes about education background */
|
|
85
|
-
educationNotes: z.string().trim().optional(),
|
|
86
84
|
});
|
|
87
85
|
//# sourceMappingURL=step-06.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-06.schema.js","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"step-06.schema.js","sourceRoot":"","sources":["../src/step-06.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 06 — Education History\n *\n * KEPT from old step-07 schema. Same structure: highest qualification,\n * Class 10 & 12 details, degree repeaters, certificates, notes.\n *\n * @module udp-schema/step-06\n */\n\nimport { z } from 'zod';\nimport { optionalYearSchema } from './zod-helpers.js';\n\n// ─── Reusable sub-schemas ────────────────────────────────────────────────────\n\nexport const degreeEntrySchema = z.object({\n degreeName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n university: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n marksOrGrade: z.string().trim().optional(),\n isCurrentlyStudying: z.boolean().optional(),\n});\n\nexport const certificateEntrySchema = z.object({\n certificateName: z.string().trim().optional(),\n institutionName: z.string().trim().optional(),\n yearOfCompletion: optionalYearSchema,\n fieldOrSubject: z.string().trim().optional(),\n});\n\n// ─── Main Step 06 Schema ────────────────────────────────────────────────────\n\nexport const step06EducationSchema = z.object({\n /** Highest level of formal education completed or in progress */\n highestQualification: z\n .enum([\n 'CLASS_10',\n 'CLASS_12',\n 'DIPLOMA',\n 'GRADUATION',\n 'POST_GRAD',\n 'PHD',\n 'POST_DOCTORATE',\n 'OTHER',\n ])\n .optional(),\n\n /**\n * Class 10 / Secondary school details.\n * `board` is a string value from boardOptions (cbse / icse / state_board / ...).\n * `subjects` is a multi-select array of subject keys from subjectOptions.\n */\n education10th: z\n .object({\n board: z.string().trim().optional(),\n schoolName: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n subjects: z.array(z.string().trim()).optional(),\n marksObtained: z.string().trim().optional(),\n })\n .optional(),\n\n /**\n * Class 12 / Higher Secondary details.\n * `boardOrUniversity` is a string value from boardOptions.\n * `courseOrStream` is a string value from streamOptions.\n * `subjects` is a multi-select array of subject keys.\n */\n education12th: z\n .object({\n institutionName: z.string().trim().optional(),\n boardOrUniversity: z.string().trim().optional(),\n yearOfPassing: optionalYearSchema,\n courseOrStream: z.string().trim().optional(),\n subjects: z.array(z.string().trim()).optional(),\n marksOrGrade: z.string().trim().optional(),\n })\n .optional(),\n\n /** List of Diploma qualifications (one or more) */\n diplomas: z.array(degreeEntrySchema).optional(),\n\n /** List of Graduation / Bachelor's degree qualifications */\n graduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Graduation / Master's degree qualifications */\n postGraduations: z.array(degreeEntrySchema).optional(),\n\n /** List of Doctorate / PhD qualifications */\n doctorates: z.array(degreeEntrySchema).optional(),\n\n /** List of Post Doctoral research or fellowships */\n postDoctorates: z.array(degreeEntrySchema).optional(),\n\n /** Other certificates, short courses, or professional qualifications */\n otherCertificates: z.array(certificateEntrySchema).optional(),\n});\n\n// ─── Inferred types ──────────────────────────────────────────────────────────\n\nexport type DegreeEntryInput = z.infer<typeof degreeEntrySchema>;\nexport type CertificateEntryInput = z.infer<typeof certificateEntrySchema>;\nexport type Step06EducationInput = z.infer<typeof step06EducationSchema>;\n"]}
|
package/dist/step-07.schema.d.ts
CHANGED
|
@@ -18,7 +18,48 @@ export declare const step07EmploymentSchema: z.ZodObject<{
|
|
|
18
18
|
retired: "retired";
|
|
19
19
|
daily_wage: "daily_wage";
|
|
20
20
|
}>>;
|
|
21
|
-
occupation: z.ZodOptional<z.
|
|
21
|
+
occupation: z.ZodOptional<z.ZodEnum<{
|
|
22
|
+
other: "other";
|
|
23
|
+
prefer_not_to_say: "prefer_not_to_say";
|
|
24
|
+
self_employed: "self_employed";
|
|
25
|
+
student: "student";
|
|
26
|
+
homemaker: "homemaker";
|
|
27
|
+
retired: "retired";
|
|
28
|
+
it_software: "it_software";
|
|
29
|
+
engineering: "engineering";
|
|
30
|
+
healthcare_doctor: "healthcare_doctor";
|
|
31
|
+
healthcare_nursing: "healthcare_nursing";
|
|
32
|
+
healthcare_pharma: "healthcare_pharma";
|
|
33
|
+
psychology_therapy: "psychology_therapy";
|
|
34
|
+
education_teaching: "education_teaching";
|
|
35
|
+
science_research: "science_research";
|
|
36
|
+
finance_banking: "finance_banking";
|
|
37
|
+
chartered_accountant: "chartered_accountant";
|
|
38
|
+
business_management: "business_management";
|
|
39
|
+
arts_entertainment: "arts_entertainment";
|
|
40
|
+
media_communication: "media_communication";
|
|
41
|
+
design_creative: "design_creative";
|
|
42
|
+
civil_services: "civil_services";
|
|
43
|
+
government_public: "government_public";
|
|
44
|
+
defence_military: "defence_military";
|
|
45
|
+
police_law_enforcement: "police_law_enforcement";
|
|
46
|
+
legal: "legal";
|
|
47
|
+
skilled_trades: "skilled_trades";
|
|
48
|
+
transport_logistics: "transport_logistics";
|
|
49
|
+
hospitality_travel: "hospitality_travel";
|
|
50
|
+
beauty_wellness: "beauty_wellness";
|
|
51
|
+
agriculture_farming: "agriculture_farming";
|
|
52
|
+
real_estate: "real_estate";
|
|
53
|
+
retail_ecommerce: "retail_ecommerce";
|
|
54
|
+
manufacturing: "manufacturing";
|
|
55
|
+
merchant_navy: "merchant_navy";
|
|
56
|
+
ngo_social_work: "ngo_social_work";
|
|
57
|
+
religious_spiritual: "religious_spiritual";
|
|
58
|
+
freelancer_gig: "freelancer_gig";
|
|
59
|
+
content_creator: "content_creator";
|
|
60
|
+
not_working: "not_working";
|
|
61
|
+
differently_abled_pension: "differently_abled_pension";
|
|
62
|
+
}>>;
|
|
22
63
|
workShift: z.ZodOptional<z.ZodEnum<{
|
|
23
64
|
day_shift: "day_shift";
|
|
24
65
|
night_shift: "night_shift";
|
|
@@ -41,7 +82,48 @@ export declare const step07EmploymentSchema: z.ZodObject<{
|
|
|
41
82
|
not_applicable: "not_applicable";
|
|
42
83
|
}>>;
|
|
43
84
|
incomeRange: z.ZodOptional<z.ZodString>;
|
|
44
|
-
dreamOccupation: z.ZodOptional<z.
|
|
85
|
+
dreamOccupation: z.ZodOptional<z.ZodEnum<{
|
|
86
|
+
other: "other";
|
|
87
|
+
prefer_not_to_say: "prefer_not_to_say";
|
|
88
|
+
self_employed: "self_employed";
|
|
89
|
+
student: "student";
|
|
90
|
+
homemaker: "homemaker";
|
|
91
|
+
retired: "retired";
|
|
92
|
+
it_software: "it_software";
|
|
93
|
+
engineering: "engineering";
|
|
94
|
+
healthcare_doctor: "healthcare_doctor";
|
|
95
|
+
healthcare_nursing: "healthcare_nursing";
|
|
96
|
+
healthcare_pharma: "healthcare_pharma";
|
|
97
|
+
psychology_therapy: "psychology_therapy";
|
|
98
|
+
education_teaching: "education_teaching";
|
|
99
|
+
science_research: "science_research";
|
|
100
|
+
finance_banking: "finance_banking";
|
|
101
|
+
chartered_accountant: "chartered_accountant";
|
|
102
|
+
business_management: "business_management";
|
|
103
|
+
arts_entertainment: "arts_entertainment";
|
|
104
|
+
media_communication: "media_communication";
|
|
105
|
+
design_creative: "design_creative";
|
|
106
|
+
civil_services: "civil_services";
|
|
107
|
+
government_public: "government_public";
|
|
108
|
+
defence_military: "defence_military";
|
|
109
|
+
police_law_enforcement: "police_law_enforcement";
|
|
110
|
+
legal: "legal";
|
|
111
|
+
skilled_trades: "skilled_trades";
|
|
112
|
+
transport_logistics: "transport_logistics";
|
|
113
|
+
hospitality_travel: "hospitality_travel";
|
|
114
|
+
beauty_wellness: "beauty_wellness";
|
|
115
|
+
agriculture_farming: "agriculture_farming";
|
|
116
|
+
real_estate: "real_estate";
|
|
117
|
+
retail_ecommerce: "retail_ecommerce";
|
|
118
|
+
manufacturing: "manufacturing";
|
|
119
|
+
merchant_navy: "merchant_navy";
|
|
120
|
+
ngo_social_work: "ngo_social_work";
|
|
121
|
+
religious_spiritual: "religious_spiritual";
|
|
122
|
+
freelancer_gig: "freelancer_gig";
|
|
123
|
+
content_creator: "content_creator";
|
|
124
|
+
not_working: "not_working";
|
|
125
|
+
differently_abled_pension: "differently_abled_pension";
|
|
126
|
+
}>>;
|
|
45
127
|
}, z.core.$strip>;
|
|
46
128
|
export type Step07EmploymentInput = z.infer<typeof step07EmploymentSchema>;
|
|
47
129
|
//# sourceMappingURL=step-07.schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-07.schema.d.ts","sourceRoot":"","sources":["../src/step-07.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"step-07.schema.d.ts","sourceRoot":"","sources":["../src/step-07.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkJjC,CAAC;AAIH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
package/dist/step-07.schema.js
CHANGED
|
@@ -22,8 +22,71 @@ export const step07EmploymentSchema = z.object({
|
|
|
22
22
|
'other',
|
|
23
23
|
])
|
|
24
24
|
.optional(),
|
|
25
|
-
/**
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Occupation — exhaustive Indian profession enum, mirrored from
|
|
27
|
+
* dating-schema's `profession` field. Keep these values in sync with
|
|
28
|
+
* `occupationOptions` in profile-fields/07-employment.ts and with
|
|
29
|
+
* dating-schema's profession options.
|
|
30
|
+
*/
|
|
31
|
+
occupation: z
|
|
32
|
+
.enum([
|
|
33
|
+
// Technology
|
|
34
|
+
'it_software',
|
|
35
|
+
'engineering',
|
|
36
|
+
// Healthcare & Medicine
|
|
37
|
+
'healthcare_doctor',
|
|
38
|
+
'healthcare_nursing',
|
|
39
|
+
'healthcare_pharma',
|
|
40
|
+
'psychology_therapy',
|
|
41
|
+
// Education & Research
|
|
42
|
+
'education_teaching',
|
|
43
|
+
'science_research',
|
|
44
|
+
// Finance & Business
|
|
45
|
+
'finance_banking',
|
|
46
|
+
'chartered_accountant',
|
|
47
|
+
'business_management',
|
|
48
|
+
// Creative & Media
|
|
49
|
+
'arts_entertainment',
|
|
50
|
+
'media_communication',
|
|
51
|
+
'design_creative',
|
|
52
|
+
// Government & Public Service
|
|
53
|
+
'civil_services',
|
|
54
|
+
'government_public',
|
|
55
|
+
'defence_military',
|
|
56
|
+
'police_law_enforcement',
|
|
57
|
+
// Legal
|
|
58
|
+
'legal',
|
|
59
|
+
// Trades & Services
|
|
60
|
+
'skilled_trades',
|
|
61
|
+
'transport_logistics',
|
|
62
|
+
'hospitality_travel',
|
|
63
|
+
'beauty_wellness',
|
|
64
|
+
// Agriculture & Rural
|
|
65
|
+
'agriculture_farming',
|
|
66
|
+
// Real Estate & Construction
|
|
67
|
+
'real_estate',
|
|
68
|
+
// Retail & Commerce
|
|
69
|
+
'retail_ecommerce',
|
|
70
|
+
'manufacturing',
|
|
71
|
+
// Maritime
|
|
72
|
+
'merchant_navy',
|
|
73
|
+
// Social & NGO
|
|
74
|
+
'ngo_social_work',
|
|
75
|
+
'religious_spiritual',
|
|
76
|
+
// Independent
|
|
77
|
+
'freelancer_gig',
|
|
78
|
+
'content_creator',
|
|
79
|
+
'self_employed',
|
|
80
|
+
// Non-working
|
|
81
|
+
'student',
|
|
82
|
+
'homemaker',
|
|
83
|
+
'retired',
|
|
84
|
+
'not_working',
|
|
85
|
+
'differently_abled_pension',
|
|
86
|
+
'other',
|
|
87
|
+
'prefer_not_to_say',
|
|
88
|
+
])
|
|
89
|
+
.optional(),
|
|
27
90
|
/** Current work shift */
|
|
28
91
|
workShift: z
|
|
29
92
|
.enum(['day_shift', 'night_shift', 'rotating', 'flexible', 'work_from_home', 'not_applicable'])
|
|
@@ -36,7 +99,54 @@ export const step07EmploymentSchema = z.object({
|
|
|
36
99
|
.optional(),
|
|
37
100
|
/** Income range */
|
|
38
101
|
incomeRange: z.string().trim().optional(),
|
|
39
|
-
/**
|
|
40
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Dream occupation — same enum as `occupation` above. Answers
|
|
104
|
+
* "If you could start over, what would you do?" using the canonical
|
|
105
|
+
* profession enum so the two fields are directly comparable.
|
|
106
|
+
*/
|
|
107
|
+
dreamOccupation: z
|
|
108
|
+
.enum([
|
|
109
|
+
'it_software',
|
|
110
|
+
'engineering',
|
|
111
|
+
'healthcare_doctor',
|
|
112
|
+
'healthcare_nursing',
|
|
113
|
+
'healthcare_pharma',
|
|
114
|
+
'psychology_therapy',
|
|
115
|
+
'education_teaching',
|
|
116
|
+
'science_research',
|
|
117
|
+
'finance_banking',
|
|
118
|
+
'chartered_accountant',
|
|
119
|
+
'business_management',
|
|
120
|
+
'arts_entertainment',
|
|
121
|
+
'media_communication',
|
|
122
|
+
'design_creative',
|
|
123
|
+
'civil_services',
|
|
124
|
+
'government_public',
|
|
125
|
+
'defence_military',
|
|
126
|
+
'police_law_enforcement',
|
|
127
|
+
'legal',
|
|
128
|
+
'skilled_trades',
|
|
129
|
+
'transport_logistics',
|
|
130
|
+
'hospitality_travel',
|
|
131
|
+
'beauty_wellness',
|
|
132
|
+
'agriculture_farming',
|
|
133
|
+
'real_estate',
|
|
134
|
+
'retail_ecommerce',
|
|
135
|
+
'manufacturing',
|
|
136
|
+
'merchant_navy',
|
|
137
|
+
'ngo_social_work',
|
|
138
|
+
'religious_spiritual',
|
|
139
|
+
'freelancer_gig',
|
|
140
|
+
'content_creator',
|
|
141
|
+
'self_employed',
|
|
142
|
+
'student',
|
|
143
|
+
'homemaker',
|
|
144
|
+
'retired',
|
|
145
|
+
'not_working',
|
|
146
|
+
'differently_abled_pension',
|
|
147
|
+
'other',
|
|
148
|
+
'prefer_not_to_say',
|
|
149
|
+
])
|
|
150
|
+
.optional(),
|
|
41
151
|
});
|
|
42
152
|
//# sourceMappingURL=step-07.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-07.schema.js","sourceRoot":"","sources":["../src/step-07.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,wBAAwB;IACxB,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC;QACJ,UAAU;QACV,eAAe;QACf,YAAY;QACZ,SAAS;QACT,WAAW;QACX,SAAS;QACT,YAAY;QACZ,OAAO;KACR,CAAC;SACD,QAAQ,EAAE;IAEb
|
|
1
|
+
{"version":3,"file":"step-07.schema.js","sourceRoot":"","sources":["../src/step-07.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Step 07 — Employment & Occupation\n *\n * Fields: employmentStatus, occupation, workShift, comfortableWithShift,\n * desiredShift, incomeRange, dreamOccupation\n *\n * @module udp-schema/step-07\n */\n\nimport { z } from 'zod';\n\n// ─── Main Step 07 Schema ────────────────────────────────────────────────────\n\nexport const step07EmploymentSchema = z.object({\n /** Employment status */\n employmentStatus: z\n .enum([\n 'employed',\n 'self_employed',\n 'unemployed',\n 'student',\n 'homemaker',\n 'retired',\n 'daily_wage',\n 'other',\n ])\n .optional(),\n\n /**\n * Occupation — exhaustive Indian profession enum, mirrored from\n * dating-schema's `profession` field. Keep these values in sync with\n * `occupationOptions` in profile-fields/07-employment.ts and with\n * dating-schema's profession options.\n */\n occupation: z\n .enum([\n // Technology\n 'it_software',\n 'engineering',\n // Healthcare & Medicine\n 'healthcare_doctor',\n 'healthcare_nursing',\n 'healthcare_pharma',\n 'psychology_therapy',\n // Education & Research\n 'education_teaching',\n 'science_research',\n // Finance & Business\n 'finance_banking',\n 'chartered_accountant',\n 'business_management',\n // Creative & Media\n 'arts_entertainment',\n 'media_communication',\n 'design_creative',\n // Government & Public Service\n 'civil_services',\n 'government_public',\n 'defence_military',\n 'police_law_enforcement',\n // Legal\n 'legal',\n // Trades & Services\n 'skilled_trades',\n 'transport_logistics',\n 'hospitality_travel',\n 'beauty_wellness',\n // Agriculture & Rural\n 'agriculture_farming',\n // Real Estate & Construction\n 'real_estate',\n // Retail & Commerce\n 'retail_ecommerce',\n 'manufacturing',\n // Maritime\n 'merchant_navy',\n // Social & NGO\n 'ngo_social_work',\n 'religious_spiritual',\n // Independent\n 'freelancer_gig',\n 'content_creator',\n 'self_employed',\n // Non-working\n 'student',\n 'homemaker',\n 'retired',\n 'not_working',\n 'differently_abled_pension',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** Current work shift */\n workShift: z\n .enum(['day_shift', 'night_shift', 'rotating', 'flexible', 'work_from_home', 'not_applicable'])\n .optional(),\n\n /** Comfortable with current shift? */\n comfortableWithShift: z.enum(['yes', 'no', 'somewhat']).optional(),\n\n /** Desired shift */\n desiredShift: z\n .enum(['day_shift', 'night_shift', 'rotating', 'flexible', 'work_from_home', 'not_applicable'])\n .optional(),\n\n /** Income range */\n incomeRange: z.string().trim().optional(),\n\n /**\n * Dream occupation — same enum as `occupation` above. Answers\n * \"If you could start over, what would you do?\" using the canonical\n * profession enum so the two fields are directly comparable.\n */\n dreamOccupation: z\n .enum([\n 'it_software',\n 'engineering',\n 'healthcare_doctor',\n 'healthcare_nursing',\n 'healthcare_pharma',\n 'psychology_therapy',\n 'education_teaching',\n 'science_research',\n 'finance_banking',\n 'chartered_accountant',\n 'business_management',\n 'arts_entertainment',\n 'media_communication',\n 'design_creative',\n 'civil_services',\n 'government_public',\n 'defence_military',\n 'police_law_enforcement',\n 'legal',\n 'skilled_trades',\n 'transport_logistics',\n 'hospitality_travel',\n 'beauty_wellness',\n 'agriculture_farming',\n 'real_estate',\n 'retail_ecommerce',\n 'manufacturing',\n 'merchant_navy',\n 'ngo_social_work',\n 'religious_spiritual',\n 'freelancer_gig',\n 'content_creator',\n 'self_employed',\n 'student',\n 'homemaker',\n 'retired',\n 'not_working',\n 'differently_abled_pension',\n 'other',\n 'prefer_not_to_say',\n ])\n .optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step07EmploymentInput = z.infer<typeof step07EmploymentSchema>;\n"]}
|
package/dist/step-10.schema.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Step 10 — World View & Experience
|
|
3
3
|
*
|
|
4
|
-
* Fields: viewOnAnimalCruelty, viewOnLgbtqStatements,
|
|
5
|
-
* viewOnTransgenderInclusion,
|
|
6
|
-
*
|
|
4
|
+
* Fields: viewOnAnimalCruelty, viewOnLgbtqStatements,
|
|
5
|
+
* viewOnTransgenderInclusion, facingCasteDiscrimination,
|
|
6
|
+
* casteDiscriminationPlaces, viewOnGenderEquality
|
|
7
7
|
*
|
|
8
8
|
* @module udp-schema/step-10
|
|
9
9
|
*/
|
|
@@ -17,9 +17,7 @@ export declare const step10WorldViewSchema: z.ZodObject<{
|
|
|
17
17
|
acceptable_in_tradition: "acceptable_in_tradition";
|
|
18
18
|
}>>;
|
|
19
19
|
viewOnLgbtqStatements: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
20
|
-
viewOnLgbtqOpinion: z.ZodOptional<z.ZodString>;
|
|
21
20
|
viewOnTransgenderInclusion: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
|
-
viewOnTransgenderOpinion: z.ZodOptional<z.ZodString>;
|
|
23
21
|
facingCasteDiscrimination: z.ZodOptional<z.ZodEnum<{
|
|
24
22
|
NO: "NO";
|
|
25
23
|
YES_OFTEN: "YES_OFTEN";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-10.schema.d.ts","sourceRoot":"","sources":["../src/step-10.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"step-10.schema.d.ts","sourceRoot":"","sources":["../src/step-10.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;iBAoChC,CAAC;AAIH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/step-10.schema.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Step 10 — World View & Experience
|
|
3
3
|
*
|
|
4
|
-
* Fields: viewOnAnimalCruelty, viewOnLgbtqStatements,
|
|
5
|
-
* viewOnTransgenderInclusion,
|
|
6
|
-
*
|
|
4
|
+
* Fields: viewOnAnimalCruelty, viewOnLgbtqStatements,
|
|
5
|
+
* viewOnTransgenderInclusion, facingCasteDiscrimination,
|
|
6
|
+
* casteDiscriminationPlaces, viewOnGenderEquality
|
|
7
7
|
*
|
|
8
8
|
* @module udp-schema/step-10
|
|
9
9
|
*/
|
|
@@ -22,12 +22,8 @@ export const step10WorldViewSchema = z.object({
|
|
|
22
22
|
.optional(),
|
|
23
23
|
/** LGBTQ+ views — multi-select statements (reused from existing UDP) */
|
|
24
24
|
viewOnLgbtqStatements: z.array(z.string().trim()).optional(),
|
|
25
|
-
/** LGBTQ+ opinion — free text */
|
|
26
|
-
viewOnLgbtqOpinion: z.string().trim().max(500).optional(),
|
|
27
25
|
/** Transgender inclusion — multi-select statements (reused from existing UDP) */
|
|
28
26
|
viewOnTransgenderInclusion: z.array(z.string().trim()).optional(),
|
|
29
|
-
/** Transgender opinion — free text */
|
|
30
|
-
viewOnTransgenderOpinion: z.string().trim().max(500).optional(),
|
|
31
27
|
/** Facing caste-based discrimination */
|
|
32
28
|
facingCasteDiscrimination: z
|
|
33
29
|
.enum(['YES_OFTEN', 'YES_SOMETIMES', 'NO', 'PREFER_NOT_SAY'])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-10.schema.js","sourceRoot":"","sources":["../src/step-10.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,6BAA6B;IAC7B,mBAAmB,EAAE,CAAC;SACnB,IAAI,CAAC;QACJ,kBAAkB;QAClB,kBAAkB;QAClB,SAAS;QACT,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,wEAAwE;IACxE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE5D,
|
|
1
|
+
{"version":3,"file":"step-10.schema.js","sourceRoot":"","sources":["../src/step-10.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,6BAA6B;IAC7B,mBAAmB,EAAE,CAAC;SACnB,IAAI,CAAC;QACJ,kBAAkB;QAClB,kBAAkB;QAClB,SAAS;QACT,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;IAEb,wEAAwE;IACxE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE5D,iFAAiF;IACjF,0BAA0B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEjE,wCAAwC;IACxC,yBAAyB,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAC5D,QAAQ,EAAE;IAEb,gEAAgE;IAChE,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEhE,8BAA8B;IAC9B,oBAAoB,EAAE,CAAC;SACpB,IAAI,CAAC;QACJ,iBAAiB;QACjB,YAAY;QACZ,oBAAoB;QACpB,YAAY;QACZ,mBAAmB;KACpB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC","sourcesContent":["/**\n * Step 10 — World View & Experience\n *\n * Fields: viewOnAnimalCruelty, viewOnLgbtqStatements,\n * viewOnTransgenderInclusion, facingCasteDiscrimination,\n * casteDiscriminationPlaces, viewOnGenderEquality\n *\n * @module udp-schema/step-10\n */\n\nimport { z } from 'zod';\n\n// ─── Main Step 10 Schema ────────────────────────────────────────────────────\n\nexport const step10WorldViewSchema = z.object({\n /** View on animal cruelty */\n viewOnAnimalCruelty: z\n .enum([\n 'strongly_against',\n 'against_but_food',\n 'neutral',\n 'acceptable_in_tradition',\n 'prefer_not_to_say',\n ])\n .optional(),\n\n /** LGBTQ+ views — multi-select statements (reused from existing UDP) */\n viewOnLgbtqStatements: z.array(z.string().trim()).optional(),\n\n /** Transgender inclusion — multi-select statements (reused from existing UDP) */\n viewOnTransgenderInclusion: z.array(z.string().trim()).optional(),\n\n /** Facing caste-based discrimination */\n facingCasteDiscrimination: z\n .enum(['YES_OFTEN', 'YES_SOMETIMES', 'NO', 'PREFER_NOT_SAY'])\n .optional(),\n\n /** Places where caste discrimination is faced (multi-select) */\n casteDiscriminationPlaces: z.array(z.string().trim()).optional(),\n\n /** View on gender equality */\n viewOnGenderEquality: z\n .enum([\n 'strong_advocate',\n 'supportive',\n 'traditional_values',\n 'no_opinion',\n 'prefer_not_to_say',\n ])\n .optional(),\n});\n\n// ─── Inferred types ─────────────────────────────────────────────────────────\n\nexport type Step10WorldViewInput = z.infer<typeof step10WorldViewSchema>;\n"]}
|
package/dist/step-11.schema.d.ts
CHANGED
|
@@ -8,31 +8,91 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { z } from 'zod';
|
|
10
10
|
export declare const simplifiedAddressSchema: z.ZodObject<{
|
|
11
|
-
state: z.ZodOptional<z.ZodString
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
12
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
13
|
+
name: z.ZodString;
|
|
14
|
+
type: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>]>>>;
|
|
16
|
+
district: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
17
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
type: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strip>]>>>;
|
|
21
|
+
village: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
22
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
23
|
+
name: z.ZodString;
|
|
24
|
+
type: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>]>>>;
|
|
14
26
|
}, z.core.$strip>;
|
|
15
27
|
export declare const step11ResidenceSchema: z.ZodObject<{
|
|
16
28
|
currentAddress: z.ZodOptional<z.ZodObject<{
|
|
17
|
-
state: z.ZodOptional<z.ZodString
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
30
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
type: z.ZodOptional<z.ZodString>;
|
|
33
|
+
}, z.core.$strip>]>>>;
|
|
34
|
+
district: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
35
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
type: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>]>>>;
|
|
39
|
+
village: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
40
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
41
|
+
name: z.ZodString;
|
|
42
|
+
type: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>]>>>;
|
|
20
44
|
}, z.core.$strip>>;
|
|
21
45
|
permanentAddress: z.ZodOptional<z.ZodObject<{
|
|
22
|
-
state: z.ZodOptional<z.ZodString
|
|
23
|
-
|
|
24
|
-
|
|
46
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
47
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
48
|
+
name: z.ZodString;
|
|
49
|
+
type: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, z.core.$strip>]>>>;
|
|
51
|
+
district: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
52
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
53
|
+
name: z.ZodString;
|
|
54
|
+
type: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, z.core.$strip>]>>>;
|
|
56
|
+
village: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
57
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
type: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>]>>>;
|
|
25
61
|
sameAsCurrent: z.ZodOptional<z.ZodBoolean>;
|
|
26
62
|
}, z.core.$strip>>;
|
|
27
63
|
homeNativePlace: z.ZodOptional<z.ZodObject<{
|
|
28
|
-
state: z.ZodOptional<z.ZodString
|
|
29
|
-
|
|
30
|
-
|
|
64
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
65
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
66
|
+
name: z.ZodString;
|
|
67
|
+
type: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>]>>>;
|
|
69
|
+
district: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
70
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
71
|
+
name: z.ZodString;
|
|
72
|
+
type: z.ZodOptional<z.ZodString>;
|
|
73
|
+
}, z.core.$strip>]>>>;
|
|
74
|
+
village: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
75
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
76
|
+
name: z.ZodString;
|
|
77
|
+
type: z.ZodOptional<z.ZodString>;
|
|
78
|
+
}, z.core.$strip>]>>>;
|
|
31
79
|
}, z.core.$strip>>;
|
|
32
80
|
ancestralPlace: z.ZodOptional<z.ZodObject<{
|
|
33
|
-
state: z.ZodOptional<z.ZodString
|
|
34
|
-
|
|
35
|
-
|
|
81
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
82
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
83
|
+
name: z.ZodString;
|
|
84
|
+
type: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$strip>]>>>;
|
|
86
|
+
district: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
87
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
type: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strip>]>>>;
|
|
91
|
+
village: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
92
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
93
|
+
name: z.ZodString;
|
|
94
|
+
type: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strip>]>>>;
|
|
36
96
|
}, z.core.$strip>>;
|
|
37
97
|
}, z.core.$strip>;
|
|
38
98
|
export type SimplifiedAddressInput = z.infer<typeof simplifiedAddressSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-11.schema.d.ts","sourceRoot":"","sources":["../src/step-11.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"step-11.schema.d.ts","sourceRoot":"","sources":["../src/step-11.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmCxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;iBAOlC,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBhC,CAAC;AAIH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/step-11.schema.js
CHANGED
|
@@ -8,8 +8,36 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { z } from 'zod';
|
|
10
10
|
// ─── Address sub-schema (simplified) ─────────────────────────────────────────
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Area reference — saves BOTH the ObjectId and the display name (per the
|
|
13
|
+
* "save both id + name" architectural decision). Three accepted shapes:
|
|
14
|
+
*
|
|
15
|
+
* 1. `{ _id, name, type? }` — selected from the location-db search API
|
|
16
|
+
* via `AreaCombobox`. The canonical case: we have a real Area entity
|
|
17
|
+
* reference (`_id`) AND its display name without an extra lookup.
|
|
18
|
+
* 2. `{ name }` — free-text fallback for hyper-local names not seeded
|
|
19
|
+
* in the location DB (e.g. a specific colony / mohalla typed via
|
|
20
|
+
* the AreaCombobox `allowCreate` path). No `_id` exists to save.
|
|
21
|
+
* 3. `string` — bare ObjectId, kept for backward compatibility with any
|
|
22
|
+
* legacy records that stored a flat _id reference. New saves will
|
|
23
|
+
* always use shape #1 or #2.
|
|
24
|
+
*
|
|
25
|
+
* `null` / `undefined` mean "not set" (e.g. cascade reset when parent
|
|
26
|
+
* changes). Zod's default object behavior strips unknown keys, so any
|
|
27
|
+
* extra metadata the API returned (e.g. `location`, `urbanBodyType`) is
|
|
28
|
+
* dropped at save time — keeps stored documents clean and small.
|
|
29
|
+
*/
|
|
30
|
+
const areaRefSchema = z
|
|
31
|
+
.union([
|
|
32
|
+
z.string().trim(),
|
|
33
|
+
z.object({
|
|
34
|
+
_id: z.string().optional(),
|
|
35
|
+
name: z.string(),
|
|
36
|
+
type: z.string().optional(),
|
|
37
|
+
}),
|
|
38
|
+
])
|
|
39
|
+
.nullable()
|
|
40
|
+
.optional();
|
|
13
41
|
export const simplifiedAddressSchema = z.object({
|
|
14
42
|
/** State area ref */
|
|
15
43
|
state: areaRefSchema,
|