Skip to content

Commit acb9cf5

Browse files
authored
refactor(locale): use null as not applicable (#2078)
1 parent f795269 commit acb9cf5

33 files changed

+88
-76
lines changed

src/definitions/definitions.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ import type { WordDefinitions } from './word';
2222
/**
2323
* Wrapper type for all definition categories that will make all properties optional and allow extra properties.
2424
*/
25-
export type LocaleEntry<T extends Record<string, unknown>> = Partial<T> &
26-
// Unsupported & custom entries
27-
Record<string, unknown>;
25+
export type LocaleEntry<T extends Record<string, unknown>> = {
26+
[P in keyof T]?: T[P] | null;
27+
} & Record<string, unknown>; // Unsupported & custom entries
2828

2929
/**
3030
* The definitions as used by the translations/locales.

src/definitions/person.ts

+20-20
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@ export type PersonDefinitions = LocaleEntry<{
77
gender: string[];
88
sex: string[];
99

10-
prefix?: string[];
11-
female_prefix?: string[];
12-
male_prefix?: string[];
10+
prefix: string[];
11+
female_prefix: string[];
12+
male_prefix: string[];
1313

14-
first_name?: string[];
15-
female_first_name?: string[];
16-
male_first_name?: string[];
14+
first_name: string[];
15+
female_first_name: string[];
16+
male_first_name: string[];
1717

18-
middle_name?: string[];
19-
female_middle_name?: string[];
20-
male_middle_name?: string[];
18+
middle_name: string[];
19+
female_middle_name: string[];
20+
male_middle_name: string[];
2121

22-
last_name?: string[];
23-
female_last_name?: string[];
24-
male_last_name?: string[];
22+
last_name: string[];
23+
female_last_name: string[];
24+
male_last_name: string[];
2525

2626
suffix: string[];
2727

@@ -33,11 +33,11 @@ export type PersonDefinitions = LocaleEntry<{
3333
/**
3434
* A weighted list of patterns used to generate last names.
3535
*/
36-
last_name_pattern?: Array<{ value: string; weight: number }>;
37-
male_last_name_pattern?: Array<{ value: string; weight: number }>;
38-
female_last_name_pattern?: Array<{ value: string; weight: number }>;
36+
last_name_pattern: Array<{ value: string; weight: number }>;
37+
male_last_name_pattern: Array<{ value: string; weight: number }>;
38+
female_last_name_pattern: Array<{ value: string; weight: number }>;
3939

40-
bio_pattern?: string[];
40+
bio_pattern: string[];
4141

4242
title: PersonTitleDefinitions;
4343

@@ -47,8 +47,8 @@ export type PersonDefinitions = LocaleEntry<{
4747
/**
4848
* The possible definitions related to people's titles.
4949
*/
50-
export interface PersonTitleDefinitions {
51-
descriptor?: string[];
50+
export type PersonTitleDefinitions = LocaleEntry<{
51+
descriptor: string[];
5252
job: string[];
53-
level?: string[];
54-
}
53+
level: string[];
54+
}>;

src/locales/az/company/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/az/location/state.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/az/person/male_prefix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/az/person/prefix.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
import { mergeArrays } from './../../../internal/merge';
2-
import female_prefix from './female_prefix';
3-
import male_prefix from './male_prefix';
4-
5-
export default mergeArrays(female_prefix, male_prefix);
1+
export default null;

src/locales/az/person/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/id_ID/person/prefix.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
import { mergeArrays } from './../../../internal/merge';
2-
import female_prefix from './female_prefix';
3-
import male_prefix from './male_prefix';
4-
5-
export default mergeArrays(female_prefix, male_prefix);
1+
export default null;

src/locales/it/person/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/mk/person/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/pt_PT/person/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/ru/person/male_prefix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/ru/person/prefix.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
import { mergeArrays } from './../../../internal/merge';
2-
import female_prefix from './female_prefix';
3-
import male_prefix from './male_prefix';
4-
5-
export default mergeArrays(female_prefix, male_prefix);
1+
export default null;

src/locales/ru/person/suffix.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/sk/location/state.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/sk/location/state_abbr.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/zh_CN/person/prefix.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
import { mergeArrays } from './../../../internal/merge';
2-
import female_prefix from './female_prefix';
3-
import male_prefix from './male_prefix';
4-
5-
export default mergeArrays(female_prefix, male_prefix);
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default [];
1+
export default null;

src/locales/zh_TW/person/prefix.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
import { mergeArrays } from './../../../internal/merge';
2-
import female_prefix from './female_prefix';
3-
import male_prefix from './male_prefix';
4-
5-
export default mergeArrays(female_prefix, male_prefix);
1+
export default null;

test/person.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ describe('person', () => {
125125
...fakerMK.definitions.person.female_prefix,
126126
...fakerMK.definitions.person.female_first_name,
127127
...fakerMK.definitions.person.female_last_name,
128-
...fakerMK.definitions.person.suffix,
128+
// ...fakerMK.definitions.person.suffix, // Not applicable
129129
];
130130

131131
const fullName = fakerMK.person.fullName({ sex: 'female' });
@@ -141,7 +141,7 @@ describe('person', () => {
141141
...fakerMK.definitions.person.male_prefix,
142142
...fakerMK.definitions.person.male_first_name,
143143
...fakerMK.definitions.person.male_last_name,
144-
...fakerMK.definitions.person.suffix,
144+
// ...fakerMK.definitions.person.suffix, // Not applicable
145145
];
146146

147147
const fullName = fakerMK.person.fullName({ sex: 'male' });
@@ -157,7 +157,7 @@ describe('person', () => {
157157
...fakerMK.definitions.person.female_prefix,
158158
'firstName',
159159
'lastName',
160-
...fakerMK.definitions.person.suffix,
160+
// ...fakerMK.definitions.person.suffix, // Not applicable
161161
];
162162

163163
const fullName = fakerMK.person.fullName({
@@ -177,7 +177,7 @@ describe('person', () => {
177177
...fakerMK.definitions.person.male_prefix,
178178
'firstName',
179179
'lastName',
180-
...fakerMK.definitions.person.suffix,
180+
//...fakerMK.definitions.person.suffix, // Not applicable
181181
];
182182

183183
const fullName = fakerMK.person.fullName({

test/utils/merge-locales.spec.ts

+32
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,38 @@ describe('mergeLocales', () => {
2929
});
3030
});
3131

32+
it('should not overwrite not applicable data', () => {
33+
const locale1: LocaleDefinition = {
34+
metadata: { title: 'a' },
35+
location: {
36+
city: null,
37+
country: null,
38+
},
39+
};
40+
const locale2: LocaleDefinition = {
41+
metadata: { title: 'b' },
42+
location: {
43+
city: ['b'],
44+
},
45+
};
46+
const locale3: LocaleDefinition = {
47+
metadata: { title: 'c' },
48+
location: {
49+
city: ['c'],
50+
country: ['c'],
51+
},
52+
};
53+
const merged = mergeLocales([locale1, locale2, locale3]);
54+
55+
expect(merged).toEqual({
56+
metadata: { title: 'a' },
57+
location: {
58+
city: null,
59+
country: null,
60+
},
61+
});
62+
});
63+
3264
it('should extend categories', () => {
3365
const locale1: LocaleDefinition = {
3466
metadata: { title: 'a' },

0 commit comments

Comments
 (0)