aboutsummaryrefslogtreecommitdiff
path: root/src/definitions
diff options
context:
space:
mode:
Diffstat (limited to 'src/definitions')
-rw-r--r--src/definitions/index.ts2
-rw-r--r--src/definitions/person.ts41
2 files changed, 24 insertions, 19 deletions
diff --git a/src/definitions/index.ts b/src/definitions/index.ts
index 2d979971..367892b7 100644
--- a/src/definitions/index.ts
+++ b/src/definitions/index.ts
@@ -17,7 +17,7 @@ export type { LocationDefinition } from './location';
export type { LoremDefinition } from './lorem';
export type { MetadataDefinition } from './metadata';
export type { MusicDefinition } from './music';
-export type { PersonDefinition } from './person';
+export type { PersonDefinition, PersonEntryDefinition } from './person';
export type { PhoneNumberDefinition } from './phone_number';
export type { ScienceDefinition } from './science';
export type { SystemDefinition, SystemMimeTypeEntryDefinition } from './system';
diff --git a/src/definitions/person.ts b/src/definitions/person.ts
index 87250ed9..c761b9a3 100644
--- a/src/definitions/person.ts
+++ b/src/definitions/person.ts
@@ -1,5 +1,23 @@
import type { LocaleEntry } from './definitions';
+export type PersonEntryDefinition<T> =
+ | {
+ generic?: T[];
+ male: T[];
+ female: T[];
+ }
+ | {
+ generic: T[];
+ male?: never;
+ female?: never;
+ };
+
+type SimplePersonEntryDefinition = PersonEntryDefinition<string>;
+type WeightedPersonEntryDefinition = PersonEntryDefinition<{
+ value: string;
+ weight: number;
+}>;
+
/**
* The possible definitions related to people's names.
*/
@@ -7,21 +25,10 @@ export type PersonDefinition = LocaleEntry<{
gender: string[];
sex: string[];
- prefix: string[];
- female_prefix: string[];
- male_prefix: string[];
-
- first_name: string[];
- female_first_name: string[];
- male_first_name: string[];
-
- middle_name: string[];
- female_middle_name: string[];
- male_middle_name: string[];
-
- last_name: string[];
- female_last_name: string[];
- male_last_name: string[];
+ prefix: SimplePersonEntryDefinition;
+ first_name: SimplePersonEntryDefinition;
+ middle_name: SimplePersonEntryDefinition;
+ last_name: SimplePersonEntryDefinition;
suffix: string[];
@@ -33,9 +40,7 @@ export type PersonDefinition = LocaleEntry<{
/**
* A weighted list of patterns used to generate last names.
*/
- last_name_pattern: Array<{ value: string; weight: number }>;
- male_last_name_pattern: Array<{ value: string; weight: number }>;
- female_last_name_pattern: Array<{ value: string; weight: number }>;
+ last_name_pattern: WeightedPersonEntryDefinition;
bio_pattern: string[];