2024-11-03 17:41:45 +01:00

48 lines
1013 B
TypeScript

export function basicFilter(
tags: string | Tags,
ranges: string | Ranges | undefined
): Tags
export function extendedFilter(
tags: string | Tags,
ranges: string | Ranges | undefined
): Tags
export function lookup(
tags: string | Tags,
ranges: string | Ranges | undefined
): string | undefined
/**
* BCP-47 tag.
*/
export type Tag = string
/**
* List of BCP-47 tags.
*/
export type Tags = Array<Tag>
/**
* RFC 4647 range.
*/
export type Range = string
/**
* List of RFC 4647 range.
*/
export type Ranges = Array<Range>
/**
* An internal check.
*/
export type Check = (tag: Tag, range: Range) => boolean
/**
* Filter: yields all tags that match a range.
*/
export type Filter = FilterOrLookup<true>
/**
* Lookup: yields the best tag that matches a range.
*/
export type Lookup = FilterOrLookup<false>
/**
* A check.
*/
export type FilterOrLookup<IsFilter extends boolean> = (
tags: Tag | Tags,
ranges?: Range | Ranges | undefined
) => IsFilter extends true ? Tags : Tag | undefined