Skip to content

Commit b9884d0

Browse files
authored
feat(modules): export module interfaces (#932)
1 parent 1fe2877 commit b9884d0

30 files changed

Lines changed: 137 additions & 115 deletions

File tree

scripts/apidoc/moduleMethods.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function processModuleMethods(project: ProjectReflection): PageIndex {
3939
}
4040

4141
export function extractModuleName(module: DeclarationReflection): string {
42-
return module.name.replace('_', '');
42+
return module.name.replace(/Module$/, '');
4343
}
4444

4545
function extractModuleFieldName(module: DeclarationReflection): string {
@@ -50,7 +50,7 @@ function extractModuleFieldName(module: DeclarationReflection): string {
5050
/**
5151
* Analyzes and writes the documentation for a module and its methods such as `faker.animal.cat()`.
5252
*
53-
* @param direct The module to process.
53+
* @param module The module to process.
5454
* @returns The generated pages.
5555
*/
5656
function processModuleMethod(module: DeclarationReflection): PageIndex {

src/faker.ts

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
import type { LocaleDefinition } from './definitions';
22
import { FakerError } from './errors/faker-error';
33
import type { KnownLocale } from './locales';
4-
import { Address } from './modules/address';
5-
import { Animal } from './modules/animal';
6-
import { Color } from './modules/color';
7-
import { Commerce } from './modules/commerce';
8-
import { Company } from './modules/company';
9-
import { Database } from './modules/database';
10-
import { Datatype } from './modules/datatype';
11-
import { _Date } from './modules/date';
12-
import { Fake } from './modules/fake';
13-
import { Finance } from './modules/finance';
14-
import { Git } from './modules/git';
15-
import { Hacker } from './modules/hacker';
16-
import { Helpers } from './modules/helpers';
17-
import { Image } from './modules/image';
18-
import { Internet } from './modules/internet';
19-
import { Lorem } from './modules/lorem';
20-
import { Mersenne } from './modules/mersenne';
21-
import { Music } from './modules/music';
22-
import { Name } from './modules/name';
23-
import { Phone } from './modules/phone';
24-
import { Random } from './modules/random';
25-
import { Science } from './modules/science';
26-
import { System } from './modules/system';
27-
import { Unique } from './modules/unique';
28-
import { Vehicle } from './modules/vehicle';
29-
import { Word } from './modules/word';
4+
import { AddressModule } from './modules/address';
5+
import { AnimalModule } from './modules/animal';
6+
import { ColorModule } from './modules/color';
7+
import { CommerceModule } from './modules/commerce';
8+
import { CompanyModule } from './modules/company';
9+
import { DatabaseModule } from './modules/database';
10+
import { DatatypeModule } from './modules/datatype';
11+
import { DateModule } from './modules/date';
12+
import { FakeModule } from './modules/fake';
13+
import { FinanceModule } from './modules/finance';
14+
import { GitModule } from './modules/git';
15+
import { HackerModule } from './modules/hacker';
16+
import { HelpersModule } from './modules/helpers';
17+
import { ImageModule } from './modules/image';
18+
import { InternetModule } from './modules/internet';
19+
import { LoremModule } from './modules/lorem';
20+
import { MersenneModule } from './modules/mersenne';
21+
import { MusicModule } from './modules/music';
22+
import { NameModule } from './modules/name';
23+
import { PhoneModule } from './modules/phone';
24+
import { RandomModule } from './modules/random';
25+
import { ScienceModule } from './modules/science';
26+
import { SystemModule } from './modules/system';
27+
import { UniqueModule } from './modules/unique';
28+
import { VehicleModule } from './modules/vehicle';
29+
import { WordModule } from './modules/word';
3030
import type { LiteralUnion } from './utils/types';
3131

3232
export type UsableLocale = LiteralUnion<KnownLocale>;
@@ -76,36 +76,36 @@ export class Faker {
7676

7777
readonly definitions: LocaleDefinition = this.initDefinitions();
7878

79-
readonly fake: Fake['fake'] = new Fake(this).fake;
80-
readonly unique: Unique['unique'] = new Unique(this).unique;
79+
readonly fake: FakeModule['fake'] = new FakeModule(this).fake;
80+
readonly unique: UniqueModule['unique'] = new UniqueModule(this).unique;
8181

82-
readonly mersenne: Mersenne = new Mersenne();
83-
readonly random: Random = new Random(this);
82+
readonly mersenne: MersenneModule = new MersenneModule();
83+
readonly random: RandomModule = new RandomModule(this);
8484

85-
readonly helpers: Helpers = new Helpers(this);
85+
readonly helpers: HelpersModule = new HelpersModule(this);
8686

87-
readonly datatype: Datatype = new Datatype(this);
87+
readonly datatype: DatatypeModule = new DatatypeModule(this);
8888

89-
readonly address: Address = new Address(this);
90-
readonly animal: Animal = new Animal(this);
91-
readonly color: Color = new Color(this);
92-
readonly commerce: Commerce = new Commerce(this);
93-
readonly company: Company = new Company(this);
94-
readonly database: Database = new Database(this);
95-
readonly date: _Date = new _Date(this);
96-
readonly finance = new Finance(this);
97-
readonly git: Git = new Git(this);
98-
readonly hacker: Hacker = new Hacker(this);
99-
readonly image: Image = new Image(this);
100-
readonly internet: Internet = new Internet(this);
101-
readonly lorem: Lorem = new Lorem(this);
102-
readonly music: Music = new Music(this);
103-
readonly name: Name = new Name(this);
104-
readonly phone: Phone = new Phone(this);
105-
readonly science: Science = new Science(this);
106-
readonly system: System = new System(this);
107-
readonly vehicle: Vehicle = new Vehicle(this);
108-
readonly word: Word = new Word(this);
89+
readonly address: AddressModule = new AddressModule(this);
90+
readonly animal: AnimalModule = new AnimalModule(this);
91+
readonly color: ColorModule = new ColorModule(this);
92+
readonly commerce: CommerceModule = new CommerceModule(this);
93+
readonly company: CompanyModule = new CompanyModule(this);
94+
readonly database: DatabaseModule = new DatabaseModule(this);
95+
readonly date: DateModule = new DateModule(this);
96+
readonly finance = new FinanceModule(this);
97+
readonly git: GitModule = new GitModule(this);
98+
readonly hacker: HackerModule = new HackerModule(this);
99+
readonly image: ImageModule = new ImageModule(this);
100+
readonly internet: InternetModule = new InternetModule(this);
101+
readonly lorem: LoremModule = new LoremModule(this);
102+
readonly music: MusicModule = new MusicModule(this);
103+
readonly name: NameModule = new NameModule(this);
104+
readonly phone: PhoneModule = new PhoneModule(this);
105+
readonly science: ScienceModule = new ScienceModule(this);
106+
readonly system: SystemModule = new SystemModule(this);
107+
readonly vehicle: VehicleModule = new VehicleModule(this);
108+
readonly word: WordModule = new WordModule(this);
109109

110110
constructor(opts: FakerOptions) {
111111
if (!opts) {

src/index.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,41 @@ export type {
2929
} from './definitions';
3030
export { FakerError } from './errors/faker-error';
3131
export type { FakerOptions, UsableLocale, UsedLocales } from './faker';
32+
export type { AddressModule } from './modules/address';
33+
export type { AnimalModule } from './modules/animal';
3234
export type {
3335
Casing,
3436
ColorFormat,
37+
ColorModule,
3538
CSSFunction,
3639
CSSSpace,
3740
NumberColorFormat,
3841
StringColorFormat,
3942
} from './modules/color';
43+
export type { CommerceModule } from './modules/commerce';
44+
export type { CompanyModule } from './modules/company';
45+
export type { DatabaseModule } from './modules/database';
46+
export type { DatatypeModule } from './modules/datatype';
47+
export type { DateModule } from './modules/date';
48+
export type { FakeModule } from './modules/fake';
49+
export type { FinanceModule } from './modules/finance';
50+
export type { GitModule } from './modules/git';
51+
export type { HackerModule } from './modules/hacker';
52+
export type { HelpersModule } from './modules/helpers';
53+
export type { ImageModule } from './modules/image';
54+
export type { InternetModule } from './modules/internet';
55+
export type { LoremModule } from './modules/lorem';
56+
export type { MersenneModule } from './modules/mersenne';
57+
export type { MusicModule } from './modules/music';
4058
export { Gender, Sex } from './modules/name';
41-
export type { GenderType, SexType } from './modules/name';
42-
export type { ChemicalElement, Unit } from './modules/science';
59+
export type { GenderType, NameModule, SexType } from './modules/name';
60+
export type { PhoneModule } from './modules/phone';
61+
export type { RandomModule } from './modules/random';
62+
export type { ChemicalElement, ScienceModule, Unit } from './modules/science';
63+
export type { SystemModule } from './modules/system';
64+
export type { UniqueModule } from './modules/unique';
65+
export type { VehicleModule } from './modules/vehicle';
66+
export type { WordModule } from './modules/word';
4367
export { Faker };
4468

4569
// since we are requiring the top level of faker, load all locales by default

src/modules/address/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { deprecated } from '../../internal/deprecated';
44
/**
55
* Module to generate addresses and locations.
66
*/
7-
export class Address {
7+
export class AddressModule {
88
constructor(private readonly faker: Faker) {
99
// Bind `this` so namespaced is working correctly
10-
for (const name of Object.getOwnPropertyNames(Address.prototype)) {
10+
for (const name of Object.getOwnPropertyNames(AddressModule.prototype)) {
1111
if (name === 'constructor' || typeof this[name] !== 'function') {
1212
continue;
1313
}

src/modules/animal/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import type { Faker } from '../..';
33
/**
44
* Module to generate animal related entries.
55
*/
6-
export class Animal {
6+
export class AnimalModule {
77
constructor(private readonly faker: Faker) {
88
// Bind `this` so namespaced is working correctly
9-
for (const name of Object.getOwnPropertyNames(Animal.prototype)) {
9+
for (const name of Object.getOwnPropertyNames(AnimalModule.prototype)) {
1010
if (name === 'constructor' || typeof this[name] !== 'function') {
1111
continue;
1212
}

src/modules/color/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,10 @@ function toColorFormat(
154154
/**
155155
* Module to generate colors.
156156
*/
157-
export class Color {
157+
export class ColorModule {
158158
constructor(private readonly faker: Faker) {
159159
// Bind `this` so namespaced is working correctly
160-
for (const name of Object.getOwnPropertyNames(Color.prototype)) {
160+
for (const name of Object.getOwnPropertyNames(ColorModule.prototype)) {
161161
if (name === 'constructor' || typeof this[name] !== 'function') {
162162
continue;
163163
}

src/modules/commerce/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { deprecated } from '../../internal/deprecated';
44
/**
55
* Module to generate commerce and product related entries.
66
*/
7-
export class Commerce {
7+
export class CommerceModule {
88
constructor(private readonly faker: Faker) {
99
// Bind `this` so namespaced is working correctly
10-
for (const name of Object.getOwnPropertyNames(Commerce.prototype)) {
10+
for (const name of Object.getOwnPropertyNames(CommerceModule.prototype)) {
1111
if (name === 'constructor' || typeof this[name] !== 'function') {
1212
continue;
1313
}

src/modules/company/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { deprecated } from '../../internal/deprecated';
44
/**
55
* Module to generate company related entries.
66
*/
7-
export class Company {
7+
export class CompanyModule {
88
constructor(private readonly faker: Faker) {
99
// Bind `this` so namespaced is working correctly
10-
for (const name of Object.getOwnPropertyNames(Company.prototype)) {
10+
for (const name of Object.getOwnPropertyNames(CompanyModule.prototype)) {
1111
if (name === 'constructor' || typeof this[name] !== 'function') {
1212
continue;
1313
}

src/modules/database/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import type { Faker } from '../..';
33
/**
44
* Module to generate database related entries.
55
*/
6-
export class Database {
6+
export class DatabaseModule {
77
constructor(private readonly faker: Faker) {
88
// Bind `this` so namespaced is working correctly
9-
for (const name of Object.getOwnPropertyNames(Database.prototype)) {
9+
for (const name of Object.getOwnPropertyNames(DatabaseModule.prototype)) {
1010
if (name === 'constructor' || typeof this[name] !== 'function') {
1111
continue;
1212
}

src/modules/datatype/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import { deprecated } from '../../internal/deprecated';
55
/**
66
* Module to generate various primitive values and data types.
77
*/
8-
export class Datatype {
8+
export class DatatypeModule {
99
constructor(private readonly faker: Faker) {
1010
// Bind `this` so namespaced is working correctly
11-
for (const name of Object.getOwnPropertyNames(Datatype.prototype)) {
11+
for (const name of Object.getOwnPropertyNames(DatatypeModule.prototype)) {
1212
if (name === 'constructor' || typeof this[name] !== 'function') {
1313
continue;
1414
}

0 commit comments

Comments
 (0)