Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(person)!: rename name module #1445

Merged
merged 17 commits into from
Oct 16, 2022
Merged
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ The API covers the following modules:
| Internet | `faker.internet.domainName()` | muddy-neuropathologist.net |
| Lorem | `faker.lorem.paragraph()` | Porro nulla id vero perspiciatis nulla nihil. ... |
| Music | `faker.music.genre()` | R&B |
| Name | `faker.name.firstName()` | Cameron |
| Person | `faker.person.firstName()` | Cameron |
| Phone | `faker.phone.phoneNumber()` | +1 291-299-0192 |
| Random | `faker.random.locale()` | fr_CA |
| Science | `faker.science.unit()` | `{ name: 'meter', symbol: 'm' }` |
Expand All @@ -103,7 +103,7 @@ Faker contains a generator method `faker.helpers.fake` for combining faker API m
```ts
console.log(
faker.helpers.fake(
'Hello {{name.prefix}} {{name.lastName}}, how are you today?'
'Hello {{person.prefix}} {{person.lastName}}, how are you today?'
)
);
```
Expand Down
2 changes: 1 addition & 1 deletion docs/.vitepress/api-pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const apiPages = [
{ text: 'Internet', link: '/api/internet.html' },
{ text: 'Lorem', link: '/api/lorem.html' },
{ text: 'Music', link: '/api/music.html' },
{ text: 'Name', link: '/api/name.html' },
{ text: 'Person', link: '/api/person.html' },
{ text: 'Phone', link: '/api/phone.html' },
{ text: 'Random', link: '/api/random.html' },
{ text: 'Science', link: '/api/science.html' },
Expand Down
26 changes: 13 additions & 13 deletions docs/guide/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Using Faker is as easy as importing it from `@faker-js/faker`.
```js
import { faker } from '@faker-js/faker';

const randomName = faker.name.fullName(); // Rowan Nikolaus
const randomName = faker.person.fullName(); // Rowan Nikolaus
const randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz
```

Expand All @@ -16,7 +16,7 @@ Or if you using CommonJS
```js
const { faker } = require('@faker-js/faker');

const randomName = faker.name.fullName(); // Rowan Nikolaus
const randomName = faker.person.fullName(); // Rowan Nikolaus
const randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz
```

Expand All @@ -27,7 +27,7 @@ const randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz
import { faker } from 'https://cdn.skypack.dev/@faker-js/faker';

// Caitlyn Kerluke
const randomName = faker.name.fullName();
const randomName = faker.person.fullName();

// Rusty@arne.info
const randomEmail = faker.internet.email();
Expand All @@ -43,7 +43,7 @@ Using the browser is great for experimenting 👍. However, due to all of the st
```js
import { faker } from 'https://cdn.skypack.dev/@faker-js/faker';

const randomName = faker.name.findName(); // Willie Bahringer
const randomName = faker.person.findName(); // Willie Bahringer
const randomEmail = faker.internet.email(); // Tomasa_Ferry14@hotmail.com
```

Expand Down Expand Up @@ -120,9 +120,9 @@ function createRandomUser(): User {
avatar: faker.image.avatar(),
birthday: faker.date.birthdate(),
email: faker.internet.email(),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
sex: faker.name.sexType(),
firstName: faker.person.firstName(),
lastName: faker.person.lastName(),
sex: faker.person.sexType(),
subscriptionTier: faker.helpers.arrayElement(['free', 'basic', 'business']),
};
}
Expand All @@ -142,9 +142,9 @@ Let's refactor our current code:
import { faker } from '@faker-js/faker';

function createRandomUser(): User {
const sex = this.faker.name.sexType();
const firstName = faker.name.firstName(sex);
const lastName = faker.name.lastName();
const sex = this.faker.person.sexType();
const firstName = faker.person.firstName(sex);
const lastName = faker.person.lastName();
const email = faker.internet.email(firstName, lastName);

return {
Expand Down Expand Up @@ -179,9 +179,9 @@ Faker has your back, with another helper method:
import { faker } from '@faker-js/faker';

function createRandomUser(): User {
const sex = this.faker.name.sexType();
const firstName = faker.name.firstName(sex);
const lastName = faker.name.lastName();
const sex = this.faker.person.sexType();
const firstName = faker.person.firstName(sex);
const lastName = faker.person.lastName();
const email = faker.helpers.unique(faker.internet.email, [
firstName,
lastName,
Expand Down
8 changes: 7 additions & 1 deletion scripts/apidoc/moduleMethods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,13 @@ export function processModuleMethods(project: ProjectReflection): PageIndex {
}

export function extractModuleName(module: DeclarationReflection): string {
return module.name.replace(/Module$/, '');
const { name } = module;
// TODO @ST-DDT 2022-10-16: Remove in v10.
// Typedoc prefers the name of the module that is exported first.
if (name === 'NameModule') {
return 'Person';
}
return name.replace(/Module$/, '');
}

function extractModuleFieldName(module: DeclarationReflection): string {
Expand Down
2 changes: 1 addition & 1 deletion scripts/generateLocales.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ const definitionsTypes: DefinitionsType = {
internet: 'InternetDefinitions',
lorem: 'LoremDefinitions',
music: 'MusicDefinitions',
name: 'NameDefinitions',
person: 'PersonDefinitions',
phone_number: 'PhoneNumberDefinitions',
science: 'ScienceDefinitions',
system: 'SystemDefinitions',
Expand Down
4 changes: 2 additions & 2 deletions src/definitions/definitions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import type { HackerDefinitions } from './hacker';
import type { InternetDefinitions } from './internet';
import type { LoremDefinitions } from './lorem';
import type { MusicDefinitions } from './music';
import type { NameDefinitions } from './name';
import type { PersonDefinitions } from './person';
import type { PhoneNumberDefinitions } from './phone_number';
import type { ScienceDefinitions } from './science';
import type { SystemDefinitions } from './system';
Expand Down Expand Up @@ -38,7 +38,7 @@ export interface Definitions {
internet: InternetDefinitions;
lorem: LoremDefinitions;
music: MusicDefinitions;
name: NameDefinitions;
person: PersonDefinitions;
phone_number: PhoneNumberDefinitions;
science: ScienceDefinitions;
system: SystemDefinitions;
Expand Down
2 changes: 1 addition & 1 deletion src/definitions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export type { HackerDefinitions } from './hacker';
export type { InternetDefinitions } from './internet';
export type { LoremDefinitions } from './lorem';
export type { MusicDefinitions } from './music';
export type { NameDefinitions, NameTitleDefinitions } from './name';
export type { PersonDefinitions, PersonTitleDefinitions } from './person';
export type { PhoneNumberDefinitions } from './phone_number';
export type { ScienceDefinitions } from './science';
export type {
Expand Down
6 changes: 3 additions & 3 deletions src/definitions/name.ts → src/definitions/person.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { LocaleEntry } from './definitions';
/**
* The possible definitions related to people's names.
*/
export type NameDefinitions = LocaleEntry<{
export type PersonDefinitions = LocaleEntry<{
gender: string[];
sex: string[];

Expand All @@ -30,13 +30,13 @@ export type NameDefinitions = LocaleEntry<{
*/
name: string[];

title: NameTitleDefinitions;
title: PersonTitleDefinitions;
}>;

/**
* The possible definitions related to people's titles.
*/
export interface NameTitleDefinitions {
export interface PersonTitleDefinitions {
descriptor?: string[];
job: string[];
level?: string[];
Expand Down
29 changes: 27 additions & 2 deletions src/faker.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { LocaleDefinition } from './definitions';
import { FakerError } from './errors/faker-error';
import { deprecated } from './internal/deprecated';
import { MersenneModule } from './internal/mersenne/mersenne';
import type { KnownLocale } from './locales';
import { AddressModule } from './modules/address';
Expand All @@ -18,7 +19,8 @@ import { ImageModule } from './modules/image';
import { InternetModule } from './modules/internet';
import { LoremModule } from './modules/lorem';
import { MusicModule } from './modules/music';
import { NameModule } from './modules/name';
import type { PersonModule as NameModule } from './modules/person';
import { PersonModule } from './modules/person';
import { PhoneModule } from './modules/phone';
import { RandomModule } from './modules/random';
import { ScienceModule } from './modules/science';
Expand Down Expand Up @@ -97,13 +99,25 @@ export class Faker {
readonly internet: InternetModule = new InternetModule(this);
readonly lorem: LoremModule = new LoremModule(this);
readonly music: MusicModule = new MusicModule(this);
readonly name: NameModule = new NameModule(this);
readonly person: PersonModule = new PersonModule(this);
readonly phone: PhoneModule = new PhoneModule(this);
readonly science: ScienceModule = new ScienceModule(this);
readonly system: SystemModule = new SystemModule(this);
readonly vehicle: VehicleModule = new VehicleModule(this);
readonly word: WordModule = new WordModule(this);

// Aliases
/** @deprecated Use {@link person} instead */
get name(): NameModule {
deprecated({
deprecated: 'faker.name',
proposed: 'faker.person',
since: '8.0.0',
until: '10.0.0',
});
return this.person;
}

constructor(opts: FakerOptions) {
if (!opts) {
throw new FakerError(
Expand Down Expand Up @@ -158,6 +172,17 @@ export class Faker {

return new Proxy({} as LocaleDefinition, {
get(target: LocaleDefinition, module: string): unknown {
// Support aliases
if (module === 'name') {
module = 'person';
deprecated({
deprecated: `faker.helpers.fake('{{name.*}}') or faker.definitions.name`,
proposed: `faker.helpers.fake('{{person.*}}') or faker.definitions.person`,
since: '8.0.0',
until: '10.0.0',
});
}

let result = target[module];
if (result) {
return result;
Expand Down
17 changes: 13 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@ export type {
LocaleDefinition,
LoremDefinitions,
MusicDefinitions,
NameDefinitions,
NameTitleDefinitions,
/** @deprecated Use PersonDefinitions instead */
PersonDefinitions as NameDefinitions,
xDivisionByZerox marked this conversation as resolved.
Show resolved Hide resolved
PersonDefinitions,
/** @deprecated Use PersonTitleDefinitions instead */
PersonTitleDefinitions as NameTitleDefinitions,
PersonTitleDefinitions,
PhoneNumberDefinitions,
ScienceDefinitions,
SystemDefinitions,
Expand Down Expand Up @@ -53,8 +57,13 @@ export type { ImageModule } from './modules/image';
export type { InternetModule } from './modules/internet';
export type { LoremModule } from './modules/lorem';
export type { MusicModule } from './modules/music';
export { Sex } from './modules/name';
export type { NameModule, SexType } from './modules/name';
export { Sex } from './modules/person';
export type {
/** @deprecated Use PersonModule instead */
PersonModule as NameModule,
PersonModule,
SexType,
} from './modules/person';
export type { PhoneModule } from './modules/phone';
export type { RandomModule } from './modules/random';
export type { ChemicalElement, ScienceModule, Unit } from './modules/science';
Expand Down
8 changes: 4 additions & 4 deletions src/locales/af_ZA/address/city.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default [
'{{address.city_prefix}} {{name.firstName}}{{address.city_suffix}}',
'{{address.city_prefix}} {{name.firstName}}',
'{{name.firstName}}{{address.city_suffix}}',
'{{name.lastName}}{{address.city_suffix}}',
'{{address.city_prefix}} {{person.firstName}}{{address.city_suffix}}',
'{{address.city_prefix}} {{person.firstName}}',
'{{person.firstName}}{{address.city_suffix}}',
'{{person.lastName}}{{address.city_suffix}}',
];
4 changes: 2 additions & 2 deletions src/locales/af_ZA/address/street.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export default [
'{{name.firstName}} {{address.street_suffix}}',
'{{name.lastName}} {{address.street_suffix}}',
'{{person.firstName}} {{address.street_suffix}}',
'{{person.lastName}} {{address.street_suffix}}',
];
4 changes: 2 additions & 2 deletions src/locales/af_ZA/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import address from './address';
import cell_phone from './cell_phone';
import company from './company';
import internet from './internet';
import name_ from './name';
import person from './person';
import phone_number from './phone_number';

const af_ZA: LocaleDefinition = {
Expand All @@ -16,7 +16,7 @@ const af_ZA: LocaleDefinition = {
cell_phone,
company,
internet,
name: name_,
person,
phone_number,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
* This file is automatically generated.
* Run 'pnpm run generate:locales' to update.
*/
import type { NameDefinitions } from '../../..';
import type { PersonDefinitions } from '../../..';
import female_first_name from './female_first_name';
import first_name from './first_name';
import last_name from './last_name';
import male_first_name from './male_first_name';

const name: NameDefinitions = {
const person: PersonDefinitions = {
female_first_name,
first_name,
last_name,
male_first_name,
};

export default name;
export default person;
4 changes: 2 additions & 2 deletions src/locales/ar/address/street.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export default [
'{{address.street_prefix}} {{name.first_name}}',
'{{address.street_prefix}} {{name.last_name}}',
'{{address.street_prefix}} {{person.first_name}}',
'{{address.street_prefix}} {{person.last_name}}',
];
4 changes: 2 additions & 2 deletions src/locales/ar/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import cell_phone from './cell_phone';
import color from './color';
import commerce from './commerce';
import date from './date';
import name_ from './name';
import person from './person';
import phone_number from './phone_number';
import team from './team';
import vehicle from './vehicle';
Expand All @@ -21,7 +21,7 @@ const ar: LocaleDefinition = {
color,
commerce,
date,
name: name_,
person,
phone_number,
team,
vehicle,
Expand Down
5 changes: 0 additions & 5 deletions src/locales/ar/name/name.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* This file is automatically generated.
* Run 'pnpm run generate:locales' to update.
*/
import type { NameDefinitions } from '../../..';
import type { PersonDefinitions } from '../../..';
import female_first_name from './female_first_name';
import first_name from './first_name';
import last_name from './last_name';
Expand All @@ -12,7 +12,7 @@ import prefix from './prefix';
import suffix from './suffix';
import title from './title';

const name: NameDefinitions = {
const person: PersonDefinitions = {
female_first_name,
first_name,
last_name,
Expand All @@ -23,4 +23,4 @@ const name: NameDefinitions = {
title,
};

export default name;
export default person;
File renamed without changes.
5 changes: 5 additions & 0 deletions src/locales/ar/person/name.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default [
'{{person.prefix}} {{person.first_name}} {{person.last_name}}',
'{{person.first_name}} {{person.last_name}}',
'{{person.last_name}} {{person.first_name}}',
];
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions src/locales/az/company/name_patterns.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export default [
'{{company.prefix}} {{name.female_first_name}}',
'{{company.prefix}} {{name.male_first_name}}',
'{{company.prefix}} {{name.male_last_name}}',
'{{company.prefix}} {{person.female_first_name}}',
'{{company.prefix}} {{person.male_first_name}}',
'{{company.prefix}} {{person.male_last_name}}',
'{{company.prefix}} {{company.suffix}}{{company.suffix}}',
'{{company.prefix}} {{company.suffix}}{{company.suffix}}{{company.suffix}}',
'{{company.prefix}} {{address.city_name}}{{company.suffix}}',
Expand Down
Loading