node-emojis
Version:
Modern, tree-shakeable emoji library for Node.js with TypeScript, search, skin tones, and aliases 🎉
160 lines • 6.45 kB
JavaScript
;
/**
* 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