UNPKG

@firestone-hs/replay-parser

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.

52 lines 9.93 kB
import { GameTag, MetaTags } from '@firestone-hs/reference-data'; import { CardBurnAction } from '../../models/action/card-burn-action'; import { MetadataHistoryItem } from '../../models/history/metadata-history-item'; import { ActionHelper } from './action-helper'; export class CardBurnParser { constructor(allCards) { this.allCards = allCards; } applies(item) { return (item instanceof MetadataHistoryItem && item.meta.meta === MetaTags[MetaTags.BURNED_CARD]); } parse(item, currentTurn, entitiesBeforeAction, history) { return item.meta.info.map((info) => this.buildBurnAction(item, info, entitiesBeforeAction)); } buildBurnAction(item, info, entitiesBeforeAction) { const controller = entitiesBeforeAction.get(info.entity).getTag(GameTag.CONTROLLER); if (!controller) { console.warn('[card-burn-parser] empty controller', info, entitiesBeforeAction.get(info.entity)); return null; } return CardBurnAction.create({ timestamp: item.timestamp, index: item.index, controller, burnedCardIds: [info.entity], }, this.allCards); } reduce(actions) { return ActionHelper.combineActions(actions, (previous, current) => this.shouldMergeActions(previous, current), (previous, current) => this.mergeActions(previous, current)); } shouldMergeActions(previous, current) { if (!(previous instanceof CardBurnAction && current instanceof CardBurnAction)) { return false; } if (previous.controller === undefined || current.controller === undefined) { console.warn('[card-burn-parser] Empty controller for burn action', previous, current); return false; } return previous.controller === current.controller; } mergeActions(previousAction, currentAction) { return CardBurnAction.create({ timestamp: previousAction.timestamp, index: currentAction.index, entities: currentAction.entities, controller: currentAction.controller, burnedCardIds: [...(previousAction.burnedCardIds ?? []), ...(currentAction.burnedCardIds ?? [])].filter((id, index, self) => self.indexOf(id) === index), }, this.allCards); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1idXJuLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9zZXJ2aWNlcy9hY3Rpb24vY2FyZC1idXJuLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUdqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsTUFBTSxPQUFPLGNBQWM7SUFDMUIsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRTFDLE9BQU8sQ0FBQyxJQUFpQjtRQUMvQixPQUFPLENBQ04sSUFBSSxZQUFZLG1CQUFtQjtZQUNsQyxJQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FDMUUsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQ1gsSUFBeUIsRUFDekIsV0FBbUIsRUFDbkIsb0JBQXlDLEVBQ3pDLE9BQStCO1FBRS9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBeUIsRUFBRSxJQUFVLEVBQUUsb0JBQXlDO1FBQ3ZHLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUMzQjtZQUNDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsVUFBVTtZQUNWLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDNUIsRUFDRCxJQUFJLENBQUMsUUFBUSxDQUNiLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQTBCO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDLGNBQWMsQ0FDakMsT0FBTyxFQUNQLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFDakUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDM0QsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLE9BQWU7UUFDM0QsSUFBSSxDQUFDLENBQUMsUUFBUSxZQUFZLGNBQWMsSUFBSSxPQUFPLFlBQVksY0FBYyxDQUFDLEVBQUU7WUFDL0UsT0FBTyxLQUFLLENBQUM7U0FDYjtRQUNELElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDMUUsT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkYsT0FBTyxLQUFLLENBQUM7U0FDYjtRQUNELE9BQU8sUUFBUSxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFFTyxZQUFZLENBQUMsY0FBOEIsRUFBRSxhQUE2QjtRQUNqRixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQzNCO1lBQ0MsU0FBUyxFQUFFLGNBQWMsQ0FBQyxTQUFTO1lBQ25DLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztZQUMxQixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7WUFDaEMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVO1lBQ3BDLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN0RyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FDL0M7U0FDRCxFQUNELElBQUksQ0FBQyxRQUFRLENBQ2IsQ0FBQztJQUNILENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbWVUYWcsIE1ldGFUYWdzIH0gZnJvbSAnQGZpcmVzdG9uZS1ocy9yZWZlcmVuY2UtZGF0YSc7XHJcbmltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24vYWN0aW9uJztcclxuaW1wb3J0IHsgQ2FyZEJ1cm5BY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL2NhcmQtYnVybi1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FtZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBIaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9oaXN0b3J5L2hpc3RvcnktaXRlbSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlzdG9yeS9tZXRhZGF0YS1oaXN0b3J5LWl0ZW0nO1xyXG5pbXBvcnQgeyBJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhcnNlci9pbmZvJztcclxuaW1wb3J0IHsgQWxsQ2FyZHNTZXJ2aWNlIH0gZnJvbSAnLi4vYWxsLWNhcmRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25IZWxwZXIgfSBmcm9tICcuL2FjdGlvbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FyZEJ1cm5QYXJzZXIgaW1wbGVtZW50cyBQYXJzZXIge1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSkge31cclxuXHJcblx0cHVibGljIGFwcGxpZXMoaXRlbTogSGlzdG9yeUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdGl0ZW0gaW5zdGFuY2VvZiBNZXRhZGF0YUhpc3RvcnlJdGVtICYmXHJcblx0XHRcdChpdGVtIGFzIE1ldGFkYXRhSGlzdG9yeUl0ZW0pLm1ldGEubWV0YSA9PT0gTWV0YVRhZ3NbTWV0YVRhZ3MuQlVSTkVEX0NBUkRdXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHBhcnNlKFxyXG5cdFx0aXRlbTogTWV0YWRhdGFIaXN0b3J5SXRlbSxcclxuXHRcdGN1cnJlbnRUdXJuOiBudW1iZXIsXHJcblx0XHRlbnRpdGllc0JlZm9yZUFjdGlvbjogTWFwPG51bWJlciwgRW50aXR5PixcclxuXHRcdGhpc3Rvcnk6IHJlYWRvbmx5IEhpc3RvcnlJdGVtW10sXHJcblx0KTogQWN0aW9uW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW0ubWV0YS5pbmZvLm1hcCgoaW5mbykgPT4gdGhpcy5idWlsZEJ1cm5BY3Rpb24oaXRlbSwgaW5mbywgZW50aXRpZXNCZWZvcmVBY3Rpb24pKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRCdXJuQWN0aW9uKGl0ZW06IE1ldGFkYXRhSGlzdG9yeUl0ZW0sIGluZm86IEluZm8sIGVudGl0aWVzQmVmb3JlQWN0aW9uOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogQWN0aW9uIHtcclxuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSBlbnRpdGllc0JlZm9yZUFjdGlvbi5nZXQoaW5mby5lbnRpdHkpLmdldFRhZyhHYW1lVGFnLkNPTlRST0xMRVIpO1xyXG5cdFx0aWYgKCFjb250cm9sbGVyKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2NhcmQtYnVybi1wYXJzZXJdIGVtcHR5IGNvbnRyb2xsZXInLCBpbmZvLCBlbnRpdGllc0JlZm9yZUFjdGlvbi5nZXQoaW5mby5lbnRpdHkpKTtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gQ2FyZEJ1cm5BY3Rpb24uY3JlYXRlKFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGltZXN0YW1wOiBpdGVtLnRpbWVzdGFtcCxcclxuXHRcdFx0XHRpbmRleDogaXRlbS5pbmRleCxcclxuXHRcdFx0XHRjb250cm9sbGVyLFxyXG5cdFx0XHRcdGJ1cm5lZENhcmRJZHM6IFtpbmZvLmVudGl0eV0sXHJcblx0XHRcdH0sXHJcblx0XHRcdHRoaXMuYWxsQ2FyZHMsXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHJlZHVjZShhY3Rpb25zOiByZWFkb25seSBBY3Rpb25bXSk6IHJlYWRvbmx5IEFjdGlvbltdIHtcclxuXHRcdHJldHVybiBBY3Rpb25IZWxwZXIuY29tYmluZUFjdGlvbnM8Q2FyZEJ1cm5BY3Rpb24+KFxyXG5cdFx0XHRhY3Rpb25zLFxyXG5cdFx0XHQocHJldmlvdXMsIGN1cnJlbnQpID0+IHRoaXMuc2hvdWxkTWVyZ2VBY3Rpb25zKHByZXZpb3VzLCBjdXJyZW50KSxcclxuXHRcdFx0KHByZXZpb3VzLCBjdXJyZW50KSA9PiB0aGlzLm1lcmdlQWN0aW9ucyhwcmV2aW91cywgY3VycmVudCksXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzaG91bGRNZXJnZUFjdGlvbnMocHJldmlvdXM6IEFjdGlvbiwgY3VycmVudDogQWN0aW9uKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIShwcmV2aW91cyBpbnN0YW5jZW9mIENhcmRCdXJuQWN0aW9uICYmIGN1cnJlbnQgaW5zdGFuY2VvZiBDYXJkQnVybkFjdGlvbikpIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHByZXZpb3VzLmNvbnRyb2xsZXIgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50LmNvbnRyb2xsZXIgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ1tjYXJkLWJ1cm4tcGFyc2VyXSBFbXB0eSBjb250cm9sbGVyIGZvciBidXJuIGFjdGlvbicsIHByZXZpb3VzLCBjdXJyZW50KTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHByZXZpb3VzLmNvbnRyb2xsZXIgPT09IGN1cnJlbnQuY29udHJvbGxlcjtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbWVyZ2VBY3Rpb25zKHByZXZpb3VzQWN0aW9uOiBDYXJkQnVybkFjdGlvbiwgY3VycmVudEFjdGlvbjogQ2FyZEJ1cm5BY3Rpb24pOiBDYXJkQnVybkFjdGlvbiB7XHJcblx0XHRyZXR1cm4gQ2FyZEJ1cm5BY3Rpb24uY3JlYXRlKFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGltZXN0YW1wOiBwcmV2aW91c0FjdGlvbi50aW1lc3RhbXAsXHJcblx0XHRcdFx0aW5kZXg6IGN1cnJlbnRBY3Rpb24uaW5kZXgsXHJcblx0XHRcdFx0ZW50aXRpZXM6IGN1cnJlbnRBY3Rpb24uZW50aXRpZXMsXHJcblx0XHRcdFx0Y29udHJvbGxlcjogY3VycmVudEFjdGlvbi5jb250cm9sbGVyLFxyXG5cdFx0XHRcdGJ1cm5lZENhcmRJZHM6IFsuLi4ocHJldmlvdXNBY3Rpb24uYnVybmVkQ2FyZElkcyA/PyBbXSksIC4uLihjdXJyZW50QWN0aW9uLmJ1cm5lZENhcmRJZHMgPz8gW10pXS5maWx0ZXIoXHJcblx0XHRcdFx0XHQoaWQsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YoaWQpID09PSBpbmRleCxcclxuXHRcdFx0XHQpLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aGlzLmFsbENhcmRzLFxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19