similar.d.cts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { EmojiItemRegex, SetEmojiItemRegex } from './base.cjs';
  2. type SlicePosition = 'start' | 'end';
  3. type SliceValue = number | 'full';
  4. /**
  5. * Slice of sequence
  6. */
  7. interface SimilarRegexItemSlice {
  8. index: number;
  9. slice: SliceValue;
  10. }
  11. /**
  12. * Similar sequence
  13. */
  14. interface SimilarRegexItemSequence {
  15. type: SlicePosition;
  16. slices: SimilarRegexItemSlice[];
  17. }
  18. /**
  19. * Result if findSimilarRegexItemSequences()
  20. */
  21. interface SimilarRegexItemSequenceResult {
  22. score: number;
  23. sequences: SimilarRegexItemSequence[];
  24. }
  25. /**
  26. * Find similar item sequences
  27. *
  28. * Returns sequence(s) with highest score. Only one of results should be
  29. * applied to items. If there are multiple sequences, clone items list,
  30. * attempt to apply each sequence, run further optimisations on each fork
  31. * and see which one returns better result.
  32. *
  33. * Returns undefined if no common sequences found
  34. */
  35. declare function findSimilarRegexItemSequences(items: EmojiItemRegex[]): SimilarRegexItemSequenceResult | undefined;
  36. /**
  37. * Merge similar sequences
  38. *
  39. * Accepts callback to run optimisation on created subset
  40. */
  41. declare function mergeSimilarRegexItemSequences(items: EmojiItemRegex[], merge: SimilarRegexItemSequence, optimise?: (set: SetEmojiItemRegex) => EmojiItemRegex): EmojiItemRegex[];
  42. /**
  43. * Merge similar items
  44. */
  45. declare function mergeSimilarItemsInSet(set: SetEmojiItemRegex): EmojiItemRegex;
  46. export { findSimilarRegexItemSequences, mergeSimilarItemsInSet, mergeSimilarRegexItemSequences };