@firestone-hs/reference-data 1.0.107 → 1.0.108
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/dist/src/card-ids.js.map +1 -0
- package/dist/src/enums/block-type.js.map +1 -0
- package/dist/src/enums/bnet-region.js.map +1 -0
- package/dist/src/enums/board.js.map +1 -0
- package/dist/src/enums/booster-type.js.map +1 -0
- package/dist/src/enums/card-class.js.map +1 -0
- package/dist/src/enums/card-rarity.js.map +1 -0
- package/dist/src/enums/card-set.js.map +1 -0
- package/dist/src/enums/card-text-builder-type.js.map +1 -0
- package/dist/src/enums/card-type.js.map +1 -0
- package/dist/src/enums/choice-type.js.map +1 -0
- package/dist/src/enums/deck-type.js.map +1 -0
- package/dist/src/enums/dk-rune-type.js.map +1 -0
- package/dist/src/enums/dungeon-crawl-option-type.js.map +1 -0
- package/dist/src/enums/game-format.js.map +1 -0
- package/dist/src/enums/game-tags.js.map +1 -0
- package/dist/src/enums/game-type.js.map +1 -0
- package/dist/src/enums/locale.js.map +1 -0
- package/dist/src/enums/mercenaries-bounty-difficulty.js.map +1 -0
- package/dist/src/enums/mercenaries-map-type.js.map +1 -0
- package/dist/src/enums/mercenary-selector.js.map +1 -0
- package/dist/src/enums/meta-tags.js.map +1 -0
- package/dist/src/enums/mulligan.js.map +1 -0
- package/dist/src/enums/multi-class-group.js.map +1 -0
- package/dist/src/enums/playstate.js.map +1 -0
- package/dist/src/enums/quest-pool-type.js.map +1 -0
- package/dist/src/enums/quest-status.js.map +1 -0
- package/dist/src/enums/race.js.map +1 -0
- package/dist/src/enums/reward-item-type.js.map +1 -0
- package/dist/src/enums/reward-track-type.js.map +1 -0
- package/dist/src/enums/reward-type.js.map +1 -0
- package/dist/src/enums/scenario-groups.js.map +1 -0
- package/dist/src/enums/scenario-id.js.map +1 -0
- package/dist/src/enums/scene.js.map +1 -0
- package/dist/src/enums/spell-school.js.map +1 -0
- package/dist/src/enums/step.js.map +1 -0
- package/dist/src/enums/tag-role.js.map +1 -0
- package/dist/src/enums/task-status.js.map +1 -0
- package/dist/src/enums/village-visitor-type.js.map +1 -0
- package/dist/src/enums/zone.js.map +1 -0
- package/dist/src/models/quest.js.map +1 -0
- package/dist/src/models/reference-cards/rarity.type.js.map +1 -0
- package/dist/src/models/reference-cards/reference-card.js.map +1 -0
- package/dist/src/models/reference-cards/reference-data.js.map +1 -0
- package/dist/src/models/reference-cards/reference-player-class.js.map +1 -0
- package/dist/src/models/reference-cards/reference-sets.js.map +1 -0
- package/dist/{models → src/models}/reference-cards/related-cards-data.js +2 -0
- package/dist/src/models/reference-cards/related-cards-data.js.map +1 -0
- package/dist/{public-api.d.ts → src/public-api.d.ts} +1 -0
- package/dist/{public-api.js → src/public-api.js} +1 -0
- package/dist/src/public-api.js.map +1 -0
- package/dist/src/secondary-race-tags.js.map +1 -0
- package/dist/src/services/all-cards.service.js.map +1 -0
- package/dist/src/services/bgs-utils.js.map +1 -0
- package/dist/src/services/collection-utils.js.map +1 -0
- package/dist/src/services/deck-utils.d.ts +2 -0
- package/dist/src/services/deck-utils.js +29 -0
- package/dist/src/services/deck-utils.js.map +1 -0
- package/dist/src/services/duels-utils.js.map +1 -0
- package/dist/src/services/hs-utils.js.map +1 -0
- package/dist/src/services/mercs-utils.js.map +1 -0
- package/dist/src/services/twist-utils.js.map +1 -0
- package/dist/src/services/utils.js.map +1 -0
- package/dist/test/test-normalize-decklist.d.ts +1 -0
- package/dist/test/test-normalize-decklist.js +33 -0
- package/dist/test/test-normalize-decklist.js.map +1 -0
- package/package.json +2 -1
- package/dist/card-ids.js.map +0 -1
- package/dist/enums/block-type.js.map +0 -1
- package/dist/enums/bnet-region.js.map +0 -1
- package/dist/enums/board.js.map +0 -1
- package/dist/enums/booster-type.js.map +0 -1
- package/dist/enums/card-class.js.map +0 -1
- package/dist/enums/card-rarity.js.map +0 -1
- package/dist/enums/card-set.js.map +0 -1
- package/dist/enums/card-text-builder-type.js.map +0 -1
- package/dist/enums/card-type.js.map +0 -1
- package/dist/enums/choice-type.js.map +0 -1
- package/dist/enums/deck-type.js.map +0 -1
- package/dist/enums/dk-rune-type.js.map +0 -1
- package/dist/enums/dungeon-crawl-option-type.js.map +0 -1
- package/dist/enums/game-format.js.map +0 -1
- package/dist/enums/game-tags.js.map +0 -1
- package/dist/enums/game-type.js.map +0 -1
- package/dist/enums/locale.js.map +0 -1
- package/dist/enums/mercenaries-bounty-difficulty.js.map +0 -1
- package/dist/enums/mercenaries-map-type.js.map +0 -1
- package/dist/enums/mercenary-selector.js.map +0 -1
- package/dist/enums/meta-tags.js.map +0 -1
- package/dist/enums/mulligan.js.map +0 -1
- package/dist/enums/multi-class-group.js.map +0 -1
- package/dist/enums/playstate.js.map +0 -1
- package/dist/enums/quest-pool-type.js.map +0 -1
- package/dist/enums/quest-status.js.map +0 -1
- package/dist/enums/race.js.map +0 -1
- package/dist/enums/reward-item-type.js.map +0 -1
- package/dist/enums/reward-track-type.js.map +0 -1
- package/dist/enums/reward-type.js.map +0 -1
- package/dist/enums/scenario-groups.js.map +0 -1
- package/dist/enums/scenario-id.js.map +0 -1
- package/dist/enums/scene.js.map +0 -1
- package/dist/enums/spell-school.js.map +0 -1
- package/dist/enums/step.js.map +0 -1
- package/dist/enums/tag-role.js.map +0 -1
- package/dist/enums/task-status.js.map +0 -1
- package/dist/enums/village-visitor-type.js.map +0 -1
- package/dist/enums/zone.js.map +0 -1
- package/dist/models/quest.js.map +0 -1
- package/dist/models/reference-cards/rarity.type.js.map +0 -1
- package/dist/models/reference-cards/reference-card.js.map +0 -1
- package/dist/models/reference-cards/reference-data.js.map +0 -1
- package/dist/models/reference-cards/reference-player-class.js.map +0 -1
- package/dist/models/reference-cards/reference-sets.js.map +0 -1
- package/dist/models/reference-cards/related-cards-data.js.map +0 -1
- package/dist/public-api.js.map +0 -1
- package/dist/secondary-race-tags.js.map +0 -1
- package/dist/services/all-cards.service.js.map +0 -1
- package/dist/services/bgs-utils.js.map +0 -1
- package/dist/services/collection-utils.js.map +0 -1
- package/dist/services/duels-utils.js.map +0 -1
- package/dist/services/hs-utils.js.map +0 -1
- package/dist/services/mercs-utils.js.map +0 -1
- package/dist/services/twist-utils.js.map +0 -1
- package/dist/services/utils.js.map +0 -1
- /package/dist/{card-ids.d.ts → src/card-ids.d.ts} +0 -0
- /package/dist/{card-ids.js → src/card-ids.js} +0 -0
- /package/dist/{enums → src/enums}/block-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/block-type.js +0 -0
- /package/dist/{enums → src/enums}/bnet-region.d.ts +0 -0
- /package/dist/{enums → src/enums}/bnet-region.js +0 -0
- /package/dist/{enums → src/enums}/board.d.ts +0 -0
- /package/dist/{enums → src/enums}/board.js +0 -0
- /package/dist/{enums → src/enums}/booster-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/booster-type.js +0 -0
- /package/dist/{enums → src/enums}/card-class.d.ts +0 -0
- /package/dist/{enums → src/enums}/card-class.js +0 -0
- /package/dist/{enums → src/enums}/card-rarity.d.ts +0 -0
- /package/dist/{enums → src/enums}/card-rarity.js +0 -0
- /package/dist/{enums → src/enums}/card-set.d.ts +0 -0
- /package/dist/{enums → src/enums}/card-set.js +0 -0
- /package/dist/{enums → src/enums}/card-text-builder-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/card-text-builder-type.js +0 -0
- /package/dist/{enums → src/enums}/card-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/card-type.js +0 -0
- /package/dist/{enums → src/enums}/choice-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/choice-type.js +0 -0
- /package/dist/{enums → src/enums}/deck-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/deck-type.js +0 -0
- /package/dist/{enums → src/enums}/dk-rune-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/dk-rune-type.js +0 -0
- /package/dist/{enums → src/enums}/dungeon-crawl-option-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/dungeon-crawl-option-type.js +0 -0
- /package/dist/{enums → src/enums}/game-format.d.ts +0 -0
- /package/dist/{enums → src/enums}/game-format.js +0 -0
- /package/dist/{enums → src/enums}/game-tags.d.ts +0 -0
- /package/dist/{enums → src/enums}/game-tags.js +0 -0
- /package/dist/{enums → src/enums}/game-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/game-type.js +0 -0
- /package/dist/{enums → src/enums}/locale.d.ts +0 -0
- /package/dist/{enums → src/enums}/locale.js +0 -0
- /package/dist/{enums → src/enums}/mercenaries-bounty-difficulty.d.ts +0 -0
- /package/dist/{enums → src/enums}/mercenaries-bounty-difficulty.js +0 -0
- /package/dist/{enums → src/enums}/mercenaries-map-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/mercenaries-map-type.js +0 -0
- /package/dist/{enums → src/enums}/mercenary-selector.d.ts +0 -0
- /package/dist/{enums → src/enums}/mercenary-selector.js +0 -0
- /package/dist/{enums → src/enums}/meta-tags.d.ts +0 -0
- /package/dist/{enums → src/enums}/meta-tags.js +0 -0
- /package/dist/{enums → src/enums}/mulligan.d.ts +0 -0
- /package/dist/{enums → src/enums}/mulligan.js +0 -0
- /package/dist/{enums → src/enums}/multi-class-group.d.ts +0 -0
- /package/dist/{enums → src/enums}/multi-class-group.js +0 -0
- /package/dist/{enums → src/enums}/playstate.d.ts +0 -0
- /package/dist/{enums → src/enums}/playstate.js +0 -0
- /package/dist/{enums → src/enums}/quest-pool-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/quest-pool-type.js +0 -0
- /package/dist/{enums → src/enums}/quest-status.d.ts +0 -0
- /package/dist/{enums → src/enums}/quest-status.js +0 -0
- /package/dist/{enums → src/enums}/race.d.ts +0 -0
- /package/dist/{enums → src/enums}/race.js +0 -0
- /package/dist/{enums → src/enums}/reward-item-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/reward-item-type.js +0 -0
- /package/dist/{enums → src/enums}/reward-track-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/reward-track-type.js +0 -0
- /package/dist/{enums → src/enums}/reward-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/reward-type.js +0 -0
- /package/dist/{enums → src/enums}/scenario-groups.d.ts +0 -0
- /package/dist/{enums → src/enums}/scenario-groups.js +0 -0
- /package/dist/{enums → src/enums}/scenario-id.d.ts +0 -0
- /package/dist/{enums → src/enums}/scenario-id.js +0 -0
- /package/dist/{enums → src/enums}/scene.d.ts +0 -0
- /package/dist/{enums → src/enums}/scene.js +0 -0
- /package/dist/{enums → src/enums}/spell-school.d.ts +0 -0
- /package/dist/{enums → src/enums}/spell-school.js +0 -0
- /package/dist/{enums → src/enums}/step.d.ts +0 -0
- /package/dist/{enums → src/enums}/step.js +0 -0
- /package/dist/{enums → src/enums}/tag-role.d.ts +0 -0
- /package/dist/{enums → src/enums}/tag-role.js +0 -0
- /package/dist/{enums → src/enums}/task-status.d.ts +0 -0
- /package/dist/{enums → src/enums}/task-status.js +0 -0
- /package/dist/{enums → src/enums}/village-visitor-type.d.ts +0 -0
- /package/dist/{enums → src/enums}/village-visitor-type.js +0 -0
- /package/dist/{enums → src/enums}/zone.d.ts +0 -0
- /package/dist/{enums → src/enums}/zone.js +0 -0
- /package/dist/{models → src/models}/quest.d.ts +0 -0
- /package/dist/{models → src/models}/quest.js +0 -0
- /package/dist/{models → src/models}/reference-cards/rarity.type.d.ts +0 -0
- /package/dist/{models → src/models}/reference-cards/rarity.type.js +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-card.d.ts +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-card.js +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-data.d.ts +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-data.js +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-player-class.d.ts +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-player-class.js +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-sets.d.ts +0 -0
- /package/dist/{models → src/models}/reference-cards/reference-sets.js +0 -0
- /package/dist/{models → src/models}/reference-cards/related-cards-data.d.ts +0 -0
- /package/dist/{secondary-race-tags.d.ts → src/secondary-race-tags.d.ts} +0 -0
- /package/dist/{secondary-race-tags.js → src/secondary-race-tags.js} +0 -0
- /package/dist/{services → src/services}/all-cards.service.d.ts +0 -0
- /package/dist/{services → src/services}/all-cards.service.js +0 -0
- /package/dist/{services → src/services}/bgs-utils.d.ts +0 -0
- /package/dist/{services → src/services}/bgs-utils.js +0 -0
- /package/dist/{services → src/services}/collection-utils.d.ts +0 -0
- /package/dist/{services → src/services}/collection-utils.js +0 -0
- /package/dist/{services → src/services}/duels-utils.d.ts +0 -0
- /package/dist/{services → src/services}/duels-utils.js +0 -0
- /package/dist/{services → src/services}/hs-utils.d.ts +0 -0
- /package/dist/{services → src/services}/hs-utils.js +0 -0
- /package/dist/{services → src/services}/mercs-utils.d.ts +0 -0
- /package/dist/{services → src/services}/mercs-utils.js +0 -0
- /package/dist/{services → src/services}/twist-utils.d.ts +0 -0
- /package/dist/{services → src/services}/twist-utils.js +0 -0
- /package/dist/{services → src/services}/utils.d.ts +0 -0
- /package/dist/{services → src/services}/utils.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-utils.js","sourceRoot":"","sources":["../../../src/services/collection-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { BoosterType } from '../public-api';\r\n\r\nexport const boosterIdToSetId = (boosterId: BoosterType): string => {\r\n\tswitch (boosterId) {\r\n\t\tcase BoosterType.MERCENARIES:\r\n\t\t\treturn 'lettuce';\r\n\t\tcase BoosterType.CLASSIC:\r\n\t\tcase BoosterType.GOLDEN_CLASSIC_PACK:\r\n\t\t\treturn 'expert1';\r\n\t\tcase BoosterType.GOBLINS_VS_GNOMES:\r\n\t\t\treturn 'gvg';\r\n\t\tcase BoosterType.THE_GRAND_TOURNAMENT:\r\n\t\t\treturn 'tgt';\r\n\t\tcase BoosterType.OLD_GODS:\r\n\t\tcase BoosterType.FIRST_PURCHASE_OLD:\r\n\t\t\treturn 'og';\r\n\t\tcase BoosterType.MEAN_STREETS:\r\n\t\t\treturn 'gangs';\r\n\t\tcase BoosterType.UNGORO:\r\n\t\t\treturn 'ungoro';\r\n\t\tcase BoosterType.FROZEN_THRONE:\r\n\t\t\treturn 'icecrown';\r\n\t\tcase BoosterType.KOBOLDS_AND_CATACOMBS:\r\n\t\t\treturn 'lootapalooza';\r\n\t\tcase BoosterType.WITCHWOOD:\r\n\t\t\treturn 'gilneas';\r\n\t\tcase BoosterType.THE_BOOMSDAY_PROJECT:\r\n\t\t\treturn 'boomsday';\r\n\t\tcase BoosterType.RASTAKHANS_RUMBLE:\r\n\t\t\treturn 'troll';\r\n\t\tcase BoosterType.DALARAN:\r\n\t\t\treturn 'dalaran';\r\n\t\tcase BoosterType.ULDUM:\r\n\t\t\treturn 'uldum';\r\n\t\tcase BoosterType.DRAGONS:\r\n\t\t\treturn 'dragons';\r\n\t\tcase BoosterType.BLACK_TEMPLE:\r\n\t\t\treturn 'black_temple';\r\n\t\tcase BoosterType.SCHOLOMANCE:\r\n\t\tcase BoosterType.GOLDEN_SCHOLOMANCE:\r\n\t\t\treturn 'scholomance';\r\n\t\tcase BoosterType.DARKMOON_FAIRE:\r\n\t\tcase BoosterType.GOLDEN_DARKMOON_FAIRE:\r\n\t\t\treturn 'darkmoon_faire';\r\n\t\tcase BoosterType.THE_BARRENS:\r\n\t\tcase BoosterType.GOLDEN_THE_BARRENS:\r\n\t\t\treturn 'the_barrens';\r\n\t\tcase BoosterType.STORMWIND:\r\n\t\tcase BoosterType.STORMWIND_GOLDEN:\r\n\t\t\treturn 'stormwind';\r\n\t\tcase BoosterType.ALTERAC_VALLEY:\r\n\t\tcase BoosterType.ALTERAC_VALLEY_GOLDEN:\r\n\t\t\treturn 'alterac_valley';\r\n\t\tcase BoosterType.THE_SUNKEN_CITY:\r\n\t\tcase BoosterType.GOLDEN_THE_SUNKEN_CITY:\r\n\t\t\treturn 'the_sunken_city';\r\n\t\tcase BoosterType.REVENDRETH:\r\n\t\tcase BoosterType.GOLDEN_REVENDRETH:\r\n\t\t\treturn 'revendreth';\r\n\t\tcase BoosterType.RETURN_OF_THE_LICH_KING:\r\n\t\tcase BoosterType.GOLDEN_RETURN_OF_THE_LICH_KING:\r\n\t\t\treturn 'return_of_the_lich_king';\r\n\t\tcase BoosterType.BATTLE_OF_THE_BANDS:\r\n\t\tcase BoosterType.GOLDEN_BATTLE_OF_THE_BANDS:\r\n\t\t\treturn 'battle_of_the_bands';\r\n\t\tcase BoosterType.TITANS:\r\n\t\tcase BoosterType.GOLDEN_TITANS:\r\n\t\t\treturn 'titans';\r\n\t\tdefault:\r\n\t\t\t// console.warn('unsupported booster type', boosterId);\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\nexport const getDefaultBoosterIdForSetId = (setId: string): BoosterType => {\r\n\tswitch (setId) {\r\n\t\tcase 'expert1':\r\n\t\t\treturn BoosterType.CLASSIC;\r\n\t\tcase 'gvg':\r\n\t\t\treturn BoosterType.GOBLINS_VS_GNOMES;\r\n\t\tcase 'tgt':\r\n\t\t\treturn BoosterType.THE_GRAND_TOURNAMENT;\r\n\t\tcase 'og':\r\n\t\t\treturn BoosterType.OLD_GODS;\r\n\t\tcase 'gangs':\r\n\t\t\treturn BoosterType.MEAN_STREETS;\r\n\t\tcase 'ungoro':\r\n\t\t\treturn BoosterType.UNGORO;\r\n\t\tcase 'icecrown':\r\n\t\t\treturn BoosterType.FROZEN_THRONE;\r\n\t\tcase 'lootapalooza':\r\n\t\t\treturn BoosterType.KOBOLDS_AND_CATACOMBS;\r\n\t\tcase 'gilneas':\r\n\t\t\treturn BoosterType.WITCHWOOD;\r\n\t\tcase 'boomsday':\r\n\t\t\treturn BoosterType.THE_BOOMSDAY_PROJECT;\r\n\t\tcase 'troll':\r\n\t\tcase 'rumble':\r\n\t\t\treturn BoosterType.RASTAKHANS_RUMBLE;\r\n\t\tcase 'dalaran':\r\n\t\t\treturn BoosterType.DALARAN;\r\n\t\tcase 'uldum':\r\n\t\t\treturn BoosterType.ULDUM;\r\n\t\tcase 'dragons':\r\n\t\t\treturn BoosterType.DRAGONS;\r\n\t\tcase 'black_temple':\r\n\t\t\treturn BoosterType.BLACK_TEMPLE;\r\n\t\tcase 'scholomance':\r\n\t\t\treturn BoosterType.SCHOLOMANCE;\r\n\t\tcase 'darkmoon_faire':\r\n\t\tcase 'darkmoon_races':\r\n\t\t\treturn BoosterType.DARKMOON_FAIRE;\r\n\t\tcase 'the_barrens':\r\n\t\tcase 'wailing_caverns':\r\n\t\t\treturn BoosterType.THE_BARRENS;\r\n\t\tcase 'stormwind':\r\n\t\tcase 'deadmines':\r\n\t\t\treturn BoosterType.STORMWIND;\r\n\t\tcase 'alterac_valley':\r\n\t\tcase 'onyxias_lair':\r\n\t\t\treturn BoosterType.ALTERAC_VALLEY;\r\n\t\tcase 'the_sunken_city':\r\n\t\tcase 'throne_of_tides':\r\n\t\t\treturn BoosterType.THE_SUNKEN_CITY;\r\n\t\tcase 'revendreth':\r\n\t\tcase 'maw_and_disorder':\r\n\t\t\treturn BoosterType.REVENDRETH;\r\n\t\tcase 'return_of_the_lich_king':\r\n\t\tcase 'path_of_arthas':\r\n\t\t\treturn BoosterType.RETURN_OF_THE_LICH_KING;\r\n\t\tcase 'battle_of_the_bands':\r\n\t\t\treturn BoosterType.BATTLE_OF_THE_BANDS;\r\n\t\tcase 'titans':\r\n\t\t\treturn BoosterType.TITANS;\r\n\t\tdefault:\r\n\t\t\tconsole.warn('no default booster type for set id', setId);\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\nexport const boosterIdToBoosterName = (\r\n\tboosterId: BoosterType,\r\n\ti18n: { translateString: (input: string) => string },\r\n): string => {\r\n\tlet normalizedBoosterId = boosterId;\r\n\tswitch (boosterId) {\r\n\t\tcase BoosterType.FIRST_PURCHASE_OLD:\r\n\t\t\tnormalizedBoosterId = BoosterType.OLD_GODS;\r\n\t}\r\n\treturn i18n.translateString(`global.pack.${BoosterType[normalizedBoosterId]?.toLowerCase()?.replace(/_/g, '-')}`);\r\n};\r\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeDeckList = void 0;
|
|
4
|
+
const deckstrings_1 = require("@firestone-hs/deckstrings");
|
|
5
|
+
const normalizeDeckList = (decklist, allCards) => {
|
|
6
|
+
var _a;
|
|
7
|
+
const decoded = deckstrings_1.decode(decklist);
|
|
8
|
+
const cards = decoded.cards.map((pair) => [getBaseCardForDeckbuilding(pair[0], allCards), pair[1]]);
|
|
9
|
+
const sideboards = (_a = decoded.sideboards) === null || _a === void 0 ? void 0 : _a.map((sideboard) => normalizeSideboard(sideboard, allCards));
|
|
10
|
+
const updated = {
|
|
11
|
+
...decoded,
|
|
12
|
+
cards: cards,
|
|
13
|
+
sideboards: sideboards,
|
|
14
|
+
};
|
|
15
|
+
return deckstrings_1.encode(updated);
|
|
16
|
+
};
|
|
17
|
+
exports.normalizeDeckList = normalizeDeckList;
|
|
18
|
+
const getBaseCardForDeckbuilding = (dbfId, allCards) => {
|
|
19
|
+
const card = allCards.getCard(dbfId);
|
|
20
|
+
return card.deckDuplicateDbfId ? allCards.getCard(card.deckDuplicateDbfId).dbfId || dbfId : dbfId;
|
|
21
|
+
};
|
|
22
|
+
const normalizeSideboard = (sideboard, allCards) => {
|
|
23
|
+
const cards = sideboard.cards.map((pair) => [getBaseCardForDeckbuilding(pair[0], allCards), pair[1]]);
|
|
24
|
+
return {
|
|
25
|
+
...sideboard,
|
|
26
|
+
cards: cards,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=deck-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deck-utils.js","sourceRoot":"","sources":["../../../src/services/deck-utils.ts"],"names":[],"mappings":";;;AAAA,2DAAgG;AAGzF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,QAAyB,EAAU,EAAE;;IACxF,MAAM,OAAO,GAAmB,oBAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,UAAU,GAAgB,MAAA,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChH,MAAM,OAAO,GAAmB;QAC/B,GAAG,OAAO;QACV,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,UAAU;KACtB,CAAC;IACF,OAAO,oBAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B;AAEF,MAAM,0BAA0B,GAAG,CAAC,KAAa,EAAE,QAAyB,EAAU,EAAE;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACnG,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAE,QAAyB,EAAa,EAAE;IACzF,MAAM,KAAK,GAAa,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,OAAO;QACN,GAAG,SAAS;QACZ,KAAK,EAAE,KAAK;KACZ,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { DeckDefinition, DeckList, decode, encode, Sideboard } from '@firestone-hs/deckstrings';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const normalizeDeckList = (decklist: string, allCards: AllCardsService): string => {\r\n\tconst decoded: DeckDefinition = decode(decklist);\r\n\tconst cards: DeckList = decoded.cards.map((pair) => [getBaseCardForDeckbuilding(pair[0], allCards), pair[1]]);\r\n\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) => normalizeSideboard(sideboard, allCards));\r\n\tconst updated: DeckDefinition = {\r\n\t\t...decoded,\r\n\t\tcards: cards,\r\n\t\tsideboards: sideboards,\r\n\t};\r\n\treturn encode(updated);\r\n};\r\n\r\nconst getBaseCardForDeckbuilding = (dbfId: number, allCards: AllCardsService): number => {\r\n\tconst card = allCards.getCard(dbfId);\r\n\treturn card.deckDuplicateDbfId ? allCards.getCard(card.deckDuplicateDbfId).dbfId || dbfId : dbfId;\r\n};\r\n\r\nconst normalizeSideboard = (sideboard: Sideboard, allCards: AllCardsService): Sideboard => {\r\n\tconst cards: DeckList = sideboard.cards.map((pair) => [getBaseCardForDeckbuilding(pair[0], allCards), pair[1]]);\r\n\treturn {\r\n\t\t...sideboard,\r\n\t\tcards: cards,\r\n\t};\r\n};\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duels-utils.js","sourceRoot":"","sources":["../../../src/services/duels-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { GameTag, ReferenceCard } from '../public-api';\r\n\r\nexport const duelsPassivePool1 = [\r\n\tCardIds.AllShallServeTavernBrawl,\r\n\tCardIds.ArcaneFluxTavernBrawl,\r\n\tCardIds.ArcaniteCrystalTavernBrawl,\r\n\tCardIds.ArcticArmorTavernBrawl,\r\n\tCardIds.BeckoningBicornTavernBrawl,\r\n\t// CardIds.BeOurGuestTavernBrawl,\r\n\tCardIds.BitterColdTavernBrawl,\r\n\tCardIds.BloodShieldsTavernBrawl,\r\n\tCardIds.BookOfWonders,\r\n\tCardIds.CadaverCollectorTavernBrawl,\r\n\tCardIds.CannibalismTavernBrawl,\r\n\tCardIds.CoilCastingTavernBrawl,\r\n\t// CardIds.ConduitOfTheStormsTavernBrawl,\r\n\tCardIds.CrystalGemTavernBrawl,\r\n\tCardIds.DivineIlluminationTavernBrawl,\r\n\tCardIds.DragonbloodTavernBrawl,\r\n\tCardIds.DragonAffinityTavernBrawl,\r\n\tCardIds.EdgeOfDredgeTavernBrawl,\r\n\t// CardIds.EverChangingElixirTavernBrawl,\r\n\tCardIds.FirekeepersIdolTavernBrawl,\r\n\t// CardIds.FireshaperTavernBrawl,\r\n\tCardIds.ForgottenDepthsTavernBrawl,\r\n\tCardIds.FreezeSolidTavernBrawl,\r\n\tCardIds.FromTheSwampTavernBrawl,\r\n\tCardIds.GrommashsArmguardsTavernBrawl,\r\n\tCardIds.HoldTheLineTavernBrawl,\r\n\tCardIds.InspiringPresenceTavernBrawl,\r\n\tCardIds.InvigoratingLightTavernBrawl,\r\n\tCardIds.KindlingFlameTavernBrawl,\r\n\tCardIds.MendingPoolsTavernBrawl,\r\n\tCardIds.MysteriousTomeTavernBrawl,\r\n\tCardIds.NaturalForceTavernBrawl,\r\n\tCardIds.OpenTheDoorwaysTavernBrawl,\r\n\tCardIds.OptimizedPolarityTavernBrawl,\r\n\tCardIds.PillageTheFallenTavernBrawl,\r\n\t// CardIds.PlaguebringerTavernBrawl,\r\n\tCardIds.PotionOfSparkingTavernBrawl,\r\n\tCardIds.RecyclingTavernBrawl,\r\n\t// CardIds.RhoninsScryingOrbTavernBrawl,\r\n\tCardIds.RighteousReservesTavernBrawl,\r\n\tCardIds.RingOfPhaseshiftingTavernBrawl,\r\n\tCardIds.RobeOfTheApprenticeTavernBrawl,\r\n\tCardIds.RobesOfShrinkingTavernBrawl,\r\n\tCardIds.RocketBackpacksTavernBrawl,\r\n\t// CardIds.ScatteredCaltropsTavernBrawl,\r\n\tCardIds.SmallBackpacksTavernBrawl,\r\n\t// CardIds.SmallPouchesTavernBrawl,\r\n\tCardIds.StaffOfPainTavernBrawl,\r\n\tCardIds.StakingAClaimTavernBrawl,\r\n\tCardIds.StickyFingersTavernBrawl,\r\n\tCardIds.TheFloorIsLavaTavernBrawl,\r\n\tCardIds.UnholyGiftTavernBrawl,\r\n\tCardIds.WitherTheWeakTavernBrawl,\r\n];\r\n\r\nexport const duelsPassivePool2 = [\r\n\tCardIds.AllTogetherNowTavernBrawl,\r\n\tCardIds.AvengingArmamentsTavernBrawl,\r\n\tCardIds.BattleStanceTavernBrawl,\r\n\t// CardIds.Caltrops,\r\n\tCardIds.BrittleBonesTavernBrawl,\r\n\tCardIds.BronzeSignetTavernBrawl,\r\n\tCardIds.CloakOfEmeraldDreamsTavernBrawl,\r\n\tCardIds.ColdFeetPactTavernBrawl,\r\n\tCardIds.CookiesLadleTavernBrawl,\r\n\tCardIds.CorruptedFelstoneTavernBrawl,\r\n\tCardIds.DeathlyDeathTavernBrawl,\r\n\tCardIds.DoubleTime,\r\n\tCardIds.DraconicDreamTavernBrawl,\r\n\tCardIds.DragonboneRitualTavernBrawl,\r\n\tCardIds.EerieStoneTavernBrawl,\r\n\tCardIds.ElixirOfVigorTavernBrawl,\r\n\tCardIds.EmeraldGogglesTavernBrawl,\r\n\tCardIds.EnduranceTrainingTavernBrawl,\r\n\tCardIds.FlamesOfTheKirinTorTavernBrawl,\r\n\tCardIds.FlameWavesTavernBrawl,\r\n\tCardIds.GhoulsRushInTavernBrawl,\r\n\tCardIds.GlacialDownpourTavernBrawl,\r\n\tCardIds.GreedyGainsTavernBrawl,\r\n\tCardIds.GuardianLightTavernBrawl,\r\n\tCardIds.HagathasEmbraceTavernBrawl,\r\n\t// CardIds.HeavyArmorTavernBrawl,\r\n\tCardIds.IdolsOfEluneTavernBrawl,\r\n\tCardIds.ImpCredibleTrousersTavernBrawl,\r\n\tCardIds.IronRootsTavernBrawl,\r\n\tCardIds.KhadgarsScryingOrb,\r\n\tCardIds.LocationLocationLocationTavernBrawl,\r\n\tCardIds.MeekMasteryTavernBrawl,\r\n\tCardIds.MulchMadnessTavernBrawl,\r\n\tCardIds.MummyMagic,\r\n\tCardIds.OopsAllSpellsTavernBrawl,\r\n\tCardIds.OrbOfRevelationTavernBrawl,\r\n\tCardIds.PartyReplacementTavernBrawl,\r\n\tCardIds.RallyTheTroopsTavernBrawl,\r\n\tCardIds.RingOfBlackIceTavernBrawl,\r\n\tCardIds.RingOfRefreshmentTavernBrawl,\r\n\tCardIds.RunicHelmTavernBrawl,\r\n\tCardIds.SpreadingSaplingsTavernBrawl,\r\n\tCardIds.StarvingTavernBrawl,\r\n\tCardIds.SunstridersCrownTavernBrawl,\r\n\tCardIds.UnlockedPotential,\r\n];\r\n\r\nexport const duelsPassivePool2UltraRare = [\r\n\tCardIds.BandOfBeesTavernBrawl,\r\n\tCardIds.BattleTotem_LOOTA_846,\r\n\tCardIds.CapturedFlag,\r\n\tCardIds.DisksOfLegendTavernBrawl,\r\n\t// CardIds.DisksOfLegend,\r\n\tCardIds.ExpeditedBurialTavernBrawl,\r\n\tCardIds.LegendaryLootTavernBrawl,\r\n\tCardIds.ManastormTavernBrawl,\r\n\tCardIds.MantleOfIgnitionTavernBrawl,\r\n\tCardIds.RingOfHasteTavernBrawl,\r\n\tCardIds.RobeOfTheMagi,\r\n\tCardIds.ScepterOfSummoning,\r\n\tCardIds.Shadowcasting101TavernBrawl,\r\n\tCardIds.SpecialDeliveryTavernBrawl,\r\n\tCardIds.Stargazing,\r\n\tCardIds.TotemOfTheDead_LOOTA_845,\r\n\tCardIds.UnstableMagicTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool1 = [\r\n\tCardIds.AmalgamateTavernBrawl,\r\n\tCardIds.AstralPortalTavernBrawl,\r\n\tCardIds.BeastlyBeautyTavernBrawl,\r\n\tCardIds.BubbaTavernBrawl,\r\n\tCardIds.ButchTavernBrawl,\r\n\tCardIds.BladeOfQueldelarTavernBrawl,\r\n\tCardIds.BloodMoonTavernBrawl,\r\n\tCardIds.ClockworkAssistantTavernBrawl_PVPDR_SCH_Active48,\r\n\tCardIds.CoinPouchTavernBrawl,\r\n\tCardIds.CreepyCurioTavernBrawl,\r\n\tCardIds.CrustyTheCrustaceanTavernBrawl,\r\n\tCardIds.Queldelar_HiltOfQueldelar,\r\n\tCardIds.Deathcharger,\r\n\tCardIds.Enrage,\r\n\tCardIds.GentlemansTopHat,\r\n\tCardIds.GoldenKobold,\r\n\tCardIds.GreedyPickaxeTavernBrawl,\r\n\tCardIds.HolyBookTavernBrawl,\r\n\tCardIds.HuntersInsightTavernBrawl,\r\n\tCardIds.JawsTavernBrawl,\r\n\tCardIds.LoyalHenchmanTavernBrawl,\r\n\tCardIds.LoyalSidekickTavernBrawl,\r\n\tCardIds.LoomingPresence_LOEA_01,\r\n\tCardIds.MageArmorTavernBrawl,\r\n\t// CardIds.MaskOfMimicryTavernBrawl,\r\n\tCardIds.MindpocalypseTavernBrawl,\r\n\tCardIds.DetectiveMurlocHolmesTavernBrawl,\r\n\tCardIds.MutatingInjection_NAX11_04,\r\n\tCardIds.NecroticPoisonTavernBrawl,\r\n\tCardIds.OldMilitiaHornTavernBrawl,\r\n\tCardIds.PartyPortalTavernBrawl_PVPDR_SCH_Active08,\r\n\tCardIds.PrincessTavernBrawl,\r\n\tCardIds.PureColdTavernBrawl,\r\n\tCardIds.PuzzleBoxTavernBrawl_PVPDR_SCH_Active02,\r\n\tCardIds.SowTheSeedsTavernBrawl,\r\n\tCardIds.SpyglassTavernBrawl,\r\n\tCardIds.SuperchargeTavernBrawl,\r\n\tCardIds.SurlyMobTavernBrawl,\r\n\tCardIds.TheExorcisorTavernBrawl,\r\n\tCardIds.TheStoneOfJordanTavernBrawlToken,\r\n\tCardIds.VampiricFangsToken,\r\n\tCardIds.WorshipperHeroic,\r\n];\r\n\r\nexport const duelsActivePool2 = [\r\n\tCardIds.ArchmageStaffTavernBrawl,\r\n\tCardIds.BagOfCoinsTavernBrawl,\r\n\tCardIds.BookOfTheDeadTavernBrawl,\r\n\tCardIds.GrimmerPatron_DALA_705,\r\n\tCardIds.HyperblasterTavernBrawl,\r\n\t// CardIds.AncientReflectionsTavernBrawl,\r\n\tCardIds.BagOfStuffingTavernBrawl,\r\n\tCardIds.BlackSoulstoneTavernBrawl,\r\n\tCardIds.BladeOfTheBurningSun,\r\n\tCardIds.GnomishArmyKnife_DALA_702,\r\n\tCardIds.BananaSplitTavernBrawl,\r\n\tCardIds.CanopicJarsTavernBrawl,\r\n\tCardIds.PhaorisBlade_ULDA_043,\r\n\tCardIds.RoyalGift,\r\n\tCardIds.StaffOfScales_ULDA_008,\r\n\tCardIds.TinyThimbleTavernBrawl,\r\n\tCardIds.WandOfDisintegrationTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool2UltraRare = [\r\n\tCardIds.ChaosTheoryTavernBrawl_PVPDR_SCH_Active49,\r\n\tCardIds.OverpoweredTavernBrawl,\r\n\tCardIds.DreamgroveRing,\r\n\tCardIds.EmbersOfRagnarosTavernBrawl,\r\n\tCardIds.WaxRager_LOOTA_840,\r\n\tCardIds.WishTavernBrawl,\r\n];\r\n\r\nexport const allDuelsPassiveTreasures = [...duelsPassivePool1, ...duelsPassivePool2, ...duelsPassivePool2UltraRare];\r\n\r\nexport const allDuelsTreasureCardIds = [\r\n\t...allDuelsPassiveTreasures,\r\n\t...duelsActivePool1,\r\n\t...duelsActivePool2,\r\n\t...duelsActivePool2UltraRare,\r\n];\r\n\r\nexport const normalizeDuelsHeroCardId = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.VanndarStormpikeTavernBrawl:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n\t\t\treturn CardIds.VanndarStormpikeTavernBrawl;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n\t\t\treturn CardIds.DrektharTavernBrawl;\r\n\t\tdefault:\r\n\t\t\treturn heroCardId;\r\n\t}\r\n};\r\n\r\n// Shouldn't be needed anymore, as deck codes are properly supported for these heroes\r\n// export const normalizeDuelsHeroCardIdForDeckCode = (heroCardId: string): string => {\r\n// \tswitch (heroCardId) {\r\n// \t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n// \t\t\treturn CardIds.IllidanStormrageHeroSkins;\r\n// \t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n// \t\t\treturn CardIds.RexxarHeroSkins;\r\n// \t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n// \t\t\treturn CardIds.UtherLightbringerHeroSkins;\r\n// \t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n// \t\t\treturn CardIds.AnduinWrynnHeroSkins;\r\n// \t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n// \t\t\treturn CardIds.ValeeraSanguinarHeroSkins;\r\n// \t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n// \t\t\treturn CardIds.MalfurionStormrageHeroSkins;\r\n// \t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n// \t\t\treturn CardIds.JainaProudmooreHeroSkins;\r\n// \t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n// \t\t\treturn CardIds.ThrallHeroSkins;\r\n// \t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n// \t\t\treturn CardIds.GuldanHeroSkins;\r\n// \t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n// \t\t\treturn CardIds.GarroshHellscreamHeroSkins;\r\n// \t\tdefault:\r\n// \t\t\treturn heroCardId;\r\n// \t}\r\n// };\r\n\r\n// Maybe it's possible to extract this from the game files or memory somehow?\r\n// Since it doesn't change often it's ok to maintain it manually, at least for now\r\nexport const duelsHeroConfigs = [\r\n\t{\r\n\t\thero: CardIds.StarStudentStelinaTavernBrawl,\r\n\t\t// heroClasses: [CardClass.DEMONHUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.InfernalStrikeTavernBrawl,\r\n\t\t\tCardIds.OutlanderTavernBrawl,\r\n\t\t\tCardIds.IllidariStrikeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SummoningRitualTavernBrawlToken,\r\n\t\t\tCardIds.MoargOutcastTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheLegionTavernBrawl,\r\n\t\t\tCardIds.BindingChainsTavernBrawlToken,\r\n\t\t\tCardIds.BladeOfQuickeningTavernBrawlToken,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ForestWardenOmuTavernBrawl,\r\n\t\t// heroClasses: [CardClass.DRUID],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NaturesGiftsTavernBrawl,\r\n\t\t\tCardIds.InvigoratingBloomTavernBrawl,\r\n\t\t\tCardIds.HarvestTimeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WardensInsightTavernBrawlToken,\r\n\t\t\tCardIds.MoonbeastTavernBrawlToken,\r\n\t\t\tCardIds.HerdingHornTavernBrawlToken,\r\n\t\t\tCardIds.MarvelousMyceliumTavernBrawlToken,\r\n\t\t\tCardIds.AwakenedAncientTavernBrawl,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ProfessorSlateTavernBrawl,\r\n\t\t// heroClasses: [CardClass.HUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SurvivalTrainingTavernBrawl,\r\n\t\t\tCardIds.DeathGamesTavernBrawl,\r\n\t\t\tCardIds.SavageSecretsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SlatesSyringeTavernBrawl,\r\n\t\t\tCardIds.BonecrusherTavernBrawlToken,\r\n\t\t\tCardIds.StalkingPrideTavernBrawlToken,\r\n\t\t\tCardIds.DeathstriderTavernBrawl,\r\n\t\t\tCardIds.CarrotOnAStickTavernBrawl,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MozakiMasterDuelistTavernBrawl,\r\n\t\t// heroClasses: [CardClass.MAGE],\r\n\t\theroPowers: [CardIds.WyrmBoltTavernBrawl, CardIds.SecretStudiesTavernBrawl, CardIds.FrostShardsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WandOfDuelingTavernBrawlToken,\r\n\t\t\tCardIds.ElementalLearningTavernBrawl,\r\n\t\t\tCardIds.InfiniteArcaneTavernBrawlToken,\r\n\t\t\tCardIds.EmbercasterTavernBrawl,\r\n\t\t\tCardIds.YoggTasticTastiesTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.TuralyonTheTenuredTavernBrawl,\r\n\t\t// heroClasses: [CardClass.PALADIN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.FromGoldenLightTavernBrawl,\r\n\t\t\tCardIds.BringOnRecruitsTavernBrawl,\r\n\t\t\tCardIds.ModestAspirationsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RoyalGreatswordTavernBrawlToken,\r\n\t\t\tCardIds.MenAtArmsTavernBrawlToken,\r\n\t\t\tCardIds.DrocomurchanicasTavernBrawlToken,\r\n\t\t\tCardIds.FavoredRacerTavernBrawl,\r\n\t\t\tCardIds.HumbleBlessingsTavernBrawl,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MindrenderIlluciaTavernBrawl,\r\n\t\t// heroClasses: [CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ShadowMendTavernBrawl, CardIds.MindTetherTavernBrawl, CardIds.CallOfMadnessTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FracturedSpiritsTavernBrawlToken,\r\n\t\t\tCardIds.DropletOfInsanityTavernBrawlToken,\r\n\t\t\tCardIds.ScionOfTheDeepTavernBrawlToken,\r\n\t\t\tCardIds.ShadowWordVoidTavernBrawl,\r\n\t\t\tCardIds.HeraldOfTheScaledOnesTavernBrawl,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InfiltratorLilianTavernBrawl,\r\n\t\t// heroClasses: [CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.RoguishManeuversTavernBrawl,\r\n\t\t\tCardIds.ConnectionsTavernBrawl,\r\n\t\t\tCardIds.VileConcoctionTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.DeadlyWeapons101TavernBrawlToken,\r\n\t\t\tCardIds.NerubianPeddlerTavernBrawlToken,\r\n\t\t\tCardIds.AcquiredAlliesTavernBrawlToken,\r\n\t\t\tCardIds.AceInTheHoleTavernBrawlToken,\r\n\t\t\tCardIds.GreenTortollanShellTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InstructorFireheartTavernBrawlToken,\r\n\t\t// heroClasses: [CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.StormcatcherTavernBrawl,\r\n\t\t\tCardIds.TotemicPowerTavernBrawl,\r\n\t\t\tCardIds.FerociousFlurryTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ChaosStormTavernBrawl,\r\n\t\t\tCardIds.FluctuatingTotemTavernBrawlToken,\r\n\t\t\tCardIds.InvokeTheVoidTavernBrawlToken,\r\n\t\t\tCardIds.PayloadTotemSpecialistTavernBrawl,\r\n\t\t\tCardIds.TempestsFuryTavernBrawlToken,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ArchwitchWillowTavernBrawl,\r\n\t\t// heroClasses: [CardClass.WARLOCK],\r\n\t\theroPowers: [CardIds.DarkArtsTavernBrawl, CardIds.DemonBloodTavernBrawl, CardIds.SoulcialStudiesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ImpishAidTavernBrawl,\r\n\t\t\tCardIds.GiftOfTheOldGodsTavernBrawlToken,\r\n\t\t\tCardIds.KillmoxTheBanishedOneTavernBrawlToken,\r\n\t\t\tCardIds.Demonology101TavernBrawlToken,\r\n\t\t\tCardIds.DemonizerTavernBrawlToken,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.RattlegoreTavernBrawl,\r\n\t\t// heroClasses: [CardClass.WARRIOR],\r\n\t\theroPowers: [CardIds.NoGutsNoGloryTavernBrawl, CardIds.BruisingTavernBrawl, CardIds.MagneticMinesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.AutoArmamentsTavernBrawlToken,\r\n\t\t\tCardIds.CollectorsIreTavernBrawlToken,\r\n\t\t\tCardIds.BrewsterTheBrutalTavernBrawlToken,\r\n\t\t\tCardIds.ScrapmetalDemolitionistTavernBrawl,\r\n\t\t\tCardIds.SpikedArmsTavernBrawlToken,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.DrektharTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5,\r\n\t\t],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.WarmastersFrenzyTavernBrawl,\r\n\t\t\tCardIds.HarnessTheElementsTavernBrawl,\r\n\t\t\tCardIds.WarCommandsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ValorousDisplayTavernBrawlToken,\r\n\t\t\tCardIds.ElementalChaosTavernBrawlToken,\r\n\t\t\tCardIds.PactOfTheLichTavernBrawlToken,\r\n\t\t\tCardIds.MagisterUnchainedTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheHeartTavernBrawlToken,\r\n\t\t\tCardIds.ForTheHordeTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.VanndarStormpikeTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5,\r\n\t\t],\r\n\t\theroPowers: [CardIds.PromoteTavernBrawl, CardIds.SendInTheScoutTavernBrawl, CardIds.BattleTacticsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ForgeInLightTavernBrawlToken,\r\n\t\t\tCardIds.SpymastersGambitTavernBrawlToken,\r\n\t\t\tCardIds.StalkersSuppliesTavernBrawlToken,\r\n\t\t\tCardIds.RendingAmbushTavernBrawlToken,\r\n\t\t\tCardIds.DevoutBlessingsTavernBrawlToken,\r\n\t\t\tCardIds.ForTheAllianceTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.RenoJacksonTavernBrawl_PVPDR_Hero_Reno,\r\n\t\t// heroClasses: [CardClass.MAGE, CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.AmateurMageTavernBrawl,\r\n\t\t\tCardIds.RelicologistTavernBrawl,\r\n\t\t\tCardIds.ArcaneCraftinessTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RenosLuckyHatTavernBrawl,\r\n\t\t\tCardIds.RenosCraftyLassoTavernBrawl,\r\n\t\t\tCardIds.RenosMagicalTorchTavernBrawl,\r\n\t\t\tCardIds.SrTombDiverTavernBrawl,\r\n\t\t\tCardIds.LeiFlamepawTavernBrawl,\r\n\t\t\tCardIds.TheGatlingWandTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.SirFinleyTavernBrawl_PVPDR_Hero_Finley,\r\n\t\t// heroClasses: [CardClass.PALADIN, CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NewRecruitsTavernBrawl,\r\n\t\t\tCardIds.BubbleBlowerTavernBrawl,\r\n\t\t\tCardIds.PowerUpTavernBrawl_PVPDR_Finley_HP3,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FinleysPithHelmetTavernBrawl,\r\n\t\t\tCardIds.MaxwellMightySteedTavernBrawl,\r\n\t\t\tCardIds.TruesilverLanceTavernBrawl,\r\n\t\t\tCardIds.SrScoutTavernBrawl,\r\n\t\t\tCardIds.KarlTheLostTavernBrawl,\r\n\t\t\tCardIds.ScalesOfJusticeTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.EliseStarseekerTavernBrawl_PVPDR_Hero_Elise,\r\n\t\t// heroClasses: [CardClass.DRUID, CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ElisesMightTavernBrawl, CardIds.DruidicTeachingTavernBrawl, CardIds.StarseekerTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.StarseekersToolsTavernBrawl,\r\n\t\t\tCardIds.ElisesMacheteTavernBrawl,\r\n\t\t\tCardIds.AddarahTavernBrawl,\r\n\t\t\tCardIds.SrNavigatorTavernBrawl,\r\n\t\t\tCardIds.AcademicResearchTavernBrawl,\r\n\t\t\tCardIds.StaffOfRenewalTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.BrannBronzebeardTavernBrawl_PVPDR_Hero_Brann,\r\n\t\t// heroClasses: [CardClass.HUNTER, CardClass.WARRIOR],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SpreadShotTavernBrawl,\r\n\t\t\tCardIds.WellEquippedTavernBrawl_PVPDR_Brann_HP2,\r\n\t\t\tCardIds.DinoTrackingTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.OlFaithfulTavernBrawl,\r\n\t\t\tCardIds.BrannsSaddleTavernBrawl,\r\n\t\t\tCardIds.TitanForgedGrapnelTavernBrawl,\r\n\t\t\tCardIds.SrExcavatorTavernBrawl,\r\n\t\t\tCardIds.FloSlatebrandTavernBrawl,\r\n\t\t\tCardIds.BrannsEpicEggTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.DariusCrowleyTavernBrawl,\r\n\t\t// heroClasses: [CardClass.WARRIOR],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.FireTavernBrawl_PVPDR_Darius_P1,\r\n\t\t\tCardIds.FireAwayTavernBrawl,\r\n\t\t\tCardIds.FireAtTheeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SafeHarborTavernBrawl,\r\n\t\t\tCardIds.GrizzledReinforcementTavernBrawl,\r\n\t\t\tCardIds.TuskarrRaiderTavernBrawl,\r\n\t\t\tCardIds.SeabreakerGoliathTavernBrawl,\r\n\t\t\tCardIds.DeckSwabbieTavernBrawl,\r\n\t\t\tCardIds.DraconicMunitionTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.SaiShadestormTavernBrawl,\r\n\t\t// heroClasses: [CardClass.DEATHKNIGHT],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.GhoulBlitzTavernBrawl,\r\n\t\t\tCardIds.GatheringStormTavernBrawl,\r\n\t\t\tCardIds.LichborneMightTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.GluthTavernBrawl_PVPDR_Sai_T1,\r\n\t\t\tCardIds.GlaciaxeTavernBrawl,\r\n\t\t\tCardIds.RemembranceOfIceTavernBrawl,\r\n\t\t\tCardIds.UnholyEmbraceTavernBrawl,\r\n\t\t\tCardIds.GluthSicleTavernBrawl,\r\n\t\t\tCardIds.InexorableGhoulTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ScarletLeafdancerTavernBrawlToken,\r\n\t\t// heroClasses: [CardClass.DEATHKNIGHT],\r\n\t\theroPowers: [CardIds.BloodParasiteTavernBrawl, CardIds.HematologyTavernBrawl, CardIds.ScourgingTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RunedSoulbladeTavernBrawl,\r\n\t\t\tCardIds.ScourgeStrikeTavernBrawl,\r\n\t\t\tCardIds.CrimsonTavernBrawl,\r\n\t\t\tCardIds.IronweaveBloodletterTavernBrawl,\r\n\t\t\tCardIds.GreatswordOfTheEbonBladeTavernBrawl,\r\n\t\t\tCardIds.ContagionConcoctionTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.DiabloTavernBrawl_PVPDR_Hero_Diablo,\r\n\t\theroPowers: [\r\n\t\t\tCardIds.DoomChargeTavernBrawl,\r\n\t\t\tCardIds.PrimalPowerTavernBrawl,\r\n\t\t\tCardIds.DemonicTransformationTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ClawsOfTerrorTavernBrawlToken,\r\n\t\t\tCardIds.FireStompTavernBrawlToken,\r\n\t\t\tCardIds.ApocalypseTavernBrawlToken,\r\n\t\t\tCardIds.SoulstoneTrapTavernBrawlToken,\r\n\t\t\tCardIds.HornsOfFlameTavernBrawlToken,\r\n\t\t\tCardIds.JourneyToTheEastTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n];\r\n\r\nexport const allDuelsSignatureTreasures = duelsHeroConfigs.flatMap((info) => info.signatureTreasures);\r\n\r\nexport const allDuelsHeroes = duelsHeroConfigs.map((conf) => conf.hero);\r\nexport const allDuelsHeroesExtended = duelsHeroConfigs.flatMap((conf) => [conf.hero, ...(conf.alternateHeroes ?? [])]);\r\n\r\nexport const isPassive = (\r\n\tcardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): boolean => {\r\n\treturn (\r\n\t\tallDuelsPassiveTreasures.includes(cardId as CardIds) ||\r\n\t\tallCards.getCard(cardId)?.mechanics?.includes(GameTag[GameTag.DUNGEON_PASSIVE_BUFF])\r\n\t);\r\n};\r\n\r\n// https://hearthstone.fandom.com/wiki/Duels#Current_season\r\nexport const duelsTreasureRank = (cardId: string): number => {\r\n\tif (!cardId) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tif (!allDuelsTreasureCardIds.includes(cardId as CardIds)) {\r\n\t\tconsole.error('Incorrect config for duels card IDs?', cardId);\r\n\t\treturn 0;\r\n\t}\r\n\tif (duelsPassivePool2.includes(cardId as CardIds) || duelsActivePool2.includes(cardId as CardIds)) {\r\n\t\treturn 2;\r\n\t} else if (\r\n\t\tduelsPassivePool2UltraRare.includes(cardId as CardIds) ||\r\n\t\tduelsActivePool2UltraRare.includes(cardId as CardIds)\r\n\t) {\r\n\t\treturn 3;\r\n\t}\r\n\treturn 1;\r\n};\r\n\r\nexport const isSignatureTreasure = (cardId: string): boolean => {\r\n\treturn allDuelsSignatureTreasures.includes(cardId as CardIds);\r\n};\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hs-utils.js","sourceRoot":"","sources":["../../../src/services/hs-utils.ts"],"names":[],"mappings":";;;AAEA,8CAA2C;AAGpC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAoB,EAAE;IACpE,QAAQ,MAAM,EAAE;QACf,KAAK,uBAAU,CAAC,WAAW;YAC1B,OAAO,UAAU,CAAC;QACnB,KAAK,uBAAU,CAAC,UAAU;YACzB,OAAO,SAAS,CAAC;QAClB,KAAK,uBAAU,CAAC,QAAQ;YACvB,OAAO,OAAO,CAAC;QAChB,KAAK,uBAAU,CAAC,OAAO,CAAC;QACxB;YACC,OAAO,MAAM,CAAC;KACf;AACF,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB;AAEK,MAAM,2BAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;IAC1E,QAAQ,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,EAAE,EAAE;QACnC,KAAK,aAAa;YACjB,OAAO,KAAK,CAAC;QACd,KAAK,aAAa;YACjB,OAAO,KAAK,CAAC;QACd,KAAK,OAAO;YACX,OAAO,GAAG,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,EAAE,CAAC;QACX,KAAK,MAAM;YACV,OAAO,GAAG,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,GAAG,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,GAAG,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,GAAG,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,IAAI,CAAC;QACb,KAAK,SAAS;YACb,OAAO,GAAG,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,CAAC,CAAC;QACV;YACC,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC;KACV;AACF,CAAC,CAAC;AA5BW,QAAA,2BAA2B,+BA4BtC;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAmB,EAAW,EAAE;IACnE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAChG,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAmB,EAAE,QAAyB,EAAU,EAAE;;IAC/F,IAAI,IAAI,CAAC,SAAS,EAAE;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACtB;IAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,OAAO,MAAA,UAAU,CAAC,SAAS,mCAAI,CAAC,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,yBAAyB,EAAE;QACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9E,OAAO,MAAA,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;KAClC;IAED,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC","sourcesContent":["import { GameFormatString } from '../enums/game-format';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { GameFormat } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const formatFormat = (format: GameFormat): GameFormatString => {\r\n\tswitch (format) {\r\n\t\tcase GameFormat.FT_STANDARD:\r\n\t\t\treturn 'standard';\r\n\t\tcase GameFormat.FT_CLASSIC:\r\n\t\t\treturn 'classic';\r\n\t\tcase GameFormat.FT_TWIST:\r\n\t\t\treturn 'twist';\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn 'wild';\r\n\t}\r\n};\r\n\r\nexport const getDefaultHeroDbfIdForClass = (playerClass: string): number => {\r\n\tswitch (playerClass?.toLowerCase()) {\r\n\t\tcase 'deathknight':\r\n\t\t\treturn 78065;\r\n\t\tcase 'demonhunter':\r\n\t\t\treturn 56550;\r\n\t\tcase 'druid':\r\n\t\t\treturn 274;\r\n\t\tcase 'hunter':\r\n\t\t\treturn 31;\r\n\t\tcase 'mage':\r\n\t\t\treturn 637;\r\n\t\tcase 'paladin':\r\n\t\t\treturn 671;\r\n\t\tcase 'priest':\r\n\t\t\treturn 813;\r\n\t\tcase 'rogue':\r\n\t\t\treturn 930;\r\n\t\tcase 'shaman':\r\n\t\t\treturn 1066;\r\n\t\tcase 'warlock':\r\n\t\t\treturn 893;\r\n\t\tcase 'warrior':\r\n\t\t\treturn 7;\r\n\t\tdefault:\r\n\t\t\tconsole.warn('Could not normalize hero card id', playerClass);\r\n\t\t\treturn 7;\r\n\t}\r\n};\r\n\r\nexport const isBattlegroundsCard = (card: ReferenceCard): boolean => {\r\n\treturn !!card.techLevel || !!card.battlegroundsNormalDbfId || !!card.battlegroundsPremiumDbfId;\r\n};\r\n\r\nexport const getEffectiveTechLevel = (card: ReferenceCard, allCards: AllCardsService): number => {\r\n\tif (card.techLevel) {\r\n\t\treturn card.techLevel;\r\n\t}\r\n\r\n\tif (card.battlegroundsNormalDbfId) {\r\n\t\tconst normalCard = allCards.getCardFromDbfId(card.battlegroundsNormalDbfId);\r\n\t\treturn normalCard.techLevel ?? 1;\r\n\t}\r\n\r\n\tif (card.battlegroundsPremiumDbfId) {\r\n\t\tconst premiumCard = allCards.getCardFromDbfId(card.battlegroundsPremiumDbfId);\r\n\t\treturn premiumCard.techLevel ?? 1;\r\n\t}\r\n\r\n\treturn 1;\r\n};\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mercs-utils.js","sourceRoot":"","sources":["../../../src/services/mercs-utils.ts"],"names":[],"mappings":";;;AAAA,8CAAyC;AAElC,MAAM,gBAAgB,GAAG,CAAC,QAA2B,EAAW,EAAE;IACxE,OAAO,QAAQ,KAAK,qBAAQ,CAAC,kBAAkB,IAAI,QAAQ,KAAK,iBAAiB,CAAC;AACnF,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,gBAAgB,GAAG,CAAC,QAA2B,EAAW,EAAE;IACxE,OAAO,CACN,QAAQ,KAAK,qBAAQ,CAAC,kBAAkB;QACxC,QAAQ,KAAK,qBAAQ,CAAC,uBAAuB;QAC7C,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,KAAK,sBAAsB,CACnC,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,gBAAgB,oBAO3B","sourcesContent":["import { GameType } from '../public-api';\r\n\r\nexport const isMercenariesPvP = (gameType: GameType | string): boolean => {\r\n\treturn gameType === GameType.GT_MERCENARIES_PVP || gameType === 'mercenaries-pvp';\r\n};\r\n\r\nexport const isMercenariesPvE = (gameType: GameType | string): boolean => {\r\n\treturn (\r\n\t\tgameType === GameType.GT_MERCENARIES_PVE ||\r\n\t\tgameType === GameType.GT_MERCENARIES_PVE_COOP ||\r\n\t\tgameType === 'mercenaries-pve' ||\r\n\t\tgameType === 'mercenaries-pve-coop'\r\n\t);\r\n};\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twist-utils.js","sourceRoot":"","sources":["../../../src/services/twist-utils.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAG,iCAAmE,CAAC","sourcesContent":["import { CardIds } from '../card-ids';\r\n\r\nexport const bannedTwistCards = [CardIds.Glide, CardIds.RefreshingSpringWater, CardIds.CryptKeeper];\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/services/utils.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAEhC,SAAS,cAAc,CAAI,KAAmB,EAAE,aAAqB;IACpE,MAAM,WAAW,GAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,OAAO,WAAW,CAAC,MAAM,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;KAClD;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAiDQ,wCAAc;AA/CvB,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,WAAW,GAAG,CAAC,EAAE,kBAAkB,GAAG,IAAI;IACzF,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC5E,IAAI,WAAW,IAAI,CAAC,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;KACZ;IAED,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,CAAC;KAC5C;IAAC,OAAO,CAAC,EAAE;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;KACjD;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;KACjD;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AA0B8B,0CAAe;AAxB9C,KAAK,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,qBAAK,CAAC,OAAO,CAAC;aACZ,IAAI,CACJ,CAAC,QAAQ,EAAE,EAAE;YAEZ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC;QACb,CAAC,CACD;aACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAEd,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACJ,CAAC;AAMwB,oBAAI;AAJ7B,KAAK,UAAU,KAAK,CAAC,EAAE;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAE+C,sBAAK","sourcesContent":["import fetch from 'cross-fetch';\r\n\r\nfunction partitionArray<T>(array: readonly T[], partitionSize: number): readonly T[][] {\r\n\tconst workingCopy: T[] = [...array];\r\n\tconst result: T[][] = [];\r\n\twhile (workingCopy.length) {\r\n\t\tresult.push(workingCopy.splice(0, partitionSize));\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nasync function httpWithRetries(request: string, retriesLeft = 1, timeBetweenRetries = 1000): Promise<any> {\r\n\tconsole.log('fetch with retries', request, retriesLeft, timeBetweenRetries);\r\n\tif (retriesLeft <= 0) {\r\n\t\tconsole.error('could not load cards', request);\r\n\t\treturn null;\r\n\t}\r\n\r\n\tlet result = null;\r\n\ttry {\r\n\t\tresult = await http(request);\r\n\t\tconsole.log('loaded cards', result?.length);\r\n\t} catch (e) {\r\n\t\tconsole.warn('Exception while getting cards', e);\r\n\t}\r\n\tif (!result || result.startsWith('<')) {\r\n\t\tconsole.log('no result, sleeping');\r\n\t\tawait sleep(timeBetweenRetries);\r\n\t\tconsole.log('retrying');\r\n\t\treturn httpWithRetries(request, retriesLeft - 1);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nasync function http(request: string): Promise<any> {\r\n\treturn new Promise((resolve) => {\r\n\t\tfetch(request)\r\n\t\t\t.then(\r\n\t\t\t\t(response) => {\r\n\t\t\t\t\t// console.log('received response, reading text body');\r\n\t\t\t\t\treturn response.text();\r\n\t\t\t\t},\r\n\t\t\t\t(error) => {\r\n\t\t\t\t\tconsole.warn('could not load cards', error, error.message, JSON.stringify(error));\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t},\r\n\t\t\t)\r\n\t\t\t.then((body) => {\r\n\t\t\t\t// console.log('sending back body', body && body.length);\r\n\t\t\t\tresolve(body);\r\n\t\t\t});\r\n\t});\r\n}\r\n\r\nasync function sleep(ms) {\r\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n\r\nexport { partitionArray, http, httpWithRetries, sleep };\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const deckstrings_1 = require("@firestone-hs/deckstrings");
|
|
4
|
+
const public_api_1 = require("../src/public-api");
|
|
5
|
+
const test = async () => {
|
|
6
|
+
const allCards = new public_api_1.AllCardsService();
|
|
7
|
+
await allCards.initializeCardsDb();
|
|
8
|
+
const original = {
|
|
9
|
+
heroes: [7],
|
|
10
|
+
format: 1,
|
|
11
|
+
cards: [
|
|
12
|
+
[58487, 2],
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
const expected = {
|
|
16
|
+
heroes: [7],
|
|
17
|
+
format: 1,
|
|
18
|
+
cards: [
|
|
19
|
+
[69586, 2],
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const originalEncoded = deckstrings_1.encode(original);
|
|
23
|
+
const expectedEncoded = deckstrings_1.encode(expected);
|
|
24
|
+
const actual = public_api_1.normalizeDeckList(originalEncoded, allCards);
|
|
25
|
+
const isSame = JSON.stringify(actual) === JSON.stringify(expectedEncoded);
|
|
26
|
+
console.log('isSame?', isSame);
|
|
27
|
+
if (!isSame) {
|
|
28
|
+
console.error('Expected', expectedEncoded);
|
|
29
|
+
console.error('Actual', actual);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
test();
|
|
33
|
+
//# sourceMappingURL=test-normalize-decklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-normalize-decklist.js","sourceRoot":"","sources":["../../test/test-normalize-decklist.ts"],"names":[],"mappings":";;AAAA,2DAAmE;AACnE,kDAAuE;AAEvE,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACvB,MAAM,QAAQ,GAAG,IAAI,4BAAe,EAAE,CAAC;IACvC,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAmB;QAChC,MAAM,EAAE,CAAC,CAAC,CAAC;QACX,MAAM,EAAE,CAAC;QACT,KAAK,EAAE;YAEN,CAAC,KAAK,EAAE,CAAC,CAAC;SACV;KACD,CAAC;IACF,MAAM,QAAQ,GAAmB;QAChC,MAAM,EAAE,CAAC,CAAC,CAAC;QACX,MAAM,EAAE,CAAC;QACT,KAAK,EAAE;YAEN,CAAC,KAAK,EAAE,CAAC,CAAC;SACV;KACD,CAAC;IACF,MAAM,eAAe,GAAG,oBAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,oBAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,8BAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAChC;AACF,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC","sourcesContent":["import { DeckDefinition, encode } from '@firestone-hs/deckstrings';\r\nimport { AllCardsService, normalizeDeckList } from '../src/public-api';\r\n\r\nconst test = async () => {\r\n\tconst allCards = new AllCardsService();\r\n\tawait allCards.initializeCardsDb();\r\n\tconst original: DeckDefinition = {\r\n\t\theroes: [7],\r\n\t\tformat: 1,\r\n\t\tcards: [\r\n\t\t\t// Battlefiend\r\n\t\t\t[58487, 2],\r\n\t\t],\r\n\t};\r\n\tconst expected: DeckDefinition = {\r\n\t\theroes: [7],\r\n\t\tformat: 1,\r\n\t\tcards: [\r\n\t\t\t// Battlefiend core\r\n\t\t\t[69586, 2],\r\n\t\t],\r\n\t};\r\n\tconst originalEncoded = encode(original);\r\n\tconst expectedEncoded = encode(expected);\r\n\tconst actual = normalizeDeckList(originalEncoded, allCards);\r\n\tconst isSame = JSON.stringify(actual) === JSON.stringify(expectedEncoded);\r\n\tconsole.log('isSame?', isSame);\r\n\tif (!isSame) {\r\n\t\tconsole.error('Expected', expectedEncoded);\r\n\t\tconsole.error('Actual', actual);\r\n\t}\r\n};\r\n\r\ntest();\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firestone-hs/reference-data",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.108",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"lint": "eslint --color --fix --ext .ts .",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"dist/**/*"
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@firestone-hs/deckstrings": "^2.2.7",
|
|
24
25
|
"cross-fetch": "^3.0.4",
|
|
25
26
|
"rxjs": "~6.6.7",
|
|
26
27
|
"tslib": "^2.0.0",
|