@firestone-hs/reference-data 2.0.80 → 2.0.82

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.
@@ -49,15 +49,17 @@ class CardsForDeckbuildingService {
49
49
  this.duplicatesForDeckbuilding = result;
50
50
  }
51
51
  normalizeDeckList(decklist, allCards) {
52
- var _a;
52
+ var _a, _b;
53
53
  const decoded = deckstrings_1.decode(decklist);
54
54
  const cards = decoded.cards.map((pair) => [
55
55
  this.getBaseCardDbfIdForDeckbuilding(pair[0], decoded.format, allCards),
56
56
  pair[1],
57
57
  ]);
58
58
  const sideboards = (_a = decoded.sideboards) === null || _a === void 0 ? void 0 : _a.map((sideboard) => this.normalizeSideboard(sideboard, decoded.format, allCards));
59
+ const heroes = (_b = decoded.heroes) === null || _b === void 0 ? void 0 : _b.map((heroDbfId) => { var _a; return (_a = public_api_1.normalizeDeckHeroDbfId(heroDbfId, allCards)) !== null && _a !== void 0 ? _a : 7; });
59
60
  const updated = {
60
61
  ...decoded,
62
+ heroes: heroes,
61
63
  cards: cards,
62
64
  sideboards: sideboards,
63
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cards-for-deckbuilding.service.js","sourceRoot":"","sources":["../../src/services/cards-for-deckbuilding.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeckDefinition, DeckList, Sideboard, decode, encode } from '@firestone-hs/deckstrings';\r\nimport { GameFormat, ReferenceCard, duelsSets, formatFormat, standardSets, twistSets, wildSets } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\ninterface Duplicates {\r\n\t[format: string]: DuplicatesForFormat;\r\n}\r\ninterface DuplicatesForFormat {\r\n\t[dbfId: string]: ReferenceCard;\r\n}\r\n\r\nexport class CardsForDeckbuildingService {\r\n\tprivate duplicatesForDeckbuilding: Duplicates = null;\r\n\r\n\tpublic init(allCards: AllCardsService) {\r\n\t\tconst allSetsDuplicates: {\r\n\t\t\t[dbfId: string]: ReferenceCard[];\r\n\t\t} = {};\r\n\t\tfor (const card of allCards.getCards()) {\r\n\t\t\tif (!!card.counterpartCards?.length || card.deckDuplicateDbfId) {\r\n\t\t\t\tconst rootId = card.counterpartCards?.[0] ?? card.deckDuplicateDbfId;\r\n\t\t\t\tif (!allSetsDuplicates[rootId]) {\r\n\t\t\t\t\tallSetsDuplicates[rootId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[rootId].push(card);\r\n\t\t\t} else {\r\n\t\t\t\tif (!allSetsDuplicates[card.dbfId]) {\r\n\t\t\t\t\tallSetsDuplicates[card.dbfId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[card.dbfId].push(card);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Order all the cards by their dbfid\r\n\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\tallSetsDuplicates[dbfId] = allSetsDuplicates[dbfId].sort((a, b) => a.dbfId - b.dbfId);\r\n\t\t}\r\n\r\n\t\tconst formats: readonly ('standard' | 'wild' | 'twist' | 'classic' | 'duels')[] = [\r\n\t\t\t'standard',\r\n\t\t\t'wild',\r\n\t\t\t'twist',\r\n\t\t\t'duels',\r\n\t\t];\r\n\t\tconst result: Duplicates = {};\r\n\t\tfor (const format of formats) {\r\n\t\t\tresult[format] = {};\r\n\t\t\tconst allowedSets = this.getAllowedSets(format);\r\n\t\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\t\tconst cards = allSetsDuplicates[dbfId];\r\n\t\t\t\tconst card = cards.find((card) => allowedSets.includes(card.set?.toLowerCase()));\r\n\t\t\t\tif (card) {\r\n\t\t\t\t\tresult[format][dbfId] = card;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.duplicatesForDeckbuilding = result;\r\n\t}\r\n\r\n\tpublic normalizeDeckList(decklist: string, allCards: AllCardsService): string {\r\n\t\tconst decoded: DeckDefinition = decode(decklist);\r\n\t\tconst cards: DeckList = decoded.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], decoded.format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) =>\r\n\t\t\tthis.normalizeSideboard(sideboard, decoded.format, allCards),\r\n\t\t);\r\n\t\tconst updated: DeckDefinition = {\r\n\t\t\t...decoded,\r\n\t\t\tcards: cards,\r\n\t\t\tsideboards: sideboards,\r\n\t\t};\r\n\t\treturn encode(updated);\r\n\t}\r\n\r\n\tpublic normalizeSideboard(sideboard: Sideboard, format: GameFormat, allCards: AllCardsService): Sideboard {\r\n\t\tconst cards: DeckList = sideboard.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\treturn {\r\n\t\t\t...sideboard,\r\n\t\t\tcards: cards,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getBaseCardDbfIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): number {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn (\r\n\t\t\tthis.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.dbfId ?? allCards.getCard(deckDbfId).dbfId\r\n\t\t);\r\n\t}\r\n\r\n\tpublic getBaseCardIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): string {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn this.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.id ?? allCards.getCard(deckDbfId).id;\r\n\t}\r\n\r\n\tprivate getAllowedSets(format: 'standard' | 'wild' | 'twist' | 'classic' | 'duels'): readonly string[] {\r\n\t\tswitch (format) {\r\n\t\t\tcase 'standard':\r\n\t\t\t\treturn standardSets;\r\n\t\t\tcase 'classic':\r\n\t\t\t\treturn ['classic'];\r\n\t\t\tcase 'twist':\r\n\t\t\t\treturn twistSets;\r\n\t\t\tcase 'duels':\r\n\t\t\t\treturn duelsSets;\r\n\t\t\tcase 'wild':\r\n\t\t\tdefault:\r\n\t\t\t\treturn wildSets;\r\n\t\t}\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"cards-for-deckbuilding.service.js","sourceRoot":"","sources":["../../src/services/cards-for-deckbuilding.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeckDefinition, DeckList, Sideboard, decode, encode } from '@firestone-hs/deckstrings';\r\nimport {\r\n\tGameFormat,\r\n\tReferenceCard,\r\n\tduelsSets,\r\n\tformatFormat,\r\n\tnormalizeDeckHeroDbfId,\r\n\tstandardSets,\r\n\ttwistSets,\r\n\twildSets,\r\n} from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\ninterface Duplicates {\r\n\t[format: string]: DuplicatesForFormat;\r\n}\r\ninterface DuplicatesForFormat {\r\n\t[dbfId: string]: ReferenceCard;\r\n}\r\n\r\nexport class CardsForDeckbuildingService {\r\n\tprivate duplicatesForDeckbuilding: Duplicates = null;\r\n\r\n\tpublic init(allCards: AllCardsService) {\r\n\t\tconst allSetsDuplicates: {\r\n\t\t\t[dbfId: string]: ReferenceCard[];\r\n\t\t} = {};\r\n\t\tfor (const card of allCards.getCards()) {\r\n\t\t\tif (!!card.counterpartCards?.length || card.deckDuplicateDbfId) {\r\n\t\t\t\tconst rootId = card.counterpartCards?.[0] ?? card.deckDuplicateDbfId;\r\n\t\t\t\tif (!allSetsDuplicates[rootId]) {\r\n\t\t\t\t\tallSetsDuplicates[rootId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[rootId].push(card);\r\n\t\t\t} else {\r\n\t\t\t\tif (!allSetsDuplicates[card.dbfId]) {\r\n\t\t\t\t\tallSetsDuplicates[card.dbfId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[card.dbfId].push(card);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Order all the cards by their dbfid\r\n\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\tallSetsDuplicates[dbfId] = allSetsDuplicates[dbfId].sort((a, b) => a.dbfId - b.dbfId);\r\n\t\t}\r\n\r\n\t\tconst formats: readonly ('standard' | 'wild' | 'twist' | 'classic' | 'duels')[] = [\r\n\t\t\t'standard',\r\n\t\t\t'wild',\r\n\t\t\t'twist',\r\n\t\t\t'duels',\r\n\t\t];\r\n\t\tconst result: Duplicates = {};\r\n\t\tfor (const format of formats) {\r\n\t\t\tresult[format] = {};\r\n\t\t\tconst allowedSets = this.getAllowedSets(format);\r\n\t\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\t\tconst cards = allSetsDuplicates[dbfId];\r\n\t\t\t\tconst card = cards.find((card) => allowedSets.includes(card.set?.toLowerCase()));\r\n\t\t\t\tif (card) {\r\n\t\t\t\t\tresult[format][dbfId] = card;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.duplicatesForDeckbuilding = result;\r\n\t}\r\n\r\n\tpublic normalizeDeckList(decklist: string, allCards: AllCardsService): string {\r\n\t\tconst decoded: DeckDefinition = decode(decklist);\r\n\t\tconst cards: DeckList = decoded.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], decoded.format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) =>\r\n\t\t\tthis.normalizeSideboard(sideboard, decoded.format, allCards),\r\n\t\t);\r\n\t\tconst heroes = decoded.heroes?.map((heroDbfId) => normalizeDeckHeroDbfId(heroDbfId, allCards) ?? 7);\r\n\t\tconst updated: DeckDefinition = {\r\n\t\t\t...decoded,\r\n\t\t\theroes: heroes,\r\n\t\t\tcards: cards,\r\n\t\t\tsideboards: sideboards,\r\n\t\t};\r\n\t\treturn encode(updated);\r\n\t}\r\n\r\n\tpublic normalizeSideboard(sideboard: Sideboard, format: GameFormat, allCards: AllCardsService): Sideboard {\r\n\t\tconst cards: DeckList = sideboard.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\treturn {\r\n\t\t\t...sideboard,\r\n\t\t\tcards: cards,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getBaseCardDbfIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): number {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn (\r\n\t\t\tthis.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.dbfId ?? allCards.getCard(deckDbfId).dbfId\r\n\t\t);\r\n\t}\r\n\r\n\tpublic getBaseCardIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): string {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn this.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.id ?? allCards.getCard(deckDbfId).id;\r\n\t}\r\n\r\n\tprivate getAllowedSets(format: 'standard' | 'wild' | 'twist' | 'classic' | 'duels'): readonly string[] {\r\n\t\tswitch (format) {\r\n\t\t\tcase 'standard':\r\n\t\t\t\treturn standardSets;\r\n\t\t\tcase 'classic':\r\n\t\t\t\treturn ['classic'];\r\n\t\t\tcase 'twist':\r\n\t\t\t\treturn twistSets;\r\n\t\t\tcase 'duels':\r\n\t\t\t\treturn duelsSets;\r\n\t\t\tcase 'wild':\r\n\t\t\tdefault:\r\n\t\t\t\treturn wildSets;\r\n\t\t}\r\n\t}\r\n}\r\n"]}
@@ -1,3 +1,4 @@
1
1
  import { GameType } from '../public-api';
2
2
  export declare const isMercenariesPvP: (gameType: GameType | string) => boolean;
3
3
  export declare const isMercenariesPvE: (gameType: GameType | string) => boolean;
4
+ export declare const isMercenaries: (gameType: GameType | string) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMercenariesPvE = exports.isMercenariesPvP = void 0;
3
+ exports.isMercenaries = exports.isMercenariesPvE = exports.isMercenariesPvP = void 0;
4
4
  const public_api_1 = require("../public-api");
5
5
  const isMercenariesPvP = (gameType) => {
6
6
  return gameType === public_api_1.GameType.GT_MERCENARIES_PVP || gameType === 'mercenaries-pvp';
@@ -13,4 +13,17 @@ const isMercenariesPvE = (gameType) => {
13
13
  gameType === 'mercenaries-pve-coop');
14
14
  };
15
15
  exports.isMercenariesPvE = isMercenariesPvE;
16
+ const isMercenaries = (gameType) => {
17
+ return (gameType === public_api_1.GameType.GT_MERCENARIES_AI_VS_AI ||
18
+ gameType === public_api_1.GameType.GT_MERCENARIES_FRIENDLY ||
19
+ gameType === public_api_1.GameType.GT_MERCENARIES_PVP ||
20
+ gameType === public_api_1.GameType.GT_MERCENARIES_PVE ||
21
+ gameType === public_api_1.GameType.GT_MERCENARIES_PVE_COOP ||
22
+ gameType === 'mercenaries-ai-vs-ai' ||
23
+ gameType === 'mercenaries-friendly' ||
24
+ gameType === 'mercenaries-pvp' ||
25
+ gameType === 'mercenaries-pve' ||
26
+ gameType === 'mercenaries-pve-coop');
27
+ };
28
+ exports.isMercenaries = isMercenaries;
16
29
  //# sourceMappingURL=mercs-utils.js.map
@@ -1 +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"]}
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;AAEK,MAAM,aAAa,GAAG,CAAC,QAA2B,EAAW,EAAE;IACrE,OAAO,CACN,QAAQ,KAAK,qBAAQ,CAAC,uBAAuB;QAC7C,QAAQ,KAAK,qBAAQ,CAAC,uBAAuB;QAC7C,QAAQ,KAAK,qBAAQ,CAAC,kBAAkB;QACxC,QAAQ,KAAK,qBAAQ,CAAC,kBAAkB;QACxC,QAAQ,KAAK,qBAAQ,CAAC,uBAAuB;QAC7C,QAAQ,KAAK,sBAAsB;QACnC,QAAQ,KAAK,sBAAsB;QACnC,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,KAAK,sBAAsB,CACnC,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB","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\r\nexport const isMercenaries = (gameType: GameType | string): boolean => {\r\n\treturn (\r\n\t\tgameType === GameType.GT_MERCENARIES_AI_VS_AI ||\r\n\t\tgameType === GameType.GT_MERCENARIES_FRIENDLY ||\r\n\t\tgameType === GameType.GT_MERCENARIES_PVP ||\r\n\t\tgameType === GameType.GT_MERCENARIES_PVE ||\r\n\t\tgameType === GameType.GT_MERCENARIES_PVE_COOP ||\r\n\t\tgameType === 'mercenaries-ai-vs-ai' ||\r\n\t\tgameType === 'mercenaries-friendly' ||\r\n\t\tgameType === 'mercenaries-pvp' ||\r\n\t\tgameType === 'mercenaries-pve' ||\r\n\t\tgameType === 'mercenaries-pve-coop'\r\n\t);\r\n};\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestone-hs/reference-data",
3
- "version": "2.0.80",
3
+ "version": "2.0.82",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && tsc",