parse.d.cts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. type EmojiStatus = 'component' | 'fully-qualified' | 'minimally-qualified' | 'unqualified';
  2. declare const componentStatus: EmojiStatus;
  3. /**
  4. * Base item
  5. */
  6. interface BaseEmojiTestDataItem {
  7. group: string;
  8. subgroup: string;
  9. version: string;
  10. }
  11. /**
  12. * Test data item
  13. */
  14. interface EmojiTestDataItem extends BaseEmojiTestDataItem {
  15. sequence: number[];
  16. emoji: string;
  17. status: EmojiStatus;
  18. name: string;
  19. }
  20. type EmojiTestData = Record<string, EmojiTestDataItem>;
  21. /**
  22. * Get all emoji sequences from test file
  23. *
  24. * Returns all emojis as UTF-32 sequences, where:
  25. * key = unqualified sequence (without \uFE0F)
  26. * value = qualified sequence (with \uFE0F)
  27. *
  28. * Duplicate items that have different versions with and without \uFE0F are
  29. * listed only once, with unqualified sequence as key and longest possible
  30. * qualified sequence as value
  31. *
  32. * Example of 3 identical entries:
  33. * '1F441 FE0F 200D 1F5E8 FE0F'
  34. * '1F441 200D 1F5E8 FE0F'
  35. * '1F441 FE0F 200D 1F5E8'
  36. * '1F441 200D 1F5E8'
  37. *
  38. * Out of these entries, only one item will be returned with:
  39. * key = '1f441-200d-1f5e8' (converted to lower case, separated with dash)
  40. * value.sequence = [0x1F441, 0xFE0F, 0x200D, 0x1F5E8, 0xFE0F]
  41. * value.status = 'fully-qualified'
  42. * other properties in value are identical for all versions
  43. */
  44. declare function parseEmojiTestFile(data: string): EmojiTestData;
  45. export { type BaseEmojiTestDataItem, type EmojiStatus, type EmojiTestData, type EmojiTestDataItem, componentStatus, parseEmojiTestFile };