pokenode-ts 2.3.0 → 2.3.1

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/lib/index.d.cts CHANGED
@@ -1417,6 +1417,8 @@ interface GenerationIISprites {
1417
1417
  }
1418
1418
  /** Crystal sprites. */
1419
1419
  interface Crystal {
1420
+ /** The animated sprites of this Pokémon. */
1421
+ animated: CrystalAnimated;
1420
1422
  /** The default depiction of this Pokémon from the back in battle. */
1421
1423
  back_default: string | null;
1422
1424
  /** The shiny depiction of this Pokémon from the back in battle. */
@@ -1434,6 +1436,13 @@ interface Crystal {
1434
1436
  /** The transparent depiction of this Pokémon from the front in battle. */
1435
1437
  front_transparent: string | null;
1436
1438
  }
1439
+ /** Animated Crystal sprites. */
1440
+ interface CrystalAnimated {
1441
+ /** The default depiction of this Pokémon from the front in battle. */
1442
+ front_default: string | null;
1443
+ /** The shiny depiction of this Pokémon from the front in battle. */
1444
+ front_shiny: string | null;
1445
+ }
1437
1446
  /** Gold sprites of this Pokémon. */
1438
1447
  interface Gold {
1439
1448
  /** The default depiction of this Pokémon from the back in battle. */
@@ -1568,6 +1577,8 @@ interface Platinum {
1568
1577
  interface GenerationVSprites {
1569
1578
  /** Black-white sprites of this Pokémon. */
1570
1579
  "black-white": BlackWhite;
1580
+ /** Menu icons of this Pokémon. */
1581
+ icons: GenerationVIcons;
1571
1582
  }
1572
1583
  /** Black/White sprites. */
1573
1584
  interface BlackWhite {
@@ -1609,6 +1620,18 @@ interface Animated {
1609
1620
  /** The shiny female depiction of this Pokémon from the back in battle. */
1610
1621
  front_shiny_female: string | null;
1611
1622
  }
1623
+ /** Generation-V menu icons. */
1624
+ interface GenerationVIcons {
1625
+ /** The animated menu icon of this Pokémon. */
1626
+ animated: GenerationVAnimatedIcons;
1627
+ /** The menu icon of this Pokémon. */
1628
+ front_default: string | null;
1629
+ }
1630
+ /** Animated Generation-V menu icons. */
1631
+ interface GenerationVAnimatedIcons {
1632
+ /** The animated menu icon of this Pokémon. */
1633
+ front_default: string | null;
1634
+ }
1612
1635
  /** Generation-VI Sprites. */
1613
1636
  interface GenerationVISprites {
1614
1637
  /** Omegaruby-Alphasapphire sprites of this Pokémon. */
@@ -1764,6 +1787,8 @@ interface PokemonForm {
1764
1787
  * having a specific ability. Empty for forms that are not triggered.
1765
1788
  */
1766
1789
  trigger_conditions: PokemonFormCondition[];
1790
+ /** The flavor text of this Pokémon form, in every language it is published in. */
1791
+ flavor_text_entries: FlavorText[];
1767
1792
  }
1768
1793
  /** A condition that causes a Pokémon to take on a particular form. */
1769
1794
  interface PokemonFormCondition {
@@ -3889,6 +3914,7 @@ declare const MOVE_AILMENTS: {
3889
3914
  readonly INGRAIN: 21;
3890
3915
  readonly SILENCE: 24;
3891
3916
  readonly TAR_SHOT: 42;
3917
+ readonly PROTECT: 43;
3892
3918
  };
3893
3919
  declare const MOVE_BATTLE_STYLES: {
3894
3920
  readonly ATTACK: 1;
@@ -5646,5 +5672,5 @@ declare const defensiveProfile: (types: readonly Type[], defending: readonly Nam
5646
5672
  */
5647
5673
  declare const defensiveProfileFrom: (defending: readonly Type[]) => Record<TypeName, number>;
5648
5674
  //#endregion
5649
- export { APIResource, APIResourceList, Ability, AbilityEffectChange, AbilityFlavorText, AbilityPokemon, Animated, AwesomeName, BASE_URL, BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS, Berry, BerryClient, BerryFirmness, BerryFlavor, BerryFlavorMap, BlackWhite, BrilliantDiamondShiningPearl, index_d_exports as CONSTANTS, CONTEST_TYPES, CURRENCIES, type CacheStore, ChainLink, Characteristic, type ClientOptions, type ClientStats, ContestClient, ContestComboDetail, ContestComboSets, ContestEffect, ContestFlavorText, ContestName, ContestType, Crystal, Currency, CurrencyClient, Description, DiamondPearl, DreamWorld, EGG_GROUPS, ENCOUNTER_CONDITIONS, ENCOUNTER_CONDITION_VALUES, ENCOUNTER_METHODS, ENDPOINTS, EVOLUTION_TRIGGERS, Effect, EggGroup, Emerald, Encounter, EncounterClient, EncounterCondition, EncounterConditionValue, EncounterMethod, EncounterMethodRate, EncounterPokemonDetail, EncounterVersionDetails, Endpoint, type EtagEntry, EtagStore, type EtagStoreOptions, EvolutionChain, EvolutionClient, EvolutionDetail, type EvolutionRequirement, type EvolutionStep, EvolutionTimeOfDay, EvolutionTrigger, EvolutionTriggerName, type FetchLike, FireredLeafgreen, type FlattenOptions, FlavorBerryMap, FlavorText, type FormatOptions, GENDERS, GENERATIONS, GROWTH_RATES, GameClient, Gender, Generation, GenerationGameIndex, GenerationIIISprites, GenerationIIITypeSprites, GenerationIISprites, GenerationISprites, GenerationIVSprites, GenerationIVTypeSprites, GenerationIXSprites, GenerationIXTypeSprites, GenerationName, type GenerationScope, GenerationVIIISprites, GenerationVIIITypeSprites, GenerationVIISprites, GenerationVIITypeSprites, GenerationVISprites, GenerationVITypeSprites, GenerationVSprites, GenerationVTypeSprites, GenerationViiIcons, GenerationViiiIcons, Genus, Gold, GrowthRate, GrowthRateExperienceLevel, HeartgoldSoulsilver, Home, ITEM_ATTRIBUTES, ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS, Item, ItemAttribute, ItemCategory, ItemClient, ItemFlingEffect, ItemHolderPokemon, ItemHolderPokemonVersionDetail, ItemPocket, ItemPrice, ItemSprites, LANGUAGES, Language, type ListFn, type ListMethodName, type ListPage, type LocalizeOptions, type Localized, Location, LocationArea, LocationAreaEncounter, LocationClient, type LogCancelledPayload, type LogErrorPayload, type LogRequestPayload, type LogResponsePayload, type LogRetryPayload, type Logger, MOVE_AILMENTS, MOVE_BATTLE_STYLES, MOVE_CATEGORIES, MOVE_DAMAGE_CLASSES, MOVE_LEARN_METHODS, MOVE_TARGETS, Machine, MachineClient, MachineVersionDetail, MainClient, MemoryCache, type MemoryCacheOptions, Move, MoveAilment, MoveBattleStyle, MoveBattleStylePreference, MoveCategory, MoveClient, MoveDamageClass, MoveFlavorText, MoveLearnMethod, MoveMetaData, MoveStatAffect, MoveStatAffectSets, MoveStatChange, MoveTarget, NATURES, Name, NamedAPIResource, NamedAPIResourceList, Nature, NaturePokeathlonStatAffect, NaturePokeathlonStatAffectSets, NatureStatAffectSets, NatureStatChange, OfficialArtwork, OmegarubyAlphasapphire, OtherPokemonSprites, PAL_PARK_AREAS, POKEATHLON_STATS, POKEDEXES, POKEMON_COLORS, POKEMON_HABITATS, POKEMON_SHAPES, type PaginateOptions, PalParkArea, PalParkEncounterArea, PalParkEncounterSpecies, PastMoveStatValues, Platinum, PokeathlonStat, Pokedex, Pokemon, PokemonAbility, PokemonClient, PokemonColor, PokemonCries, PokemonEncounter, PokemonEntry, PokemonForm, PokemonFormCondition, PokemonFormGenerationVIIISprites, PokemonFormSprites, PokemonFormVersionSprites, PokemonHabitat, PokemonHeldItem, PokemonHeldItemVersion, PokemonMove, PokemonMoveVersion, PokemonPastAbility, PokemonPastAbilitySlot, PokemonPastStat, PokemonPastType, PokemonShape, PokemonSpecies, PokemonSpeciesDexEntry, PokemonSpeciesGender, PokemonSpeciesVariety, type PokemonSpriteOptions, PokemonSprites, PokemonStat, PokemonType, PokenodeError, REGIONS, REQUIREMENT_PHRASES, RedBlue, Region, type RequestScope, type RequirementPhrases, type ResolveOptions, type ResourceLink, type ResourceNamer, type RetryOptions, RubySapphire, STATS, ScarletViolet, Showdown, Silver, type SpriteVariant, Stat, SuperContestEffect, TYPES, Type, TypeGameSprites, TypeName, TypePokemon, TypeRelations, TypeRelationsPast, TypeSprites, UltraSunUltraMoon, UtilityClient, VERSIONS, VERSION_GROUPS, VerboseEffect, Version, VersionEncounterDetail, VersionGameIndex, VersionGroup, VersionGroupFlavorText, VersionSprites, WebStorageCache, type WebStorageCacheOptions, type WebStorageLike, XY, Yellow, consoleLogger, defensiveProfile, defensiveProfileFrom, effectiveness, flattenChain, formatRequirements, getPokemonSpriteUrl, localize, localizeAll, pathTo, relationsFor, requirementPhrases, requirementsOf, resourceId };
5675
+ export { APIResource, APIResourceList, Ability, AbilityEffectChange, AbilityFlavorText, AbilityPokemon, Animated, AwesomeName, BASE_URL, BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS, Berry, BerryClient, BerryFirmness, BerryFlavor, BerryFlavorMap, BlackWhite, BrilliantDiamondShiningPearl, index_d_exports as CONSTANTS, CONTEST_TYPES, CURRENCIES, type CacheStore, ChainLink, Characteristic, type ClientOptions, type ClientStats, ContestClient, ContestComboDetail, ContestComboSets, ContestEffect, ContestFlavorText, ContestName, ContestType, Crystal, CrystalAnimated, Currency, CurrencyClient, Description, DiamondPearl, DreamWorld, EGG_GROUPS, ENCOUNTER_CONDITIONS, ENCOUNTER_CONDITION_VALUES, ENCOUNTER_METHODS, ENDPOINTS, EVOLUTION_TRIGGERS, Effect, EggGroup, Emerald, Encounter, EncounterClient, EncounterCondition, EncounterConditionValue, EncounterMethod, EncounterMethodRate, EncounterPokemonDetail, EncounterVersionDetails, Endpoint, type EtagEntry, EtagStore, type EtagStoreOptions, EvolutionChain, EvolutionClient, EvolutionDetail, type EvolutionRequirement, type EvolutionStep, EvolutionTimeOfDay, EvolutionTrigger, EvolutionTriggerName, type FetchLike, FireredLeafgreen, type FlattenOptions, FlavorBerryMap, FlavorText, type FormatOptions, GENDERS, GENERATIONS, GROWTH_RATES, GameClient, Gender, Generation, GenerationGameIndex, GenerationIIISprites, GenerationIIITypeSprites, GenerationIISprites, GenerationISprites, GenerationIVSprites, GenerationIVTypeSprites, GenerationIXSprites, GenerationIXTypeSprites, GenerationName, type GenerationScope, GenerationVAnimatedIcons, GenerationVIIISprites, GenerationVIIITypeSprites, GenerationVIISprites, GenerationVIITypeSprites, GenerationVISprites, GenerationVITypeSprites, GenerationVIcons, GenerationVSprites, GenerationVTypeSprites, GenerationViiIcons, GenerationViiiIcons, Genus, Gold, GrowthRate, GrowthRateExperienceLevel, HeartgoldSoulsilver, Home, ITEM_ATTRIBUTES, ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS, Item, ItemAttribute, ItemCategory, ItemClient, ItemFlingEffect, ItemHolderPokemon, ItemHolderPokemonVersionDetail, ItemPocket, ItemPrice, ItemSprites, LANGUAGES, Language, type ListFn, type ListMethodName, type ListPage, type LocalizeOptions, type Localized, Location, LocationArea, LocationAreaEncounter, LocationClient, type LogCancelledPayload, type LogErrorPayload, type LogRequestPayload, type LogResponsePayload, type LogRetryPayload, type Logger, MOVE_AILMENTS, MOVE_BATTLE_STYLES, MOVE_CATEGORIES, MOVE_DAMAGE_CLASSES, MOVE_LEARN_METHODS, MOVE_TARGETS, Machine, MachineClient, MachineVersionDetail, MainClient, MemoryCache, type MemoryCacheOptions, Move, MoveAilment, MoveBattleStyle, MoveBattleStylePreference, MoveCategory, MoveClient, MoveDamageClass, MoveFlavorText, MoveLearnMethod, MoveMetaData, MoveStatAffect, MoveStatAffectSets, MoveStatChange, MoveTarget, NATURES, Name, NamedAPIResource, NamedAPIResourceList, Nature, NaturePokeathlonStatAffect, NaturePokeathlonStatAffectSets, NatureStatAffectSets, NatureStatChange, OfficialArtwork, OmegarubyAlphasapphire, OtherPokemonSprites, PAL_PARK_AREAS, POKEATHLON_STATS, POKEDEXES, POKEMON_COLORS, POKEMON_HABITATS, POKEMON_SHAPES, type PaginateOptions, PalParkArea, PalParkEncounterArea, PalParkEncounterSpecies, PastMoveStatValues, Platinum, PokeathlonStat, Pokedex, Pokemon, PokemonAbility, PokemonClient, PokemonColor, PokemonCries, PokemonEncounter, PokemonEntry, PokemonForm, PokemonFormCondition, PokemonFormGenerationVIIISprites, PokemonFormSprites, PokemonFormVersionSprites, PokemonHabitat, PokemonHeldItem, PokemonHeldItemVersion, PokemonMove, PokemonMoveVersion, PokemonPastAbility, PokemonPastAbilitySlot, PokemonPastStat, PokemonPastType, PokemonShape, PokemonSpecies, PokemonSpeciesDexEntry, PokemonSpeciesGender, PokemonSpeciesVariety, type PokemonSpriteOptions, PokemonSprites, PokemonStat, PokemonType, PokenodeError, REGIONS, REQUIREMENT_PHRASES, RedBlue, Region, type RequestScope, type RequirementPhrases, type ResolveOptions, type ResourceLink, type ResourceNamer, type RetryOptions, RubySapphire, STATS, ScarletViolet, Showdown, Silver, type SpriteVariant, Stat, SuperContestEffect, TYPES, Type, TypeGameSprites, TypeName, TypePokemon, TypeRelations, TypeRelationsPast, TypeSprites, UltraSunUltraMoon, UtilityClient, VERSIONS, VERSION_GROUPS, VerboseEffect, Version, VersionEncounterDetail, VersionGameIndex, VersionGroup, VersionGroupFlavorText, VersionSprites, WebStorageCache, type WebStorageCacheOptions, type WebStorageLike, XY, Yellow, consoleLogger, defensiveProfile, defensiveProfileFrom, effectiveness, flattenChain, formatRequirements, getPokemonSpriteUrl, localize, localizeAll, pathTo, relationsFor, requirementPhrases, requirementsOf, resourceId };
5650
5676
  //# sourceMappingURL=index.d.cts.map
package/lib/index.d.ts CHANGED
@@ -1416,6 +1416,8 @@ interface GenerationIISprites {
1416
1416
  }
1417
1417
  /** Crystal sprites. */
1418
1418
  interface Crystal {
1419
+ /** The animated sprites of this Pokémon. */
1420
+ animated: CrystalAnimated;
1419
1421
  /** The default depiction of this Pokémon from the back in battle. */
1420
1422
  back_default: string | null;
1421
1423
  /** The shiny depiction of this Pokémon from the back in battle. */
@@ -1433,6 +1435,13 @@ interface Crystal {
1433
1435
  /** The transparent depiction of this Pokémon from the front in battle. */
1434
1436
  front_transparent: string | null;
1435
1437
  }
1438
+ /** Animated Crystal sprites. */
1439
+ interface CrystalAnimated {
1440
+ /** The default depiction of this Pokémon from the front in battle. */
1441
+ front_default: string | null;
1442
+ /** The shiny depiction of this Pokémon from the front in battle. */
1443
+ front_shiny: string | null;
1444
+ }
1436
1445
  /** Gold sprites of this Pokémon. */
1437
1446
  interface Gold {
1438
1447
  /** The default depiction of this Pokémon from the back in battle. */
@@ -1567,6 +1576,8 @@ interface Platinum {
1567
1576
  interface GenerationVSprites {
1568
1577
  /** Black-white sprites of this Pokémon. */
1569
1578
  "black-white": BlackWhite;
1579
+ /** Menu icons of this Pokémon. */
1580
+ icons: GenerationVIcons;
1570
1581
  }
1571
1582
  /** Black/White sprites. */
1572
1583
  interface BlackWhite {
@@ -1608,6 +1619,18 @@ interface Animated {
1608
1619
  /** The shiny female depiction of this Pokémon from the back in battle. */
1609
1620
  front_shiny_female: string | null;
1610
1621
  }
1622
+ /** Generation-V menu icons. */
1623
+ interface GenerationVIcons {
1624
+ /** The animated menu icon of this Pokémon. */
1625
+ animated: GenerationVAnimatedIcons;
1626
+ /** The menu icon of this Pokémon. */
1627
+ front_default: string | null;
1628
+ }
1629
+ /** Animated Generation-V menu icons. */
1630
+ interface GenerationVAnimatedIcons {
1631
+ /** The animated menu icon of this Pokémon. */
1632
+ front_default: string | null;
1633
+ }
1611
1634
  /** Generation-VI Sprites. */
1612
1635
  interface GenerationVISprites {
1613
1636
  /** Omegaruby-Alphasapphire sprites of this Pokémon. */
@@ -1763,6 +1786,8 @@ interface PokemonForm {
1763
1786
  * having a specific ability. Empty for forms that are not triggered.
1764
1787
  */
1765
1788
  trigger_conditions: PokemonFormCondition[];
1789
+ /** The flavor text of this Pokémon form, in every language it is published in. */
1790
+ flavor_text_entries: FlavorText[];
1766
1791
  }
1767
1792
  /** A condition that causes a Pokémon to take on a particular form. */
1768
1793
  interface PokemonFormCondition {
@@ -3888,6 +3913,7 @@ declare const MOVE_AILMENTS: {
3888
3913
  readonly INGRAIN: 21;
3889
3914
  readonly SILENCE: 24;
3890
3915
  readonly TAR_SHOT: 42;
3916
+ readonly PROTECT: 43;
3891
3917
  };
3892
3918
  declare const MOVE_BATTLE_STYLES: {
3893
3919
  readonly ATTACK: 1;
@@ -5645,5 +5671,5 @@ declare const defensiveProfile: (types: readonly Type[], defending: readonly Nam
5645
5671
  */
5646
5672
  declare const defensiveProfileFrom: (defending: readonly Type[]) => Record<TypeName, number>;
5647
5673
  //#endregion
5648
- export { APIResource, APIResourceList, Ability, AbilityEffectChange, AbilityFlavorText, AbilityPokemon, Animated, AwesomeName, BASE_URL, BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS, Berry, BerryClient, BerryFirmness, BerryFlavor, BerryFlavorMap, BlackWhite, BrilliantDiamondShiningPearl, index_d_exports as CONSTANTS, CONTEST_TYPES, CURRENCIES, type CacheStore, ChainLink, Characteristic, type ClientOptions, type ClientStats, ContestClient, ContestComboDetail, ContestComboSets, ContestEffect, ContestFlavorText, ContestName, ContestType, Crystal, Currency, CurrencyClient, Description, DiamondPearl, DreamWorld, EGG_GROUPS, ENCOUNTER_CONDITIONS, ENCOUNTER_CONDITION_VALUES, ENCOUNTER_METHODS, ENDPOINTS, EVOLUTION_TRIGGERS, Effect, EggGroup, Emerald, Encounter, EncounterClient, EncounterCondition, EncounterConditionValue, EncounterMethod, EncounterMethodRate, EncounterPokemonDetail, EncounterVersionDetails, Endpoint, type EtagEntry, EtagStore, type EtagStoreOptions, EvolutionChain, EvolutionClient, EvolutionDetail, type EvolutionRequirement, type EvolutionStep, EvolutionTimeOfDay, EvolutionTrigger, EvolutionTriggerName, type FetchLike, FireredLeafgreen, type FlattenOptions, FlavorBerryMap, FlavorText, type FormatOptions, GENDERS, GENERATIONS, GROWTH_RATES, GameClient, Gender, Generation, GenerationGameIndex, GenerationIIISprites, GenerationIIITypeSprites, GenerationIISprites, GenerationISprites, GenerationIVSprites, GenerationIVTypeSprites, GenerationIXSprites, GenerationIXTypeSprites, GenerationName, type GenerationScope, GenerationVIIISprites, GenerationVIIITypeSprites, GenerationVIISprites, GenerationVIITypeSprites, GenerationVISprites, GenerationVITypeSprites, GenerationVSprites, GenerationVTypeSprites, GenerationViiIcons, GenerationViiiIcons, Genus, Gold, GrowthRate, GrowthRateExperienceLevel, HeartgoldSoulsilver, Home, ITEM_ATTRIBUTES, ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS, Item, ItemAttribute, ItemCategory, ItemClient, ItemFlingEffect, ItemHolderPokemon, ItemHolderPokemonVersionDetail, ItemPocket, ItemPrice, ItemSprites, LANGUAGES, Language, type ListFn, type ListMethodName, type ListPage, type LocalizeOptions, type Localized, Location, LocationArea, LocationAreaEncounter, LocationClient, type LogCancelledPayload, type LogErrorPayload, type LogRequestPayload, type LogResponsePayload, type LogRetryPayload, type Logger, MOVE_AILMENTS, MOVE_BATTLE_STYLES, MOVE_CATEGORIES, MOVE_DAMAGE_CLASSES, MOVE_LEARN_METHODS, MOVE_TARGETS, Machine, MachineClient, MachineVersionDetail, MainClient, MemoryCache, type MemoryCacheOptions, Move, MoveAilment, MoveBattleStyle, MoveBattleStylePreference, MoveCategory, MoveClient, MoveDamageClass, MoveFlavorText, MoveLearnMethod, MoveMetaData, MoveStatAffect, MoveStatAffectSets, MoveStatChange, MoveTarget, NATURES, Name, NamedAPIResource, NamedAPIResourceList, Nature, NaturePokeathlonStatAffect, NaturePokeathlonStatAffectSets, NatureStatAffectSets, NatureStatChange, OfficialArtwork, OmegarubyAlphasapphire, OtherPokemonSprites, PAL_PARK_AREAS, POKEATHLON_STATS, POKEDEXES, POKEMON_COLORS, POKEMON_HABITATS, POKEMON_SHAPES, type PaginateOptions, PalParkArea, PalParkEncounterArea, PalParkEncounterSpecies, PastMoveStatValues, Platinum, PokeathlonStat, Pokedex, Pokemon, PokemonAbility, PokemonClient, PokemonColor, PokemonCries, PokemonEncounter, PokemonEntry, PokemonForm, PokemonFormCondition, PokemonFormGenerationVIIISprites, PokemonFormSprites, PokemonFormVersionSprites, PokemonHabitat, PokemonHeldItem, PokemonHeldItemVersion, PokemonMove, PokemonMoveVersion, PokemonPastAbility, PokemonPastAbilitySlot, PokemonPastStat, PokemonPastType, PokemonShape, PokemonSpecies, PokemonSpeciesDexEntry, PokemonSpeciesGender, PokemonSpeciesVariety, type PokemonSpriteOptions, PokemonSprites, PokemonStat, PokemonType, PokenodeError, REGIONS, REQUIREMENT_PHRASES, RedBlue, Region, type RequestScope, type RequirementPhrases, type ResolveOptions, type ResourceLink, type ResourceNamer, type RetryOptions, RubySapphire, STATS, ScarletViolet, Showdown, Silver, type SpriteVariant, Stat, SuperContestEffect, TYPES, Type, TypeGameSprites, TypeName, TypePokemon, TypeRelations, TypeRelationsPast, TypeSprites, UltraSunUltraMoon, UtilityClient, VERSIONS, VERSION_GROUPS, VerboseEffect, Version, VersionEncounterDetail, VersionGameIndex, VersionGroup, VersionGroupFlavorText, VersionSprites, WebStorageCache, type WebStorageCacheOptions, type WebStorageLike, XY, Yellow, consoleLogger, defensiveProfile, defensiveProfileFrom, effectiveness, flattenChain, formatRequirements, getPokemonSpriteUrl, localize, localizeAll, pathTo, relationsFor, requirementPhrases, requirementsOf, resourceId };
5674
+ export { APIResource, APIResourceList, Ability, AbilityEffectChange, AbilityFlavorText, AbilityPokemon, Animated, AwesomeName, BASE_URL, BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS, Berry, BerryClient, BerryFirmness, BerryFlavor, BerryFlavorMap, BlackWhite, BrilliantDiamondShiningPearl, index_d_exports as CONSTANTS, CONTEST_TYPES, CURRENCIES, type CacheStore, ChainLink, Characteristic, type ClientOptions, type ClientStats, ContestClient, ContestComboDetail, ContestComboSets, ContestEffect, ContestFlavorText, ContestName, ContestType, Crystal, CrystalAnimated, Currency, CurrencyClient, Description, DiamondPearl, DreamWorld, EGG_GROUPS, ENCOUNTER_CONDITIONS, ENCOUNTER_CONDITION_VALUES, ENCOUNTER_METHODS, ENDPOINTS, EVOLUTION_TRIGGERS, Effect, EggGroup, Emerald, Encounter, EncounterClient, EncounterCondition, EncounterConditionValue, EncounterMethod, EncounterMethodRate, EncounterPokemonDetail, EncounterVersionDetails, Endpoint, type EtagEntry, EtagStore, type EtagStoreOptions, EvolutionChain, EvolutionClient, EvolutionDetail, type EvolutionRequirement, type EvolutionStep, EvolutionTimeOfDay, EvolutionTrigger, EvolutionTriggerName, type FetchLike, FireredLeafgreen, type FlattenOptions, FlavorBerryMap, FlavorText, type FormatOptions, GENDERS, GENERATIONS, GROWTH_RATES, GameClient, Gender, Generation, GenerationGameIndex, GenerationIIISprites, GenerationIIITypeSprites, GenerationIISprites, GenerationISprites, GenerationIVSprites, GenerationIVTypeSprites, GenerationIXSprites, GenerationIXTypeSprites, GenerationName, type GenerationScope, GenerationVAnimatedIcons, GenerationVIIISprites, GenerationVIIITypeSprites, GenerationVIISprites, GenerationVIITypeSprites, GenerationVISprites, GenerationVITypeSprites, GenerationVIcons, GenerationVSprites, GenerationVTypeSprites, GenerationViiIcons, GenerationViiiIcons, Genus, Gold, GrowthRate, GrowthRateExperienceLevel, HeartgoldSoulsilver, Home, ITEM_ATTRIBUTES, ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS, Item, ItemAttribute, ItemCategory, ItemClient, ItemFlingEffect, ItemHolderPokemon, ItemHolderPokemonVersionDetail, ItemPocket, ItemPrice, ItemSprites, LANGUAGES, Language, type ListFn, type ListMethodName, type ListPage, type LocalizeOptions, type Localized, Location, LocationArea, LocationAreaEncounter, LocationClient, type LogCancelledPayload, type LogErrorPayload, type LogRequestPayload, type LogResponsePayload, type LogRetryPayload, type Logger, MOVE_AILMENTS, MOVE_BATTLE_STYLES, MOVE_CATEGORIES, MOVE_DAMAGE_CLASSES, MOVE_LEARN_METHODS, MOVE_TARGETS, Machine, MachineClient, MachineVersionDetail, MainClient, MemoryCache, type MemoryCacheOptions, Move, MoveAilment, MoveBattleStyle, MoveBattleStylePreference, MoveCategory, MoveClient, MoveDamageClass, MoveFlavorText, MoveLearnMethod, MoveMetaData, MoveStatAffect, MoveStatAffectSets, MoveStatChange, MoveTarget, NATURES, Name, NamedAPIResource, NamedAPIResourceList, Nature, NaturePokeathlonStatAffect, NaturePokeathlonStatAffectSets, NatureStatAffectSets, NatureStatChange, OfficialArtwork, OmegarubyAlphasapphire, OtherPokemonSprites, PAL_PARK_AREAS, POKEATHLON_STATS, POKEDEXES, POKEMON_COLORS, POKEMON_HABITATS, POKEMON_SHAPES, type PaginateOptions, PalParkArea, PalParkEncounterArea, PalParkEncounterSpecies, PastMoveStatValues, Platinum, PokeathlonStat, Pokedex, Pokemon, PokemonAbility, PokemonClient, PokemonColor, PokemonCries, PokemonEncounter, PokemonEntry, PokemonForm, PokemonFormCondition, PokemonFormGenerationVIIISprites, PokemonFormSprites, PokemonFormVersionSprites, PokemonHabitat, PokemonHeldItem, PokemonHeldItemVersion, PokemonMove, PokemonMoveVersion, PokemonPastAbility, PokemonPastAbilitySlot, PokemonPastStat, PokemonPastType, PokemonShape, PokemonSpecies, PokemonSpeciesDexEntry, PokemonSpeciesGender, PokemonSpeciesVariety, type PokemonSpriteOptions, PokemonSprites, PokemonStat, PokemonType, PokenodeError, REGIONS, REQUIREMENT_PHRASES, RedBlue, Region, type RequestScope, type RequirementPhrases, type ResolveOptions, type ResourceLink, type ResourceNamer, type RetryOptions, RubySapphire, STATS, ScarletViolet, Showdown, Silver, type SpriteVariant, Stat, SuperContestEffect, TYPES, Type, TypeGameSprites, TypeName, TypePokemon, TypeRelations, TypeRelationsPast, TypeSprites, UltraSunUltraMoon, UtilityClient, VERSIONS, VERSION_GROUPS, VerboseEffect, Version, VersionEncounterDetail, VersionGameIndex, VersionGroup, VersionGroupFlavorText, VersionSprites, WebStorageCache, type WebStorageCacheOptions, type WebStorageLike, XY, Yellow, consoleLogger, defensiveProfile, defensiveProfileFrom, effectiveness, flattenChain, formatRequirements, getPokemonSpriteUrl, localize, localizeAll, pathTo, relationsFor, requirementPhrases, requirementsOf, resourceId };
5649
5675
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -3,15 +3,15 @@
3
3
  * |_) _ | _ _ _ _| _ __ _|_ _
4
4
  * | (_) |< (/_ | | (_) (_| (/_ |_ _>
5
5
  *
6
- * pokenode-ts v2.3.0 — A typed PokéAPI client with zero runtime dependencies.
6
+ * pokenode-ts v2.3.1 — A typed PokéAPI client with zero runtime dependencies.
7
7
  *
8
8
  * Docs: https://pokenode-ts.vercel.app/
9
9
  * Author: Gabb-c <https://github.com/Gabb-c>
10
10
  * License: MIT
11
- * Built: 2026-08-29
11
+ * Built: 2026-09-04
12
12
  *
13
13
  * @license MIT
14
14
  * @preserve
15
15
  */
16
- import{t as e}from"./rolldown-runtime-mLzODkzB.js";const t={CHERI:1,CHESTO:2,PECHA:3,RAWST:4,ASPEAR:5,LEPPA:6,ORAN:7,PERSIM:8,LUM:9,SITRUS:10,FIGY:11,WIKI:12,MAGO:13,AGUAV:14,IAPAPA:15,RAZZ:16,BLUK:17,NANAB:18,WEPEAR:19,PINAP:20,POMEG:21,KELPSY:22,QUALOT:23,HONDEW:24,GREPA:25,TAMATO:26,CORNN:27,MAGOST:28,RABUTA:29,NOMEL:30,SPELON:31,PAMTRE:32,WATMEL:33,DURIN:34,BELUE:35,OCCA:36,PASSHO:37,WACAN:38,RINDO:39,YACHE:40,CHOPLE:41,KEBIA:42,SHUCA:43,COBA:44,PAYAPA:45,TANGA:46,CHARTI:47,KASIB:48,HABAN:49,COLBUR:50,BABIRI:51,CHILAN:52,LIECHI:53,GANLON:54,SALAC:55,PETAYA:56,APICOT:57,LANSAT:58,STARF:59,ENIGMA:60,MICLE:61,CUSTAP:62,JABOCA:63,ROWAP:64,KEE:65,MARANGA:66,HOPO:67,ROSELI:68},n={VERY_SOFT:1,SOFT:2,HARD:3,VERY_HARD:4,SUPER_HARD:5},r={SPICY:1,DRY:2,SWEET:3,BITTER:4,SOUR:5},i={COOL:1,BEAUTY:2,CUTE:3,SMART:4,TOUGH:5},a={POKE_DOLLAR:1,COIN:2,VOLCANIC_ASH:3,POKE_COUPON:4,BERRY_POWDER:5,BATTLE_POINT:6,SPHERE:7,CASTLE_POINT:8,WATT:9,ATHLETE_POINT:10,DREAM_POINT:11,DREAM_WORLD_BERRY:12,POKE_MILE:13,FESTIVAL_COIN:14,POKE_BEAN:15,HOME_POINT:16,MERIT_POINT:17,LEAGUE_POINT:18,BLUEBERRY_POINT:19},o={WALK:1,OLD_ROD:2,GOOD_ROD:3,SUPER_ROD:4,SURF:5,ROCK_SMASH:6,HEADBUTT:7,DARK_GRASS:8,GRASS_SPOTS:9,CAVE_SPOTS:10,BRIDGE_SPOTS:11,SUPER_ROD_SPOTS:12,SURF_SPOTS:13,YELLOW_FLOWERS:14,PURPLE_FLOWERS:15,RED_FLOWERS:16,ROUGH_TERRAIN:17,GIFT:18,GIFT_EGG:19,STATIC:20,POKEFLUTE:21,HEADBUTT_LOW:22,HEADBUTT_NORMAL:23,HEADBUTT_HIGH:24,SQUIRT_BOTTLE:25,WAILMER_PAIL:26,SEAWEED:27,ROAMING_GRASS:28,ROAMING_WATER:29,DEVON_SCOPE:30,FEEBAS_TILE_FISHING:31,ISLAND_SCAN:32,SOS:33,BUBBLING_SPOTS:34,BERRY_TREES:35,NPC_TRADE:36,SOS_FROM_BUBBLING_SPOT:37,OVERWORLD:38,OVERWORLD_WATER:39,OVERWORLD_FLYING:40,OVERWORLD_SPECIAL:41,OVERWORLD_FLYING_SPECIAL:42,OVERWORLD_WATER_SPECIAL:43,HORDE:44,COLOSSEUM_BONUS_DISC_US:45,COLOSSEUM_BONUS_DISC_JPN:46,POKEMON_CHANNEL_PAL:47,POKEMON_RANGER:48,POKEMON_BATTLE_REVOLUTION:49,NEW_YORK_POKECENTER_WISH_EGGS:50,SNAG:51,SNAG_REMATCH:52,POKESPOT:53,HIDDEN_GROTTO:54,HONEY_TREE:55,OVERWORLD_DIRT:56,WANDERER:57,WANDERER_WATER:58,CHASE_WATER:59,DYNAMAX_ADVENTURE:60,MAX_RAID:61,TRASH_CAN_AMBUSH:62,RUSTLING_BUSH_AMBUSH:63,CEILING_AMBUSH:64,GROUND_AMBUSH:65,SKY_AMBUSH:66,HEADBUT_HIGH:24,ONLY_ONE:20},s={SWARM:1,TIME:2,RADAR:3,SLOT2:4,RADIO:5,SEASON:6,STARTER:7,TV_OPTION:8,STORY_PROGRESS:9,OTHER:10,ITEM:11,WEEKDAY:12,FIRST_PARTY_POKEMON:13,SPECIAL_ENCOUNTER:14,TRADE:15,COINS:16,FRIEND_SAFARI_SLOT:17,GREAT_MARSH_DAILY_SLOT:18,HONEY_TREE_GROUP:19,HEADBUTT_TREE:20,BACKLOT:21,BUG_CATCHING_CONTEST:22,SAVE_DATA:23,ALOLAN_DIGLETT_FOUND:24,WEATHER:25,JOHTO_SAFARI_BLOCKS:26,MAX_DEN_RARITY:27,MAX_DEN_RATING:28,BERRY_TREE_TYPE:29,TRASH_CAN_TYPE:30},c={SWARM_YES:1,SWARM_NO:2,TIME_MORNING:3,TIME_DAY:4,TIME_NIGHT:5,RADAR_ON:6,RADAR_OFF:7,SLOT2_NONE:8,SLOT2_RUBY:9,SLOT2_SAPPHIRE:10,SLOT2_EMERALD:11,SLOT2_FIRERED:12,SLOT2_LEAFGREEN:13,RADIO_OFF:14,RADIO_HOENN:15,RADIO_SINNOH:16,SEASON_SPRING:17,SEASON_SUMMER:18,SEASON_AUTUMN:19,SEASON_WINTER:20,STARTER_BULBASAUR:21,STARTER_SQUIRTLE:22,STARTER_CHARMANDER:23,STARTER_CHESPIN:24,STARTER_FENNEKIN:25,STARTER_FROAKIE:26,TV_OPTION_BLUE:27,TV_OPTION_RED:28,STORY_PROGRESS_AWAKENED_BEASTS:29,STORY_PROGRESS_BEAT_GALACTIC_CORONET:30,STORY_PROGRESS_OAK_ETERNA_CITY:31,STORY_PROGRESS_VERMILION_COPYCAT:32,STORY_PROGRESS_MET_TORNADUS_THUNDURUS:33,STORY_PROGRESS_BEAT_ELITE_FOUR_ROUND_TWO:34,STORY_PROGRESS_HALL_OF_FAME:35,STORY_PROGRESS_NONE:36,STORY_PROGRESS_NATIONAL_DEX:37,OTHER_NONE:38,OTHER_SNORLAX_11_BEAT_LEAGUE:39,OTHER_VIRTUAL_CONSOLE:40,STORY_PROGRESS_CURE_ELDRITCH_NIGHTMARES:41,OTHER_TALK_TO_CYNTHIAS_GRANDMOTHER:42,ITEM_NONE:43,ITEM_ADAMANT_ORB:44,ITEM_LUSTROUS_ORB:45,ITEM_HELIX_FOSSIL:46,ITEM_DOME_FOSSIL:47,ITEM_OLD_AMBER:48,ITEM_ROOT_FOSSIL:49,ITEM_CLAW_FOSSIL:50,STORY_PROGRESS_DEFEAT_JUPITER:51,STORY_PROGRESS_BEAT_TEAM_GALACTIC_IRON_ISLAND:52,OTHER_CORRECT_PASSWORD:53,STORY_PROGRESS_ZEPHYR_BADGE:54,STORY_PROGRESS_BEAT_RED:55,OTHER_RECEIVED_KANTO_STARTER:56,STORY_PROGRESS_RECEIVE_TM_FROM_CLAIRE:57,OTHER_REGIROCK_REGICE_REGISTEEL_IN_PARTY:58,WEEKDAY_SUNDAY:59,WEEKDAY_MONDAY:60,WEEKDAY_TUESDAY:61,WEEKDAY_WEDNESDAY:62,WEEKDAY_THURSDAY:63,WEEKDAY_FRIDAY:64,WEEKDAY_SATURDAY:65,FIRST_PARTY_POKEMON_HIGH_FRIENDSHIP:66,STORY_PROGRESS_DEFEAT_MARS:67,ITEM_ODD_KEYSTONE:68,OTHER_TALKED_TO_32_PEOPLE_UNDERGROUND:69,STORY_PROGRESS_RETURNED_MACHINE_PART:70,OTHER_EVENT_ARCEUS_IN_PARTY:71,SPECIAL_ENCOUNTER_COULDNT_CAPTURE_BEFORE:72,ITEM_ICE_KEY:73,ITEM_IRON_KEY:74,STORY_PROGRESS_JUNIPER_CAVE_OF_BEING:75,ITEM_LUNAR_WING:76,STORY_PROGRESS_QUAKE_BADGE:77,ITEM_LIGHT_STONE:78,ITEM_DARK_STONE:79,OTHER_CAPTURED_RESHIRAM_OR_ZEKROM:80,DEFEATED_GHETSIS:81,OTHER_FOUND_11_TIMES_ROAMING:82,TIME_MINUTE_00_TO_19:83,TIME_MINUTE_20_TO_39:84,TIME_MINUTE_40_TO_59:85,TIME_04_00_TO_19_59:86,TIME_20_00_TO_21_59:87,TIME_21_00_TO_03_59:88,ITEM_TIDAL_BELL:89,ITEM_CLEAR_BELL:90,STORY_PROGRESS_DEFEATED_GROUDON_OR_KYOGRE:91,OTHER_UXIE_MESPRIT_AZELF_IN_PARTY:92,OTHER_NICKNAMED_COLD_ITEM_REGICE_REGIROCK_REGISTEEL3:93,OTHER_DIALGA_OR_PALKIA_IN_PARTY:94,OTHER_CASTFORM_IN_PARTY:95,OTHER_LEVEL_100_POKEMON_IN_PARTY:96,OTHER_TORNADUS_THUNDURUS_IN_PARTY:97,OTHER_RESHIRAM_ZEKROM_IN_PARTY:98,OTHER_CAPTURED_ALL_ULTRA_BEASTS:99,STORY_PROGRESS_FINISHED_LOOKER_SIDEQUEST:100,STORY_PROGRESS_BEAT_OLIVIAS_TRIAL:101,OTHER_RAIKOU_ENTEI_IN_PARTY:102,OTHER_GROUDON_KYOGRE_IN_PARTY:103,OTHER_DIALGA_PALKIA_IN_PARTY:104,OTHER_SCAN_QR_CODE:105,OTHER_CAUGHT_ARTICUNO:106,OTHER_CAUGHT_ZAPDOS:107,OTHER_CAUGHT_MOLTRES:108,TRADE_TOGEPI_OR_TOGETIC:109,TRADE_TRAPINCH:110,TRADE_SURSKIT:111,TRADE_WOOPER:112,STORY_PROGRESS_CATCH_ALL_SHADOW_POKEMON:113,OTHER_COMPLETE_MT_BATTLE:114,COINS_180:115,COINS_500:116,COINS_1200:117,COINS_2800:118,COINS_5500:119,COINS_9999:120,COINS_120:121,COINS_750:122,COINS_2500:123,COINS_4600:124,COINS_6500:125,COINS_230:126,COINS_1000:127,COINS_2680:128,COINS_3333:129,COINS_6666:130,COINS_200:131,COINS_700:132,COINS_2100:133,COINS_100:134,COINS_800:135,COINS_1500:136,COINS_2222:137,COINS_5555:138,COINS_8888:139,COINS_150:140,COINS_620:141,COINS_2880:142,COINS_5400:143,COINS_8300:144,TRADE_ABRA:145,TRADE_NIDORAN_M:146,TRADE_NIDORINO:147,TRADE_SLOWBRO:148,TRADE_POLIWHIRL:149,TRADE_SPEAROW:150,TRADE_RAICHU:151,TRADE_VENONAT:152,TRADE_PONYTA:153,TRADE_CLEFAIRY:154,TRADE_CUBONE:155,TRADE_LICKITUNG:156,TRADE_TANGELA:157,TRADE_GOLDUCK:158,TRADE_GROWLITHE:159,TRADE_KANGASKHAN:160,TRADE_BELLSPROUT:161,TRADE_DROWZEE:162,TRADE_KRABBY:163,TRADE_DRAGONAIR:164,TRADE_CHANSEY:165,TRADE_GLOOM:166,TRADE_HAUNTER:167,TRADE_DUGTRIO:168,TRADE_SLAKOTH:169,TRADE_PIKACHU:170,TRADE_BELLOSSOM:171,TRADE_RALTS:172,TRADE_VOLBEAT:173,TRADE_BAGON:174,TRADE_SKITTY:175,FRIEND_SAFARI_SLOT_1:176,FRIEND_SAFARI_SLOT_2:177,FRIEND_SAFARI_SLOT_3:178,ITEM_SKULL_FOSSIL:179,ITEM_ARMOR_FOSSIL:180,GREAT_MARSH_DAILY_SLOT_NONE:181,GREAT_MARSH_DAILY_SLOT_1_OF_32:182,GREAT_MARSH_DAILY_SLOT_2_OF_32:183,GREAT_MARSH_DAILY_SLOT_3_OF_32:184,GREAT_MARSH_DAILY_SLOT_5_OF_32:185,STORY_PROGRESS_BEFORE_NATIONAL_DEX:186,GREAT_MARSH_DAILY_SLOT_4_OF_32:187,GREAT_MARSH_DAILY_SLOT_15_OF_32:188,HONEY_TREE_GROUP_A:189,HONEY_TREE_GROUP_B:190,HONEY_TREE_GROUP_C:191,HEADBUTT_TREE_COMMON:192,HEADBUTT_TREE_RARE:193,HEADBUTT_TREE_SECRET:194,TRADE_COTTONEE:195,TRADE_PETILIL:196,TRADE_EMOLGA:197,TRADE_MANTINE:198,TRADE_DITTO:199,TRADE_EXCADRILL:200,TRADE_HIPPOWDON:201,BACKLOT_NOT_MENTIONED:202,BACKLOT_MENTIONED:203,BUG_CATCHING_CONTEST_NO:204,BUG_CATCHING_CONTEST_YES:205,SAVE_DATA_FROM_LETS_GO_PIKACHU:206,SAVE_DATA_FROM_LETS_GO_EEVEE:207,ITEM_FOSSILIZED_BIRD:208,ITEM_FOSSILIZED_DRAKE:209,ITEM_FOSSILIZED_DINO:210,ITEM_FOSSILIZED_FISH:211,STORY_PROGRESS_MASTER_DOJO_COMPLETE_FIRST_TRIAL:212,STORY_PROGRESS_MASTER_DOJO_COMPLETE_THIRD_TRIAL:213,ALOLAN_DIGLETT_FOUND_5:214,ALOLAN_DIGLETT_FOUND_10:215,ALOLAN_DIGLETT_FOUND_20:216,ALOLAN_DIGLETT_FOUND_30:217,ALOLAN_DIGLETT_FOUND_40:218,ALOLAN_DIGLETT_FOUND_50:219,ALOLAN_DIGLETT_FOUND_75:220,ALOLAN_DIGLETT_FOUND_100:221,ALOLAN_DIGLETT_FOUND_150:222,STARTER_GROOKEY:223,STARTER_SCORBUNNY:224,STARTER_SOBBLE:225,STORY_PROGRESS_SAVE_VILLAGE_FROM_GLASTRIER_SPECTRIER:226,STORY_PROGRESS_CATCH_FIVE_ULTRA_BEASTS:227,TRADE_BUNNELBY:228,TRADE_MEOWTH_GALAR:229,TRADE_MINCCINO:230,TRADE_TOXEL:231,TRADE_MARACTUS:232,TRADE_YAMASK_GALAR:233,TRADE_VANILLISH:234,TRADE_OBSTAGOON:235,TRADE_FROSMOTH:236,TRADE_FARFETCHD_GALAR:237,TRADE_CORSOLA_GALAR:238,TRADE_PONYTA_GALAR:239,TRADE_MR_MIME_GALAR:240,TRADE_DARUMAKA_GALAR:241,TRADE_ZIGZAGOON_GALAR:242,TRADE_STUNFISK_GALAR:243,TRADE_WEEZING_GALAR:244,TRADE_EXEGGUTOR:245,TRADE_MAROWAK:246,WEATHER_NORMAL:247,WEATHER_OVERCAST:248,WEATHER_RAINING:249,WEATHER_THUNDERSTORM:250,WEATHER_SNOWING:251,WEATHER_SNOWSTORM:252,WEATHER_SANDSTORM:253,WEATHER_INTENSE_SUN:254,WEATHER_FOG:255,STORY_PROGRESS_BEFORE_HALL_OF_FAME:256,JOHTO_SAFARI_BLOCKS_INACTIVE:257,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_2:258,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_3:259,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_4:260,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_5:261,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_6:262,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_10:263,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_12:264,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_14:265,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_15:266,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_24:267,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_28:268,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_35:269,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_49:270,JOHTO_SAFARI_BLOCKS_FOREST_MIN_3:271,JOHTO_SAFARI_BLOCKS_FOREST_MIN_4:272,JOHTO_SAFARI_BLOCKS_FOREST_MIN_5:273,JOHTO_SAFARI_BLOCKS_FOREST_MIN_8:274,JOHTO_SAFARI_BLOCKS_FOREST_MIN_10:275,JOHTO_SAFARI_BLOCKS_FOREST_MIN_14:276,JOHTO_SAFARI_BLOCKS_FOREST_MIN_15:277,JOHTO_SAFARI_BLOCKS_FOREST_MIN_18:278,JOHTO_SAFARI_BLOCKS_FOREST_MIN_20:279,JOHTO_SAFARI_BLOCKS_FOREST_MIN_28:280,JOHTO_SAFARI_BLOCKS_FOREST_MIN_35:281,JOHTO_SAFARI_BLOCKS_FOREST_MIN_42:282,JOHTO_SAFARI_BLOCKS_FOREST_MIN_49:283,JOHTO_SAFARI_BLOCKS_FOREST_MIN_56:284,JOHTO_SAFARI_BLOCKS_PEAK_MIN_3:285,JOHTO_SAFARI_BLOCKS_PEAK_MIN_4:286,JOHTO_SAFARI_BLOCKS_PEAK_MIN_5:287,JOHTO_SAFARI_BLOCKS_PEAK_MIN_6:288,JOHTO_SAFARI_BLOCKS_PEAK_MIN_8:289,JOHTO_SAFARI_BLOCKS_PEAK_MIN_10:290,JOHTO_SAFARI_BLOCKS_PEAK_MIN_15:291,JOHTO_SAFARI_BLOCKS_PEAK_MIN_21:292,JOHTO_SAFARI_BLOCKS_PEAK_MIN_24:293,JOHTO_SAFARI_BLOCKS_PEAK_MIN_28:294,JOHTO_SAFARI_BLOCKS_PEAK_MIN_35:295,JOHTO_SAFARI_BLOCKS_PEAK_MIN_42:296,JOHTO_SAFARI_BLOCKS_PEAK_MIN_49:297,JOHTO_SAFARI_BLOCKS_PEAK_MIN_56:298,JOHTO_SAFARI_BLOCKS_PEAK_MIN_63:299,JOHTO_SAFARI_BLOCKS_WATER_MIN_2:300,JOHTO_SAFARI_BLOCKS_WATER_MIN_3:301,JOHTO_SAFARI_BLOCKS_WATER_MIN_4:302,JOHTO_SAFARI_BLOCKS_WATER_MIN_5:303,JOHTO_SAFARI_BLOCKS_WATER_MIN_6:304,JOHTO_SAFARI_BLOCKS_WATER_MIN_7:305,JOHTO_SAFARI_BLOCKS_WATER_MIN_8:306,JOHTO_SAFARI_BLOCKS_WATER_MIN_9:307,JOHTO_SAFARI_BLOCKS_WATER_MIN_10:308,JOHTO_SAFARI_BLOCKS_WATER_MIN_12:309,JOHTO_SAFARI_BLOCKS_WATER_MIN_13:310,JOHTO_SAFARI_BLOCKS_WATER_MIN_14:311,JOHTO_SAFARI_BLOCKS_WATER_MIN_15:312,JOHTO_SAFARI_BLOCKS_WATER_MIN_16:313,JOHTO_SAFARI_BLOCKS_WATER_MIN_18:314,JOHTO_SAFARI_BLOCKS_WATER_MIN_20:315,JOHTO_SAFARI_BLOCKS_WATER_MIN_24:316,JOHTO_SAFARI_BLOCKS_WATER_MIN_28:317,JOHTO_SAFARI_BLOCKS_WATER_MIN_35:318,JOHTO_SAFARI_BLOCKS_WATER_MIN_42:319,JOHTO_SAFARI_BLOCKS_WATER_MIN_49:320,ITEM_COVER_FOSSIL:321,ITEM_PLUME_FOSSIL:322,OTHER_GIRATINA_NOT_CAUGHT_IN_DISTORTION_WORLD:323,OTHER_FIND_50_CAVERN_FOOTPRINTS:324,OTHER_FIND_50_GRASSLAND_FOOTPRINTS:325,OTHER_FIND_50_IRON_WILL_FOOTPRINTS:326,OTHER_REGIROCK_REGICE_REGISTEEL_REGIELEKI_REGIDRAGO_IN_PARTY:327,OTHER_CHOOSE_REGIELEKI_PATTERN:328,OTHER_CHOOSE_REGIDRAGO_PATTERN:329,OTHER_GROW_ICEROOT_CARROT:330,OTHER_GROW_SHADEROOT_CARROT:331,OTHER_TALKED_TO_32_PEOPLE:332,OTHER_EAT_CURRY_WITH_COBALION_TERRAKION_VIRIZION:333,ITEM_REINS_OF_UNITY:334,OTHER_WITNESS_GALARIAN_BIRD_FIGHT:335,MAX_DEN_RARITY_COMMON:336,MAX_DEN_RARITY_RARE:337,MAX_DEN_RATING_1_STAR:338,MAX_DEN_RATING_2_STAR:339,MAX_DEN_RATING_3_STAR:340,MAX_DEN_RATING_4_STAR:341,MAX_DEN_RATING_5_STAR:342,MAX_DEN_RARITY_SPECIAL:343,BERRY_TREE_TYPE_RED:344,BERRY_TREE_TYPE_BLUE:345,BERRY_TREE_TYPE_PURPLE:346,BERRY_TREE_TYPE_GREEN:347,BERRY_TREE_TYPE_YELLOW:348,BERRY_TREE_TYPE_PINK:349,TRASH_CAN_TYPE_DAILY:350,TRASH_CAN_TYPE_TUESDAY:351,TRASH_CAN_TYPE_THURSDAY:352,TRADE_NIDORAN_F:353,TRADE_NIDORINA:354,TRADE_MACHOP:355,TRADE_BUIZEL:356,TRADE_MEDICHAM:357,TRADE_FINNEON:358,TRADE_FORRETRESS:359,TRADE_BONSLY:360,TRADE_ANY_POKEMON:361,OTHER_SNORLAX_LL_BEAT_LEAGUE:39,RADIO_HOEN:15,SLOT2_SAPHIRE:10,STORY_PROGRESS_OAK_VERMILION_COPYCAT:32,SWASON_AUTUMN:19},l={BERRY:`/berry`,BERRY_FIRMNESS:`/berry-firmness`,BERRY_FLAVOR:`/berry-flavor`,CONTEST_TYPE:`/contest-type`,CONTEST_EFFECT:`/contest-effect`,SUPER_CONTEST_EFFECT:`/super-contest-effect`,CURRENCY:`/currency`,ENCOUNTER_METHOD:`/encounter-method`,ENCOUNTER_CONDITION:`/encounter-condition`,ENCOUNTER_CONDITION_VALUE:`/encounter-condition-value`,EVOLUTION_CHAIN:`/evolution-chain`,EVOLUTION_TRIGGER:`/evolution-trigger`,GENERATION:`/generation`,POKEDEX:`/pokedex`,VERSION:`/version`,VERSION_GROUP:`/version-group`,ITEM:`/item`,ITEM_ATTRIBUTE:`/item-attribute`,ITEM_CATEGORY:`/item-category`,ITEM_FLING_EFFECT:`/item-fling-effect`,ITEM_POCKET:`/item-pocket`,LOCATION:`/location`,LOCATION_AREA:`/location-area`,PALPARK_AREA:`/pal-park-area`,REGION:`/region`,MACHINE:`/machine`,MOVE:`/move`,MOVE_AILMENT:`/move-ailment`,MOVE_BATTLE_STYLE:`/move-battle-style`,MOVE_CATEGORY:`/move-category`,MOVE_DAMAGE_CLASS:`/move-damage-class`,MOVE_LEARN_METHOD:`/move-learn-method`,MOVE_TARGET:`/move-target`,ABILITY:`/ability`,CHARACTERISTIC:`/characteristic`,EGG_GROUP:`/egg-group`,GENDER:`/gender`,GROWTH_RATE:`/growth-rate`,NATURE:`/nature`,POKEATHLON_STAT:`/pokeathlon-stat`,POKEMON:`/pokemon`,POKEMON_COLOR:`/pokemon-color`,POKEMON_FORM:`/pokemon-form`,POKEMON_HABITAT:`/pokemon-habitat`,POKEMON_SHAPE:`/pokemon-shape`,POKEMON_SPECIES:`/pokemon-species`,STAT:`/stat`,TYPE:`/type`,LANGUAGE:`/language`},u={LEVEL_UP:1,TRADE:2,USE_ITEM:3,SHED:4,SPIN:5,TOWER_OF_DARKNESS:6,TOWER_OF_WATERS:7,THREE_CRITICAL_HITS:8,TAKE_DAMAGE:9,OTHER:10,AGILE_STYLE_MOVE:11,STRONG_STYLE_MOVE:12,RECOIL_DAMAGE:13,USE_MOVE:14,THREE_DEFEATED_BISHARP:15,GIMMIGHOUL_COINS:16,TOWER_OF_WATER:7},d={GENERATION_I:1,GENERATION_II:2,GENERATION_III:3,GENERATION_IV:4,GENERATION_V:5,GENERATION_VI:6,GENERATION_VII:7,GENERATION_VIII:8,GENERATION_IX:9},f={NATIONAL:1,KANTO:2,ORIGINAL_JOHTO:3,HOENN:4,ORIGINAL_SINNOH:5,EXTENDED_SINNOH:6,UPDATED_JOHTO:7,ORIGINAL_UNOVA:8,UPDATED_UNOVA:9,CONQUEST_GALLERY:11,KALOS_CENTRAL:12,KALOS_COASTAL:13,KALOS_MOUNTAIN:14,UPDATED_HOENN:15,ORIGINAL_ALOLA:16,ORIGINAL_MELEMELE:17,ORIGINAL_AKALA:18,ORIGINAL_ULAULA:19,ORIGINAL_PONI:20,UPDATED_ALOLA:21,UPDATED_MELEMELE:22,UPDATED_AKALA:23,UPDATED_ULAULA:24,UPDATED_PONI:25,LETSGO_KANTO:26,GALAR:27,ISLE_OF_ARMOR:28,CROWN_TUNDRA:29,HISUI:30,PALDEA:31,KITAKAMI:32,BLUEBERRY:33,LUMIOSE_CITY:34,HYPERSPACE:35,CHAMPIONS:36,KALOS_MONTAIN:14,UPDATED_KANTO:26},p={RED:1,BLUE:2,YELLOW:3,GOLD:4,SILVER:5,CRYSTAL:6,RUBY:7,SAPPHIRE:8,EMERALD:9,FIRERED:10,LEAFGREEN:11,DIAMOND:12,PEARL:13,PLATINUM:14,HEARTGOLD:15,SOULSILVER:16,BLACK:17,WHITE:18,COLOSSEUM:19,XD:20,BLACK_2:21,WHITE_2:22,X:23,Y:24,OMEGA_RUBY:25,ALPHA_SAPPHIRE:26,SUN:27,MOON:28,ULTRA_SUN:29,ULTRA_MOON:30,LETS_GO_PIKACHU:31,LETS_GO_EEVEE:32,SWORD:33,SHIELD:34,THE_ISLE_OF_ARMOR_SWORD:35,THE_CROWN_TUNDRA_SWORD:36,BRILLIANT_DIAMOND:37,SHINING_PEARL:38,LEGENDS_ARCEUS:39,SCARLET:40,VIOLET:41,THE_TEAL_MASK_SCARLET:42,THE_INDIGO_DISK_SCARLET:43,RED_JAPAN:44,GREEN_JAPAN:45,BLUE_JAPAN:46,LEGENDS_ZA:47,MEGA_DIMENSION:48,CHAMPIONS:49,THE_ISLE_OF_ARMOR_SHIELD:50,THE_CROWN_TUNDRA_SHIELD:51,THE_TEAL_MASK_VIOLET:52,THE_INDIGO_DISK_VIOLET:53,THE_CROWN_TUNDRA:36,THE_ISLE_OF_ARMOR:35},m={RED_BLUE:1,YELLOW:2,GOLD_SILVER:3,CRYSTAL:4,RUBY_SAPPHIRE:5,EMERALD:6,FIRERED_LEAFGREEN:7,DIAMOND_PEARL:8,PLATINUM:9,HEARTGOLD_SOULSILVER:10,BLACK_WHITE:11,COLOSSEUM:12,XD:13,BLACK_2_WHITE_2:14,X_Y:15,OMEGA_RUBY_ALPHA_SAPPHIRE:16,SUN_MOON:17,ULTRA_SUN_ULTRA_MOON:18,LETS_GO_PIKACHU_LETS_GO_EEVEE:19,SWORD_SHIELD:20,THE_ISLE_OF_ARMOR:21,THE_CROWN_TUNDRA:22,BRILLIANT_DIAMOND_SHINING_PEARL:23,LEGENDS_ARCEUS:24,SCARLET_VIOLET:25,THE_TEAL_MASK:26,THE_INDIGO_DISK:27,RED_GREEN_JAPAN:28,BLUE_JAPAN:29,LEGENDS_ZA:30,MEGA_DIMENSION:31,CHAMPIONS:32,BRILLIANT_DIAMOND_AND_SHINING_PEARL:23,LETS_GO:19},h={COUNTABLE:1,CONSUMABLE:2,USABLE_OVERWORLD:3,USABLE_IN_BATTLE:4,HOLDABLE:5,HOLDABLE_PASSIVE:6,HOLDABLE_ACTIVE:7,UNDERGROUND:8},ee={STAT_BOOSTS:1,EFFORT_DROP:2,MEDICINE:3,OTHER:4,IN_A_PINCH:5,PICKY_HEALING:6,TYPE_PROTECTION:7,BAKING_ONLY:8,COLLECTIBLES:9,EVOLUTION:10,SPELUNKING:11,HELD_ITEMS:12,CHOICE:13,EFFORT_TRAINING:14,BAD_HELD_ITEMS:15,TRAINING:16,PLATES:17,SPECIES_SPECIFIC:18,TYPE_ENHANCEMENT:19,EVENT_ITEMS:20,GAMEPLAY:21,PLOT_ADVANCEMENT:22,UNUSED:23,LOOT:24,ALL_MAIL:25,VITAMINS:26,HEALING:27,PP_RECOVERY:28,REVIVAL:29,STATUS_CURES:30,MULCH:32,SPECIAL_BALLS:33,STANDARD_BALLS:34,DEX_COMPLETION:35,SCARVES:36,ALL_MACHINES:37,FLUTES:38,APRICORN_BALLS:39,APRICORN_BOX:40,DATA_CARDS:41,JEWELS:42,MIRACLE_SHOOTER:43,MEGA_STONES:44,MEMORIES:45,Z_CRYSTALS:46,SPECIES_CANDIES:47,CATCHING_BONUS:48,DYNAMAX_CRYSTALS:49,NATURE_MINTS:50,CURRY_INGREDIENTS:51,TERA_SHARD:52,SANDWICH_INGREDIENTS:53,TM_MATERIALS:54,PICNIC:55,DYNAMAX_CRISTALS:49},g={BADLY_POISON:1,BURN:2,BERRY_EFFECT:3,HERB_EFFECT:4,PARALYZE:5,POISON:6,FLINCH:7},_={MISC:1,MEDICINE:2,POKEBALLS:3,MACHINES:4,BERRIES:5,MAIL:6,BATTLE:7,KEY:8},te={KANTO:1,JOHTO:2,HOENN:3,SINNOH:4,UNOVA:5,KALOS:6,ALOLA:7,GALAR:8,HISUI:9,PALDEA:10,ORRE:11},ne={FOREST:1,FIELD:2,MOUNTAIN:3,POND:4,SEA:5},re={UNKNOWN:-1,NONE:0,PARALYSIS:1,SLEEP:2,FREEZE:3,BURN:4,POISON:5,CONFUSION:6,INFATUATION:7,TRAP:8,NIGHTMARE:9,TORMENT:12,DISABLE:13,YAWN:14,HEAL_BLOCK:15,NO_TYPE_IMMUNITY:17,LEECH_SEED:18,EMBARGO:19,PERISH_SONG:20,INGRAIN:21,SILENCE:24,TAR_SHOT:42},ie={ATTACK:1,DEFENSE:2,SUPPORT:3},ae={DAMAGE:0,AILMENT:1,NET_GOOD_STATS:2,HEAL:3,DAMAGE_AILMENT:4,SWAGGER:5,DAMAGE_LOWER:6,DAMAGE_RAISE:7,DAMAGE_HEAL:8,OHKO:9,WHOLE_FIELD_EFFECT:10,FIELD_EFFECT:11,FORCE_SWITCH:12,UNIQUE:13},oe={STATUS:1,PHYSICAL:2,SPECIAL:3},v={LEVEL_UP:1,EGG:2,TUTOR:3,MACHINE:4,STADIUM_SURFING_PIKACHU:5,LIGHT_BALL_EGG:6,COLOSSEUM_PURIFICATION:7,XD_SHADOW:8,XD_PURIFICATION:9,FORM_CHANGE:10,ZYGARDE_CUBE:11,TRAIN:12},y={SPECIFIC_MOVE:1,SELECTED_POKEMON_ME_FIRST:2,ALLY:3,USERS_FIELD:4,USER_OR_ALLY:5,OPPONENTS_FIELD:6,USER:7,RANDOM_OPPONENT:8,ALL_OTHER_POKEMON:9,SELECTED_POKEMON:10,ALL_OPPONENTS:11,ENTIRE_FIELD:12,USER_AND_ALLIES:13,ALL_POKEMON:14,ALL_ALLIES:15,FAINTING_POKEMON:16,USER_AND_ALIES:13},b={MONSTER:1,WATER1:2,BUG:3,FLYING:4,GROUND:5,FAIRY:6,PLANT:7,HUMANSHAPE:8,WATER3:9,MINERAL:10,INDETERMINATE:11,WATER2:12,DITTO:13,DRAGON:14,NO_EGGS:15},x={FEMALE:1,MALE:2,GENDERLESS:3},S={SLOW:1,MEDIUM:2,FAST:3,MEDIUM_SLOW:4,SLOW_THEN_VERY_FAST:5,FAST_THEN_VERY_SLOW:6},C={HARDY:1,BOLD:2,MODEST:3,CALM:4,TIMID:5,LONELY:6,DOCILE:7,MILD:8,GENTLE:9,HASTY:10,ADAMANT:11,IMPISH:12,BASHFUL:13,CAREFUL:14,RASH:15,JOLLY:16,NAUGHTY:17,LAX:18,QUIRKY:19,NAIVE:20,BRAVE:21,RELAXED:22,QUIET:23,SASSY:24,SERIOUS:25},w={SPEED:1,POWER:2,SKILL:3,STAMINA:4,JUMP:5},T={BLACK:1,BLUE:2,BROWN:3,GRAY:4,GREEN:5,PINK:6,PURPLE:7,RED:8,WHITE:9,YELLOW:10},E={CAVE:1,FOREST:2,GRASSLAND:3,MOUNTAIN:4,RARE:5,ROUGH_TERRAIN:6,SEA:7,URBAN:8,WATERS_EDGE:9,MONTAIN:4},D={BALL:1,SQUIGGLE:2,FISH:3,ARMS:4,BLOB:5,UPRIGHT:6,LEGS:7,QUADRUPED:8,WINGS:9,TENTACLES:10,HEADS:11,HUMANOID:12,BUG_WINGS:13,ARMOR:14},O={HP:1,ATTACK:2,DEFENSE:3,SPECIAL_ATTACK:4,SPECIAL_DEFENSE:5,SPEED:6,ACCURACY:7,EVASION:8,SPECIAL:9},k={NORMAL:1,FIGHTING:2,FLYING:3,POISON:4,GROUND:5,ROCK:6,BUG:7,GHOST:8,STEEL:9,FIRE:10,WATER:11,GRASS:12,ELECTRIC:13,PSYCHIC:14,ICE:15,DRAGON:16,DARK:17,FAIRY:18,STELLAR:19,UNKNOWN:10001,SHADOW:10002},A={REST:`https://pokeapi.co/api/v2`,SPRITES:`https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites`},j={JA_HRKT:1,JA_ROMA:2,KO:3,ZH_HANT:4,FR:5,DE:6,ES:7,IT:8,EN:9,CS:10,JA:11,ZH_HANS:12,PT_BR:13,ES_419:14};var se=e({BASE_URL:()=>A,BERRIES:()=>t,BERRY_FIRMNESSES:()=>n,BERRY_FLAVORS:()=>r,CONTEST_TYPES:()=>i,CURRENCIES:()=>a,EGG_GROUPS:()=>b,ENCOUNTER_CONDITIONS:()=>s,ENCOUNTER_CONDITION_VALUES:()=>c,ENCOUNTER_METHODS:()=>o,ENDPOINTS:()=>l,EVOLUTION_TRIGGERS:()=>u,GENDERS:()=>x,GENERATIONS:()=>d,GROWTH_RATES:()=>S,ITEM_ATTRIBUTES:()=>h,ITEM_CATEGORIES:()=>ee,ITEM_FLING_EFFECTS:()=>g,ITEM_POCKETS:()=>_,LANGUAGES:()=>j,MOVE_AILMENTS:()=>re,MOVE_BATTLE_STYLES:()=>ie,MOVE_CATEGORIES:()=>ae,MOVE_DAMAGE_CLASSES:()=>oe,MOVE_LEARN_METHODS:()=>v,MOVE_TARGETS:()=>y,NATURES:()=>C,PAL_PARK_AREAS:()=>ne,POKEATHLON_STATS:()=>w,POKEDEXES:()=>f,POKEMON_COLORS:()=>T,POKEMON_HABITATS:()=>E,POKEMON_SHAPES:()=>D,REGIONS:()=>te,STATS:()=>O,TYPES:()=>k,VERSIONS:()=>p,VERSION_GROUPS:()=>m});const M=3e5,N=(e,t)=>e!==void 0&&Number.isFinite(e)?Math.max(Math.floor(e),0):t;var P=class{entries=new Map;ttl;maxEntries;constructor(e){this.ttl=e?.ttl??M,this.maxEntries=N(e?.maxEntries,500)}get(e){let t=this.entries.get(e);if(t){if(t.expiresAt<=Date.now()){this.entries.delete(e);return}return this.entries.delete(e),this.entries.set(e,t),t.value}}set(e,t){if(this.entries.delete(e),this.maxEntries!==0){if(this.entries.size>=this.maxEntries){let e=this.entries.keys().next();e.done||this.entries.delete(e.value)}this.entries.set(e,{value:t,expiresAt:Date.now()+this.ttl})}}delete(e){this.entries.delete(e)}clear(){this.entries.clear()}},F=class{entries=new Map;maxEntries;constructor(e){this.maxEntries=N(e?.maxEntries,500)}get(e){let t=this.entries.get(e);if(t)return this.entries.delete(e),this.entries.set(e,t),t}set(e,t){if(this.entries.delete(e),this.maxEntries!==0){if(this.entries.size>=this.maxEntries){let e=this.entries.keys().next();e.done||this.entries.delete(e.value)}this.entries.set(e,t)}}clear(){this.entries.clear()}},ce=class{storage;ttl;prefix;constructor(e){this.storage=e.storage,this.ttl=e.ttl??M,this.prefix=e.prefix??`pokenode:`}async get(e){let t=await this.read(this.prefix+e);if(t){if(t.expiresAt<=Date.now()){await this.remove(this.prefix+e);return}return t.value}}async set(e,t){let n=JSON.stringify({value:t,expiresAt:Date.now()+this.ttl});try{await this.storage.setItem(this.prefix+e,n)}catch{await this.evict();try{await this.storage.setItem(this.prefix+e,n)}catch{return}}}async delete(e){await this.storage.removeItem(this.prefix+e)}async clear(){for(let e of await this.ownKeys())await this.remove(e)}async read(e){let t;try{t=await this.storage.getItem(e)}catch{return}if(t!==null)try{return JSON.parse(t)}catch{await this.remove(e);return}}async evict(){let e=await this.ownKeys(),t=await Promise.all(e.map(async e=>({key:e,expiresAt:(await this.read(e))?.expiresAt}))),n=Date.now(),r=t.filter(({expiresAt:e})=>e===void 0||e<=n);if(r.length>0){for(let{key:e}of r)await this.remove(e);return}let i=t.sort((e,t)=>(e.expiresAt??0)-(t.expiresAt??0));for(let{key:e}of i.slice(0,Math.ceil(i.length/4)))await this.remove(e)}async ownKeys(){return(await this.allKeys()).filter(e=>e.startsWith(this.prefix))}async allKeys(){try{if(this.storage.getAllKeys!==void 0)return[...await this.storage.getAllKeys()];let{key:e,length:t}=this.storage;if(e===void 0||t===void 0)return[];let n=[];for(let r=0;r<t;r+=1){let t=e.call(this.storage,r);t!==null&&n.push(t)}return n}catch{return[]}}async remove(e){try{await this.storage.removeItem(e)}catch{}}};const I=`pokenode:http`;var L=class extends Error{name=`PokenodeError`;kind=I;status;statusText;url;body;constructor(e,t,n){super(n??`Request to ${e.url} failed with status ${e.status}`),this.status=e.status,this.statusText=e.statusText,this.url=e.url,this.body=t}static isPokenodeError(e){return typeof e==`object`&&!!e&&`kind`in e&&e.kind===I}};const R=async(e,t)=>{let n;try{n=await e.json()}catch{n=void 0}return new L(e,n,t)},z=e=>({msg:e,message:e}),le={debug(e){if(e.event===`request`){console.log(`[ Request Config ] ${e.method} | ${e.url}`);return}if(e.event===`retry`){console.log(`[ Retry ] ATTEMPT ${e.attempt} | STATUS ${e.status??`NONE`} | IN ${e.delayMs.toFixed(0)}ms | ${e.url}`);return}if(e.event===`cancelled`){console.log(`[ Cancelled ] ${e.url} | AFTER ${e.durationMs.toFixed(1)}ms`);return}console.log(`[ Response ] STATUS ${e.status} | ${e.source.toUpperCase()} | ${e.durationMs.toFixed(1)}ms`)},error({url:e,err:t}){let{name:n,message:r}=t instanceof Error?t:{name:`UNKNOWN`,message:String(t)};console.error(`[ Response Error ] ${e} | CODE ${n} | ${r}`)}};var ue=class{requests=new Map;async share(e,t,n){let r=this.requests.get(e),i=r??this.dispatch(e,t,n);return{value:await this.join(e,i,t),joined:r!==void 0}}dispatch(e,t,n){let r=t?new AbortController:void 0,i={promise:n(r?.signal),controller:r,waiters:0};return i.promise=i.promise.finally(()=>this.release(e,i)),i.promise.catch(()=>{}),this.requests.set(e,i),i}release(e,t){this.requests.get(e)===t&&this.requests.delete(e)}join(e,t,n){return t.waiters+=1,n?new Promise((r,i)=>{let a=()=>{--t.waiters,!(t.waiters>0)&&(this.release(e,t),t.controller?.abort(n.reason))};if(n.aborted){a(),i(n.reason);return}let o=()=>{a(),i(n.reason)};n.addEventListener(`abort`,o,{once:!0}),t.promise.then(e=>{n.removeEventListener(`abort`,o),r(e)},e=>{n.removeEventListener(`abort`,o),i(e)})}):t.promise}};const B=async(e,t,n)=>{let r=Array(e.length),i=0,a=!1,o=async()=>{for(;i<e.length&&!a;){let t=i;i+=1;try{r[t]=await n(e[t])}catch(e){throw a=!0,e}}},s=Number.isFinite(t)?t:4,c=Array.from({length:Math.min(Math.max(s,1),e.length)},()=>o());return await Promise.all(c),r};async function*de(e,t,n){let r=n?.pageSize??20,i=n?.concurrency??4,a=0;for(;;){let o=await e(a,r);if(o.results.length===0||(n?.resolve?yield*await B(o.results,i,t):yield*o.results,a+=o.results.length,o.results.length<r||a>=o.count))return}}const V=5e3,fe=[429,500,502,503,504],pe=e=>{if(!e)return 1;let t=e.attempts??3;return Number.isFinite(t)?Math.max(Math.floor(t),1):3},H=(e,t)=>e!==void 0&&Number.isFinite(e)?Math.max(e,0):t,me=e=>{if(e===null)return;let t=e.trim();if(t===``)return;let n=Number(t);if(Number.isFinite(n))return Math.max(n,0)*1e3;let r=Date.parse(t);return Number.isNaN(r)?void 0:Math.max(r-Date.now(),0)},U=(e,t)=>t?.aborted===!0||e instanceof Error&&(e.name===`AbortError`||e.name===`TimeoutError`),he=(e,t)=>new Promise((n,r)=>{if(t?.aborted){r(t.reason);return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e);i.unref?.();let a=()=>{clearTimeout(i),r(t?.reason)};t?.addEventListener(`abort`,a,{once:!0})}),ge=async(e,t,n)=>{let r=n?.statuses??fe,i=H(n?.maxDelay,V);if(t||!r.includes(e.status))throw await R(e);let a=me(e.headers.get(`Retry-After`));if(a!==void 0&&a>i)throw await R(e);return a},W=async e=>{let{url:t,attempt:n,status:r,retryAfter:i,signal:a,retry:o,logger:s}=e,c=H(o?.initialDelay,300),l=H(o?.maxDelay,V),u=Math.min(c*2**(n-1),l),d=i??u/2+u/2*Math.random();s?.debug({event:`retry`,...z(`pokeapi request failed, retrying`),url:t,attempt:n,delayMs:d,...r===void 0?{}:{status:r}}),await he(d,a)},G=e=>{let t=e.length;for(;t>0&&e[t-1]===`/`;)--t;return e.slice(0,t)},_e=(e,t,n)=>`${e}?${new URLSearchParams({offset:String(t),limit:String(n)})}`,ve=e=>{let t=e.indexOf(`?`);return t===-1?G(e):G(e.slice(0,t))+e.slice(t)},ye=/^v\d+$/,K=e=>{try{return decodeURIComponent(e)}catch{return e}},be=(e,t)=>{let n=`${K(e)}:${K(t)}`,r=new TextEncoder().encode(n),i=``;for(let e of r)i+=String.fromCodePoint(e);return`Basic ${btoa(i)}`},xe=e=>{if(!e.includes(`@`))return{url:e,authorization:void 0};let t;try{t=new URL(e)}catch{return{url:e,authorization:void 0}}if(!t.username&&!t.password)return{url:e,authorization:void 0};let n=be(t.username,t.password);return t.username=``,t.password=``,{url:t.toString(),authorization:n}},Se=(e,t)=>{let n=new URL(e),r=new URL(t),i=G(r.pathname);if(n.origin===r.origin&&(n.pathname===i||n.pathname.startsWith(`${i}/`)))return`${n.pathname.slice(i.length)}${n.search}`;let a=n.pathname.split(`/`),o=a.findIndex(e=>ye.test(e));if(o===-1)throw TypeError(`Cannot resolve "${e}" against the base URL "${t}"`);return`/${a.slice(o+1).join(`/`)}${n.search}`},Ce=(e,t)=>e?`in-flight`:t===!0?`revalidated`:`network`,we=e=>{if(e)return e===!0?new F:e};var q=class e{config;state;scope;constructor(e,t,n={}){this.config=e,this.state=t,this.scope=n}static create(t){return new e({baseURL:G(t?.baseURL??A.REST),fetch:t?.fetch??((e,t)=>globalThis.fetch(e,t)),logger:t?.logger,retry:t?.retry},{cache:t?.cache===!1?void 0:t?.cache??new P,etags:we(t?.revalidate),inFlight:new ue,counts:{network:0,cache:0,"in-flight":0,revalidated:0},roundTrips:{count:0}})}get stats(){let{network:e,cache:t,revalidated:n}=this.state.counts;return{network:e,cache:t,inFlight:this.state.counts[`in-flight`],revalidated:n,roundTrips:this.state.roundTrips.count}}get cache(){return this.state.cache}with(t){return new e(this.config,this.state,{...this.scope,...t})}async clear(){await this.state.cache?.clear?.(),this.state.etags?.clear()}async resource(e,...t){let n=t.map(e=>encodeURIComponent(e)).join(`/`);return this.request(n===``?e:`${e}/${n}`)}async byURL(e,t=this.config.baseURL){let n=typeof e==`string`?e:e.url;return this.request(Se(n,t),t)}async list(e,t=0,n=20){return this.request(_e(e,t,n))}async resolveAll(e,t=4){return B(e,t,e=>this.byURL(e))}walk(e,t){return de(e,e=>this.byURL(e),t)}async request(e,t=this.config.baseURL){let n=e.startsWith(`/`)?e:`/${e}`,{url:r,authorization:i}=xe(ve(`${G(t)}${n}`)),a=performance.now();this.config.logger?.debug({event:`request`,...z(`pokeapi request`),method:`GET`,url:r});let o=this.requestSignal();try{if(o?.aborted)throw o.reason;let e=await this.state.cache?.get(r);if(e!==void 0)return this.recordResponse(r,200,`cache`,a),e;let{value:t,joined:n}=await this.state.inFlight.share(r,o,e=>this.fetchResource(r,i,e));return this.recordResponse(r,t.status,Ce(n,t.revalidated),a),t.data}catch(e){throw U(e,o)?(this.config.logger?.debug({event:`cancelled`,...z(`pokeapi request cancelled`),url:r,reason:e,durationMs:performance.now()-a}),e):(this.config.logger?.error({event:`error`,...z(`pokeapi request failed`),url:r,err:e,error:e}),e)}}requestSignal(){let{signal:e,timeout:t}=this.scope;if(t===void 0)return e;let n=AbortSignal.timeout(t);return e?AbortSignal.any([e,n]):n}async fetchResource(e,t,n){let r=this.state.etags?.get(e),i={Accept:`application/json`,...t===void 0?{}:{Authorization:t},...r===void 0?{}:{"If-None-Match":r.etag}},a=n?{headers:i,signal:n}:{headers:i},{retry:o,logger:s}=this.config,c=pe(o);for(let t=1;;t+=1){let i=t>=c,l;try{this.state.roundTrips.count+=1,l=await this.config.fetch(e,a)}catch(r){if(i||U(r,n))throw r;await W({url:e,attempt:t,status:void 0,retryAfter:void 0,signal:n,retry:o,logger:s});continue}let u=await this.resolveResponse(e,l,r);if(u!==void 0)return u;let d=await ge(l,i,o);l.body?.cancel().catch(()=>{}),await W({url:e,attempt:t,status:l.status,retryAfter:d,signal:n,retry:o,logger:s})}}async resolveResponse(e,t,n){if(t.status===304){if(n===void 0)throw await R(t,`Request to ${t.url} was answered 304, but this client holds no response to reuse`);let r=t.headers.get(`ETag`);return r!==null&&r!==n.etag&&this.state.etags?.set(e,{etag:r,value:n.value}),await this.state.cache?.set(e,n.value),{data:n.value,status:t.status,revalidated:!0}}if(!t.ok)return;let r=await t.json(),i=t.headers.get(`ETag`);return i!==null&&this.state.etags?.set(e,{etag:i,value:r}),await this.state.cache?.set(e,r),{data:r,status:t.status}}recordResponse(e,t,n,r){this.state.counts[n]+=1,this.config.logger?.debug({event:`response`,...z(`pokeapi response`),url:e,status:t,source:n,durationMs:performance.now()-r})}},J=class{#e;constructor(e){this.#e=e instanceof q?e:q.create(e)}get cache(){return this.#e.cache}get stats(){return this.#e.stats}statsSince(e){let t=this.#e.stats;return{network:t.network-e.network,cache:t.cache-e.cache,inFlight:t.inFlight-e.inFlight,revalidated:t.revalidated-e.revalidated,roundTrips:t.roundTrips-e.roundTrips}}with(e){let t=this.constructor;return new t(this.#e.with(e))}async clearCache(){await this.#e.clear()}async resolve(e){return this.#e.byURL(e)}async resolveAll(e,t){return this.#e.resolveAll(e,t?.concurrency)}async getResource(e,...t){return this.#e.resource(e,...t)}async getResourceByURL(e,t){return this.#e.byURL(e,t)}async getListResource(e,t,n){return this.#e.list(e,t,n)}async getUnnamedListResource(e,t,n){return this.#e.list(e,t,n)}walk(e,t){return this.#e.walk(e,t)}},Y=class extends J{paginate(e,t){let n=typeof e==`function`?e:(t,n)=>this[e](t,n);return this.walk(n,t)}},Te=class extends Y{async getBerryByName(e){return this.getResource(l.BERRY,e)}async getBerryById(e){return this.getResource(l.BERRY,e)}async getBerryFirmnessById(e){return this.getResource(l.BERRY_FIRMNESS,e)}async getBerryFirmnessByName(e){return this.getResource(l.BERRY_FIRMNESS,e)}async getBerryFlavorById(e){return this.getResource(l.BERRY_FLAVOR,e)}async getBerryFlavorByName(e){return this.getResource(l.BERRY_FLAVOR,e)}async listBerries(e,t){return this.getListResource(l.BERRY,e,t)}async listBerryFirmnesses(e,t){return this.getListResource(l.BERRY_FIRMNESS,e,t)}async listBerryFlavors(e,t){return this.getListResource(l.BERRY_FLAVOR,e,t)}},Ee=class extends Y{async getContestTypeByName(e){return this.getResource(l.CONTEST_TYPE,e)}async getContestTypeById(e){return this.getResource(l.CONTEST_TYPE,e)}async getContestEffectById(e){return this.getResource(l.CONTEST_EFFECT,e)}async getSuperContestEffectById(e){return this.getResource(l.SUPER_CONTEST_EFFECT,e)}async listContestTypes(e,t){return this.getListResource(l.CONTEST_TYPE,e,t)}async listContestEffects(e,t){return this.getUnnamedListResource(l.CONTEST_EFFECT,e,t)}async listSuperContestEffects(e,t){return this.getUnnamedListResource(l.SUPER_CONTEST_EFFECT,e,t)}},De=class extends Y{async getCurrencyByName(e){return this.getResource(l.CURRENCY,e)}async getCurrencyById(e){return this.getResource(l.CURRENCY,e)}async listCurrencies(e,t){return this.getListResource(l.CURRENCY,e,t)}},Oe=class extends Y{async getEncounterMethodByName(e){return this.getResource(l.ENCOUNTER_METHOD,e)}async getEncounterMethodById(e){return this.getResource(l.ENCOUNTER_METHOD,e)}async getEncounterConditionById(e){return this.getResource(l.ENCOUNTER_CONDITION,e)}async getEncounterConditionByName(e){return this.getResource(l.ENCOUNTER_CONDITION,e)}async getEncounterConditionValueByName(e){return this.getResource(l.ENCOUNTER_CONDITION_VALUE,e)}async getEncounterConditionValueById(e){return this.getResource(l.ENCOUNTER_CONDITION_VALUE,e)}async listEncounterMethods(e,t){return this.getListResource(l.ENCOUNTER_METHOD,e,t)}async listEncounterConditions(e,t){return this.getListResource(l.ENCOUNTER_CONDITION,e,t)}async listEncounterConditionValues(e,t){return this.getListResource(l.ENCOUNTER_CONDITION_VALUE,e,t)}},ke=class extends Y{async getEvolutionChainById(e){return this.getResource(l.EVOLUTION_CHAIN,e)}async getEvolutionTriggerById(e){return this.getResource(l.EVOLUTION_TRIGGER,e)}async getEvolutionTriggerByName(e){return this.getResource(l.EVOLUTION_TRIGGER,e)}async listEvolutionChains(e,t){return this.getUnnamedListResource(l.EVOLUTION_CHAIN,e,t)}async listEvolutionTriggers(e,t){return this.getListResource(l.EVOLUTION_TRIGGER,e,t)}},Ae=class extends Y{async getGenerationByName(e){return this.getResource(l.GENERATION,e)}async getGenerationById(e){return this.getResource(l.GENERATION,e)}async getPokedexByName(e){return this.getResource(l.POKEDEX,e)}async getPokedexById(e){return this.getResource(l.POKEDEX,e)}async getVersionByName(e){return this.getResource(l.VERSION,e)}async getVersionById(e){return this.getResource(l.VERSION,e)}async getVersionGroupByName(e){return this.getResource(l.VERSION_GROUP,e)}async getVersionGroupById(e){return this.getResource(l.VERSION_GROUP,e)}async listGenerations(e,t){return this.getListResource(l.GENERATION,e,t)}async listPokedexes(e,t){return this.getListResource(l.POKEDEX,e,t)}async listVersions(e,t){return this.getListResource(l.VERSION,e,t)}async listVersionGroups(e,t){return this.getListResource(l.VERSION_GROUP,e,t)}},je=class extends Y{async getItemByName(e){return this.getResource(l.ITEM,e)}async getItemById(e){return this.getResource(l.ITEM,e)}async getItemAttributeByName(e){return this.getResource(l.ITEM_ATTRIBUTE,e)}async getItemAttributeById(e){return this.getResource(l.ITEM_ATTRIBUTE,e)}async getItemCategoryByName(e){return this.getResource(l.ITEM_CATEGORY,e)}async getItemCategoryById(e){return this.getResource(l.ITEM_CATEGORY,e)}async getItemFlingEffectByName(e){return this.getResource(l.ITEM_FLING_EFFECT,e)}async getItemFlingEffectById(e){return this.getResource(l.ITEM_FLING_EFFECT,e)}async getItemPocketByName(e){return this.getResource(l.ITEM_POCKET,e)}async getItemPocketById(e){return this.getResource(l.ITEM_POCKET,e)}async listItems(e,t){return this.getListResource(l.ITEM,e,t)}async listItemAttributes(e,t){return this.getListResource(l.ITEM_ATTRIBUTE,e,t)}async listItemCategories(e,t){return this.getListResource(l.ITEM_CATEGORY,e,t)}async listItemFlingEffects(e,t){return this.getListResource(l.ITEM_FLING_EFFECT,e,t)}async listItemPockets(e,t){return this.getListResource(l.ITEM_POCKET,e,t)}},Me=class extends Y{async getLocationByName(e){return this.getResource(l.LOCATION,e)}async getLocationById(e){return this.getResource(l.LOCATION,e)}async getLocationAreaByName(e){return this.getResource(l.LOCATION_AREA,e)}async getLocationAreaById(e){return this.getResource(l.LOCATION_AREA,e)}async getPalParkAreaByName(e){return this.getResource(l.PALPARK_AREA,e)}async getPalParkAreaById(e){return this.getResource(l.PALPARK_AREA,e)}async getRegionByName(e){return this.getResource(l.REGION,e)}async getRegionById(e){return this.getResource(l.REGION,e)}async listLocations(e,t){return this.getListResource(l.LOCATION,e,t)}async listLocationAreas(e,t){return this.getListResource(l.LOCATION_AREA,e,t)}async listPalParkAreas(e,t){return this.getListResource(l.PALPARK_AREA,e,t)}async listRegions(e,t){return this.getListResource(l.REGION,e,t)}},Ne=class extends Y{async getMachineById(e){return this.getResource(l.MACHINE,e)}async listMachines(e,t){return this.getUnnamedListResource(l.MACHINE,e,t)}},Pe=class extends Y{async getMoveByName(e){return this.getResource(l.MOVE,e)}async getMoveById(e){return this.getResource(l.MOVE,e)}async getMoveAilmentByName(e){return this.getResource(l.MOVE_AILMENT,e)}async getMoveAilmentById(e){return this.getResource(l.MOVE_AILMENT,e)}async getMoveBattleStyleByName(e){return this.getResource(l.MOVE_BATTLE_STYLE,e)}async getMoveBattleStyleById(e){return this.getResource(l.MOVE_BATTLE_STYLE,e)}async getMoveCategoryByName(e){return this.getResource(l.MOVE_CATEGORY,e)}async getMoveCategoryById(e){return this.getResource(l.MOVE_CATEGORY,e)}async getMoveDamageClassByName(e){return this.getResource(l.MOVE_DAMAGE_CLASS,e)}async getMoveDamageClassById(e){return this.getResource(l.MOVE_DAMAGE_CLASS,e)}async getMoveLearnMethodByName(e){return this.getResource(l.MOVE_LEARN_METHOD,e)}async getMoveLearnMethodById(e){return this.getResource(l.MOVE_LEARN_METHOD,e)}async getMoveTargetByName(e){return this.getResource(l.MOVE_TARGET,e)}async getMoveTargetById(e){return this.getResource(l.MOVE_TARGET,e)}async listMoves(e,t){return this.getListResource(l.MOVE,e,t)}async listMoveAilments(e,t){return this.getListResource(l.MOVE_AILMENT,e,t)}async listMoveBattleStyles(e,t){return this.getListResource(l.MOVE_BATTLE_STYLE,e,t)}async listMoveCategories(e,t){return this.getListResource(l.MOVE_CATEGORY,e,t)}async listMoveDamageClasses(e,t){return this.getListResource(l.MOVE_DAMAGE_CLASS,e,t)}async listMoveLearnMethods(e,t){return this.getListResource(l.MOVE_LEARN_METHOD,e,t)}async listMoveTargets(e,t){return this.getListResource(l.MOVE_TARGET,e,t)}},Fe=class extends Y{async getAbilityByName(e){return this.getResource(l.ABILITY,e)}async getAbilityById(e){return this.getResource(l.ABILITY,e)}async getCharacteristicById(e){return this.getResource(l.CHARACTERISTIC,e)}async getEggGroupByName(e){return this.getResource(l.EGG_GROUP,e)}async getEggGroupById(e){return this.getResource(l.EGG_GROUP,e)}async getGenderByName(e){return this.getResource(l.GENDER,e)}async getGenderById(e){return this.getResource(l.GENDER,e)}async getGrowthRateByName(e){return this.getResource(l.GROWTH_RATE,e)}async getGrowthRateById(e){return this.getResource(l.GROWTH_RATE,e)}async getNatureByName(e){return this.getResource(l.NATURE,e)}async getNatureById(e){return this.getResource(l.NATURE,e)}async getPokeathlonStatByName(e){return this.getResource(l.POKEATHLON_STAT,e)}async getPokeathlonStatById(e){return this.getResource(l.POKEATHLON_STAT,e)}async getPokemonByName(e){return this.getResource(l.POKEMON,e)}async getPokemonById(e){return this.getResource(l.POKEMON,e)}async getPokemonLocationAreaById(e){return this.getResource(l.POKEMON,e,`encounters`)}async getPokemonColorByName(e){return this.getResource(l.POKEMON_COLOR,e)}async getPokemonColorById(e){return this.getResource(l.POKEMON_COLOR,e)}async getPokemonFormByName(e){return this.getResource(l.POKEMON_FORM,e)}async getPokemonFormById(e){return this.getResource(l.POKEMON_FORM,e)}async getPokemonHabitatByName(e){return this.getResource(l.POKEMON_HABITAT,e)}async getPokemonHabitatById(e){return this.getResource(l.POKEMON_HABITAT,e)}async getPokemonShapeByName(e){return this.getResource(l.POKEMON_SHAPE,e)}async getPokemonShapeById(e){return this.getResource(l.POKEMON_SHAPE,e)}async getPokemonSpeciesByName(e){return this.getResource(l.POKEMON_SPECIES,e)}async getPokemonSpeciesById(e){return this.getResource(l.POKEMON_SPECIES,e)}async getStatByName(e){return this.getResource(l.STAT,e)}async getStatById(e){return this.getResource(l.STAT,e)}async getTypeByName(e){return this.getResource(l.TYPE,e)}async getTypeById(e){return this.getResource(l.TYPE,e)}async listAbilities(e,t){return this.getListResource(l.ABILITY,e,t)}async listCharacteristics(e,t){return this.getUnnamedListResource(l.CHARACTERISTIC,e,t)}async listEggGroups(e,t){return this.getListResource(l.EGG_GROUP,e,t)}async listGenders(e,t){return this.getListResource(l.GENDER,e,t)}async listGrowthRates(e,t){return this.getListResource(l.GROWTH_RATE,e,t)}async listNatures(e,t){return this.getListResource(l.NATURE,e,t)}async listPokeathlonStats(e,t){return this.getListResource(l.POKEATHLON_STAT,e,t)}async listPokemons(e,t){return this.getListResource(l.POKEMON,e,t)}async listPokemonColors(e,t){return this.getListResource(l.POKEMON_COLOR,e,t)}async listPokemonForms(e,t){return this.getListResource(l.POKEMON_FORM,e,t)}async listPokemonHabitats(e,t){return this.getListResource(l.POKEMON_HABITAT,e,t)}async listPokemonShapes(e,t){return this.getListResource(l.POKEMON_SHAPE,e,t)}async listPokemonSpecies(e,t){return this.getListResource(l.POKEMON_SPECIES,e,t)}async listStats(e,t){return this.getListResource(l.STAT,e,t)}async listTypes(e,t){return this.getListResource(l.TYPE,e,t)}},X=class extends Y{async getLanguageById(e){return this.getResource(l.LANGUAGE,e)}async getLanguageByName(e){return this.getResource(l.LANGUAGE,e)}async getResourceByUrl(e){return this.resolve(e)}listLanguages(e,t){return this.getListResource(l.LANGUAGE,e,t)}},Ie=class extends J{berry;contest;currency;encounter;evolution;game;item;location;machine;move;pokemon;utility;constructor(e){let t=e instanceof q?e:q.create(e);super(t),this.berry=new Te(t),this.contest=new Ee(t),this.currency=new De(t),this.encounter=new Oe(t),this.evolution=new ke(t),this.game=new Ae(t),this.item=new je(t),this.location=new Me(t),this.machine=new Ne(t),this.move=new Pe(t),this.pokemon=new Fe(t),this.utility=new X(t)}};const Le=(e,t)=>t===void 0?e.evolution_details:e.evolution_details.filter(e=>e.version_group.name===t),Re=(e,t)=>{let n=(e,r)=>e.evolves_to.flatMap(i=>{let a=Le(i,t?.versionGroup),o=n(i,r+1);return a.length===0?o:[{from:e.species,to:i.species,details:a,depth:r,isBaby:i.is_baby},...o]});return n(e.chain,1)},ze=(e,t)=>{let n=typeof t==`string`?t:t.name,r=(e,t)=>{if(e.species.name===n)return t;for(let n of e.evolves_to){let i={from:e.species,to:n.species,details:n.evolution_details,depth:t.length+1,isBaby:n.is_baby},a=r(n,[...t,i]);if(a!==void 0)return a}};return r(e.chain,[])},Be=[({item:e})=>e===null?null:{kind:`item`,item:e},({held_item:e})=>e===null?null:{kind:`held-item`,item:e},({min_level:e})=>e===null?null:{kind:`min-level`,level:e},({min_happiness:e})=>e===null?null:{kind:`min-happiness`,happiness:e},({min_beauty:e})=>e===null?null:{kind:`min-beauty`,beauty:e},({min_affection:e})=>e===null?null:{kind:`min-affection`,affection:e},({known_move:e})=>e===null?null:{kind:`known-move`,move:e},({known_move_type:e})=>e===null?null:{kind:`known-move-type`,type:e},({used_move:e})=>e===null?null:{kind:`used-move`,move:e},({min_move_count:e})=>e===null?null:{kind:`min-move-count`,count:e},({min_steps:e})=>e===null?null:{kind:`min-steps`,steps:e},({min_damage_taken:e})=>e===null?null:{kind:`min-damage-taken`,damage:e},({location:e})=>e===null?null:{kind:`location`,location:e},({region:e})=>e===null?null:{kind:`region`,region:e},({time_of_day:e})=>e===``?null:{kind:`time-of-day`,time:e},({gender:e})=>e===null?null:{kind:`gender`,gender:e},({relative_physical_stats:e})=>e===null?null:{kind:`relative-physical-stats`,comparison:e},({party_species:e})=>e===null?null:{kind:`party-species`,species:e},({party_type:e})=>e===null?null:{kind:`party-type`,type:e},({trade_species:e})=>e===null?null:{kind:`trade-species`,species:e},({base_form:e})=>e===null?null:{kind:`base-form`,form:e},({evolved_form:e})=>e===null?null:{kind:`evolved-form`,form:e},({needs_overworld_rain:e})=>e?{kind:`needs-overworld-rain`}:null,({turn_upside_down:e})=>e?{kind:`turn-upside-down`}:null,({near_special_rock:e})=>e?{kind:`near-special-rock`}:null,({needs_multiplayer:e})=>e?{kind:`needs-multiplayer`}:null],Ve=e=>[{kind:`trigger`,trigger:e.trigger},...Be.flatMap(t=>t(e)??[])],He={"level-up":`level up`,trade:`trade`,"use-item":`use an item`,shed:`shed`,spin:`spin`,"tower-of-darkness":`train in the Tower of Darkness`,"tower-of-waters":`train in the Tower of Waters`,"three-critical-hits":`land three critical hits in one battle`,"take-damage":`take damage`,other:`an in-game event`,"agile-style-move":`use agile style moves`,"strong-style-move":`use strong style moves`,"recoil-damage":`take recoil damage`,"use-move":`use a move`,"three-defeated-bisharp":`defeat three pack-leading Bisharp`,"gimmighoul-coins":`collect Gimmighoul Coins`},Ue=e=>e.name.replaceAll(`-`,` `),We={day:`during the day`,night:`during the night`,dusk:`at dusk`,"full-moon":`under a full moon`},Ge={1:`female`,2:`male`,3:`genderless`},Ke=e=>Ge[e]??`gender ${e}`,qe={1:`>`,0:`=`,"-1":`<`},Z=(e=Ue)=>({trigger:({trigger:t})=>He[t.name]??e(t),item:({item:t})=>`use ${e(t)}`,"held-item":({item:t})=>`holding ${e(t)}`,"min-level":({level:e})=>`at level ${e}`,"min-happiness":({happiness:e})=>`with at least ${e} happiness`,"min-beauty":({beauty:e})=>`with at least ${e} beauty`,"min-affection":({affection:e})=>`with at least ${e} affection`,"known-move":({move:t})=>`knowing ${e(t)}`,"known-move-type":({type:t})=>`knowing a ${e(t)}-type move`,"used-move":({move:t})=>`after using ${e(t)}`,"min-move-count":({count:e})=>`${e} times`,"min-steps":({steps:e})=>`after ${e} steps`,"min-damage-taken":({damage:e})=>`after taking ${e} damage`,location:({location:t})=>`at ${e(t)}`,region:({region:t})=>`in ${e(t)}`,"time-of-day":({time:e})=>We[e],gender:({gender:e})=>`as a ${Ke(e)}`,"relative-physical-stats":({comparison:e})=>`with Attack ${qe[String(e)]} Defense`,"party-species":({species:t})=>`with ${e(t)} in the party`,"party-type":({type:t})=>`with a ${e(t)}-type in the party`,"trade-species":({species:t})=>`traded for ${e(t)}`,"base-form":({form:t})=>`in its ${e(t)} form`,"evolved-form":({form:t})=>`into its ${e(t)} form`,"needs-overworld-rain":()=>`while it is raining`,"turn-upside-down":()=>`with the console upside down`,"near-special-rock":()=>`near a special rock`,"needs-multiplayer":()=>`in multiplayer`}),Je=Z(),Ye=new WeakMap,Xe=e=>{if(e===void 0)return Je;let t=Ye.get(e)??Z(e);return Ye.set(e,t),t},Ze=(e,t)=>t[e.kind](e),Qe=(e,t)=>{let n={...Xe(t?.name),...t?.phrases},r=e.some(e=>e.kind===`item`)&&e.some(e=>e.kind===`trigger`&&e.trigger.name===`use-item`);return e.filter(e=>!(r&&e.kind===`trigger`)).map(e=>Ze(e,n)).join(`, `)},$e=e=>{let t=typeof e==`string`?{language:e}:e??{};return{...t,language:t.language??`en`}},et=(e,t)=>{let n=t.toLowerCase();return e.filter(e=>e.language.name.toLowerCase()===n)},tt=(e,t)=>nt(e,t)[0],nt=(e,t)=>{let n=$e(t),r=et(e,n.language);return r.length>0||n.fallback===void 0?r:et(e,n.fallback)},rt=/\/(-?\d+)\/?$/,it=e=>{let t=typeof e==`string`?e:e.url,n=rt.exec(t);if(n===null)throw TypeError(`No resource id in URL: ${t}`);return Number(n[1])},at={default:{directory:``,extension:`png`},"official-artwork":{directory:`other/official-artwork`,extension:`png`},home:{directory:`other/home`,extension:`png`},"dream-world":{directory:`other/dream-world`,extension:`svg`},showdown:{directory:`other/showdown`,extension:`gif`}},ot=(e,t={})=>{let{variant:n=`default`,shiny:r=!1,back:i=!1,female:a=!1}=t,{directory:o,extension:s}=at[n],c=[o,i&&`back`,r&&`shiny`,a&&`female`];return[A.SPRITES,`pokemon`,...c.filter(Boolean),`${e}.${s}`].join(`/`)},st=new Set(Object.entries(k).filter(([,e])=>e<1e4).map(([e])=>e.toLowerCase())),ct=e=>st.has(e),Q=e=>{let t=e.toUpperCase().replaceAll(`-`,`_`);return d[t]??-1},lt=[[`no_damage_to`,0],[`half_damage_to`,.5],[`double_damage_to`,2]],ut=[[`no_damage_from`,0],[`half_damage_from`,.5],[`double_damage_from`,2]],dt=(e,t,n)=>{for(let[r,i]of t)if(e[r].some(e=>e.name===n))return i;return 1},ft=(e,t)=>dt(e,lt,t),pt=(e,t)=>t.reduce((t,n)=>t*ft(e,n.name),1),$=(e,t)=>{if(t===void 0)return e.damage_relations;let n=Q(t);if(n===-1)return e.damage_relations;if(!(n<Q(e.generation.name)))return[...e.past_damage_relations].sort((e,t)=>Q(e.generation.name)-Q(t.generation.name)).find(e=>Q(e.generation.name)>=n)?.damage_relations??e.damage_relations};function mt(e,t,n){let r=$(e,n?.generation);return r===void 0?void 0:pt(r,t)}const ht=(e,t,n)=>{let r={};for(let i of e){if(!ct(i.name))continue;let e=$(i,n?.generation);e!==void 0&&(r[i.name]=pt(e,t))}return r},gt=e=>{let t={};for(let n of st)t[n]=e.reduce((e,t)=>e*dt(t.damage_relations,ut,n),1);return t};export{A as BASE_URL,t as BERRIES,n as BERRY_FIRMNESSES,r as BERRY_FLAVORS,Te as BerryClient,se as CONSTANTS,i as CONTEST_TYPES,a as CURRENCIES,Ee as ContestClient,De as CurrencyClient,b as EGG_GROUPS,s as ENCOUNTER_CONDITIONS,c as ENCOUNTER_CONDITION_VALUES,o as ENCOUNTER_METHODS,l as ENDPOINTS,u as EVOLUTION_TRIGGERS,Oe as EncounterClient,F as EtagStore,ke as EvolutionClient,x as GENDERS,d as GENERATIONS,S as GROWTH_RATES,Ae as GameClient,h as ITEM_ATTRIBUTES,ee as ITEM_CATEGORIES,g as ITEM_FLING_EFFECTS,_ as ITEM_POCKETS,je as ItemClient,j as LANGUAGES,Me as LocationClient,re as MOVE_AILMENTS,ie as MOVE_BATTLE_STYLES,ae as MOVE_CATEGORIES,oe as MOVE_DAMAGE_CLASSES,v as MOVE_LEARN_METHODS,y as MOVE_TARGETS,Ne as MachineClient,Ie as MainClient,P as MemoryCache,Pe as MoveClient,C as NATURES,ne as PAL_PARK_AREAS,w as POKEATHLON_STATS,f as POKEDEXES,T as POKEMON_COLORS,E as POKEMON_HABITATS,D as POKEMON_SHAPES,Fe as PokemonClient,L as PokenodeError,te as REGIONS,Je as REQUIREMENT_PHRASES,O as STATS,k as TYPES,X as UtilityClient,p as VERSIONS,m as VERSION_GROUPS,ce as WebStorageCache,le as consoleLogger,ht as defensiveProfile,gt as defensiveProfileFrom,mt as effectiveness,Re as flattenChain,Qe as formatRequirements,ot as getPokemonSpriteUrl,tt as localize,nt as localizeAll,ze as pathTo,$ as relationsFor,Z as requirementPhrases,Ve as requirementsOf,it as resourceId};
16
+ import{t as e}from"./rolldown-runtime-BMtXpp_L.js";const t={CHERI:1,CHESTO:2,PECHA:3,RAWST:4,ASPEAR:5,LEPPA:6,ORAN:7,PERSIM:8,LUM:9,SITRUS:10,FIGY:11,WIKI:12,MAGO:13,AGUAV:14,IAPAPA:15,RAZZ:16,BLUK:17,NANAB:18,WEPEAR:19,PINAP:20,POMEG:21,KELPSY:22,QUALOT:23,HONDEW:24,GREPA:25,TAMATO:26,CORNN:27,MAGOST:28,RABUTA:29,NOMEL:30,SPELON:31,PAMTRE:32,WATMEL:33,DURIN:34,BELUE:35,OCCA:36,PASSHO:37,WACAN:38,RINDO:39,YACHE:40,CHOPLE:41,KEBIA:42,SHUCA:43,COBA:44,PAYAPA:45,TANGA:46,CHARTI:47,KASIB:48,HABAN:49,COLBUR:50,BABIRI:51,CHILAN:52,LIECHI:53,GANLON:54,SALAC:55,PETAYA:56,APICOT:57,LANSAT:58,STARF:59,ENIGMA:60,MICLE:61,CUSTAP:62,JABOCA:63,ROWAP:64,KEE:65,MARANGA:66,HOPO:67,ROSELI:68},n={VERY_SOFT:1,SOFT:2,HARD:3,VERY_HARD:4,SUPER_HARD:5},r={SPICY:1,DRY:2,SWEET:3,BITTER:4,SOUR:5},i={COOL:1,BEAUTY:2,CUTE:3,SMART:4,TOUGH:5},a={POKE_DOLLAR:1,COIN:2,VOLCANIC_ASH:3,POKE_COUPON:4,BERRY_POWDER:5,BATTLE_POINT:6,SPHERE:7,CASTLE_POINT:8,WATT:9,ATHLETE_POINT:10,DREAM_POINT:11,DREAM_WORLD_BERRY:12,POKE_MILE:13,FESTIVAL_COIN:14,POKE_BEAN:15,HOME_POINT:16,MERIT_POINT:17,LEAGUE_POINT:18,BLUEBERRY_POINT:19},o={WALK:1,OLD_ROD:2,GOOD_ROD:3,SUPER_ROD:4,SURF:5,ROCK_SMASH:6,HEADBUTT:7,DARK_GRASS:8,GRASS_SPOTS:9,CAVE_SPOTS:10,BRIDGE_SPOTS:11,SUPER_ROD_SPOTS:12,SURF_SPOTS:13,YELLOW_FLOWERS:14,PURPLE_FLOWERS:15,RED_FLOWERS:16,ROUGH_TERRAIN:17,GIFT:18,GIFT_EGG:19,STATIC:20,POKEFLUTE:21,HEADBUTT_LOW:22,HEADBUTT_NORMAL:23,HEADBUTT_HIGH:24,SQUIRT_BOTTLE:25,WAILMER_PAIL:26,SEAWEED:27,ROAMING_GRASS:28,ROAMING_WATER:29,DEVON_SCOPE:30,FEEBAS_TILE_FISHING:31,ISLAND_SCAN:32,SOS:33,BUBBLING_SPOTS:34,BERRY_TREES:35,NPC_TRADE:36,SOS_FROM_BUBBLING_SPOT:37,OVERWORLD:38,OVERWORLD_WATER:39,OVERWORLD_FLYING:40,OVERWORLD_SPECIAL:41,OVERWORLD_FLYING_SPECIAL:42,OVERWORLD_WATER_SPECIAL:43,HORDE:44,COLOSSEUM_BONUS_DISC_US:45,COLOSSEUM_BONUS_DISC_JPN:46,POKEMON_CHANNEL_PAL:47,POKEMON_RANGER:48,POKEMON_BATTLE_REVOLUTION:49,NEW_YORK_POKECENTER_WISH_EGGS:50,SNAG:51,SNAG_REMATCH:52,POKESPOT:53,HIDDEN_GROTTO:54,HONEY_TREE:55,OVERWORLD_DIRT:56,WANDERER:57,WANDERER_WATER:58,CHASE_WATER:59,DYNAMAX_ADVENTURE:60,MAX_RAID:61,TRASH_CAN_AMBUSH:62,RUSTLING_BUSH_AMBUSH:63,CEILING_AMBUSH:64,GROUND_AMBUSH:65,SKY_AMBUSH:66,HEADBUT_HIGH:24,ONLY_ONE:20},s={SWARM:1,TIME:2,RADAR:3,SLOT2:4,RADIO:5,SEASON:6,STARTER:7,TV_OPTION:8,STORY_PROGRESS:9,OTHER:10,ITEM:11,WEEKDAY:12,FIRST_PARTY_POKEMON:13,SPECIAL_ENCOUNTER:14,TRADE:15,COINS:16,FRIEND_SAFARI_SLOT:17,GREAT_MARSH_DAILY_SLOT:18,HONEY_TREE_GROUP:19,HEADBUTT_TREE:20,BACKLOT:21,BUG_CATCHING_CONTEST:22,SAVE_DATA:23,ALOLAN_DIGLETT_FOUND:24,WEATHER:25,JOHTO_SAFARI_BLOCKS:26,MAX_DEN_RARITY:27,MAX_DEN_RATING:28,BERRY_TREE_TYPE:29,TRASH_CAN_TYPE:30},c={SWARM_YES:1,SWARM_NO:2,TIME_MORNING:3,TIME_DAY:4,TIME_NIGHT:5,RADAR_ON:6,RADAR_OFF:7,SLOT2_NONE:8,SLOT2_RUBY:9,SLOT2_SAPPHIRE:10,SLOT2_EMERALD:11,SLOT2_FIRERED:12,SLOT2_LEAFGREEN:13,RADIO_OFF:14,RADIO_HOENN:15,RADIO_SINNOH:16,SEASON_SPRING:17,SEASON_SUMMER:18,SEASON_AUTUMN:19,SEASON_WINTER:20,STARTER_BULBASAUR:21,STARTER_SQUIRTLE:22,STARTER_CHARMANDER:23,STARTER_CHESPIN:24,STARTER_FENNEKIN:25,STARTER_FROAKIE:26,TV_OPTION_BLUE:27,TV_OPTION_RED:28,STORY_PROGRESS_AWAKENED_BEASTS:29,STORY_PROGRESS_BEAT_GALACTIC_CORONET:30,STORY_PROGRESS_OAK_ETERNA_CITY:31,STORY_PROGRESS_VERMILION_COPYCAT:32,STORY_PROGRESS_MET_TORNADUS_THUNDURUS:33,STORY_PROGRESS_BEAT_ELITE_FOUR_ROUND_TWO:34,STORY_PROGRESS_HALL_OF_FAME:35,STORY_PROGRESS_NONE:36,STORY_PROGRESS_NATIONAL_DEX:37,OTHER_NONE:38,OTHER_SNORLAX_11_BEAT_LEAGUE:39,OTHER_VIRTUAL_CONSOLE:40,STORY_PROGRESS_CURE_ELDRITCH_NIGHTMARES:41,OTHER_TALK_TO_CYNTHIAS_GRANDMOTHER:42,ITEM_NONE:43,ITEM_ADAMANT_ORB:44,ITEM_LUSTROUS_ORB:45,ITEM_HELIX_FOSSIL:46,ITEM_DOME_FOSSIL:47,ITEM_OLD_AMBER:48,ITEM_ROOT_FOSSIL:49,ITEM_CLAW_FOSSIL:50,STORY_PROGRESS_DEFEAT_JUPITER:51,STORY_PROGRESS_BEAT_TEAM_GALACTIC_IRON_ISLAND:52,OTHER_CORRECT_PASSWORD:53,STORY_PROGRESS_ZEPHYR_BADGE:54,STORY_PROGRESS_BEAT_RED:55,OTHER_RECEIVED_KANTO_STARTER:56,STORY_PROGRESS_RECEIVE_TM_FROM_CLAIRE:57,OTHER_REGIROCK_REGICE_REGISTEEL_IN_PARTY:58,WEEKDAY_SUNDAY:59,WEEKDAY_MONDAY:60,WEEKDAY_TUESDAY:61,WEEKDAY_WEDNESDAY:62,WEEKDAY_THURSDAY:63,WEEKDAY_FRIDAY:64,WEEKDAY_SATURDAY:65,FIRST_PARTY_POKEMON_HIGH_FRIENDSHIP:66,STORY_PROGRESS_DEFEAT_MARS:67,ITEM_ODD_KEYSTONE:68,OTHER_TALKED_TO_32_PEOPLE_UNDERGROUND:69,STORY_PROGRESS_RETURNED_MACHINE_PART:70,OTHER_EVENT_ARCEUS_IN_PARTY:71,SPECIAL_ENCOUNTER_COULDNT_CAPTURE_BEFORE:72,ITEM_ICE_KEY:73,ITEM_IRON_KEY:74,STORY_PROGRESS_JUNIPER_CAVE_OF_BEING:75,ITEM_LUNAR_WING:76,STORY_PROGRESS_QUAKE_BADGE:77,ITEM_LIGHT_STONE:78,ITEM_DARK_STONE:79,OTHER_CAPTURED_RESHIRAM_OR_ZEKROM:80,DEFEATED_GHETSIS:81,OTHER_FOUND_11_TIMES_ROAMING:82,TIME_MINUTE_00_TO_19:83,TIME_MINUTE_20_TO_39:84,TIME_MINUTE_40_TO_59:85,TIME_04_00_TO_19_59:86,TIME_20_00_TO_21_59:87,TIME_21_00_TO_03_59:88,ITEM_TIDAL_BELL:89,ITEM_CLEAR_BELL:90,STORY_PROGRESS_DEFEATED_GROUDON_OR_KYOGRE:91,OTHER_UXIE_MESPRIT_AZELF_IN_PARTY:92,OTHER_NICKNAMED_COLD_ITEM_REGICE_REGIROCK_REGISTEEL3:93,OTHER_DIALGA_OR_PALKIA_IN_PARTY:94,OTHER_CASTFORM_IN_PARTY:95,OTHER_LEVEL_100_POKEMON_IN_PARTY:96,OTHER_TORNADUS_THUNDURUS_IN_PARTY:97,OTHER_RESHIRAM_ZEKROM_IN_PARTY:98,OTHER_CAPTURED_ALL_ULTRA_BEASTS:99,STORY_PROGRESS_FINISHED_LOOKER_SIDEQUEST:100,STORY_PROGRESS_BEAT_OLIVIAS_TRIAL:101,OTHER_RAIKOU_ENTEI_IN_PARTY:102,OTHER_GROUDON_KYOGRE_IN_PARTY:103,OTHER_DIALGA_PALKIA_IN_PARTY:104,OTHER_SCAN_QR_CODE:105,OTHER_CAUGHT_ARTICUNO:106,OTHER_CAUGHT_ZAPDOS:107,OTHER_CAUGHT_MOLTRES:108,TRADE_TOGEPI_OR_TOGETIC:109,TRADE_TRAPINCH:110,TRADE_SURSKIT:111,TRADE_WOOPER:112,STORY_PROGRESS_CATCH_ALL_SHADOW_POKEMON:113,OTHER_COMPLETE_MT_BATTLE:114,COINS_180:115,COINS_500:116,COINS_1200:117,COINS_2800:118,COINS_5500:119,COINS_9999:120,COINS_120:121,COINS_750:122,COINS_2500:123,COINS_4600:124,COINS_6500:125,COINS_230:126,COINS_1000:127,COINS_2680:128,COINS_3333:129,COINS_6666:130,COINS_200:131,COINS_700:132,COINS_2100:133,COINS_100:134,COINS_800:135,COINS_1500:136,COINS_2222:137,COINS_5555:138,COINS_8888:139,COINS_150:140,COINS_620:141,COINS_2880:142,COINS_5400:143,COINS_8300:144,TRADE_ABRA:145,TRADE_NIDORAN_M:146,TRADE_NIDORINO:147,TRADE_SLOWBRO:148,TRADE_POLIWHIRL:149,TRADE_SPEAROW:150,TRADE_RAICHU:151,TRADE_VENONAT:152,TRADE_PONYTA:153,TRADE_CLEFAIRY:154,TRADE_CUBONE:155,TRADE_LICKITUNG:156,TRADE_TANGELA:157,TRADE_GOLDUCK:158,TRADE_GROWLITHE:159,TRADE_KANGASKHAN:160,TRADE_BELLSPROUT:161,TRADE_DROWZEE:162,TRADE_KRABBY:163,TRADE_DRAGONAIR:164,TRADE_CHANSEY:165,TRADE_GLOOM:166,TRADE_HAUNTER:167,TRADE_DUGTRIO:168,TRADE_SLAKOTH:169,TRADE_PIKACHU:170,TRADE_BELLOSSOM:171,TRADE_RALTS:172,TRADE_VOLBEAT:173,TRADE_BAGON:174,TRADE_SKITTY:175,FRIEND_SAFARI_SLOT_1:176,FRIEND_SAFARI_SLOT_2:177,FRIEND_SAFARI_SLOT_3:178,ITEM_SKULL_FOSSIL:179,ITEM_ARMOR_FOSSIL:180,GREAT_MARSH_DAILY_SLOT_NONE:181,GREAT_MARSH_DAILY_SLOT_1_OF_32:182,GREAT_MARSH_DAILY_SLOT_2_OF_32:183,GREAT_MARSH_DAILY_SLOT_3_OF_32:184,GREAT_MARSH_DAILY_SLOT_5_OF_32:185,STORY_PROGRESS_BEFORE_NATIONAL_DEX:186,GREAT_MARSH_DAILY_SLOT_4_OF_32:187,GREAT_MARSH_DAILY_SLOT_15_OF_32:188,HONEY_TREE_GROUP_A:189,HONEY_TREE_GROUP_B:190,HONEY_TREE_GROUP_C:191,HEADBUTT_TREE_COMMON:192,HEADBUTT_TREE_RARE:193,HEADBUTT_TREE_SECRET:194,TRADE_COTTONEE:195,TRADE_PETILIL:196,TRADE_EMOLGA:197,TRADE_MANTINE:198,TRADE_DITTO:199,TRADE_EXCADRILL:200,TRADE_HIPPOWDON:201,BACKLOT_NOT_MENTIONED:202,BACKLOT_MENTIONED:203,BUG_CATCHING_CONTEST_NO:204,BUG_CATCHING_CONTEST_YES:205,SAVE_DATA_FROM_LETS_GO_PIKACHU:206,SAVE_DATA_FROM_LETS_GO_EEVEE:207,ITEM_FOSSILIZED_BIRD:208,ITEM_FOSSILIZED_DRAKE:209,ITEM_FOSSILIZED_DINO:210,ITEM_FOSSILIZED_FISH:211,STORY_PROGRESS_MASTER_DOJO_COMPLETE_FIRST_TRIAL:212,STORY_PROGRESS_MASTER_DOJO_COMPLETE_THIRD_TRIAL:213,ALOLAN_DIGLETT_FOUND_5:214,ALOLAN_DIGLETT_FOUND_10:215,ALOLAN_DIGLETT_FOUND_20:216,ALOLAN_DIGLETT_FOUND_30:217,ALOLAN_DIGLETT_FOUND_40:218,ALOLAN_DIGLETT_FOUND_50:219,ALOLAN_DIGLETT_FOUND_75:220,ALOLAN_DIGLETT_FOUND_100:221,ALOLAN_DIGLETT_FOUND_150:222,STARTER_GROOKEY:223,STARTER_SCORBUNNY:224,STARTER_SOBBLE:225,STORY_PROGRESS_SAVE_VILLAGE_FROM_GLASTRIER_SPECTRIER:226,STORY_PROGRESS_CATCH_FIVE_ULTRA_BEASTS:227,TRADE_BUNNELBY:228,TRADE_MEOWTH_GALAR:229,TRADE_MINCCINO:230,TRADE_TOXEL:231,TRADE_MARACTUS:232,TRADE_YAMASK_GALAR:233,TRADE_VANILLISH:234,TRADE_OBSTAGOON:235,TRADE_FROSMOTH:236,TRADE_FARFETCHD_GALAR:237,TRADE_CORSOLA_GALAR:238,TRADE_PONYTA_GALAR:239,TRADE_MR_MIME_GALAR:240,TRADE_DARUMAKA_GALAR:241,TRADE_ZIGZAGOON_GALAR:242,TRADE_STUNFISK_GALAR:243,TRADE_WEEZING_GALAR:244,TRADE_EXEGGUTOR:245,TRADE_MAROWAK:246,WEATHER_NORMAL:247,WEATHER_OVERCAST:248,WEATHER_RAINING:249,WEATHER_THUNDERSTORM:250,WEATHER_SNOWING:251,WEATHER_SNOWSTORM:252,WEATHER_SANDSTORM:253,WEATHER_INTENSE_SUN:254,WEATHER_FOG:255,STORY_PROGRESS_BEFORE_HALL_OF_FAME:256,JOHTO_SAFARI_BLOCKS_INACTIVE:257,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_2:258,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_3:259,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_4:260,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_5:261,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_6:262,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_10:263,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_12:264,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_14:265,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_15:266,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_24:267,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_28:268,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_35:269,JOHTO_SAFARI_BLOCKS_PLAINS_MIN_49:270,JOHTO_SAFARI_BLOCKS_FOREST_MIN_3:271,JOHTO_SAFARI_BLOCKS_FOREST_MIN_4:272,JOHTO_SAFARI_BLOCKS_FOREST_MIN_5:273,JOHTO_SAFARI_BLOCKS_FOREST_MIN_8:274,JOHTO_SAFARI_BLOCKS_FOREST_MIN_10:275,JOHTO_SAFARI_BLOCKS_FOREST_MIN_14:276,JOHTO_SAFARI_BLOCKS_FOREST_MIN_15:277,JOHTO_SAFARI_BLOCKS_FOREST_MIN_18:278,JOHTO_SAFARI_BLOCKS_FOREST_MIN_20:279,JOHTO_SAFARI_BLOCKS_FOREST_MIN_28:280,JOHTO_SAFARI_BLOCKS_FOREST_MIN_35:281,JOHTO_SAFARI_BLOCKS_FOREST_MIN_42:282,JOHTO_SAFARI_BLOCKS_FOREST_MIN_49:283,JOHTO_SAFARI_BLOCKS_FOREST_MIN_56:284,JOHTO_SAFARI_BLOCKS_PEAK_MIN_3:285,JOHTO_SAFARI_BLOCKS_PEAK_MIN_4:286,JOHTO_SAFARI_BLOCKS_PEAK_MIN_5:287,JOHTO_SAFARI_BLOCKS_PEAK_MIN_6:288,JOHTO_SAFARI_BLOCKS_PEAK_MIN_8:289,JOHTO_SAFARI_BLOCKS_PEAK_MIN_10:290,JOHTO_SAFARI_BLOCKS_PEAK_MIN_15:291,JOHTO_SAFARI_BLOCKS_PEAK_MIN_21:292,JOHTO_SAFARI_BLOCKS_PEAK_MIN_24:293,JOHTO_SAFARI_BLOCKS_PEAK_MIN_28:294,JOHTO_SAFARI_BLOCKS_PEAK_MIN_35:295,JOHTO_SAFARI_BLOCKS_PEAK_MIN_42:296,JOHTO_SAFARI_BLOCKS_PEAK_MIN_49:297,JOHTO_SAFARI_BLOCKS_PEAK_MIN_56:298,JOHTO_SAFARI_BLOCKS_PEAK_MIN_63:299,JOHTO_SAFARI_BLOCKS_WATER_MIN_2:300,JOHTO_SAFARI_BLOCKS_WATER_MIN_3:301,JOHTO_SAFARI_BLOCKS_WATER_MIN_4:302,JOHTO_SAFARI_BLOCKS_WATER_MIN_5:303,JOHTO_SAFARI_BLOCKS_WATER_MIN_6:304,JOHTO_SAFARI_BLOCKS_WATER_MIN_7:305,JOHTO_SAFARI_BLOCKS_WATER_MIN_8:306,JOHTO_SAFARI_BLOCKS_WATER_MIN_9:307,JOHTO_SAFARI_BLOCKS_WATER_MIN_10:308,JOHTO_SAFARI_BLOCKS_WATER_MIN_12:309,JOHTO_SAFARI_BLOCKS_WATER_MIN_13:310,JOHTO_SAFARI_BLOCKS_WATER_MIN_14:311,JOHTO_SAFARI_BLOCKS_WATER_MIN_15:312,JOHTO_SAFARI_BLOCKS_WATER_MIN_16:313,JOHTO_SAFARI_BLOCKS_WATER_MIN_18:314,JOHTO_SAFARI_BLOCKS_WATER_MIN_20:315,JOHTO_SAFARI_BLOCKS_WATER_MIN_24:316,JOHTO_SAFARI_BLOCKS_WATER_MIN_28:317,JOHTO_SAFARI_BLOCKS_WATER_MIN_35:318,JOHTO_SAFARI_BLOCKS_WATER_MIN_42:319,JOHTO_SAFARI_BLOCKS_WATER_MIN_49:320,ITEM_COVER_FOSSIL:321,ITEM_PLUME_FOSSIL:322,OTHER_GIRATINA_NOT_CAUGHT_IN_DISTORTION_WORLD:323,OTHER_FIND_50_CAVERN_FOOTPRINTS:324,OTHER_FIND_50_GRASSLAND_FOOTPRINTS:325,OTHER_FIND_50_IRON_WILL_FOOTPRINTS:326,OTHER_REGIROCK_REGICE_REGISTEEL_REGIELEKI_REGIDRAGO_IN_PARTY:327,OTHER_CHOOSE_REGIELEKI_PATTERN:328,OTHER_CHOOSE_REGIDRAGO_PATTERN:329,OTHER_GROW_ICEROOT_CARROT:330,OTHER_GROW_SHADEROOT_CARROT:331,OTHER_TALKED_TO_32_PEOPLE:332,OTHER_EAT_CURRY_WITH_COBALION_TERRAKION_VIRIZION:333,ITEM_REINS_OF_UNITY:334,OTHER_WITNESS_GALARIAN_BIRD_FIGHT:335,MAX_DEN_RARITY_COMMON:336,MAX_DEN_RARITY_RARE:337,MAX_DEN_RATING_1_STAR:338,MAX_DEN_RATING_2_STAR:339,MAX_DEN_RATING_3_STAR:340,MAX_DEN_RATING_4_STAR:341,MAX_DEN_RATING_5_STAR:342,MAX_DEN_RARITY_SPECIAL:343,BERRY_TREE_TYPE_RED:344,BERRY_TREE_TYPE_BLUE:345,BERRY_TREE_TYPE_PURPLE:346,BERRY_TREE_TYPE_GREEN:347,BERRY_TREE_TYPE_YELLOW:348,BERRY_TREE_TYPE_PINK:349,TRASH_CAN_TYPE_DAILY:350,TRASH_CAN_TYPE_TUESDAY:351,TRASH_CAN_TYPE_THURSDAY:352,TRADE_NIDORAN_F:353,TRADE_NIDORINA:354,TRADE_MACHOP:355,TRADE_BUIZEL:356,TRADE_MEDICHAM:357,TRADE_FINNEON:358,TRADE_FORRETRESS:359,TRADE_BONSLY:360,TRADE_ANY_POKEMON:361,OTHER_SNORLAX_LL_BEAT_LEAGUE:39,RADIO_HOEN:15,SLOT2_SAPHIRE:10,STORY_PROGRESS_OAK_VERMILION_COPYCAT:32,SWASON_AUTUMN:19},l={BERRY:`/berry`,BERRY_FIRMNESS:`/berry-firmness`,BERRY_FLAVOR:`/berry-flavor`,CONTEST_TYPE:`/contest-type`,CONTEST_EFFECT:`/contest-effect`,SUPER_CONTEST_EFFECT:`/super-contest-effect`,CURRENCY:`/currency`,ENCOUNTER_METHOD:`/encounter-method`,ENCOUNTER_CONDITION:`/encounter-condition`,ENCOUNTER_CONDITION_VALUE:`/encounter-condition-value`,EVOLUTION_CHAIN:`/evolution-chain`,EVOLUTION_TRIGGER:`/evolution-trigger`,GENERATION:`/generation`,POKEDEX:`/pokedex`,VERSION:`/version`,VERSION_GROUP:`/version-group`,ITEM:`/item`,ITEM_ATTRIBUTE:`/item-attribute`,ITEM_CATEGORY:`/item-category`,ITEM_FLING_EFFECT:`/item-fling-effect`,ITEM_POCKET:`/item-pocket`,LOCATION:`/location`,LOCATION_AREA:`/location-area`,PALPARK_AREA:`/pal-park-area`,REGION:`/region`,MACHINE:`/machine`,MOVE:`/move`,MOVE_AILMENT:`/move-ailment`,MOVE_BATTLE_STYLE:`/move-battle-style`,MOVE_CATEGORY:`/move-category`,MOVE_DAMAGE_CLASS:`/move-damage-class`,MOVE_LEARN_METHOD:`/move-learn-method`,MOVE_TARGET:`/move-target`,ABILITY:`/ability`,CHARACTERISTIC:`/characteristic`,EGG_GROUP:`/egg-group`,GENDER:`/gender`,GROWTH_RATE:`/growth-rate`,NATURE:`/nature`,POKEATHLON_STAT:`/pokeathlon-stat`,POKEMON:`/pokemon`,POKEMON_COLOR:`/pokemon-color`,POKEMON_FORM:`/pokemon-form`,POKEMON_HABITAT:`/pokemon-habitat`,POKEMON_SHAPE:`/pokemon-shape`,POKEMON_SPECIES:`/pokemon-species`,STAT:`/stat`,TYPE:`/type`,LANGUAGE:`/language`},u={LEVEL_UP:1,TRADE:2,USE_ITEM:3,SHED:4,SPIN:5,TOWER_OF_DARKNESS:6,TOWER_OF_WATERS:7,THREE_CRITICAL_HITS:8,TAKE_DAMAGE:9,OTHER:10,AGILE_STYLE_MOVE:11,STRONG_STYLE_MOVE:12,RECOIL_DAMAGE:13,USE_MOVE:14,THREE_DEFEATED_BISHARP:15,GIMMIGHOUL_COINS:16,TOWER_OF_WATER:7},d={GENERATION_I:1,GENERATION_II:2,GENERATION_III:3,GENERATION_IV:4,GENERATION_V:5,GENERATION_VI:6,GENERATION_VII:7,GENERATION_VIII:8,GENERATION_IX:9},f={NATIONAL:1,KANTO:2,ORIGINAL_JOHTO:3,HOENN:4,ORIGINAL_SINNOH:5,EXTENDED_SINNOH:6,UPDATED_JOHTO:7,ORIGINAL_UNOVA:8,UPDATED_UNOVA:9,CONQUEST_GALLERY:11,KALOS_CENTRAL:12,KALOS_COASTAL:13,KALOS_MOUNTAIN:14,UPDATED_HOENN:15,ORIGINAL_ALOLA:16,ORIGINAL_MELEMELE:17,ORIGINAL_AKALA:18,ORIGINAL_ULAULA:19,ORIGINAL_PONI:20,UPDATED_ALOLA:21,UPDATED_MELEMELE:22,UPDATED_AKALA:23,UPDATED_ULAULA:24,UPDATED_PONI:25,LETSGO_KANTO:26,GALAR:27,ISLE_OF_ARMOR:28,CROWN_TUNDRA:29,HISUI:30,PALDEA:31,KITAKAMI:32,BLUEBERRY:33,LUMIOSE_CITY:34,HYPERSPACE:35,CHAMPIONS:36,KALOS_MONTAIN:14,UPDATED_KANTO:26},p={RED:1,BLUE:2,YELLOW:3,GOLD:4,SILVER:5,CRYSTAL:6,RUBY:7,SAPPHIRE:8,EMERALD:9,FIRERED:10,LEAFGREEN:11,DIAMOND:12,PEARL:13,PLATINUM:14,HEARTGOLD:15,SOULSILVER:16,BLACK:17,WHITE:18,COLOSSEUM:19,XD:20,BLACK_2:21,WHITE_2:22,X:23,Y:24,OMEGA_RUBY:25,ALPHA_SAPPHIRE:26,SUN:27,MOON:28,ULTRA_SUN:29,ULTRA_MOON:30,LETS_GO_PIKACHU:31,LETS_GO_EEVEE:32,SWORD:33,SHIELD:34,THE_ISLE_OF_ARMOR_SWORD:35,THE_CROWN_TUNDRA_SWORD:36,BRILLIANT_DIAMOND:37,SHINING_PEARL:38,LEGENDS_ARCEUS:39,SCARLET:40,VIOLET:41,THE_TEAL_MASK_SCARLET:42,THE_INDIGO_DISK_SCARLET:43,RED_JAPAN:44,GREEN_JAPAN:45,BLUE_JAPAN:46,LEGENDS_ZA:47,MEGA_DIMENSION:48,CHAMPIONS:49,THE_ISLE_OF_ARMOR_SHIELD:50,THE_CROWN_TUNDRA_SHIELD:51,THE_TEAL_MASK_VIOLET:52,THE_INDIGO_DISK_VIOLET:53,THE_CROWN_TUNDRA:36,THE_ISLE_OF_ARMOR:35},m={RED_BLUE:1,YELLOW:2,GOLD_SILVER:3,CRYSTAL:4,RUBY_SAPPHIRE:5,EMERALD:6,FIRERED_LEAFGREEN:7,DIAMOND_PEARL:8,PLATINUM:9,HEARTGOLD_SOULSILVER:10,BLACK_WHITE:11,COLOSSEUM:12,XD:13,BLACK_2_WHITE_2:14,X_Y:15,OMEGA_RUBY_ALPHA_SAPPHIRE:16,SUN_MOON:17,ULTRA_SUN_ULTRA_MOON:18,LETS_GO_PIKACHU_LETS_GO_EEVEE:19,SWORD_SHIELD:20,THE_ISLE_OF_ARMOR:21,THE_CROWN_TUNDRA:22,BRILLIANT_DIAMOND_SHINING_PEARL:23,LEGENDS_ARCEUS:24,SCARLET_VIOLET:25,THE_TEAL_MASK:26,THE_INDIGO_DISK:27,RED_GREEN_JAPAN:28,BLUE_JAPAN:29,LEGENDS_ZA:30,MEGA_DIMENSION:31,CHAMPIONS:32,BRILLIANT_DIAMOND_AND_SHINING_PEARL:23,LETS_GO:19},h={COUNTABLE:1,CONSUMABLE:2,USABLE_OVERWORLD:3,USABLE_IN_BATTLE:4,HOLDABLE:5,HOLDABLE_PASSIVE:6,HOLDABLE_ACTIVE:7,UNDERGROUND:8},ee={STAT_BOOSTS:1,EFFORT_DROP:2,MEDICINE:3,OTHER:4,IN_A_PINCH:5,PICKY_HEALING:6,TYPE_PROTECTION:7,BAKING_ONLY:8,COLLECTIBLES:9,EVOLUTION:10,SPELUNKING:11,HELD_ITEMS:12,CHOICE:13,EFFORT_TRAINING:14,BAD_HELD_ITEMS:15,TRAINING:16,PLATES:17,SPECIES_SPECIFIC:18,TYPE_ENHANCEMENT:19,EVENT_ITEMS:20,GAMEPLAY:21,PLOT_ADVANCEMENT:22,UNUSED:23,LOOT:24,ALL_MAIL:25,VITAMINS:26,HEALING:27,PP_RECOVERY:28,REVIVAL:29,STATUS_CURES:30,MULCH:32,SPECIAL_BALLS:33,STANDARD_BALLS:34,DEX_COMPLETION:35,SCARVES:36,ALL_MACHINES:37,FLUTES:38,APRICORN_BALLS:39,APRICORN_BOX:40,DATA_CARDS:41,JEWELS:42,MIRACLE_SHOOTER:43,MEGA_STONES:44,MEMORIES:45,Z_CRYSTALS:46,SPECIES_CANDIES:47,CATCHING_BONUS:48,DYNAMAX_CRYSTALS:49,NATURE_MINTS:50,CURRY_INGREDIENTS:51,TERA_SHARD:52,SANDWICH_INGREDIENTS:53,TM_MATERIALS:54,PICNIC:55,DYNAMAX_CRISTALS:49},g={BADLY_POISON:1,BURN:2,BERRY_EFFECT:3,HERB_EFFECT:4,PARALYZE:5,POISON:6,FLINCH:7},_={MISC:1,MEDICINE:2,POKEBALLS:3,MACHINES:4,BERRIES:5,MAIL:6,BATTLE:7,KEY:8},te={KANTO:1,JOHTO:2,HOENN:3,SINNOH:4,UNOVA:5,KALOS:6,ALOLA:7,GALAR:8,HISUI:9,PALDEA:10,ORRE:11},ne={FOREST:1,FIELD:2,MOUNTAIN:3,POND:4,SEA:5},re={UNKNOWN:-1,NONE:0,PARALYSIS:1,SLEEP:2,FREEZE:3,BURN:4,POISON:5,CONFUSION:6,INFATUATION:7,TRAP:8,NIGHTMARE:9,TORMENT:12,DISABLE:13,YAWN:14,HEAL_BLOCK:15,NO_TYPE_IMMUNITY:17,LEECH_SEED:18,EMBARGO:19,PERISH_SONG:20,INGRAIN:21,SILENCE:24,TAR_SHOT:42,PROTECT:43},ie={ATTACK:1,DEFENSE:2,SUPPORT:3},ae={DAMAGE:0,AILMENT:1,NET_GOOD_STATS:2,HEAL:3,DAMAGE_AILMENT:4,SWAGGER:5,DAMAGE_LOWER:6,DAMAGE_RAISE:7,DAMAGE_HEAL:8,OHKO:9,WHOLE_FIELD_EFFECT:10,FIELD_EFFECT:11,FORCE_SWITCH:12,UNIQUE:13},oe={STATUS:1,PHYSICAL:2,SPECIAL:3},v={LEVEL_UP:1,EGG:2,TUTOR:3,MACHINE:4,STADIUM_SURFING_PIKACHU:5,LIGHT_BALL_EGG:6,COLOSSEUM_PURIFICATION:7,XD_SHADOW:8,XD_PURIFICATION:9,FORM_CHANGE:10,ZYGARDE_CUBE:11,TRAIN:12},y={SPECIFIC_MOVE:1,SELECTED_POKEMON_ME_FIRST:2,ALLY:3,USERS_FIELD:4,USER_OR_ALLY:5,OPPONENTS_FIELD:6,USER:7,RANDOM_OPPONENT:8,ALL_OTHER_POKEMON:9,SELECTED_POKEMON:10,ALL_OPPONENTS:11,ENTIRE_FIELD:12,USER_AND_ALLIES:13,ALL_POKEMON:14,ALL_ALLIES:15,FAINTING_POKEMON:16,USER_AND_ALIES:13},b={MONSTER:1,WATER1:2,BUG:3,FLYING:4,GROUND:5,FAIRY:6,PLANT:7,HUMANSHAPE:8,WATER3:9,MINERAL:10,INDETERMINATE:11,WATER2:12,DITTO:13,DRAGON:14,NO_EGGS:15},x={FEMALE:1,MALE:2,GENDERLESS:3},S={SLOW:1,MEDIUM:2,FAST:3,MEDIUM_SLOW:4,SLOW_THEN_VERY_FAST:5,FAST_THEN_VERY_SLOW:6},C={HARDY:1,BOLD:2,MODEST:3,CALM:4,TIMID:5,LONELY:6,DOCILE:7,MILD:8,GENTLE:9,HASTY:10,ADAMANT:11,IMPISH:12,BASHFUL:13,CAREFUL:14,RASH:15,JOLLY:16,NAUGHTY:17,LAX:18,QUIRKY:19,NAIVE:20,BRAVE:21,RELAXED:22,QUIET:23,SASSY:24,SERIOUS:25},w={SPEED:1,POWER:2,SKILL:3,STAMINA:4,JUMP:5},T={BLACK:1,BLUE:2,BROWN:3,GRAY:4,GREEN:5,PINK:6,PURPLE:7,RED:8,WHITE:9,YELLOW:10},E={CAVE:1,FOREST:2,GRASSLAND:3,MOUNTAIN:4,RARE:5,ROUGH_TERRAIN:6,SEA:7,URBAN:8,WATERS_EDGE:9,MONTAIN:4},D={BALL:1,SQUIGGLE:2,FISH:3,ARMS:4,BLOB:5,UPRIGHT:6,LEGS:7,QUADRUPED:8,WINGS:9,TENTACLES:10,HEADS:11,HUMANOID:12,BUG_WINGS:13,ARMOR:14},O={HP:1,ATTACK:2,DEFENSE:3,SPECIAL_ATTACK:4,SPECIAL_DEFENSE:5,SPEED:6,ACCURACY:7,EVASION:8,SPECIAL:9},k={NORMAL:1,FIGHTING:2,FLYING:3,POISON:4,GROUND:5,ROCK:6,BUG:7,GHOST:8,STEEL:9,FIRE:10,WATER:11,GRASS:12,ELECTRIC:13,PSYCHIC:14,ICE:15,DRAGON:16,DARK:17,FAIRY:18,STELLAR:19,UNKNOWN:10001,SHADOW:10002},A={REST:`https://pokeapi.co/api/v2`,SPRITES:`https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites`},j={JA_HRKT:1,JA_ROMA:2,KO:3,ZH_HANT:4,FR:5,DE:6,ES:7,IT:8,EN:9,CS:10,JA:11,ZH_HANS:12,PT_BR:13,ES_419:14};var se=e({BASE_URL:()=>A,BERRIES:()=>t,BERRY_FIRMNESSES:()=>n,BERRY_FLAVORS:()=>r,CONTEST_TYPES:()=>i,CURRENCIES:()=>a,EGG_GROUPS:()=>b,ENCOUNTER_CONDITIONS:()=>s,ENCOUNTER_CONDITION_VALUES:()=>c,ENCOUNTER_METHODS:()=>o,ENDPOINTS:()=>l,EVOLUTION_TRIGGERS:()=>u,GENDERS:()=>x,GENERATIONS:()=>d,GROWTH_RATES:()=>S,ITEM_ATTRIBUTES:()=>h,ITEM_CATEGORIES:()=>ee,ITEM_FLING_EFFECTS:()=>g,ITEM_POCKETS:()=>_,LANGUAGES:()=>j,MOVE_AILMENTS:()=>re,MOVE_BATTLE_STYLES:()=>ie,MOVE_CATEGORIES:()=>ae,MOVE_DAMAGE_CLASSES:()=>oe,MOVE_LEARN_METHODS:()=>v,MOVE_TARGETS:()=>y,NATURES:()=>C,PAL_PARK_AREAS:()=>ne,POKEATHLON_STATS:()=>w,POKEDEXES:()=>f,POKEMON_COLORS:()=>T,POKEMON_HABITATS:()=>E,POKEMON_SHAPES:()=>D,REGIONS:()=>te,STATS:()=>O,TYPES:()=>k,VERSIONS:()=>p,VERSION_GROUPS:()=>m});const M=3e5,N=(e,t)=>e!==void 0&&Number.isFinite(e)?Math.max(Math.floor(e),0):t;var P=class{entries=new Map;ttl;maxEntries;constructor(e){this.ttl=e?.ttl??M,this.maxEntries=N(e?.maxEntries,500)}get(e){let t=this.entries.get(e);if(t){if(t.expiresAt<=Date.now()){this.entries.delete(e);return}return this.entries.delete(e),this.entries.set(e,t),t.value}}set(e,t){if(this.entries.delete(e),this.maxEntries!==0){if(this.entries.size>=this.maxEntries){let e=this.entries.keys().next();e.done||this.entries.delete(e.value)}this.entries.set(e,{value:t,expiresAt:Date.now()+this.ttl})}}delete(e){this.entries.delete(e)}clear(){this.entries.clear()}},F=class{entries=new Map;maxEntries;constructor(e){this.maxEntries=N(e?.maxEntries,500)}get(e){let t=this.entries.get(e);if(t)return this.entries.delete(e),this.entries.set(e,t),t}set(e,t){if(this.entries.delete(e),this.maxEntries!==0){if(this.entries.size>=this.maxEntries){let e=this.entries.keys().next();e.done||this.entries.delete(e.value)}this.entries.set(e,t)}}clear(){this.entries.clear()}},ce=class{storage;ttl;prefix;constructor(e){this.storage=e.storage,this.ttl=e.ttl??M,this.prefix=e.prefix??`pokenode:`}async get(e){let t=await this.read(this.prefix+e);if(t){if(t.expiresAt<=Date.now()){await this.remove(this.prefix+e);return}return t.value}}async set(e,t){let n=JSON.stringify({value:t,expiresAt:Date.now()+this.ttl});try{await this.storage.setItem(this.prefix+e,n)}catch{await this.evict();try{await this.storage.setItem(this.prefix+e,n)}catch{return}}}async delete(e){await this.storage.removeItem(this.prefix+e)}async clear(){for(let e of await this.ownKeys())await this.remove(e)}async read(e){let t;try{t=await this.storage.getItem(e)}catch{return}if(t!==null)try{return JSON.parse(t)}catch{await this.remove(e);return}}async evict(){let e=await this.ownKeys(),t=await Promise.all(e.map(async e=>({key:e,expiresAt:(await this.read(e))?.expiresAt}))),n=Date.now(),r=t.filter(({expiresAt:e})=>e===void 0||e<=n);if(r.length>0){for(let{key:e}of r)await this.remove(e);return}let i=t.sort((e,t)=>(e.expiresAt??0)-(t.expiresAt??0));for(let{key:e}of i.slice(0,Math.ceil(i.length/4)))await this.remove(e)}async ownKeys(){return(await this.allKeys()).filter(e=>e.startsWith(this.prefix))}async allKeys(){try{if(this.storage.getAllKeys!==void 0)return[...await this.storage.getAllKeys()];let{key:e,length:t}=this.storage;if(e===void 0||t===void 0)return[];let n=[];for(let r=0;r<t;r+=1){let t=e.call(this.storage,r);t!==null&&n.push(t)}return n}catch{return[]}}async remove(e){try{await this.storage.removeItem(e)}catch{}}};const I=`pokenode:http`;var L=class extends Error{name=`PokenodeError`;kind=I;status;statusText;url;body;constructor(e,t,n){super(n??`Request to ${e.url} failed with status ${e.status}`),this.status=e.status,this.statusText=e.statusText,this.url=e.url,this.body=t}static isPokenodeError(e){return typeof e==`object`&&!!e&&`kind`in e&&e.kind===I}};const R=async(e,t)=>{let n;try{n=await e.json()}catch{n=void 0}return new L(e,n,t)},z=e=>({msg:e,message:e}),le={debug(e){if(e.event===`request`){console.log(`[ Request Config ] ${e.method} | ${e.url}`);return}if(e.event===`retry`){console.log(`[ Retry ] ATTEMPT ${e.attempt} | STATUS ${e.status??`NONE`} | IN ${e.delayMs.toFixed(0)}ms | ${e.url}`);return}if(e.event===`cancelled`){console.log(`[ Cancelled ] ${e.url} | AFTER ${e.durationMs.toFixed(1)}ms`);return}console.log(`[ Response ] STATUS ${e.status} | ${e.source.toUpperCase()} | ${e.durationMs.toFixed(1)}ms`)},error({url:e,err:t}){let{name:n,message:r}=t instanceof Error?t:{name:`UNKNOWN`,message:String(t)};console.error(`[ Response Error ] ${e} | CODE ${n} | ${r}`)}};var ue=class{requests=new Map;async share(e,t,n){let r=this.requests.get(e),i=r??this.dispatch(e,t,n);return{value:await this.join(e,i,t),joined:r!==void 0}}dispatch(e,t,n){let r=t?new AbortController:void 0,i={promise:n(r?.signal),controller:r,waiters:0};return i.promise=i.promise.finally(()=>this.release(e,i)),i.promise.catch(()=>{}),this.requests.set(e,i),i}release(e,t){this.requests.get(e)===t&&this.requests.delete(e)}join(e,t,n){return t.waiters+=1,n?new Promise((r,i)=>{let a=()=>{--t.waiters,!(t.waiters>0)&&(this.release(e,t),t.controller?.abort(n.reason))};if(n.aborted){a(),i(n.reason);return}let o=()=>{a(),i(n.reason)};n.addEventListener(`abort`,o,{once:!0}),t.promise.then(e=>{n.removeEventListener(`abort`,o),r(e)},e=>{n.removeEventListener(`abort`,o),i(e)})}):t.promise}};const B=async(e,t,n)=>{let r=Array(e.length),i=0,a=!1,o=async()=>{for(;i<e.length&&!a;){let t=i;i+=1;try{r[t]=await n(e[t])}catch(e){throw a=!0,e}}},s=Number.isFinite(t)?t:4,c=Array.from({length:Math.min(Math.max(s,1),e.length)},()=>o());return await Promise.all(c),r};async function*de(e,t,n){let r=n?.pageSize??20,i=n?.concurrency??4,a=0;for(;;){let o=await e(a,r);if(o.results.length===0||(n?.resolve?yield*await B(o.results,i,t):yield*o.results,a+=o.results.length,o.results.length<r||a>=o.count))return}}const V=5e3,fe=[429,500,502,503,504],pe=e=>{if(!e)return 1;let t=e.attempts??3;return Number.isFinite(t)?Math.max(Math.floor(t),1):3},H=(e,t)=>e!==void 0&&Number.isFinite(e)?Math.max(e,0):t,me=e=>{if(e===null)return;let t=e.trim();if(t===``)return;let n=Number(t);if(Number.isFinite(n))return Math.max(n,0)*1e3;let r=Date.parse(t);return Number.isNaN(r)?void 0:Math.max(r-Date.now(),0)},U=(e,t)=>t?.aborted===!0||e instanceof Error&&(e.name===`AbortError`||e.name===`TimeoutError`),he=(e,t)=>new Promise((n,r)=>{if(t?.aborted){r(t.reason);return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e);i.unref?.();let a=()=>{clearTimeout(i),r(t?.reason)};t?.addEventListener(`abort`,a,{once:!0})}),ge=async(e,t,n)=>{let r=n?.statuses??fe,i=H(n?.maxDelay,V);if(t||!r.includes(e.status))throw await R(e);let a=me(e.headers.get(`Retry-After`));if(a!==void 0&&a>i)throw await R(e);return a},W=async e=>{let{url:t,attempt:n,status:r,retryAfter:i,signal:a,retry:o,logger:s}=e,c=H(o?.initialDelay,300),l=H(o?.maxDelay,V),u=Math.min(c*2**(n-1),l),d=i??u/2+u/2*Math.random();s?.debug({event:`retry`,...z(`pokeapi request failed, retrying`),url:t,attempt:n,delayMs:d,...r===void 0?{}:{status:r}}),await he(d,a)},G=e=>{let t=e.length;for(;t>0&&e[t-1]===`/`;)--t;return e.slice(0,t)},_e=(e,t,n)=>`${e}?${new URLSearchParams({offset:String(t),limit:String(n)})}`,ve=e=>{let t=e.indexOf(`?`);return t===-1?G(e):G(e.slice(0,t))+e.slice(t)},ye=/^v\d+$/,K=e=>{try{return decodeURIComponent(e)}catch{return e}},be=(e,t)=>{let n=`${K(e)}:${K(t)}`,r=new TextEncoder().encode(n),i=``;for(let e of r)i+=String.fromCodePoint(e);return`Basic ${btoa(i)}`},xe=e=>{if(!e.includes(`@`))return{url:e,authorization:void 0};let t;try{t=new URL(e)}catch{return{url:e,authorization:void 0}}if(!t.username&&!t.password)return{url:e,authorization:void 0};let n=be(t.username,t.password);return t.username=``,t.password=``,{url:t.toString(),authorization:n}},Se=(e,t)=>{let n=new URL(e),r=new URL(t),i=G(r.pathname);if(n.origin===r.origin&&(n.pathname===i||n.pathname.startsWith(`${i}/`)))return`${n.pathname.slice(i.length)}${n.search}`;let a=n.pathname.split(`/`),o=a.findIndex(e=>ye.test(e));if(o===-1)throw TypeError(`Cannot resolve "${e}" against the base URL "${t}"`);return`/${a.slice(o+1).join(`/`)}${n.search}`},Ce=(e,t)=>e?`in-flight`:t===!0?`revalidated`:`network`,we=e=>{if(e)return e===!0?new F:e};var q=class e{config;state;scope;constructor(e,t,n={}){this.config=e,this.state=t,this.scope=n}static create(t){return new e({baseURL:G(t?.baseURL??A.REST),fetch:t?.fetch??((e,t)=>globalThis.fetch(e,t)),logger:t?.logger,retry:t?.retry},{cache:t?.cache===!1?void 0:t?.cache??new P,etags:we(t?.revalidate),inFlight:new ue,counts:{network:0,cache:0,"in-flight":0,revalidated:0},roundTrips:{count:0}})}get stats(){let{network:e,cache:t,revalidated:n}=this.state.counts;return{network:e,cache:t,inFlight:this.state.counts[`in-flight`],revalidated:n,roundTrips:this.state.roundTrips.count}}get cache(){return this.state.cache}with(t){return new e(this.config,this.state,{...this.scope,...t})}async clear(){await this.state.cache?.clear?.(),this.state.etags?.clear()}async resource(e,...t){let n=t.map(e=>encodeURIComponent(e)).join(`/`);return this.request(n===``?e:`${e}/${n}`)}async byURL(e,t=this.config.baseURL){let n=typeof e==`string`?e:e.url;return this.request(Se(n,t),t)}async list(e,t=0,n=20){return this.request(_e(e,t,n))}async resolveAll(e,t=4){return B(e,t,e=>this.byURL(e))}walk(e,t){return de(e,e=>this.byURL(e),t)}async request(e,t=this.config.baseURL){let n=e.startsWith(`/`)?e:`/${e}`,{url:r,authorization:i}=xe(ve(`${G(t)}${n}`)),a=performance.now();this.config.logger?.debug({event:`request`,...z(`pokeapi request`),method:`GET`,url:r});let o=this.requestSignal();try{if(o?.aborted)throw o.reason;let e=await this.state.cache?.get(r);if(e!==void 0)return this.recordResponse(r,200,`cache`,a),e;let{value:t,joined:n}=await this.state.inFlight.share(r,o,e=>this.fetchResource(r,i,e));return this.recordResponse(r,t.status,Ce(n,t.revalidated),a),t.data}catch(e){throw U(e,o)?(this.config.logger?.debug({event:`cancelled`,...z(`pokeapi request cancelled`),url:r,reason:e,durationMs:performance.now()-a}),e):(this.config.logger?.error({event:`error`,...z(`pokeapi request failed`),url:r,err:e,error:e}),e)}}requestSignal(){let{signal:e,timeout:t}=this.scope;if(t===void 0)return e;let n=AbortSignal.timeout(t);return e?AbortSignal.any([e,n]):n}async fetchResource(e,t,n){let r=this.state.etags?.get(e),i={Accept:`application/json`,...t===void 0?{}:{Authorization:t},...r===void 0?{}:{"If-None-Match":r.etag}},a=n?{headers:i,signal:n}:{headers:i},{retry:o,logger:s}=this.config,c=pe(o);for(let t=1;;t+=1){let i=t>=c,l;try{this.state.roundTrips.count+=1,l=await this.config.fetch(e,a)}catch(r){if(i||U(r,n))throw r;await W({url:e,attempt:t,status:void 0,retryAfter:void 0,signal:n,retry:o,logger:s});continue}let u=await this.resolveResponse(e,l,r);if(u!==void 0)return u;let d=await ge(l,i,o);l.body?.cancel().catch(()=>{}),await W({url:e,attempt:t,status:l.status,retryAfter:d,signal:n,retry:o,logger:s})}}async resolveResponse(e,t,n){if(t.status===304){if(n===void 0)throw await R(t,`Request to ${t.url} was answered 304, but this client holds no response to reuse`);let r=t.headers.get(`ETag`);return r!==null&&r!==n.etag&&this.state.etags?.set(e,{etag:r,value:n.value}),await this.state.cache?.set(e,n.value),{data:n.value,status:t.status,revalidated:!0}}if(!t.ok)return;let r=await t.json(),i=t.headers.get(`ETag`);return i!==null&&this.state.etags?.set(e,{etag:i,value:r}),await this.state.cache?.set(e,r),{data:r,status:t.status}}recordResponse(e,t,n,r){this.state.counts[n]+=1,this.config.logger?.debug({event:`response`,...z(`pokeapi response`),url:e,status:t,source:n,durationMs:performance.now()-r})}},J=class{#e;constructor(e){this.#e=e instanceof q?e:q.create(e)}get cache(){return this.#e.cache}get stats(){return this.#e.stats}statsSince(e){let t=this.#e.stats;return{network:t.network-e.network,cache:t.cache-e.cache,inFlight:t.inFlight-e.inFlight,revalidated:t.revalidated-e.revalidated,roundTrips:t.roundTrips-e.roundTrips}}with(e){let t=this.constructor;return new t(this.#e.with(e))}async clearCache(){await this.#e.clear()}async resolve(e){return this.#e.byURL(e)}async resolveAll(e,t){return this.#e.resolveAll(e,t?.concurrency)}async getResource(e,...t){return this.#e.resource(e,...t)}async getResourceByURL(e,t){return this.#e.byURL(e,t)}async getListResource(e,t,n){return this.#e.list(e,t,n)}async getUnnamedListResource(e,t,n){return this.#e.list(e,t,n)}walk(e,t){return this.#e.walk(e,t)}},Y=class extends J{paginate(e,t){let n=typeof e==`function`?e:(t,n)=>this[e](t,n);return this.walk(n,t)}},Te=class extends Y{async getBerryByName(e){return this.getResource(l.BERRY,e)}async getBerryById(e){return this.getResource(l.BERRY,e)}async getBerryFirmnessById(e){return this.getResource(l.BERRY_FIRMNESS,e)}async getBerryFirmnessByName(e){return this.getResource(l.BERRY_FIRMNESS,e)}async getBerryFlavorById(e){return this.getResource(l.BERRY_FLAVOR,e)}async getBerryFlavorByName(e){return this.getResource(l.BERRY_FLAVOR,e)}async listBerries(e,t){return this.getListResource(l.BERRY,e,t)}async listBerryFirmnesses(e,t){return this.getListResource(l.BERRY_FIRMNESS,e,t)}async listBerryFlavors(e,t){return this.getListResource(l.BERRY_FLAVOR,e,t)}},Ee=class extends Y{async getContestTypeByName(e){return this.getResource(l.CONTEST_TYPE,e)}async getContestTypeById(e){return this.getResource(l.CONTEST_TYPE,e)}async getContestEffectById(e){return this.getResource(l.CONTEST_EFFECT,e)}async getSuperContestEffectById(e){return this.getResource(l.SUPER_CONTEST_EFFECT,e)}async listContestTypes(e,t){return this.getListResource(l.CONTEST_TYPE,e,t)}async listContestEffects(e,t){return this.getUnnamedListResource(l.CONTEST_EFFECT,e,t)}async listSuperContestEffects(e,t){return this.getUnnamedListResource(l.SUPER_CONTEST_EFFECT,e,t)}},De=class extends Y{async getCurrencyByName(e){return this.getResource(l.CURRENCY,e)}async getCurrencyById(e){return this.getResource(l.CURRENCY,e)}async listCurrencies(e,t){return this.getListResource(l.CURRENCY,e,t)}},Oe=class extends Y{async getEncounterMethodByName(e){return this.getResource(l.ENCOUNTER_METHOD,e)}async getEncounterMethodById(e){return this.getResource(l.ENCOUNTER_METHOD,e)}async getEncounterConditionById(e){return this.getResource(l.ENCOUNTER_CONDITION,e)}async getEncounterConditionByName(e){return this.getResource(l.ENCOUNTER_CONDITION,e)}async getEncounterConditionValueByName(e){return this.getResource(l.ENCOUNTER_CONDITION_VALUE,e)}async getEncounterConditionValueById(e){return this.getResource(l.ENCOUNTER_CONDITION_VALUE,e)}async listEncounterMethods(e,t){return this.getListResource(l.ENCOUNTER_METHOD,e,t)}async listEncounterConditions(e,t){return this.getListResource(l.ENCOUNTER_CONDITION,e,t)}async listEncounterConditionValues(e,t){return this.getListResource(l.ENCOUNTER_CONDITION_VALUE,e,t)}},ke=class extends Y{async getEvolutionChainById(e){return this.getResource(l.EVOLUTION_CHAIN,e)}async getEvolutionTriggerById(e){return this.getResource(l.EVOLUTION_TRIGGER,e)}async getEvolutionTriggerByName(e){return this.getResource(l.EVOLUTION_TRIGGER,e)}async listEvolutionChains(e,t){return this.getUnnamedListResource(l.EVOLUTION_CHAIN,e,t)}async listEvolutionTriggers(e,t){return this.getListResource(l.EVOLUTION_TRIGGER,e,t)}},Ae=class extends Y{async getGenerationByName(e){return this.getResource(l.GENERATION,e)}async getGenerationById(e){return this.getResource(l.GENERATION,e)}async getPokedexByName(e){return this.getResource(l.POKEDEX,e)}async getPokedexById(e){return this.getResource(l.POKEDEX,e)}async getVersionByName(e){return this.getResource(l.VERSION,e)}async getVersionById(e){return this.getResource(l.VERSION,e)}async getVersionGroupByName(e){return this.getResource(l.VERSION_GROUP,e)}async getVersionGroupById(e){return this.getResource(l.VERSION_GROUP,e)}async listGenerations(e,t){return this.getListResource(l.GENERATION,e,t)}async listPokedexes(e,t){return this.getListResource(l.POKEDEX,e,t)}async listVersions(e,t){return this.getListResource(l.VERSION,e,t)}async listVersionGroups(e,t){return this.getListResource(l.VERSION_GROUP,e,t)}},je=class extends Y{async getItemByName(e){return this.getResource(l.ITEM,e)}async getItemById(e){return this.getResource(l.ITEM,e)}async getItemAttributeByName(e){return this.getResource(l.ITEM_ATTRIBUTE,e)}async getItemAttributeById(e){return this.getResource(l.ITEM_ATTRIBUTE,e)}async getItemCategoryByName(e){return this.getResource(l.ITEM_CATEGORY,e)}async getItemCategoryById(e){return this.getResource(l.ITEM_CATEGORY,e)}async getItemFlingEffectByName(e){return this.getResource(l.ITEM_FLING_EFFECT,e)}async getItemFlingEffectById(e){return this.getResource(l.ITEM_FLING_EFFECT,e)}async getItemPocketByName(e){return this.getResource(l.ITEM_POCKET,e)}async getItemPocketById(e){return this.getResource(l.ITEM_POCKET,e)}async listItems(e,t){return this.getListResource(l.ITEM,e,t)}async listItemAttributes(e,t){return this.getListResource(l.ITEM_ATTRIBUTE,e,t)}async listItemCategories(e,t){return this.getListResource(l.ITEM_CATEGORY,e,t)}async listItemFlingEffects(e,t){return this.getListResource(l.ITEM_FLING_EFFECT,e,t)}async listItemPockets(e,t){return this.getListResource(l.ITEM_POCKET,e,t)}},Me=class extends Y{async getLocationByName(e){return this.getResource(l.LOCATION,e)}async getLocationById(e){return this.getResource(l.LOCATION,e)}async getLocationAreaByName(e){return this.getResource(l.LOCATION_AREA,e)}async getLocationAreaById(e){return this.getResource(l.LOCATION_AREA,e)}async getPalParkAreaByName(e){return this.getResource(l.PALPARK_AREA,e)}async getPalParkAreaById(e){return this.getResource(l.PALPARK_AREA,e)}async getRegionByName(e){return this.getResource(l.REGION,e)}async getRegionById(e){return this.getResource(l.REGION,e)}async listLocations(e,t){return this.getListResource(l.LOCATION,e,t)}async listLocationAreas(e,t){return this.getListResource(l.LOCATION_AREA,e,t)}async listPalParkAreas(e,t){return this.getListResource(l.PALPARK_AREA,e,t)}async listRegions(e,t){return this.getListResource(l.REGION,e,t)}},Ne=class extends Y{async getMachineById(e){return this.getResource(l.MACHINE,e)}async listMachines(e,t){return this.getUnnamedListResource(l.MACHINE,e,t)}},Pe=class extends Y{async getMoveByName(e){return this.getResource(l.MOVE,e)}async getMoveById(e){return this.getResource(l.MOVE,e)}async getMoveAilmentByName(e){return this.getResource(l.MOVE_AILMENT,e)}async getMoveAilmentById(e){return this.getResource(l.MOVE_AILMENT,e)}async getMoveBattleStyleByName(e){return this.getResource(l.MOVE_BATTLE_STYLE,e)}async getMoveBattleStyleById(e){return this.getResource(l.MOVE_BATTLE_STYLE,e)}async getMoveCategoryByName(e){return this.getResource(l.MOVE_CATEGORY,e)}async getMoveCategoryById(e){return this.getResource(l.MOVE_CATEGORY,e)}async getMoveDamageClassByName(e){return this.getResource(l.MOVE_DAMAGE_CLASS,e)}async getMoveDamageClassById(e){return this.getResource(l.MOVE_DAMAGE_CLASS,e)}async getMoveLearnMethodByName(e){return this.getResource(l.MOVE_LEARN_METHOD,e)}async getMoveLearnMethodById(e){return this.getResource(l.MOVE_LEARN_METHOD,e)}async getMoveTargetByName(e){return this.getResource(l.MOVE_TARGET,e)}async getMoveTargetById(e){return this.getResource(l.MOVE_TARGET,e)}async listMoves(e,t){return this.getListResource(l.MOVE,e,t)}async listMoveAilments(e,t){return this.getListResource(l.MOVE_AILMENT,e,t)}async listMoveBattleStyles(e,t){return this.getListResource(l.MOVE_BATTLE_STYLE,e,t)}async listMoveCategories(e,t){return this.getListResource(l.MOVE_CATEGORY,e,t)}async listMoveDamageClasses(e,t){return this.getListResource(l.MOVE_DAMAGE_CLASS,e,t)}async listMoveLearnMethods(e,t){return this.getListResource(l.MOVE_LEARN_METHOD,e,t)}async listMoveTargets(e,t){return this.getListResource(l.MOVE_TARGET,e,t)}},Fe=class extends Y{async getAbilityByName(e){return this.getResource(l.ABILITY,e)}async getAbilityById(e){return this.getResource(l.ABILITY,e)}async getCharacteristicById(e){return this.getResource(l.CHARACTERISTIC,e)}async getEggGroupByName(e){return this.getResource(l.EGG_GROUP,e)}async getEggGroupById(e){return this.getResource(l.EGG_GROUP,e)}async getGenderByName(e){return this.getResource(l.GENDER,e)}async getGenderById(e){return this.getResource(l.GENDER,e)}async getGrowthRateByName(e){return this.getResource(l.GROWTH_RATE,e)}async getGrowthRateById(e){return this.getResource(l.GROWTH_RATE,e)}async getNatureByName(e){return this.getResource(l.NATURE,e)}async getNatureById(e){return this.getResource(l.NATURE,e)}async getPokeathlonStatByName(e){return this.getResource(l.POKEATHLON_STAT,e)}async getPokeathlonStatById(e){return this.getResource(l.POKEATHLON_STAT,e)}async getPokemonByName(e){return this.getResource(l.POKEMON,e)}async getPokemonById(e){return this.getResource(l.POKEMON,e)}async getPokemonLocationAreaById(e){return this.getResource(l.POKEMON,e,`encounters`)}async getPokemonColorByName(e){return this.getResource(l.POKEMON_COLOR,e)}async getPokemonColorById(e){return this.getResource(l.POKEMON_COLOR,e)}async getPokemonFormByName(e){return this.getResource(l.POKEMON_FORM,e)}async getPokemonFormById(e){return this.getResource(l.POKEMON_FORM,e)}async getPokemonHabitatByName(e){return this.getResource(l.POKEMON_HABITAT,e)}async getPokemonHabitatById(e){return this.getResource(l.POKEMON_HABITAT,e)}async getPokemonShapeByName(e){return this.getResource(l.POKEMON_SHAPE,e)}async getPokemonShapeById(e){return this.getResource(l.POKEMON_SHAPE,e)}async getPokemonSpeciesByName(e){return this.getResource(l.POKEMON_SPECIES,e)}async getPokemonSpeciesById(e){return this.getResource(l.POKEMON_SPECIES,e)}async getStatByName(e){return this.getResource(l.STAT,e)}async getStatById(e){return this.getResource(l.STAT,e)}async getTypeByName(e){return this.getResource(l.TYPE,e)}async getTypeById(e){return this.getResource(l.TYPE,e)}async listAbilities(e,t){return this.getListResource(l.ABILITY,e,t)}async listCharacteristics(e,t){return this.getUnnamedListResource(l.CHARACTERISTIC,e,t)}async listEggGroups(e,t){return this.getListResource(l.EGG_GROUP,e,t)}async listGenders(e,t){return this.getListResource(l.GENDER,e,t)}async listGrowthRates(e,t){return this.getListResource(l.GROWTH_RATE,e,t)}async listNatures(e,t){return this.getListResource(l.NATURE,e,t)}async listPokeathlonStats(e,t){return this.getListResource(l.POKEATHLON_STAT,e,t)}async listPokemons(e,t){return this.getListResource(l.POKEMON,e,t)}async listPokemonColors(e,t){return this.getListResource(l.POKEMON_COLOR,e,t)}async listPokemonForms(e,t){return this.getListResource(l.POKEMON_FORM,e,t)}async listPokemonHabitats(e,t){return this.getListResource(l.POKEMON_HABITAT,e,t)}async listPokemonShapes(e,t){return this.getListResource(l.POKEMON_SHAPE,e,t)}async listPokemonSpecies(e,t){return this.getListResource(l.POKEMON_SPECIES,e,t)}async listStats(e,t){return this.getListResource(l.STAT,e,t)}async listTypes(e,t){return this.getListResource(l.TYPE,e,t)}},X=class extends Y{async getLanguageById(e){return this.getResource(l.LANGUAGE,e)}async getLanguageByName(e){return this.getResource(l.LANGUAGE,e)}async getResourceByUrl(e){return this.resolve(e)}listLanguages(e,t){return this.getListResource(l.LANGUAGE,e,t)}},Ie=class extends J{berry;contest;currency;encounter;evolution;game;item;location;machine;move;pokemon;utility;constructor(e){let t=e instanceof q?e:q.create(e);super(t),this.berry=new Te(t),this.contest=new Ee(t),this.currency=new De(t),this.encounter=new Oe(t),this.evolution=new ke(t),this.game=new Ae(t),this.item=new je(t),this.location=new Me(t),this.machine=new Ne(t),this.move=new Pe(t),this.pokemon=new Fe(t),this.utility=new X(t)}};const Le=(e,t)=>t===void 0?e.evolution_details:e.evolution_details.filter(e=>e.version_group.name===t),Re=(e,t)=>{let n=(e,r)=>e.evolves_to.flatMap(i=>{let a=Le(i,t?.versionGroup),o=n(i,r+1);return a.length===0?o:[{from:e.species,to:i.species,details:a,depth:r,isBaby:i.is_baby},...o]});return n(e.chain,1)},ze=(e,t)=>{let n=typeof t==`string`?t:t.name,r=(e,t)=>{if(e.species.name===n)return t;for(let n of e.evolves_to){let i={from:e.species,to:n.species,details:n.evolution_details,depth:t.length+1,isBaby:n.is_baby},a=r(n,[...t,i]);if(a!==void 0)return a}};return r(e.chain,[])},Be=[({item:e})=>e===null?null:{kind:`item`,item:e},({held_item:e})=>e===null?null:{kind:`held-item`,item:e},({min_level:e})=>e===null?null:{kind:`min-level`,level:e},({min_happiness:e})=>e===null?null:{kind:`min-happiness`,happiness:e},({min_beauty:e})=>e===null?null:{kind:`min-beauty`,beauty:e},({min_affection:e})=>e===null?null:{kind:`min-affection`,affection:e},({known_move:e})=>e===null?null:{kind:`known-move`,move:e},({known_move_type:e})=>e===null?null:{kind:`known-move-type`,type:e},({used_move:e})=>e===null?null:{kind:`used-move`,move:e},({min_move_count:e})=>e===null?null:{kind:`min-move-count`,count:e},({min_steps:e})=>e===null?null:{kind:`min-steps`,steps:e},({min_damage_taken:e})=>e===null?null:{kind:`min-damage-taken`,damage:e},({location:e})=>e===null?null:{kind:`location`,location:e},({region:e})=>e===null?null:{kind:`region`,region:e},({time_of_day:e})=>e===``?null:{kind:`time-of-day`,time:e},({gender:e})=>e===null?null:{kind:`gender`,gender:e},({relative_physical_stats:e})=>e===null?null:{kind:`relative-physical-stats`,comparison:e},({party_species:e})=>e===null?null:{kind:`party-species`,species:e},({party_type:e})=>e===null?null:{kind:`party-type`,type:e},({trade_species:e})=>e===null?null:{kind:`trade-species`,species:e},({base_form:e})=>e===null?null:{kind:`base-form`,form:e},({evolved_form:e})=>e===null?null:{kind:`evolved-form`,form:e},({needs_overworld_rain:e})=>e?{kind:`needs-overworld-rain`}:null,({turn_upside_down:e})=>e?{kind:`turn-upside-down`}:null,({near_special_rock:e})=>e?{kind:`near-special-rock`}:null,({needs_multiplayer:e})=>e?{kind:`needs-multiplayer`}:null],Ve=e=>[{kind:`trigger`,trigger:e.trigger},...Be.flatMap(t=>t(e)??[])],He={"level-up":`level up`,trade:`trade`,"use-item":`use an item`,shed:`shed`,spin:`spin`,"tower-of-darkness":`train in the Tower of Darkness`,"tower-of-waters":`train in the Tower of Waters`,"three-critical-hits":`land three critical hits in one battle`,"take-damage":`take damage`,other:`an in-game event`,"agile-style-move":`use agile style moves`,"strong-style-move":`use strong style moves`,"recoil-damage":`take recoil damage`,"use-move":`use a move`,"three-defeated-bisharp":`defeat three pack-leading Bisharp`,"gimmighoul-coins":`collect Gimmighoul Coins`},Ue=e=>e.name.replaceAll(`-`,` `),We={day:`during the day`,night:`during the night`,dusk:`at dusk`,"full-moon":`under a full moon`},Ge={1:`female`,2:`male`,3:`genderless`},Ke=e=>Ge[e]??`gender ${e}`,qe={1:`>`,0:`=`,"-1":`<`},Z=(e=Ue)=>({trigger:({trigger:t})=>He[t.name]??e(t),item:({item:t})=>`use ${e(t)}`,"held-item":({item:t})=>`holding ${e(t)}`,"min-level":({level:e})=>`at level ${e}`,"min-happiness":({happiness:e})=>`with at least ${e} happiness`,"min-beauty":({beauty:e})=>`with at least ${e} beauty`,"min-affection":({affection:e})=>`with at least ${e} affection`,"known-move":({move:t})=>`knowing ${e(t)}`,"known-move-type":({type:t})=>`knowing a ${e(t)}-type move`,"used-move":({move:t})=>`after using ${e(t)}`,"min-move-count":({count:e})=>`${e} times`,"min-steps":({steps:e})=>`after ${e} steps`,"min-damage-taken":({damage:e})=>`after taking ${e} damage`,location:({location:t})=>`at ${e(t)}`,region:({region:t})=>`in ${e(t)}`,"time-of-day":({time:e})=>We[e],gender:({gender:e})=>`as a ${Ke(e)}`,"relative-physical-stats":({comparison:e})=>`with Attack ${qe[String(e)]} Defense`,"party-species":({species:t})=>`with ${e(t)} in the party`,"party-type":({type:t})=>`with a ${e(t)}-type in the party`,"trade-species":({species:t})=>`traded for ${e(t)}`,"base-form":({form:t})=>`in its ${e(t)} form`,"evolved-form":({form:t})=>`into its ${e(t)} form`,"needs-overworld-rain":()=>`while it is raining`,"turn-upside-down":()=>`with the console upside down`,"near-special-rock":()=>`near a special rock`,"needs-multiplayer":()=>`in multiplayer`}),Je=Z(),Ye=new WeakMap,Xe=e=>{if(e===void 0)return Je;let t=Ye.get(e)??Z(e);return Ye.set(e,t),t},Ze=(e,t)=>t[e.kind](e),Qe=(e,t)=>{let n={...Xe(t?.name),...t?.phrases},r=e.some(e=>e.kind===`item`)&&e.some(e=>e.kind===`trigger`&&e.trigger.name===`use-item`);return e.filter(e=>!(r&&e.kind===`trigger`)).map(e=>Ze(e,n)).join(`, `)},$e=e=>{let t=typeof e==`string`?{language:e}:e??{};return{...t,language:t.language??`en`}},et=(e,t)=>{let n=t.toLowerCase();return e.filter(e=>e.language.name.toLowerCase()===n)},tt=(e,t)=>nt(e,t)[0],nt=(e,t)=>{let n=$e(t),r=et(e,n.language);return r.length>0||n.fallback===void 0?r:et(e,n.fallback)},rt=/\/(-?\d+)\/?$/,it=e=>{let t=typeof e==`string`?e:e.url,n=rt.exec(t);if(n===null)throw TypeError(`No resource id in URL: ${t}`);return Number(n[1])},at={default:{directory:``,extension:`png`},"official-artwork":{directory:`other/official-artwork`,extension:`png`},home:{directory:`other/home`,extension:`png`},"dream-world":{directory:`other/dream-world`,extension:`svg`},showdown:{directory:`other/showdown`,extension:`gif`}},ot=(e,t={})=>{let{variant:n=`default`,shiny:r=!1,back:i=!1,female:a=!1}=t,{directory:o,extension:s}=at[n],c=[o,i&&`back`,r&&`shiny`,a&&`female`];return[A.SPRITES,`pokemon`,...c.filter(Boolean),`${e}.${s}`].join(`/`)},st=new Set(Object.entries(k).filter(([,e])=>e<1e4).map(([e])=>e.toLowerCase())),ct=e=>st.has(e),Q=e=>{let t=e.toUpperCase().replaceAll(`-`,`_`);return d[t]??-1},lt=[[`no_damage_to`,0],[`half_damage_to`,.5],[`double_damage_to`,2]],ut=[[`no_damage_from`,0],[`half_damage_from`,.5],[`double_damage_from`,2]],dt=(e,t,n)=>{for(let[r,i]of t)if(e[r].some(e=>e.name===n))return i;return 1},ft=(e,t)=>dt(e,lt,t),pt=(e,t)=>t.reduce((t,n)=>t*ft(e,n.name),1),$=(e,t)=>{if(t===void 0)return e.damage_relations;let n=Q(t);if(n===-1)return e.damage_relations;if(!(n<Q(e.generation.name)))return[...e.past_damage_relations].sort((e,t)=>Q(e.generation.name)-Q(t.generation.name)).find(e=>Q(e.generation.name)>=n)?.damage_relations??e.damage_relations};function mt(e,t,n){let r=$(e,n?.generation);return r===void 0?void 0:pt(r,t)}const ht=(e,t,n)=>{let r={};for(let i of e){if(!ct(i.name))continue;let e=$(i,n?.generation);e!==void 0&&(r[i.name]=pt(e,t))}return r},gt=e=>{let t={};for(let n of st)t[n]=e.reduce((e,t)=>e*dt(t.damage_relations,ut,n),1);return t};export{A as BASE_URL,t as BERRIES,n as BERRY_FIRMNESSES,r as BERRY_FLAVORS,Te as BerryClient,se as CONSTANTS,i as CONTEST_TYPES,a as CURRENCIES,Ee as ContestClient,De as CurrencyClient,b as EGG_GROUPS,s as ENCOUNTER_CONDITIONS,c as ENCOUNTER_CONDITION_VALUES,o as ENCOUNTER_METHODS,l as ENDPOINTS,u as EVOLUTION_TRIGGERS,Oe as EncounterClient,F as EtagStore,ke as EvolutionClient,x as GENDERS,d as GENERATIONS,S as GROWTH_RATES,Ae as GameClient,h as ITEM_ATTRIBUTES,ee as ITEM_CATEGORIES,g as ITEM_FLING_EFFECTS,_ as ITEM_POCKETS,je as ItemClient,j as LANGUAGES,Me as LocationClient,re as MOVE_AILMENTS,ie as MOVE_BATTLE_STYLES,ae as MOVE_CATEGORIES,oe as MOVE_DAMAGE_CLASSES,v as MOVE_LEARN_METHODS,y as MOVE_TARGETS,Ne as MachineClient,Ie as MainClient,P as MemoryCache,Pe as MoveClient,C as NATURES,ne as PAL_PARK_AREAS,w as POKEATHLON_STATS,f as POKEDEXES,T as POKEMON_COLORS,E as POKEMON_HABITATS,D as POKEMON_SHAPES,Fe as PokemonClient,L as PokenodeError,te as REGIONS,Je as REQUIREMENT_PHRASES,O as STATS,k as TYPES,X as UtilityClient,p as VERSIONS,m as VERSION_GROUPS,ce as WebStorageCache,le as consoleLogger,ht as defensiveProfile,gt as defensiveProfileFrom,mt as effectiveness,Re as flattenChain,Qe as formatRequirements,ot as getPokemonSpriteUrl,tt as localize,nt as localizeAll,ze as pathTo,$ as relationsFor,Z as requirementPhrases,Ve as requirementsOf,it as resourceId};
17
17
  //# sourceMappingURL=index.js.map