UNPKG

@flesh-and-blood/search

Version:

TypeScript search engine for Flesh and Blood cards

115 lines (114 loc) 4.29 kB
import { Card, Foiling, Rarity, Release, Treatment } from "@flesh-and-blood/types"; export interface AppliedFilter { filterToPropertyMapping: FilterToPropertyMapping; values: string[]; isAnd?: boolean; isOr?: boolean; modifier?: Modifier; excluded?: boolean; cardTypes?: string[]; } export type Filter = "art" | "artist" | "attack" | "banned" | "b" | "block" | "c" | "class" | "chain" | "co" | "cost" | "color" | "d" | "def" | "defense" | "f" | "fusion" | "foil" | "foiling" | "hero" | "i" | "intellect" | "k" | "keyword" | "l" | "legal" | "li" | "life" | "name" | "p" | "pitch" | "pwr" | "pow" | "power" | "r" | "rarity" | "referencedby" | "references" | "s" | "set" | "sp" | "specialization" | "specializations" | "st" | "subtype" | "text" | "t" | "type" | "tal" | "talent" | "text" | "treatment" | "variation" | "x"; export type Modifier = ">=" | ">" | "<=" | "<"; export declare const availableModifiers: Modifier[]; export type Exclusion = "!" | "-"; export declare const availableExclusions: Exclusion[]; export interface FilterToPropertyMapping { nestedProperty?: string; property: string; exclusion?: Exclusion; isArray?: boolean; isNestedPropertyArray?: boolean; isNumber?: boolean; isString?: boolean; isBoolean?: boolean; isMeta?: boolean; modifier?: Modifier; partialMatch?: boolean; specialProperty?: string; } export declare const filtersToCardPropertyMappings: { arcane: FilterToPropertyMapping; a: FilterToPropertyMapping; artist: FilterToPropertyMapping; art: FilterToPropertyMapping; attack: FilterToPropertyMapping; b: FilterToPropertyMapping; block: FilterToPropertyMapping; banned: FilterToPropertyMapping; bond: FilterToPropertyMapping; bonds: FilterToPropertyMapping; c: FilterToPropertyMapping; class: FilterToPropertyMapping; chain: FilterToPropertyMapping; co: FilterToPropertyMapping; cost: FilterToPropertyMapping; color: FilterToPropertyMapping; d: FilterToPropertyMapping; def: FilterToPropertyMapping; defense: FilterToPropertyMapping; flow: FilterToPropertyMapping; flows: FilterToPropertyMapping; f: FilterToPropertyMapping; fusion: FilterToPropertyMapping; foil: FilterToPropertyMapping; foiling: FilterToPropertyMapping; i: FilterToPropertyMapping; intellect: FilterToPropertyMapping; is: FilterToPropertyMapping; k: FilterToPropertyMapping; keyword: FilterToPropertyMapping; l: FilterToPropertyMapping; legal: FilterToPropertyMapping; hero: FilterToPropertyMapping; li: FilterToPropertyMapping; life: FilterToPropertyMapping; meta: FilterToPropertyMapping; n: FilterToPropertyMapping; name: FilterToPropertyMapping; p: FilterToPropertyMapping; pitch: FilterToPropertyMapping; pwr: FilterToPropertyMapping; pow: FilterToPropertyMapping; power: FilterToPropertyMapping; r: FilterToPropertyMapping; rarity: FilterToPropertyMapping; referencedby: FilterToPropertyMapping; references: FilterToPropertyMapping; rf: FilterToPropertyMapping; s: FilterToPropertyMapping; set: FilterToPropertyMapping; sp: FilterToPropertyMapping; spec: FilterToPropertyMapping; specialization: FilterToPropertyMapping; specializations: FilterToPropertyMapping; st: FilterToPropertyMapping; subtype: FilterToPropertyMapping; t: FilterToPropertyMapping; type: FilterToPropertyMapping; tal: FilterToPropertyMapping; talent: FilterToPropertyMapping; text: FilterToPropertyMapping; trait: FilterToPropertyMapping; treat: FilterToPropertyMapping; treatment: FilterToPropertyMapping; var: FilterToPropertyMapping; variation: FilterToPropertyMapping; x: FilterToPropertyMapping; }; export interface SpecialConditions { isClash: boolean; } export declare const getKeywordsAndAppliedFiltersFromText: (text: string, cards: Card[]) => { appliedFilters: AppliedFilter[]; attributes: { artists: string[]; foilings: Foiling[]; isExpansionSlot: boolean; rarities: Rarity[]; releases: Release[]; treatments: Treatment[]; }; keywords: string[]; specialConditions?: SpecialConditions; };