node-emojis
Version:
Modern, tree-shakeable emoji library for Node.js with TypeScript, search, skin tones, and aliases π
138 lines β’ 3.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNameFromEmoji = getNameFromEmoji;
exports.getReverseMapping = getReverseMapping;
exports.isKnownEmoji = isKnownEmoji;
exports.createReverseMapping = createReverseMapping;
const emojis_json_1 = __importDefault(require("../data/emojis.json"));
// Create reverse mapping on module load
const reverseMap = {};
Object.entries(emojis_json_1.default).forEach(([name, emoji]) => {
reverseMap[emoji] = name;
});
/**
* Get emoji name from its character
*
* Performs a reverse lookup to find the canonical name of an emoji
* given its character representation.
*
* @param emoji - The emoji character to look up
* @returns The canonical name if found, undefined otherwise
*
* @example
* ```typescript
* // Find name from emoji
* getNameFromEmoji('π₯')
* // Returns: 'fire'
*
* // Unknown emoji returns undefined
* getNameFromEmoji('π')
* // Returns: undefined
*
* // Works with multi-character emojis
* getNameFromEmoji('π¨βπ©βπ§')
* // Returns: 'family_man_woman_girl'
* ```
*/
function getNameFromEmoji(emoji) {
return reverseMap[emoji];
}
/**
* Get the complete reverse mapping
*
* Returns a frozen copy of the reverse emoji mapping (emoji β name).
* Useful for bulk operations or building custom lookup tables.
*
* @returns Read-only object mapping emoji characters to their names
*
* @example
* ```typescript
* const reverseMap = getReverseMapping()
* // Returns: {
* // 'π₯': 'fire',
* // 'π': 'smile',
* // 'π': 'thumbsup',
* // // ... all other emojis
* // }
*
* // Use for lookups (read-only)
* reverseMap['π₯'] // 'fire'
*
* // Attempting to modify throws error
* reverseMap['π₯'] = 'flame' // TypeError: Cannot assign to read only property
* ```
*/
function getReverseMapping() {
return Object.freeze({ ...reverseMap });
}
/**
* Check if a string is a valid emoji in the database
*
* Verifies whether a given string is a recognized emoji character
* in the node-emojis database.
*
* @param str - The string to check
* @returns true if the string is a known emoji, false otherwise
*
* @example
* ```typescript
* // Known emoji
* isKnownEmoji('π₯')
* // Returns: true
*
* // Unknown emoji
* isKnownEmoji('π')
* // Returns: false
*
* // Not an emoji
* isKnownEmoji('hello')
* // Returns: false
*
* // Works with complex emojis
* isKnownEmoji('π¨βπ©βπ§')
* // Returns: true (if family emoji is in database)
* ```
*/
function isKnownEmoji(str) {
return str in reverseMap;
}
/**
* Create a reverse mapping from any emoji object
*
* Utility function to create a reverse lookup table from any
* nameβemoji mapping. Useful for working with custom emoji sets.
*
* @param emojiObject - Object mapping names to emoji characters
* @returns New object mapping emoji characters to names
*
* @example
* ```typescript
* // Create reverse mapping from custom set
* const customEmojis = {
* happy: 'π',
* sad: 'π’',
* fire: 'π₯'
* }
*
* const reverseCustom = createReverseMapping(customEmojis)
* // Returns: {
* // 'π': 'happy',
* // 'π’': 'sad',
* // 'π₯': 'fire'
* // }
*
* // Use for lookups
* reverseCustom['π₯'] // 'fire'
* ```
*/
function createReverseMapping(emojiObject) {
const reverse = {};
Object.entries(emojiObject).forEach(([name, emoji]) => {
reverse[emoji] = name;
});
return reverse;
}
//# sourceMappingURL=reverse-mapping.js.map