Skip to content

Commit cb746cb

Browse files
authored
feat: add internet.emoji (#504)
1 parent 2264314 commit cb746cb

6 files changed

Lines changed: 3592 additions & 2 deletions

File tree

src/definitions/internet.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { EmojiType } from '../internet';
12
import { allOf } from './utils';
23

34
/**
@@ -16,6 +17,10 @@ export interface InternetDefinitions {
1617
* Some free-mail domains used in that country (e.g. `gmail.de`).
1718
*/
1819
free_email: string[];
20+
/**
21+
* List of all fully-qualified emojis.
22+
*/
23+
emoji: Record<EmojiType, string[]>;
1924
}
2025

2126
/**
@@ -24,5 +29,6 @@ export interface InternetDefinitions {
2429
export const INTERNET = allOf<keyof InternetDefinitions>()(
2530
'domain_suffix',
2631
'example_email',
27-
'free_email'
32+
'free_email',
33+
'emoji'
2834
);

src/internet.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
import type { Faker } from '.';
22
import * as random_ua from './utils/user-agent';
33

4+
export type EmojiType =
5+
| 'smiley'
6+
| 'body'
7+
| 'person'
8+
| 'nature'
9+
| 'food'
10+
| 'travel'
11+
| 'activity'
12+
| 'object'
13+
| 'symbol'
14+
| 'flag';
15+
416
/**
517
* Module to generate internet related entries.
618
*/
@@ -426,4 +438,25 @@ export class Internet {
426438
};
427439
return _password(len, memorable, pattern, prefix);
428440
}
441+
442+
/**
443+
* Generates a random emoji.
444+
*
445+
* @param options Options object.
446+
* @param options.types A list of the emoji types that should be used.
447+
* @example
448+
* faker.internet.emoji() // '🥰'
449+
* faker.internet.emoji({ types: ['food', 'nature'] }) // '🥐'
450+
*/
451+
emoji(options: { types?: ReadonlyArray<EmojiType> } = {}): string {
452+
const {
453+
types = Object.keys(
454+
this.faker.definitions.internet.emoji
455+
) as Array<EmojiType>,
456+
} = options;
457+
const emojiType = this.faker.random.arrayElement(types);
458+
return this.faker.random.arrayElement(
459+
this.faker.definitions.internet.emoji[emojiType]
460+
);
461+
}
429462
}

0 commit comments

Comments
 (0)