dating-schema 0.5.0 → 0.6.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/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/plan-limits.d.ts.map +1 -1
- package/dist/plan-limits.js.map +1 -1
- package/dist/profile-fields/01-hero-identity.d.ts.map +1 -1
- package/dist/profile-fields/01-hero-identity.js +45 -9
- package/dist/profile-fields/01-hero-identity.js.map +1 -1
- package/dist/profile-fields/03-basics.d.ts.map +1 -1
- package/dist/profile-fields/03-basics.js +45 -9
- package/dist/profile-fields/03-basics.js.map +1 -1
- package/dist/profile-fields/04-looking-for.d.ts.map +1 -1
- package/dist/profile-fields/04-looking-for.js +5 -1
- package/dist/profile-fields/04-looking-for.js.map +1 -1
- package/dist/profile-fields/05-personality.d.ts.map +1 -1
- package/dist/profile-fields/05-personality.js.map +1 -1
- package/dist/profile-fields/06-self-assessment.d.ts.map +1 -1
- package/dist/profile-fields/06-self-assessment.js.map +1 -1
- package/dist/profile-fields/07-interests.d.ts.map +1 -1
- package/dist/profile-fields/07-interests.js +20 -4
- package/dist/profile-fields/07-interests.js.map +1 -1
- package/dist/profile-fields/09-values.d.ts.map +1 -1
- package/dist/profile-fields/09-values.js +32 -8
- package/dist/profile-fields/09-values.js.map +1 -1
- package/dist/profile-fields/10-career.js +1 -1
- package/dist/profile-fields/10-career.js.map +1 -1
- package/dist/profile-fields/11-lifestyle.js +8 -8
- package/dist/profile-fields/11-lifestyle.js.map +1 -1
- package/dist/profile-fields/12-cognitive.d.ts.map +1 -1
- package/dist/profile-fields/12-cognitive.js +50 -10
- package/dist/profile-fields/12-cognitive.js.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.d.ts.map +1 -1
- package/dist/profile-fields/13-relationship-intimacy.js +65 -13
- package/dist/profile-fields/13-relationship-intimacy.js.map +1 -1
- package/dist/profile-fields/14-family-home.d.ts.map +1 -1
- package/dist/profile-fields/14-family-home.js +67 -15
- package/dist/profile-fields/14-family-home.js.map +1 -1
- package/dist/profile-fields/15-finance-legal.d.ts.map +1 -1
- package/dist/profile-fields/15-finance-legal.js +10 -2
- package/dist/profile-fields/15-finance-legal.js.map +1 -1
- package/dist/profile-fields/16-health-wellness.d.ts.map +1 -1
- package/dist/profile-fields/16-health-wellness.js +10 -2
- package/dist/profile-fields/16-health-wellness.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.map +1 -1
- package/dist/profile.d.ts +548 -0
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +1415 -264
- package/dist/profile.js.map +1 -1
- package/package.json +48 -48
package/dist/profile.js
CHANGED
|
@@ -13,568 +13,1679 @@ import { photoSchema } from './common.js';
|
|
|
13
13
|
const opts = (values) => z.enum(values);
|
|
14
14
|
// ─── 01. Hero & Identity ─────────────────────────────────────────────────────
|
|
15
15
|
const genderOpts = opts([
|
|
16
|
-
'man',
|
|
17
|
-
'
|
|
16
|
+
'man',
|
|
17
|
+
'woman',
|
|
18
|
+
'non_binary',
|
|
19
|
+
'trans_man',
|
|
20
|
+
'trans_woman',
|
|
21
|
+
'genderfluid',
|
|
22
|
+
'genderqueer',
|
|
23
|
+
'agender',
|
|
24
|
+
'two_spirit',
|
|
25
|
+
'other',
|
|
26
|
+
'prefer_not_to_say',
|
|
18
27
|
]);
|
|
19
28
|
const pronounsOpts = opts([
|
|
20
|
-
'he_him',
|
|
29
|
+
'he_him',
|
|
30
|
+
'she_her',
|
|
31
|
+
'they_them',
|
|
32
|
+
'ze_zir',
|
|
33
|
+
'xe_xem',
|
|
34
|
+
'other',
|
|
35
|
+
'prefer_not_to_say',
|
|
21
36
|
]);
|
|
22
37
|
const relationshipIntentOpts = opts([
|
|
23
|
-
'life_partner',
|
|
24
|
-
'
|
|
38
|
+
'life_partner',
|
|
39
|
+
'long_term',
|
|
40
|
+
'long_term_open_to_short',
|
|
41
|
+
'short_term_open_to_long',
|
|
42
|
+
'short_term_fun',
|
|
43
|
+
'new_friends',
|
|
44
|
+
'figuring_out',
|
|
25
45
|
]);
|
|
26
46
|
const sexualOrientationOpts = opts([
|
|
27
|
-
'straight',
|
|
28
|
-
'
|
|
47
|
+
'straight',
|
|
48
|
+
'gay',
|
|
49
|
+
'lesbian',
|
|
50
|
+
'bisexual',
|
|
51
|
+
'pansexual',
|
|
52
|
+
'asexual',
|
|
53
|
+
'demisexual',
|
|
54
|
+
'queer',
|
|
55
|
+
'questioning',
|
|
56
|
+
'homoflexible',
|
|
57
|
+
'heteroflexible',
|
|
58
|
+
'sapiosexual',
|
|
59
|
+
'prefer_not_to_say',
|
|
29
60
|
]);
|
|
30
61
|
const relationshipStructureOpts = opts([
|
|
31
|
-
'monogamy',
|
|
32
|
-
'
|
|
62
|
+
'monogamy',
|
|
63
|
+
'ethical_non_monogamy',
|
|
64
|
+
'open_relationship',
|
|
65
|
+
'polyamory',
|
|
66
|
+
'open_to_exploring',
|
|
67
|
+
'figuring_out',
|
|
68
|
+
'prefer_not_to_say',
|
|
33
69
|
]);
|
|
34
70
|
const mbtiTypeOpts = opts([
|
|
35
|
-
'INTJ',
|
|
36
|
-
'
|
|
37
|
-
'
|
|
71
|
+
'INTJ',
|
|
72
|
+
'INTP',
|
|
73
|
+
'ENTJ',
|
|
74
|
+
'ENTP',
|
|
75
|
+
'INFJ',
|
|
76
|
+
'INFP',
|
|
77
|
+
'ENFJ',
|
|
78
|
+
'ENFP',
|
|
79
|
+
'ISTJ',
|
|
80
|
+
'ISFJ',
|
|
81
|
+
'ESTJ',
|
|
82
|
+
'ESFJ',
|
|
83
|
+
'ISTP',
|
|
84
|
+
'ISFP',
|
|
85
|
+
'ESTP',
|
|
86
|
+
'ESFP',
|
|
87
|
+
'dont_know',
|
|
88
|
+
'prefer_not_to_say',
|
|
38
89
|
]);
|
|
39
90
|
// ─── 02. Story & Prompts ─────────────────────────────────────────────────────
|
|
40
91
|
const selfKeywordsOpts = opts([
|
|
41
|
-
'creative',
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
-
'
|
|
92
|
+
'creative',
|
|
93
|
+
'loyal',
|
|
94
|
+
'ambitious',
|
|
95
|
+
'empathetic',
|
|
96
|
+
'funny',
|
|
97
|
+
'adventurous',
|
|
98
|
+
'introverted',
|
|
99
|
+
'extroverted',
|
|
100
|
+
'thoughtful',
|
|
101
|
+
'independent',
|
|
102
|
+
'caring',
|
|
103
|
+
'curious',
|
|
104
|
+
'passionate',
|
|
105
|
+
'resilient',
|
|
106
|
+
'honest',
|
|
107
|
+
'spontaneous',
|
|
108
|
+
'reliable',
|
|
109
|
+
'overthinking',
|
|
110
|
+
'stubborn',
|
|
111
|
+
'emotional',
|
|
112
|
+
'logical',
|
|
113
|
+
'spiritual',
|
|
114
|
+
'grounded',
|
|
115
|
+
'dreamer',
|
|
116
|
+
'perfectionist',
|
|
117
|
+
'easygoing',
|
|
118
|
+
'intense',
|
|
119
|
+
'optimistic',
|
|
120
|
+
'realistic',
|
|
121
|
+
'nerdy',
|
|
46
122
|
]);
|
|
47
123
|
// othersKeywords uses the same option set
|
|
48
124
|
const othersKeywordsOpts = selfKeywordsOpts;
|
|
49
125
|
// ─── 03. Basics & Deal-Breakers ──────────────────────────────────────────────
|
|
50
126
|
const heightOpts = opts([
|
|
51
|
-
'under_150',
|
|
52
|
-
'
|
|
127
|
+
'under_150',
|
|
128
|
+
'150_155',
|
|
129
|
+
'155_160',
|
|
130
|
+
'160_165',
|
|
131
|
+
'165_170',
|
|
132
|
+
'170_175',
|
|
133
|
+
'175_180',
|
|
134
|
+
'180_185',
|
|
135
|
+
'185_190',
|
|
136
|
+
'over_190',
|
|
137
|
+
'prefer_not_to_say',
|
|
53
138
|
]);
|
|
54
139
|
const bodyBuildOpts = opts([
|
|
55
|
-
'slim',
|
|
140
|
+
'slim',
|
|
141
|
+
'athletic',
|
|
142
|
+
'average',
|
|
143
|
+
'curvy',
|
|
144
|
+
'heavy',
|
|
145
|
+
'prefer_not_to_say',
|
|
56
146
|
]);
|
|
57
147
|
const religionOpts = opts([
|
|
58
|
-
'hindu',
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
148
|
+
'hindu',
|
|
149
|
+
'muslim_sunni',
|
|
150
|
+
'muslim_shia',
|
|
151
|
+
'muslim_other',
|
|
152
|
+
'christian_catholic',
|
|
153
|
+
'christian_protestant',
|
|
154
|
+
'christian_other',
|
|
155
|
+
'sikh',
|
|
156
|
+
'jain_digambar',
|
|
157
|
+
'jain_shwetambar',
|
|
158
|
+
'buddhist',
|
|
159
|
+
'parsi',
|
|
160
|
+
'jewish',
|
|
161
|
+
'bahai',
|
|
162
|
+
'spiritual',
|
|
163
|
+
'atheist',
|
|
164
|
+
'agnostic',
|
|
165
|
+
'inter_religion',
|
|
166
|
+
'other',
|
|
167
|
+
'prefer_not_to_say',
|
|
63
168
|
]);
|
|
64
169
|
const religionPracticeLevelOpts = opts([
|
|
65
|
-
'devout',
|
|
170
|
+
'devout',
|
|
171
|
+
'weekly',
|
|
172
|
+
'occasional',
|
|
173
|
+
'spiritual_private',
|
|
174
|
+
'secular',
|
|
66
175
|
]);
|
|
67
176
|
const religionPartnerPreferenceOpts = opts([
|
|
68
|
-
'very_important',
|
|
177
|
+
'very_important',
|
|
178
|
+
'somewhat_important',
|
|
179
|
+
'not_important',
|
|
180
|
+
'prefer_not_to_say',
|
|
69
181
|
]);
|
|
70
182
|
const culturalImportanceOpts = opts([
|
|
71
|
-
'very_important',
|
|
183
|
+
'very_important',
|
|
184
|
+
'somewhat_important',
|
|
185
|
+
'not_important',
|
|
186
|
+
'prefer_not_to_say',
|
|
72
187
|
]);
|
|
73
188
|
const manglikStatusOpts = opts([
|
|
74
|
-
'manglik',
|
|
189
|
+
'manglik',
|
|
190
|
+
'partial_manglik',
|
|
191
|
+
'non_manglik',
|
|
192
|
+
'dont_know',
|
|
193
|
+
'prefer_not_to_say',
|
|
75
194
|
]);
|
|
76
195
|
const motherTongueOpts = opts([
|
|
77
|
-
'hindi',
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
'
|
|
196
|
+
'hindi',
|
|
197
|
+
'english',
|
|
198
|
+
'bengali',
|
|
199
|
+
'telugu',
|
|
200
|
+
'marathi',
|
|
201
|
+
'tamil',
|
|
202
|
+
'urdu',
|
|
203
|
+
'gujarati',
|
|
204
|
+
'kannada',
|
|
205
|
+
'odia',
|
|
206
|
+
'malayalam',
|
|
207
|
+
'punjabi',
|
|
208
|
+
'assamese',
|
|
209
|
+
'maithili',
|
|
210
|
+
'sanskrit',
|
|
211
|
+
'sindhi',
|
|
212
|
+
'kashmiri',
|
|
213
|
+
'nepali',
|
|
214
|
+
'konkani',
|
|
215
|
+
'dogri',
|
|
216
|
+
'manipuri',
|
|
217
|
+
'bodo',
|
|
218
|
+
'santali',
|
|
219
|
+
'other',
|
|
81
220
|
]);
|
|
82
221
|
const languagesSpokenOpts = opts([
|
|
83
|
-
'hindi',
|
|
84
|
-
'
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
'
|
|
222
|
+
'hindi',
|
|
223
|
+
'english',
|
|
224
|
+
'bengali',
|
|
225
|
+
'telugu',
|
|
226
|
+
'marathi',
|
|
227
|
+
'tamil',
|
|
228
|
+
'urdu',
|
|
229
|
+
'gujarati',
|
|
230
|
+
'kannada',
|
|
231
|
+
'odia',
|
|
232
|
+
'malayalam',
|
|
233
|
+
'punjabi',
|
|
234
|
+
'assamese',
|
|
235
|
+
'maithili',
|
|
236
|
+
'sanskrit',
|
|
237
|
+
'sindhi',
|
|
238
|
+
'kashmiri',
|
|
239
|
+
'nepali',
|
|
240
|
+
'konkani',
|
|
241
|
+
'dogri',
|
|
242
|
+
'manipuri',
|
|
243
|
+
'bodo',
|
|
244
|
+
'santali',
|
|
245
|
+
'other',
|
|
246
|
+
'spanish',
|
|
247
|
+
'french',
|
|
248
|
+
'german',
|
|
249
|
+
'mandarin',
|
|
250
|
+
'japanese',
|
|
251
|
+
'korean',
|
|
252
|
+
'arabic',
|
|
253
|
+
'portuguese',
|
|
254
|
+
'russian',
|
|
255
|
+
'italian',
|
|
89
256
|
]);
|
|
90
257
|
const educationLevelOpts = opts([
|
|
91
|
-
'high_school',
|
|
92
|
-
'
|
|
258
|
+
'high_school',
|
|
259
|
+
'diploma',
|
|
260
|
+
'bachelors',
|
|
261
|
+
'masters',
|
|
262
|
+
'doctorate',
|
|
263
|
+
'professional',
|
|
264
|
+
'in_college',
|
|
265
|
+
'in_grad_school',
|
|
266
|
+
'prefer_not_to_say',
|
|
93
267
|
]);
|
|
94
268
|
const institutionTierOpts = opts([
|
|
95
|
-
'tier1_elite',
|
|
269
|
+
'tier1_elite',
|
|
270
|
+
'tier2_reputed',
|
|
271
|
+
'tier3_regional',
|
|
272
|
+
'open_distance',
|
|
273
|
+
'prefer_not_to_say',
|
|
96
274
|
]);
|
|
97
275
|
const professionOpts = opts([
|
|
98
|
-
'it_software',
|
|
99
|
-
'
|
|
100
|
-
'
|
|
101
|
-
'
|
|
102
|
-
'
|
|
276
|
+
'it_software',
|
|
277
|
+
'engineering',
|
|
278
|
+
'healthcare',
|
|
279
|
+
'education',
|
|
280
|
+
'finance_accounting',
|
|
281
|
+
'arts_entertainment',
|
|
282
|
+
'media_communication',
|
|
283
|
+
'business_management',
|
|
284
|
+
'government_public',
|
|
285
|
+
'legal',
|
|
286
|
+
'science_research',
|
|
287
|
+
'agriculture',
|
|
288
|
+
'hospitality_travel',
|
|
289
|
+
'real_estate',
|
|
290
|
+
'retail_ecommerce',
|
|
291
|
+
'manufacturing',
|
|
292
|
+
'self_employed',
|
|
293
|
+
'student',
|
|
294
|
+
'homemaker',
|
|
295
|
+
'not_working',
|
|
296
|
+
'other',
|
|
297
|
+
'prefer_not_to_say',
|
|
103
298
|
]);
|
|
104
299
|
const relationshipStatusOpts = opts([
|
|
105
|
-
'single',
|
|
106
|
-
'
|
|
300
|
+
'single',
|
|
301
|
+
'dating',
|
|
302
|
+
'separated',
|
|
303
|
+
'divorced',
|
|
304
|
+
'widowed',
|
|
305
|
+
'enm',
|
|
306
|
+
'its_complicated',
|
|
307
|
+
'prefer_not_to_say',
|
|
107
308
|
]);
|
|
108
309
|
const dietOpts = opts([
|
|
109
|
-
'vegetarian',
|
|
110
|
-
'
|
|
111
|
-
'
|
|
310
|
+
'vegetarian',
|
|
311
|
+
'vegan',
|
|
312
|
+
'eggetarian',
|
|
313
|
+
'non_vegetarian',
|
|
314
|
+
'pescatarian',
|
|
315
|
+
'occasionally_non_veg',
|
|
316
|
+
'flexitarian',
|
|
317
|
+
'jain',
|
|
318
|
+
'halal',
|
|
319
|
+
'kosher',
|
|
320
|
+
'other',
|
|
321
|
+
'prefer_not_to_say',
|
|
112
322
|
]);
|
|
113
323
|
const smokingOpts = opts([
|
|
114
|
-
'never',
|
|
324
|
+
'never',
|
|
325
|
+
'socially',
|
|
326
|
+
'when_drinking',
|
|
327
|
+
'regularly',
|
|
328
|
+
'trying_to_quit',
|
|
329
|
+
'prefer_not_to_say',
|
|
115
330
|
]);
|
|
116
331
|
const alcoholOpts = opts([
|
|
117
|
-
'never',
|
|
332
|
+
'never',
|
|
333
|
+
'sober',
|
|
334
|
+
'rarely',
|
|
335
|
+
'socially',
|
|
336
|
+
'on_special_occasions',
|
|
337
|
+
'regularly',
|
|
338
|
+
'prefer_not_to_say',
|
|
118
339
|
]);
|
|
119
340
|
const cannabisOpts = opts([
|
|
120
|
-
'never',
|
|
341
|
+
'never',
|
|
342
|
+
'socially',
|
|
343
|
+
'regularly',
|
|
344
|
+
'medical_only',
|
|
345
|
+
'420_friendly',
|
|
346
|
+
'prefer_not_to_say',
|
|
121
347
|
]);
|
|
122
348
|
const childrenPlansOpts = opts([
|
|
123
|
-
'want_children',
|
|
124
|
-
'
|
|
349
|
+
'want_children',
|
|
350
|
+
'dont_want',
|
|
351
|
+
'open_undecided',
|
|
352
|
+
'have_and_want_more',
|
|
353
|
+
'have_and_done',
|
|
354
|
+
'not_sure',
|
|
355
|
+
'prefer_not_to_say',
|
|
125
356
|
]);
|
|
126
357
|
const lookingForEntrepreneurOpts = opts([
|
|
127
|
-
'yes',
|
|
358
|
+
'yes',
|
|
359
|
+
'prefer',
|
|
360
|
+
'dont_care',
|
|
361
|
+
'prefer_not_to_say',
|
|
362
|
+
]);
|
|
363
|
+
const nakshatraOpts = opts([
|
|
364
|
+
'ashwini',
|
|
365
|
+
'bharani',
|
|
366
|
+
'krittika',
|
|
367
|
+
'rohini',
|
|
368
|
+
'mrigashira',
|
|
369
|
+
'ardra',
|
|
370
|
+
'punarvasu',
|
|
371
|
+
'pushya',
|
|
372
|
+
'ashlesha',
|
|
373
|
+
'magha',
|
|
374
|
+
'purva_phalguni',
|
|
375
|
+
'uttara_phalguni',
|
|
376
|
+
'hasta',
|
|
377
|
+
'chitra',
|
|
378
|
+
'swati',
|
|
379
|
+
'vishakha',
|
|
380
|
+
'anuradha',
|
|
381
|
+
'jyeshtha',
|
|
382
|
+
'moola',
|
|
383
|
+
'purva_ashadha',
|
|
384
|
+
'uttara_ashadha',
|
|
385
|
+
'shravana',
|
|
386
|
+
'dhanishta',
|
|
387
|
+
'shatabhisha',
|
|
388
|
+
'purva_bhadrapada',
|
|
389
|
+
'uttara_bhadrapada',
|
|
390
|
+
'revati',
|
|
391
|
+
'dont_know',
|
|
392
|
+
'prefer_not_to_say',
|
|
393
|
+
]);
|
|
394
|
+
const rashiOpts = opts([
|
|
395
|
+
'mesha',
|
|
396
|
+
'vrishabha',
|
|
397
|
+
'mithuna',
|
|
398
|
+
'karka',
|
|
399
|
+
'simha',
|
|
400
|
+
'kanya',
|
|
401
|
+
'tula',
|
|
402
|
+
'vrischika',
|
|
403
|
+
'dhanu',
|
|
404
|
+
'makara',
|
|
405
|
+
'kumbha',
|
|
406
|
+
'meena',
|
|
407
|
+
'dont_know',
|
|
408
|
+
'prefer_not_to_say',
|
|
409
|
+
]);
|
|
410
|
+
const hometownStateOpts = opts([
|
|
411
|
+
'andhra_pradesh',
|
|
412
|
+
'arunachal_pradesh',
|
|
413
|
+
'assam',
|
|
414
|
+
'bihar',
|
|
415
|
+
'chhattisgarh',
|
|
416
|
+
'goa',
|
|
417
|
+
'gujarat',
|
|
418
|
+
'haryana',
|
|
419
|
+
'himachal_pradesh',
|
|
420
|
+
'jharkhand',
|
|
421
|
+
'karnataka',
|
|
422
|
+
'kerala',
|
|
423
|
+
'madhya_pradesh',
|
|
424
|
+
'maharashtra',
|
|
425
|
+
'manipur',
|
|
426
|
+
'meghalaya',
|
|
427
|
+
'mizoram',
|
|
428
|
+
'nagaland',
|
|
429
|
+
'odisha',
|
|
430
|
+
'punjab',
|
|
431
|
+
'rajasthan',
|
|
432
|
+
'sikkim',
|
|
433
|
+
'tamil_nadu',
|
|
434
|
+
'telangana',
|
|
435
|
+
'tripura',
|
|
436
|
+
'uttar_pradesh',
|
|
437
|
+
'uttarakhand',
|
|
438
|
+
'west_bengal',
|
|
439
|
+
'delhi',
|
|
440
|
+
'jammu_kashmir',
|
|
441
|
+
'ladakh',
|
|
442
|
+
'chandigarh',
|
|
443
|
+
'puducherry',
|
|
444
|
+
'andaman_nicobar',
|
|
445
|
+
'dadra_nagar_haveli',
|
|
446
|
+
'lakshadweep',
|
|
447
|
+
'international',
|
|
448
|
+
'prefer_not_to_say',
|
|
128
449
|
]);
|
|
129
450
|
// ─── 04. What I'm Looking For ────────────────────────────────────────────────
|
|
130
451
|
const relationshipRoleOpts = opts([
|
|
131
|
-
'mentor',
|
|
132
|
-
'
|
|
452
|
+
'mentor',
|
|
453
|
+
'mentee',
|
|
454
|
+
'equal_partner',
|
|
455
|
+
'protector',
|
|
456
|
+
'nurturer',
|
|
457
|
+
'provider',
|
|
458
|
+
'companion',
|
|
459
|
+
'challenger',
|
|
460
|
+
'cheerleader',
|
|
461
|
+
'wise_partner',
|
|
462
|
+
'prefer_not_to_say',
|
|
133
463
|
]);
|
|
134
464
|
const sugarDaddyMommyOpts = opts([
|
|
135
|
-
'looking_for_sugar_daddy',
|
|
136
|
-
'
|
|
465
|
+
'looking_for_sugar_daddy',
|
|
466
|
+
'looking_for_sugar_mommy',
|
|
467
|
+
'am_sugar_daddy',
|
|
468
|
+
'am_sugar_mommy',
|
|
469
|
+
'open_to_it',
|
|
470
|
+
'not_interested',
|
|
471
|
+
'prefer_not_to_say',
|
|
137
472
|
]);
|
|
138
473
|
const dealbreakersOpts = opts([
|
|
139
|
-
'smoking',
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
474
|
+
'smoking',
|
|
475
|
+
'heavy_drinking',
|
|
476
|
+
'drug_use',
|
|
477
|
+
'no_ambition',
|
|
478
|
+
'dishonesty',
|
|
479
|
+
'poor_hygiene',
|
|
480
|
+
'different_religion',
|
|
481
|
+
'different_politics',
|
|
482
|
+
'no_kids_ever',
|
|
483
|
+
'already_has_kids',
|
|
484
|
+
'long_distance',
|
|
485
|
+
'non_monogamy',
|
|
486
|
+
'no_job',
|
|
487
|
+
'excessive_gaming',
|
|
488
|
+
'no_sense_of_humor',
|
|
489
|
+
'poor_communication',
|
|
490
|
+
'clingy',
|
|
491
|
+
'emotionally_unavailable',
|
|
492
|
+
'prefer_not_to_say',
|
|
144
493
|
]);
|
|
145
494
|
// ─── 05. Personality & Temperament ───────────────────────────────────────────
|
|
146
495
|
const enneagramTypeOpts = opts([
|
|
147
|
-
'type_1',
|
|
148
|
-
'
|
|
496
|
+
'type_1',
|
|
497
|
+
'type_2',
|
|
498
|
+
'type_3',
|
|
499
|
+
'type_4',
|
|
500
|
+
'type_5',
|
|
501
|
+
'type_6',
|
|
502
|
+
'type_7',
|
|
503
|
+
'type_8',
|
|
504
|
+
'type_9',
|
|
505
|
+
'dont_know',
|
|
506
|
+
'prefer_not_to_say',
|
|
149
507
|
]);
|
|
150
508
|
const attachmentStyleOpts = opts([
|
|
151
|
-
'secure',
|
|
509
|
+
'secure',
|
|
510
|
+
'anxious',
|
|
511
|
+
'avoidant',
|
|
512
|
+
'fearful_avoidant',
|
|
513
|
+
'still_figuring_out',
|
|
514
|
+
'prefer_not_to_say',
|
|
152
515
|
]);
|
|
153
516
|
const humourStyleOpts = opts([
|
|
154
|
-
'witty',
|
|
155
|
-
'
|
|
517
|
+
'witty',
|
|
518
|
+
'sarcastic',
|
|
519
|
+
'dry',
|
|
520
|
+
'goofy',
|
|
521
|
+
'dark',
|
|
522
|
+
'dad_jokes',
|
|
523
|
+
'self_deprecating',
|
|
524
|
+
'observational',
|
|
525
|
+
'punny',
|
|
526
|
+
'does_not_apply',
|
|
156
527
|
]);
|
|
157
528
|
const relationshipPaceOpts = opts([
|
|
158
|
-
'slow',
|
|
529
|
+
'slow',
|
|
530
|
+
'steady',
|
|
531
|
+
'fast',
|
|
532
|
+
'go_with_flow',
|
|
533
|
+
'prefer_not_to_say',
|
|
159
534
|
]);
|
|
160
535
|
const communicationStyleOpts = opts([
|
|
161
|
-
'big_texter',
|
|
162
|
-
'
|
|
536
|
+
'big_texter',
|
|
537
|
+
'phone_caller',
|
|
538
|
+
'voice_note_lover',
|
|
539
|
+
'send_memes',
|
|
540
|
+
'better_in_person',
|
|
541
|
+
'slow_replier',
|
|
542
|
+
'prefer_not_to_say',
|
|
163
543
|
]);
|
|
164
544
|
const scientificTemperOpts = opts([
|
|
165
|
-
'strongly_scientific',
|
|
166
|
-
'
|
|
545
|
+
'strongly_scientific',
|
|
546
|
+
'mostly_scientific',
|
|
547
|
+
'balanced',
|
|
548
|
+
'mostly_intuitive',
|
|
549
|
+
'strongly_intuitive',
|
|
550
|
+
'prefer_not_to_say',
|
|
167
551
|
]);
|
|
168
552
|
const outlookOnLifeOpts = opts([
|
|
169
|
-
'optimist',
|
|
553
|
+
'optimist',
|
|
554
|
+
'realist',
|
|
555
|
+
'pessimist',
|
|
556
|
+
'idealist',
|
|
557
|
+
'pragmatist',
|
|
558
|
+
'absurdist',
|
|
559
|
+
'prefer_not_to_say',
|
|
170
560
|
]);
|
|
171
561
|
const socialBatteryOpts = opts([
|
|
172
|
-
'always_on',
|
|
562
|
+
'always_on',
|
|
563
|
+
'mostly_social',
|
|
564
|
+
'balanced',
|
|
565
|
+
'mostly_solo',
|
|
566
|
+
'hermit',
|
|
567
|
+
'prefer_not_to_say',
|
|
173
568
|
]);
|
|
174
569
|
// ─── 07. Interests & Hobbies ─────────────────────────────────────────────────
|
|
175
570
|
const hobbiesOpts = opts([
|
|
176
|
-
'reading',
|
|
177
|
-
'
|
|
178
|
-
'
|
|
179
|
-
'
|
|
180
|
-
'
|
|
181
|
-
'
|
|
182
|
-
'
|
|
183
|
-
'
|
|
184
|
-
'
|
|
571
|
+
'reading',
|
|
572
|
+
'writing',
|
|
573
|
+
'cooking',
|
|
574
|
+
'baking',
|
|
575
|
+
'photography',
|
|
576
|
+
'painting',
|
|
577
|
+
'drawing',
|
|
578
|
+
'hiking',
|
|
579
|
+
'camping',
|
|
580
|
+
'cycling',
|
|
581
|
+
'running',
|
|
582
|
+
'yoga',
|
|
583
|
+
'meditation',
|
|
584
|
+
'dancing',
|
|
585
|
+
'singing',
|
|
586
|
+
'playing_instrument',
|
|
587
|
+
'gardening',
|
|
588
|
+
'gaming',
|
|
589
|
+
'board_games',
|
|
590
|
+
'traveling',
|
|
591
|
+
'swimming',
|
|
592
|
+
'gym',
|
|
593
|
+
'martial_arts',
|
|
594
|
+
'rock_climbing',
|
|
595
|
+
'surfing',
|
|
596
|
+
'skiing',
|
|
597
|
+
'fishing',
|
|
598
|
+
'bird_watching',
|
|
599
|
+
'volunteering',
|
|
600
|
+
'crafts',
|
|
601
|
+
'pottery',
|
|
602
|
+
'knitting',
|
|
603
|
+
'woodworking',
|
|
604
|
+
'diy',
|
|
605
|
+
'podcasts',
|
|
606
|
+
'movies',
|
|
607
|
+
'anime',
|
|
608
|
+
'theater',
|
|
609
|
+
'stand_up_comedy',
|
|
610
|
+
'karaoke',
|
|
611
|
+
'wine_tasting',
|
|
612
|
+
'coffee',
|
|
613
|
+
'tea',
|
|
614
|
+
'blogging',
|
|
615
|
+
'vlogging',
|
|
616
|
+
'coding',
|
|
617
|
+
'investing',
|
|
618
|
+
'astrology_hobby',
|
|
619
|
+
'tarot',
|
|
620
|
+
'spirituality_practice',
|
|
621
|
+
'pet_care',
|
|
622
|
+
'horse_riding',
|
|
623
|
+
'scuba_diving',
|
|
624
|
+
'skateboarding',
|
|
625
|
+
'bowling',
|
|
626
|
+
'archery',
|
|
627
|
+
'other',
|
|
185
628
|
]);
|
|
186
629
|
const musicGenresOpts = opts([
|
|
187
|
-
'pop',
|
|
188
|
-
'
|
|
189
|
-
'
|
|
190
|
-
'
|
|
630
|
+
'pop',
|
|
631
|
+
'rock',
|
|
632
|
+
'hip_hop',
|
|
633
|
+
'rnb',
|
|
634
|
+
'jazz',
|
|
635
|
+
'classical',
|
|
636
|
+
'electronic',
|
|
637
|
+
'edm',
|
|
638
|
+
'country',
|
|
639
|
+
'folk',
|
|
640
|
+
'indie',
|
|
641
|
+
'metal',
|
|
642
|
+
'punk',
|
|
643
|
+
'reggae',
|
|
644
|
+
'latin',
|
|
645
|
+
'kpop',
|
|
646
|
+
'bollywood',
|
|
647
|
+
'sufi',
|
|
648
|
+
'ghazal',
|
|
649
|
+
'carnatic',
|
|
650
|
+
'hindustani_classical',
|
|
651
|
+
'devotional',
|
|
652
|
+
'lofi',
|
|
653
|
+
'ambient',
|
|
654
|
+
'other',
|
|
191
655
|
]);
|
|
192
656
|
const gamingInterestOpts = opts([
|
|
193
|
-
'hardcore',
|
|
194
|
-
'
|
|
657
|
+
'hardcore',
|
|
658
|
+
'casual',
|
|
659
|
+
'mobile_only',
|
|
660
|
+
'board_tabletop',
|
|
661
|
+
'retro',
|
|
662
|
+
'not_a_gamer',
|
|
663
|
+
'prefer_not_to_say',
|
|
195
664
|
]);
|
|
196
665
|
const readingHabitOpts = opts([
|
|
197
|
-
'voracious',
|
|
198
|
-
'
|
|
666
|
+
'voracious',
|
|
667
|
+
'regular',
|
|
668
|
+
'occasional',
|
|
669
|
+
'audiobooks',
|
|
670
|
+
'articles_only',
|
|
671
|
+
'not_a_reader',
|
|
672
|
+
'prefer_not_to_say',
|
|
199
673
|
]);
|
|
200
674
|
const artApreciationOpts = opts([
|
|
201
|
-
'creator',
|
|
675
|
+
'creator',
|
|
676
|
+
'hobbyist',
|
|
677
|
+
'appreciator',
|
|
678
|
+
'casual',
|
|
679
|
+
'not_into_art',
|
|
680
|
+
'prefer_not_to_say',
|
|
202
681
|
]);
|
|
203
682
|
const eventPreferenceOpts = opts([
|
|
204
|
-
'concerts',
|
|
205
|
-
'
|
|
206
|
-
'
|
|
207
|
-
'
|
|
683
|
+
'concerts',
|
|
684
|
+
'festivals',
|
|
685
|
+
'sports_events',
|
|
686
|
+
'comedy_shows',
|
|
687
|
+
'theater_plays',
|
|
688
|
+
'art_exhibitions',
|
|
689
|
+
'food_festivals',
|
|
690
|
+
'book_readings',
|
|
691
|
+
'hackathons',
|
|
692
|
+
'spiritual_gatherings',
|
|
693
|
+
'house_parties',
|
|
694
|
+
'club_nights',
|
|
695
|
+
'outdoor_adventures',
|
|
696
|
+
'workshops',
|
|
697
|
+
'prefer_not_to_say',
|
|
208
698
|
]);
|
|
209
699
|
const riskAppetiteOpts = opts([
|
|
210
|
-
'thrill_seeker',
|
|
700
|
+
'thrill_seeker',
|
|
701
|
+
'adventurous',
|
|
702
|
+
'moderate',
|
|
703
|
+
'cautious',
|
|
704
|
+
'risk_averse',
|
|
705
|
+
'prefer_not_to_say',
|
|
211
706
|
]);
|
|
212
707
|
const volunteerInterestOpts = opts([
|
|
213
|
-
'environment',
|
|
214
|
-
'
|
|
215
|
-
'
|
|
708
|
+
'environment',
|
|
709
|
+
'animal_welfare',
|
|
710
|
+
'education_literacy',
|
|
711
|
+
'poverty',
|
|
712
|
+
'health',
|
|
713
|
+
'mental_health',
|
|
714
|
+
'gender_equality',
|
|
715
|
+
'lgbtq_rights',
|
|
716
|
+
'disability',
|
|
717
|
+
'children',
|
|
718
|
+
'elderly',
|
|
719
|
+
'disaster_relief',
|
|
720
|
+
'human_rights',
|
|
721
|
+
'tech_for_good',
|
|
722
|
+
'none',
|
|
723
|
+
'prefer_not_to_say',
|
|
216
724
|
]);
|
|
217
725
|
const socialCircleSizeOpts = opts([
|
|
218
|
-
'small',
|
|
726
|
+
'small',
|
|
727
|
+
'medium',
|
|
728
|
+
'large',
|
|
729
|
+
'mostly_solo',
|
|
730
|
+
'prefer_not_to_say',
|
|
219
731
|
]);
|
|
220
732
|
// ─── 09. Values & Beliefs ────────────────────────────────────────────────────
|
|
221
733
|
const lifeGoalsOpts = opts([
|
|
222
|
-
'build_family',
|
|
223
|
-
'
|
|
224
|
-
'
|
|
734
|
+
'build_family',
|
|
735
|
+
'career_success',
|
|
736
|
+
'financial_freedom',
|
|
737
|
+
'travel_world',
|
|
738
|
+
'make_impact',
|
|
739
|
+
'creative_fulfillment',
|
|
740
|
+
'spiritual_growth',
|
|
741
|
+
'education',
|
|
742
|
+
'start_business',
|
|
743
|
+
'buy_home',
|
|
744
|
+
'early_retirement',
|
|
745
|
+
'health_longevity',
|
|
746
|
+
'find_love',
|
|
747
|
+
'self_discovery',
|
|
748
|
+
'leave_legacy',
|
|
225
749
|
'prefer_not_to_say',
|
|
226
750
|
]);
|
|
227
751
|
const politicalOrientationOpts = opts([
|
|
228
|
-
'liberal',
|
|
752
|
+
'liberal',
|
|
753
|
+
'moderate',
|
|
754
|
+
'conservative',
|
|
755
|
+
'apolitical',
|
|
756
|
+
'other',
|
|
757
|
+
'prefer_not_to_say',
|
|
229
758
|
]);
|
|
230
759
|
const environmentalValuesOpts = opts([
|
|
231
|
-
'very_eco',
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
'
|
|
760
|
+
'very_eco',
|
|
761
|
+
'trying',
|
|
762
|
+
'somewhat',
|
|
763
|
+
'not_priority',
|
|
764
|
+
'prefer_not_to_say',
|
|
235
765
|
]);
|
|
766
|
+
const organDonorOpts = opts(['yes', 'planning', 'open', 'no', 'prefer_not_to_say']);
|
|
236
767
|
const spiritualPracticeOpts = opts([
|
|
237
|
-
'daily_meditation',
|
|
238
|
-
'
|
|
768
|
+
'daily_meditation',
|
|
769
|
+
'yoga_regular',
|
|
770
|
+
'prayer',
|
|
771
|
+
'mindfulness',
|
|
772
|
+
'nature_spirituality',
|
|
773
|
+
'no_practice',
|
|
774
|
+
'exploring',
|
|
775
|
+
'prefer_not_to_say',
|
|
239
776
|
]);
|
|
240
777
|
const astrologyBeliefOpts = opts([
|
|
241
|
-
'strong_believer',
|
|
778
|
+
'strong_believer',
|
|
779
|
+
'casual',
|
|
780
|
+
'skeptical',
|
|
781
|
+
'dont_believe',
|
|
782
|
+
'prefer_not_to_say',
|
|
242
783
|
]);
|
|
243
784
|
// ─── 10. Career & Work ───────────────────────────────────────────────────────
|
|
244
785
|
const careerStageOpts = opts([
|
|
245
|
-
'student',
|
|
246
|
-
'
|
|
786
|
+
'student',
|
|
787
|
+
'just_starting',
|
|
788
|
+
'mid_career',
|
|
789
|
+
'senior',
|
|
790
|
+
'entrepreneur',
|
|
791
|
+
'freelancer',
|
|
792
|
+
'career_break',
|
|
793
|
+
'retired',
|
|
794
|
+
'prefer_not_to_say',
|
|
247
795
|
]);
|
|
248
796
|
const workLocationModeOpts = opts([
|
|
249
|
-
'office',
|
|
797
|
+
'office',
|
|
798
|
+
'remote',
|
|
799
|
+
'hybrid',
|
|
800
|
+
'freelance_flexible',
|
|
801
|
+
'not_working',
|
|
802
|
+
'prefer_not_to_say',
|
|
250
803
|
]);
|
|
251
804
|
const workTravelFrequencyOpts = opts([
|
|
252
|
-
'never',
|
|
805
|
+
'never',
|
|
806
|
+
'rarely',
|
|
807
|
+
'monthly',
|
|
808
|
+
'weekly',
|
|
809
|
+
'constantly',
|
|
810
|
+
'prefer_not_to_say',
|
|
253
811
|
]);
|
|
254
812
|
const retirementPlanOpts = opts([
|
|
255
|
-
'early_retire',
|
|
813
|
+
'early_retire',
|
|
814
|
+
'standard',
|
|
815
|
+
'work_forever',
|
|
816
|
+
'passion_project',
|
|
817
|
+
'no_plan',
|
|
818
|
+
'prefer_not_to_say',
|
|
256
819
|
]);
|
|
257
820
|
// ─── 11. Lifestyle & Daily Life ──────────────────────────────────────────────
|
|
258
821
|
const chronotypeOpts = opts([
|
|
259
|
-
'early_bird',
|
|
822
|
+
'early_bird',
|
|
823
|
+
'night_owl',
|
|
824
|
+
'in_between',
|
|
825
|
+
'depends',
|
|
826
|
+
'prefer_not_to_say',
|
|
260
827
|
]);
|
|
261
828
|
const sleepScheduleOpts = opts([
|
|
262
|
-
'before_10pm',
|
|
829
|
+
'before_10pm',
|
|
830
|
+
'10pm_midnight',
|
|
831
|
+
'midnight_2am',
|
|
832
|
+
'after_2am',
|
|
833
|
+
'irregular',
|
|
834
|
+
'prefer_not_to_say',
|
|
263
835
|
]);
|
|
264
836
|
const fitnessLevelOpts = opts([
|
|
265
|
-
'very_active',
|
|
837
|
+
'very_active',
|
|
838
|
+
'active',
|
|
839
|
+
'sometimes',
|
|
840
|
+
'rarely',
|
|
841
|
+
'not_active',
|
|
842
|
+
'prefer_not_to_say',
|
|
266
843
|
]);
|
|
267
844
|
const travelFrequencyOpts = opts([
|
|
268
|
-
'every_month',
|
|
845
|
+
'every_month',
|
|
846
|
+
'few_times_year',
|
|
847
|
+
'once_a_year',
|
|
848
|
+
'rarely',
|
|
849
|
+
'never',
|
|
850
|
+
'prefer_not_to_say',
|
|
269
851
|
]);
|
|
270
852
|
const livingSituationOpts = opts([
|
|
271
|
-
'alone',
|
|
853
|
+
'alone',
|
|
854
|
+
'roommates',
|
|
855
|
+
'family',
|
|
856
|
+
'partner',
|
|
857
|
+
'kids',
|
|
858
|
+
'other',
|
|
859
|
+
'prefer_not_to_say',
|
|
272
860
|
]);
|
|
273
861
|
const relocationWillingnessOpts = opts([
|
|
274
|
-
'very_willing',
|
|
862
|
+
'very_willing',
|
|
863
|
+
'open',
|
|
864
|
+
'prefer_not',
|
|
865
|
+
'cant',
|
|
866
|
+
'prefer_not_to_say',
|
|
275
867
|
]);
|
|
276
868
|
const petPreferenceOpts = opts([
|
|
277
|
-
'dog_owner',
|
|
278
|
-
'
|
|
869
|
+
'dog_owner',
|
|
870
|
+
'cat_owner',
|
|
871
|
+
'have_other',
|
|
872
|
+
'love_no_pets',
|
|
873
|
+
'want_someday',
|
|
874
|
+
'allergic',
|
|
875
|
+
'not_pet_person',
|
|
876
|
+
'prefer_not_to_say',
|
|
279
877
|
]);
|
|
280
878
|
const cookingLevelOpts = opts([
|
|
281
|
-
'chef_level',
|
|
282
|
-
'
|
|
879
|
+
'chef_level',
|
|
880
|
+
'regular',
|
|
881
|
+
'follow_recipe',
|
|
882
|
+
'basics',
|
|
883
|
+
'takeout',
|
|
884
|
+
'willing_to_learn',
|
|
885
|
+
'prefer_not_to_say',
|
|
283
886
|
]);
|
|
284
887
|
const tidinessOpts = opts([
|
|
285
|
-
'neat_freak',
|
|
286
|
-
'
|
|
888
|
+
'neat_freak',
|
|
889
|
+
'generally_tidy',
|
|
890
|
+
'organized_chaos',
|
|
891
|
+
'messy',
|
|
892
|
+
'need_help',
|
|
893
|
+
'prefer_not_to_say',
|
|
287
894
|
]);
|
|
288
895
|
const choresSplitOpts = opts([
|
|
289
|
-
'equal_split',
|
|
290
|
-
'
|
|
896
|
+
'equal_split',
|
|
897
|
+
'flexible',
|
|
898
|
+
'one_cooks_one_cleans',
|
|
899
|
+
'hire_help',
|
|
900
|
+
'dont_care',
|
|
901
|
+
'prefer_not_to_say',
|
|
291
902
|
]);
|
|
292
903
|
const domesticRoleOpts = opts([
|
|
293
|
-
'traditional',
|
|
904
|
+
'traditional',
|
|
905
|
+
'modern_equal',
|
|
906
|
+
'flexible',
|
|
907
|
+
'dont_believe_in_roles',
|
|
908
|
+
'prefer_not_to_say',
|
|
294
909
|
]);
|
|
295
910
|
const fashionStyleOpts = opts([
|
|
296
|
-
'casual',
|
|
297
|
-
'
|
|
911
|
+
'casual',
|
|
912
|
+
'streetwear',
|
|
913
|
+
'smart_casual',
|
|
914
|
+
'classic',
|
|
915
|
+
'bohemian',
|
|
916
|
+
'minimalist',
|
|
917
|
+
'trendy',
|
|
918
|
+
'athleisure',
|
|
919
|
+
'traditional',
|
|
920
|
+
'dont_think',
|
|
921
|
+
'prefer_not_to_say',
|
|
298
922
|
]);
|
|
299
923
|
const hygieneStandardOpts = opts([
|
|
300
|
-
'meticulous',
|
|
924
|
+
'meticulous',
|
|
925
|
+
'clean',
|
|
926
|
+
'average',
|
|
927
|
+
'relaxed',
|
|
928
|
+
'prefer_not_to_say',
|
|
301
929
|
]);
|
|
302
930
|
const vacationStyleOpts = opts([
|
|
303
|
-
'beach',
|
|
304
|
-
'
|
|
931
|
+
'beach',
|
|
932
|
+
'adventure',
|
|
933
|
+
'city',
|
|
934
|
+
'cultural',
|
|
935
|
+
'backpacking',
|
|
936
|
+
'luxury',
|
|
937
|
+
'road_trips',
|
|
938
|
+
'staycation',
|
|
939
|
+
'wellness',
|
|
940
|
+
'prefer_not_to_say',
|
|
305
941
|
]);
|
|
306
942
|
const urbanRuralOpts = opts([
|
|
307
|
-
'big_city',
|
|
943
|
+
'big_city',
|
|
944
|
+
'small_city',
|
|
945
|
+
'suburbs',
|
|
946
|
+
'rural',
|
|
947
|
+
'nomadic',
|
|
948
|
+
'prefer_not_to_say',
|
|
308
949
|
]);
|
|
309
950
|
const climatePreferenceOpts = opts([
|
|
310
|
-
'tropical',
|
|
951
|
+
'tropical',
|
|
952
|
+
'temperate',
|
|
953
|
+
'cold',
|
|
954
|
+
'dry',
|
|
955
|
+
'no_preference',
|
|
956
|
+
'prefer_not_to_say',
|
|
311
957
|
]);
|
|
312
958
|
const carOwnershipOpts = opts([
|
|
313
|
-
'own_car',
|
|
959
|
+
'own_car',
|
|
960
|
+
'planning',
|
|
961
|
+
'no_car',
|
|
962
|
+
'no_car_by_choice',
|
|
963
|
+
'prefer_not_to_say',
|
|
314
964
|
]);
|
|
315
965
|
const drivingAbilityOpts = opts([
|
|
316
|
-
'licensed',
|
|
966
|
+
'licensed',
|
|
967
|
+
'licensed_rarely',
|
|
968
|
+
'learning',
|
|
969
|
+
'no_license',
|
|
970
|
+
'prefer_not_to_say',
|
|
317
971
|
]);
|
|
318
972
|
const timeManagementOpts = opts([
|
|
319
|
-
'always_early',
|
|
320
|
-
'
|
|
973
|
+
'always_early',
|
|
974
|
+
'on_time',
|
|
975
|
+
'fashionably_late',
|
|
976
|
+
'running_late',
|
|
977
|
+
'time_is_construct',
|
|
978
|
+
'prefer_not_to_say',
|
|
321
979
|
]);
|
|
322
980
|
const screenTimeOpts = opts([
|
|
323
|
-
'minimal',
|
|
981
|
+
'minimal',
|
|
982
|
+
'moderate',
|
|
983
|
+
'heavy',
|
|
984
|
+
'digital_detox',
|
|
985
|
+
'prefer_not_to_say',
|
|
324
986
|
]);
|
|
325
987
|
const socialMediaUsageOpts = opts([
|
|
326
|
-
'very_active',
|
|
988
|
+
'very_active',
|
|
989
|
+
'regular',
|
|
990
|
+
'lurker',
|
|
991
|
+
'minimal',
|
|
992
|
+
'no_social',
|
|
993
|
+
'prefer_not_to_say',
|
|
327
994
|
]);
|
|
328
995
|
const bodyModificationsOpts = opts([
|
|
329
|
-
'tattoos',
|
|
330
|
-
'
|
|
996
|
+
'tattoos',
|
|
997
|
+
'piercings',
|
|
998
|
+
'nose_piercing',
|
|
999
|
+
'tongue_piercing',
|
|
1000
|
+
'none',
|
|
1001
|
+
'open_to_it',
|
|
1002
|
+
'prefer_not_to_say',
|
|
331
1003
|
]);
|
|
332
1004
|
const earPiercingsOpts = opts([
|
|
333
|
-
'none',
|
|
1005
|
+
'none',
|
|
1006
|
+
'single_lobe',
|
|
1007
|
+
'multiple',
|
|
1008
|
+
'stretched',
|
|
1009
|
+
'prefer_not_to_say',
|
|
334
1010
|
]);
|
|
335
1011
|
const sunSignOpts = opts([
|
|
336
|
-
'aries',
|
|
337
|
-
'
|
|
1012
|
+
'aries',
|
|
1013
|
+
'taurus',
|
|
1014
|
+
'gemini',
|
|
1015
|
+
'cancer',
|
|
1016
|
+
'leo',
|
|
1017
|
+
'virgo',
|
|
1018
|
+
'libra',
|
|
1019
|
+
'scorpio',
|
|
1020
|
+
'sagittarius',
|
|
1021
|
+
'capricorn',
|
|
1022
|
+
'aquarius',
|
|
1023
|
+
'pisces',
|
|
1024
|
+
'prefer_not_to_say',
|
|
338
1025
|
]);
|
|
339
1026
|
const loveLanguageOpts = opts([
|
|
340
|
-
'words_of_affirmation',
|
|
341
|
-
'
|
|
1027
|
+
'words_of_affirmation',
|
|
1028
|
+
'quality_time',
|
|
1029
|
+
'receiving_gifts',
|
|
1030
|
+
'acts_of_service',
|
|
1031
|
+
'physical_touch',
|
|
1032
|
+
'prefer_not_to_say',
|
|
342
1033
|
]);
|
|
343
1034
|
// ─── 12. Cognitive & Intellectual ────────────────────────────────────────────
|
|
344
1035
|
const intellectualNeedOpts = opts([
|
|
345
|
-
'essential',
|
|
1036
|
+
'essential',
|
|
1037
|
+
'very_important',
|
|
1038
|
+
'nice_to_have',
|
|
1039
|
+
'not_important',
|
|
1040
|
+
'prefer_not_to_say',
|
|
346
1041
|
]);
|
|
347
1042
|
const cognitiveBandOpts = opts([
|
|
348
|
-
'analytical',
|
|
1043
|
+
'analytical',
|
|
1044
|
+
'creative',
|
|
1045
|
+
'balanced',
|
|
1046
|
+
'practical',
|
|
1047
|
+
'philosophical',
|
|
1048
|
+
'prefer_not_to_say',
|
|
349
1049
|
]);
|
|
350
1050
|
const learningPathOpts = opts([
|
|
351
|
-
'self_taught',
|
|
1051
|
+
'self_taught',
|
|
1052
|
+
'formal',
|
|
1053
|
+
'experiential',
|
|
1054
|
+
'social',
|
|
1055
|
+
'mixed',
|
|
1056
|
+
'prefer_not_to_say',
|
|
352
1057
|
]);
|
|
353
1058
|
const knowledgeAreasOpts = opts([
|
|
354
|
-
'technology',
|
|
355
|
-
'
|
|
356
|
-
'
|
|
1059
|
+
'technology',
|
|
1060
|
+
'science',
|
|
1061
|
+
'arts',
|
|
1062
|
+
'business',
|
|
1063
|
+
'health',
|
|
1064
|
+
'law',
|
|
1065
|
+
'psychology',
|
|
1066
|
+
'philosophy',
|
|
1067
|
+
'history',
|
|
1068
|
+
'languages',
|
|
1069
|
+
'math',
|
|
1070
|
+
'environment',
|
|
1071
|
+
'education',
|
|
1072
|
+
'sports',
|
|
1073
|
+
'cooking_food',
|
|
1074
|
+
'music_knowledge',
|
|
1075
|
+
'other',
|
|
1076
|
+
'prefer_not_to_say',
|
|
357
1077
|
]);
|
|
358
1078
|
const learningMethodsOpts = opts([
|
|
359
|
-
'reading',
|
|
360
|
-
'
|
|
1079
|
+
'reading',
|
|
1080
|
+
'videos',
|
|
1081
|
+
'podcasts',
|
|
1082
|
+
'courses',
|
|
1083
|
+
'workshops',
|
|
1084
|
+
'mentorship',
|
|
1085
|
+
'hands_on',
|
|
1086
|
+
'discussion',
|
|
1087
|
+
'prefer_not_to_say',
|
|
361
1088
|
]);
|
|
362
1089
|
const intellectualExperienceOpts = opts([
|
|
363
|
-
'expert',
|
|
1090
|
+
'expert',
|
|
1091
|
+
'advanced',
|
|
1092
|
+
'intermediate',
|
|
1093
|
+
'growing',
|
|
1094
|
+
'beginner',
|
|
1095
|
+
'prefer_not_to_say',
|
|
364
1096
|
]);
|
|
365
1097
|
const intellectualGoalsOpts = opts([
|
|
366
|
-
'master_skill',
|
|
367
|
-
'
|
|
1098
|
+
'master_skill',
|
|
1099
|
+
'write_book',
|
|
1100
|
+
'learn_language',
|
|
1101
|
+
'get_degree',
|
|
1102
|
+
'start_research',
|
|
1103
|
+
'teach_others',
|
|
1104
|
+
'build_something',
|
|
1105
|
+
'none_specific',
|
|
1106
|
+
'prefer_not_to_say',
|
|
368
1107
|
]);
|
|
369
1108
|
const goalSettingStyleOpts = opts([
|
|
370
|
-
'detailed_planner',
|
|
371
|
-
'
|
|
1109
|
+
'detailed_planner',
|
|
1110
|
+
'broad_goals',
|
|
1111
|
+
'vision_board',
|
|
1112
|
+
'go_with_flow',
|
|
1113
|
+
'no_goals',
|
|
1114
|
+
'prefer_not_to_say',
|
|
372
1115
|
]);
|
|
373
1116
|
const teachingMentoringOpts = opts([
|
|
374
|
-
'love_teaching',
|
|
1117
|
+
'love_teaching',
|
|
1118
|
+
'enjoy',
|
|
1119
|
+
'neutral',
|
|
1120
|
+
'prefer_learning',
|
|
1121
|
+
'not_interested',
|
|
1122
|
+
'prefer_not_to_say',
|
|
375
1123
|
]);
|
|
376
1124
|
// ─── 13. Relationship & Intimacy ─────────────────────────────────────────────
|
|
377
1125
|
const intimacyImportanceOpts = opts([
|
|
378
|
-
'very_important',
|
|
1126
|
+
'very_important',
|
|
1127
|
+
'important',
|
|
1128
|
+
'moderate',
|
|
1129
|
+
'low',
|
|
1130
|
+
'not_important',
|
|
1131
|
+
'prefer_not_to_say',
|
|
379
1132
|
]);
|
|
380
1133
|
const loveLanguageDetailedOpts = opts([
|
|
381
|
-
'words_of_affirmation',
|
|
382
|
-
'
|
|
1134
|
+
'words_of_affirmation',
|
|
1135
|
+
'quality_time',
|
|
1136
|
+
'receiving_gifts',
|
|
1137
|
+
'acts_of_service',
|
|
1138
|
+
'physical_touch',
|
|
1139
|
+
'prefer_not_to_say',
|
|
383
1140
|
]);
|
|
384
1141
|
const affectionLevelOpts = opts([
|
|
385
|
-
'very_affectionate',
|
|
386
|
-
'
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
'
|
|
1142
|
+
'very_affectionate',
|
|
1143
|
+
'moderately',
|
|
1144
|
+
'reserved',
|
|
1145
|
+
'not_affectionate',
|
|
1146
|
+
'depends',
|
|
1147
|
+
'prefer_not_to_say',
|
|
390
1148
|
]);
|
|
1149
|
+
const pdaComfortOpts = opts(['love_it', 'some', 'minimal', 'none', 'prefer_not_to_say']);
|
|
391
1150
|
const conflictStyleOpts = opts([
|
|
392
|
-
'talk_it_out',
|
|
393
|
-
'
|
|
1151
|
+
'talk_it_out',
|
|
1152
|
+
'cool_off_first',
|
|
1153
|
+
'avoid_conflict',
|
|
1154
|
+
'compromise',
|
|
1155
|
+
'need_mediator',
|
|
1156
|
+
'prefer_not_to_say',
|
|
394
1157
|
]);
|
|
395
1158
|
const videoDatingComfortOpts = opts([
|
|
396
|
-
'love_it',
|
|
1159
|
+
'love_it',
|
|
1160
|
+
'open',
|
|
1161
|
+
'prefer_not',
|
|
1162
|
+
'never',
|
|
1163
|
+
'prefer_not_to_say',
|
|
397
1164
|
]);
|
|
398
1165
|
const safetyPreferenceOpts = opts([
|
|
399
|
-
'public_place',
|
|
400
|
-
'
|
|
1166
|
+
'public_place',
|
|
1167
|
+
'share_location',
|
|
1168
|
+
'video_first',
|
|
1169
|
+
'bring_friend',
|
|
1170
|
+
'no_preference',
|
|
1171
|
+
'prefer_not_to_say',
|
|
401
1172
|
]);
|
|
402
1173
|
const datePreferenceOpts = opts([
|
|
403
|
-
'coffee',
|
|
404
|
-
'
|
|
1174
|
+
'coffee',
|
|
1175
|
+
'dinner',
|
|
1176
|
+
'drinks',
|
|
1177
|
+
'outdoor',
|
|
1178
|
+
'cultural',
|
|
1179
|
+
'cooking',
|
|
1180
|
+
'adventure',
|
|
1181
|
+
'picnic',
|
|
1182
|
+
'movie',
|
|
1183
|
+
'game_night',
|
|
1184
|
+
'prefer_not_to_say',
|
|
405
1185
|
]);
|
|
406
1186
|
const sexDriveOpts = opts([
|
|
407
|
-
'very_high',
|
|
1187
|
+
'very_high',
|
|
1188
|
+
'high',
|
|
1189
|
+
'moderate',
|
|
1190
|
+
'low',
|
|
1191
|
+
'very_low',
|
|
1192
|
+
'varies',
|
|
1193
|
+
'prefer_not_to_say',
|
|
408
1194
|
]);
|
|
409
1195
|
const sexualActivityLevelOpts = opts([
|
|
410
|
-
'very_active',
|
|
1196
|
+
'very_active',
|
|
1197
|
+
'active',
|
|
1198
|
+
'moderate',
|
|
1199
|
+
'low',
|
|
1200
|
+
'abstinent',
|
|
1201
|
+
'prefer_not_to_say',
|
|
411
1202
|
]);
|
|
412
1203
|
const kinkOpennessOpts = opts([
|
|
413
|
-
'very_open',
|
|
1204
|
+
'very_open',
|
|
1205
|
+
'somewhat',
|
|
1206
|
+
'vanilla',
|
|
1207
|
+
'not_interested',
|
|
1208
|
+
'prefer_not_to_say',
|
|
414
1209
|
]);
|
|
415
1210
|
const concurrentPartnersOpts = opts([
|
|
416
|
-
'strictly_one',
|
|
1211
|
+
'strictly_one',
|
|
1212
|
+
'open_to_discussion',
|
|
1213
|
+
'polyamorous',
|
|
1214
|
+
'depends',
|
|
1215
|
+
'prefer_not_to_say',
|
|
417
1216
|
]);
|
|
418
1217
|
// ─── 14. Family & Home ───────────────────────────────────────────────────────
|
|
419
1218
|
const familyTypeOpts = opts([
|
|
420
|
-
'nuclear',
|
|
1219
|
+
'nuclear',
|
|
1220
|
+
'joint',
|
|
1221
|
+
'single_parent',
|
|
1222
|
+
'blended',
|
|
1223
|
+
'no_family',
|
|
1224
|
+
'prefer_not_to_say',
|
|
421
1225
|
]);
|
|
422
1226
|
const parentingStyleOpts = opts([
|
|
423
|
-
'authoritative',
|
|
424
|
-
'
|
|
1227
|
+
'authoritative',
|
|
1228
|
+
'permissive',
|
|
1229
|
+
'attachment',
|
|
1230
|
+
'helicopter',
|
|
1231
|
+
'free_range',
|
|
1232
|
+
'equal_co_parent',
|
|
1233
|
+
'not_sure',
|
|
1234
|
+
'not_applicable',
|
|
1235
|
+
'prefer_not_to_say',
|
|
425
1236
|
]);
|
|
426
1237
|
const caregivingResponsibilityOpts = opts([
|
|
427
|
-
'elderly_parents',
|
|
428
|
-
'
|
|
1238
|
+
'elderly_parents',
|
|
1239
|
+
'disabled_family',
|
|
1240
|
+
'children',
|
|
1241
|
+
'shared',
|
|
1242
|
+
'none',
|
|
1243
|
+
'future',
|
|
1244
|
+
'prefer_not_to_say',
|
|
429
1245
|
]);
|
|
430
1246
|
const familyBuildingOpts = opts([
|
|
431
|
-
'natural',
|
|
1247
|
+
'natural',
|
|
1248
|
+
'adoption',
|
|
1249
|
+
'foster',
|
|
1250
|
+
'ivf',
|
|
1251
|
+
'surrogacy',
|
|
1252
|
+
'co_parenting',
|
|
1253
|
+
'prefer_not_to_say',
|
|
432
1254
|
]);
|
|
433
1255
|
const weddingStyleOpts = opts([
|
|
434
|
-
'grand',
|
|
435
|
-
'
|
|
1256
|
+
'grand',
|
|
1257
|
+
'intimate',
|
|
1258
|
+
'courthouse',
|
|
1259
|
+
'destination',
|
|
1260
|
+
'elopement',
|
|
1261
|
+
'dont_care',
|
|
1262
|
+
'not_marriage',
|
|
1263
|
+
'prefer_not_to_say',
|
|
436
1264
|
]);
|
|
437
1265
|
const giftGivingStyleOpts = opts([
|
|
438
|
-
'lavish',
|
|
439
|
-
'
|
|
1266
|
+
'lavish',
|
|
1267
|
+
'thoughtful',
|
|
1268
|
+
'practical',
|
|
1269
|
+
'experiences',
|
|
1270
|
+
'handmade',
|
|
1271
|
+
'minimal',
|
|
1272
|
+
'prefer_not_to_say',
|
|
440
1273
|
]);
|
|
441
1274
|
const contraceptionViewOpts = opts([
|
|
442
|
-
'pro_contraception',
|
|
443
|
-
'
|
|
1275
|
+
'pro_contraception',
|
|
1276
|
+
'open',
|
|
1277
|
+
'natural_methods',
|
|
1278
|
+
'against',
|
|
1279
|
+
'not_applicable',
|
|
1280
|
+
'prefer_not_to_say',
|
|
444
1281
|
]);
|
|
445
1282
|
const parentsExpectationOpts = opts([
|
|
446
|
-
'very_involved',
|
|
1283
|
+
'very_involved',
|
|
1284
|
+
'somewhat',
|
|
1285
|
+
'independent',
|
|
1286
|
+
'no_contact',
|
|
1287
|
+
'prefer_not_to_say',
|
|
1288
|
+
]);
|
|
1289
|
+
const parentOccupationOpts = opts([
|
|
1290
|
+
'it_software',
|
|
1291
|
+
'engineering',
|
|
1292
|
+
'healthcare',
|
|
1293
|
+
'education',
|
|
1294
|
+
'finance_accounting',
|
|
1295
|
+
'arts_entertainment',
|
|
1296
|
+
'media_communication',
|
|
1297
|
+
'business_management',
|
|
1298
|
+
'government_public',
|
|
1299
|
+
'legal',
|
|
1300
|
+
'science_research',
|
|
1301
|
+
'agriculture',
|
|
1302
|
+
'hospitality_travel',
|
|
1303
|
+
'real_estate',
|
|
1304
|
+
'retail_ecommerce',
|
|
1305
|
+
'manufacturing',
|
|
1306
|
+
'self_employed',
|
|
1307
|
+
'homemaker',
|
|
1308
|
+
'retired',
|
|
1309
|
+
'deceased',
|
|
1310
|
+
'other',
|
|
1311
|
+
'prefer_not_to_say',
|
|
1312
|
+
]);
|
|
1313
|
+
const familyAffluenceOpts = opts([
|
|
1314
|
+
'lower_middle',
|
|
1315
|
+
'middle',
|
|
1316
|
+
'upper_middle',
|
|
1317
|
+
'affluent',
|
|
1318
|
+
'wealthy',
|
|
1319
|
+
'prefer_not_to_say',
|
|
1320
|
+
]);
|
|
1321
|
+
const familyValuesOpts = opts([
|
|
1322
|
+
'orthodox',
|
|
1323
|
+
'moderate',
|
|
1324
|
+
'liberal',
|
|
1325
|
+
'very_liberal',
|
|
1326
|
+
'prefer_not_to_say',
|
|
1327
|
+
]);
|
|
1328
|
+
const profileCreatedByOpts = opts([
|
|
1329
|
+
'self',
|
|
1330
|
+
'parent',
|
|
1331
|
+
'sibling',
|
|
1332
|
+
'friend',
|
|
1333
|
+
'relative',
|
|
1334
|
+
'other',
|
|
447
1335
|
]);
|
|
448
1336
|
// ─── 15. Finance & Legal ─────────────────────────────────────────────────────
|
|
449
1337
|
const incomeRangeOpts = opts([
|
|
450
|
-
'under_3l',
|
|
451
|
-
'
|
|
1338
|
+
'under_3l',
|
|
1339
|
+
'3l_6l',
|
|
1340
|
+
'6l_10l',
|
|
1341
|
+
'10l_15l',
|
|
1342
|
+
'15l_25l',
|
|
1343
|
+
'25l_50l',
|
|
1344
|
+
'50l_1cr',
|
|
1345
|
+
'above_1cr',
|
|
1346
|
+
'prefer_not_to_say',
|
|
452
1347
|
]);
|
|
453
1348
|
const financialAttitudeOpts = opts([
|
|
454
|
-
'saver',
|
|
1349
|
+
'saver',
|
|
1350
|
+
'spender',
|
|
1351
|
+
'balanced',
|
|
1352
|
+
'investor',
|
|
1353
|
+
'minimalist',
|
|
1354
|
+
'prefer_not_to_say',
|
|
455
1355
|
]);
|
|
456
1356
|
const incomeSourcesOpts = opts([
|
|
457
|
-
'salary',
|
|
458
|
-
'
|
|
1357
|
+
'salary',
|
|
1358
|
+
'business',
|
|
1359
|
+
'freelance',
|
|
1360
|
+
'investments',
|
|
1361
|
+
'rental',
|
|
1362
|
+
'family',
|
|
1363
|
+
'pension',
|
|
1364
|
+
'no_income',
|
|
1365
|
+
'prefer_not_to_say',
|
|
459
1366
|
]);
|
|
460
1367
|
const financialIntegrationOpts = opts([
|
|
461
|
-
'fully_joint',
|
|
1368
|
+
'fully_joint',
|
|
1369
|
+
'mostly_joint',
|
|
1370
|
+
'split',
|
|
1371
|
+
'proportional',
|
|
1372
|
+
'separate',
|
|
1373
|
+
'prefer_not_to_say',
|
|
462
1374
|
]);
|
|
463
1375
|
const debtStatusOpts = opts([
|
|
464
|
-
'debt_free',
|
|
1376
|
+
'debt_free',
|
|
1377
|
+
'student_loans',
|
|
1378
|
+
'mortgage',
|
|
1379
|
+
'manageable',
|
|
1380
|
+
'significant',
|
|
1381
|
+
'prefer_not_to_say',
|
|
465
1382
|
]);
|
|
466
1383
|
const financialStabilityOpts = opts([
|
|
467
|
-
'very_stable',
|
|
1384
|
+
'very_stable',
|
|
1385
|
+
'stable',
|
|
1386
|
+
'building',
|
|
1387
|
+
'unstable',
|
|
1388
|
+
'in_crisis',
|
|
1389
|
+
'prefer_not_to_say',
|
|
468
1390
|
]);
|
|
469
1391
|
const creditScoreOpts = opts([
|
|
470
|
-
'excellent',
|
|
1392
|
+
'excellent',
|
|
1393
|
+
'good',
|
|
1394
|
+
'fair',
|
|
1395
|
+
'poor',
|
|
1396
|
+
'dont_know',
|
|
1397
|
+
'not_applicable',
|
|
1398
|
+
'prefer_not_to_say',
|
|
471
1399
|
]);
|
|
472
1400
|
const prenupViewOpts = opts([
|
|
473
|
-
'strongly_for',
|
|
1401
|
+
'strongly_for',
|
|
1402
|
+
'open',
|
|
1403
|
+
'neutral',
|
|
1404
|
+
'against',
|
|
1405
|
+
'strongly_against',
|
|
1406
|
+
'prefer_not_to_say',
|
|
474
1407
|
]);
|
|
475
1408
|
const lifeInsuranceOpts = opts([
|
|
476
|
-
'have_it',
|
|
1409
|
+
'have_it',
|
|
1410
|
+
'planning',
|
|
1411
|
+
'dont_have',
|
|
1412
|
+
'not_needed',
|
|
1413
|
+
'prefer_not_to_say',
|
|
477
1414
|
]);
|
|
478
1415
|
const healthInsuranceOpts = opts([
|
|
479
|
-
'comprehensive',
|
|
1416
|
+
'comprehensive',
|
|
1417
|
+
'basic',
|
|
1418
|
+
'employer',
|
|
1419
|
+
'none',
|
|
1420
|
+
'prefer_not_to_say',
|
|
480
1421
|
]);
|
|
481
1422
|
const citizenshipOpts = opts([
|
|
482
|
-
'citizen',
|
|
483
|
-
'
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
'
|
|
1423
|
+
'citizen',
|
|
1424
|
+
'permanent_resident',
|
|
1425
|
+
'work_visa',
|
|
1426
|
+
'student_visa',
|
|
1427
|
+
'dual_citizen',
|
|
1428
|
+
'other',
|
|
1429
|
+
'prefer_not_to_say',
|
|
487
1430
|
]);
|
|
1431
|
+
const legalIssuesOpts = opts(['none', 'minor_past', 'ongoing', 'prefer_not_to_say']);
|
|
488
1432
|
const drivingRecordOpts = opts([
|
|
489
|
-
'clean',
|
|
1433
|
+
'clean',
|
|
1434
|
+
'minor',
|
|
1435
|
+
'dui_past',
|
|
1436
|
+
'no_license',
|
|
1437
|
+
'prefer_not_to_say',
|
|
490
1438
|
]);
|
|
491
1439
|
const billSplittingOpts = opts([
|
|
492
|
-
'always_split',
|
|
493
|
-
'
|
|
1440
|
+
'always_split',
|
|
1441
|
+
'alternate',
|
|
1442
|
+
'whoever_invites',
|
|
1443
|
+
'traditional',
|
|
1444
|
+
'whoever_offers',
|
|
1445
|
+
'dont_care',
|
|
1446
|
+
'prefer_not_to_say',
|
|
1447
|
+
]);
|
|
1448
|
+
const countryOfResidenceOpts = opts([
|
|
1449
|
+
'india',
|
|
1450
|
+
'usa',
|
|
1451
|
+
'uk',
|
|
1452
|
+
'canada',
|
|
1453
|
+
'australia',
|
|
1454
|
+
'uae',
|
|
1455
|
+
'singapore',
|
|
1456
|
+
'malaysia',
|
|
1457
|
+
'germany',
|
|
1458
|
+
'new_zealand',
|
|
1459
|
+
'south_africa',
|
|
1460
|
+
'saudi_arabia',
|
|
1461
|
+
'qatar',
|
|
1462
|
+
'bahrain',
|
|
1463
|
+
'kuwait',
|
|
1464
|
+
'oman',
|
|
1465
|
+
'other',
|
|
1466
|
+
'prefer_not_to_say',
|
|
1467
|
+
]);
|
|
1468
|
+
const visaTypeOpts = opts([
|
|
1469
|
+
'h1b',
|
|
1470
|
+
'l1',
|
|
1471
|
+
'eb1',
|
|
1472
|
+
'eb2',
|
|
1473
|
+
'eb3',
|
|
1474
|
+
'opt',
|
|
1475
|
+
'green_card',
|
|
1476
|
+
'citizen',
|
|
1477
|
+
'work_permit',
|
|
1478
|
+
'student',
|
|
1479
|
+
'other',
|
|
1480
|
+
'not_applicable',
|
|
1481
|
+
'prefer_not_to_say',
|
|
494
1482
|
]);
|
|
495
1483
|
// ─── 16. Health & Wellness ───────────────────────────────────────────────────
|
|
496
1484
|
const accessibilityNeedsOpts = opts([
|
|
497
|
-
'none',
|
|
498
|
-
'
|
|
1485
|
+
'none',
|
|
1486
|
+
'physical',
|
|
1487
|
+
'visual',
|
|
1488
|
+
'hearing',
|
|
1489
|
+
'cognitive',
|
|
1490
|
+
'chronic_condition',
|
|
1491
|
+
'multiple',
|
|
1492
|
+
'prefer_not_to_say',
|
|
499
1493
|
]);
|
|
500
1494
|
const chronicConditionOpts = opts([
|
|
501
|
-
'none',
|
|
502
|
-
'
|
|
1495
|
+
'none',
|
|
1496
|
+
'diabetes',
|
|
1497
|
+
'hypertension',
|
|
1498
|
+
'asthma',
|
|
1499
|
+
'thyroid',
|
|
1500
|
+
'autoimmune',
|
|
1501
|
+
'mental_health',
|
|
1502
|
+
'other',
|
|
1503
|
+
'multiple',
|
|
1504
|
+
'prefer_not_to_say',
|
|
503
1505
|
]);
|
|
504
1506
|
const criticalIllnessHistoryOpts = opts([
|
|
505
|
-
'none',
|
|
1507
|
+
'none',
|
|
1508
|
+
'cancer_remission',
|
|
1509
|
+
'heart',
|
|
1510
|
+
'other_managed',
|
|
1511
|
+
'currently_treating',
|
|
1512
|
+
'prefer_not_to_say',
|
|
506
1513
|
]);
|
|
507
1514
|
const neurodiversityOpts = opts([
|
|
508
|
-
'neurotypical',
|
|
509
|
-
'
|
|
1515
|
+
'neurotypical',
|
|
1516
|
+
'adhd',
|
|
1517
|
+
'autism',
|
|
1518
|
+
'dyslexia',
|
|
1519
|
+
'bipolar',
|
|
1520
|
+
'ocd',
|
|
1521
|
+
'other',
|
|
1522
|
+
'multiple',
|
|
1523
|
+
'prefer_not_to_say',
|
|
510
1524
|
]);
|
|
511
1525
|
const personalityDisorderAwarenessOpts = opts([
|
|
512
|
-
'no',
|
|
1526
|
+
'no',
|
|
1527
|
+
'diagnosed_managing',
|
|
1528
|
+
'suspected',
|
|
1529
|
+
'in_treatment',
|
|
1530
|
+
'prefer_not_to_say',
|
|
513
1531
|
]);
|
|
514
1532
|
const therapyOpennessOpts = opts([
|
|
515
|
-
'currently_in',
|
|
1533
|
+
'currently_in',
|
|
1534
|
+
'past_positive',
|
|
1535
|
+
'open',
|
|
1536
|
+
'not_for_me',
|
|
1537
|
+
'never_considered',
|
|
1538
|
+
'prefer_not_to_say',
|
|
516
1539
|
]);
|
|
517
1540
|
const recoveryStatusOpts = opts([
|
|
518
|
-
'not_applicable',
|
|
1541
|
+
'not_applicable',
|
|
1542
|
+
'in_recovery',
|
|
1543
|
+
'long_term_sober',
|
|
1544
|
+
'working_on_it',
|
|
1545
|
+
'prefer_not_to_say',
|
|
519
1546
|
]);
|
|
520
1547
|
const phobiasOpts = opts([
|
|
521
|
-
'heights',
|
|
522
|
-
'
|
|
1548
|
+
'heights',
|
|
1549
|
+
'flying',
|
|
1550
|
+
'spiders',
|
|
1551
|
+
'water',
|
|
1552
|
+
'crowds',
|
|
1553
|
+
'darkness',
|
|
1554
|
+
'needles',
|
|
1555
|
+
'blood',
|
|
1556
|
+
'enclosed_spaces',
|
|
1557
|
+
'dogs',
|
|
1558
|
+
'snakes',
|
|
1559
|
+
'none',
|
|
1560
|
+
'prefer_not_to_say',
|
|
523
1561
|
]);
|
|
524
1562
|
const fertilityStatusOpts = opts([
|
|
525
|
-
'no_issues',
|
|
526
|
-
'
|
|
1563
|
+
'no_issues',
|
|
1564
|
+
'tested_fine',
|
|
1565
|
+
'undergoing_treatment',
|
|
1566
|
+
'known_challenges',
|
|
1567
|
+
'not_tested',
|
|
1568
|
+
'not_applicable',
|
|
1569
|
+
'prefer_not_to_say',
|
|
527
1570
|
]);
|
|
528
1571
|
const snoringHabitOpts = opts([
|
|
529
|
-
'never',
|
|
1572
|
+
'never',
|
|
1573
|
+
'sometimes',
|
|
1574
|
+
'regularly',
|
|
1575
|
+
'use_cpap',
|
|
1576
|
+
'dont_know',
|
|
1577
|
+
'prefer_not_to_say',
|
|
530
1578
|
]);
|
|
531
1579
|
const allergiesOpts = opts([
|
|
532
|
-
'peanuts',
|
|
533
|
-
'
|
|
1580
|
+
'peanuts',
|
|
1581
|
+
'shellfish',
|
|
1582
|
+
'dairy',
|
|
1583
|
+
'gluten',
|
|
1584
|
+
'eggs',
|
|
1585
|
+
'soy',
|
|
1586
|
+
'pollen',
|
|
1587
|
+
'dust',
|
|
1588
|
+
'pet_dander',
|
|
1589
|
+
'latex',
|
|
1590
|
+
'medication',
|
|
1591
|
+
'insect_stings',
|
|
1592
|
+
'none',
|
|
1593
|
+
'prefer_not_to_say',
|
|
534
1594
|
]);
|
|
535
1595
|
const bloodTypeOpts = opts([
|
|
536
|
-
'a_positive',
|
|
537
|
-
'
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
'
|
|
1596
|
+
'a_positive',
|
|
1597
|
+
'a_negative',
|
|
1598
|
+
'b_positive',
|
|
1599
|
+
'b_negative',
|
|
1600
|
+
'ab_positive',
|
|
1601
|
+
'ab_negative',
|
|
1602
|
+
'o_positive',
|
|
1603
|
+
'o_negative',
|
|
1604
|
+
'dont_know',
|
|
1605
|
+
'prefer_not_to_say',
|
|
541
1606
|
]);
|
|
1607
|
+
const rhFactorOpts = opts(['positive', 'negative', 'dont_know', 'prefer_not_to_say']);
|
|
542
1608
|
const geneticCarrierOpts = opts([
|
|
543
|
-
'not_carrier',
|
|
1609
|
+
'not_carrier',
|
|
1610
|
+
'carrier',
|
|
1611
|
+
'tested_clear',
|
|
1612
|
+
'not_tested',
|
|
1613
|
+
'prefer_not_to_say',
|
|
544
1614
|
]);
|
|
545
1615
|
const geneticCounselingOpts = opts([
|
|
546
|
-
'already_done',
|
|
1616
|
+
'already_done',
|
|
1617
|
+
'open',
|
|
1618
|
+
'not_needed',
|
|
1619
|
+
'against',
|
|
1620
|
+
'prefer_not_to_say',
|
|
547
1621
|
]);
|
|
548
1622
|
const vaccinationsOpts = opts([
|
|
549
|
-
'covid_full',
|
|
550
|
-
'
|
|
1623
|
+
'covid_full',
|
|
1624
|
+
'covid_boosted',
|
|
1625
|
+
'flu_annual',
|
|
1626
|
+
'hpv',
|
|
1627
|
+
'hepatitis',
|
|
1628
|
+
'tetanus',
|
|
1629
|
+
'mmr',
|
|
1630
|
+
'all_standard',
|
|
1631
|
+
'none',
|
|
1632
|
+
'prefer_not_to_say',
|
|
551
1633
|
]);
|
|
552
1634
|
const healthSafetyPracticeOpts = opts([
|
|
553
|
-
'very_careful',
|
|
1635
|
+
'very_careful',
|
|
1636
|
+
'mostly',
|
|
1637
|
+
'average',
|
|
1638
|
+
'relaxed',
|
|
1639
|
+
'prefer_not_to_say',
|
|
554
1640
|
]);
|
|
555
1641
|
const bodyPositivityOpts = opts([
|
|
556
|
-
'very_positive',
|
|
1642
|
+
'very_positive',
|
|
1643
|
+
'positive',
|
|
1644
|
+
'working_on_it',
|
|
1645
|
+
'struggles',
|
|
1646
|
+
'prefer_not_to_say',
|
|
557
1647
|
]);
|
|
558
1648
|
const performanceDrugsOpts = opts([
|
|
559
|
-
'never',
|
|
1649
|
+
'never',
|
|
1650
|
+
'past_use',
|
|
1651
|
+
'currently',
|
|
1652
|
+
'supplements_only',
|
|
1653
|
+
'prefer_not_to_say',
|
|
560
1654
|
]);
|
|
561
1655
|
const appearanceSurgeryOpts = opts([
|
|
562
|
-
'never',
|
|
1656
|
+
'never',
|
|
1657
|
+
'have_had',
|
|
1658
|
+
'open',
|
|
1659
|
+
'against',
|
|
1660
|
+
'prefer_not_to_say',
|
|
563
1661
|
]);
|
|
564
1662
|
const mentalHealthOpennessOpts = opts([
|
|
565
|
-
'very_open',
|
|
1663
|
+
'very_open',
|
|
1664
|
+
'somewhat',
|
|
1665
|
+
'private',
|
|
1666
|
+
'uncomfortable',
|
|
1667
|
+
'prefer_not_to_say',
|
|
566
1668
|
]);
|
|
567
1669
|
const stressManagementOpts = opts([
|
|
568
|
-
'exercise',
|
|
569
|
-
'
|
|
1670
|
+
'exercise',
|
|
1671
|
+
'meditation',
|
|
1672
|
+
'therapy',
|
|
1673
|
+
'social',
|
|
1674
|
+
'creative',
|
|
1675
|
+
'nature',
|
|
1676
|
+
'unhealthy',
|
|
1677
|
+
'dont_manage',
|
|
1678
|
+
'prefer_not_to_say',
|
|
570
1679
|
]);
|
|
571
1680
|
// ─── Location sub-schema ─────────────────────────────────────────────────────
|
|
572
1681
|
const locationSchema = z.object({
|
|
573
1682
|
display: z.string(),
|
|
574
|
-
coordinates: z
|
|
1683
|
+
coordinates: z
|
|
1684
|
+
.object({
|
|
575
1685
|
lat: z.number(),
|
|
576
1686
|
lng: z.number(),
|
|
577
|
-
})
|
|
1687
|
+
})
|
|
1688
|
+
.optional(),
|
|
578
1689
|
});
|
|
579
1690
|
// ─── Family member sub-schema (object_array itemShape) ───────────────────────
|
|
580
1691
|
const familyMemberSchema = z.object({
|
|
@@ -600,15 +1711,21 @@ export const fullProfileSchema = z.object({
|
|
|
600
1711
|
mbtiType: mbtiTypeOpts.optional(),
|
|
601
1712
|
// ── 02. Story & Prompts ────────────────────────────────────────────────────
|
|
602
1713
|
bio: z.string().trim().max(500).optional(),
|
|
603
|
-
prompts: z
|
|
1714
|
+
prompts: z
|
|
1715
|
+
.array(z.object({
|
|
604
1716
|
prompt: z.string(),
|
|
605
1717
|
answer: z.string().max(250),
|
|
606
|
-
}))
|
|
607
|
-
|
|
1718
|
+
}))
|
|
1719
|
+
.min(1)
|
|
1720
|
+
.max(3)
|
|
1721
|
+
.optional(),
|
|
1722
|
+
voicePrompt: z
|
|
1723
|
+
.object({
|
|
608
1724
|
url: z.string().url(),
|
|
609
1725
|
assetId: z.string(),
|
|
610
1726
|
durationSeconds: z.number().max(30),
|
|
611
|
-
})
|
|
1727
|
+
})
|
|
1728
|
+
.optional(),
|
|
612
1729
|
bornTo: z.string().trim().max(200).optional(),
|
|
613
1730
|
senseOfSelf: z.string().trim().max(200).optional(),
|
|
614
1731
|
selfKeywords: z.array(selfKeywordsOpts).max(5).optional(),
|
|
@@ -637,6 +1754,17 @@ export const fullProfileSchema = z.object({
|
|
|
637
1754
|
cannabis: cannabisOpts.optional(),
|
|
638
1755
|
childrenPlans: childrenPlansOpts.optional(),
|
|
639
1756
|
lookingForEntrepreneur: lookingForEntrepreneurOpts.optional(),
|
|
1757
|
+
subCaste: z.string().trim().max(100).optional(),
|
|
1758
|
+
gotra: z.string().trim().max(100).optional(),
|
|
1759
|
+
nakshatra: nakshatraOpts.optional(),
|
|
1760
|
+
rashi: rashiOpts.optional(),
|
|
1761
|
+
birthTime: z.string().regex(/^\d{2}:\d{2}$/).optional(),
|
|
1762
|
+
birthPlace: z.string().trim().max(100).optional(),
|
|
1763
|
+
numberOfChildren: z.number().int().min(0).max(10).optional(),
|
|
1764
|
+
previousMarriages: z.number().int().min(0).max(5).optional(),
|
|
1765
|
+
nativePlace: z.string().trim().max(100).optional(),
|
|
1766
|
+
hometownState: hometownStateOpts.optional(),
|
|
1767
|
+
preferredGenders: z.array(genderOpts).optional(),
|
|
640
1768
|
// ── 04. What I'm Looking For ───────────────────────────────────────────────
|
|
641
1769
|
whatImLookingFor: z.string().trim().max(300).optional(),
|
|
642
1770
|
relationshipRole: z.array(relationshipRoleOpts).max(3).optional(),
|
|
@@ -761,6 +1889,13 @@ export const fullProfileSchema = z.object({
|
|
|
761
1889
|
contraceptionView: contraceptionViewOpts.optional(),
|
|
762
1890
|
parentsExpectation: parentsExpectationOpts.optional(),
|
|
763
1891
|
parentsContactNumber: z.string().trim().max(15).optional(),
|
|
1892
|
+
fatherOccupation: parentOccupationOpts.optional(),
|
|
1893
|
+
motherOccupation: parentOccupationOpts.optional(),
|
|
1894
|
+
numberOfSiblings: z.number().int().min(0).max(10).optional(),
|
|
1895
|
+
siblingsMarried: z.number().int().min(0).max(10).optional(),
|
|
1896
|
+
familyAffluence: familyAffluenceOpts.optional(),
|
|
1897
|
+
familyValues: familyValuesOpts.optional(),
|
|
1898
|
+
profileCreatedBy: profileCreatedByOpts.optional(),
|
|
764
1899
|
// ── 15. Finance & Legal (Tier 3) ───────────────────────────────────────────
|
|
765
1900
|
incomeRange: incomeRangeOpts.optional(),
|
|
766
1901
|
financialAttitude: financialAttitudeOpts.optional(),
|
|
@@ -776,6 +1911,9 @@ export const fullProfileSchema = z.object({
|
|
|
776
1911
|
legalIssues: legalIssuesOpts.optional(),
|
|
777
1912
|
drivingRecord: drivingRecordOpts.optional(),
|
|
778
1913
|
billSplitting: billSplittingOpts.optional(),
|
|
1914
|
+
grewUpIn: z.string().trim().max(100).optional(),
|
|
1915
|
+
countryOfResidence: countryOfResidenceOpts.optional(),
|
|
1916
|
+
visaType: visaTypeOpts.optional(),
|
|
779
1917
|
// ── 16. Health & Wellness (Tier 3) ─────────────────────────────────────────
|
|
780
1918
|
accessibilityNeeds: accessibilityNeedsOpts.optional(),
|
|
781
1919
|
chronicCondition: chronicConditionOpts.optional(),
|
|
@@ -799,6 +1937,9 @@ export const fullProfileSchema = z.object({
|
|
|
799
1937
|
appearanceSurgery: appearanceSurgeryOpts.optional(),
|
|
800
1938
|
mentalHealthOpenness: mentalHealthOpennessOpts.optional(),
|
|
801
1939
|
stressManagement: stressManagementOpts.optional(),
|
|
1940
|
+
// ── Meta Fields (system-level) ───────────────────────────────────────────────
|
|
1941
|
+
hardPreferences: z.array(z.string()).optional(),
|
|
1942
|
+
softFilters: z.array(z.string()).optional(),
|
|
802
1943
|
});
|
|
803
1944
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
804
1945
|
// createProfileSchema — onboarding fields only (isOnboarding: true)
|
|
@@ -816,12 +1957,22 @@ export const createProfileSchema = z.object({
|
|
|
816
1957
|
sexualOrientation: sexualOrientationOpts,
|
|
817
1958
|
relationshipStructure: relationshipStructureOpts,
|
|
818
1959
|
bio: z.string().trim().max(500),
|
|
819
|
-
prompts: z
|
|
1960
|
+
prompts: z
|
|
1961
|
+
.array(z.object({
|
|
820
1962
|
prompt: z.string(),
|
|
821
1963
|
answer: z.string().max(250),
|
|
822
|
-
}))
|
|
1964
|
+
}))
|
|
1965
|
+
.min(1)
|
|
1966
|
+
.max(3),
|
|
1967
|
+
// New required onboarding fields for matchmaking
|
|
1968
|
+
preferredGenders: z.array(genderOpts).min(1),
|
|
1969
|
+
hometownState: hometownStateOpts,
|
|
1970
|
+
familyReligion: religionOpts,
|
|
1971
|
+
motherTongue: motherTongueOpts,
|
|
1972
|
+
relationshipStatus: relationshipStatusOpts,
|
|
823
1973
|
// Optional onboarding fields (isOnboardingOptional: true)
|
|
824
1974
|
mbtiType: mbtiTypeOpts.optional(),
|
|
1975
|
+
preferredAgeRange: z.number().min(18).max(70).optional(),
|
|
825
1976
|
});
|
|
826
1977
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
827
1978
|
// updateProfileSchema — all fields optional
|