@schmock/faker 1.9.5 → 1.12.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.
@@ -0,0 +1,1141 @@
1
+ export interface FieldMapping {
2
+ keywords: string[];
3
+ fakerMethod: string;
4
+ schemaType?: string;
5
+ minScore: number;
6
+ format?: string;
7
+ trueProbability?: number;
8
+ fakerArgs?: Record<string, unknown>;
9
+ }
10
+
11
+ // ── Identity & Auth ─────────────────────────────────────────────────
12
+ const identity: FieldMapping[] = [
13
+ {
14
+ keywords: ["email"],
15
+ fakerMethod: "internet.email",
16
+ schemaType: "string",
17
+ minScore: 0.6,
18
+ format: "email",
19
+ },
20
+ {
21
+ keywords: ["username", "user_name", "login", "handle"],
22
+ fakerMethod: "internet.username",
23
+ schemaType: "string",
24
+ minScore: 0.6,
25
+ },
26
+ {
27
+ keywords: ["password", "passwd", "secret"],
28
+ fakerMethod: "internet.password",
29
+ schemaType: "string",
30
+ minScore: 0.6,
31
+ },
32
+ {
33
+ keywords: ["token", "api_key", "apikey", "access_token", "refresh_token"],
34
+ fakerMethod: "string.alphanumeric",
35
+ schemaType: "string",
36
+ minScore: 0.8,
37
+ },
38
+ ];
39
+
40
+ // ── Person ──────────────────────────────────────────────────────────
41
+ const person: FieldMapping[] = [
42
+ {
43
+ keywords: ["first_name", "firstname", "given_name", "forename"],
44
+ fakerMethod: "person.firstName",
45
+ schemaType: "string",
46
+ minScore: 0.6,
47
+ },
48
+ {
49
+ keywords: ["last_name", "lastname", "surname", "family_name"],
50
+ fakerMethod: "person.lastName",
51
+ schemaType: "string",
52
+ minScore: 0.6,
53
+ },
54
+ {
55
+ keywords: [
56
+ "full_name",
57
+ "fullname",
58
+ "display_name",
59
+ "displayname",
60
+ "full_name",
61
+ ],
62
+ fakerMethod: "person.fullName",
63
+ schemaType: "string",
64
+ minScore: 0.6,
65
+ },
66
+ {
67
+ keywords: ["name"],
68
+ fakerMethod: "person.fullName",
69
+ schemaType: "string",
70
+ minScore: 0.6,
71
+ },
72
+ {
73
+ keywords: ["middle_name", "middlename"],
74
+ fakerMethod: "person.middleName",
75
+ schemaType: "string",
76
+ minScore: 0.8,
77
+ },
78
+ {
79
+ keywords: ["prefix", "honorific", "salutation"],
80
+ fakerMethod: "person.prefix",
81
+ schemaType: "string",
82
+ minScore: 0.8,
83
+ },
84
+ {
85
+ keywords: ["suffix"],
86
+ fakerMethod: "person.suffix",
87
+ schemaType: "string",
88
+ minScore: 0.9,
89
+ },
90
+ {
91
+ keywords: ["gender", "sex"],
92
+ fakerMethod: "person.sex",
93
+ schemaType: "string",
94
+ minScore: 0.8,
95
+ },
96
+ {
97
+ keywords: ["bio", "biography"],
98
+ fakerMethod: "lorem.paragraph",
99
+ schemaType: "string",
100
+ minScore: 0.8,
101
+ },
102
+ {
103
+ keywords: [
104
+ "job_title",
105
+ "jobtitle",
106
+ "position",
107
+ "occupation",
108
+ "job",
109
+ "role",
110
+ ],
111
+ fakerMethod: "person.jobTitle",
112
+ schemaType: "string",
113
+ minScore: 0.6,
114
+ },
115
+ {
116
+ keywords: ["job_area", "department", "division", "team"],
117
+ fakerMethod: "person.jobArea",
118
+ schemaType: "string",
119
+ minScore: 0.8,
120
+ },
121
+ {
122
+ keywords: ["zodiac", "zodiac_sign"],
123
+ fakerMethod: "person.zodiacSign",
124
+ schemaType: "string",
125
+ minScore: 0.9,
126
+ },
127
+ ];
128
+
129
+ // ── Contact ─────────────────────────────────────────────────────────
130
+ const contact: FieldMapping[] = [
131
+ {
132
+ keywords: [
133
+ "phone",
134
+ "mobile",
135
+ "cell",
136
+ "tel",
137
+ "telephone",
138
+ "cellphone",
139
+ "fax",
140
+ ],
141
+ fakerMethod: "phone.number",
142
+ schemaType: "string",
143
+ minScore: 0.6,
144
+ },
145
+ {
146
+ keywords: ["imei"],
147
+ fakerMethod: "phone.imei",
148
+ schemaType: "string",
149
+ minScore: 0.9,
150
+ },
151
+ ];
152
+
153
+ // ── Address/Location ────────────────────────────────────────────────
154
+ const address: FieldMapping[] = [
155
+ {
156
+ keywords: ["street", "street_address"],
157
+ fakerMethod: "location.streetAddress",
158
+ schemaType: "string",
159
+ minScore: 0.6,
160
+ },
161
+ {
162
+ keywords: ["address", "mailing_address", "postal_address"],
163
+ fakerMethod: "location.streetAddress",
164
+ schemaType: "string",
165
+ minScore: 0.6,
166
+ },
167
+ {
168
+ keywords: ["city", "town"],
169
+ fakerMethod: "location.city",
170
+ schemaType: "string",
171
+ minScore: 0.6,
172
+ },
173
+ {
174
+ keywords: ["state", "province", "region"],
175
+ fakerMethod: "location.state",
176
+ schemaType: "string",
177
+ minScore: 0.8,
178
+ },
179
+ {
180
+ keywords: ["country"],
181
+ fakerMethod: "location.country",
182
+ schemaType: "string",
183
+ minScore: 0.8,
184
+ },
185
+ {
186
+ keywords: ["country_code", "countrycode"],
187
+ fakerMethod: "location.countryCode",
188
+ schemaType: "string",
189
+ minScore: 0.8,
190
+ },
191
+ {
192
+ keywords: ["county"],
193
+ fakerMethod: "location.county",
194
+ schemaType: "string",
195
+ minScore: 0.9,
196
+ },
197
+ {
198
+ keywords: ["continent"],
199
+ fakerMethod: "location.continent",
200
+ schemaType: "string",
201
+ minScore: 0.9,
202
+ },
203
+ {
204
+ keywords: ["zip", "zipcode", "zip_code", "postal", "postal_code"],
205
+ fakerMethod: "location.zipCode",
206
+ schemaType: "string",
207
+ minScore: 0.6,
208
+ },
209
+ {
210
+ keywords: ["latitude", "lat"],
211
+ fakerMethod: "location.latitude",
212
+ schemaType: "number",
213
+ minScore: 0.6,
214
+ },
215
+ {
216
+ keywords: ["longitude", "lng", "lon", "long"],
217
+ fakerMethod: "location.longitude",
218
+ schemaType: "number",
219
+ minScore: 0.6,
220
+ },
221
+ {
222
+ keywords: ["timezone", "time_zone", "tz"],
223
+ fakerMethod: "location.timeZone",
224
+ schemaType: "string",
225
+ minScore: 0.8,
226
+ },
227
+ {
228
+ keywords: ["building_number"],
229
+ fakerMethod: "location.buildingNumber",
230
+ schemaType: "string",
231
+ minScore: 0.9,
232
+ },
233
+ ];
234
+
235
+ // ── Internet/Network ────────────────────────────────────────────────
236
+ const internet: FieldMapping[] = [
237
+ {
238
+ keywords: ["url", "website", "link", "href", "homepage", "webpage"],
239
+ fakerMethod: "internet.url",
240
+ schemaType: "string",
241
+ minScore: 0.6,
242
+ },
243
+ {
244
+ keywords: [
245
+ "avatar",
246
+ "photo_url",
247
+ "profile_image",
248
+ "image_url",
249
+ "picture",
250
+ "thumbnail",
251
+ "icon",
252
+ ],
253
+ fakerMethod: "image.avatar",
254
+ schemaType: "string",
255
+ minScore: 0.6,
256
+ },
257
+ {
258
+ keywords: ["domain", "hostname", "domain_name"],
259
+ fakerMethod: "internet.domainName",
260
+ schemaType: "string",
261
+ minScore: 0.8,
262
+ },
263
+ {
264
+ keywords: ["ip", "ip_address", "ipaddress", "ipv4"],
265
+ fakerMethod: "internet.ipv4",
266
+ schemaType: "string",
267
+ minScore: 0.8,
268
+ },
269
+ {
270
+ keywords: ["ipv6"],
271
+ fakerMethod: "internet.ipv6",
272
+ schemaType: "string",
273
+ minScore: 0.9,
274
+ },
275
+ {
276
+ keywords: ["mac", "mac_address"],
277
+ fakerMethod: "internet.mac",
278
+ schemaType: "string",
279
+ minScore: 0.9,
280
+ },
281
+ {
282
+ keywords: ["user_agent", "useragent"],
283
+ fakerMethod: "internet.userAgent",
284
+ schemaType: "string",
285
+ minScore: 0.9,
286
+ },
287
+ {
288
+ keywords: ["port"],
289
+ fakerMethod: "internet.port",
290
+ schemaType: "number",
291
+ minScore: 0.9,
292
+ },
293
+ {
294
+ keywords: ["protocol"],
295
+ fakerMethod: "internet.protocol",
296
+ schemaType: "string",
297
+ minScore: 0.9,
298
+ },
299
+ ];
300
+
301
+ // ── IDs & Identifiers ──────────────────────────────────────────────
302
+ const ids: FieldMapping[] = [
303
+ {
304
+ keywords: ["uuid", "guid"],
305
+ fakerMethod: "string.uuid",
306
+ schemaType: "string",
307
+ minScore: 0.6,
308
+ },
309
+ {
310
+ keywords: ["sku"],
311
+ fakerMethod: "string.alphanumeric",
312
+ schemaType: "string",
313
+ minScore: 0.9,
314
+ },
315
+ {
316
+ keywords: ["slug"],
317
+ fakerMethod: "lorem.slug",
318
+ schemaType: "string",
319
+ minScore: 0.8,
320
+ },
321
+ {
322
+ keywords: ["isbn"],
323
+ fakerMethod: "commerce.isbn",
324
+ schemaType: "string",
325
+ minScore: 0.9,
326
+ },
327
+ {
328
+ keywords: ["vin"],
329
+ fakerMethod: "vehicle.vin",
330
+ schemaType: "string",
331
+ minScore: 0.9,
332
+ },
333
+ {
334
+ keywords: ["iban"],
335
+ fakerMethod: "finance.iban",
336
+ schemaType: "string",
337
+ minScore: 0.9,
338
+ },
339
+ {
340
+ keywords: ["bic", "swift"],
341
+ fakerMethod: "finance.bic",
342
+ schemaType: "string",
343
+ minScore: 0.9,
344
+ },
345
+ {
346
+ keywords: ["ssn", "social_security"],
347
+ fakerMethod: "string.numeric",
348
+ schemaType: "string",
349
+ minScore: 0.9,
350
+ },
351
+ ];
352
+
353
+ // ── Text/Content ────────────────────────────────────────────────────
354
+ const text: FieldMapping[] = [
355
+ {
356
+ keywords: [
357
+ "description",
358
+ "desc",
359
+ "summary",
360
+ "overview",
361
+ "about",
362
+ "excerpt",
363
+ ],
364
+ fakerMethod: "lorem.paragraph",
365
+ schemaType: "string",
366
+ minScore: 0.6,
367
+ },
368
+ {
369
+ keywords: ["content", "body", "text", "message"],
370
+ fakerMethod: "lorem.paragraphs",
371
+ schemaType: "string",
372
+ minScore: 0.6,
373
+ },
374
+ {
375
+ keywords: ["title", "heading", "subject", "headline"],
376
+ fakerMethod: "lorem.sentence",
377
+ schemaType: "string",
378
+ minScore: 0.6,
379
+ },
380
+ {
381
+ keywords: ["tag", "label", "category", "keyword"],
382
+ fakerMethod: "lorem.word",
383
+ schemaType: "string",
384
+ minScore: 0.8,
385
+ },
386
+ {
387
+ keywords: ["comment", "note", "remark", "feedback", "review"],
388
+ fakerMethod: "lorem.sentence",
389
+ schemaType: "string",
390
+ minScore: 0.8,
391
+ },
392
+ {
393
+ keywords: ["sentence"],
394
+ fakerMethod: "lorem.sentence",
395
+ schemaType: "string",
396
+ minScore: 0.9,
397
+ },
398
+ {
399
+ keywords: ["paragraph"],
400
+ fakerMethod: "lorem.paragraph",
401
+ schemaType: "string",
402
+ minScore: 0.9,
403
+ },
404
+ {
405
+ keywords: ["word"],
406
+ fakerMethod: "lorem.word",
407
+ schemaType: "string",
408
+ minScore: 0.9,
409
+ },
410
+ ];
411
+
412
+ // ── Business/Commerce ───────────────────────────────────────────────
413
+ const business: FieldMapping[] = [
414
+ {
415
+ keywords: ["company", "organization", "org", "employer", "brand"],
416
+ fakerMethod: "company.name",
417
+ schemaType: "string",
418
+ minScore: 0.6,
419
+ },
420
+ {
421
+ keywords: ["product", "product_name", "item_name"],
422
+ fakerMethod: "commerce.productName",
423
+ schemaType: "string",
424
+ minScore: 0.8,
425
+ },
426
+ {
427
+ keywords: [
428
+ "price",
429
+ "amount",
430
+ "cost",
431
+ "fee",
432
+ "salary",
433
+ "wage",
434
+ "total",
435
+ "subtotal",
436
+ "balance",
437
+ "revenue",
438
+ "income",
439
+ ],
440
+ fakerMethod: "commerce.price",
441
+ minScore: 0.6,
442
+ },
443
+ {
444
+ keywords: ["currency", "currency_code"],
445
+ fakerMethod: "finance.currencyCode",
446
+ schemaType: "string",
447
+ minScore: 0.8,
448
+ },
449
+ {
450
+ keywords: ["currency_name"],
451
+ fakerMethod: "finance.currencyName",
452
+ schemaType: "string",
453
+ minScore: 0.8,
454
+ },
455
+ {
456
+ keywords: ["currency_symbol"],
457
+ fakerMethod: "finance.currencySymbol",
458
+ schemaType: "string",
459
+ minScore: 0.8,
460
+ },
461
+ {
462
+ keywords: ["account_number", "account_no"],
463
+ fakerMethod: "finance.accountNumber",
464
+ schemaType: "string",
465
+ minScore: 0.8,
466
+ },
467
+ {
468
+ keywords: ["credit_card", "card_number"],
469
+ fakerMethod: "finance.creditCardNumber",
470
+ schemaType: "string",
471
+ minScore: 0.8,
472
+ },
473
+ {
474
+ keywords: ["cvv"],
475
+ fakerMethod: "finance.creditCardCVV",
476
+ schemaType: "string",
477
+ minScore: 0.9,
478
+ },
479
+ {
480
+ keywords: ["transaction_type"],
481
+ fakerMethod: "finance.transactionType",
482
+ schemaType: "string",
483
+ minScore: 0.9,
484
+ },
485
+ ];
486
+
487
+ // ── Date/Time ───────────────────────────────────────────────────────
488
+ const dateTime: FieldMapping[] = [
489
+ {
490
+ keywords: [
491
+ "created_at",
492
+ "createdat",
493
+ "creation_date",
494
+ "date_created",
495
+ "createddate",
496
+ ],
497
+ fakerMethod: "date.recent",
498
+ schemaType: "string",
499
+ minScore: 0.6,
500
+ format: "date-time",
501
+ },
502
+ {
503
+ keywords: [
504
+ "updated_at",
505
+ "updatedat",
506
+ "modified_at",
507
+ "modifiedat",
508
+ "date_updated",
509
+ "last_modified",
510
+ "date_modified",
511
+ ],
512
+ fakerMethod: "date.recent",
513
+ schemaType: "string",
514
+ minScore: 0.6,
515
+ format: "date-time",
516
+ },
517
+ {
518
+ keywords: ["deleted_at", "deletedat"],
519
+ fakerMethod: "date.recent",
520
+ schemaType: "string",
521
+ minScore: 0.6,
522
+ format: "date-time",
523
+ },
524
+ {
525
+ keywords: ["published_at", "publishedat", "publish_date"],
526
+ fakerMethod: "date.recent",
527
+ schemaType: "string",
528
+ minScore: 0.6,
529
+ format: "date-time",
530
+ },
531
+ {
532
+ keywords: ["expires_at", "expiresat", "expiration", "expiry"],
533
+ fakerMethod: "date.future",
534
+ schemaType: "string",
535
+ minScore: 0.6,
536
+ format: "date-time",
537
+ },
538
+ {
539
+ keywords: ["birthday", "date_of_birth", "dob", "birthdate", "born"],
540
+ fakerMethod: "date.birthdate",
541
+ schemaType: "string",
542
+ minScore: 0.8,
543
+ },
544
+ {
545
+ keywords: ["start_date", "begin_date"],
546
+ fakerMethod: "date.past",
547
+ schemaType: "string",
548
+ minScore: 0.8,
549
+ },
550
+ {
551
+ keywords: ["end_date", "due_date", "deadline"],
552
+ fakerMethod: "date.future",
553
+ schemaType: "string",
554
+ minScore: 0.8,
555
+ },
556
+ {
557
+ keywords: ["timestamp", "ts"],
558
+ fakerMethod: "date.recent",
559
+ schemaType: "string",
560
+ minScore: 0.8,
561
+ },
562
+ ];
563
+
564
+ // ── Color ───────────────────────────────────────────────────────────
565
+ const color: FieldMapping[] = [
566
+ {
567
+ keywords: ["color", "colour"],
568
+ fakerMethod: "color.human",
569
+ schemaType: "string",
570
+ minScore: 0.8,
571
+ },
572
+ {
573
+ keywords: ["hex_color", "hexcolor"],
574
+ fakerMethod: "color.rgb",
575
+ schemaType: "string",
576
+ minScore: 0.9,
577
+ },
578
+ ];
579
+
580
+ // ── Numeric Semantics ───────────────────────────────────────────────
581
+ const numeric: FieldMapping[] = [
582
+ {
583
+ keywords: ["age"],
584
+ fakerMethod: "number.int",
585
+ schemaType: "number",
586
+ minScore: 0.8,
587
+ fakerArgs: { min: 18, max: 80 },
588
+ },
589
+ {
590
+ keywords: ["rating", "score", "stars"],
591
+ fakerMethod: "number.int",
592
+ schemaType: "number",
593
+ minScore: 0.8,
594
+ fakerArgs: { min: 1, max: 5 },
595
+ },
596
+ {
597
+ keywords: ["count", "quantity", "qty"],
598
+ fakerMethod: "number.int",
599
+ schemaType: "number",
600
+ minScore: 0.8,
601
+ fakerArgs: { min: 1, max: 100 },
602
+ },
603
+ {
604
+ keywords: ["percentage", "percent"],
605
+ fakerMethod: "number.int",
606
+ schemaType: "number",
607
+ minScore: 0.8,
608
+ fakerArgs: { min: 0, max: 100 },
609
+ },
610
+ {
611
+ keywords: ["weight"],
612
+ fakerMethod: "number.float",
613
+ schemaType: "number",
614
+ minScore: 0.8,
615
+ fakerArgs: { min: 0.1, max: 200 },
616
+ },
617
+ {
618
+ keywords: ["height"],
619
+ fakerMethod: "number.int",
620
+ schemaType: "number",
621
+ minScore: 0.8,
622
+ fakerArgs: { min: 100, max: 220 },
623
+ },
624
+ {
625
+ keywords: ["width", "length", "depth"],
626
+ fakerMethod: "number.int",
627
+ schemaType: "number",
628
+ minScore: 0.8,
629
+ fakerArgs: { min: 1, max: 1000 },
630
+ },
631
+ {
632
+ keywords: ["priority", "order", "rank", "level"],
633
+ fakerMethod: "number.int",
634
+ schemaType: "number",
635
+ minScore: 0.8,
636
+ fakerArgs: { min: 1, max: 10 },
637
+ },
638
+ {
639
+ keywords: ["version"],
640
+ fakerMethod: "system.semver",
641
+ schemaType: "string",
642
+ minScore: 0.8,
643
+ },
644
+ ];
645
+
646
+ // ── Boolean Semantics (weighted) ────────────────────────────────────
647
+ const booleans: FieldMapping[] = [
648
+ {
649
+ keywords: ["is_active", "isactive", "active", "enabled", "is_enabled"],
650
+ fakerMethod: "datatype.boolean",
651
+ schemaType: "boolean",
652
+ minScore: 0.6,
653
+ trueProbability: 0.9,
654
+ },
655
+ {
656
+ keywords: ["is_deleted", "isdeleted", "deleted"],
657
+ fakerMethod: "datatype.boolean",
658
+ schemaType: "boolean",
659
+ minScore: 0.6,
660
+ trueProbability: 0.05,
661
+ },
662
+ {
663
+ keywords: ["is_archived", "isarchived", "archived"],
664
+ fakerMethod: "datatype.boolean",
665
+ schemaType: "boolean",
666
+ minScore: 0.6,
667
+ trueProbability: 0.1,
668
+ },
669
+ {
670
+ keywords: [
671
+ "is_verified",
672
+ "isverified",
673
+ "verified",
674
+ "confirmed",
675
+ "is_confirmed",
676
+ ],
677
+ fakerMethod: "datatype.boolean",
678
+ schemaType: "boolean",
679
+ minScore: 0.6,
680
+ trueProbability: 0.8,
681
+ },
682
+ {
683
+ keywords: ["is_admin", "isadmin", "admin"],
684
+ fakerMethod: "datatype.boolean",
685
+ schemaType: "boolean",
686
+ minScore: 0.6,
687
+ trueProbability: 0.1,
688
+ },
689
+ {
690
+ keywords: ["is_public", "ispublic", "public", "visible", "is_visible"],
691
+ fakerMethod: "datatype.boolean",
692
+ schemaType: "boolean",
693
+ minScore: 0.6,
694
+ trueProbability: 0.7,
695
+ },
696
+ {
697
+ keywords: ["is_read", "isread", "read", "seen", "is_seen"],
698
+ fakerMethod: "datatype.boolean",
699
+ schemaType: "boolean",
700
+ minScore: 0.6,
701
+ trueProbability: 0.6,
702
+ },
703
+ {
704
+ keywords: ["is_default", "isdefault"],
705
+ fakerMethod: "datatype.boolean",
706
+ schemaType: "boolean",
707
+ minScore: 0.8,
708
+ trueProbability: 0.1,
709
+ },
710
+ {
711
+ keywords: ["is_required", "isrequired", "required", "mandatory"],
712
+ fakerMethod: "datatype.boolean",
713
+ schemaType: "boolean",
714
+ minScore: 0.6,
715
+ trueProbability: 0.5,
716
+ },
717
+ {
718
+ keywords: ["is_featured", "isfeatured", "featured", "promoted"],
719
+ fakerMethod: "datatype.boolean",
720
+ schemaType: "boolean",
721
+ minScore: 0.8,
722
+ trueProbability: 0.15,
723
+ },
724
+ {
725
+ keywords: ["available", "in_stock"],
726
+ fakerMethod: "datatype.boolean",
727
+ schemaType: "boolean",
728
+ minScore: 0.8,
729
+ trueProbability: 0.85,
730
+ },
731
+ ];
732
+
733
+ // ── File/System ─────────────────────────────────────────────────────
734
+ const fileSystem: FieldMapping[] = [
735
+ {
736
+ keywords: ["filename", "file_name"],
737
+ fakerMethod: "system.fileName",
738
+ schemaType: "string",
739
+ minScore: 0.8,
740
+ },
741
+ {
742
+ keywords: [
743
+ "file_type",
744
+ "filetype",
745
+ "mime_type",
746
+ "mimetype",
747
+ "content_type",
748
+ ],
749
+ fakerMethod: "system.mimeType",
750
+ schemaType: "string",
751
+ minScore: 0.8,
752
+ },
753
+ {
754
+ keywords: ["file_ext", "extension"],
755
+ fakerMethod: "system.fileExt",
756
+ schemaType: "string",
757
+ minScore: 0.9,
758
+ },
759
+ {
760
+ keywords: ["file_path", "filepath", "path"],
761
+ fakerMethod: "system.filePath",
762
+ schemaType: "string",
763
+ minScore: 0.9,
764
+ },
765
+ {
766
+ keywords: ["cron", "cron_expression"],
767
+ fakerMethod: "system.cron",
768
+ schemaType: "string",
769
+ minScore: 0.9,
770
+ },
771
+ {
772
+ keywords: ["semver"],
773
+ fakerMethod: "system.semver",
774
+ schemaType: "string",
775
+ minScore: 0.9,
776
+ },
777
+ ];
778
+
779
+ // ── Airline (niche) ─────────────────────────────────────────────────
780
+ const airline: FieldMapping[] = [
781
+ {
782
+ keywords: ["aircraft_type", "airplane", "aircraft"],
783
+ fakerMethod: "airline.aircraftType",
784
+ schemaType: "string",
785
+ minScore: 0.9,
786
+ },
787
+ {
788
+ keywords: ["flight_number", "flight"],
789
+ fakerMethod: "airline.flightNumber",
790
+ schemaType: "string",
791
+ minScore: 0.9,
792
+ },
793
+ {
794
+ keywords: ["record_locator", "booking_ref", "pnr"],
795
+ fakerMethod: "airline.recordLocator",
796
+ schemaType: "string",
797
+ minScore: 0.9,
798
+ },
799
+ {
800
+ keywords: ["seat", "seat_number"],
801
+ fakerMethod: "airline.seat",
802
+ schemaType: "string",
803
+ minScore: 0.9,
804
+ },
805
+ ];
806
+
807
+ // ── Animal (niche) ──────────────────────────────────────────────────
808
+ const animal: FieldMapping[] = [
809
+ {
810
+ keywords: ["animal", "animal_type", "species"],
811
+ fakerMethod: "animal.type",
812
+ schemaType: "string",
813
+ minScore: 0.9,
814
+ },
815
+ {
816
+ keywords: ["pet_name"],
817
+ fakerMethod: "animal.petName",
818
+ schemaType: "string",
819
+ minScore: 0.9,
820
+ },
821
+ {
822
+ keywords: ["breed"],
823
+ fakerMethod: "animal.dog",
824
+ schemaType: "string",
825
+ minScore: 0.9,
826
+ },
827
+ {
828
+ keywords: ["bird"],
829
+ fakerMethod: "animal.bird",
830
+ schemaType: "string",
831
+ minScore: 0.9,
832
+ },
833
+ {
834
+ keywords: ["fish"],
835
+ fakerMethod: "animal.fish",
836
+ schemaType: "string",
837
+ minScore: 0.9,
838
+ },
839
+ {
840
+ keywords: ["horse"],
841
+ fakerMethod: "animal.horse",
842
+ schemaType: "string",
843
+ minScore: 0.9,
844
+ },
845
+ {
846
+ keywords: ["insect"],
847
+ fakerMethod: "animal.insect",
848
+ schemaType: "string",
849
+ minScore: 0.9,
850
+ },
851
+ ];
852
+
853
+ // ── Book (niche) ────────────────────────────────────────────────────
854
+ const book: FieldMapping[] = [
855
+ {
856
+ keywords: ["book_title"],
857
+ fakerMethod: "book.title",
858
+ schemaType: "string",
859
+ minScore: 0.9,
860
+ },
861
+ {
862
+ keywords: ["author", "book_author", "writer"],
863
+ fakerMethod: "book.author",
864
+ schemaType: "string",
865
+ minScore: 0.9,
866
+ },
867
+ {
868
+ keywords: ["genre", "book_genre"],
869
+ fakerMethod: "book.genre",
870
+ schemaType: "string",
871
+ minScore: 0.9,
872
+ },
873
+ {
874
+ keywords: ["publisher", "publishing_house"],
875
+ fakerMethod: "book.publisher",
876
+ schemaType: "string",
877
+ minScore: 0.9,
878
+ },
879
+ {
880
+ keywords: ["book_series", "series_name"],
881
+ fakerMethod: "book.series",
882
+ schemaType: "string",
883
+ minScore: 0.9,
884
+ },
885
+ ];
886
+
887
+ // ── Food (niche) ────────────────────────────────────────────────────
888
+ const food: FieldMapping[] = [
889
+ {
890
+ keywords: ["dish", "meal", "recipe_name"],
891
+ fakerMethod: "food.dish",
892
+ schemaType: "string",
893
+ minScore: 0.9,
894
+ },
895
+ {
896
+ keywords: ["ingredient"],
897
+ fakerMethod: "food.ingredient",
898
+ schemaType: "string",
899
+ minScore: 0.9,
900
+ },
901
+ {
902
+ keywords: ["spice"],
903
+ fakerMethod: "food.spice",
904
+ schemaType: "string",
905
+ minScore: 0.9,
906
+ },
907
+ {
908
+ keywords: ["fruit"],
909
+ fakerMethod: "food.fruit",
910
+ schemaType: "string",
911
+ minScore: 0.9,
912
+ },
913
+ {
914
+ keywords: ["vegetable"],
915
+ fakerMethod: "food.vegetable",
916
+ schemaType: "string",
917
+ minScore: 0.9,
918
+ },
919
+ {
920
+ keywords: ["meat"],
921
+ fakerMethod: "food.meat",
922
+ schemaType: "string",
923
+ minScore: 0.9,
924
+ },
925
+ {
926
+ keywords: ["food_description"],
927
+ fakerMethod: "food.description",
928
+ schemaType: "string",
929
+ minScore: 0.9,
930
+ },
931
+ {
932
+ keywords: ["ethnic_category", "cuisine"],
933
+ fakerMethod: "food.ethnicCategory",
934
+ schemaType: "string",
935
+ minScore: 0.9,
936
+ },
937
+ ];
938
+
939
+ // ── Music (niche) ───────────────────────────────────────────────────
940
+ const music: FieldMapping[] = [
941
+ {
942
+ keywords: ["song", "song_name", "track", "track_name"],
943
+ fakerMethod: "music.songName",
944
+ schemaType: "string",
945
+ minScore: 0.9,
946
+ },
947
+ {
948
+ keywords: ["album", "album_name"],
949
+ fakerMethod: "music.album",
950
+ schemaType: "string",
951
+ minScore: 0.9,
952
+ },
953
+ {
954
+ keywords: ["artist", "musician", "band"],
955
+ fakerMethod: "music.artist",
956
+ schemaType: "string",
957
+ minScore: 0.9,
958
+ },
959
+ {
960
+ keywords: ["music_genre"],
961
+ fakerMethod: "music.genre",
962
+ schemaType: "string",
963
+ minScore: 0.9,
964
+ },
965
+ ];
966
+
967
+ // ── Science (niche) ─────────────────────────────────────────────────
968
+ const science: FieldMapping[] = [];
969
+
970
+ // ── Vehicle (niche) ─────────────────────────────────────────────────
971
+ const vehicle: FieldMapping[] = [
972
+ {
973
+ keywords: ["vehicle", "vehicle_name"],
974
+ fakerMethod: "vehicle.vehicle",
975
+ schemaType: "string",
976
+ minScore: 0.9,
977
+ },
978
+ {
979
+ keywords: ["vehicle_type"],
980
+ fakerMethod: "vehicle.type",
981
+ schemaType: "string",
982
+ minScore: 0.9,
983
+ },
984
+ {
985
+ keywords: ["vehicle_manufacturer", "car_make"],
986
+ fakerMethod: "vehicle.manufacturer",
987
+ schemaType: "string",
988
+ minScore: 0.9,
989
+ },
990
+ {
991
+ keywords: ["vehicle_model", "car_model"],
992
+ fakerMethod: "vehicle.model",
993
+ schemaType: "string",
994
+ minScore: 0.9,
995
+ },
996
+ {
997
+ keywords: ["fuel", "fuel_type"],
998
+ fakerMethod: "vehicle.fuel",
999
+ schemaType: "string",
1000
+ minScore: 0.9,
1001
+ },
1002
+ {
1003
+ keywords: ["bicycle"],
1004
+ fakerMethod: "vehicle.bicycle",
1005
+ schemaType: "string",
1006
+ minScore: 0.9,
1007
+ },
1008
+ {
1009
+ keywords: ["vehicle_color", "car_color"],
1010
+ fakerMethod: "vehicle.color",
1011
+ schemaType: "string",
1012
+ minScore: 0.9,
1013
+ },
1014
+ ];
1015
+
1016
+ // ── Git/Dev (niche) ─────────────────────────────────────────────────
1017
+ const git: FieldMapping[] = [
1018
+ {
1019
+ keywords: ["branch", "branch_name", "git_branch"],
1020
+ fakerMethod: "git.branch",
1021
+ schemaType: "string",
1022
+ minScore: 0.9,
1023
+ },
1024
+ {
1025
+ keywords: ["commit_sha", "commit_hash", "sha"],
1026
+ fakerMethod: "git.commitSha",
1027
+ schemaType: "string",
1028
+ minScore: 0.9,
1029
+ },
1030
+ {
1031
+ keywords: ["commit_message"],
1032
+ fakerMethod: "git.commitMessage",
1033
+ schemaType: "string",
1034
+ minScore: 0.9,
1035
+ },
1036
+ ];
1037
+
1038
+ // ── Database (niche) ────────────────────────────────────────────────
1039
+ const database: FieldMapping[] = [
1040
+ {
1041
+ keywords: ["db_column", "column_name"],
1042
+ fakerMethod: "database.column",
1043
+ schemaType: "string",
1044
+ minScore: 0.9,
1045
+ },
1046
+ {
1047
+ keywords: ["db_type", "column_type"],
1048
+ fakerMethod: "database.type",
1049
+ schemaType: "string",
1050
+ minScore: 0.9,
1051
+ },
1052
+ {
1053
+ keywords: ["db_engine", "database_engine"],
1054
+ fakerMethod: "database.engine",
1055
+ schemaType: "string",
1056
+ minScore: 0.9,
1057
+ },
1058
+ {
1059
+ keywords: ["collation"],
1060
+ fakerMethod: "database.collation",
1061
+ schemaType: "string",
1062
+ minScore: 0.9,
1063
+ },
1064
+ {
1065
+ keywords: ["mongodb_id", "object_id"],
1066
+ fakerMethod: "database.mongodbObjectId",
1067
+ schemaType: "string",
1068
+ minScore: 0.9,
1069
+ },
1070
+ ];
1071
+
1072
+ // ── Hacker/Tech (niche) ────────────────────────────────────────────
1073
+ const hacker: FieldMapping[] = [
1074
+ {
1075
+ keywords: ["abbreviation", "tech_abbreviation"],
1076
+ fakerMethod: "hacker.abbreviation",
1077
+ schemaType: "string",
1078
+ minScore: 0.9,
1079
+ },
1080
+ {
1081
+ keywords: ["hacker_phrase", "tech_phrase"],
1082
+ fakerMethod: "hacker.phrase",
1083
+ schemaType: "string",
1084
+ minScore: 0.9,
1085
+ },
1086
+ ];
1087
+
1088
+ // ── Word/Lorem (domain) ────────────────────────────────────────────
1089
+ const word: FieldMapping[] = [
1090
+ {
1091
+ keywords: ["adjective"],
1092
+ fakerMethod: "word.adjective",
1093
+ schemaType: "string",
1094
+ minScore: 0.8,
1095
+ },
1096
+ {
1097
+ keywords: ["adverb"],
1098
+ fakerMethod: "word.adverb",
1099
+ schemaType: "string",
1100
+ minScore: 0.8,
1101
+ },
1102
+ {
1103
+ keywords: ["noun"],
1104
+ fakerMethod: "word.noun",
1105
+ schemaType: "string",
1106
+ minScore: 0.8,
1107
+ },
1108
+ {
1109
+ keywords: ["verb"],
1110
+ fakerMethod: "word.verb",
1111
+ schemaType: "string",
1112
+ minScore: 0.8,
1113
+ },
1114
+ ];
1115
+
1116
+ export const ALL_FIELD_MAPPINGS: FieldMapping[] = [
1117
+ ...identity,
1118
+ ...person,
1119
+ ...contact,
1120
+ ...address,
1121
+ ...internet,
1122
+ ...ids,
1123
+ ...text,
1124
+ ...business,
1125
+ ...dateTime,
1126
+ ...color,
1127
+ ...numeric,
1128
+ ...booleans,
1129
+ ...fileSystem,
1130
+ ...airline,
1131
+ ...animal,
1132
+ ...book,
1133
+ ...food,
1134
+ ...music,
1135
+ ...science,
1136
+ ...vehicle,
1137
+ ...git,
1138
+ ...database,
1139
+ ...hacker,
1140
+ ...word,
1141
+ ];