UNPKG

node-emojis

Version:

Modern, tree-shakeable emoji library for Node.js with TypeScript, search, skin tones, and aliases 🎉

160 lines • 6.45 kB
"use strict"; /** * Backward compatibility layer for v0.x API * This module provides the legacy API interface for smooth migration */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBackwardCompatibleAPI = createBackwardCompatibleAPI; const emojis_json_1 = __importDefault(require("./data/emojis.json")); const metadata_json_1 = __importDefault(require("./data/metadata.json")); const categories_json_1 = __importDefault(require("./data/categories.json")); const aliases_json_1 = __importDefault(require("./data/aliases.json")); const skin_tones_json_1 = __importDefault(require("./data/skin-tones.json")); // Import functions for backward compatibility const search_1 = require("./features/search"); const skin_tones_1 = require("./features/skin-tones"); const aliases_1 = require("./features/aliases"); // Helper function to define non-enumerable properties function defineGetter(obj, name, getter) { Object.defineProperty(obj, name, { get: getter, enumerable: false }); } // Helper function to define non-enumerable methods function defineMethod(obj, name, method) { Object.defineProperty(obj, name, { value: method, enumerable: false }); } function createBackwardCompatibleAPI() { const emojis = {}; // Copy all emoji properties Object.assign(emojis, emojis_json_1.default); // Add getters for backward compatibility defineGetter(emojis, 'metadata', () => metadata_json_1.default); defineGetter(emojis, 'categories', () => { // Convert categories from arrays of names to objects of emojis const categoryObjects = {}; Object.entries(categories_json_1.default).forEach(([category, names]) => { categoryObjects[category] = {}; names.forEach((name) => { if (emojis_json_1.default[name]) { categoryObjects[category][name] = emojis_json_1.default[name]; } }); }); return categoryObjects; }); // For backward compatibility - add reverse mapping let cachedReverseMapping = null; defineGetter(emojis, 'emojiToName', () => { if (!cachedReverseMapping) { cachedReverseMapping = {}; Object.entries(emojis_json_1.default).forEach(([name, emoji]) => { cachedReverseMapping[emoji] = name; }); } return cachedReverseMapping; }); defineGetter(emojis, 'reverseMapping', () => emojis.emojiToName); // Add backward compatibility methods defineMethod(emojis, 'searchByKeyword', (keyword) => { // Transform results for backward compatibility return (0, search_1.search)(keyword).map((result) => ({ name: result.name, emoji: result.emoji, metadata: { keywords: result.keywords, category: result.category, unicodeVersion: metadata_json_1.default[result.name]?.unicodeVersion || '1.0' } })); }); defineMethod(emojis, 'getByCategory', (category) => { // Transform results for backward compatibility return (0, search_1.getByCategory)(category).map((result) => ({ name: result.name, emoji: result.emoji, metadata: { keywords: result.keywords, category: result.category, unicodeVersion: metadata_json_1.default[result.name]?.unicodeVersion || '1.0' } })); }); defineMethod(emojis, 'getAllNames', () => Object.keys(emojis_json_1.default)); // Skin tone methods defineMethod(emojis, 'applySkinTone', (emoji, tone) => { return (0, skin_tones_1.applySkinTone)(emoji, tone); }); defineMethod(emojis, 'supportsSkinTone', (nameOrEmoji) => { return (0, skin_tones_1.supportsSkinTone)(nameOrEmoji); }); defineMethod(emojis, 'getAllSkinToneVariations', (emoji) => { return (0, skin_tones_1.getAllSkinToneVariations)(emoji); }); defineMethod(emojis, 'removeSkinTone', (emoji) => { return (0, skin_tones_1.removeSkinTone)(emoji); }); // Alias methods defineGetter(emojis, 'aliases', () => aliases_json_1.default); defineMethod(emojis, 'getAliases', (name) => { return (0, aliases_1.getAliases)(name); }); defineMethod(emojis, 'getPrimaryName', (name) => { return (0, aliases_1.getPrimaryName)(name); }); defineMethod(emojis, 'isSameEmoji', (name1, name2) => { return (0, aliases_1.isSameEmoji)(name1, name2); }); defineMethod(emojis, 'getAllNamesForEmoji', (name) => { return (0, aliases_1.getAllNames)(name); }); // Add skin tone data for backward compatibility defineGetter(emojis, 'skinTones', () => { const modifiers = skin_tones_json_1.default.modifiers; return { // Numeric aliases '1': modifiers.light, '2': modifiers['medium-light'], '3': modifiers.medium, '4': modifiers['medium-dark'], '5': modifiers.dark, // Named versions light: modifiers.light, 'medium-light': modifiers['medium-light'], medium: modifiers.medium, 'medium-dark': modifiers['medium-dark'], dark: modifiers.dark }; }); // Add skin tone constants - camelCase for backward compatibility defineGetter(emojis, 'skinToneModifiers', () => skin_tones_json_1.default.modifiers); // Add skin tone constants - original uppercase defineGetter(emojis, 'SKIN_TONE_MODIFIERS', () => skin_tones_json_1.default.modifiers); defineGetter(emojis, 'SKIN_TONES', () => ({ '1': 'light', '2': 'medium-light', '3': 'medium', '4': 'medium-dark', '5': 'dark' })); // Support alias access Object.entries(aliases_json_1.default).forEach(([primary, aliases]) => { aliases.forEach(alias => { if (!(alias in emojis)) { Object.defineProperty(emojis, alias, { get: () => emojis_json_1.default[primary], enumerable: true }); } }); }); return emojis; } //# sourceMappingURL=backward-compat.js.map