@flesh-and-blood/search 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # `search`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const search = require('search');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -0,0 +1,8 @@
1
+ import { Card } from "@flesh-and-blood/types";
2
+ export interface Abbreviation {
3
+ abbreviations: string[];
4
+ card: string;
5
+ }
6
+ export declare const getAbbreviation: (abbreviation: string) => Abbreviation | undefined;
7
+ export declare const getAbbreviationByCard: (c: Card) => Abbreviation | undefined;
8
+ export declare const abbreviations: Abbreviation[];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare const clashSpecializationOverrides: {
2
+ heroes: string[];
3
+ cardIdentifiers: string[];
4
+ }[];
@@ -0,0 +1 @@
1
+ export declare const PUNCTUATION: RegExp;
@@ -0,0 +1,103 @@
1
+ import { Card, Foiling, Hero, Release, Treatment } from "@flesh-and-blood/types";
2
+ export interface AppliedFilter {
3
+ filterToPropertyMapping: FilterToPropertyMapping;
4
+ values: string[];
5
+ isAnd?: boolean;
6
+ isOr?: boolean;
7
+ modifier?: Modifier;
8
+ excluded?: boolean;
9
+ cardTypes?: string[];
10
+ }
11
+ export type Filter = "art" | "artist" | "attack" | "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" | "rf" | "restricted" | "s" | "set" | "sp" | "specialization" | "specializations" | "st" | "subtype" | "t" | "type" | "tal" | "talent" | "text" | "treatment" | "variation" | "x";
12
+ export type Modifier = ">=" | ">" | "<=" | "<";
13
+ export declare const availableModifiers: Modifier[];
14
+ export type Exclusion = "!" | "-";
15
+ export declare const availableExclusions: Exclusion[];
16
+ export interface FilterToPropertyMapping {
17
+ nestedProperty?: string;
18
+ property: string;
19
+ exclusion?: Exclusion;
20
+ isArray?: boolean;
21
+ isNumber?: boolean;
22
+ isString?: boolean;
23
+ isBoolean?: boolean;
24
+ isMeta?: boolean;
25
+ modifier?: Modifier;
26
+ partialMatch?: boolean;
27
+ specialProperty?: string;
28
+ }
29
+ export declare const filtersToCardPropertyMappings: {
30
+ a: FilterToPropertyMapping;
31
+ artist: FilterToPropertyMapping;
32
+ art: FilterToPropertyMapping;
33
+ attack: FilterToPropertyMapping;
34
+ b: FilterToPropertyMapping;
35
+ block: FilterToPropertyMapping;
36
+ c: FilterToPropertyMapping;
37
+ class: FilterToPropertyMapping;
38
+ chain: FilterToPropertyMapping;
39
+ co: FilterToPropertyMapping;
40
+ cost: FilterToPropertyMapping;
41
+ color: FilterToPropertyMapping;
42
+ d: FilterToPropertyMapping;
43
+ def: FilterToPropertyMapping;
44
+ defense: FilterToPropertyMapping;
45
+ f: FilterToPropertyMapping;
46
+ fusion: FilterToPropertyMapping;
47
+ foil: FilterToPropertyMapping;
48
+ foiling: FilterToPropertyMapping;
49
+ i: FilterToPropertyMapping;
50
+ intellect: FilterToPropertyMapping;
51
+ k: FilterToPropertyMapping;
52
+ keyword: FilterToPropertyMapping;
53
+ l: FilterToPropertyMapping;
54
+ legal: FilterToPropertyMapping;
55
+ hero: FilterToPropertyMapping;
56
+ li: FilterToPropertyMapping;
57
+ life: FilterToPropertyMapping;
58
+ n: FilterToPropertyMapping;
59
+ name: FilterToPropertyMapping;
60
+ p: FilterToPropertyMapping;
61
+ pitch: FilterToPropertyMapping;
62
+ pwr: FilterToPropertyMapping;
63
+ pow: FilterToPropertyMapping;
64
+ power: FilterToPropertyMapping;
65
+ r: FilterToPropertyMapping;
66
+ rarity: FilterToPropertyMapping;
67
+ referencedby: FilterToPropertyMapping;
68
+ references: FilterToPropertyMapping;
69
+ rf: FilterToPropertyMapping;
70
+ restricted: FilterToPropertyMapping;
71
+ s: FilterToPropertyMapping;
72
+ set: FilterToPropertyMapping;
73
+ sp: FilterToPropertyMapping;
74
+ spec: FilterToPropertyMapping;
75
+ specialization: FilterToPropertyMapping;
76
+ specializations: FilterToPropertyMapping;
77
+ st: FilterToPropertyMapping;
78
+ subtype: FilterToPropertyMapping;
79
+ t: FilterToPropertyMapping;
80
+ type: FilterToPropertyMapping;
81
+ tal: FilterToPropertyMapping;
82
+ talent: FilterToPropertyMapping;
83
+ text: FilterToPropertyMapping;
84
+ treat: FilterToPropertyMapping;
85
+ treatment: FilterToPropertyMapping;
86
+ var: FilterToPropertyMapping;
87
+ variation: FilterToPropertyMapping;
88
+ x: FilterToPropertyMapping;
89
+ };
90
+ export interface SpecialConditions {
91
+ isClash: boolean;
92
+ heroes: Hero[];
93
+ }
94
+ export declare const getKeywordsAndAppliedFiltersFromText: (text: string, cards: Card[]) => {
95
+ appliedFilters: AppliedFilter[];
96
+ attributes: {
97
+ foilings: Foiling[];
98
+ releases: Release[];
99
+ treatments: Treatment[];
100
+ };
101
+ keywords: string[];
102
+ specialConditions?: SpecialConditions;
103
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const clashRestrictedCards: string[];
@@ -0,0 +1,2 @@
1
+ import { Card } from "@flesh-and-blood/types";
2
+ export declare const getCardByName: (name: string, cards: Card[]) => Card;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ export { default } from "./search";
2
+ export * from "./abbreviations";
3
+ export * from "./clash";
4
+ export * from "./constants";
5
+ export * from "./filters";
6
+ export * from "./helpers";
7
+ export * from "./metaFilters";
8
+ export * from "./related";
9
+ export * from "./search";
10
+ export * from "./shorthands";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var $r=Object.create;var oe=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames,ht=Object.getOwnPropertySymbols,jr=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty,Gr=Object.prototype.propertyIsEnumerable;var ft=(e,r,t)=>r in e?oe(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,de=(e,r)=>{for(var t in r||(r={}))gt.call(r,t)&&ft(e,t,r[t]);if(ht)for(var t of ht(r))Gr.call(r,t)&&ft(e,t,r[t]);return e};var mt=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Kr=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0})},yt=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Wr(r))!gt.call(e,n)&&n!==t&&oe(e,n,{get:()=>r[n],enumerable:!(i=Hr(r,n))||i.enumerable});return e};var ee=(e,r,t)=>(t=e!=null?$r(jr(e)):{},yt(r||!e||!e.__esModule?oe(t,"default",{value:e,enumerable:!0}):t,e)),Ur=e=>yt(oe({},"__esModule",{value:!0}),e);var te=mt((Pa,Ot)=>{var he=Object.defineProperty,Yr=Object.defineProperties,Qr=Object.getOwnPropertyDescriptor,Vr=Object.getOwnPropertyDescriptors,Jr=Object.getOwnPropertyNames,vt=Object.getOwnPropertySymbols,Mt=Object.prototype.hasOwnProperty,Xr=Object.prototype.propertyIsEnumerable,bt=(e,r,t)=>r in e?he(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,Zr=(e,r)=>{for(var t in r||(r={}))Mt.call(r,t)&&bt(e,t,r[t]);if(vt)for(var t of vt(r))Xr.call(r,t)&&bt(e,t,r[t]);return e},qr=(e,r)=>Yr(e,Vr(r)),ei=(e,r)=>{for(var t in r)he(e,t,{get:r[t],enumerable:!0})},ti=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Jr(r))!Mt.call(e,n)&&n!==t&&he(e,n,{get:()=>r[n],enumerable:!(i=Qr(r,n))||i.enumerable});return e},ri=e=>ti(he({},"__esModule",{value:!0}),e),At={};ei(At,{Class:()=>kt,Foiling:()=>Ct,Format:()=>Tt,Fusion:()=>xt,Hero:()=>Bt,Keyword:()=>Rt,Rarity:()=>St,Release:()=>Lt,ReleaseEdition:()=>Pt,Subtype:()=>_t,Talent:()=>wt,Treatment:()=>Ft,Type:()=>It,fullSetIdentifiers:()=>Et,setIdentifierToSetMappings:()=>Dt,setToSetIdentifierMappings:()=>ii});Ot.exports=ri(At);var Ct=(e=>(e.C="Cold",e.G="Gold",e.R="Rainbow",e))(Ct||{}),Ft=(e=>(e.AB="Alternate Border",e.AA="Alternate Art",e.AT="Alternate Text",e.DS="Double Sided",e.EA="Extended Art",e.FA="Full Art",e))(Ft||{}),kt=(e=>(e.NotClassed="NotClassed",e.Generic="Generic",e.Adjudicator="Adjudicator",e.Assassin="Assassin",e.Bard="Bard",e.Brute="Brute",e.Guardian="Guardian",e.Illusionist="Illusionist",e.Mechanologist="Mechanologist",e.Merchant="Merchant",e.Ninja="Ninja",e.Ranger="Ranger",e.Runeblade="Runeblade",e.Shapeshifter="Shapeshifter",e.Warrior="Warrior",e.Wizard="Wizard",e))(kt||{}),Tt=(e=>(e.Blitz="Blitz",e.BlitzLivingLegend="Blitz (Living Legend)",e.Clash="Clash",e.ClassicConstructed="Classic Constructed",e.ClassicConstructedLivingLegend="Classic Constructed (Living Legend)",e.Commoner="Commoner",e.Draft="Draft",e.Open="Open",e.Sealed="Sealed",e.UltimatePitFight="Ultimate Pit Fight",e))(Tt||{}),xt=(e=>(e.Earth="Earth",e.Ice="Ice",e.Lightning="Lightning",e))(xt||{}),St=(e=>(e.Token="Token",e.Common="Common",e.Rare="Rare",e.SuperRare="Super Rare",e.Majestic="Majestic",e.Marvel="Marvel",e.Legendary="Legendary",e.Fabled="Fabled",e.Promo="Promo",e))(St||{}),Lt=(e=>(e.ArcaneRising="Arcane Rising",e.BrightLights="Bright Lights",e.CrucibleOfWar="Crucible of War",e.DuskTillDawn="Dusk till Dawn",e.Dynasty="Dynasty",e.Everfest="Everfest",e.HistoryPack1="History Pack 1",e.Monarch="Monarch",e.Outsiders="Outsiders",e.TalesOfAria="Tales of Aria",e.Uprising="Uprising",e.WelcomeToRathe="Welcome to Rathe",e.ArakniBlitzDeck="Arakni Blitz Deck",e.AzaleaBlitzDeck="Azalea Blitz Deck",e.BenjiBlitzDeck="Benji Blitz Deck",e.BoltynBlitzDeck="Boltyn Blitz Deck",e.BriarBlitzDeck="Briar Blitz Deck",e.BravoBlitzDeck="Bravo Blitz Deck",e.ChaneBlitzDeck="Chane Blitz Deck",e.ClassicBattlesRhinarDorinthea="Classic Battles: Rhinar vs Dorinthea",e.DromaiBlitzDeck="Dromai Blitz Deck",e.DorintheaHeroDeck="Dorinthea Hero Deck",e.FaiBlitzDeck="Fai Blitz Deck",e.IraWelcomeDeck="Ira Welcome Deck",e.KatsuBlitzDeck="Katsu Blitz Deck",e.KatsuHeroDeck="Katsu Hero Deck",e.LeviaBlitzDeck="Levia Blitz Deck",e.LexiBlitzDeck="Lexi Blitz Deck",e.OldhimBlitzDeck="Oldhim Blitz Deck",e.PrismBlitzDeck="Prism Blitz Deck",e.RhinarHeroDeck="Rhinar Hero Deck",e.RiptideBlitzDeck="Riptide Blitz Deck",e.RoundTheTable="Round the Table",e.UzuriBlitzDeck="Uzuri Blitz Deck",e.Promos="Promos",e))(Lt||{}),Pt=(e=>(e.Alpha="Alpha",e.First="First",e.Unlimited="Unlimited",e.Promo="Promo",e))(Pt||{}),wt=(e=>(e.Royal="Royal",e.Draconic="Draconic",e.Earth="Earth",e.Elemental="Elemental",e.Ice="Ice",e.Light="Light",e.Lightning="Lightning",e.Shadow="Shadow",e))(wt||{}),It=(e=>(e.Action="Action",e.AttackReaction="Attack Reaction",e.Block="Block",e.DefenseReaction="Defense Reaction",e.DemiHero="Demi-Hero",e.Equipment="Equipment",e.Hero="Hero",e.Instant="Instant",e.Mentor="Mentor",e.Resource="Resource",e.Token="Token",e.Weapon="Weapon",e))(It||{}),_t=(e=>(e.OneHanded="1H",e.TwoHanded="2H",e.Affliction="Affliction",e.Ally="Ally",e.Angel="Angel",e.Arms="Arms",e.Arrow="Arrow",e.Ash="Ash",e.Attack="Attack",e.Aura="Aura",e.Axe="Axe",e.Base="Base",e.Book="Book",e.Bow="Bow",e.Chest="Chest",e.Claw="Claw",e.Club="Club",e.Construct="Construct",e.Dagger="Dagger",e.Demon="Demon",e.Dragon="Dragon",e.Evo="Evo",e.Fiddle="Fiddle",e.Figment="Figment",e.Flail="Flail",e.Gem="Gem",e.Gun="Gun",e.Hammer="Hammer",e.Head="Head",e.Invocation="Invocation",e.Item="Item",e.Landmark="Landmark",e.Lute="Lute",e.Legs="Legs",e.NonAttack="Non-Attack",e.OffHand="Off-Hand",e.Orb="Orb",e.Pistol="Pistol",e.Quiver="Quiver",e.Rock="Rock",e.Shuriken="Shuriken",e.Scepter="Scepter",e.Scythe="Scythe",e.Song="Song",e.Staff="Staff",e.Sword="Sword",e.Trap="Trap",e.Young="Young",e))(_t||{}),Bt=(e=>(e.Arakni="Arakni",e.Azalea="Azalea",e.Benji="Benji",e.Boltyn="Boltyn",e.Bravo="Bravo",e.Brevant="Brevant",e.Briar="Briar",e.Chane="Chane",e.Dash="Dash",e.DataDoll="Data Doll",e.Dorinthea="Dorinthea",e.Dromai="Dromai",e.Emperor="Emperor",e.Fai="Fai",e.GenisWotchuneed="Genis Wotchuneed",e.Ira="Ira",e.Iyslander="Iyslander",e.Kano="Kano",e.Kassai="Kassai",e.Katsu="Katsu",e.Kavdaen="Kavdaen",e.Kayo="Kayo",e.Levia="Levia",e.Lexi="Lexi",e.Melody="Melody",e.Oldhim="Oldhim",e.ProfessorTeklovossen="Professor Teklovossen",e.Prism="Prism",e.Rhinar="Rhinar",e.Riptide="Riptide",e.Ruudi="Ruu\u2019di",e.Shiyana="Shiyana",e.Taipanis="Taipanis",e.Taylor="Taylor",e.Teklovossen="Teklovossen",e.Theryon="Theryon",e.Uzuri="Uzuri",e.Valda="Valda",e.Vynnset="Vynnset",e.Viserai="Viserai",e.Yorick="Yorick",e.Yoji="Yoji",e))(Bt||{}),Rt=(e=>(e.ArcaneBarrier="Arcane Barrier",e.Awaken="Awaken",e.Battleworn="Battleworn",e.BladeBreak="Blade Break",e.BloodDebt="Blood Debt",e.Boost="Boost",e.Channel="Channel",e.Charge="Charge",e.Combo="Combo",e.Contract="Contract",e.Crush="Crush",e.Dominate="Dominate",e.Ephemeral="Ephemeral",e.Essence="Essence",e.EvoUpgrade="Evo Upgrade",e.Freeze="Freeze",e.Fusion="Fusion",e.GoAgain="Go again",e.Heave="Heave",e.Intimidate="Intimidate",e.Legendary="Legendary",e.Material="Material",e.Mirage="Mirage",e.Negate="Negate",e.Opt="Opt",e.Overpower="Overpower",e.Pairs="Pairs",e.Piercing="Piercing",e.Phantasm="Phantasm",e.Protect="Protect",e.Quell="Quell",e.Reload="Reload",e.Reprise="Reprise",e.RuneGate="Rune Gate",e.Rupture="Rupture",e.Solflare="Solflare",e.Specialization="Specialization",e.Spectra="Spectra",e.Spellvoid="Spellvoid",e.Stealth="Stealth",e.Surge="Surge",e.Temper="Temper",e.Tower="Tower",e.Transform="Transform",e.Unfreeze="Unfreeze",e.Unity="Unity",e.Ward="Ward",e))(Rt||{}),Et={wtr:"Welcome to Rathe",arc:"Arcane Rising",cru:"Crucible of War",mon:"Monarch",ele:"Tales of Aria",evr:"Everfest","1hp":"History Pack 1",hp1:"History Pack 1",upr:"Uprising",dyn:"Dynasty",out:"Outsiders",dtd:"Dusk till Dawn",evo:"Bright Lights"},Dt=qr(Zr({},Et),{ara:"Arakni Blitz Deck",azl:"Azalea Blitz Deck",ben:"Benji Blitz Deck",bol:"Boltyn Blitz Deck",bri:"Briar Blitz Deck",bvo:"Bravo Blitz Deck",chn:"Chane Blitz Deck",dro:"Dromai Blitz Deck",fai:"Fai Blitz Deck",kat:"Katsu Blitz Deck",lev:"Levia Blitz Deck",lxi:"Lexi Blitz Deck",old:"Oldhim Blitz Deck",psm:"Prism Blitz Deck",rip:"Riptide Blitz Deck",uzu:"Uzuri Blitz Deck",dvr:"Classic Battles: Rhinar vs Dorinthea",rvd:"Classic Battles: Rhinar vs Dorinthea",ira:"Ira Welcome Deck",tcc:"Round the Table",tea:"Dorinthea Hero Deck",ksu:"Katsu Hero Deck",rnr:"Rhinar Hero Deck",fab:"Promos",her:"Promos",jdg:"Promos",lgs:"Promos",lss:"Promos",oxo:"Promos",xxx:"Promos",win:"Promos"}),Be={};for(let[e,r]of Object.entries(Dt)){let t=Be[r];t?t.push(e):Be[r]=[e]}var ii=Be});var tr=mt((wa,er)=>{"use strict";function Nt(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,i)}return t}function re(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Nt(Object(t),!0).forEach(function(i){De(e,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Nt(Object(t)).forEach(function(i){Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(t,i))})}return e}function Ee(e){"@babel/helpers - typeof";return Ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ee(e)}function R(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function zt(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function E(e,r,t){return r&&zt(e.prototype,r),t&&zt(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function De(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function K(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");Object.defineProperty(e,"prototype",{value:Object.create(r&&r.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),writable:!1}),r&&Oe(e,r)}function ge(e){return ge=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},ge(e)}function Oe(e,r){return Oe=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i},Oe(e,r)}function ni(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function ai(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function oi(e,r){if(r&&(typeof r=="object"||typeof r=="function"))return r;if(r!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return ai(e)}function U(e){var r=ni();return function(){var i=ge(e),n;if(r){var a=ge(this).constructor;n=Reflect.construct(i,arguments,a)}else n=i.apply(this,arguments);return oi(this,n)}}function X(e){return si(e)||li(e)||ci(e)||ui()}function si(e){if(Array.isArray(e))return Ne(e)}function li(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function ci(e,r){if(e){if(typeof e=="string")return Ne(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ne(e,r)}}function Ne(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}function ui(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(e){return Array.isArray?Array.isArray(e):Yt(e)==="[object Array]"}var pi=1/0;function di(e){if(typeof e=="string")return e;var r=e+"";return r=="0"&&1/e==-pi?"-0":r}function hi(e){return e==null?"":di(e)}function $(e){return typeof e=="string"}function Kt(e){return typeof e=="number"}function fi(e){return e===!0||e===!1||gi(e)&&Yt(e)=="[object Boolean]"}function Ut(e){return Ee(e)==="object"}function gi(e){return Ut(e)&&e!==null}function D(e){return e!=null}function Re(e){return!e.trim().length}function Yt(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var mi="Incorrect 'index' type",yi=function(r){return"Invalid value for key ".concat(r)},vi=function(r){return"Pattern length exceeds max of ".concat(r,".")},bi=function(r){return"Missing ".concat(r," property in key")},Mi=function(r){return"Property 'weight' in key '".concat(r,"' must be a positive integer")},$t=Object.prototype.hasOwnProperty,Ai=function(){function e(r){var t=this;R(this,e),this._keys=[],this._keyMap={};var i=0;r.forEach(function(n){var a=Qt(n);i+=a.weight,t._keys.push(a),t._keyMap[a.id]=a,i+=a.weight}),this._keys.forEach(function(n){n.weight/=i})}return E(e,[{key:"get",value:function(t){return this._keyMap[t]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function Qt(e){var r=null,t=null,i=null,n=1,a=null;if($(e)||j(e))i=e,r=Ht(e),t=ze(e);else{if(!$t.call(e,"name"))throw new Error(bi("name"));var s=e.name;if(i=s,$t.call(e,"weight")&&(n=e.weight,n<=0))throw new Error(Mi(s));r=Ht(s),t=ze(s),a=e.getFn}return{path:r,id:t,weight:n,src:i,getFn:a}}function Ht(e){return j(e)?e:e.split(".")}function ze(e){return j(e)?e.join("."):e}function Ci(e,r){var t=[],i=!1,n=function a(s,o,l){if(D(s))if(!o[l])t.push(s);else{var u=o[l],p=s[u];if(!D(p))return;if(l===o.length-1&&($(p)||Kt(p)||fi(p)))t.push(hi(p));else if(j(p)){i=!0;for(var f=0,d=p.length;f<d;f+=1)a(p[f],o,l+1)}else o.length&&a(p,o,l+1)}};return n(e,$(r)?r.split("."):r,0),i?t:t[0]}var Fi={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},ki={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(r,t){return r.score===t.score?r.idx<t.idx?-1:1:r.score<t.score?-1:1}},Ti={location:0,threshold:.6,distance:100},xi={useExtendedSearch:!1,getFn:Ci,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},b=re(re(re(re({},ki),Fi),Ti),xi),Si=/[^ ]+/g;function Li(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3,t=new Map,i=Math.pow(10,r);return{get:function(a){var s=a.match(Si).length;if(t.has(s))return t.get(s);var o=1/Math.pow(s,.5*e),l=parseFloat(Math.round(o*i)/i);return t.set(s,l),l},clear:function(){t.clear()}}}var Ge=function(){function e(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=r.getFn,i=t===void 0?b.getFn:t,n=r.fieldNormWeight,a=n===void 0?b.fieldNormWeight:n;R(this,e),this.norm=Li(a,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return E(e,[{key:"setSources",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];this.docs=t}},{key:"setIndexRecords",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];this.records=t}},{key:"setKeys",value:function(){var t=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];this.keys=i,this._keysMap={},i.forEach(function(n,a){t._keysMap[n.id]=a})}},{key:"create",value:function(){var t=this;this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach(function(i,n){t._addString(i,n)}):this.docs.forEach(function(i,n){t._addObject(i,n)}),this.norm.clear())}},{key:"add",value:function(t){var i=this.size();$(t)?this._addString(t,i):this._addObject(t,i)}},{key:"removeAt",value:function(t){this.records.splice(t,1);for(var i=t,n=this.size();i<n;i+=1)this.records[i].i-=1}},{key:"getValueForItemAtKeyId",value:function(t,i){return t[this._keysMap[i]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(t,i){if(!(!D(t)||Re(t))){var n={v:t,i,n:this.norm.get(t)};this.records.push(n)}}},{key:"_addObject",value:function(t,i){var n=this,a={i,$:{}};this.keys.forEach(function(s,o){var l=s.getFn?s.getFn(t):n.getFn(t,s.path);if(D(l)){if(j(l))(function(){for(var p=[],f=[{nestedArrIndex:-1,value:l}];f.length;){var d=f.pop(),m=d.nestedArrIndex,h=d.value;if(D(h))if($(h)&&!Re(h)){var g={v:h,i:m,n:n.norm.get(h)};p.push(g)}else j(h)&&h.forEach(function(v,k){f.push({nestedArrIndex:k,value:v})})}a.$[o]=p})();else if($(l)&&!Re(l)){var u={v:l,n:n.norm.get(l)};a.$[o]=u}}}),this.records.push(a)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),e}();function Vt(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.getFn,n=i===void 0?b.getFn:i,a=t.fieldNormWeight,s=a===void 0?b.fieldNormWeight:a,o=new Ge({getFn:n,fieldNormWeight:s});return o.setKeys(e.map(Qt)),o.setSources(r),o.create(),o}function Pi(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=r.getFn,i=t===void 0?b.getFn:t,n=r.fieldNormWeight,a=n===void 0?b.fieldNormWeight:n,s=e.keys,o=e.records,l=new Ge({getFn:i,fieldNormWeight:a});return l.setKeys(s),l.setIndexRecords(o),l}function fe(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=r.errors,i=t===void 0?0:t,n=r.currentLocation,a=n===void 0?0:n,s=r.expectedLocation,o=s===void 0?0:s,l=r.distance,u=l===void 0?b.distance:l,p=r.ignoreLocation,f=p===void 0?b.ignoreLocation:p,d=i/e.length;if(f)return d;var m=Math.abs(o-a);return u?d+m/u:m?1:d}function wi(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:b.minMatchCharLength,t=[],i=-1,n=-1,a=0,s=e.length;a<s;a+=1){var o=e[a];o&&i===-1?i=a:!o&&i!==-1&&(n=a-1,n-i+1>=r&&t.push([i,n]),i=-1)}return e[a-1]&&a-i>=r&&t.push([i,a-1]),t}var J=32;function Ii(e,r,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i.location,a=n===void 0?b.location:n,s=i.distance,o=s===void 0?b.distance:s,l=i.threshold,u=l===void 0?b.threshold:l,p=i.findAllMatches,f=p===void 0?b.findAllMatches:p,d=i.minMatchCharLength,m=d===void 0?b.minMatchCharLength:d,h=i.includeMatches,g=h===void 0?b.includeMatches:h,v=i.ignoreLocation,k=v===void 0?b.ignoreLocation:v;if(r.length>J)throw new Error(vi(J));for(var y=r.length,x=e.length,T=Math.max(0,Math.min(a,x)),F=u,S=T,w=m>1||g,N=w?Array(x):[],_;(_=e.indexOf(r,S))>-1;){var W=fe(r,{currentLocation:_,expectedLocation:T,distance:o,ignoreLocation:k});if(F=Math.min(W,F),S=_+y,w)for(var I=0;I<y;)N[_+I]=1,I+=1}S=-1;for(var O=[],Z=1,ce=y+x,Or=1<<y-1,V=0;V<y;V+=1){for(var ue=0,G=ce;ue<G;){var Nr=fe(r,{errors:V,currentLocation:T+G,expectedLocation:T,distance:o,ignoreLocation:k});Nr<=F?ue=G:ce=G,G=Math.floor((ce-ue)/2+ue)}ce=G;var ut=Math.max(1,T-G+1),Ie=f?x:Math.min(T+G,x)+y,q=Array(Ie+2);q[Ie+1]=(1<<V)-1;for(var z=Ie;z>=ut;z-=1){var pe=z-1,pt=t[e.charAt(pe)];if(w&&(N[pe]=+!!pt),q[z]=(q[z+1]<<1|1)&pt,V&&(q[z]|=(O[z+1]|O[z])<<1|1|O[z+1]),q[z]&Or&&(Z=fe(r,{errors:V,currentLocation:pe,expectedLocation:T,distance:o,ignoreLocation:k}),Z<=F)){if(F=Z,S=pe,S<=T)break;ut=Math.max(1,2*T-S)}}var zr=fe(r,{errors:V+1,currentLocation:T,expectedLocation:T,distance:o,ignoreLocation:k});if(zr>F)break;O=q}var _e={isMatch:S>=0,score:Math.max(.001,Z)};if(w){var dt=wi(N,m);dt.length?g&&(_e.indices=dt):_e.isMatch=!1}return _e}function _i(e){for(var r={},t=0,i=e.length;t<i;t+=1){var n=e.charAt(t);r[n]=(r[n]||0)|1<<i-t-1}return r}var Jt=function(){function e(r){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=i.location,a=n===void 0?b.location:n,s=i.threshold,o=s===void 0?b.threshold:s,l=i.distance,u=l===void 0?b.distance:l,p=i.includeMatches,f=p===void 0?b.includeMatches:p,d=i.findAllMatches,m=d===void 0?b.findAllMatches:d,h=i.minMatchCharLength,g=h===void 0?b.minMatchCharLength:h,v=i.isCaseSensitive,k=v===void 0?b.isCaseSensitive:v,y=i.ignoreLocation,x=y===void 0?b.ignoreLocation:y;if(R(this,e),this.options={location:a,threshold:o,distance:u,includeMatches:f,findAllMatches:m,minMatchCharLength:g,isCaseSensitive:k,ignoreLocation:x},this.pattern=k?r:r.toLowerCase(),this.chunks=[],!!this.pattern.length){var T=function(I,O){t.chunks.push({pattern:I,alphabet:_i(I),startIndex:O})},F=this.pattern.length;if(F>J){for(var S=0,w=F%J,N=F-w;S<N;)T(this.pattern.substr(S,J),S),S+=J;if(w){var _=F-J;T(this.pattern.substr(_),_)}}else T(this.pattern,0)}}return E(e,[{key:"searchIn",value:function(t){var i=this.options,n=i.isCaseSensitive,a=i.includeMatches;if(n||(t=t.toLowerCase()),this.pattern===t){var s={isMatch:!0,score:0};return a&&(s.indices=[[0,t.length-1]]),s}var o=this.options,l=o.location,u=o.distance,p=o.threshold,f=o.findAllMatches,d=o.minMatchCharLength,m=o.ignoreLocation,h=[],g=0,v=!1;this.chunks.forEach(function(y){var x=y.pattern,T=y.alphabet,F=y.startIndex,S=Ii(t,x,T,{location:l+F,distance:u,threshold:p,findAllMatches:f,minMatchCharLength:d,includeMatches:a,ignoreLocation:m}),w=S.isMatch,N=S.score,_=S.indices;w&&(v=!0),g+=N,w&&_&&(h=[].concat(X(h),X(_)))});var k={isMatch:v,score:v?g/this.chunks.length:1};return v&&a&&(k.indices=h),k}}]),e}(),Y=function(){function e(r){R(this,e),this.pattern=r}return E(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(t){return Wt(t,this.multiRegex)}},{key:"isSingleMatch",value:function(t){return Wt(t,this.singleRegex)}}]),e}();function Wt(e,r){var t=e.match(r);return t?t[1]:null}var Bi=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=n===this.pattern;return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),t}(Y),Ri=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=n.indexOf(this.pattern),s=a===-1;return{isMatch:s,score:s?0:1,indices:[0,n.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),t}(Y),Ei=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=n.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),t}(Y),Di=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=!n.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,n.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),t}(Y),Oi=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=n.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[n.length-this.pattern.length,n.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),t}(Y),Ni=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){var a=!n.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,n.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),t}(Y),Xt=function(e){K(t,e);var r=U(t);function t(i){var n,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=a.location,o=s===void 0?b.location:s,l=a.threshold,u=l===void 0?b.threshold:l,p=a.distance,f=p===void 0?b.distance:p,d=a.includeMatches,m=d===void 0?b.includeMatches:d,h=a.findAllMatches,g=h===void 0?b.findAllMatches:h,v=a.minMatchCharLength,k=v===void 0?b.minMatchCharLength:v,y=a.isCaseSensitive,x=y===void 0?b.isCaseSensitive:y,T=a.ignoreLocation,F=T===void 0?b.ignoreLocation:T;return R(this,t),n=r.call(this,i),n._bitapSearch=new Jt(i,{location:o,threshold:u,distance:f,includeMatches:m,findAllMatches:g,minMatchCharLength:k,isCaseSensitive:x,ignoreLocation:F}),n}return E(t,[{key:"search",value:function(n){return this._bitapSearch.searchIn(n)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),t}(Y),Zt=function(e){K(t,e);var r=U(t);function t(i){return R(this,t),r.call(this,i)}return E(t,[{key:"search",value:function(n){for(var a=0,s,o=[],l=this.pattern.length;(s=n.indexOf(this.pattern,a))>-1;)a=s+l,o.push([s,a-1]);var u=!!o.length;return{isMatch:u,score:u?0:1,indices:o}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),t}(Y),$e=[Bi,Zt,Ei,Di,Ni,Oi,Ri,Xt],jt=$e.length,zi=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,$i="|";function Hi(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.split($i).map(function(t){for(var i=t.trim().split(zi).filter(function(h){return h&&!!h.trim()}),n=[],a=0,s=i.length;a<s;a+=1){for(var o=i[a],l=!1,u=-1;!l&&++u<jt;){var p=$e[u],f=p.isMultiMatch(o);f&&(n.push(new p(f,r)),l=!0)}if(!l)for(u=-1;++u<jt;){var d=$e[u],m=d.isSingleMatch(o);if(m){n.push(new d(m,r));break}}}return n})}var Wi=new Set([Xt.type,Zt.type]),ji=function(){function e(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.isCaseSensitive,n=i===void 0?b.isCaseSensitive:i,a=t.includeMatches,s=a===void 0?b.includeMatches:a,o=t.minMatchCharLength,l=o===void 0?b.minMatchCharLength:o,u=t.ignoreLocation,p=u===void 0?b.ignoreLocation:u,f=t.findAllMatches,d=f===void 0?b.findAllMatches:f,m=t.location,h=m===void 0?b.location:m,g=t.threshold,v=g===void 0?b.threshold:g,k=t.distance,y=k===void 0?b.distance:k;R(this,e),this.query=null,this.options={isCaseSensitive:n,includeMatches:s,minMatchCharLength:l,findAllMatches:d,ignoreLocation:p,location:h,threshold:v,distance:y},this.pattern=n?r:r.toLowerCase(),this.query=Hi(this.pattern,this.options)}return E(e,[{key:"searchIn",value:function(t){var i=this.query;if(!i)return{isMatch:!1,score:1};var n=this.options,a=n.includeMatches,s=n.isCaseSensitive;t=s?t:t.toLowerCase();for(var o=0,l=[],u=0,p=0,f=i.length;p<f;p+=1){var d=i[p];l.length=0,o=0;for(var m=0,h=d.length;m<h;m+=1){var g=d[m],v=g.search(t),k=v.isMatch,y=v.indices,x=v.score;if(k){if(o+=1,u+=x,a){var T=g.constructor.type;Wi.has(T)?l=[].concat(X(l),X(y)):l.push(y)}}else{u=0,o=0,l.length=0;break}}if(o){var F={isMatch:!0,score:u/o};return a&&(F.indices=l),F}}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(t,i){return i.useExtendedSearch}}]),e}(),me=[];function Gi(){me.push.apply(me,arguments)}function He(e,r){for(var t=0,i=me.length;t<i;t+=1){var n=me[t];if(n.condition(e,r))return new n(e,r)}return new Jt(e,r)}var ye={AND:"$and",OR:"$or"},We={PATH:"$path",PATTERN:"$val"},je=function(r){return!!(r[ye.AND]||r[ye.OR])},Ki=function(r){return!!r[We.PATH]},Ui=function(r){return!j(r)&&Ut(r)&&!je(r)},Gt=function(r){return De({},ye.AND,Object.keys(r).map(function(t){return De({},t,r[t])}))};function qt(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.auto,n=i===void 0?!0:i,a=function s(o){var l=Object.keys(o),u=Ki(o);if(!u&&l.length>1&&!je(o))return s(Gt(o));if(Ui(o)){var p=u?o[We.PATH]:l[0],f=u?o[We.PATTERN]:o[p];if(!$(f))throw new Error(yi(p));var d={keyId:ze(p),pattern:f};return n&&(d.searcher=He(f,r)),d}var m={children:[],operator:l[0]};return l.forEach(function(h){var g=o[h];j(g)&&g.forEach(function(v){m.children.push(s(v))})}),m};return je(e)||(e=Gt(e)),a(e)}function Yi(e,r){var t=r.ignoreFieldNorm,i=t===void 0?b.ignoreFieldNorm:t;e.forEach(function(n){var a=1;n.matches.forEach(function(s){var o=s.key,l=s.norm,u=s.score,p=o?o.weight:null;a*=Math.pow(u===0&&p?Number.EPSILON:u,(p||1)*(i?1:l))}),n.score=a})}function Qi(e,r){var t=e.matches;r.matches=[],D(t)&&t.forEach(function(i){if(!(!D(i.indices)||!i.indices.length)){var n=i.indices,a=i.value,s={indices:n,value:a};i.key&&(s.key=i.key.src),i.idx>-1&&(s.refIndex=i.idx),r.matches.push(s)}})}function Vi(e,r){r.score=e.score}function Ji(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.includeMatches,n=i===void 0?b.includeMatches:i,a=t.includeScore,s=a===void 0?b.includeScore:a,o=[];return n&&o.push(Qi),s&&o.push(Vi),e.map(function(l){var u=l.idx,p={item:r[u],refIndex:u};return o.length&&o.forEach(function(f){f(l,p)}),p})}var ie=function(){function e(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;R(this,e),this.options=re(re({},b),t),this.options.useExtendedSearch,this._keyStore=new Ai(this.options.keys),this.setCollection(r,i)}return E(e,[{key:"setCollection",value:function(t,i){if(this._docs=t,i&&!(i instanceof Ge))throw new Error(mi);this._myIndex=i||Vt(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(t){D(t)&&(this._docs.push(t),this._myIndex.add(t))}},{key:"remove",value:function(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(){return!1},i=[],n=0,a=this._docs.length;n<a;n+=1){var s=this._docs[n];t(s,n)&&(this.removeAt(n),n-=1,a-=1,i.push(s))}return i}},{key:"removeAt",value:function(t){this._docs.splice(t,1),this._myIndex.removeAt(t)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=i.limit,a=n===void 0?-1:n,s=this.options,o=s.includeMatches,l=s.includeScore,u=s.shouldSort,p=s.sortFn,f=s.ignoreFieldNorm,d=$(t)?$(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return Yi(d,{ignoreFieldNorm:f}),u&&d.sort(p),Kt(a)&&a>-1&&(d=d.slice(0,a)),Ji(d,this._docs,{includeMatches:o,includeScore:l})}},{key:"_searchStringList",value:function(t){var i=He(t,this.options),n=this._myIndex.records,a=[];return n.forEach(function(s){var o=s.v,l=s.i,u=s.n;if(D(o)){var p=i.searchIn(o),f=p.isMatch,d=p.score,m=p.indices;f&&a.push({item:o,idx:l,matches:[{score:d,value:o,norm:u,indices:m}]})}}),a}},{key:"_searchLogical",value:function(t){var i=this,n=qt(t,this.options),a=function u(p,f,d){if(!p.children){var m=p.keyId,h=p.searcher,g=i._findMatches({key:i._keyStore.get(m),value:i._myIndex.getValueForItemAtKeyId(f,m),searcher:h});return g&&g.length?[{idx:d,item:f,matches:g}]:[]}for(var v=[],k=0,y=p.children.length;k<y;k+=1){var x=p.children[k],T=u(x,f,d);if(T.length)v.push.apply(v,X(T));else if(p.operator===ye.AND)return[]}return v},s=this._myIndex.records,o={},l=[];return s.forEach(function(u){var p=u.$,f=u.i;if(D(p)){var d=a(n,p,f);d.length&&(o[f]||(o[f]={idx:f,item:p,matches:[]},l.push(o[f])),d.forEach(function(m){var h,g=m.matches;(h=o[f].matches).push.apply(h,X(g))}))}}),l}},{key:"_searchObjectList",value:function(t){var i=this,n=He(t,this.options),a=this._myIndex,s=a.keys,o=a.records,l=[];return o.forEach(function(u){var p=u.$,f=u.i;if(D(p)){var d=[];s.forEach(function(m,h){d.push.apply(d,X(i._findMatches({key:m,value:p[h],searcher:n})))}),d.length&&l.push({idx:f,item:p,matches:d})}}),l}},{key:"_findMatches",value:function(t){var i=t.key,n=t.value,a=t.searcher;if(!D(n))return[];var s=[];if(j(n))n.forEach(function(m){var h=m.v,g=m.i,v=m.n;if(D(h)){var k=a.searchIn(h),y=k.isMatch,x=k.score,T=k.indices;y&&s.push({score:x,key:i,value:h,idx:g,norm:v,indices:T})}});else{var o=n.v,l=n.n,u=a.searchIn(o),p=u.isMatch,f=u.score,d=u.indices;p&&s.push({score:f,key:i,value:o,norm:l,indices:d})}return s}}]),e}();ie.version="6.6.2";ie.createIndex=Vt;ie.parseIndex=Pi;ie.config=b;ie.parseQuery=qt;Gi(ji);var Xi=ie;er.exports=Xi});var Sa={};Kr(Sa,{PUNCTUATION:()=>L,abbreviations:()=>Ke,availableExclusions:()=>Pr,availableModifiers:()=>Lr,clashSpecializationOverrides:()=>lt,default:()=>_r,filterCard:()=>Br,filtersToCardPropertyMappings:()=>Le,getAbbreviation:()=>ve,getAbbreviationByCard:()=>Zi,getCardByName:()=>nt,getDeckFilters:()=>Jn,getExcludedMetaFilters:()=>Xe,getKeywordsAndAppliedFiltersFromText:()=>it,getMetaFilters:()=>Je,getRelatedCards:()=>Dr,getRelatedCardsByName:()=>Pe,heroHasFilters:()=>Xn,shorthands:()=>Ze});module.exports=Ur(Sa);var P=ee(te()),at=ee(tr());var rr=["Ball Lightning","Belittle","Drone of Brutality","Duskblade"];var L=/[!"#$%&'’()*+,-./:;<=>?@[\]^_`{|}~]/g;var A=ee(te());var ve=e=>Ke.find(({abbreviations:r})=>r.find(t=>t.toLowerCase()===e)),Zi=e=>Ke.find(({card:r})=>r.toLowerCase()===e.name.toLowerCase()),Ke=[{abbreviations:["3oak"],card:"Three of a Kind"},{abbreviations:["ALS"],card:"Arc Light Sentinel"},{abbreviations:["AoW"],card:"Art of War"},{abbreviations:["BBD"],card:"Barraging Beatdown"},{abbreviations:["BEB"],card:"Bull's Eye Bracers"},{abbreviations:["BLW"],card:"Be Like Water"},{abbreviations:["BOHH"],card:"Blood on Her Hands"},{abbreviations:["BRB"],card:"Bloodrush Bellow"},{abbreviations:["Breezies"],card:"Breeze Rider Boots"},{abbreviations:["BTA"],card:"Burn Them All"},{abbreviations:["\u{1F382}","Cake"],card:"Ninth Blade of the Blood Oath"},{abbreviations:["CLF"],card:"Channel Lake Frigid"},{abbreviations:["CMH"],card:"Channel Mount Heroic"},{abbreviations:["C&C","CnC"],card:"Command and Conquer"},{abbreviations:["CStrike","C-Strike","C Strike"],card:"Celestial Cataclysm"},{abbreviations:["CtW"],card:"Crush the Weak"},{abbreviations:["CoD"],card:"Crown of Dominion"},{abbreviations:["CoP"],card:"Crown of Providence"},{abbreviations:["DD"],card:"Death Dealer"},{abbreviations:["DPot","D Pot"],card:"Potion of Deja Vu"},{abbreviations:["Dullcap"],card:"Arcanite Skullcap"},{abbreviations:["EBTT"],card:"Even Bigger Than That!"},{abbreviations:["EPot","E Pot"],card:"Energy Potion"},{abbreviations:["EStrike","E-Strike","E Strike"],card:"Enlightened Strike"},{abbreviations:["FFS"],card:"Fyendal's Fighting Spirit"},{abbreviations:["FoN"],card:"Force of Nature"},{abbreviations:["Frosty","\u{1F976}","\u{1F9CA}","\u2744\uFE0F"],card:"Frostbite"},{abbreviations:["Frosty Hammer"],card:"Winter's Wail"},{abbreviations:["GnT"],card:"Give and Take"},{abbreviations:["HMH"],card:"Hope Merchant's Hood"},{abbreviations:["HoI"],card:"Heart of Ice"},{abbreviations:["KKBB"],card:"Knick Knack Bric-a-brac"},{abbreviations:["LCF","Newminaris"],card:"Luminaris, Celestial Fury"},{abbreviations:["LDE"],card:"Last Ditch Effort"},{abbreviations:["LFaL","L4aL"],card:"Life for a Life"},{abbreviations:["LiT"],card:"Lost in Thought"},{abbreviations:["LNW"],card:"Leave No Witnesses"},{abbreviations:["LoW"],card:"Lord of Wind"},{abbreviations:["LtC"],card:"Lead the Charge"},{abbreviations:["MaxV"],card:"Maximum Velocity"},{abbreviations:["MMB"],card:"Mage Master Boots"},{abbreviations:["MnG"],card:"Meat and Greet"},{abbreviations:["MoM"],card:"Mask of Momentum"},{abbreviations:["PJs","Pajamas"],card:"Alluvion Constellas"},{abbreviations:["Ponder Run"],card:"Premeditate"},{abbreviations:["Pox Malone","Post Malone"],card:"Virulent Touch"},{abbreviations:["PF","\u{1F525}"],card:"Phoenix Flame"},{abbreviations:["PoM"],card:"Peace of Mind"},{abbreviations:["RitL"],card:"Red in the Ledger"},{abbreviations:["SFaF","S4aS"],card:"Scar for a Scar"},{abbreviations:["SWK"],card:"Spinning Wheel Kick"},{abbreviations:["Starvo"],card:"Bravo, Star of the Show"},{abbreviations:["SSP"],card:"Sand Sketched Plan"},{abbreviations:["SFTL"],card:"Swing Fist, Think Later"},{abbreviations:["TAYG"],card:"That All You Got?"},{abbreviations:["TROM"],card:"This Round's on Me"},{abbreviations:["TTT"],card:"Take the Tempo"},{abbreviations:["ZTS"],card:"Zero to Sixty"}];var c=ee(te());var Fe=Array.from(Array(50).keys()).map(e=>`${e}`),M=(e,r=[])=>{let t=[...e,c.Class.Generic];return r.length>0&&t.push(c.Class.NotClassed),[{filterToPropertyMapping:{property:"classes",isArray:!0},values:t.map(i=>i.toLowerCase()),isOr:!0},qi(r)]},C=(e,r=[])=>{let t=Object.values(c.Hero).filter(i=>i!==e&&!r.includes(i)).map(i=>i.toLowerCase());return[{filterToPropertyMapping:{property:"hero",isString:!0},values:t,excluded:!0,isOr:!0},{filterToPropertyMapping:{property:"specializations",isArray:!0},values:t,excluded:!0,isOr:!0}]},qi=e=>{let r=Object.values(c.Talent).filter(t=>!e.includes(t)).map(t=>t.toLowerCase());return{filterToPropertyMapping:{property:"talents",isArray:!0},values:r,excluded:!0}},ke=[c.Talent.Draconic],en=[c.Talent.Elemental,c.Talent.Earth,c.Talent.Ice,c.Talent.Lightning],tn=[c.Talent.Elemental,c.Talent.Earth,c.Talent.Ice],rn=[c.Talent.Elemental,c.Talent.Earth,c.Talent.Lightning],nn=[c.Talent.Elemental,c.Talent.Ice],an=[c.Talent.Elemental,c.Talent.Ice,c.Talent.Lightning],Qe=[c.Talent.Light],Ve=[c.Talent.Shadow],on=[...M([c.Class.Assassin]),...C(c.Hero.Arakni)],sn=[...M([c.Class.Ranger]),...C(c.Hero.Azalea)],ln=[...M([c.Class.Ninja]),...C(c.Hero.Benji)],cn=[...M([c.Class.Warrior],Qe),{filterToPropertyMapping:{property:"subtypes",isArray:!0,partialMatch:!0},values:["angel"],excluded:!0,isOr:!0},...C(c.Hero.Boltyn)],un=[...M([c.Class.Guardian]),...C(c.Hero.Bravo)],pn=[...M([c.Class.Guardian]),...C(c.Hero.Brevant)],dn=[...M([c.Class.Runeblade],rn),...C(c.Hero.Briar)],hn=[...M([c.Class.Runeblade],Ve),...C(c.Hero.Chane)],fn=[...M([c.Class.Mechanologist]),...C(c.Hero.Dash)],Ue=[...M([c.Class.Mechanologist]),...C(c.Hero.DataDoll)],ir=[...M([c.Class.Warrior]),...C(c.Hero.Dorinthea)],gn=[...M([c.Class.Illusionist],ke),...C(c.Hero.Dromai,[c.Hero.Fai])],mn=[...M([c.Class.Warrior,c.Class.Wizard],ke),{filterToPropertyMapping:{property:"pitch",isNumber:!0},values:["0","2","3"],cardTypes:[c.Type.Action,c.Type.AttackReaction,c.Type.DefenseReaction,c.Type.Instant,c.Type.Mentor,c.Type.Resource],excluded:!0,isOr:!0},{filterToPropertyMapping:{property:"types",isArray:!0,partialMatch:!0},values:["hero","mentor"],excluded:!0,isOr:!0},...C(c.Hero.Emperor)],yn=[...M([c.Class.Ninja],ke),...C(c.Hero.Fai,[c.Hero.Dromai])],nr=[...M([c.Class.Merchant]),...C(c.Hero.GenisWotchuneed)],vn=[...M([c.Class.Ninja]),...C(c.Hero.Ira)],ar=[...M([c.Class.Wizard],nn),...C(c.Hero.Iyslander)],bn=[...M([c.Class.Wizard])],Mn=[...M([c.Class.Warrior]),...C(c.Hero.Kassai)],An=[...M([c.Class.Ninja]),...C(c.Hero.Katsu)],Cn=[...M([c.Class.Merchant]),...C(c.Hero.Kavdaen)],Fn=[...M([c.Class.Brute]),...C(c.Hero.Kayo)],kn=[...M([c.Class.Brute],Ve),...C(c.Hero.Levia)],Tn=[...M([c.Class.Ranger],an),...C(c.Hero.Lexi)],xn=[...M([c.Class.Bard]),...C(c.Hero.Melody)],Sn=[...M([c.Class.Guardian],tn),...C(c.Hero.Oldhim)],Ln=[...M([c.Class.Illusionist],Qe),...C(c.Hero.Prism)],Pn=[...M([c.Class.Brute]),...C(c.Hero.Rhinar)],wn=[...M([c.Class.Ranger]),...C(c.Hero.Riptide)],In=[...M([c.Class.Merchant]),...C(c.Hero.Ruudi)],_n=[{filterToPropertyMapping:{property:"classes",isArray:!0},values:["generic"],isOr:!0}],Bn=[...M([c.Class.Guardian],en),...C(c.Hero.Bravo)],Rn=[...M([c.Class.Adjudicator],ke),...C(c.Hero.Taipanis)],En=[...M([]),...C(c.Hero.Taylor)],or=[...M([c.Class.Mechanologist]),...C(c.Hero.ProfessorTeklovossen)],Dn=[...M([c.Class.Mechanologist]),...C(c.Hero.Teklovossen)],On=[...M([c.Class.Adjudicator],Qe),...C(c.Hero.Theryon)],Nn=[...M([c.Class.Assassin]),...C(c.Hero.Uzuri)],zn=[...M([c.Class.Guardian]),...C(c.Hero.Valda)],$n=[...M([c.Class.Runeblade]),...C(c.Hero.Viserai)],Hn=[...M([c.Class.Runeblade],Ve),...C(c.Hero.Vynnset)],Wn=[...M([c.Class.Bard]),...C(c.Hero.Yorick)],jn=[...M([c.Class.Guardian]),...C(c.Hero.Yoji)],Gn=[{filterToPropertyMapping:{property:"restrictedFormats",isArray:!0},values:["blitz"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"]}],sr=[{filterToPropertyMapping:{property:"restrictedFormats",isArray:!0},values:["blitz (living legend)"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"]}],Kn=[{filterToPropertyMapping:{property:"rarities",isArray:!0},values:["super rare","majestic","legendary","fabled"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"]}],be=[{filterToPropertyMapping:{property:"restrictedFormats",isArray:!0},values:["classic constructed"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"],excluded:!0}],ne=[{filterToPropertyMapping:{property:"restrictedFormats",isArray:!0},values:["classic constructed (living legend)"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"],excluded:!0}],Un=[{filterToPropertyMapping:{property:"restrictedFormats",isArray:!0},values:["commoner"],excluded:!0},{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"]}],Ye=[{filterToPropertyMapping:{property:"young",isBoolean:!0},values:[],cardTypes:["hero"]}],se={blitz:Gn,"blitz ll":sr,"blitz living legend":sr,clash:Kn,cc:be,classic:be,"classic constructed":be,ll:ne,"living legend":ne,"cc ll":ne,"ll cc":ne,"classic constructed ll":ne,"classic constructed living legend":ne,constructed:be,commoner:Un,upf:Ye,ultimate:Ye,"ultimate pit fight":Ye,arakni:on,azalea:sn,benji:ln,boltyn:cn,bravo:un,brevant:pn,briar:dn,chane:hn,dash:fn,data:Ue,"data doll":Ue,datadoll:Ue,dori:ir,dorinthea:ir,dromai:gn,emperor:mn,fai:yn,genis:nr,geniswotchuneed:nr,ira:vn,iyslander:ar,islander:ar,kano:bn,kassai:Mn,katsu:An,kavdaen:Cn,kayo:Fn,levia:kn,lexi:Tn,melody:xn,oldhim:Sn,prism:Ln,professor:or,professorteklovossen:or,rhinar:Pn,riptide:wn,ruudi:In,shiyana:_n,starvo:Bn,taipanis:Rn,taylor:En,teklovossen:Dn,theryon:On,uzuri:Nn,valda:zn,viserai:$n,vynnset:Hn,yorick:Wn,yoji:jn},Me=["common","rare","super rare","majestic","legendary","fabled"],Yn=(e,r,t)=>{let i=[];if(!r)i.push(...e);else for(let n of e)switch(r){case">=":let a=!1;for(let u of Me)a?i.push(u):u===n&&(a=!0,i.push(u));break;case">":let s=!1;for(let u of Me)s?i.push(u):u===n&&(s=!0);break;case"<=":let o=!1;for(let u of Me.slice().reverse())o?i.push(u):u===n&&(o=!0,i.push(u));break;case"<":let l=!1;for(let u of Me.slice().reverse())l?i.push(u):u===n&&(l=!0);break;default:break}return{filterToPropertyMapping:{property:"rarities",isArray:!0},isOr:!0,values:i,excluded:t}},Qn=(e,r)=>{let t=[];for(let i of e)if(se[i]){let n=se[i];for(let a of n){let s=de({},a);r&&!a.filterToPropertyMapping.isString&&(s.excluded=!a.excluded),t.push(s)}}return t},Je=(e,r,t,i)=>{let n=[];return qn(r)?n.push(...Qn(t,e)):ta(r)&&n.push(Yn(t,i,e)),n},ae=[{filterToPropertyMapping:{property:"cost",isNumber:!0},values:Fe,excluded:!0},{filterToPropertyMapping:{property:"specialCost",isString:!0,partialMatch:!0},values:["*","x"],excluded:!0},{filterToPropertyMapping:{property:"types",isArray:!0,partialMatch:!0},values:["equipment","hero","placeholder","token","weapon"],excluded:!0}],H=[{filterToPropertyMapping:{property:"defense",isNumber:!0},values:Fe,excluded:!0},{filterToPropertyMapping:{property:"specialDefense",isString:!0,partialMatch:!0},values:["*","x"],excluded:!0},{filterToPropertyMapping:{property:"types",isArray:!0,partialMatch:!0},values:["hero","placeholder","token","weapon"],excluded:!0}],Ae=[{filterToPropertyMapping:{property:"pitch",isNumber:!0},excluded:!0,values:Fe},{filterToPropertyMapping:{property:"types",isArray:!0,partialMatch:!0},values:["equipment","hero","placeholder","token","weapon"],excluded:!0},{filterToPropertyMapping:{property:"isCardBack",isBoolean:!0},values:["true"],excluded:!0}],Q=[{filterToPropertyMapping:{property:"power",isNumber:!0},excluded:!0,values:Fe},{filterToPropertyMapping:{property:"specialPower",isString:!0,partialMatch:!0},values:["*","x"],excluded:!0},{filterToPropertyMapping:{property:"types",isArray:!0,partialMatch:!0},values:["equipment","hero","placeholder","token"],excluded:!0}],Ce=[{filterToPropertyMapping:{property:"talents",isArray:!0},excluded:!0,values:Object.values(c.Talent).map(e=>e.toLowerCase())}],Vn={"!co":ae,"-co":ae,"!cost":ae,"-cost":ae,"!color":ae,"-color":ae,"!b":H,"-b":H,"!block":H,"-block":H,"!d":H,"-d":H,"!def":H,"-def":H,"!defense":H,"-defense":H,"!pitch":Ae,"-pitch":Ae,"!p":Ae,"-p":Ae,"!attack":Q,"-attack":Q,"!power":Q,"-power":Q,"!pwr":Q,"-pwr":Q,"!pow":Q,"-pow":Q,"!talents":Ce,"-talents":Ce,"!tal":Ce,"-tal":Ce},Xe=e=>{let r=[],t=Vn[e];return t&&r.push(...t),r},Jn=(e,r)=>[...se[e.toLowerCase()],...r?se[r.toLowerCase()]:[]],Xn=e=>{var r;return((r=se[e.toLowerCase().split(" ")[0]])==null?void 0:r.length)>0},Zn=["l","legal","hero"],qn=e=>Zn.includes(e),ea=["r","rarity"],ta=e=>ea.includes(e);var Ze={aa:["st:attack"],ab:['k:"arcane barrier"'],ar:['t:"attack reaction"'],dr:['t:"defense reaction"'],ga:['k:"go again"'],naa:["t:action","st:nonattack"],poppers:["!c:illusionist","st:attack","pwr:>=6","def:>=0"],popper:["!c:illusionist","st:attack","pwr:>=6","def:>=0"],sv:['k:"spellvoid"']};var Lr=[">=",">","<=","<"],Pr=["!","-"],qe={property:"artists",isArray:!0,partialMatch:!0},ra={property:"n/a"},lr={property:"classes",isArray:!0,partialMatch:!0},cr={property:"cost",specialProperty:"specialCost",isNumber:!0,partialMatch:!0},le={property:"defense",specialProperty:"specialDefense",isNumber:!0},ur={nestedProperty:"foiling",property:"printings",isArray:!0},pr={property:"fusions",isArray:!0},dr={property:"intellect",isNumber:!0},hr={property:"keywords",isArray:!0,partialMatch:!0},et={property:"n/a",isMeta:!0},fr={property:"life",isNumber:!0},gr={property:"name",isString:!0},tt={property:"pitch",isNumber:!0},Te={property:"power",specialProperty:"specialPower",isNumber:!0},mr={property:"n/a",isMeta:!0},ia={property:"n/a"},na={property:"n/a"},yr={property:"restrictedFormats",isArray:!0,partialMatch:!0},vr={property:"sets",isArray:!0,partialMatch:!0},xe={property:"specializations",isArray:!0,partialMatch:!0},br={property:"subtypes",isArray:!0},Mr={property:"types",isArray:!0},Ar={property:"talents",isArray:!0},aa={property:"functionalText",isString:!0,partialMatch:!0},oa={property:"typeText",isString:!0,partialMatch:!0},Se={nestedProperty:"treatment",property:"printings",isArray:!0},Le={a:qe,artist:qe,art:qe,attack:Te,b:le,block:le,c:lr,class:lr,chain:ra,co:cr,cost:cr,color:tt,d:le,def:le,defense:le,f:pr,fusion:pr,foil:ur,foiling:ur,i:dr,intellect:dr,k:hr,keyword:hr,l:et,legal:et,hero:et,li:fr,life:fr,n:gr,name:gr,p:tt,pitch:tt,pwr:Te,pow:Te,power:Te,r:mr,rarity:mr,referencedby:ia,references:na,rf:yr,restricted:yr,s:vr,set:vr,sp:xe,spec:xe,specialization:xe,specializations:xe,st:br,subtype:br,t:Mr,type:Mr,tal:Ar,talent:Ar,text:aa,treat:Se,treatment:Se,var:Se,variation:Se,x:oa},sa=[{text:A.Release.ClassicBattlesRhinarDorinthea.toLowerCase(),override:A.Release.ClassicBattlesRhinarDorinthea.toLowerCase().replaceAll(L,"")}],la=e=>{var n;let r=[],t=e.trim().toLowerCase();for(let{text:a,override:s}of sa)t.includes(a)&&(t=t.replace(a,s));if((n=ve(t))==null?void 0:n.card)r.push(t);else{let a=t.split(/[ ]+/),s="",o=0;for(let l of a)o===2&&(r.push(s.trim().replaceAll('"',"")),s="",o=0),o<2&&l.split('"').length===2?(s+=" "+l,o++):o===0&&s===""?r.push(l):o===1&&(s+=" "+l);o===2&&(r.push(s.trim().replaceAll('"',"")),s="",o=0)}return r},ca=[A.Hero.Emperor,A.Hero.Prism,A.Hero.Shiyana,A.Hero.Taylor],it=(e,r)=>{var p;let t=la(e),i=[];for(let f of t){let d=Ze[f];d?i.push(...d):i.push(f)}let n=[],a=[],s=[],o=[],l=[],u={isClash:!1,heroes:[]};for(let f of i)if(va(f)){let[d,m]=f.split(":"),{modifier:h,values:g,isAnd:v,isOr:k}=ma(m),{filterKey:y,excluded:x,isMeta:T}=ya(d);if(T){if(["rarity","r"].includes(y)&&(g=ga(g)),["legal","l","hero"].includes(y)){for(let F of ca)m.includes(F.toLowerCase())&&(u.heroes.includes(F)||u.heroes.push(F));m.includes("clash")&&(u.isClash=!0)}n.push(...Je(x,y,g,h))}else{if(["chain"].includes(y)){let F=I=>I.name.toLowerCase().replaceAll(L,""),S=g.map(I=>nt(I,r)).filter(I=>!!I).map(F),w=new Set(S);y="name",k=!0;let N=20,_=0,W=I=>{if(!I.types.includes(A.Type.Hero)){let O=F(I);w.add(O),S.includes(O)||S.push(O)}};for(let I of S){if(_>N)break;let{referencedBy:O,references:Z}=Pe(I,r);Z.forEach(W),_===0&&O.forEach(W),_++}g=Array.from(w)}else if(["referencedby","references"].includes(y)){let F=y,S=[...g].filter(w=>!!w);g=[],y="name",k=!0;for(let w of S){let{referencedBy:N,references:_}=Pe(w,r);["referencedby"].includes(F)?g.push(..._.map(({name:W})=>W.toLowerCase().replaceAll(L,""))):["references"].includes(F)&&g.push(...N.map(({name:W})=>W.toLowerCase().replaceAll(L,"")))}}else["foiling","foil"].includes(y)?(s=ha(g),g=s.map(F=>F.toLowerCase())):["treat","treatment","var","variation"].includes(y)?(l=fa(g),g=l.map(F=>F.toLowerCase())):["set","s"].includes(y)?(o=ua(g),g=o.map(F=>F.toLowerCase().replaceAll(L,""))):["pitch","p","color"].includes(y)&&(g=da(g));Le[y]&&n.push({filterToPropertyMapping:Le[y],values:g,isAnd:v,isOr:k,modifier:h,excluded:x})}}else if(f){let d=(p=ve(f))==null?void 0:p.card,m=Xe(f);d?a.push(`"${d.toLowerCase().replace(L,"")}"`):m&&m.length>0?n.push(...m):a.push(f.replace(L,""))}return{appliedFilters:n,attributes:{foilings:s,releases:o,treatments:l},keywords:a,specialConditions:u}},ua=e=>{let r=[];for(let t of e)r.push(...pa(t));return r},pa=e=>{let r=[],t=Object.values(A.Release).find(i=>i.toLowerCase().replaceAll(L,"")===e);if(t&&r.push(t),r.length===0){let i=A.setIdentifierToSetMappings[e];i&&r.push(i)}if(r.length===0){let i=Object.values(A.Release).filter(n=>n.toLowerCase().includes(e));i.length>0&&r.push(...i)}return r},rt={blue:3,yellow:2,red:1,white:0},da=e=>{let r=[];for(let t of e)rt[t]||rt[t]===0?r.push(rt[t].toString()):r.push(t);return r},Cr={r:A.Foiling.R,rf:A.Foiling.R,rainbow:A.Foiling.R,c:A.Foiling.C,cf:A.Foiling.C,cold:A.Foiling.C,g:A.Foiling.G,gf:A.Foiling.G,gold:A.Foiling.G},ha=e=>{let r=[];for(let t of e)Cr[t]&&r.push(Cr[t]);return r},Fr={aa:A.Treatment.AA,alt:A.Treatment.AA,"alt art":A.Treatment.AA,ab:A.Treatment.AB,"alt border":A.Treatment.AB,at:A.Treatment.AT,"alt text":A.Treatment.AT,ds:A.Treatment.DS,"double sided":A.Treatment.DS,ea:A.Treatment.EA,extended:A.Treatment.EA,"extended art":A.Treatment.EA,fa:A.Treatment.FA,full:A.Treatment.FA,"full art":A.Treatment.FA},fa=e=>{let r=[];for(let t of e)Fr[t]?r.push(Fr[t]):A.Treatment[t.toUpperCase()]&&r.push(A.Treatment[t.toUpperCase()]);return r},kr={c:"common",f:"fabled",l:"legendary",m:"majestic",v:"marvel",r:"rare",s:"super rare",t:"token"},ga=e=>{let r=[];for(let t of e)kr[t]?r.push(kr[t]):r.push(t);return r},ma=e=>{let r=[],t,i,n=Lr.find(a=>e.includes(a));if(n){let[,a]=e.split(n);Tr(a)?(t=!0,r.push(...a.trim().split("+"))):xr(a)?(i=!0,r.push(...a.trim().split(","))):r.push(a.trim())}else Tr(e)?(t=!0,r.push(...e.trim().split("+"))):xr(e)?(i=!0,r.push(...e.trim().split(","))):e.startsWith('"')&&e.endsWith('"')?r.push(e.trim().replaceAll('"',"")):r.push(e.trim());return{modifier:n,values:r,isAnd:t,isOr:i}},ya=e=>{let r=ba(e);if(r){let[,t]=e.split(r);return{excluded:!0,filterKey:t,isMeta:Sr(t)}}else return{excluded:!1,filterKey:e,isMeta:Sr(e)}},va=e=>e.indexOf(":")>=0,Tr=e=>e.indexOf("+")>=0,xr=e=>e.indexOf(",")>=0,Sr=e=>{var r;return!!((r=Le[e])!=null&&r.isMeta)},ba=e=>{var r;return(r=Pr.find(t=>e.includes(t)))==null?void 0:r.slice(0,1)};var B=ee(te()),wr={artists:["Hoodwill"],cardIdentifier:"fangs-a-lot-blue",classes:[B.Class.Generic],defaultImage:"FNG000",functionalText:"If Fangs A Lot is put into your banished zone from your graveyard, instead put it into your hand.",printings:[{identifier:"FNG000",image:"FNG000",set:B.Release.Promos},{identifier:"FNG000",image:"FNG000_Marvel",set:B.Release.Promos,treatment:B.Treatment.FA}],name:"Fangs A Lot",rarities:[B.Rarity.Rare],rarity:B.Rarity.Rare,sets:[B.Release.Promos],setIdentifiers:["FNG000"],specialImage:"FNG000_Marvel",subtypes:[B.Subtype.Attack],types:[B.Type.Action],typeText:"Generic Action - Attack"},Ir=[{keyword:wr.name.toLowerCase(),card:wr}];var ot=class{constructor(r){this.search=(r,t)=>{let i,{appliedFilters:n,attributes:a,keywords:s,specialConditions:o}=it(r,this.cards),l=s.join(" "),u=t?Ir.filter(h=>h.keyword===l):[];if(u.length>0?i=u.map(({card:h})=>h):s.length?i=this.fuse.search(l).map(h=>h.item):i=[...this.cards],n.length&&(i=i.filter(h=>h&&Br(h,n,o)),n.some(({excluded:h,values:g})=>!h&&g.includes(P.Format.ClassicConstructed.toLowerCase()))&&(i=i.filter(h=>!h.young)),n.some(({excluded:h,values:g})=>!h&&(g.includes(P.Format.Blitz.toLowerCase())||g.includes(P.Format.Commoner.toLowerCase())))&&(i=i.filter(h=>{let{types:g,young:v}=h;return!(g.includes(P.Type.Hero)&&!v)}))),s.length===0){let h="";if(a.releases.length===1)try{let g=a.releases[0];h=P.setToSetIdentifierMappings[g][0].toUpperCase()}catch(g){console.error("Error getting set identifier from search",g)}h?i.sort((g,v)=>{var x,T;let k=(x=g.setIdentifiers.find(F=>F.includes(h)))==null?void 0:x.replace(h,""),y=(T=v.setIdentifiers.find(F=>F.includes(h)))==null?void 0:T.replace(h,"");return k&&y?k.localeCompare(y):-1}):i.sort((g,v)=>g.name===v.name?`${g.pitch}`.localeCompare(`${v.pitch}`):g.name.localeCompare(v.name))}let p,{foilings:f,releases:d,treatments:m}=a;return(f.length>0||d.length>0||m.length>0)&&(p=i.map(h=>{let g=h.printings.filter(v=>{let k=f.length===0||f.includes(v.foiling),y=d.length===0||d.includes(v.set),x=m.length===0||m.includes(v.treatment);return!!v.image&&k&&y&&x});return de({matchingPrintings:g},h)})),{appliedFilters:n,attributes:a,keywords:s,searchResults:p||i}};let t={getFn:(i,n)=>{let a=at.default.config.getFn(i,n);return a&&(Array.isArray(a)?a.map(s=>s.replace(L,"")):a.replace(L,""))},ignoreLocation:!0,includeScore:!0,keys:[{name:"name",weight:10},{name:"functionalText",weight:6},{name:"setIdentifiers",weight:2},{name:"typeText",weight:6}],threshold:.1,useExtendedSearch:!0};this.cards=[...r],this.fuse=new at.default([...r],t)}},_r=ot,Br=(e,r,t)=>{let i=!0;for(let n of r){let{isNumber:a,isString:s,isArray:o,isBoolean:l,property:u}=n.filterToPropertyMapping;if((a&&!Ma(e,n)||s&&!Aa(e,n)||o&&!Ca(e,n)||l&&!Fa(e,n))&&(i=!1),t.isClash&&["rarities","restrictedFormats"].includes(u)){let h=[P.Rarity.SuperRare,P.Rarity.Majestic,P.Rarity.Legendary,P.Rarity.Fabled].some(x=>e.rarities.includes(x)),g=!1;for(let{cardIdentifiers:x,heroes:T}of lt)for(let F of t.heroes)T.includes(F)&&x.includes(e.cardIdentifier)&&(g=!0);let v=!!e.specializations&&e.specializations.length>0||g,k=[P.Type.Mentor,P.Type.Weapon].some(x=>e.types.includes(x)),y=rr.includes(e.name);!i&&!y&&(v||k)&&h&&(i=!0),y&&(i=!1)}!i&&t.heroes.includes(P.Hero.Shiyana)&&["classes"].includes(u)&&e.specializations&&e.specializations.length>0&&(i=!0);let d=e.types.includes(P.Type.Equipment);if(!i&&t.heroes.includes(P.Hero.Taylor)&&d&&d&&(i=!0),!i)break}return i},Ma=(e,r)=>{var t;if(we(r,e)){let{values:i,modifier:n,excluded:a,filterToPropertyMapping:{partialMatch:s}}=r,o=st(e,r);if(o!=null&&!isNaN(o))if(o=parseInt(o),n)switch(n){case">=":let l=i==null?void 0:i.some(d=>o>=parseInt(d));return a?!l:l;case">":let u=i==null?void 0:i.some(d=>o>parseInt(d));return a?!u:u;case"<=":let p=i==null?void 0:i.some(d=>o<=parseInt(d));return a?!p:p;case"<":let f=i==null?void 0:i.some(d=>o<parseInt(d));return a?!f:f;default:return!1}else{let l=i==null?void 0:i.some(u=>o===parseInt(u));return a?!l:l}else{let l=(t=Ta(e,r))==null?void 0:t.toLowerCase(),u=s?i==null?void 0:i.some(p=>l==null?void 0:l.includes(p)):i==null?void 0:i.some(p=>l===p);return a?!u:u}}else return!0},Aa=(e,r)=>{var t;if(we(r,e)){let{values:i,isAnd:n,excluded:a,filterToPropertyMapping:{partialMatch:s}}=r,o=(t=st(e,r))==null?void 0:t.replaceAll(L,"");if(s){let l=n?i==null?void 0:i.every(u=>o==null?void 0:o.toLowerCase().includes(u)):i==null?void 0:i.some(u=>o==null?void 0:o.toLowerCase().includes(u));return a?!l:l}else{let l=n?i==null?void 0:i.every(u=>(o==null?void 0:o.toLowerCase())===u):i==null?void 0:i.some(u=>(o==null?void 0:o.toLowerCase())===u);return a?!l:l}}else return!0},Ca=(e,r)=>{if(we(r,e)){let{values:t,isAnd:i,excluded:n,filterToPropertyMapping:{partialMatch:a}}=r,s=ka(e,r).map(o=>o==null?void 0:o.replaceAll(L,""));if(a){let o=i?t.every(u=>s==null?void 0:s.some(p=>p==null?void 0:p.toLowerCase().includes(u))):t.some(u=>s==null?void 0:s.some(p=>p==null?void 0:p.toLowerCase().includes(u))),l=s.length===0;return n?!o||l:o}else{let o=i?t.every(l=>s==null?void 0:s.some(u=>(u==null?void 0:u.toLowerCase())===l)):t.some(l=>s==null?void 0:s.some(u=>(u==null?void 0:u.toLowerCase())===l));return n?!o:o}}else return!0},Fa=(e,r)=>{if(we(r,e)){let{excluded:t}=r,i=st(e,r);return t?!i:i}else return!0},st=(e,r)=>{let{filterToPropertyMapping:t}=r;return e[t.property]},ka=(e,r)=>{let{filterToPropertyMapping:{nestedProperty:t,property:i}}=r,n=e[i]||[];return t?n.map(a=>a[t]).filter(a=>!!a):n},Ta=(e,r)=>{let{filterToPropertyMapping:t}=r;return e[t.specialProperty]},we=({cardTypes:e},{types:r,subtypes:t})=>!e||(e==null?void 0:e.some(i=>r.map(n=>n.toLowerCase()).includes(i.toLowerCase())||t.map(n=>n.toLowerCase()).includes(i.toLowerCase())));var ct=ee(te()),lt=[{heroes:[ct.Hero.Emperor],cardIdentifiers:["command-and-conquer-red"]},{heroes:[ct.Hero.Prism],cardIdentifiers:["figment-of-erudition-yellow","figment-of-judgment-yellow","figment-of-protection-yellow","figment-of-ravages-yellow","figment-of-rebirth-yellow","figment-of-tenacity-yellow","figment-of-triumph-yellow","figment-of-war-yellow"]}];var nt=(e,r)=>{let t=r.find(i=>i.name.toLowerCase().replace(L,"")===e);return t||(t=r.find(i=>i.name.toLowerCase().replace(L,"").includes(e))),t};var xa={"Dawnblade, Resplendent":"Dawnblade"},Rr=e=>xa[e.name]||e.name,Er=e=>{var r;return(r=e.functionalText)==null?void 0:r.replaceAll(e.name,"")},Pe=(e,r)=>{let t=r.find(i=>i.name.toLowerCase().replace(L,"")===e);return t||(t=r.find(i=>i.name.toLowerCase().replace(L,"").includes(e))),Dr(t,r)},Dr=(e,r)=>{let t=[],i=[],n=[];if(e){let a=[],s=[],o=Rr(e);for(let l of r){let u=Rr(l),p=o===u,f=e.pitch!==l.pitch;if(p&&f)t.push(l);else if(!p){let d=Er(l),m=d==null?void 0:d.includes(o),h=Er(e),g=h==null?void 0:h.includes(u);m&&a.push(l),g&&s.push(l)}}for(let l of a)i.push(l);for(let l of s){let u=l.name;o!==u&&!s.some(p=>{let f=p.name;return f!==u&&f.includes(u)})&&n.push(l)}}return{otherPitches:t,referencedBy:i,references:n}};0&&(module.exports={PUNCTUATION,abbreviations,availableExclusions,availableModifiers,clashSpecializationOverrides,filterCard,filtersToCardPropertyMappings,getAbbreviation,getAbbreviationByCard,getCardByName,getDeckFilters,getExcludedMetaFilters,getKeywordsAndAppliedFiltersFromText,getMetaFilters,getRelatedCards,getRelatedCardsByName,heroHasFilters,shorthands});
@@ -0,0 +1,7 @@
1
+ import { Card } from "@flesh-and-blood/types";
2
+ interface Meme {
3
+ keyword: string;
4
+ card: Card;
5
+ }
6
+ export declare const memes: Meme[];
7
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import { Format, Hero } from "@flesh-and-blood/types";
2
+ interface AppliedFilter {
3
+ filterToPropertyMapping: FilterToPropertyMapping;
4
+ values: string[];
5
+ isAnd?: boolean;
6
+ isOr?: boolean;
7
+ isAdditional?: boolean;
8
+ modifier?: Modifier;
9
+ excluded?: boolean;
10
+ cardTypes?: string[];
11
+ }
12
+ interface FilterToPropertyMapping {
13
+ property: string;
14
+ exclusion?: Exclusion;
15
+ isArray?: boolean;
16
+ isNumber?: boolean;
17
+ isString?: boolean;
18
+ isBoolean?: boolean;
19
+ isMeta?: boolean;
20
+ modifier?: Modifier;
21
+ partialMatch?: boolean;
22
+ specialProperty?: string;
23
+ }
24
+ type Exclusion = "!" | "-";
25
+ type Modifier = ">=" | ">" | "<=" | "<";
26
+ export declare const getMetaFilters: (excluded: boolean, filterKey: string, values: string[], modifier: string) => AppliedFilter[];
27
+ export declare const getExcludedMetaFilters: (filterKey: string) => AppliedFilter[];
28
+ export declare const getDeckFilters: (hero: Hero, format?: Format) => AppliedFilter[];
29
+ export declare const heroHasFilters: (hero: Hero) => boolean;
30
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Card } from "@flesh-and-blood/types";
2
+ export declare const getRelatedCardsByName: (name: string, cards: Card[]) => {
3
+ otherPitches: Card[];
4
+ referencedBy: Card[];
5
+ references: Card[];
6
+ };
7
+ export declare const getRelatedCards: (card: Card, cards: Card[]) => {
8
+ otherPitches: Card[];
9
+ referencedBy: Card[];
10
+ references: Card[];
11
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { Card, Foiling, Printing, Release, Treatment } from "@flesh-and-blood/types";
2
+ import { AppliedFilter, SpecialConditions } from "./filters";
3
+ export interface SearchCard extends Card {
4
+ matchingPrintings?: Printing[];
5
+ }
6
+ declare class Search {
7
+ private cards;
8
+ private fuse;
9
+ constructor(cards: Card[]);
10
+ search: (text: string, includeMemes?: boolean) => {
11
+ appliedFilters: AppliedFilter[];
12
+ keywords: string[];
13
+ attributes: {
14
+ foilings: Foiling[];
15
+ releases: Release[];
16
+ treatments: Treatment[];
17
+ };
18
+ searchResults: SearchCard[];
19
+ };
20
+ }
21
+ export default Search;
22
+ export declare const filterCard: (card: Card, appliedFilters: AppliedFilter[], specialConditions: SpecialConditions) => boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const shorthands: {
2
+ [key: string]: string[];
3
+ };
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@flesh-and-blood/search",
3
+ "description": "TypeScript search engine for Flesh and Blood cards",
4
+ "version": "0.0.5",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "prebuild": "rm -rf dist",
9
+ "build": "esbuild src/index.ts --outdir=dist --external:*.test.ts --external:fab-cards --bundle --minify --platform=node --target=es6",
10
+ "postbuild": "tsc --declaration",
11
+ "test": "jest",
12
+ "full": "npm run build && npm test"
13
+ },
14
+ "dependencies": {
15
+ "@flesh-and-blood/types": "^0.0.5",
16
+ "fuse.js": "^6.6.2"
17
+ },
18
+ "devDependencies": {
19
+ "@flesh-and-blood/cards": "^0.0.5",
20
+ "@types/jest": "^29.5.4",
21
+ "@types/node": "^20.6.0",
22
+ "esbuild": "^0.19.3",
23
+ "esbuild-jest": "^0.5.0",
24
+ "jest": "^29.7.0",
25
+ "ts-node": "^10.9.1",
26
+ "typescript": "^5.2.2"
27
+ },
28
+ "files": [
29
+ "/dist"
30
+ ],
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/fabrary/fab-cards.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/fabrary/fab-cards/issues"
40
+ },
41
+ "homepage": "https://github.com/fabrary/fab-cards#readme",
42
+ "author": "Phillip Manwaring",
43
+ "license": "MIT",
44
+ "keywords": [
45
+ "Flesh and Blood",
46
+ "FAB",
47
+ "FABTCG"
48
+ ],
49
+ "gitHead": "4a014c417ed78d98bc0c2be9739567dd2086f5ca"
50
+ }