Emoji Generator
Simple generator of random emoji, that do not generator emoji previously used.
Example Usage
import { randomEmojiCreator } from './emoji-generator'
// NOTE:
// Every time you call generateOne, it will return a different emoji.
// Internally, it stores previously used emoji in memory, in order to not return them again.
randomEmojiCreator.generateOne(); // '๐จโ๐ฉโ๐งโ๐ฆ'
randomEmojiCreator.generateOne(); // '๐
randomEmojiCreator.generateOne(); // '๐จ'
randomEmojiCreator.generateOne(); // '๐'
// ...
Dependencies
npm@sefinek/random-emoji
Auto Install
npx shadcn@latest add https://shadcn-registry-ts.vercel.app/r/util-emojy-generator.json
Manual Install
emoji-generator.ts
/**
* Source: http://localhost:3000
*/
import getRandomEmoji from '@sefinek/random-emoji';
type EmojyItem = ReturnType<typeof getRandomEmoji.emojis>['content'];
const MAX_ATTEMPT = 100;
export const randomEmojiCreator = {
/** in memory state that track every emojy already used */
emojiCreatedNames: new Set<EmojyItem>(),
/** Generate a random emoji, that is not already used */
generateOne: () => {
let attempt = 0;
while (true) {
attempt++;
const outputEmoji = getRandomEmoji.emojis().content;
// check if emoji is already used
const isAlreadyUsed = randomEmojiCreator.emojiCreatedNames.has(outputEmoji);
if (!isAlreadyUsed) {
randomEmojiCreator.emojiCreatedNames.add(outputEmoji);
return outputEmoji;
}
if (isAlreadyUsed && attempt === MAX_ATTEMPT) {
randomEmojiCreator.emojiCreatedNames.add(outputEmoji);
return outputEmoji;
}
// othrwise, try again
}
}
};
Test
emoji-generator.test.ts
import { describe, it, expect } from 'vitest';
import { repeatSyncFn } from '../utility-framework/vitest.utils';
import { randomEmojiCreator } from './emoji-generator';
describe('emoji-generator - randomEmojiCreator', () => {
it('do it', () => {
repeatSyncFn(10_000, () => {
const emoji = randomEmojiCreator.generateOne();
expect(emoji).toBeTypeOf('string');
});
});
});
Command Palette
Search for a command to run...