@flesh-and-blood/search
Version:
TypeScript search engine for Flesh and Blood cards
120 lines (119 loc) • 4.58 kB
TypeScript
import { Card, Foiling, Hero, Rarity, Release, Treatment } from "@flesh-and-blood/types";
export interface AppliedFilter {
filterToPropertyMapping: FilterToPropertyMapping;
values: string[];
isAnd?: boolean;
isOr?: boolean;
modifier?: Modifier;
isExcluded?: boolean;
isOptional?: 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" | "print" | "r" | "rarity" | "referencedby" | "references" | "s" | "set" | "short" | "shortand" | "shortands" | "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;
print: FilterToPropertyMapping;
r: FilterToPropertyMapping;
rarity: FilterToPropertyMapping;
referencedby: FilterToPropertyMapping;
references: FilterToPropertyMapping;
rf: FilterToPropertyMapping;
s: FilterToPropertyMapping;
set: FilterToPropertyMapping;
short: FilterToPropertyMapping;
shorthand: FilterToPropertyMapping;
shorthands: 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 declare const getKeywordsAndAppliedFiltersFromText: (text: string, cards: Card[], additionalHeroes?: Hero[], additionalSets?: Release[]) => {
appliedFilters: AppliedFilter[];
attributes: {
artists: string[];
foilings: Foiling[];
isExpansionSlot: boolean;
prints: string[];
rarities: Rarity[];
releases: Release[];
treatments: Treatment[];
};
keywords: string[];
};
export declare const RARITY_VALUES_MAPPING: {
[key: string]: Rarity;
};