dating-schema 0.5.0 → 0.7.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 +48 -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 +808 -12
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +1460 -267
- package/dist/profile.js.map +1 -1
- package/package.json +48 -48
package/dist/profile.js
CHANGED
|
@@ -13,568 +13,1707 @@ 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
|
+
'cricket',
|
|
628
|
+
'football',
|
|
629
|
+
'badminton',
|
|
630
|
+
'tennis',
|
|
631
|
+
'basketball',
|
|
632
|
+
'table_tennis',
|
|
633
|
+
'skating',
|
|
634
|
+
'dj',
|
|
635
|
+
'binge_watching',
|
|
636
|
+
'k_drama',
|
|
637
|
+
'backpacking',
|
|
638
|
+
'road_trips',
|
|
639
|
+
'stargazing',
|
|
640
|
+
'journaling',
|
|
641
|
+
'self_improvement',
|
|
642
|
+
'activism',
|
|
643
|
+
'mentoring',
|
|
644
|
+
'networking',
|
|
645
|
+
'entrepreneurship',
|
|
646
|
+
'languages',
|
|
647
|
+
'science',
|
|
648
|
+
'interior_design',
|
|
649
|
+
'fashion',
|
|
650
|
+
'skincare',
|
|
651
|
+
'thrifting',
|
|
652
|
+
'street_food',
|
|
653
|
+
'fine_dining',
|
|
654
|
+
'food_photography',
|
|
655
|
+
'other',
|
|
185
656
|
]);
|
|
186
657
|
const musicGenresOpts = opts([
|
|
187
|
-
'pop',
|
|
188
|
-
'
|
|
189
|
-
'
|
|
190
|
-
'
|
|
658
|
+
'pop',
|
|
659
|
+
'rock',
|
|
660
|
+
'hip_hop',
|
|
661
|
+
'rnb',
|
|
662
|
+
'jazz',
|
|
663
|
+
'classical',
|
|
664
|
+
'electronic',
|
|
665
|
+
'edm',
|
|
666
|
+
'country',
|
|
667
|
+
'folk',
|
|
668
|
+
'indie',
|
|
669
|
+
'metal',
|
|
670
|
+
'punk',
|
|
671
|
+
'reggae',
|
|
672
|
+
'latin',
|
|
673
|
+
'kpop',
|
|
674
|
+
'bollywood',
|
|
675
|
+
'sufi',
|
|
676
|
+
'ghazal',
|
|
677
|
+
'carnatic',
|
|
678
|
+
'hindustani_classical',
|
|
679
|
+
'devotional',
|
|
680
|
+
'lofi',
|
|
681
|
+
'ambient',
|
|
682
|
+
'other',
|
|
191
683
|
]);
|
|
192
684
|
const gamingInterestOpts = opts([
|
|
193
|
-
'hardcore',
|
|
194
|
-
'
|
|
685
|
+
'hardcore',
|
|
686
|
+
'casual',
|
|
687
|
+
'mobile_only',
|
|
688
|
+
'board_tabletop',
|
|
689
|
+
'retro',
|
|
690
|
+
'not_a_gamer',
|
|
691
|
+
'prefer_not_to_say',
|
|
195
692
|
]);
|
|
196
693
|
const readingHabitOpts = opts([
|
|
197
|
-
'voracious',
|
|
198
|
-
'
|
|
694
|
+
'voracious',
|
|
695
|
+
'regular',
|
|
696
|
+
'occasional',
|
|
697
|
+
'audiobooks',
|
|
698
|
+
'articles_only',
|
|
699
|
+
'not_a_reader',
|
|
700
|
+
'prefer_not_to_say',
|
|
199
701
|
]);
|
|
200
702
|
const artApreciationOpts = opts([
|
|
201
|
-
'creator',
|
|
703
|
+
'creator',
|
|
704
|
+
'hobbyist',
|
|
705
|
+
'appreciator',
|
|
706
|
+
'casual',
|
|
707
|
+
'not_into_art',
|
|
708
|
+
'prefer_not_to_say',
|
|
202
709
|
]);
|
|
203
710
|
const eventPreferenceOpts = opts([
|
|
204
|
-
'concerts',
|
|
205
|
-
'
|
|
206
|
-
'
|
|
207
|
-
'
|
|
711
|
+
'concerts',
|
|
712
|
+
'festivals',
|
|
713
|
+
'sports_events',
|
|
714
|
+
'comedy_shows',
|
|
715
|
+
'theater_plays',
|
|
716
|
+
'art_exhibitions',
|
|
717
|
+
'food_festivals',
|
|
718
|
+
'book_readings',
|
|
719
|
+
'hackathons',
|
|
720
|
+
'spiritual_gatherings',
|
|
721
|
+
'house_parties',
|
|
722
|
+
'club_nights',
|
|
723
|
+
'outdoor_adventures',
|
|
724
|
+
'workshops',
|
|
725
|
+
'prefer_not_to_say',
|
|
208
726
|
]);
|
|
209
727
|
const riskAppetiteOpts = opts([
|
|
210
|
-
'thrill_seeker',
|
|
728
|
+
'thrill_seeker',
|
|
729
|
+
'adventurous',
|
|
730
|
+
'moderate',
|
|
731
|
+
'cautious',
|
|
732
|
+
'risk_averse',
|
|
733
|
+
'prefer_not_to_say',
|
|
211
734
|
]);
|
|
212
735
|
const volunteerInterestOpts = opts([
|
|
213
|
-
'environment',
|
|
214
|
-
'
|
|
215
|
-
'
|
|
736
|
+
'environment',
|
|
737
|
+
'animal_welfare',
|
|
738
|
+
'education_literacy',
|
|
739
|
+
'poverty',
|
|
740
|
+
'health',
|
|
741
|
+
'mental_health',
|
|
742
|
+
'gender_equality',
|
|
743
|
+
'lgbtq_rights',
|
|
744
|
+
'disability',
|
|
745
|
+
'children',
|
|
746
|
+
'elderly',
|
|
747
|
+
'disaster_relief',
|
|
748
|
+
'human_rights',
|
|
749
|
+
'tech_for_good',
|
|
750
|
+
'none',
|
|
751
|
+
'prefer_not_to_say',
|
|
216
752
|
]);
|
|
217
753
|
const socialCircleSizeOpts = opts([
|
|
218
|
-
'small',
|
|
754
|
+
'small',
|
|
755
|
+
'medium',
|
|
756
|
+
'large',
|
|
757
|
+
'mostly_solo',
|
|
758
|
+
'prefer_not_to_say',
|
|
219
759
|
]);
|
|
220
760
|
// ─── 09. Values & Beliefs ────────────────────────────────────────────────────
|
|
221
761
|
const lifeGoalsOpts = opts([
|
|
222
|
-
'build_family',
|
|
223
|
-
'
|
|
224
|
-
'
|
|
762
|
+
'build_family',
|
|
763
|
+
'career_success',
|
|
764
|
+
'financial_freedom',
|
|
765
|
+
'travel_world',
|
|
766
|
+
'make_impact',
|
|
767
|
+
'creative_fulfillment',
|
|
768
|
+
'spiritual_growth',
|
|
769
|
+
'education',
|
|
770
|
+
'start_business',
|
|
771
|
+
'buy_home',
|
|
772
|
+
'early_retirement',
|
|
773
|
+
'health_longevity',
|
|
774
|
+
'find_love',
|
|
775
|
+
'self_discovery',
|
|
776
|
+
'leave_legacy',
|
|
225
777
|
'prefer_not_to_say',
|
|
226
778
|
]);
|
|
227
779
|
const politicalOrientationOpts = opts([
|
|
228
|
-
'liberal',
|
|
780
|
+
'liberal',
|
|
781
|
+
'moderate',
|
|
782
|
+
'conservative',
|
|
783
|
+
'apolitical',
|
|
784
|
+
'other',
|
|
785
|
+
'prefer_not_to_say',
|
|
229
786
|
]);
|
|
230
787
|
const environmentalValuesOpts = opts([
|
|
231
|
-
'very_eco',
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
'
|
|
788
|
+
'very_eco',
|
|
789
|
+
'trying',
|
|
790
|
+
'somewhat',
|
|
791
|
+
'not_priority',
|
|
792
|
+
'prefer_not_to_say',
|
|
235
793
|
]);
|
|
794
|
+
const organDonorOpts = opts(['yes', 'planning', 'open', 'no', 'prefer_not_to_say']);
|
|
236
795
|
const spiritualPracticeOpts = opts([
|
|
237
|
-
'daily_meditation',
|
|
238
|
-
'
|
|
796
|
+
'daily_meditation',
|
|
797
|
+
'yoga_regular',
|
|
798
|
+
'prayer',
|
|
799
|
+
'mindfulness',
|
|
800
|
+
'nature_spirituality',
|
|
801
|
+
'no_practice',
|
|
802
|
+
'exploring',
|
|
803
|
+
'prefer_not_to_say',
|
|
239
804
|
]);
|
|
240
805
|
const astrologyBeliefOpts = opts([
|
|
241
|
-
'strong_believer',
|
|
806
|
+
'strong_believer',
|
|
807
|
+
'casual',
|
|
808
|
+
'skeptical',
|
|
809
|
+
'dont_believe',
|
|
810
|
+
'prefer_not_to_say',
|
|
242
811
|
]);
|
|
243
812
|
// ─── 10. Career & Work ───────────────────────────────────────────────────────
|
|
244
813
|
const careerStageOpts = opts([
|
|
245
|
-
'student',
|
|
246
|
-
'
|
|
814
|
+
'student',
|
|
815
|
+
'just_starting',
|
|
816
|
+
'mid_career',
|
|
817
|
+
'senior',
|
|
818
|
+
'entrepreneur',
|
|
819
|
+
'freelancer',
|
|
820
|
+
'career_break',
|
|
821
|
+
'retired',
|
|
822
|
+
'prefer_not_to_say',
|
|
247
823
|
]);
|
|
248
824
|
const workLocationModeOpts = opts([
|
|
249
|
-
'office',
|
|
825
|
+
'office',
|
|
826
|
+
'remote',
|
|
827
|
+
'hybrid',
|
|
828
|
+
'freelance_flexible',
|
|
829
|
+
'not_working',
|
|
830
|
+
'prefer_not_to_say',
|
|
250
831
|
]);
|
|
251
832
|
const workTravelFrequencyOpts = opts([
|
|
252
|
-
'never',
|
|
833
|
+
'never',
|
|
834
|
+
'rarely',
|
|
835
|
+
'monthly',
|
|
836
|
+
'weekly',
|
|
837
|
+
'constantly',
|
|
838
|
+
'prefer_not_to_say',
|
|
253
839
|
]);
|
|
254
840
|
const retirementPlanOpts = opts([
|
|
255
|
-
'early_retire',
|
|
841
|
+
'early_retire',
|
|
842
|
+
'standard',
|
|
843
|
+
'work_forever',
|
|
844
|
+
'passion_project',
|
|
845
|
+
'no_plan',
|
|
846
|
+
'prefer_not_to_say',
|
|
256
847
|
]);
|
|
257
848
|
// ─── 11. Lifestyle & Daily Life ──────────────────────────────────────────────
|
|
258
849
|
const chronotypeOpts = opts([
|
|
259
|
-
'early_bird',
|
|
850
|
+
'early_bird',
|
|
851
|
+
'night_owl',
|
|
852
|
+
'in_between',
|
|
853
|
+
'depends',
|
|
854
|
+
'prefer_not_to_say',
|
|
260
855
|
]);
|
|
261
856
|
const sleepScheduleOpts = opts([
|
|
262
|
-
'before_10pm',
|
|
857
|
+
'before_10pm',
|
|
858
|
+
'10pm_midnight',
|
|
859
|
+
'midnight_2am',
|
|
860
|
+
'after_2am',
|
|
861
|
+
'irregular',
|
|
862
|
+
'prefer_not_to_say',
|
|
263
863
|
]);
|
|
264
864
|
const fitnessLevelOpts = opts([
|
|
265
|
-
'very_active',
|
|
865
|
+
'very_active',
|
|
866
|
+
'active',
|
|
867
|
+
'sometimes',
|
|
868
|
+
'rarely',
|
|
869
|
+
'not_active',
|
|
870
|
+
'prefer_not_to_say',
|
|
266
871
|
]);
|
|
267
872
|
const travelFrequencyOpts = opts([
|
|
268
|
-
'every_month',
|
|
873
|
+
'every_month',
|
|
874
|
+
'few_times_year',
|
|
875
|
+
'once_a_year',
|
|
876
|
+
'rarely',
|
|
877
|
+
'never',
|
|
878
|
+
'prefer_not_to_say',
|
|
269
879
|
]);
|
|
270
880
|
const livingSituationOpts = opts([
|
|
271
|
-
'alone',
|
|
881
|
+
'alone',
|
|
882
|
+
'roommates',
|
|
883
|
+
'family',
|
|
884
|
+
'partner',
|
|
885
|
+
'kids',
|
|
886
|
+
'other',
|
|
887
|
+
'prefer_not_to_say',
|
|
272
888
|
]);
|
|
273
889
|
const relocationWillingnessOpts = opts([
|
|
274
|
-
'very_willing',
|
|
890
|
+
'very_willing',
|
|
891
|
+
'open',
|
|
892
|
+
'prefer_not',
|
|
893
|
+
'cant',
|
|
894
|
+
'prefer_not_to_say',
|
|
275
895
|
]);
|
|
276
896
|
const petPreferenceOpts = opts([
|
|
277
|
-
'dog_owner',
|
|
278
|
-
'
|
|
897
|
+
'dog_owner',
|
|
898
|
+
'cat_owner',
|
|
899
|
+
'have_other',
|
|
900
|
+
'love_no_pets',
|
|
901
|
+
'want_someday',
|
|
902
|
+
'allergic',
|
|
903
|
+
'not_pet_person',
|
|
904
|
+
'prefer_not_to_say',
|
|
279
905
|
]);
|
|
280
906
|
const cookingLevelOpts = opts([
|
|
281
|
-
'chef_level',
|
|
282
|
-
'
|
|
907
|
+
'chef_level',
|
|
908
|
+
'regular',
|
|
909
|
+
'follow_recipe',
|
|
910
|
+
'basics',
|
|
911
|
+
'takeout',
|
|
912
|
+
'willing_to_learn',
|
|
913
|
+
'prefer_not_to_say',
|
|
283
914
|
]);
|
|
284
915
|
const tidinessOpts = opts([
|
|
285
|
-
'neat_freak',
|
|
286
|
-
'
|
|
916
|
+
'neat_freak',
|
|
917
|
+
'generally_tidy',
|
|
918
|
+
'organized_chaos',
|
|
919
|
+
'messy',
|
|
920
|
+
'need_help',
|
|
921
|
+
'prefer_not_to_say',
|
|
287
922
|
]);
|
|
288
923
|
const choresSplitOpts = opts([
|
|
289
|
-
'equal_split',
|
|
290
|
-
'
|
|
924
|
+
'equal_split',
|
|
925
|
+
'flexible',
|
|
926
|
+
'one_cooks_one_cleans',
|
|
927
|
+
'hire_help',
|
|
928
|
+
'dont_care',
|
|
929
|
+
'prefer_not_to_say',
|
|
291
930
|
]);
|
|
292
931
|
const domesticRoleOpts = opts([
|
|
293
|
-
'traditional',
|
|
932
|
+
'traditional',
|
|
933
|
+
'modern_equal',
|
|
934
|
+
'flexible',
|
|
935
|
+
'dont_believe_in_roles',
|
|
936
|
+
'prefer_not_to_say',
|
|
294
937
|
]);
|
|
295
938
|
const fashionStyleOpts = opts([
|
|
296
|
-
'casual',
|
|
297
|
-
'
|
|
939
|
+
'casual',
|
|
940
|
+
'streetwear',
|
|
941
|
+
'smart_casual',
|
|
942
|
+
'classic',
|
|
943
|
+
'bohemian',
|
|
944
|
+
'minimalist',
|
|
945
|
+
'trendy',
|
|
946
|
+
'athleisure',
|
|
947
|
+
'traditional',
|
|
948
|
+
'dont_think',
|
|
949
|
+
'prefer_not_to_say',
|
|
298
950
|
]);
|
|
299
951
|
const hygieneStandardOpts = opts([
|
|
300
|
-
'meticulous',
|
|
952
|
+
'meticulous',
|
|
953
|
+
'clean',
|
|
954
|
+
'average',
|
|
955
|
+
'relaxed',
|
|
956
|
+
'prefer_not_to_say',
|
|
301
957
|
]);
|
|
302
958
|
const vacationStyleOpts = opts([
|
|
303
|
-
'beach',
|
|
304
|
-
'
|
|
959
|
+
'beach',
|
|
960
|
+
'adventure',
|
|
961
|
+
'city',
|
|
962
|
+
'cultural',
|
|
963
|
+
'backpacking',
|
|
964
|
+
'luxury',
|
|
965
|
+
'road_trips',
|
|
966
|
+
'staycation',
|
|
967
|
+
'wellness',
|
|
968
|
+
'prefer_not_to_say',
|
|
305
969
|
]);
|
|
306
970
|
const urbanRuralOpts = opts([
|
|
307
|
-
'big_city',
|
|
971
|
+
'big_city',
|
|
972
|
+
'small_city',
|
|
973
|
+
'suburbs',
|
|
974
|
+
'rural',
|
|
975
|
+
'nomadic',
|
|
976
|
+
'prefer_not_to_say',
|
|
308
977
|
]);
|
|
309
978
|
const climatePreferenceOpts = opts([
|
|
310
|
-
'tropical',
|
|
979
|
+
'tropical',
|
|
980
|
+
'temperate',
|
|
981
|
+
'cold',
|
|
982
|
+
'dry',
|
|
983
|
+
'no_preference',
|
|
984
|
+
'prefer_not_to_say',
|
|
311
985
|
]);
|
|
312
986
|
const carOwnershipOpts = opts([
|
|
313
|
-
'own_car',
|
|
987
|
+
'own_car',
|
|
988
|
+
'planning',
|
|
989
|
+
'no_car',
|
|
990
|
+
'no_car_by_choice',
|
|
991
|
+
'prefer_not_to_say',
|
|
314
992
|
]);
|
|
315
993
|
const drivingAbilityOpts = opts([
|
|
316
|
-
'licensed',
|
|
994
|
+
'licensed',
|
|
995
|
+
'licensed_rarely',
|
|
996
|
+
'learning',
|
|
997
|
+
'no_license',
|
|
998
|
+
'prefer_not_to_say',
|
|
317
999
|
]);
|
|
318
1000
|
const timeManagementOpts = opts([
|
|
319
|
-
'always_early',
|
|
320
|
-
'
|
|
1001
|
+
'always_early',
|
|
1002
|
+
'on_time',
|
|
1003
|
+
'fashionably_late',
|
|
1004
|
+
'running_late',
|
|
1005
|
+
'time_is_construct',
|
|
1006
|
+
'prefer_not_to_say',
|
|
321
1007
|
]);
|
|
322
1008
|
const screenTimeOpts = opts([
|
|
323
|
-
'minimal',
|
|
1009
|
+
'minimal',
|
|
1010
|
+
'moderate',
|
|
1011
|
+
'heavy',
|
|
1012
|
+
'digital_detox',
|
|
1013
|
+
'prefer_not_to_say',
|
|
324
1014
|
]);
|
|
325
1015
|
const socialMediaUsageOpts = opts([
|
|
326
|
-
'very_active',
|
|
1016
|
+
'very_active',
|
|
1017
|
+
'regular',
|
|
1018
|
+
'lurker',
|
|
1019
|
+
'minimal',
|
|
1020
|
+
'no_social',
|
|
1021
|
+
'prefer_not_to_say',
|
|
327
1022
|
]);
|
|
328
1023
|
const bodyModificationsOpts = opts([
|
|
329
|
-
'tattoos',
|
|
330
|
-
'
|
|
1024
|
+
'tattoos',
|
|
1025
|
+
'piercings',
|
|
1026
|
+
'nose_piercing',
|
|
1027
|
+
'tongue_piercing',
|
|
1028
|
+
'none',
|
|
1029
|
+
'open_to_it',
|
|
1030
|
+
'prefer_not_to_say',
|
|
331
1031
|
]);
|
|
332
1032
|
const earPiercingsOpts = opts([
|
|
333
|
-
'none',
|
|
1033
|
+
'none',
|
|
1034
|
+
'single_lobe',
|
|
1035
|
+
'multiple',
|
|
1036
|
+
'stretched',
|
|
1037
|
+
'prefer_not_to_say',
|
|
334
1038
|
]);
|
|
335
1039
|
const sunSignOpts = opts([
|
|
336
|
-
'aries',
|
|
337
|
-
'
|
|
1040
|
+
'aries',
|
|
1041
|
+
'taurus',
|
|
1042
|
+
'gemini',
|
|
1043
|
+
'cancer',
|
|
1044
|
+
'leo',
|
|
1045
|
+
'virgo',
|
|
1046
|
+
'libra',
|
|
1047
|
+
'scorpio',
|
|
1048
|
+
'sagittarius',
|
|
1049
|
+
'capricorn',
|
|
1050
|
+
'aquarius',
|
|
1051
|
+
'pisces',
|
|
1052
|
+
'prefer_not_to_say',
|
|
338
1053
|
]);
|
|
339
1054
|
const loveLanguageOpts = opts([
|
|
340
|
-
'words_of_affirmation',
|
|
341
|
-
'
|
|
1055
|
+
'words_of_affirmation',
|
|
1056
|
+
'quality_time',
|
|
1057
|
+
'receiving_gifts',
|
|
1058
|
+
'acts_of_service',
|
|
1059
|
+
'physical_touch',
|
|
1060
|
+
'prefer_not_to_say',
|
|
342
1061
|
]);
|
|
343
1062
|
// ─── 12. Cognitive & Intellectual ────────────────────────────────────────────
|
|
344
1063
|
const intellectualNeedOpts = opts([
|
|
345
|
-
'essential',
|
|
1064
|
+
'essential',
|
|
1065
|
+
'very_important',
|
|
1066
|
+
'nice_to_have',
|
|
1067
|
+
'not_important',
|
|
1068
|
+
'prefer_not_to_say',
|
|
346
1069
|
]);
|
|
347
1070
|
const cognitiveBandOpts = opts([
|
|
348
|
-
'analytical',
|
|
1071
|
+
'analytical',
|
|
1072
|
+
'creative',
|
|
1073
|
+
'balanced',
|
|
1074
|
+
'practical',
|
|
1075
|
+
'philosophical',
|
|
1076
|
+
'prefer_not_to_say',
|
|
349
1077
|
]);
|
|
350
1078
|
const learningPathOpts = opts([
|
|
351
|
-
'self_taught',
|
|
1079
|
+
'self_taught',
|
|
1080
|
+
'formal',
|
|
1081
|
+
'experiential',
|
|
1082
|
+
'social',
|
|
1083
|
+
'mixed',
|
|
1084
|
+
'prefer_not_to_say',
|
|
352
1085
|
]);
|
|
353
1086
|
const knowledgeAreasOpts = opts([
|
|
354
|
-
'technology',
|
|
355
|
-
'
|
|
356
|
-
'
|
|
1087
|
+
'technology',
|
|
1088
|
+
'science',
|
|
1089
|
+
'arts',
|
|
1090
|
+
'business',
|
|
1091
|
+
'health',
|
|
1092
|
+
'law',
|
|
1093
|
+
'psychology',
|
|
1094
|
+
'philosophy',
|
|
1095
|
+
'history',
|
|
1096
|
+
'languages',
|
|
1097
|
+
'math',
|
|
1098
|
+
'environment',
|
|
1099
|
+
'education',
|
|
1100
|
+
'sports',
|
|
1101
|
+
'cooking_food',
|
|
1102
|
+
'music_knowledge',
|
|
1103
|
+
'other',
|
|
1104
|
+
'prefer_not_to_say',
|
|
357
1105
|
]);
|
|
358
1106
|
const learningMethodsOpts = opts([
|
|
359
|
-
'reading',
|
|
360
|
-
'
|
|
1107
|
+
'reading',
|
|
1108
|
+
'videos',
|
|
1109
|
+
'podcasts',
|
|
1110
|
+
'courses',
|
|
1111
|
+
'workshops',
|
|
1112
|
+
'mentorship',
|
|
1113
|
+
'hands_on',
|
|
1114
|
+
'discussion',
|
|
1115
|
+
'prefer_not_to_say',
|
|
361
1116
|
]);
|
|
362
1117
|
const intellectualExperienceOpts = opts([
|
|
363
|
-
'expert',
|
|
1118
|
+
'expert',
|
|
1119
|
+
'advanced',
|
|
1120
|
+
'intermediate',
|
|
1121
|
+
'growing',
|
|
1122
|
+
'beginner',
|
|
1123
|
+
'prefer_not_to_say',
|
|
364
1124
|
]);
|
|
365
1125
|
const intellectualGoalsOpts = opts([
|
|
366
|
-
'master_skill',
|
|
367
|
-
'
|
|
1126
|
+
'master_skill',
|
|
1127
|
+
'write_book',
|
|
1128
|
+
'learn_language',
|
|
1129
|
+
'get_degree',
|
|
1130
|
+
'start_research',
|
|
1131
|
+
'teach_others',
|
|
1132
|
+
'build_something',
|
|
1133
|
+
'none_specific',
|
|
1134
|
+
'prefer_not_to_say',
|
|
368
1135
|
]);
|
|
369
1136
|
const goalSettingStyleOpts = opts([
|
|
370
|
-
'detailed_planner',
|
|
371
|
-
'
|
|
1137
|
+
'detailed_planner',
|
|
1138
|
+
'broad_goals',
|
|
1139
|
+
'vision_board',
|
|
1140
|
+
'go_with_flow',
|
|
1141
|
+
'no_goals',
|
|
1142
|
+
'prefer_not_to_say',
|
|
372
1143
|
]);
|
|
373
1144
|
const teachingMentoringOpts = opts([
|
|
374
|
-
'love_teaching',
|
|
1145
|
+
'love_teaching',
|
|
1146
|
+
'enjoy',
|
|
1147
|
+
'neutral',
|
|
1148
|
+
'prefer_learning',
|
|
1149
|
+
'not_interested',
|
|
1150
|
+
'prefer_not_to_say',
|
|
375
1151
|
]);
|
|
376
1152
|
// ─── 13. Relationship & Intimacy ─────────────────────────────────────────────
|
|
377
1153
|
const intimacyImportanceOpts = opts([
|
|
378
|
-
'very_important',
|
|
1154
|
+
'very_important',
|
|
1155
|
+
'important',
|
|
1156
|
+
'moderate',
|
|
1157
|
+
'low',
|
|
1158
|
+
'not_important',
|
|
1159
|
+
'prefer_not_to_say',
|
|
379
1160
|
]);
|
|
380
1161
|
const loveLanguageDetailedOpts = opts([
|
|
381
|
-
'words_of_affirmation',
|
|
382
|
-
'
|
|
1162
|
+
'words_of_affirmation',
|
|
1163
|
+
'quality_time',
|
|
1164
|
+
'receiving_gifts',
|
|
1165
|
+
'acts_of_service',
|
|
1166
|
+
'physical_touch',
|
|
1167
|
+
'prefer_not_to_say',
|
|
383
1168
|
]);
|
|
384
1169
|
const affectionLevelOpts = opts([
|
|
385
|
-
'very_affectionate',
|
|
386
|
-
'
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
'
|
|
1170
|
+
'very_affectionate',
|
|
1171
|
+
'moderately',
|
|
1172
|
+
'reserved',
|
|
1173
|
+
'not_affectionate',
|
|
1174
|
+
'depends',
|
|
1175
|
+
'prefer_not_to_say',
|
|
390
1176
|
]);
|
|
1177
|
+
const pdaComfortOpts = opts(['love_it', 'some', 'minimal', 'none', 'prefer_not_to_say']);
|
|
391
1178
|
const conflictStyleOpts = opts([
|
|
392
|
-
'talk_it_out',
|
|
393
|
-
'
|
|
1179
|
+
'talk_it_out',
|
|
1180
|
+
'cool_off_first',
|
|
1181
|
+
'avoid_conflict',
|
|
1182
|
+
'compromise',
|
|
1183
|
+
'need_mediator',
|
|
1184
|
+
'prefer_not_to_say',
|
|
394
1185
|
]);
|
|
395
1186
|
const videoDatingComfortOpts = opts([
|
|
396
|
-
'love_it',
|
|
1187
|
+
'love_it',
|
|
1188
|
+
'open',
|
|
1189
|
+
'prefer_not',
|
|
1190
|
+
'never',
|
|
1191
|
+
'prefer_not_to_say',
|
|
397
1192
|
]);
|
|
398
1193
|
const safetyPreferenceOpts = opts([
|
|
399
|
-
'public_place',
|
|
400
|
-
'
|
|
1194
|
+
'public_place',
|
|
1195
|
+
'share_location',
|
|
1196
|
+
'video_first',
|
|
1197
|
+
'bring_friend',
|
|
1198
|
+
'no_preference',
|
|
1199
|
+
'prefer_not_to_say',
|
|
401
1200
|
]);
|
|
402
1201
|
const datePreferenceOpts = opts([
|
|
403
|
-
'coffee',
|
|
404
|
-
'
|
|
1202
|
+
'coffee',
|
|
1203
|
+
'dinner',
|
|
1204
|
+
'drinks',
|
|
1205
|
+
'outdoor',
|
|
1206
|
+
'cultural',
|
|
1207
|
+
'cooking',
|
|
1208
|
+
'adventure',
|
|
1209
|
+
'picnic',
|
|
1210
|
+
'movie',
|
|
1211
|
+
'game_night',
|
|
1212
|
+
'prefer_not_to_say',
|
|
405
1213
|
]);
|
|
406
1214
|
const sexDriveOpts = opts([
|
|
407
|
-
'very_high',
|
|
1215
|
+
'very_high',
|
|
1216
|
+
'high',
|
|
1217
|
+
'moderate',
|
|
1218
|
+
'low',
|
|
1219
|
+
'very_low',
|
|
1220
|
+
'varies',
|
|
1221
|
+
'prefer_not_to_say',
|
|
408
1222
|
]);
|
|
409
1223
|
const sexualActivityLevelOpts = opts([
|
|
410
|
-
'very_active',
|
|
1224
|
+
'very_active',
|
|
1225
|
+
'active',
|
|
1226
|
+
'moderate',
|
|
1227
|
+
'low',
|
|
1228
|
+
'abstinent',
|
|
1229
|
+
'prefer_not_to_say',
|
|
411
1230
|
]);
|
|
412
1231
|
const kinkOpennessOpts = opts([
|
|
413
|
-
'very_open',
|
|
1232
|
+
'very_open',
|
|
1233
|
+
'somewhat',
|
|
1234
|
+
'vanilla',
|
|
1235
|
+
'not_interested',
|
|
1236
|
+
'prefer_not_to_say',
|
|
414
1237
|
]);
|
|
415
1238
|
const concurrentPartnersOpts = opts([
|
|
416
|
-
'strictly_one',
|
|
1239
|
+
'strictly_one',
|
|
1240
|
+
'open_to_discussion',
|
|
1241
|
+
'polyamorous',
|
|
1242
|
+
'depends',
|
|
1243
|
+
'prefer_not_to_say',
|
|
417
1244
|
]);
|
|
418
1245
|
// ─── 14. Family & Home ───────────────────────────────────────────────────────
|
|
419
1246
|
const familyTypeOpts = opts([
|
|
420
|
-
'nuclear',
|
|
1247
|
+
'nuclear',
|
|
1248
|
+
'joint',
|
|
1249
|
+
'single_parent',
|
|
1250
|
+
'blended',
|
|
1251
|
+
'no_family',
|
|
1252
|
+
'prefer_not_to_say',
|
|
421
1253
|
]);
|
|
422
1254
|
const parentingStyleOpts = opts([
|
|
423
|
-
'authoritative',
|
|
424
|
-
'
|
|
1255
|
+
'authoritative',
|
|
1256
|
+
'permissive',
|
|
1257
|
+
'attachment',
|
|
1258
|
+
'helicopter',
|
|
1259
|
+
'free_range',
|
|
1260
|
+
'equal_co_parent',
|
|
1261
|
+
'not_sure',
|
|
1262
|
+
'not_applicable',
|
|
1263
|
+
'prefer_not_to_say',
|
|
425
1264
|
]);
|
|
426
1265
|
const caregivingResponsibilityOpts = opts([
|
|
427
|
-
'elderly_parents',
|
|
428
|
-
'
|
|
1266
|
+
'elderly_parents',
|
|
1267
|
+
'disabled_family',
|
|
1268
|
+
'children',
|
|
1269
|
+
'shared',
|
|
1270
|
+
'none',
|
|
1271
|
+
'future',
|
|
1272
|
+
'prefer_not_to_say',
|
|
429
1273
|
]);
|
|
430
1274
|
const familyBuildingOpts = opts([
|
|
431
|
-
'natural',
|
|
1275
|
+
'natural',
|
|
1276
|
+
'adoption',
|
|
1277
|
+
'foster',
|
|
1278
|
+
'ivf',
|
|
1279
|
+
'surrogacy',
|
|
1280
|
+
'co_parenting',
|
|
1281
|
+
'prefer_not_to_say',
|
|
432
1282
|
]);
|
|
433
1283
|
const weddingStyleOpts = opts([
|
|
434
|
-
'grand',
|
|
435
|
-
'
|
|
1284
|
+
'grand',
|
|
1285
|
+
'intimate',
|
|
1286
|
+
'courthouse',
|
|
1287
|
+
'destination',
|
|
1288
|
+
'elopement',
|
|
1289
|
+
'dont_care',
|
|
1290
|
+
'not_marriage',
|
|
1291
|
+
'prefer_not_to_say',
|
|
436
1292
|
]);
|
|
437
1293
|
const giftGivingStyleOpts = opts([
|
|
438
|
-
'lavish',
|
|
439
|
-
'
|
|
1294
|
+
'lavish',
|
|
1295
|
+
'thoughtful',
|
|
1296
|
+
'practical',
|
|
1297
|
+
'experiences',
|
|
1298
|
+
'handmade',
|
|
1299
|
+
'minimal',
|
|
1300
|
+
'prefer_not_to_say',
|
|
440
1301
|
]);
|
|
441
1302
|
const contraceptionViewOpts = opts([
|
|
442
|
-
'pro_contraception',
|
|
443
|
-
'
|
|
1303
|
+
'pro_contraception',
|
|
1304
|
+
'open',
|
|
1305
|
+
'natural_methods',
|
|
1306
|
+
'against',
|
|
1307
|
+
'not_applicable',
|
|
1308
|
+
'prefer_not_to_say',
|
|
444
1309
|
]);
|
|
445
1310
|
const parentsExpectationOpts = opts([
|
|
446
|
-
'very_involved',
|
|
1311
|
+
'very_involved',
|
|
1312
|
+
'somewhat',
|
|
1313
|
+
'independent',
|
|
1314
|
+
'no_contact',
|
|
1315
|
+
'prefer_not_to_say',
|
|
1316
|
+
]);
|
|
1317
|
+
const parentOccupationOpts = opts([
|
|
1318
|
+
'it_software',
|
|
1319
|
+
'engineering',
|
|
1320
|
+
'healthcare',
|
|
1321
|
+
'education',
|
|
1322
|
+
'finance_accounting',
|
|
1323
|
+
'arts_entertainment',
|
|
1324
|
+
'media_communication',
|
|
1325
|
+
'business_management',
|
|
1326
|
+
'government_public',
|
|
1327
|
+
'legal',
|
|
1328
|
+
'science_research',
|
|
1329
|
+
'agriculture',
|
|
1330
|
+
'hospitality_travel',
|
|
1331
|
+
'real_estate',
|
|
1332
|
+
'retail_ecommerce',
|
|
1333
|
+
'manufacturing',
|
|
1334
|
+
'self_employed',
|
|
1335
|
+
'homemaker',
|
|
1336
|
+
'retired',
|
|
1337
|
+
'deceased',
|
|
1338
|
+
'other',
|
|
1339
|
+
'prefer_not_to_say',
|
|
1340
|
+
]);
|
|
1341
|
+
const familyAffluenceOpts = opts([
|
|
1342
|
+
'lower_middle',
|
|
1343
|
+
'middle',
|
|
1344
|
+
'upper_middle',
|
|
1345
|
+
'affluent',
|
|
1346
|
+
'wealthy',
|
|
1347
|
+
'prefer_not_to_say',
|
|
1348
|
+
]);
|
|
1349
|
+
const familyValuesOpts = opts([
|
|
1350
|
+
'orthodox',
|
|
1351
|
+
'moderate',
|
|
1352
|
+
'liberal',
|
|
1353
|
+
'very_liberal',
|
|
1354
|
+
'prefer_not_to_say',
|
|
1355
|
+
]);
|
|
1356
|
+
const profileCreatedByOpts = opts([
|
|
1357
|
+
'self',
|
|
1358
|
+
'parent',
|
|
1359
|
+
'sibling',
|
|
1360
|
+
'friend',
|
|
1361
|
+
'relative',
|
|
1362
|
+
'other',
|
|
447
1363
|
]);
|
|
448
1364
|
// ─── 15. Finance & Legal ─────────────────────────────────────────────────────
|
|
449
1365
|
const incomeRangeOpts = opts([
|
|
450
|
-
'under_3l',
|
|
451
|
-
'
|
|
1366
|
+
'under_3l',
|
|
1367
|
+
'3l_6l',
|
|
1368
|
+
'6l_10l',
|
|
1369
|
+
'10l_15l',
|
|
1370
|
+
'15l_25l',
|
|
1371
|
+
'25l_50l',
|
|
1372
|
+
'50l_1cr',
|
|
1373
|
+
'above_1cr',
|
|
1374
|
+
'prefer_not_to_say',
|
|
452
1375
|
]);
|
|
453
1376
|
const financialAttitudeOpts = opts([
|
|
454
|
-
'saver',
|
|
1377
|
+
'saver',
|
|
1378
|
+
'spender',
|
|
1379
|
+
'balanced',
|
|
1380
|
+
'investor',
|
|
1381
|
+
'minimalist',
|
|
1382
|
+
'prefer_not_to_say',
|
|
455
1383
|
]);
|
|
456
1384
|
const incomeSourcesOpts = opts([
|
|
457
|
-
'salary',
|
|
458
|
-
'
|
|
1385
|
+
'salary',
|
|
1386
|
+
'business',
|
|
1387
|
+
'freelance',
|
|
1388
|
+
'investments',
|
|
1389
|
+
'rental',
|
|
1390
|
+
'family',
|
|
1391
|
+
'pension',
|
|
1392
|
+
'no_income',
|
|
1393
|
+
'prefer_not_to_say',
|
|
459
1394
|
]);
|
|
460
1395
|
const financialIntegrationOpts = opts([
|
|
461
|
-
'fully_joint',
|
|
1396
|
+
'fully_joint',
|
|
1397
|
+
'mostly_joint',
|
|
1398
|
+
'split',
|
|
1399
|
+
'proportional',
|
|
1400
|
+
'separate',
|
|
1401
|
+
'prefer_not_to_say',
|
|
462
1402
|
]);
|
|
463
1403
|
const debtStatusOpts = opts([
|
|
464
|
-
'debt_free',
|
|
1404
|
+
'debt_free',
|
|
1405
|
+
'student_loans',
|
|
1406
|
+
'mortgage',
|
|
1407
|
+
'manageable',
|
|
1408
|
+
'significant',
|
|
1409
|
+
'prefer_not_to_say',
|
|
465
1410
|
]);
|
|
466
1411
|
const financialStabilityOpts = opts([
|
|
467
|
-
'very_stable',
|
|
1412
|
+
'very_stable',
|
|
1413
|
+
'stable',
|
|
1414
|
+
'building',
|
|
1415
|
+
'unstable',
|
|
1416
|
+
'in_crisis',
|
|
1417
|
+
'prefer_not_to_say',
|
|
468
1418
|
]);
|
|
469
1419
|
const creditScoreOpts = opts([
|
|
470
|
-
'excellent',
|
|
1420
|
+
'excellent',
|
|
1421
|
+
'good',
|
|
1422
|
+
'fair',
|
|
1423
|
+
'poor',
|
|
1424
|
+
'dont_know',
|
|
1425
|
+
'not_applicable',
|
|
1426
|
+
'prefer_not_to_say',
|
|
471
1427
|
]);
|
|
472
1428
|
const prenupViewOpts = opts([
|
|
473
|
-
'strongly_for',
|
|
1429
|
+
'strongly_for',
|
|
1430
|
+
'open',
|
|
1431
|
+
'neutral',
|
|
1432
|
+
'against',
|
|
1433
|
+
'strongly_against',
|
|
1434
|
+
'prefer_not_to_say',
|
|
474
1435
|
]);
|
|
475
1436
|
const lifeInsuranceOpts = opts([
|
|
476
|
-
'have_it',
|
|
1437
|
+
'have_it',
|
|
1438
|
+
'planning',
|
|
1439
|
+
'dont_have',
|
|
1440
|
+
'not_needed',
|
|
1441
|
+
'prefer_not_to_say',
|
|
477
1442
|
]);
|
|
478
1443
|
const healthInsuranceOpts = opts([
|
|
479
|
-
'comprehensive',
|
|
1444
|
+
'comprehensive',
|
|
1445
|
+
'basic',
|
|
1446
|
+
'employer',
|
|
1447
|
+
'none',
|
|
1448
|
+
'prefer_not_to_say',
|
|
480
1449
|
]);
|
|
481
1450
|
const citizenshipOpts = opts([
|
|
482
|
-
'citizen',
|
|
483
|
-
'
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
'
|
|
1451
|
+
'citizen',
|
|
1452
|
+
'permanent_resident',
|
|
1453
|
+
'work_visa',
|
|
1454
|
+
'student_visa',
|
|
1455
|
+
'dual_citizen',
|
|
1456
|
+
'other',
|
|
1457
|
+
'prefer_not_to_say',
|
|
487
1458
|
]);
|
|
1459
|
+
const legalIssuesOpts = opts(['none', 'minor_past', 'ongoing', 'prefer_not_to_say']);
|
|
488
1460
|
const drivingRecordOpts = opts([
|
|
489
|
-
'clean',
|
|
1461
|
+
'clean',
|
|
1462
|
+
'minor',
|
|
1463
|
+
'dui_past',
|
|
1464
|
+
'no_license',
|
|
1465
|
+
'prefer_not_to_say',
|
|
490
1466
|
]);
|
|
491
1467
|
const billSplittingOpts = opts([
|
|
492
|
-
'always_split',
|
|
493
|
-
'
|
|
1468
|
+
'always_split',
|
|
1469
|
+
'alternate',
|
|
1470
|
+
'whoever_invites',
|
|
1471
|
+
'traditional',
|
|
1472
|
+
'whoever_offers',
|
|
1473
|
+
'dont_care',
|
|
1474
|
+
'prefer_not_to_say',
|
|
1475
|
+
]);
|
|
1476
|
+
const countryOfResidenceOpts = opts([
|
|
1477
|
+
'india',
|
|
1478
|
+
'usa',
|
|
1479
|
+
'uk',
|
|
1480
|
+
'canada',
|
|
1481
|
+
'australia',
|
|
1482
|
+
'uae',
|
|
1483
|
+
'singapore',
|
|
1484
|
+
'malaysia',
|
|
1485
|
+
'germany',
|
|
1486
|
+
'new_zealand',
|
|
1487
|
+
'south_africa',
|
|
1488
|
+
'saudi_arabia',
|
|
1489
|
+
'qatar',
|
|
1490
|
+
'bahrain',
|
|
1491
|
+
'kuwait',
|
|
1492
|
+
'oman',
|
|
1493
|
+
'other',
|
|
1494
|
+
'prefer_not_to_say',
|
|
1495
|
+
]);
|
|
1496
|
+
const visaTypeOpts = opts([
|
|
1497
|
+
'h1b',
|
|
1498
|
+
'l1',
|
|
1499
|
+
'eb1',
|
|
1500
|
+
'eb2',
|
|
1501
|
+
'eb3',
|
|
1502
|
+
'opt',
|
|
1503
|
+
'green_card',
|
|
1504
|
+
'citizen',
|
|
1505
|
+
'work_permit',
|
|
1506
|
+
'student',
|
|
1507
|
+
'other',
|
|
1508
|
+
'not_applicable',
|
|
1509
|
+
'prefer_not_to_say',
|
|
494
1510
|
]);
|
|
495
1511
|
// ─── 16. Health & Wellness ───────────────────────────────────────────────────
|
|
496
1512
|
const accessibilityNeedsOpts = opts([
|
|
497
|
-
'none',
|
|
498
|
-
'
|
|
1513
|
+
'none',
|
|
1514
|
+
'physical',
|
|
1515
|
+
'visual',
|
|
1516
|
+
'hearing',
|
|
1517
|
+
'cognitive',
|
|
1518
|
+
'chronic_condition',
|
|
1519
|
+
'multiple',
|
|
1520
|
+
'prefer_not_to_say',
|
|
499
1521
|
]);
|
|
500
1522
|
const chronicConditionOpts = opts([
|
|
501
|
-
'none',
|
|
502
|
-
'
|
|
1523
|
+
'none',
|
|
1524
|
+
'diabetes',
|
|
1525
|
+
'hypertension',
|
|
1526
|
+
'asthma',
|
|
1527
|
+
'thyroid',
|
|
1528
|
+
'autoimmune',
|
|
1529
|
+
'mental_health',
|
|
1530
|
+
'other',
|
|
1531
|
+
'multiple',
|
|
1532
|
+
'prefer_not_to_say',
|
|
503
1533
|
]);
|
|
504
1534
|
const criticalIllnessHistoryOpts = opts([
|
|
505
|
-
'none',
|
|
1535
|
+
'none',
|
|
1536
|
+
'cancer_remission',
|
|
1537
|
+
'heart',
|
|
1538
|
+
'other_managed',
|
|
1539
|
+
'currently_treating',
|
|
1540
|
+
'prefer_not_to_say',
|
|
506
1541
|
]);
|
|
507
1542
|
const neurodiversityOpts = opts([
|
|
508
|
-
'neurotypical',
|
|
509
|
-
'
|
|
1543
|
+
'neurotypical',
|
|
1544
|
+
'adhd',
|
|
1545
|
+
'autism',
|
|
1546
|
+
'dyslexia',
|
|
1547
|
+
'bipolar',
|
|
1548
|
+
'ocd',
|
|
1549
|
+
'other',
|
|
1550
|
+
'multiple',
|
|
1551
|
+
'prefer_not_to_say',
|
|
510
1552
|
]);
|
|
511
1553
|
const personalityDisorderAwarenessOpts = opts([
|
|
512
|
-
'no',
|
|
1554
|
+
'no',
|
|
1555
|
+
'diagnosed_managing',
|
|
1556
|
+
'suspected',
|
|
1557
|
+
'in_treatment',
|
|
1558
|
+
'prefer_not_to_say',
|
|
513
1559
|
]);
|
|
514
1560
|
const therapyOpennessOpts = opts([
|
|
515
|
-
'currently_in',
|
|
1561
|
+
'currently_in',
|
|
1562
|
+
'past_positive',
|
|
1563
|
+
'open',
|
|
1564
|
+
'not_for_me',
|
|
1565
|
+
'never_considered',
|
|
1566
|
+
'prefer_not_to_say',
|
|
516
1567
|
]);
|
|
517
1568
|
const recoveryStatusOpts = opts([
|
|
518
|
-
'not_applicable',
|
|
1569
|
+
'not_applicable',
|
|
1570
|
+
'in_recovery',
|
|
1571
|
+
'long_term_sober',
|
|
1572
|
+
'working_on_it',
|
|
1573
|
+
'prefer_not_to_say',
|
|
519
1574
|
]);
|
|
520
1575
|
const phobiasOpts = opts([
|
|
521
|
-
'heights',
|
|
522
|
-
'
|
|
1576
|
+
'heights',
|
|
1577
|
+
'flying',
|
|
1578
|
+
'spiders',
|
|
1579
|
+
'water',
|
|
1580
|
+
'crowds',
|
|
1581
|
+
'darkness',
|
|
1582
|
+
'needles',
|
|
1583
|
+
'blood',
|
|
1584
|
+
'enclosed_spaces',
|
|
1585
|
+
'dogs',
|
|
1586
|
+
'snakes',
|
|
1587
|
+
'none',
|
|
1588
|
+
'prefer_not_to_say',
|
|
523
1589
|
]);
|
|
524
1590
|
const fertilityStatusOpts = opts([
|
|
525
|
-
'no_issues',
|
|
526
|
-
'
|
|
1591
|
+
'no_issues',
|
|
1592
|
+
'tested_fine',
|
|
1593
|
+
'undergoing_treatment',
|
|
1594
|
+
'known_challenges',
|
|
1595
|
+
'not_tested',
|
|
1596
|
+
'not_applicable',
|
|
1597
|
+
'prefer_not_to_say',
|
|
527
1598
|
]);
|
|
528
1599
|
const snoringHabitOpts = opts([
|
|
529
|
-
'never',
|
|
1600
|
+
'never',
|
|
1601
|
+
'sometimes',
|
|
1602
|
+
'regularly',
|
|
1603
|
+
'use_cpap',
|
|
1604
|
+
'dont_know',
|
|
1605
|
+
'prefer_not_to_say',
|
|
530
1606
|
]);
|
|
531
1607
|
const allergiesOpts = opts([
|
|
532
|
-
'peanuts',
|
|
533
|
-
'
|
|
1608
|
+
'peanuts',
|
|
1609
|
+
'shellfish',
|
|
1610
|
+
'dairy',
|
|
1611
|
+
'gluten',
|
|
1612
|
+
'eggs',
|
|
1613
|
+
'soy',
|
|
1614
|
+
'pollen',
|
|
1615
|
+
'dust',
|
|
1616
|
+
'pet_dander',
|
|
1617
|
+
'latex',
|
|
1618
|
+
'medication',
|
|
1619
|
+
'insect_stings',
|
|
1620
|
+
'none',
|
|
1621
|
+
'prefer_not_to_say',
|
|
534
1622
|
]);
|
|
535
1623
|
const bloodTypeOpts = opts([
|
|
536
|
-
'a_positive',
|
|
537
|
-
'
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
'
|
|
1624
|
+
'a_positive',
|
|
1625
|
+
'a_negative',
|
|
1626
|
+
'b_positive',
|
|
1627
|
+
'b_negative',
|
|
1628
|
+
'ab_positive',
|
|
1629
|
+
'ab_negative',
|
|
1630
|
+
'o_positive',
|
|
1631
|
+
'o_negative',
|
|
1632
|
+
'dont_know',
|
|
1633
|
+
'prefer_not_to_say',
|
|
541
1634
|
]);
|
|
1635
|
+
const rhFactorOpts = opts(['positive', 'negative', 'dont_know', 'prefer_not_to_say']);
|
|
542
1636
|
const geneticCarrierOpts = opts([
|
|
543
|
-
'not_carrier',
|
|
1637
|
+
'not_carrier',
|
|
1638
|
+
'carrier',
|
|
1639
|
+
'tested_clear',
|
|
1640
|
+
'not_tested',
|
|
1641
|
+
'prefer_not_to_say',
|
|
544
1642
|
]);
|
|
545
1643
|
const geneticCounselingOpts = opts([
|
|
546
|
-
'already_done',
|
|
1644
|
+
'already_done',
|
|
1645
|
+
'open',
|
|
1646
|
+
'not_needed',
|
|
1647
|
+
'against',
|
|
1648
|
+
'prefer_not_to_say',
|
|
547
1649
|
]);
|
|
548
1650
|
const vaccinationsOpts = opts([
|
|
549
|
-
'covid_full',
|
|
550
|
-
'
|
|
1651
|
+
'covid_full',
|
|
1652
|
+
'covid_boosted',
|
|
1653
|
+
'flu_annual',
|
|
1654
|
+
'hpv',
|
|
1655
|
+
'hepatitis',
|
|
1656
|
+
'tetanus',
|
|
1657
|
+
'mmr',
|
|
1658
|
+
'all_standard',
|
|
1659
|
+
'none',
|
|
1660
|
+
'prefer_not_to_say',
|
|
551
1661
|
]);
|
|
552
1662
|
const healthSafetyPracticeOpts = opts([
|
|
553
|
-
'very_careful',
|
|
1663
|
+
'very_careful',
|
|
1664
|
+
'mostly',
|
|
1665
|
+
'average',
|
|
1666
|
+
'relaxed',
|
|
1667
|
+
'prefer_not_to_say',
|
|
554
1668
|
]);
|
|
555
1669
|
const bodyPositivityOpts = opts([
|
|
556
|
-
'very_positive',
|
|
1670
|
+
'very_positive',
|
|
1671
|
+
'positive',
|
|
1672
|
+
'working_on_it',
|
|
1673
|
+
'struggles',
|
|
1674
|
+
'prefer_not_to_say',
|
|
557
1675
|
]);
|
|
558
1676
|
const performanceDrugsOpts = opts([
|
|
559
|
-
'never',
|
|
1677
|
+
'never',
|
|
1678
|
+
'past_use',
|
|
1679
|
+
'currently',
|
|
1680
|
+
'supplements_only',
|
|
1681
|
+
'prefer_not_to_say',
|
|
560
1682
|
]);
|
|
561
1683
|
const appearanceSurgeryOpts = opts([
|
|
562
|
-
'never',
|
|
1684
|
+
'never',
|
|
1685
|
+
'have_had',
|
|
1686
|
+
'open',
|
|
1687
|
+
'against',
|
|
1688
|
+
'prefer_not_to_say',
|
|
563
1689
|
]);
|
|
564
1690
|
const mentalHealthOpennessOpts = opts([
|
|
565
|
-
'very_open',
|
|
1691
|
+
'very_open',
|
|
1692
|
+
'somewhat',
|
|
1693
|
+
'private',
|
|
1694
|
+
'uncomfortable',
|
|
1695
|
+
'prefer_not_to_say',
|
|
566
1696
|
]);
|
|
567
1697
|
const stressManagementOpts = opts([
|
|
568
|
-
'exercise',
|
|
569
|
-
'
|
|
1698
|
+
'exercise',
|
|
1699
|
+
'meditation',
|
|
1700
|
+
'therapy',
|
|
1701
|
+
'social',
|
|
1702
|
+
'creative',
|
|
1703
|
+
'nature',
|
|
1704
|
+
'unhealthy',
|
|
1705
|
+
'dont_manage',
|
|
1706
|
+
'prefer_not_to_say',
|
|
570
1707
|
]);
|
|
571
1708
|
// ─── Location sub-schema ─────────────────────────────────────────────────────
|
|
572
1709
|
const locationSchema = z.object({
|
|
573
1710
|
display: z.string(),
|
|
574
|
-
coordinates: z
|
|
1711
|
+
coordinates: z
|
|
1712
|
+
.object({
|
|
575
1713
|
lat: z.number(),
|
|
576
1714
|
lng: z.number(),
|
|
577
|
-
})
|
|
1715
|
+
})
|
|
1716
|
+
.optional(),
|
|
578
1717
|
});
|
|
579
1718
|
// ─── Family member sub-schema (object_array itemShape) ───────────────────────
|
|
580
1719
|
const familyMemberSchema = z.object({
|
|
@@ -600,15 +1739,21 @@ export const fullProfileSchema = z.object({
|
|
|
600
1739
|
mbtiType: mbtiTypeOpts.optional(),
|
|
601
1740
|
// ── 02. Story & Prompts ────────────────────────────────────────────────────
|
|
602
1741
|
bio: z.string().trim().max(500).optional(),
|
|
603
|
-
prompts: z
|
|
1742
|
+
prompts: z
|
|
1743
|
+
.array(z.object({
|
|
604
1744
|
prompt: z.string(),
|
|
605
1745
|
answer: z.string().max(250),
|
|
606
|
-
}))
|
|
607
|
-
|
|
1746
|
+
}))
|
|
1747
|
+
.min(1)
|
|
1748
|
+
.max(3)
|
|
1749
|
+
.optional(),
|
|
1750
|
+
voicePrompt: z
|
|
1751
|
+
.object({
|
|
608
1752
|
url: z.string().url(),
|
|
609
1753
|
assetId: z.string(),
|
|
610
1754
|
durationSeconds: z.number().max(30),
|
|
611
|
-
})
|
|
1755
|
+
})
|
|
1756
|
+
.optional(),
|
|
612
1757
|
bornTo: z.string().trim().max(200).optional(),
|
|
613
1758
|
senseOfSelf: z.string().trim().max(200).optional(),
|
|
614
1759
|
selfKeywords: z.array(selfKeywordsOpts).max(5).optional(),
|
|
@@ -637,6 +1782,20 @@ export const fullProfileSchema = z.object({
|
|
|
637
1782
|
cannabis: cannabisOpts.optional(),
|
|
638
1783
|
childrenPlans: childrenPlansOpts.optional(),
|
|
639
1784
|
lookingForEntrepreneur: lookingForEntrepreneurOpts.optional(),
|
|
1785
|
+
subCaste: z.string().trim().max(100).optional(),
|
|
1786
|
+
gotra: z.string().trim().max(100).optional(),
|
|
1787
|
+
nakshatra: nakshatraOpts.optional(),
|
|
1788
|
+
rashi: rashiOpts.optional(),
|
|
1789
|
+
birthTime: z
|
|
1790
|
+
.string()
|
|
1791
|
+
.regex(/^\d{2}:\d{2}$/)
|
|
1792
|
+
.optional(),
|
|
1793
|
+
birthPlace: z.string().trim().max(100).optional(),
|
|
1794
|
+
numberOfChildren: z.number().int().min(0).max(10).optional(),
|
|
1795
|
+
previousMarriages: z.number().int().min(0).max(5).optional(),
|
|
1796
|
+
nativePlace: z.string().trim().max(100).optional(),
|
|
1797
|
+
hometownState: hometownStateOpts.optional(),
|
|
1798
|
+
preferredGenders: z.array(genderOpts).optional(),
|
|
640
1799
|
// ── 04. What I'm Looking For ───────────────────────────────────────────────
|
|
641
1800
|
whatImLookingFor: z.string().trim().max(300).optional(),
|
|
642
1801
|
relationshipRole: z.array(relationshipRoleOpts).max(3).optional(),
|
|
@@ -761,6 +1920,13 @@ export const fullProfileSchema = z.object({
|
|
|
761
1920
|
contraceptionView: contraceptionViewOpts.optional(),
|
|
762
1921
|
parentsExpectation: parentsExpectationOpts.optional(),
|
|
763
1922
|
parentsContactNumber: z.string().trim().max(15).optional(),
|
|
1923
|
+
fatherOccupation: parentOccupationOpts.optional(),
|
|
1924
|
+
motherOccupation: parentOccupationOpts.optional(),
|
|
1925
|
+
numberOfSiblings: z.number().int().min(0).max(10).optional(),
|
|
1926
|
+
siblingsMarried: z.number().int().min(0).max(10).optional(),
|
|
1927
|
+
familyAffluence: familyAffluenceOpts.optional(),
|
|
1928
|
+
familyValues: familyValuesOpts.optional(),
|
|
1929
|
+
profileCreatedBy: profileCreatedByOpts.optional(),
|
|
764
1930
|
// ── 15. Finance & Legal (Tier 3) ───────────────────────────────────────────
|
|
765
1931
|
incomeRange: incomeRangeOpts.optional(),
|
|
766
1932
|
financialAttitude: financialAttitudeOpts.optional(),
|
|
@@ -776,6 +1942,9 @@ export const fullProfileSchema = z.object({
|
|
|
776
1942
|
legalIssues: legalIssuesOpts.optional(),
|
|
777
1943
|
drivingRecord: drivingRecordOpts.optional(),
|
|
778
1944
|
billSplitting: billSplittingOpts.optional(),
|
|
1945
|
+
grewUpIn: z.string().trim().max(100).optional(),
|
|
1946
|
+
countryOfResidence: countryOfResidenceOpts.optional(),
|
|
1947
|
+
visaType: visaTypeOpts.optional(),
|
|
779
1948
|
// ── 16. Health & Wellness (Tier 3) ─────────────────────────────────────────
|
|
780
1949
|
accessibilityNeeds: accessibilityNeedsOpts.optional(),
|
|
781
1950
|
chronicCondition: chronicConditionOpts.optional(),
|
|
@@ -799,12 +1968,15 @@ export const fullProfileSchema = z.object({
|
|
|
799
1968
|
appearanceSurgery: appearanceSurgeryOpts.optional(),
|
|
800
1969
|
mentalHealthOpenness: mentalHealthOpennessOpts.optional(),
|
|
801
1970
|
stressManagement: stressManagementOpts.optional(),
|
|
1971
|
+
// ── Meta Fields (system-level) ───────────────────────────────────────────────
|
|
1972
|
+
hardPreferences: z.array(z.string()).optional(),
|
|
1973
|
+
softFilters: z.array(z.string()).optional(),
|
|
802
1974
|
});
|
|
803
1975
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
804
1976
|
// createProfileSchema — onboarding fields only (isOnboarding: true)
|
|
805
1977
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
806
1978
|
export const createProfileSchema = z.object({
|
|
807
|
-
// Required onboarding fields
|
|
1979
|
+
// Required onboarding fields
|
|
808
1980
|
photos: z.array(photoSchema).min(2).max(6),
|
|
809
1981
|
displayName: z.string().trim().max(50),
|
|
810
1982
|
dateOfBirth: z.coerce.date(),
|
|
@@ -816,12 +1988,33 @@ export const createProfileSchema = z.object({
|
|
|
816
1988
|
sexualOrientation: sexualOrientationOpts,
|
|
817
1989
|
relationshipStructure: relationshipStructureOpts,
|
|
818
1990
|
bio: z.string().trim().max(500),
|
|
819
|
-
|
|
1991
|
+
preferredGenders: z.array(genderOpts).min(1),
|
|
1992
|
+
familyReligion: religionOpts,
|
|
1993
|
+
motherTongue: motherTongueOpts,
|
|
1994
|
+
relationshipStatus: relationshipStatusOpts,
|
|
1995
|
+
// Optional onboarding fields
|
|
1996
|
+
hometownState: hometownStateOpts.optional(),
|
|
1997
|
+
personalReligion: religionOpts.optional(),
|
|
1998
|
+
height: heightOpts.optional(),
|
|
1999
|
+
educationLevel: educationLevelOpts.optional(),
|
|
2000
|
+
profession: professionOpts.optional(),
|
|
2001
|
+
hobbies: z.array(hobbiesOpts).max(10).optional(),
|
|
2002
|
+
diet: dietOpts.optional(),
|
|
2003
|
+
smoking: smokingOpts.optional(),
|
|
2004
|
+
alcohol: alcoholOpts.optional(),
|
|
2005
|
+
favouriteBooks: z.array(z.string().trim().max(200)).max(5).optional(),
|
|
2006
|
+
favouriteShows: z.array(z.string().trim().max(200)).max(5).optional(),
|
|
2007
|
+
idols: z.array(z.string().trim().max(200)).max(5).optional(),
|
|
2008
|
+
favouriteYoutubeChannels: z.array(z.string().trim().max(200)).max(5).optional(),
|
|
2009
|
+
mbtiType: mbtiTypeOpts.optional(),
|
|
2010
|
+
prompts: z
|
|
2011
|
+
.array(z.object({
|
|
820
2012
|
prompt: z.string(),
|
|
821
2013
|
answer: z.string().max(250),
|
|
822
|
-
}))
|
|
823
|
-
|
|
824
|
-
|
|
2014
|
+
}))
|
|
2015
|
+
.max(3)
|
|
2016
|
+
.optional(),
|
|
2017
|
+
preferredAgeRange: z.number().min(18).max(70).optional(),
|
|
825
2018
|
});
|
|
826
2019
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
827
2020
|
// updateProfileSchema — all fields optional
|