Add german identity generator option (#1383)

This commit is contained in:
Leendert de Borst
2025-11-22 21:33:31 +00:00
committed by Leendert de Borst
parent ae4fc13330
commit b1d12af7dd
34 changed files with 27662 additions and 731 deletions
@@ -1,239 +0,0 @@
declare enum Gender {
Male = "Male",
Female = "Female",
Other = "Other"
}
/**
* Identity.
*/
type Identity = {
firstName: string;
lastName: string;
gender: Gender;
birthDate: Date;
emailPrefix: string;
nickName: string;
};
/**
* Options for birthdate generation.
*/
interface IBirthdateOptions {
/**
* The target year for the birthdate (e.g., 1990).
*/
targetYear: number;
/**
* The random deviation in years (e.g., 5 means ±5 years from targetYear).
* If 0, a random date within the target year will be chosen.
*/
yearDeviation: number;
}
interface IIdentityGenerator {
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Dictionary of firstnames organized by decade range.
*/
interface IDecadeFirstnames {
startYear: number;
endYear: number;
names: string[];
}
/**
* Base identity generator.
*/
declare abstract class IdentityGenerator implements IIdentityGenerator {
protected firstNamesMale: string[];
protected firstNamesFemale: string[];
protected lastNames: string[];
private readonly random;
/**
* Constructor.
*/
constructor();
protected abstract getFirstNamesMaleJson(): string[];
protected abstract getFirstNamesFemaleJson(): string[];
protected abstract getLastNamesJson(): string[];
/**
* Get decade-based male first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
/**
* Generate a random date of birth.
* @param birthdateOptions Optional birthdate configuration
*/
protected generateRandomDateOfBirth(birthdateOptions?: IBirthdateOptions | null): Date;
/**
* Select appropriate firstnames based on birthdate.
* Falls back to generic names if no decade-specific data is available.
*/
protected selectFirstnamesForBirthdate(birthdate: Date, isMale: boolean): string[];
/**
* Generate a random identity.
*/
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Identity generator for English language using English word dictionaries.
*/
declare class IdentityGeneratorEn extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Identity generator for Dutch language using Dutch word dictionaries.
*/
declare class IdentityGeneratorNl extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
declare class IdentityHelperUtils {
/**
* Normalize a birth date for display.
*/
static normalizeBirthDateForDisplay(birthDate: string | undefined): string;
/**
* Normalize a birth date for database storage.
* Converts any date format to the standard format: "yyyy-MM-dd 00:00:00" (19 characters).
* BirthDate fields do not include time or milliseconds, just date with 00:00:00.
*/
static normalizeBirthDateForDb(input: string | undefined): string;
/**
* Check if a birth date is valid.
*/
static isValidBirthDate(input: string | undefined): boolean;
}
/**
* Generate a username or email prefix.
*/
declare class UsernameEmailGenerator {
private static readonly MIN_LENGTH;
private static readonly MAX_LENGTH;
private readonly symbols;
/**
* Generate a username based on an identity.
*/
generateUsername(identity: Identity): string;
/**
* Generate an email prefix based on an identity.
*/
generateEmailPrefix(identity: Identity): string;
/**
* Sanitize an email prefix.
*/
private sanitizeEmailPrefix;
/**
* Get a random symbol.
*/
private getRandomSymbol;
/**
* Generate a random string.
*/
private generateRandomString;
/**
* Generate a secure random integer between 0 (inclusive) and max (exclusive)
*/
private getSecureRandom;
}
/**
* Represents an age range option for identity generation.
*/
interface IAgeRangeOption {
/**
* The value to store (e.g., "21-25", "random")
*/
value: string;
/**
* The display label (e.g., "21-25", "Random")
*/
label: string;
}
/**
* Gets all available age range options for identity generation.
* @returns Array of age range options
*/
declare function getAvailableAgeRanges(): IAgeRangeOption[];
/**
* Converts an age range string (e.g., "21-25", "30-35", or "random") to birthdate options.
* @param ageRange - The age range string
* @returns An object containing targetYear and yearDeviation, or null if random
*/
declare function convertAgeRangeToBirthdateOptions(ageRange: string): IBirthdateOptions | null;
/**
* Represents a language option for identity generation.
*/
interface ILanguageOption {
/**
* The language code (e.g., "en", "nl", "de")
*/
value: string;
/**
* The display label in the native language (e.g., "English", "Nederlands", "Deutsch")
*/
label: string;
/**
* The flag emoji for the language (e.g., "🇬🇧", "🇳🇱", "🇩🇪")
*/
flag: string;
}
/**
* Gets all available languages for identity generation.
* Display labels are in the native language, with optional flag emoji that clients can choose to display.
* @returns Array of language options
*/
declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
/**
* Creates a new username email generator. This is used by the .NET Blazor WASM JSinterop
* as it cannot create instances of classes directly, it has to use a factory method.
* @returns A new username email generator instance.
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
@@ -119,6 +119,35 @@ declare class IdentityGeneratorNl extends IdentityGenerator {
protected getLastNamesJson(): string[];
}
/**
* Identity generator for German language using German dictionaries with decade-based firstname support.
* This implementation demonstrates how to use age-appropriate names based on birthdate.
*/
declare class IdentityGeneratorDe extends IdentityGenerator {
/**
* Get the male first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
/**
* Get decade-based male first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
@@ -224,7 +253,7 @@ declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @param language - The language to use for generating the identity (e.g. "en", "nl", "de").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
@@ -236,4 +265,4 @@ declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorDe, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,239 +0,0 @@
declare enum Gender {
Male = "Male",
Female = "Female",
Other = "Other"
}
/**
* Identity.
*/
type Identity = {
firstName: string;
lastName: string;
gender: Gender;
birthDate: Date;
emailPrefix: string;
nickName: string;
};
/**
* Options for birthdate generation.
*/
interface IBirthdateOptions {
/**
* The target year for the birthdate (e.g., 1990).
*/
targetYear: number;
/**
* The random deviation in years (e.g., 5 means ±5 years from targetYear).
* If 0, a random date within the target year will be chosen.
*/
yearDeviation: number;
}
interface IIdentityGenerator {
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Dictionary of firstnames organized by decade range.
*/
interface IDecadeFirstnames {
startYear: number;
endYear: number;
names: string[];
}
/**
* Base identity generator.
*/
declare abstract class IdentityGenerator implements IIdentityGenerator {
protected firstNamesMale: string[];
protected firstNamesFemale: string[];
protected lastNames: string[];
private readonly random;
/**
* Constructor.
*/
constructor();
protected abstract getFirstNamesMaleJson(): string[];
protected abstract getFirstNamesFemaleJson(): string[];
protected abstract getLastNamesJson(): string[];
/**
* Get decade-based male first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
/**
* Generate a random date of birth.
* @param birthdateOptions Optional birthdate configuration
*/
protected generateRandomDateOfBirth(birthdateOptions?: IBirthdateOptions | null): Date;
/**
* Select appropriate firstnames based on birthdate.
* Falls back to generic names if no decade-specific data is available.
*/
protected selectFirstnamesForBirthdate(birthdate: Date, isMale: boolean): string[];
/**
* Generate a random identity.
*/
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Identity generator for English language using English word dictionaries.
*/
declare class IdentityGeneratorEn extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Identity generator for Dutch language using Dutch word dictionaries.
*/
declare class IdentityGeneratorNl extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
declare class IdentityHelperUtils {
/**
* Normalize a birth date for display.
*/
static normalizeBirthDateForDisplay(birthDate: string | undefined): string;
/**
* Normalize a birth date for database storage.
* Converts any date format to the standard format: "yyyy-MM-dd 00:00:00" (19 characters).
* BirthDate fields do not include time or milliseconds, just date with 00:00:00.
*/
static normalizeBirthDateForDb(input: string | undefined): string;
/**
* Check if a birth date is valid.
*/
static isValidBirthDate(input: string | undefined): boolean;
}
/**
* Generate a username or email prefix.
*/
declare class UsernameEmailGenerator {
private static readonly MIN_LENGTH;
private static readonly MAX_LENGTH;
private readonly symbols;
/**
* Generate a username based on an identity.
*/
generateUsername(identity: Identity): string;
/**
* Generate an email prefix based on an identity.
*/
generateEmailPrefix(identity: Identity): string;
/**
* Sanitize an email prefix.
*/
private sanitizeEmailPrefix;
/**
* Get a random symbol.
*/
private getRandomSymbol;
/**
* Generate a random string.
*/
private generateRandomString;
/**
* Generate a secure random integer between 0 (inclusive) and max (exclusive)
*/
private getSecureRandom;
}
/**
* Represents an age range option for identity generation.
*/
interface IAgeRangeOption {
/**
* The value to store (e.g., "21-25", "random")
*/
value: string;
/**
* The display label (e.g., "21-25", "Random")
*/
label: string;
}
/**
* Gets all available age range options for identity generation.
* @returns Array of age range options
*/
declare function getAvailableAgeRanges(): IAgeRangeOption[];
/**
* Converts an age range string (e.g., "21-25", "30-35", or "random") to birthdate options.
* @param ageRange - The age range string
* @returns An object containing targetYear and yearDeviation, or null if random
*/
declare function convertAgeRangeToBirthdateOptions(ageRange: string): IBirthdateOptions | null;
/**
* Represents a language option for identity generation.
*/
interface ILanguageOption {
/**
* The language code (e.g., "en", "nl", "de")
*/
value: string;
/**
* The display label in the native language (e.g., "English", "Nederlands", "Deutsch")
*/
label: string;
/**
* The flag emoji for the language (e.g., "🇬🇧", "🇳🇱", "🇩🇪")
*/
flag: string;
}
/**
* Gets all available languages for identity generation.
* Display labels are in the native language, with optional flag emoji that clients can choose to display.
* @returns Array of language options
*/
declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
/**
* Creates a new username email generator. This is used by the .NET Blazor WASM JSinterop
* as it cannot create instances of classes directly, it has to use a factory method.
* @returns A new username email generator instance.
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
@@ -119,6 +119,35 @@ declare class IdentityGeneratorNl extends IdentityGenerator {
protected getLastNamesJson(): string[];
}
/**
* Identity generator for German language using German dictionaries with decade-based firstname support.
* This implementation demonstrates how to use age-appropriate names based on birthdate.
*/
declare class IdentityGeneratorDe extends IdentityGenerator {
/**
* Get the male first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
/**
* Get decade-based male first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
@@ -224,7 +253,7 @@ declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @param language - The language to use for generating the identity (e.g. "en", "nl", "de").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
@@ -236,4 +265,4 @@ declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorDe, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,239 +0,0 @@
declare enum Gender {
Male = "Male",
Female = "Female",
Other = "Other"
}
/**
* Identity.
*/
type Identity = {
firstName: string;
lastName: string;
gender: Gender;
birthDate: Date;
emailPrefix: string;
nickName: string;
};
/**
* Options for birthdate generation.
*/
interface IBirthdateOptions {
/**
* The target year for the birthdate (e.g., 1990).
*/
targetYear: number;
/**
* The random deviation in years (e.g., 5 means ±5 years from targetYear).
* If 0, a random date within the target year will be chosen.
*/
yearDeviation: number;
}
interface IIdentityGenerator {
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Dictionary of firstnames organized by decade range.
*/
interface IDecadeFirstnames {
startYear: number;
endYear: number;
names: string[];
}
/**
* Base identity generator.
*/
declare abstract class IdentityGenerator implements IIdentityGenerator {
protected firstNamesMale: string[];
protected firstNamesFemale: string[];
protected lastNames: string[];
private readonly random;
/**
* Constructor.
*/
constructor();
protected abstract getFirstNamesMaleJson(): string[];
protected abstract getFirstNamesFemaleJson(): string[];
protected abstract getLastNamesJson(): string[];
/**
* Get decade-based male first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names. Override this to provide age-specific names.
* If not overridden, returns an empty array and falls back to generic names.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
/**
* Generate a random date of birth.
* @param birthdateOptions Optional birthdate configuration
*/
protected generateRandomDateOfBirth(birthdateOptions?: IBirthdateOptions | null): Date;
/**
* Select appropriate firstnames based on birthdate.
* Falls back to generic names if no decade-specific data is available.
*/
protected selectFirstnamesForBirthdate(birthdate: Date, isMale: boolean): string[];
/**
* Generate a random identity.
*/
generateRandomIdentity(gender?: string | 'random', birthdateOptions?: IBirthdateOptions | null): Identity;
}
/**
* Identity generator for English language using English word dictionaries.
*/
declare class IdentityGeneratorEn extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Identity generator for Dutch language using Dutch word dictionaries.
*/
declare class IdentityGeneratorNl extends IdentityGenerator {
/**
* Get the male first names.
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names.
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
declare class IdentityHelperUtils {
/**
* Normalize a birth date for display.
*/
static normalizeBirthDateForDisplay(birthDate: string | undefined): string;
/**
* Normalize a birth date for database storage.
* Converts any date format to the standard format: "yyyy-MM-dd 00:00:00" (19 characters).
* BirthDate fields do not include time or milliseconds, just date with 00:00:00.
*/
static normalizeBirthDateForDb(input: string | undefined): string;
/**
* Check if a birth date is valid.
*/
static isValidBirthDate(input: string | undefined): boolean;
}
/**
* Generate a username or email prefix.
*/
declare class UsernameEmailGenerator {
private static readonly MIN_LENGTH;
private static readonly MAX_LENGTH;
private readonly symbols;
/**
* Generate a username based on an identity.
*/
generateUsername(identity: Identity): string;
/**
* Generate an email prefix based on an identity.
*/
generateEmailPrefix(identity: Identity): string;
/**
* Sanitize an email prefix.
*/
private sanitizeEmailPrefix;
/**
* Get a random symbol.
*/
private getRandomSymbol;
/**
* Generate a random string.
*/
private generateRandomString;
/**
* Generate a secure random integer between 0 (inclusive) and max (exclusive)
*/
private getSecureRandom;
}
/**
* Represents an age range option for identity generation.
*/
interface IAgeRangeOption {
/**
* The value to store (e.g., "21-25", "random")
*/
value: string;
/**
* The display label (e.g., "21-25", "Random")
*/
label: string;
}
/**
* Gets all available age range options for identity generation.
* @returns Array of age range options
*/
declare function getAvailableAgeRanges(): IAgeRangeOption[];
/**
* Converts an age range string (e.g., "21-25", "30-35", or "random") to birthdate options.
* @param ageRange - The age range string
* @returns An object containing targetYear and yearDeviation, or null if random
*/
declare function convertAgeRangeToBirthdateOptions(ageRange: string): IBirthdateOptions | null;
/**
* Represents a language option for identity generation.
*/
interface ILanguageOption {
/**
* The language code (e.g., "en", "nl", "de")
*/
value: string;
/**
* The display label in the native language (e.g., "English", "Nederlands", "Deutsch")
*/
label: string;
/**
* The flag emoji for the language (e.g., "🇬🇧", "🇳🇱", "🇩🇪")
*/
flag: string;
}
/**
* Gets all available languages for identity generation.
* Display labels are in the native language, with optional flag emoji that clients can choose to display.
* @returns Array of language options
*/
declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
/**
* Creates a new username email generator. This is used by the .NET Blazor WASM JSinterop
* as it cannot create instances of classes directly, it has to use a factory method.
* @returns A new username email generator instance.
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
@@ -119,6 +119,35 @@ declare class IdentityGeneratorNl extends IdentityGenerator {
protected getLastNamesJson(): string[];
}
/**
* Identity generator for German language using German dictionaries with decade-based firstname support.
* This implementation demonstrates how to use age-appropriate names based on birthdate.
*/
declare class IdentityGeneratorDe extends IdentityGenerator {
/**
* Get the male first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesMaleJson(): string[];
/**
* Get the female first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesFemaleJson(): string[];
/**
* Get the last names.
*/
protected getLastNamesJson(): string[];
/**
* Get decade-based male first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[];
/**
* Get decade-based female first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[];
}
/**
* Helper utilities for identity generation that can be used by multiple client applications.
*/
@@ -224,7 +253,7 @@ declare function getAvailableLanguages(): ILanguageOption[];
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @param language - The language to use for generating the identity (e.g. "en", "nl", "de").
* @returns A new identity generator instance.
*/
declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
@@ -236,4 +265,4 @@ declare const CreateIdentityGenerator: (language: string) => IdentityGenerator;
*/
declare const CreateUsernameEmailGenerator: () => UsernameEmailGenerator;
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
export { CreateIdentityGenerator, CreateUsernameEmailGenerator, Gender, type IAgeRangeOption, type IBirthdateOptions, type IDecadeFirstnames, type IIdentityGenerator, type ILanguageOption, type Identity, IdentityGenerator, IdentityGeneratorDe, IdentityGeneratorEn, IdentityGeneratorNl, IdentityHelperUtils, UsernameEmailGenerator, convertAgeRangeToBirthdateOptions, getAvailableAgeRanges, getAvailableLanguages };
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,6 @@
import { IdentityGeneratorEn } from '../implementations/IdentityGeneratorEn';
import { IdentityGeneratorNl } from '../implementations/IdentityGeneratorNl';
import { IdentityGeneratorDe } from '../implementations/IdentityGeneratorDe';
import { describe, it, expect } from 'vitest';
import { IIdentityGenerator, IBirthdateOptions } from '../interfaces/IIdentityGenerator';
import { Gender } from '../types/Gender';
@@ -51,6 +52,7 @@ const testIdentityGenerator = (
describe('Identity Generators', () => {
testIdentityGenerator('En', new IdentityGeneratorEn());
testIdentityGenerator('Nl', new IdentityGeneratorNl());
testIdentityGenerator('De', new IdentityGeneratorDe());
});
// Additional tests for birthdate options
@@ -101,4 +103,52 @@ describe('Birthdate Options', () => {
expect(birthYears.size).toBeGreaterThan(1);
});
});
});
// Additional tests for German identity generator decade-based names
describe('German Identity Generator Decade Names', () => {
const generator = new IdentityGeneratorDe();
describe('Decade-based name selection', () => {
it('should use age-appropriate names for 1950s births', () => {
const birthdateOptions: IBirthdateOptions = {
targetYear: 1955,
yearDeviation: 0
};
const identity = generator.generateRandomIdentity('male', birthdateOptions);
expect(identity.firstName).toBeTruthy();
expect(identity.birthDate.getFullYear()).toBe(1955);
});
it('should use age-appropriate names for 2020s births', () => {
const birthdateOptions: IBirthdateOptions = {
targetYear: 2020,
yearDeviation: 0
};
const identity = generator.generateRandomIdentity('female', birthdateOptions);
expect(identity.firstName).toBeTruthy();
expect(identity.birthDate.getFullYear()).toBe(2020);
});
it('should generate valid German identities across all decades', () => {
const decades = [1955, 1965, 1975, 1985, 1995, 2005, 2015, 2025];
decades.forEach(year => {
const birthdateOptions: IBirthdateOptions = {
targetYear: year,
yearDeviation: 0
};
const identity = generator.generateRandomIdentity('random', birthdateOptions);
expect(identity.firstName).toBeTruthy();
expect(identity.lastName).toBeTruthy();
expect(identity.birthDate.getFullYear()).toBe(year);
});
});
});
});
@@ -0,0 +1,132 @@
export default [
"Angelika",
"Monika",
"Sabine",
"Karin",
"Petra",
"Gabriele",
"Birgit",
"Brigitte",
"Renate",
"Susanne",
"Barbara",
"Ursula",
"Ute",
"Marion",
"Jutta",
"Ingrid",
"Cornelia",
"Heike",
"Maria",
"Regina",
"Elke",
"Silvia",
"Andrea",
"Ulrike",
"Gisela",
"Angela",
"Bärbel",
"Christine",
"Martina",
"Christiane",
"Doris",
"Helga",
"Dagmar",
"Sigrid",
"Christa",
"Gudrun",
"Beate",
"Rita",
"Hannelore",
"Marlies",
"Eva",
"Claudia",
"Anke",
"Marianne",
"Annette",
"Elisabeth",
"Astrid",
"Erika",
"Heidi",
"Christel",
"Rosemarie",
"Anna",
"Bettina",
"Gabriela",
"Roswita",
"Ilona",
"Annegret",
"Evelyn",
"Sonja",
"Inge",
"Christina",
"Carmen",
"Irene",
"Kirsten",
"Lydia",
"Silke",
"Marina",
"Margret",
"Marita",
"Ruth",
"Maren",
"Sibylle",
"Waltraud",
"Ingeborg",
"Katharina",
"Vera",
"Heidemarie",
"Kerstin",
"Heidrun",
"Margrit",
"Carola",
"Iris",
"Antje",
"Katrin",
"Margit",
"Manuela",
"Veronika",
"Olga",
"Anne",
"Dorothea",
"Hildegard",
"Irmgard",
"Edith",
"Uta",
"Regine",
"Margarete",
"Anita",
"Frauke",
"Karen",
"Valentina",
"Anja",
"Tatjana",
"Ellen",
"Edeltraud",
"Verena",
"Dörte",
"Ilse",
"Gerda",
"Ines",
"Britta",
"Corinna",
"Elvira",
"Michaela",
"Annemarie",
"Anneliese",
"Gertrud",
"Gitta",
"Marie",
"Susann",
"Maike",
"Stefanie",
"Danuta",
"Gunda",
"Margot",
"Johanna",
"Irina",
"Ina",
"Theresa",
"Nina",
"Wiebke"
];
@@ -0,0 +1,202 @@
export default [
"Sabine",
"Susanne",
"Petra",
"Andrea",
"Claudia",
"Birgit",
"Martina",
"Anja",
"Heike",
"Kerstin",
"Bettina",
"Gabriele",
"Katrin",
"Silke",
"Ute",
"Christine",
"Stefanie",
"Monika",
"Britta",
"Ulrike",
"Barbara",
"Kirsten",
"Silvia",
"Karin",
"Annette",
"Christiane",
"Beate",
"Manuela",
"Angela",
"Anke",
"Nicole",
"Marion",
"Cornelia",
"Christina",
"Angelika",
"Astrid",
"Elke",
"Michaela",
"Regina",
"Dagmar",
"Katja",
"Brigitte",
"Maria",
"Iris",
"Jutta",
"Antje",
"Tanja",
"Doris",
"Maike",
"Simone",
"Maren",
"Corinna",
"Sonja",
"Daniela",
"Carola",
"Alexandra",
"Eva",
"Ursula",
"Carmen",
"Sandra",
"Karen",
"Ines",
"Marina",
"Katharina",
"Elisabeth",
"Bärbel",
"Renate",
"Gaby",
"Anne",
"Anna",
"Gabriela",
"Sibylle",
"Heidi",
"Uta",
"Ina",
"Sigrid",
"Frauke",
"Ilona",
"Ingrid",
"Gudrun",
"Wiebke",
"Tatjana",
"Yvonne",
"Carolin",
"Patricia",
"Dörte",
"Susann",
"Birte",
"Rita",
"Julia",
"Irina",
"Bianca",
"Nikola",
"Ilka",
"Olga",
"Jeanette",
"Marlies",
"Helga",
"Melanie",
"Verena",
"Vera",
"Regine",
"Kirstin",
"Evelyn",
"Irene",
"Lydia",
"Christa",
"Annett",
"Marianne",
"Dorothea",
"Annegret",
"Elena",
"Gisela",
"Imke",
"Isabell",
"Heidrun",
"Viola",
"Diana",
"Esther",
"Susan",
"Inga",
"Judith",
"Ruth",
"Cordula",
"Jacqueline",
"Kai",
"Veronika",
"Carina",
"Roswita",
"Constanze",
"Marita",
"Natalie",
"Ramona",
"Ellen",
"Erika",
"Fatma",
"Nina",
"Svetlana",
"Dorothee",
"Inge",
"Nadja",
"Jasmin",
"Anita",
"Franziska",
"Friederike",
"Marie",
"Svenja",
"Jessica",
"Natascha",
"Rosemarie",
"Valentina",
"Ayse",
"Linda",
"Beatrix",
"Johanna",
"Ariane",
"Gesa",
"Larissa",
"Malgorzata",
"Miriam",
"Gunda",
"Margarete",
"Natalia",
"Almut",
"Ewa",
"Gitta",
"Jolanta",
"Babette",
"Beatrice",
"Christel",
"Christin",
"Sabrina",
"Dorit",
"Jana",
"Juliane",
"Hilke",
"Margret",
"Beata",
"Galina",
"Liane",
"Danuta",
"Elvira",
"Ingeborg",
"Rosa",
"Emine",
"Grit",
"Hannah",
"Sabina",
"Agnes",
"Edith",
"Gundula",
"Inken",
"Maja",
"Margit",
"Bozena",
"Helena",
"Theresa",
"Elzbieta",
"Hannelore",
"Tina"
];
@@ -0,0 +1,252 @@
export default [
"Nicole",
"Stefanie",
"Sandra",
"Katrin",
"Claudia",
"Tanja",
"Anja",
"Melanie",
"Andrea",
"Daniela",
"Julia",
"Susanne",
"Katja",
"Christina",
"Kerstin",
"Silke",
"Sabine",
"Alexandra",
"Yvonne",
"Sonja",
"Nadine",
"Nina",
"Simone",
"Maike",
"Petra",
"Christine",
"Britta",
"Martina",
"Anna",
"Michaela",
"Manuela",
"Bianca",
"Katharina",
"Silvia",
"Bettina",
"Heike",
"Ulrike",
"Birgit",
"Anke",
"Christiane",
"Jessica",
"Monika",
"Maren",
"Eva",
"Anne",
"Antje",
"Diana",
"Jana",
"Cornelia",
"Wiebke",
"Kirsten",
"Miriam",
"Tina",
"Carolin",
"Astrid",
"Annette",
"Maria",
"Annika",
"Jennifer",
"Tatjana",
"Angela",
"Corinna",
"Barbara",
"Verena",
"Elena",
"Jasmin",
"Birte",
"Inga",
"Olga",
"Natalie",
"Ines",
"Iris",
"Ina",
"Marion",
"Beate",
"Irina",
"Svenja",
"Judith",
"Carina",
"Sarah",
"Patricia",
"Karin",
"Carmen",
"Franziska",
"Janine",
"Juliane",
"Saskia",
"Carola",
"Doreen",
"Frauke",
"Marina",
"Ute",
"Isabell",
"Annett",
"Christin",
"Karen",
"Mandy",
"Nadja",
"Svetlana",
"Natalia",
"Gabriele",
"Sabrina",
"Elke",
"Ramona",
"Natascha",
"Friederike",
"Ilka",
"Vanessa",
"Dagmar",
"Imke",
"Jeanette",
"Dörte",
"Angelika",
"Nikola",
"Rebecca",
"Regina",
"Janina",
"Kirstin",
"Johanna",
"Jutta",
"Elisabeth",
"Anita",
"Mareike",
"Sibylle",
"Maja",
"Esther",
"Vera",
"Agnieszka",
"Jenny",
"Peggy",
"Ariane",
"Hannah",
"Steffi",
"Joana",
"Victoria",
"Magdalena",
"Fatma",
"Lena",
"Sina",
"Doris",
"Uta",
"Larissa",
"Marie",
"Evelyn",
"Ann",
"Constanze",
"Jacqueline",
"Kati",
"Lydia",
"Agnes",
"Dana",
"Dorothea",
"Ilona",
"Kim",
"Ayse",
"Gaby",
"Katarzyna",
"Mirja",
"Pamela",
"Heidi",
"Helena",
"Viola",
"Isabella",
"Susann",
"Cindy",
"Cordula",
"Emine",
"Kathleen",
"Nancy",
"Beata",
"Denise",
"Susan",
"Ursula",
"Veronika",
"Brigitte",
"Gesa",
"Martha",
"Mirjam",
"Beatrice",
"Hatice",
"Dorothee",
"Linda",
"Malgorzata",
"Pia",
"Grit",
"Irene",
"Filiz",
"Yasemin",
"Berit",
"Ellen",
"Janet",
"Laura",
"Lisa",
"Renate",
"Ruth",
"Ewa",
"Gabriela",
"Ingrid",
"Liane",
"Mariam",
"Monique",
"Tamara",
"Antonia",
"Svantje",
"Alice",
"Margarete",
"Nele",
"Manja",
"Nora",
"Oksana",
"Özlem",
"Nadia",
"Ricarda",
"Bärbel",
"Carolina",
"Hülya",
"Inken",
"Rita",
"Sophie",
"Valentina",
"Violetta",
"Vivien",
"Britt",
"Inna",
"Leyla",
"Arzu",
"Kai",
"Natalja",
"Sandy",
"Silvana",
"Sophia",
"Beatrix",
"Ludmilla",
"Romy",
"Selma",
"Elvira",
"Helene",
"Henrike",
"Oxana",
"Rabea",
"Sabina",
"Wenke",
"Annegret",
"Aylin",
"Charlotte",
"Dorit",
"Emma",
"Jeannine",
"Marianne",
"Mona"
];
@@ -0,0 +1,202 @@
export default [
"Julia",
"Stefanie",
"Anna",
"Katharina",
"Katrin",
"Sarah",
"Sandra",
"Nadine",
"Melanie",
"Christina",
"Jennifer",
"Nicole",
"Sabrina",
"Jessica",
"Annika",
"Claudia",
"Nina",
"Anne",
"Daniela",
"Franziska",
"Anja",
"Carolin",
"Jasmin",
"Christin",
"Katja",
"Janina",
"Jana",
"Janine",
"Yvonne",
"Alexandra",
"Svenja",
"Maike",
"Lena",
"Laura",
"Maria",
"Tanja",
"Susanne",
"Lisa",
"Andrea",
"Christine",
"Miriam",
"Sonja",
"Johanna",
"Ann",
"Sabine",
"Vanessa",
"Kerstin",
"Natalie",
"Bianca",
"Eva",
"Mareike",
"Marie",
"Verena",
"Jacqueline",
"Isabell",
"Hannah",
"Saskia",
"Simone",
"Tina",
"Juliane",
"Maren",
"Elena",
"Rebecca",
"Martina",
"Christiane",
"Carina",
"Mandy",
"Olga",
"Denise",
"Wiebke",
"Diana",
"Marina",
"Tatjana",
"Jenny",
"Manuela",
"Linda",
"Michaela",
"Nadja",
"Inga",
"Antje",
"Corinna",
"Patricia",
"Silvia",
"Ulrike",
"Kim",
"Judith",
"Ines",
"Monika",
"Birte",
"Ina",
"Victoria",
"Elisabeth",
"Theresa",
"Sina",
"Irina",
"Sophie",
"Silke",
"Friederike",
"Britta",
"Nora",
"Lea",
"Nele",
"Natascha",
"Bettina",
"Doreen",
"Barbara",
"Angela",
"Ramona",
"Cornelia",
"Anke",
"Natalia",
"Magdalena",
"Nancy",
"Annette",
"Astrid",
"Aylin",
"Susann",
"Kathleen",
"Alina",
"Lydia",
"Joana",
"Kirsten",
"Jeanette",
"Martha",
"Heike",
"Mona",
"Anita",
"Dana",
"Veronika",
"Yasemin",
"Sophia",
"Carolina",
"Svetlana",
"Esther",
"Charlotte",
"Antonia",
"Constanze",
"Vivien",
"Luisa",
"Svantje",
"Helena",
"Petra",
"Steffi",
"Pia",
"Susan",
"Monique",
"Lina",
"Mariam",
"Vera",
"Merle",
"Angelika",
"Karin",
"Maja",
"Frauke",
"Agnes",
"Isabella",
"Josephine",
"Frederike",
"Michelle",
"Carmen",
"Carola",
"Cindy",
"Madeleine",
"Janna",
"Larissa",
"Gina",
"Marlene",
"Anastasia",
"Elisa",
"Regina",
"Viola",
"Özlem",
"Alice",
"Evelyn",
"Marleen",
"Dominique",
"Lara",
"Karen",
"Nikola",
"Marion",
"Annabell",
"Annett",
"Dorothea",
"Iris",
"Henrike",
"Kira",
"Mirja",
"Camilla",
"Ronja",
"Valentina",
"Alena",
"Ariane",
"Dorothee",
"Fatma",
"Gesa",
"Agnieszka",
"Birgit",
"Ricarda",
"Sandy",
"Beate"
];
@@ -0,0 +1,252 @@
export default [
"Julia",
"Anna",
"Sarah",
"Lisa",
"Laura",
"Katharina",
"Lena",
"Vanessa",
"Annika",
"Jennifer",
"Jana",
"Lea",
"Marie",
"Jasmin",
"Franziska",
"Hannah",
"Jessica",
"Michelle",
"Nina",
"Alina",
"Johanna",
"Carolin",
"Christina",
"Kim",
"Nadine",
"Jacqueline",
"Ann",
"Luisa",
"Sophie",
"Lara",
"Natalie",
"Svenja",
"Sabrina",
"Isabell",
"Sandra",
"Janina",
"Melanie",
"Leonie",
"Antonia",
"Saskia",
"Stefanie",
"Aylin",
"Denise",
"Nele",
"Pia",
"Alexandra",
"Katrin",
"Sophia",
"Sina",
"Melina",
"Janine",
"Vivien",
"Rebecca",
"Anne",
"Miriam",
"Victoria",
"Nicole",
"Mareike",
"Lina",
"Josephine",
"Merle",
"Clara",
"Maria",
"Maike",
"Charlotte",
"Celina",
"Paula",
"Carina",
"Larissa",
"Christin",
"Linda",
"Mandy",
"Theresa",
"Kimberly",
"Elena",
"Melissa",
"Jule",
"Celine",
"Daniela",
"Jenny",
"Kira",
"Patricia",
"Ronja",
"Bianca",
"Eva",
"Sonja",
"Joana",
"Gina",
"Tanja",
"Nora",
"Yvonne",
"Pauline",
"Emily",
"Natascha",
"Anja",
"Marina",
"Friederike",
"Angelina",
"Nadja",
"Paulina",
"Lynn",
"Alicia",
"Svea",
"Amelie",
"Katja",
"Juliane",
"Lilly",
"Marlene",
"Verena",
"Chantal",
"Milena",
"Maja",
"Chiara",
"Selina",
"Alena",
"Carlotta",
"Mona",
"Annabell",
"Carla",
"Claudia",
"Tatjana",
"Maren",
"Elisabeth",
"Emma",
"Helena",
"Inga",
"Luise",
"Tamara",
"Christine",
"Fiona",
"Judith",
"Frederike",
"Finja",
"Jill",
"Fenja",
"Tina",
"Cindy",
"Ina",
"Janne",
"Marleen",
"Mia",
"Samantha",
"Annalena",
"Janika",
"Henrike",
"Wiebke",
"Elisa",
"Esther",
"Ricarda",
"Janna",
"Stella",
"Carolina",
"Dana",
"Helen",
"Madeleine",
"Mara",
"Simone",
"Corinna",
"Diana",
"Fabienne",
"Monique",
"Samira",
"Sandy",
"Tabea",
"Valerie",
"Malin",
"Andrea",
"Birte",
"Swantje",
"Veronika",
"Kerstin",
"Magdalena",
"Ramona",
"Susanne",
"Greta",
"Juli",
"Kaja",
"Lucy",
"Zoe",
"Angelique",
"Jasmina",
"Tessa",
"Lydia",
"Sabine",
"Dominique",
"Malina",
"Michaela",
"Charline",
"Monika",
"Karen",
"Mira",
"Yasemin",
"Alica",
"Alice",
"Alisa",
"Angelika",
"Emilia",
"Henriette",
"Marieke",
"Vera",
"Anneke",
"Felicia",
"Giulia",
"Liza",
"Maxi",
"Viola",
"Annkatrin",
"Lotta",
"Olivia",
"Anastasia",
"Dilara",
"Felicitas",
"Mariam",
"Marisa",
"Rieke",
"Rosa",
"Beatrice",
"Constanze",
"Dorothea",
"Isabella",
"Juliana",
"Katerina",
"Martina",
"Merve",
"Philine",
"Valentina",
"Justine",
"Melisa",
"Michele",
"Mika",
"Nancy",
"Selin",
"Alissa",
"Angela",
"Cara",
"Charleen",
"Deborah",
"Ellen",
"Imke",
"Irina",
"Jeanette",
"Leona",
"Lorena",
"Manuela",
"Martha",
"Silvia",
"Viviane",
"Aline",
"Desiree",
"Xenia"
];
@@ -0,0 +1,302 @@
export default [
"Hannah",
"Leonie",
"Anna",
"Lea",
"Lena",
"Mia",
"Emily",
"Laura",
"Lara",
"Sarah",
"Emma",
"Lilly",
"Marie",
"Sophie",
"Nele",
"Johanna",
"Lina",
"Julia",
"Maja",
"Sophia",
"Lisa",
"Amelie",
"Alina",
"Luisa",
"Leni",
"Clara",
"Jana",
"Charlotte",
"Paula",
"Emilia",
"Jasmin",
"Zoe",
"Annika",
"Katharina",
"Chiara",
"Pia",
"Finja",
"Josephine",
"Angelina",
"Jule",
"Lucy",
"Melina",
"Antonia",
"Vanessa",
"Emely",
"Victoria",
"Celina",
"Michelle",
"Nina",
"Isabell",
"Franziska",
"Fiona",
"Amy",
"Celine",
"Maria",
"Pauline",
"Stella",
"Carolin",
"Lia",
"Marlene",
"Melissa",
"Ida",
"Greta",
"Selina",
"Helena",
"Aylin",
"Merle",
"Ronja",
"Sina",
"Vivien",
"Mara",
"Eva",
"Kim",
"Elisa",
"Theresa",
"Jolina",
"Mathilda",
"Jette",
"Lotta",
"Luise",
"Elena",
"Carla",
"Jessica",
"Larissa",
"Luna",
"Nelly",
"Alicia",
"Lana",
"Linda",
"Milena",
"Miriam",
"Samira",
"Frieda",
"Magdalena",
"Carlotta",
"Alexandra",
"Fabienne",
"Kira",
"Helene",
"Nora",
"Elisabeth",
"Natalie",
"Tabea",
"Romy",
"Anne",
"Paulina",
"Juli",
"Christina",
"Annalena",
"Kimberly",
"Samantha",
"Annabell",
"Ella",
"Lynn",
"Mira",
"Letizia",
"Jennifer",
"Carina",
"Aaliyah",
"Rebecca",
"Anastasia",
"Dana",
"Isabella",
"Diana",
"Olivia",
"Lenja",
"Mariella",
"Mila",
"Lucia",
"Martha",
"Leyla",
"Joana",
"Elina",
"Carolina",
"Xenia",
"Gina",
"Nicole",
"Janina",
"Saskia",
"Evelyn",
"Anni",
"Marleen",
"Melanie",
"Svenja",
"Svea",
"Chantal",
"Tessa",
"Maike",
"Fenja",
"Leona",
"Josie",
"Joline",
"Cheyenne",
"Lorena",
"Noemi",
"Helen",
"Ann",
"Alissa",
"Malin",
"Lilian",
"Lotte",
"Mina",
"Felicitas",
"Liv",
"Jenny",
"Jill",
"Valentina",
"Veronika",
"Alexa",
"Kaja",
"Rieke",
"Yara",
"Dilara",
"Tuana",
"Laila",
"Tamara",
"Alisa",
"Ela",
"Marina",
"Alessia",
"Luana",
"Patricia",
"Lene",
"Jacqueline",
"Janne",
"Henriette",
"Ashley",
"Franka",
"Milla",
"Florentine",
"Selin",
"Selma",
"Giulia",
"Mona",
"Lisann",
"Aleyna",
"Rosalie",
"Sonja",
"Elif",
"Thea",
"Maren",
"Enya",
"Nadine",
"Alisha",
"Freya",
"Jamie",
"Denise",
"Aurelia",
"Ina",
"Christin",
"Judith",
"Lilith",
"Alena",
"Felicia",
"Juliana",
"Sandra",
"Zoey",
"Linnea",
"Soraya",
"Nisa",
"Stefanie",
"Juliane",
"Daria",
"Jasmina",
"Josefin",
"Friederike",
"Marla",
"Rosa",
"Cara",
"Nika",
"Naomi",
"Vivian",
"Amina",
"Elli",
"Cora",
"Luca",
"Madita",
"Mailin",
"Marieke",
"Tara",
"Amira",
"Liana",
"Lydia",
"Joy",
"Madlen",
"Nike",
"Hailey",
"Madeleine",
"Mareike",
"Aimee",
"Cassandra",
"Heidi",
"Joyce",
"Alea",
"Janine",
"Jonna",
"Sydney",
"Alia",
"Ilayda",
"Livia",
"Maira",
"Leana",
"Valerie",
"Thalia",
"Ellen",
"Emmi",
"Melisa",
"Inga",
"Julina",
"Smilla",
"Katja",
"Melinda",
"Valeria",
"Anouk",
"Liliana",
"Sabrina",
"Wiebke",
"Joleen",
"Leandra",
"Zeynep",
"Katrin",
"Tamina",
"Jenna",
"Levke",
"Salome",
"Annelie",
"Cecilia",
"Annemarie",
"Jona",
"Mary",
"Mirja",
"Collien",
"Alice",
"Azra",
"Ceylin",
"Lavinia",
"Maxi",
"Anja",
"Henrike",
"Mariam"
];
@@ -0,0 +1,32 @@
export default [
"Mia",
"Emma",
"Hannah",
"Sophia",
"Emilia",
"Anna",
"Lea",
"Lina",
"Marie",
"Lena",
"Leonie",
"Emily",
"Amelie",
"Luisa",
"Johanna",
"Clara",
"Sophie",
"Lilly",
"Mila",
"Leni",
"Laura",
"Lara",
"Nele",
"Maja",
"Charlotte",
"Sarah",
"Ella",
"Ida",
"Mathilda",
"Frieda"
];
@@ -0,0 +1,52 @@
export default [
"Emilia",
"Sophia",
"Emma",
"Hannah",
"Mia",
"Lina",
"Mila",
"Ella",
"Clara",
"Lea",
"Marie",
"Leni",
"Lia",
"Mathilda",
"Ida",
"Anna",
"Frieda",
"Leonie",
"Emily",
"Maja",
"Lilly",
"Luisa",
"Charlotte",
"Amelie",
"Sophie",
"Lena",
"Johanna",
"Lara",
"Mira",
"Nora",
"Nele",
"Sarah",
"Malia",
"Lotta",
"Juna",
"Paula",
"Luna",
"Elisa",
"Maria",
"Romy",
"Laura",
"Helena",
"Thea",
"Mara",
"Victoria",
"Antonia",
"Elena",
"Tilda",
"Carla",
"Eva"
];
@@ -0,0 +1,132 @@
export default [
"Michael",
"Peter",
"Hans",
"Klaus",
"Wolfgang",
"Thomas",
"Jürgen",
"Andreas",
"Bernd",
"Manfred",
"Rainer",
"Uwe",
"Dieter",
"Joachim",
"Karl",
"Holger",
"Werner",
"Ralf",
"Frank",
"Norbert",
"Ulrich",
"Rolf",
"Jörg",
"Gerhard",
"Günther",
"Helmut",
"Harald",
"Jens",
"Horst",
"Heinz",
"Reinhardt",
"Martin",
"Detlef",
"Stefan",
"Matthias",
"Volker",
"Christian",
"Gerd",
"Rüdiger",
"Alexander",
"Bernhard",
"Hartmut",
"Walter",
"Herbert",
"Georg",
"Ronald",
"Axel",
"Roland",
"Dirk",
"Josef",
"Lothar",
"Wilfried",
"Jan",
"Karsten",
"Udo",
"Ingo",
"Hermann",
"Kurt",
"Olaf",
"Franz",
"Siegfried",
"Dietmar",
"Mohammed",
"Heinrich",
"Alfred",
"Christoph",
"Viktor",
"Lutz",
"Johannes",
"Torsten",
"Kai",
"Rudolf",
"Richard",
"Waldemar",
"Robert",
"Jörn",
"Johann",
"Ernst",
"Reinhold",
"Eckhard",
"Friedrich",
"Burghard",
"Wilhelm",
"Heiko",
"Jochen",
"Harry",
"Hubert",
"Paul",
"Erich",
"Fred",
"Achim",
"Ali",
"Wolf",
"Erwin",
"Mario",
"Andre",
"Eberhard",
"Winfried",
"Heino",
"Sven",
"Willi",
"Ulf",
"Bodo",
"Henry",
"Vladimir",
"Dietrich",
"John",
"Armin",
"Edgar",
"Friedhelm",
"Gunnar",
"Arno",
"Fritz",
"Gerald",
"Henning",
"Abdul",
"Karlheinz",
"Andrzej",
"Markus",
"Otto",
"Roman",
"Knut",
"Wolfram",
"Nobert",
"Gunther",
"Konrad",
"Heiner",
"Mehmet",
"Nils",
"Bruno"
];
@@ -0,0 +1,202 @@
export default [
"Thomas",
"Michael",
"Andreas",
"Stefan",
"Frank",
"Torsten",
"Peter",
"Jörg",
"Ralf",
"Matthias",
"Christian",
"Dirk",
"Jens",
"Martin",
"Klaus",
"Jürgen",
"Karsten",
"Uwe",
"Bernd",
"Markus",
"Oliver",
"Sven",
"Wolfgang",
"Holger",
"Olaf",
"Hans",
"Rainer",
"Kai",
"Jan",
"Volker",
"Joachim",
"Christoph",
"Alexander",
"Axel",
"Heiko",
"Norbert",
"Manfred",
"Andre",
"Dieter",
"Robert",
"Ulrich",
"Detlef",
"Harald",
"Ingo",
"Marc",
"Roland",
"Lars",
"Rolf",
"Marco",
"Jochen",
"Guido",
"Mike",
"Jörn",
"Georg",
"Gerhard",
"Rüdiger",
"Mario",
"Lutz",
"Bernhard",
"Nils",
"Udo",
"Dietmar",
"Gerd",
"Karl",
"Horst",
"Günther",
"Steffen",
"Johannes",
"Werner",
"Ronald",
"Arne",
"Daniel",
"Helmut",
"Achim",
"Mohammed",
"René",
"Ulf",
"Hartmut",
"Björn",
"Erik",
"Heinz",
"Patrick",
"Viktor",
"Walter",
"Ali",
"Gerald",
"Reinhardt",
"Henning",
"Tobias",
"Mehmet",
"Armin",
"Sebastian",
"Helge",
"Gunnar",
"Richard",
"Waldemar",
"Josef",
"Knut",
"Boris",
"Hermann",
"Paul",
"Burghard",
"Florian",
"Lothar",
"Sönke",
"Tim",
"Philipp",
"Franz",
"Clemens",
"Wilfried",
"Siegfried",
"Johann",
"Ahmet",
"Eckhard",
"Fred",
"Heinrich",
"Roman",
"John",
"Arno",
"Mustafa",
"Hasan",
"Gregor",
"Alfred",
"Arnd",
"Rudolf",
"Sergej",
"David",
"Manuel",
"Marcel",
"Friedrich",
"José",
"Marek",
"Mirko",
"Sascha",
"Thilo",
"Bodo",
"Darius",
"Hendrik",
"Herbert",
"Nikolai",
"Wolf",
"Nikola",
"Roger",
"Edgar",
"Ernst",
"Henry",
"Wolfram",
"Christopher",
"Vladimir",
"Gunther",
"Hüseyin",
"Harry",
"Hauke",
"Wilhelm",
"Arthur",
"Winfried",
"Henrik",
"Antonio",
"Felix",
"Anton",
"Bruno",
"Igor",
"Götz",
"Tom",
"Heino",
"Abdul",
"Miroslaw",
"Sören",
"Bert",
"Elmar",
"Hubert",
"Kurt",
"Ole",
"Tillmann",
"Ahmad",
"Andrej",
"Dennis",
"Adam",
"Ibrahim",
"Malte",
"Raphael",
"Reinhold",
"Eduard",
"Erwin",
"Marius",
"Nikolaus",
"Carlos",
"Ismail",
"Nico",
"Gernot",
"Jacek",
"Nicolas",
"Peer",
"Albert",
"Heiner",
"Timo",
"Andrzej",
"Jean",
"Berthold",
"Hanno"
];
@@ -0,0 +1,252 @@
export default [
"Christian",
"Michael",
"Stefan",
"Andreas",
"Markus",
"Thomas",
"Matthias",
"Sven",
"Jan",
"Alexander",
"Oliver",
"Martin",
"Torsten",
"Frank",
"Marco",
"Marc",
"Jens",
"Daniel",
"Karsten",
"Andre",
"Sebastian",
"Lars",
"Dirk",
"Tobias",
"Jörg",
"Sascha",
"Kai",
"Florian",
"Christoph",
"Björn",
"Peter",
"Dennis",
"Mike",
"Ralf",
"Patrick",
"Robert",
"Holger",
"René",
"Nils",
"Heiko",
"Mario",
"Philipp",
"Olaf",
"Steffen",
"Tim",
"Timo",
"Ingo",
"Jürgen",
"Volker",
"Marcel",
"Benjamin",
"Bernd",
"Axel",
"Arne",
"Klaus",
"David",
"Jörn",
"Felix",
"Boris",
"Henning",
"Wolfgang",
"Uwe",
"Mirko",
"Torben",
"Johannes",
"Nico",
"Manuel",
"Jochen",
"Hans",
"Ali",
"Joachim",
"Malte",
"Mohammed",
"Roland",
"Simon",
"Rainer",
"Fabian",
"Gunnar",
"Ulrich",
"Ronny",
"Mehmet",
"Erik",
"Guido",
"Sergej",
"Hendrik",
"Viktor",
"Dominik",
"Roman",
"Georg",
"Bastian",
"Murat",
"Helge",
"Sören",
"Christopher",
"Karl",
"Andrej",
"Mustafa",
"Ulf",
"Lutz",
"Ole",
"Ahmet",
"Moritz",
"Enrico",
"Nicolas",
"Sönke",
"Paul",
"Harald",
"Norbert",
"Henrik",
"Raphael",
"Nikolai",
"Tom",
"Danny",
"Gerrit",
"Hasan",
"Gregor",
"Arthur",
"Bernhard",
"Marius",
"Konstantin",
"Achim",
"Norman",
"John",
"Thilo",
"Waldemar",
"Julian",
"Clemens",
"Hakan",
"Till",
"Ronald",
"Eduard",
"Erkan",
"Hauke",
"Manfred",
"Rüdiger",
"Adam",
"Ahmad",
"Klaas",
"Ibrahim",
"Vladimir",
"Adrian",
"Eugen",
"Falk",
"Maximilian",
"Richard",
"Andy",
"Frederik",
"Marek",
"Tino",
"Kevin",
"Knut",
"Pascal",
"Arnd",
"Detlef",
"Gerald",
"Max",
"Darius",
"Heinrich",
"Hüseyin",
"Igor",
"Alexej",
"Dieter",
"Eike",
"Tomasz",
"Wilhelm",
"Dietmar",
"Franz",
"Gerhard",
"Johann",
"Antonio",
"José",
"Rolf",
"Abdul",
"Peer",
"Ismail",
"Nikola",
"Bülent",
"Gerd",
"Jakob",
"Lukas",
"Niklas",
"Robin",
"Gordon",
"Friedrich",
"Jonas",
"Leif",
"Michel",
"Hermann",
"Oleg",
"Sandro",
"Tillmann",
"Burghard",
"Henry",
"Jean",
"Steven",
"Benedikt",
"Nikolaus",
"Ricardo",
"Roberto",
"Vitali",
"Amir",
"Günther",
"Helmut",
"Ivan",
"Rico",
"Falko",
"Jacek",
"Kim",
"Krzysztof",
"Piotr",
"Said",
"Silvio",
"Udo",
"Vitalij",
"Werner",
"Armin",
"Ayhan",
"Bodo",
"Carlos",
"Cengiz",
"Josef",
"Pierre",
"Ömer",
"Arno",
"Atilla",
"Birger",
"Dimitri",
"Georgios",
"Götz",
"Hagen",
"Hannes",
"Hartmut",
"Juan",
"Kolja",
"Marcin",
"Toni",
"Louis",
"Metin",
"Paulo",
"Pawel",
"Yusuf",
"Albert",
"Alex",
"Chris",
"Gunther",
"Lasse",
"Orhan",
"Ramazan",
"Rudolf",
"Walter"
];
@@ -0,0 +1,202 @@
export default [
"Christian",
"Sebastian",
"Jan",
"Daniel",
"Stefan",
"Alexander",
"Michael",
"Dennis",
"Martin",
"Florian",
"Tobias",
"Matthias",
"Philipp",
"Patrick",
"Thomas",
"Benjamin",
"Andreas",
"Markus",
"Christoph",
"Marcel",
"Sven",
"Sascha",
"Tim",
"David",
"Felix",
"Johannes",
"Robert",
"Marco",
"Andre",
"Marc",
"Oliver",
"Christopher",
"Nils",
"Fabian",
"Simon",
"Björn",
"Timo",
"René",
"Dominik",
"Julian",
"Jens",
"Lars",
"Peter",
"Steffen",
"Manuel",
"Lukas",
"Moritz",
"Maximilian",
"Jonas",
"Mike",
"Kai",
"Frank",
"Paul",
"Kevin",
"Torben",
"Nico",
"Karsten",
"Torsten",
"Mario",
"Malte",
"Bastian",
"Hendrik",
"Max",
"Dirk",
"Pascal",
"Erik",
"Sören",
"Arne",
"Jakob",
"Nicolas",
"Konstantin",
"Niklas",
"Marius",
"Frederik",
"Roman",
"Henning",
"Jörg",
"Mirko",
"Mohammed",
"Viktor",
"Ali",
"Ralf",
"Raphael",
"Adrian",
"Danny",
"Steven",
"Ole",
"Hannes",
"Lennard",
"Benedikt",
"Georg",
"Marvin",
"Eugen",
"Robin",
"Jochen",
"Tom",
"Arthur",
"Heiko",
"Nikolai",
"Jannik",
"Till",
"Hans",
"Richard",
"Henrik",
"Pierre",
"Ronny",
"Sergej",
"Holger",
"Jannis",
"John",
"Boris",
"Jörn",
"Michel",
"Johann",
"Gregor",
"Klaus",
"Norman",
"Clemens",
"Hauke",
"Jonathan",
"Vincent",
"Enrico",
"Kim",
"Axel",
"Andrej",
"Toni",
"Karl",
"Waldemar",
"Bernd",
"Mehmet",
"Anton",
"Wolfgang",
"Ahmad",
"Mustafa",
"Andy",
"Ahmet",
"Lasse",
"Tino",
"Eike",
"Gerrit",
"Konrad",
"Joachim",
"Steve",
"Julius",
"Eduard",
"Murat",
"Dimitri",
"Friedrich",
"Gunnar",
"Jürgen",
"Adam",
"Ibrahim",
"Maurice",
"Klaas",
"Sönke",
"Bernhard",
"Igor",
"Tillmann",
"Alexej",
"Chris",
"Vladimir",
"Serkan",
"Thilo",
"Helge",
"Olaf",
"Roland",
"Gabriel",
"Nick",
"Falk",
"Nikola",
"Rico",
"Kolja",
"Leif",
"Pawel",
"Amir",
"Ingo",
"Jascha",
"Alex",
"Fatih",
"Gökhan",
"Hakan",
"Hasan",
"Kamil",
"Lutz",
"Marcin",
"Uwe",
"Achim",
"Finn",
"Samuel",
"Valentin",
"Vitali",
"Damian",
"Dustin",
"Franz",
"Leon",
"Darius",
"Erkan",
"Henry",
"Maxim",
"Peer"
];
@@ -0,0 +1,252 @@
export default [
"Jan",
"Lukas",
"Philipp",
"Tim",
"Alexander",
"Daniel",
"Tobias",
"Dennis",
"Marcel",
"Felix",
"Kevin",
"Florian",
"Maximilian",
"Niklas",
"Jonas",
"Sebastian",
"Patrick",
"Fabian",
"Christian",
"Jannik",
"Julian",
"David",
"Marvin",
"Timo",
"Marc",
"Nico",
"Simon",
"Finn",
"Dominik",
"Nils",
"Leon",
"Pascal",
"Lennard",
"Max",
"Tom",
"Christopher",
"Benjamin",
"Moritz",
"Paul",
"Lars",
"Marco",
"Sven",
"Christoph",
"Robin",
"Johannes",
"Malte",
"Michael",
"Torben",
"Jakob",
"Matthias",
"Martin",
"Stefan",
"Mike",
"Andre",
"Jannis",
"Hendrik",
"Luca",
"Björn",
"Nicolas",
"Markus",
"René",
"Vincent",
"Jonathan",
"Steven",
"Frederik",
"Sascha",
"Thomas",
"Erik",
"Robert",
"Oliver",
"Andreas",
"Nick",
"Marius",
"Kai",
"Ole",
"Manuel",
"Joshua",
"Justin",
"Steffen",
"Adrian",
"Konstantin",
"Benedikt",
"Lasse",
"Louis",
"Maurice",
"Julius",
"Mirko",
"Anton",
"Till",
"John",
"Henrik",
"Henry",
"Bastian",
"Sören",
"Leonard",
"Raphael",
"Johann",
"Arne",
"Hannes",
"Michel",
"Karl",
"Mario",
"Ben",
"Mohammed",
"Viktor",
"Linus",
"Nikolai",
"Dustin",
"Aaron",
"Valentin",
"Peter",
"Toni",
"Henning",
"Marlon",
"Clemens",
"Danny",
"Justus",
"Jasper",
"Julien",
"Chris",
"Jens",
"Joel",
"Hauke",
"Kim",
"Richard",
"Gerrit",
"Cedric",
"Pierre",
"Karsten",
"Thore",
"Vivian",
"Mats",
"Ricardo",
"Arthur",
"Bennet",
"Fabio",
"Jannek",
"Kilian",
"Leo",
"Melvin",
"Noah",
"Samuel",
"Timon",
"Eike",
"Ali",
"Leif",
"Peer",
"Jean",
"Hans",
"Jeremy",
"Merlin",
"Jannes",
"Calvin",
"Jona",
"Elias",
"Lorenz",
"Marten",
"Can",
"Dario",
"Georg",
"Ahmet",
"Enrico",
"Oskar",
"Tristan",
"Jascha",
"Roman",
"Colin",
"Gabriel",
"Jason",
"Klaas",
"Morten",
"Nikola",
"Phil",
"Sönke",
"Alex",
"Cem",
"Konrad",
"Mattis",
"Rico",
"Armin",
"Brian",
"Frank",
"Gregor",
"Ralf",
"Thies",
"Norman",
"Ruben",
"Ahmad",
"Emre",
"Levin",
"Mehmet",
"Torge",
"Torsten",
"Bjarne",
"Kornelius",
"Steve",
"Jerome",
"Marek",
"Sandro",
"Thilo",
"Franz",
"Kenneth",
"Axel",
"Burak",
"Jörn",
"Kjell",
"Milan",
"Tjark",
"Kolja",
"Miguel",
"Tillmann",
"Emil",
"Friedrich",
"Lion",
"Rasmus",
"Tino",
"Caspar",
"Mert",
"Amir",
"Ibrahim",
"Joe",
"Leonhard",
"Mustafa",
"Onur",
"Ferdinand",
"Joscha",
"Laurenz",
"Maxim",
"Sam",
"Yasin",
"Antonio",
"Jeffrey",
"Jendrik",
"Nikolaus",
"Philippe",
"Sinan",
"Damian",
"Dirk",
"Fritz",
"Helge",
"Juri",
"Leander",
"Matti",
"Michele",
"Nino",
"Rouven",
"Said",
"Tarek",
"Theo",
"Timothy"
];
@@ -0,0 +1,302 @@
export default [
"Leon",
"Lukas",
"Luca",
"Jonas",
"Tim",
"Finn",
"Paul",
"Felix",
"Maximilian",
"Louis",
"Niklas",
"Max",
"Ben",
"Julian",
"Jan",
"Philipp",
"Elias",
"Moritz",
"Noah",
"Jannik",
"Jannis",
"Tom",
"Nico",
"Simon",
"David",
"Alexander",
"Fabian",
"Erik",
"Jakob",
"Florian",
"Nils",
"Justin",
"Lennard",
"Nick",
"Linus",
"Daniel",
"Tobias",
"Jason",
"Dominik",
"Colin",
"Marvin",
"Mika",
"Sebastian",
"Kevin",
"Johannes",
"Julius",
"Robin",
"Jonathan",
"Henry",
"Hannes",
"Anton",
"Vincent",
"Benjamin",
"Marlon",
"Timo",
"Lenny",
"Adrian",
"Marc",
"Joel",
"Raphael",
"Dennis",
"Till",
"Joshua",
"Aaron",
"Emil",
"Pascal",
"Ole",
"Leonard",
"Leo",
"Lasse",
"Marcel",
"Samuel",
"Konstantin",
"Karl",
"Oskar",
"Lars",
"Lennox",
"Mattis",
"Jona",
"Kilian",
"Christian",
"Maurice",
"Justus",
"Jamie",
"Oliver",
"Malte",
"Silas",
"Michael",
"Mohammed",
"Jeremy",
"John",
"Phil",
"Bastian",
"Maxim",
"Johann",
"Liam",
"Nicolas",
"Mike",
"Levin",
"Benedikt",
"Marco",
"Noel",
"Luke",
"Bennet",
"Cedric",
"Gabriel",
"Theo",
"Matteo",
"Tyler",
"Valentin",
"Fabio",
"Marius",
"Jayden",
"Toni",
"Richard",
"Mats",
"Hendrik",
"Jannes",
"Henrik",
"Julien",
"Manuel",
"Arthur",
"Patrick",
"Matthias",
"Frederik",
"Connor",
"Tristan",
"Torben",
"Markus",
"Kai",
"Martin",
"Arda",
"Andreas",
"Damian",
"Timon",
"Franz",
"Michel",
"Levi",
"Finley",
"Robert",
"Thomas",
"Ian",
"Arne",
"Dustin",
"Christopher",
"Christoph",
"Bruno",
"Diego",
"Matti",
"Clemens",
"Leander",
"Magnus",
"Milan",
"Danny",
"Laurin",
"Lorenz",
"Laurenz",
"Sven",
"Ali",
"Leandro",
"Steven",
"Chris",
"Dean",
"Lenn",
"Pepe",
"Jasper",
"Konrad",
"Devin",
"Can",
"Domenik",
"Friedrich",
"Sean",
"Kian",
"Sam",
"Kjell",
"Ryan",
"Andre",
"Bjarne",
"Ruben",
"Stefan",
"Nikita",
"René",
"Peter",
"Hugo",
"Melvin",
"Jean",
"Leopold",
"Malik",
"Willi",
"Fritz",
"Leonardo",
"Quentin",
"Ahmet",
"Enrico",
"Emilio",
"Brian",
"Ferdinand",
"Antonio",
"Marten",
"Nevio",
"Thore",
"Joris",
"Leonhard",
"Roman",
"Anthony",
"Viktor",
"Henning",
"Sascha",
"Alex",
"Adam",
"Elia",
"Josef",
"Theodor",
"Jaron",
"Leif",
"Georg",
"Piet",
"Alessandro",
"Kaan",
"Lion",
"Miguel",
"Alessio",
"Carlos",
"Luan",
"Ilyas",
"Ricardo",
"Yusuf",
"Jannek",
"Mert",
"Peer",
"Yasin",
"Enes",
"Marek",
"Nino",
"Arian",
"Carlo",
"Janne",
"Gustav",
"Hasan",
"Mattes",
"Mustafa",
"William",
"Jerome",
"Milo",
"Dario",
"Mehmet",
"Hans",
"Thilo",
"Neo",
"Sören",
"Mirko",
"Sandro",
"Tamino",
"Emilian",
"Björn",
"Korbinian",
"Pierre",
"Emanuel",
"Bela",
"Benno",
"Merlin",
"Tino",
"Keno",
"Ludwig",
"Emre",
"Jordan",
"Kerem",
"Gianluca",
"Ibrahim",
"Jesse",
"Mario",
"Tjark",
"Eddy",
"Lian",
"Fiete",
"Etienne",
"Klaas",
"Marian",
"Efe",
"Jack",
"Calvin",
"Semih",
"Rico",
"Mick",
"Darian",
"Joost",
"Tommy",
"Angelo",
"Romeo",
"Keanu",
"Kurt",
"Raik",
"Tammo",
"Dylan",
"Nikolai",
"Thies",
"Armin",
"Darius",
"Maddox",
"Rasmus"
];
@@ -0,0 +1,32 @@
export default [
"Ben",
"Leon",
"Paul",
"Jonas",
"Finn",
"Lukas",
"Louis",
"Luca",
"Noah",
"Elias",
"Felix",
"Maximilian",
"Max",
"Henry",
"Julian",
"Moritz",
"Tim",
"Emil",
"Jakob",
"Philipp",
"Niklas",
"Oskar",
"David",
"Anton",
"Alexander",
"Liam",
"Matteo",
"Theo",
"Tom",
"Jan"
];
@@ -0,0 +1,52 @@
export default [
"Noah",
"Matteo",
"Leon",
"Elias",
"Finn",
"Paul",
"Luca",
"Emil",
"Louis",
"Theo",
"Henry",
"Felix",
"Ben",
"Liam",
"Leo",
"Lukas",
"Jonas",
"Jakob",
"Anton",
"Oskar",
"Maximilian",
"Mohammed",
"Levi",
"Milan",
"Jona",
"David",
"Karl",
"Jannis",
"Lio",
"Moritz",
"Adam",
"Max",
"Samuel",
"Mats",
"Alexander",
"Jonathan",
"Raphael",
"Aaron",
"Linus",
"Julian",
"Milo",
"Theodor",
"Carlo",
"Philipp",
"Valentin",
"Leonard",
"Erik",
"Mika",
"Johann",
"Niklas"
];
@@ -0,0 +1,986 @@
export default [
"Müller",
"Schmidt",
"Schneider",
"Fischer",
"Weber",
"Meyer",
"Wagner",
"Schulz",
"Becker",
"Hoffmann",
"Schäfer",
"Koch",
"Richter",
"Bauer",
"Klein",
"Wolf",
"Schröder",
"Neumann",
"Schwarz",
"Zimmermann",
"Braun",
"Hofmann",
"Krüger",
"Hartmann",
"Lange",
"Schmitt",
"Werner",
"Schmitz",
"Krause",
"Meier",
"Lehmann",
"Schmid",
"Schulze",
"Maier",
"Köhler",
"Herrmann",
"Walter",
"König",
"Mayer",
"Huber",
"Kaiser",
"Fuchs",
"Peters",
"Lang",
"Scholz",
"Möller",
"Weiß",
"Jung",
"Hahn",
"Schubert",
"Vogel",
"Friedrich",
"Günther",
"Keller",
"Winkler",
"Frank",
"Berger",
"Roth",
"Beck",
"Lorenz",
"Baumann",
"Franke",
"Albrecht",
"Schuster",
"Simon",
"Ludwig",
"Böhm",
"Winter",
"Kraus",
"Martin",
"Schumacher",
"Krämer",
"Vogt",
"Otto",
"Jäger",
"Stein",
"Groß",
"Sommer",
"Seidel",
"Heinrich",
"Haas",
"Brandt",
"Schreiber",
"Graf",
"Dietrich",
"Schulte",
"Kühn",
"Ziegler",
"Kuhn",
"Pohl",
"Engel",
"Horn",
"Bergmann",
"Voigt",
"Busch",
"Thomas",
"Sauer",
"Arnold",
"Pfeiffer",
"Wolff",
"Beyer",
"Seifert",
"Ernst",
"Lindner",
"Hübner",
"Kramer",
"Jansen",
"Franz",
"Peter",
"Hansen",
"Wenzel",
"Götz",
"Paul",
"Riedel",
"Barth",
"Kern",
"Hermann",
"Nagel",
"Wilhelm",
"Ott",
"Bock",
"Langer",
"Grimm",
"Ritter",
"Haase",
"Lenz",
"Förster",
"Mohr",
"Kruse",
"Schumann",
"Jahn",
"Thiel",
"Kaufmann",
"Zimmer",
"Hoppe",
"Petersen",
"Fiedler",
"Berg",
"Arndt",
"Marx",
"Lutz",
"Fritz",
"Kraft",
"Michel",
"Walther",
"Böttcher",
"Schütz",
"Eckert",
"Sander",
"Thiele",
"Reuter",
"Reinhardt",
"Schindler",
"Ebert",
"Kunz",
"Schilling",
"Schramm",
"Voß",
"Nowak",
"Hein",
"Hesse",
"Frey",
"Rudolph",
"Fröhlich",
"Beckmann",
"Kunze",
"Herzog",
"Bayer",
"Behrens",
"Stephan",
"Büttner",
"Gruber",
"Adam",
"Gärtner",
"Witt",
"Maurer",
"Bender",
"Bachmann",
"Schultz",
"Seitz",
"Geiger",
"Stahl",
"Steiner",
"Scherer",
"Kirchner",
"Dietz",
"Ullrich",
"Kurz",
"Breuer",
"Gerlach",
"Ulrich",
"Brinkmann",
"Fink",
"Heinz",
"Löffler",
"Reichert",
"Naumann",
"Böhme",
"Schröter",
"Blum",
"Göbel",
"Moser",
"Schlüter",
"Brunner",
"Körner",
"Schenk",
"Wirth",
"Wegner",
"Brand",
"Wendt",
"Stark",
"Schwab",
"Krebs",
"Heller",
"Wolter",
"Reimann",
"Rieger",
"Unger",
"Binder",
"Bruns",
"Döring",
"Menzel",
"Buchholz",
"Ackermann",
"Rose",
"Meißner",
"Janssen",
"Bartsch",
"May",
"Hirsch",
"Jakob",
"Schiller",
"Kopp",
"John",
"Hinz",
"Bach",
"Pfeifer",
"Bischoff",
"Engelhardt",
"Wilke",
"Sturm",
"Hildebrandt",
"Siebert",
"Urban",
"Link",
"Rohde",
"Kohl",
"Linke",
"Wittmann",
"Fricke",
"Köster",
"Gebhardt",
"Weiss",
"Vetter",
"Freitag",
"Nickel",
"Hennig",
"Rau",
"Münch",
"Witte",
"Noack",
"Renner",
"Westphal",
"Reich",
"Will",
"Baier",
"Kolb",
"Brückner",
"Marquardt",
"Kiefer",
"Keil",
"Henning",
"Heinze",
"Funk",
"Lemke",
"Ahrens",
"Esser",
"Pieper",
"Baum",
"Conrad",
"Schlegel",
"Fuhrmann",
"Decker",
"Jacob",
"Held",
"Röder",
"Berndt",
"Hanke",
"Kirsch",
"Neubauer",
"Hammer",
"Stoll",
"Erdmann",
"Mann",
"Philipp",
"Schön",
"Wiese",
"Kremer",
"Bartels",
"Klose",
"Mertens",
"Schreiner",
"Dittrich",
"Krieger",
"Kröger",
"Krug",
"Harms",
"Henke",
"Großmann",
"Martens",
"Heß",
"Schrader",
"Strauß",
"Adler",
"Herbst",
"Kühne",
"Heine",
"Konrad",
"Kluge",
"Henkel",
"Wiedemann",
"Albert",
"Popp",
"Wimmer",
"Karl",
"Wahl",
"Stadler",
"Hamann",
"Kuhlmann",
"Steffen",
"Lindemann",
"Fritsch",
"Bernhardt",
"Burkhardt",
"Preuß",
"Metzger",
"Bader",
"Nolte",
"Hauser",
"Blank",
"Beier",
"Klaus",
"Probst",
"Hess",
"Zander",
"Miller",
"Niemann",
"Funke",
"Haupt",
"Burger",
"Bode",
"Holz",
"Jost",
"Rauch",
"Rothe",
"Herold",
"Jordan",
"Anders",
"Fleischer",
"Wiegand",
"Hartung",
"Janßen",
"Lohmann",
"Krauß",
"Vollmer",
"Baur",
"Heinemann",
"Wild",
"Brenner",
"Reichel",
"Wetzel",
"Christ",
"Rausch",
"Hummel",
"Reiter",
"Mayr",
"Knoll",
"Kroll",
"Wegener",
"Beer",
"Schade",
"Neubert",
"Merz",
"Schüler",
"Strobel",
"Diehl",
"Behrendt",
"Glaser",
"Feldmann",
"Hagen",
"Jacobs",
"Rupp",
"Geißler",
"Straub",
"Hohmann",
"Römer",
"Stock",
"Haag",
"Meister",
"Freund",
"Dörr",
"Kessler",
"Betz",
"Seiler",
"Altmann",
"Weise",
"Metz",
"Eder",
"Busse",
"Mai",
"Wunderlich",
"Schütte",
"Hentschel",
"Voss",
"Weis",
"Heck",
"Born",
"Falk",
"Raab",
"Lauer",
"Völker",
"Bittner",
"Merkel",
"Sonntag",
"Moritz",
"Ehlers",
"Bertram",
"Hartwig",
"Rapp",
"Gerber",
"Zeller",
"Scharf",
"Pietsch",
"Kellner",
"Bär",
"Eichhorn",
"Giese",
"Wulf",
"Block",
"Opitz",
"Gottschalk",
"Jürgens",
"Greiner",
"Wieland",
"Benz",
"Keßler",
"Steffens",
"Heil",
"Seeger",
"Stumpf",
"Gross",
"Bühler",
"Eberhardt",
"Hiller",
"Buck",
"Weigel",
"Schweizer",
"Albers",
"Heuer",
"Pape",
"Hempel",
"Schott",
"Schütze",
"Scheffler",
"Engelmann",
"Wiesner",
"Runge",
"Geyer",
"Neuhaus",
"Forster",
"Oswald",
"Radtke",
"Heim",
"Geisler",
"Appel",
"Weidner",
"Seidl",
"Moll",
"Dorn",
"Klemm",
"Barthel",
"Gabriel",
"Springer",
"Timm",
"Engels",
"Kretschmer",
"Reimer",
"Steinbach",
"Hensel",
"Wichmann",
"Eichler",
"Hecht",
"Winkelmann",
"Heise",
"Noll",
"Fleischmann",
"Neugebauer",
"Hinrichs",
"Schaller",
"Lechner",
"Brandl",
"Mack",
"Gebauer",
"Siegel",
"Zahn",
"Singer",
"Michels",
"Schuler",
"Scholl",
"Uhlig",
"Brüggemann",
"Specht",
"Bürger",
"Eggert",
"Baumgartner",
"Weller",
"Schnell",
"Börner",
"Brauer",
"Kohler",
"Pfaff",
"Auer",
"Drescher",
"Otte",
"Frenzel",
"Petzold",
"Rother",
"Hagemann",
"Sattler",
"Wirtz",
"Ruf",
"Schirmer",
"Sauter",
"Schürmann",
"Junker",
"Walz",
"Dreyer",
"Sievers",
"Haller",
"Prinz",
"Stolz",
"Hausmann",
"Dick",
"Lux",
"Schnabel",
"Elsner",
"Kühl",
"Gerhardt",
"Klotz",
"Rabe",
"Schick",
"Faber",
"Riedl",
"Kranz",
"Fries",
"Reichelt",
"Rösch",
"Langner",
"Maaß",
"Wittig",
"Geier",
"Finke",
"Kasper",
"Maas",
"Bremer",
"Rath",
"Knapp",
"Dittmann",
"Kahl",
"Volk",
"Faust",
"Harder",
"Biermann",
"Pütz",
"Kempf",
"Mielke",
"Michaelis",
"Yilmaz",
"Abel",
"Thieme",
"Schütt",
"Hauck",
"Cordes",
"Eberle",
"Schaefer",
"Wehner",
"Haug",
"Fritzsche",
"Kilian",
"Eggers",
"Große",
"Matthes",
"Reinhold",
"Paulus",
"Dürr",
"Bohn",
"Thoma",
"Schober",
"Koller",
"Korn",
"Höhne",
"Hering",
"Gerdes",
"Ullmann",
"Jensen",
"Endres",
"Bernhard",
"Leonhardt",
"Eckhardt",
"Schaaf",
"Höfer",
"Junge",
"Rademacher",
"Pilz",
"Hellwig",
"Knorr",
"Helbig",
"Melzer",
"Lippert",
"Evers",
"Bahr",
"Klinger",
"Heitmann",
"Ehrhardt",
"Heinrichs",
"Horstmann",
"Behr",
"Stöhr",
"Drews",
"Rudolf",
"Sieber",
"Theis",
"Groth",
"Hecker",
"Weiler",
"Kemper",
"Rost",
"Lück",
"Claus",
"Hildebrand",
"Steinmetz",
"Götze",
"Trautmann",
"Blume",
"Kurth",
"Augustin",
"Nitsche",
"Janke",
"Jahnke",
"Klug",
"Damm",
"Heimann",
"Strauch",
"Schlosser",
"Uhl",
"Böhmer",
"Ries",
"Hellmann",
"Höhn",
"Hertel",
"Dreher",
"Borchert",
"Huth",
"Sperling",
"Just",
"Stenzel",
"Kunkel",
"Lau",
"Sprenger",
"Schönfeld",
"Pohlmann",
"Heilmann",
"Wacker",
"Lehner",
"Teichmann",
"Kaminski",
"Vogl",
"Gehrke",
"Hartl",
"Vogler",
"Schroeder",
"Thomsen",
"Nitschke",
"Engler",
"Liedtke",
"Wille",
"Starke",
"Friedrichs",
"Kirchhoff",
"Schwarze",
"Balzer",
"Reinhard",
"Heinen",
"Lotz",
"Küster",
"Kretzschmar",
"Schöne",
"Clemens",
"Hornung",
"Ulbrich",
"Renz",
"Hofer",
"Ruppert",
"Lohse",
"Schuh",
"Amann",
"Westermann",
"Stiller",
"Burmeister",
"Alt",
"Hampel",
"Brockmann",
"Wessel",
"Späth",
"Hoyer",
"Mader",
"Bartel",
"Rößler",
"Krieg",
"Grote",
"Schwarzer",
"Schweitzer",
"Scheer",
"Bosch",
"Zink",
"Roos",
"Wagener",
"Oppermann",
"Henze",
"Lehnert",
"Seemann",
"Trapp",
"Reiß",
"David",
"Pfeffer",
"Grau",
"Horst",
"Diekmann",
"Korte",
"Rehm",
"Wilde",
"Schleicher",
"Lampe",
"Grundmann",
"Veit",
"Daniel",
"Eisele",
"Hafner",
"Steinert",
"Sachs",
"Pfister",
"Kühnel",
"Schüller",
"Klatt",
"Bischof",
"Wendel",
"Tietz",
"Frick",
"Buschmann",
"Steinke",
"Menke",
"Baumeister",
"Kirschner",
"Loos",
"Ebner",
"Kastner",
"Wolters",
"Orth",
"Stange",
"Becher",
"Helm",
"Knobloch",
"Wörner",
"Heyer",
"Nguyen",
"Baumgärtner",
"Grund",
"Brüning",
"Ostermann",
"Cremer",
"Schauer",
"Jacobi",
"Ewald",
"Fürst",
"Widmann",
"Otten",
"Büchner",
"Petri",
"Fritsche",
"Kock",
"Ehlert",
"Kleine",
"Eckstein",
"Hacker",
"Brandes",
"Buchner",
"Hagedorn",
"Keck",
"Häusler",
"Muth",
"Apel",
"Heuser",
"Bastian",
"Kersten",
"Stamm",
"Niemeyer",
"Berthold",
"Gehrmann",
"Weinert",
"Schatz",
"Hager",
"Volkmann",
"Michael",
"Wieczorek",
"Wilms",
"Burghardt",
"Schultze",
"Merten",
"Schwartz",
"Kling",
"Rode",
"Neu",
"Mende",
"Thies",
"Böttger",
"Schell",
"Spindler",
"Pabst",
"Grün",
"Weiland",
"Mühlbauer",
"Hanisch",
"Doll",
"Janzen",
"Adams",
"Hermes",
"Haack",
"Cramer",
"Spies",
"Stern",
"Kugler",
"Budde",
"Jakobs",
"Scheller",
"Rösler",
"Reiser",
"Jonas",
"Herr",
"Ebeling",
"Wulff",
"Pauli",
"Löhr",
"Lukas",
"Rahn",
"Sachse",
"Köhn",
"Backhaus",
"Mahler",
"Hille",
"Kowalski",
"Heidrich",
"Brück",
"Gottwald",
"Heidenreich",
"Baumgarten",
"Hamm",
"Körber",
"Kübler",
"Frisch",
"Hardt",
"Enders",
"Bräuer",
"Seidler",
"Küpper",
"Lauterbach",
"Zeidler",
"Eckardt",
"Kreuzer",
"Schiffer",
"Schaper",
"Gehring",
"Hannemann",
"Ortmann",
"Petry",
"Thiemann",
"Tiedemann",
"Grünewald",
"Johannsen",
"Scheel",
"Volz",
"Kunert",
"Dieckmann",
"Bormann",
"Obermeier",
"Knauer",
"Schaub",
"Eilers",
"Berner",
"Pahl",
"Reinecke",
"Herz",
"Henn",
"Brehm",
"Hoff",
"Resch",
"Ochs",
"Krohn",
"Lerch",
"Raabe",
"Ehrlich",
"Hack",
"Friedl",
"Reis",
"Rogge",
"Meurer",
"Thelen",
"Drechsler",
"Hölscher",
"Morgenstern",
"Sommerfeld",
"Ebel",
"Kellermann",
"Rupprecht",
"Post",
"Hillebrand",
"Hill",
"Paulsen",
"Grabowski",
"Bolz",
"Lorenzen",
"Welsch",
"Seibel",
"Kleinert",
"Schröer",
"Jaeger",
"Wächter",
"Boldt",
"Palm",
"Kratz",
"Reimers",
"Pusch",
"Exner",
"Dietze",
"Wüst",
"Andres",
"Heide",
"Kaya",
"Reichardt",
"Kummer",
"Metzner",
"Grube",
"Ewert",
"Grunwald",
"Habermann",
"Zorn",
"Fichtner",
"Emmerich",
"Mangold",
"Reif",
"Ahlers",
"Kästner",
"Küppers",
"Petermann",
"Stratmann",
"Sailer",
"Schuhmacher",
"Hoch",
"Struck",
"Buchmann",
"Rauscher",
"Lüdtke",
"Wendler",
"Dreier",
"Zöller",
"Bucher",
"Siegert",
"Finger",
"Hopf",
"Rieck",
"Friese",
"Hopp",
"Sahin",
"Henrich",
"Spengler"
];
@@ -1,11 +1,12 @@
import { IdentityGenerator } from "src/implementations/base/IdentityGenerator";
import { IdentityGeneratorEn } from "src/implementations/IdentityGeneratorEn";
import { IdentityGeneratorNl } from "src/implementations/IdentityGeneratorNl";
import { IdentityGeneratorDe } from "src/implementations/IdentityGeneratorDe";
/**
* Creates a new identity generator based on the language.
* Falls back to English if the requested language is not supported.
* @param language - The language to use for generating the identity (e.g. "en", "nl").
* @param language - The language to use for generating the identity (e.g. "en", "nl", "de").
* @returns A new identity generator instance.
*/
export const CreateIdentityGenerator = (language: string): IdentityGenerator => {
@@ -14,6 +15,8 @@ export const CreateIdentityGenerator = (language: string): IdentityGenerator =>
return new IdentityGeneratorEn();
case 'nl':
return new IdentityGeneratorNl();
case 'de':
return new IdentityGeneratorDe();
default:
// Fallback to English for unsupported languages
console.warn(`Language '${language}' is not supported. Falling back to English.`);
@@ -0,0 +1,85 @@
import { IdentityGenerator, IDecadeFirstnames } from "./base/IdentityGenerator";
import lastNames from '../dictionaries/de/lastnames';
// Male firstnames by decade
import maleNames1950s from '../dictionaries/de/firstnames_male_1950_1959';
import maleNames1960s from '../dictionaries/de/firstnames_male_1960_1969';
import maleNames1970s from '../dictionaries/de/firstnames_male_1970_1979';
import maleNames1980s from '../dictionaries/de/firstnames_male_1980_1989';
import maleNames1990s from '../dictionaries/de/firstnames_male_1990_1999';
import maleNames2000s from '../dictionaries/de/firstnames_male_2000_2009';
import maleNames2010s from '../dictionaries/de/firstnames_male_2010_2019';
import maleNames2020s from '../dictionaries/de/firstnames_male_2020_2029';
// Female firstnames by decade
import femaleNames1950s from '../dictionaries/de/firstnames_female_1950_1959';
import femaleNames1960s from '../dictionaries/de/firstnames_female_1960_1969';
import femaleNames1970s from '../dictionaries/de/firstnames_female_1970_1979';
import femaleNames1980s from '../dictionaries/de/firstnames_female_1980_1989';
import femaleNames1990s from '../dictionaries/de/firstnames_female_1990_1999';
import femaleNames2000s from '../dictionaries/de/firstnames_female_2000_2009';
import femaleNames2010s from '../dictionaries/de/firstnames_female_2010_2019';
import femaleNames2020s from '../dictionaries/de/firstnames_female_2020_2029';
/**
* Identity generator for German language using German dictionaries with decade-based firstname support.
* This implementation demonstrates how to use age-appropriate names based on birthdate.
*/
export class IdentityGeneratorDe extends IdentityGenerator {
/**
* Get the male first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesMaleJson(): string[] {
// Return empty array as we're using decade-based approach for German
return [];
}
/**
* Get the female first names (generic fallback - empty as we use decade-based).
*/
protected getFirstNamesFemaleJson(): string[] {
// Return empty array as we're using decade-based approach for German
return [];
}
/**
* Get the last names.
*/
protected getLastNamesJson(): string[] {
return lastNames;
}
/**
* Get decade-based male first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesMaleByDecade(): IDecadeFirstnames[] {
return [
{ startYear: 1950, endYear: 1959, names: maleNames1950s },
{ startYear: 1960, endYear: 1969, names: maleNames1960s },
{ startYear: 1970, endYear: 1979, names: maleNames1970s },
{ startYear: 1980, endYear: 1989, names: maleNames1980s },
{ startYear: 1990, endYear: 1999, names: maleNames1990s },
{ startYear: 2000, endYear: 2009, names: maleNames2000s },
{ startYear: 2010, endYear: 2019, names: maleNames2010s },
{ startYear: 2020, endYear: 2029, names: maleNames2020s }
];
}
/**
* Get decade-based female first names.
* Each range covers a specific decade with names popular during that period.
*/
protected getFirstNamesFemaleByDecade(): IDecadeFirstnames[] {
return [
{ startYear: 1950, endYear: 1959, names: femaleNames1950s },
{ startYear: 1960, endYear: 1969, names: femaleNames1960s },
{ startYear: 1970, endYear: 1979, names: femaleNames1970s },
{ startYear: 1980, endYear: 1989, names: femaleNames1980s },
{ startYear: 1990, endYear: 1999, names: femaleNames1990s },
{ startYear: 2000, endYear: 2009, names: femaleNames2000s },
{ startYear: 2010, endYear: 2019, names: femaleNames2010s },
{ startYear: 2020, endYear: 2029, names: femaleNames2020s }
];
}
}
+1
View File
@@ -2,6 +2,7 @@ export * from './types/Identity';
export * from './types/Gender';
export * from './implementations/IdentityGeneratorEn';
export * from './implementations/IdentityGeneratorNl';
export * from './implementations/IdentityGeneratorDe';
export * from './implementations/base/IdentityGenerator';
export * from './interfaces/IIdentityGenerator';
export * from './utils/IdentityHelperUtils';
@@ -26,6 +26,7 @@ export interface ILanguageOption {
export function getAvailableLanguages(): ILanguageOption[] {
return [
{ value: 'en', label: 'English', flag: '🇬🇧' },
{ value: 'nl', label: 'Nederlands', flag: '🇳🇱' }
{ value: 'nl', label: 'Nederlands', flag: '🇳🇱' },
{ value: 'de', label: 'Deutsch', flag: '🇩🇪' }
];
}