diff --git a/package.json b/package.json index 2afc3824e3..b41421a572 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-decorators": "^7.12.12", "@babel/plugin-transform-runtime": "^7.12.10", - "@babel/plugin-transform-typescript": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.14.4", "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/register": "^7.12.10", @@ -100,8 +100,8 @@ "@types/webpack": "^5", "@types/webpack-dev-server": "^3.11.1", "@types/webpack-env": "^1.13.6", - "@typescript-eslint/eslint-plugin": "^4.12.0", - "@typescript-eslint/parser": "^4.12.0", + "@typescript-eslint/eslint-plugin": "^4.26.0", + "@typescript-eslint/parser": "^4.26.0", "@xivanalysis/eslint-plugin": "^0.0.2", "autoprefixer": "^10.1.0", "babel-jest": "^26.6.3", @@ -138,7 +138,7 @@ "postcss-modules-values-replace": "^3.1.0", "raw-loader": "^4.0.2", "style-loader": "^2.0.0", - "typescript": "~4.1", + "typescript": "~4.3.2", "url-loader": "^4.1.1", "webpack": "^5.11.1", "webpack-cli": "^4.3.1", diff --git a/src/akkd/Container/Container.tsx b/src/akkd/Container/Container.tsx index b361fe96ab..026b08da3f 100644 --- a/src/akkd/Container/Container.tsx +++ b/src/akkd/Container/Container.tsx @@ -7,7 +7,7 @@ interface Props { } export class Container extends React.PureComponent { - render() { + override render() { const {className, children} = this.props return (
{ - render() { + override render() { const { as: Component = 'div', children, @@ -40,7 +40,7 @@ interface ListProps { export class List extends React.PureComponent { static Item = ListItem - render() { + override render() { const {color, children} = this.props return ( diff --git a/src/akkd/Message/Message.tsx b/src/akkd/Message/Message.tsx index 6b5102f9bd..c6bc103016 100644 --- a/src/akkd/Message/Message.tsx +++ b/src/akkd/Message/Message.tsx @@ -26,7 +26,7 @@ interface Props extends MessageTypes { export class Message extends React.PureComponent { static Header = MessageHeader - render() { + override render() { const {icon, children} = this.props // Find the first message type that's truthy diff --git a/src/akkd/Message/MessageHeader.tsx b/src/akkd/Message/MessageHeader.tsx index 3c987e2df5..f209668c57 100644 --- a/src/akkd/Message/MessageHeader.tsx +++ b/src/akkd/Message/MessageHeader.tsx @@ -6,7 +6,7 @@ interface MessageHeaderProps { } export class MessageHeader extends React.PureComponent { - render() { + override render() { return (
{this.props.children} diff --git a/src/akkd/Segment/ExpandableSegment.tsx b/src/akkd/Segment/ExpandableSegment.tsx index 47c9ac1adc..68fe39119e 100644 --- a/src/akkd/Segment/ExpandableSegment.tsx +++ b/src/akkd/Segment/ExpandableSegment.tsx @@ -29,7 +29,7 @@ export class ExpandableSegment extends React.PureComponent { } } - componentDidMount() { + override componentDidMount() { const {current} = this.ref const { maxHeight, @@ -44,7 +44,7 @@ export class ExpandableSegment extends React.PureComponent { } } - componentDidUpdate(prevProps: Props) { + override componentDidUpdate(prevProps: Props) { // Animate the expand the first time it's requested if ( prevProps.collapsed !== false && @@ -78,7 +78,7 @@ export class ExpandableSegment extends React.PureComponent { }) } - render() { + override render() { const { seeMore, maxHeight: propHeight, diff --git a/src/akkd/Segment/Segment.tsx b/src/akkd/Segment/Segment.tsx index c54712d6aa..65702acf1d 100644 --- a/src/akkd/Segment/Segment.tsx +++ b/src/akkd/Segment/Segment.tsx @@ -9,7 +9,7 @@ interface SegmentProps { export class Segment extends React.PureComponent { static Expandable = ExpandableSegment - render() { + override render() { const {children} = this.props return
{children}
} diff --git a/src/components/BranchBanner.tsx b/src/components/BranchBanner.tsx index b6c5dcf8de..257732a9d4 100644 --- a/src/components/BranchBanner.tsx +++ b/src/components/BranchBanner.tsx @@ -11,10 +11,10 @@ import styles from './BranchBanner.module.css' @observer class BranchBannerComponent extends React.Component { - static contextType = StoreContext - context!: React.ContextType + static override contextType = StoreContext + declare context: React.ContextType - render() { + override render() { const {reportStore} = this.context const {location} = this.props const {report} = reportStore diff --git a/src/components/Home/Home.tsx b/src/components/Home/Home.tsx index 7b1002bf9a..1b414eab17 100644 --- a/src/components/Home/Home.tsx +++ b/src/components/Home/Home.tsx @@ -23,14 +23,14 @@ If you have any questions, suggestions, or would just like to have a chat - drop @observer class Home extends Component { - static contextType = StoreContext + static override contextType = StoreContext - componentDidMount() { + override componentDidMount() { // Clean out the report state when the user returns to the home page this.context.reportStore.clearReport() } - render() { + override render() { return <>
diff --git a/src/components/Home/ReportSearch.tsx b/src/components/Home/ReportSearch.tsx index 101c8d653f..bf43a5511a 100644 --- a/src/components/Home/ReportSearch.tsx +++ b/src/components/Home/ReportSearch.tsx @@ -30,7 +30,7 @@ class ReportSearch extends React.Component { this.result = parseInput(this.value) } - render() { + override render() { if (this.result.valid) { return } diff --git a/src/components/LegacyAnalyse/ResultSegment.tsx b/src/components/LegacyAnalyse/ResultSegment.tsx index 4333f2c775..73ffd3cabd 100644 --- a/src/components/LegacyAnalyse/ResultSegment.tsx +++ b/src/components/LegacyAnalyse/ResultSegment.tsx @@ -50,7 +50,7 @@ export default class ResultSegment extends React.PureComponent imp this.state = state } - componentDidMount() { + override componentDidMount() { // semantic-ui-react doesn't support refs at all, so we'd either need a wrapping div that's there // just to be ref'd, or we need the ReactDOM hacks. We _need_ the element to have a size so we can't // just jam it in as a 0-size child that wouldn't cause any trouble. @@ -63,7 +63,7 @@ export default class ResultSegment extends React.PureComponent imp } } - componentDidUpdate(prevProps: Readonly) { + override componentDidUpdate(prevProps: Readonly) { if (this.props.index !== prevProps.index) { this.positionContext.unregister(prevProps.index) } @@ -78,7 +78,7 @@ export default class ResultSegment extends React.PureComponent imp } } - componentWillUnmount() { + override componentWillUnmount() { if (ResultSegment.instances.get(this.props.result.handle) === this) { ResultSegment.instances.delete(this.props.result.handle) } @@ -87,7 +87,7 @@ export default class ResultSegment extends React.PureComponent imp this.positionContext.unregister(this.props.index) } - render() { + override render() { return {value => { this.positionContext = value return this.renderContent() diff --git a/src/components/LegacyAnalyse/SegmentPositionContext.tsx b/src/components/LegacyAnalyse/SegmentPositionContext.tsx index 2431570c41..ebe53ec354 100644 --- a/src/components/LegacyAnalyse/SegmentPositionContext.tsx +++ b/src/components/LegacyAnalyse/SegmentPositionContext.tsx @@ -19,7 +19,7 @@ interface ProviderState extends Context { } export class SegmentPositionProvider extends React.PureComponent, ProviderState> { - readonly state: Readonly = { + override readonly state: Readonly = { active: null, register: this.register.bind(this), unregister: this.unregister.bind(this), @@ -28,7 +28,7 @@ export class SegmentPositionProvider extends React.PureComponent() - componentDidUpdate(_prevProps: Readonly>, prevState: Readonly) { + override componentDidUpdate(_prevProps: Readonly>, prevState: Readonly) { const {registry} = this.state if (registry !== prevState.registry) { const toCheck = Array.from(registry.keys()).sort((a, b) => a - b) @@ -43,7 +43,7 @@ export class SegmentPositionProvider extends React.PureComponent{this.props.children} } diff --git a/src/components/ui/ContributorLabel.tsx b/src/components/ui/ContributorLabel.tsx index 6f8cecac26..4db8da0f1a 100644 --- a/src/components/ui/ContributorLabel.tsx +++ b/src/components/ui/ContributorLabel.tsx @@ -9,7 +9,7 @@ interface ContributorLabelProps { } export default class ContributorLabel extends PureComponent { - render() { + override render() { const {contributor, detail} = this.props const {avatar, name, jobs} = contributor diff --git a/src/components/ui/JobIcon/JobIcon.tsx b/src/components/ui/JobIcon/JobIcon.tsx index 7c628116d2..1ac433606c 100644 --- a/src/components/ui/JobIcon/JobIcon.tsx +++ b/src/components/ui/JobIcon/JobIcon.tsx @@ -8,7 +8,7 @@ interface Props { } export default class JobIcon extends React.PureComponent { - render() { + override render() { const { job: {icon}, scale = 2, diff --git a/src/components/ui/PieChartWithLegend.tsx b/src/components/ui/PieChartWithLegend.tsx index cb7a99c468..8994dbce05 100644 --- a/src/components/ui/PieChartWithLegend.tsx +++ b/src/components/ui/PieChartWithLegend.tsx @@ -21,7 +21,7 @@ type Props = ChartComponentProps & { const MISSING_COLOUR_FALLBACK = '#888' export default class PieChartWithLegend extends React.Component { - render() { + override render() { const { data: propData, headers, diff --git a/src/components/ui/Rotation.tsx b/src/components/ui/Rotation.tsx index f652242d9a..3f51e3df3b 100644 --- a/src/components/ui/Rotation.tsx +++ b/src/components/ui/Rotation.tsx @@ -32,7 +32,7 @@ export default class Rotation extends Component { return undefined } - render() { + override render() { const {events} = this.props return
diff --git a/src/components/ui/RotationTable.tsx b/src/components/ui/RotationTable.tsx index 7072f8f5e1..a7996498c6 100644 --- a/src/components/ui/RotationTable.tsx +++ b/src/components/ui/RotationTable.tsx @@ -221,7 +221,7 @@ export class RotationTable extends React.Component { } - render(): React.ReactNode { + override render(): React.ReactNode { const { targets, notes, diff --git a/src/components/ui/TimeLineChart.tsx b/src/components/ui/TimeLineChart.tsx index 4ee85a7dc9..e3a7e4f872 100644 --- a/src/components/ui/TimeLineChart.tsx +++ b/src/components/ui/TimeLineChart.tsx @@ -34,7 +34,7 @@ export default class TimeLineChart extends PureComponent { options: PropTypes.object, } - render() { + override render() { const options = _.merge({}, DEFAULT_OPTIONS, this.props.options || {}) return { it('cannot depend on legacy modules', () => { class ThrowingAnalyser extends Analyser { - static handle = 'throwing' - static dependencies = ['analyser', 'module'] + static override handle = 'throwing' + static override dependencies = ['analyser', 'module'] } expect(() => new ThrowingAnalyser(parser)) @@ -44,7 +44,7 @@ describe('Analyser', () => { const callback = () => { /* noop */ } class TestAnalyser extends Analyser { - static handle = 'test' + static override handle = 'test' test() { this.addEventHook(predicate, callback) } } @@ -64,7 +64,7 @@ describe('Analyser', () => { let hook: EventHook class TestAnalyser extends Analyser { - static handle = 'test' + static override handle = 'test' add() { hook = this.addEventHook(predicate, callback) } remove() { this.removeEventHook(hook) } } @@ -84,7 +84,7 @@ describe('Analyser', () => { const callback = () => { /* noop */ } class TestAnalyser extends Analyser { - static handle = 'test' + static override handle = 'test' stringType() { this.addEventHook('action', callback) } partialEvent() { this.addEventHook({type: 'action'}, callback) } } @@ -112,7 +112,7 @@ describe('Analyser', () => { const callback = () => { /* noop */ } class TestAnalyser extends Analyser { - static handle = 'test' + static override handle = 'test' test() { this.addTimestampHook(timestamp, callback) } } @@ -132,7 +132,7 @@ describe('Analyser', () => { let hook: TimestampHook class TestAnalyser extends Analyser { - static handle = 'test' + static override handle = 'test' add() { hook = this.addTimestampHook(timestamp, callback) } remove() { this.removeTimestampHook(hook) } } diff --git a/src/parser/core/filter.ts b/src/parser/core/filter.ts index b2476fafd4..5f797c349b 100644 --- a/src/parser/core/filter.ts +++ b/src/parser/core/filter.ts @@ -117,7 +117,6 @@ export type Filter = {}> = DistributedKeyof, Current>>, keyof Current >]: - // @ts-expect-error TS is failing to infer that Select is creating a subset FilterFunction } // Call signature for the filter diff --git a/src/parser/core/modules/Actors/Actors.tsx b/src/parser/core/modules/Actors/Actors.tsx index f666c887fa..1abefde8ab 100644 --- a/src/parser/core/modules/Actors/Actors.tsx +++ b/src/parser/core/modules/Actors/Actors.tsx @@ -8,14 +8,14 @@ import {ResourceDatum, ResourceGraphs} from '../ResourceGraphs' import {Actor} from './Actor' export class Actors extends Analyser { - static handle = 'actors' - static displayOrder = -Infinity + static override handle = 'actors' + static override displayOrder = -Infinity @dependency private resourceGraphs!: ResourceGraphs private actors = new Map() - initialise() { + override initialise() { this.addEventHook('actorUpdate', this.onUpdate) this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/core/modules/AdditionalEvents.ts b/src/parser/core/modules/AdditionalEvents.ts index cdf8f542f0..64ee49f667 100644 --- a/src/parser/core/modules/AdditionalEvents.ts +++ b/src/parser/core/modules/AdditionalEvents.ts @@ -8,7 +8,7 @@ const queries = Symbol('queries') const hasExecuted = Symbol('hasExecuted') export class AdditionalEventQueries extends Module { - static handle = 'additionalEventQueries' + static override handle = 'additionalEventQueries' private [queries]: string[] = [] private [hasExecuted] = false @@ -23,12 +23,12 @@ export class AdditionalEventQueries extends Module { } export class AdditionalEvents extends Module { - static handle = 'additionalEvents' - static debug = true + static override handle = 'additionalEvents' + static override debug = true @dependency private queryModule!: AdditionalEventQueries - async normalise(events: Event[]): Promise { + override async normalise(events: Event[]): Promise { this.queryModule[hasExecuted] = true const registeredQueries = this.queryModule[queries] diff --git a/src/parser/core/modules/AlwaysBeCasting.tsx b/src/parser/core/modules/AlwaysBeCasting.tsx index 33933294d4..a0422e590d 100644 --- a/src/parser/core/modules/AlwaysBeCasting.tsx +++ b/src/parser/core/modules/AlwaysBeCasting.tsx @@ -6,13 +6,13 @@ import GlobalCooldown from 'parser/core/modules/GlobalCooldown' import React from 'react' export default class AlwaysBeCasting extends Module { - static handle = 'abc' + static override handle = 'abc' @dependency private checklist!: Checklist @dependency protected downtime!: Downtime @dependency protected gcd!: GlobalCooldown - protected init() { + protected override init() { this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/core/modules/AoEUsages.tsx b/src/parser/core/modules/AoEUsages.tsx index 7b86d46627..2a3de8cca7 100644 --- a/src/parser/core/modules/AoEUsages.tsx +++ b/src/parser/core/modules/AoEUsages.tsx @@ -42,8 +42,8 @@ interface SeverityTiers { * AoE combos when the number of targets may drop below the minimum during the combo. */ export abstract class AoEUsages extends Module { - static handle = 'aoeusages' - static title = t('core.aoeusages.title')`Incorrect AoE Action Usage` + static override handle = 'aoeusages' + static override title = t('core.aoeusages.title')`Incorrect AoE Action Usage` @dependency private suggestions!: Suggestions @@ -72,7 +72,7 @@ export abstract class AoEUsages extends Module { private badUsages = new Map() - protected init() { + protected override init() { this.addEventHook('normaliseddamage', {by: 'player', abilityId: this.trackedActions.map(a => a.aoeAction.id)}, this.onAbility) this.addEventHook('complete', this.onComplete) } @@ -112,7 +112,7 @@ export abstract class AoEUsages extends Module { })) } - output() { + override output() { // if no bad usages were found, do not output anything if (this.badUsages.size === 0) { return } diff --git a/src/parser/core/modules/BrokenLog.tsx b/src/parser/core/modules/BrokenLog.tsx index 79d8caa728..793445524e 100644 --- a/src/parser/core/modules/BrokenLog.tsx +++ b/src/parser/core/modules/BrokenLog.tsx @@ -20,10 +20,10 @@ interface Trigger { } export default class BrokenLog extends Analyser { - static handle = 'brokenLog' - static title = t('core.broken-log.title')`Broken Log` - static displayOrder = DISPLAY_ORDER.BROKEN_LOG - static displayMode = DisplayMode.RAW + static override handle = 'brokenLog' + static override title = t('core.broken-log.title')`Broken Log` + static override displayOrder = DISPLAY_ORDER.BROKEN_LOG + static override displayMode = DisplayMode.RAW @dependency private data!: Data @@ -74,7 +74,7 @@ export default class BrokenLog extends Analyser { }) } - initialise() { + override initialise() { const unknownAction = this.data.actions.UNKNOWN.id this.addEventHook({cause: {type: 'action', action: unknownAction}}, this.triggerUnknownCause) this.addEventHook({action: unknownAction}, this.triggerUnknownCause) @@ -92,7 +92,7 @@ export default class BrokenLog extends Analyser { )) } - output() { + override output() { if (this.triggers.size === 0) { return false } diff --git a/src/parser/core/modules/BuffWindow.tsx b/src/parser/core/modules/BuffWindow.tsx index 5aa6ad0df3..7526145d40 100644 --- a/src/parser/core/modules/BuffWindow.tsx +++ b/src/parser/core/modules/BuffWindow.tsx @@ -96,8 +96,8 @@ export interface BuffWindowTrackedAction { } export abstract class BuffWindowModule extends Module { - static handle: string = 'buffwindow' - static title: MessageDescriptor = t('core.buffwindow.title')`Buff Window` + static override handle: string = 'buffwindow' + static override title: MessageDescriptor = t('core.buffwindow.title')`Buff Window` /** * Implementing modules MUST define the ACTION object for the action that initiates the buff window @@ -168,7 +168,7 @@ export abstract class BuffWindowModule extends Module { return undefined } - protected init() { + protected override init() { // ensure array this.buffStatusArray = ensureArray(this.buffStatus) @@ -441,7 +441,7 @@ export abstract class BuffWindowModule extends Module { } } - output() { + override output() { if (this.buffWindows.length === 0) { return this.generateBuffNotUsedOutput() } diff --git a/src/parser/core/modules/CastTime.ts b/src/parser/core/modules/CastTime.ts index b984bf3292..ad5989ad6a 100644 --- a/src/parser/core/modules/CastTime.ts +++ b/src/parser/core/modules/CastTime.ts @@ -14,14 +14,14 @@ export interface CastTimeAdjustment { } export default class CastTime extends Analyser { - static handle = 'castTime' + static override handle = 'castTime' @dependency data!: Data private castTimes: CastTimeAdjustment[] = [] private scIndex: number | null = null - initialise() { + override initialise() { // Only going to deal with SC here, job-specific can do it themselves const switftCastFilter = filter() .target(this.parser.actor.id) diff --git a/src/parser/core/modules/ChangeLog/ChangeLog.tsx b/src/parser/core/modules/ChangeLog/ChangeLog.tsx index 724f45a4df..44adaf9602 100644 --- a/src/parser/core/modules/ChangeLog/ChangeLog.tsx +++ b/src/parser/core/modules/ChangeLog/ChangeLog.tsx @@ -5,13 +5,13 @@ import DISPLAY_ORDER from '../DISPLAY_ORDER' import {default as ChangelogComponent} from './Component' export default class ChangeLog extends Analyser { - static handle = 'changelog' - static displayOrder = DISPLAY_ORDER.CHANGELOG - static displayMode = DisplayMode.FULL + static override handle = 'changelog' + static override displayOrder = DISPLAY_ORDER.CHANGELOG + static override displayMode = DisplayMode.FULL - static title = t('core.changelog.title')`Changelog` + static override title = t('core.changelog.title')`Changelog` - output() { + override output() { const {changelog} = this.parser.meta if (changelog.length === 0) { diff --git a/src/parser/core/modules/ChangeLog/Component.tsx b/src/parser/core/modules/ChangeLog/Component.tsx index 72b93b5fd9..2c7c779fe1 100644 --- a/src/parser/core/modules/ChangeLog/Component.tsx +++ b/src/parser/core/modules/ChangeLog/Component.tsx @@ -18,7 +18,7 @@ export default class ChangeLog extends React.PureComponent { })), } - state = { + override state = { activeIndexes: new Set(), } @@ -36,7 +36,7 @@ export default class ChangeLog extends React.PureComponent { this.setState({activeIndexes: newIndexes}) } - render() { + override render() { const {activeIndexes} = this.state return diff --git a/src/parser/core/modules/Combos.tsx b/src/parser/core/modules/Combos.tsx index 44644f8644..8050bb6fd0 100644 --- a/src/parser/core/modules/Combos.tsx +++ b/src/parser/core/modules/Combos.tsx @@ -23,8 +23,8 @@ const ISSUE_TYPENAMES = { export class ComboEvent extends NormalisedEventFields { type = 'combo' as const - calculatedEvents: DamageEvent[] = [] - confirmedEvents: DamageEvent[] = [] + override calculatedEvents: DamageEvent[] = [] + override confirmedEvents: DamageEvent[] = [] constructor(event: NormalisedDamageEvent) { super() @@ -47,9 +47,9 @@ export interface ComboIssue { } export default class Combos extends Module { - static handle = 'combos' - static title = t('core.combos.title')`Combo Issues` - static displayOrder = DISPLAY_ORDER.COMBOS + static override handle = 'combos' + static override title = t('core.combos.title')`Combo Issues` + static override displayOrder = DISPLAY_ORDER.COMBOS // This should be redefined by subclassing modules; the default is the basic 'Attack' icon static suggestionIcon = 'https://xivapi.com/i/000000/000405.png' @@ -62,7 +62,7 @@ export default class Combos extends Module { private currentComboChain: NormalisedDamageEvent[] = [] private issues: ComboIssue[] = [] - protected init() { + protected override init() { this.addEventHook('normaliseddamage', {by: 'player'}, this.onCast) this.addEventHook('complete', this.onComplete) } @@ -255,7 +255,7 @@ export default class Combos extends Module { return false } - output(): React.ReactNode { + override output(): React.ReactNode { if (this.issues.length <= 0) { return false } diff --git a/src/parser/core/modules/CooldownDowntime.tsx b/src/parser/core/modules/CooldownDowntime.tsx index eca6b388ed..f37259bdfd 100644 --- a/src/parser/core/modules/CooldownDowntime.tsx +++ b/src/parser/core/modules/CooldownDowntime.tsx @@ -66,9 +66,9 @@ const DEFAULT_CHECKLIST_TARGET = 95 const DEFAULT_ALLOWED_AVERAGE_DOWNTIME = 1250 export abstract class CooldownDowntime extends Module { - static handle = 'cooldownDowntime' - static title = t('core.cooldownDowntime.title')`Cooldown Downtime` - static debug = false + static override handle = 'cooldownDowntime' + static override title = t('core.cooldownDowntime.title')`Cooldown Downtime` + static override debug = false @dependency private data!: Data @dependency private downtime!: Downtime @@ -107,7 +107,7 @@ export abstract class CooldownDowntime extends Module { return true } - protected init() { + protected override init() { const trackedIds = this.trackedCds.map(group => group.cooldowns) .reduce((acc, cur) => acc.concat(cur)) .map(action => action.id) @@ -324,7 +324,7 @@ class WeightedRule extends Rule { this.requirements.map(req => req.weight = req.weight / totalWeight) } - public get percent(): number { + public override get percent(): number { return this.requirements.reduce((acc, req) => acc + (req.percent * req.weight), 0) } } diff --git a/src/parser/core/modules/Cooldowns.ts b/src/parser/core/modules/Cooldowns.ts index c8557b9ed0..28c97bf5d4 100644 --- a/src/parser/core/modules/Cooldowns.ts +++ b/src/parser/core/modules/Cooldowns.ts @@ -31,7 +31,7 @@ interface CooldownHistory { // Track the cooldowns on actions and shit export default class Cooldowns extends Module { - static handle = 'cooldowns' + static override handle = 'cooldowns' @dependency private data!: Data @dependency private downtime!: Downtime @@ -47,7 +47,7 @@ export default class Cooldowns extends Module { private _cooldowns = new Map() private _rows = new Map() - protected init() { + protected override init() { const constructor = this.constructor as typeof Cooldowns // Pre-build rows for actions explicitly set by subclasses if (constructor.cooldownOrder) { diff --git a/src/parser/core/modules/Data.ts b/src/parser/core/modules/Data.ts index 97d6deddde..a83cc7181a 100644 --- a/src/parser/core/modules/Data.ts +++ b/src/parser/core/modules/Data.ts @@ -16,7 +16,7 @@ import {Analyser} from 'parser/core/Analyser' import {oneOf} from 'parser/core/filter' export class Data extends Analyser { - static handle = 'data' + static override handle = 'data' get actions() { return this.getAppliedData(actionRoot, actionLayers) diff --git a/src/parser/core/modules/Death.tsx b/src/parser/core/modules/Death.tsx index 1867b52173..a4fe29fdfb 100644 --- a/src/parser/core/modules/Death.tsx +++ b/src/parser/core/modules/Death.tsx @@ -54,8 +54,8 @@ interface ActorInfo { } export class Death extends Analyser { - static handle = 'death' - static debug = true + static override handle = 'death' + static override debug = true @dependency private data!: Data @dependency private suggestions!: Suggestions @@ -79,7 +79,7 @@ export class Death extends Analyser { return actorInfo.duration + currentDeadTime } - initialise() { + override initialise() { // An actor hitting 0 HP is a sign of a death. this.addEventHook({ type: 'actorUpdate', diff --git a/src/parser/core/modules/Downtime.tsx b/src/parser/core/modules/Downtime.tsx index a9a2152697..6f70fce875 100644 --- a/src/parser/core/modules/Downtime.tsx +++ b/src/parser/core/modules/Downtime.tsx @@ -11,13 +11,13 @@ interface DowntimeWindow { } export default class Downtime extends Analyser { - static handle = 'downtime' + static override handle = 'downtime' @dependency private readonly unableToAct!: UnableToAct @dependency private readonly invulnerability!: Invulnerability @dependency private readonly timeline!: Timeline - initialise() { + override initialise() { this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/core/modules/Dummy.tsx b/src/parser/core/modules/Dummy.tsx index 7049406a31..a38fed6b27 100644 --- a/src/parser/core/modules/Dummy.tsx +++ b/src/parser/core/modules/Dummy.tsx @@ -13,16 +13,16 @@ import {Death} from './Death' const LIKELY_DUMMY_THRESHOLD = 3 export class Dummy extends Analyser { - static title = t('core.dummy.title')`Striking Dummy` - static handle = 'dummy' - static debug = false + static override title = t('core.dummy.title')`Striking Dummy` + static override handle = 'dummy' + static override debug = false @dependency private brokenLog!: BrokenLog @dependency private death!: Death private hook?: EventHook - initialise() { + override initialise() { const foeIds = this.parser.pull.actors .filter(actor => actor.team === Team.FOE) .map(actor => actor.id) diff --git a/src/parser/core/modules/EntityStatuses.ts b/src/parser/core/modules/EntityStatuses.ts index e0d20b5562..07803977b4 100644 --- a/src/parser/core/modules/EntityStatuses.ts +++ b/src/parser/core/modules/EntityStatuses.ts @@ -35,8 +35,8 @@ interface StatusInfoTracking { } export class EntityStatuses extends Module { - static handle = 'entityStatuses' - static debug = false + static override handle = 'entityStatuses' + static override debug = false @dependency private invulnerability!: Invulnerability @dependency private data!: Data diff --git a/src/parser/core/modules/EventsView/EventsView.tsx b/src/parser/core/modules/EventsView/EventsView.tsx index 8321507cc8..3d359a06eb 100644 --- a/src/parser/core/modules/EventsView/EventsView.tsx +++ b/src/parser/core/modules/EventsView/EventsView.tsx @@ -14,14 +14,14 @@ import styles from './EventsView.module.css' const rowHeight = parseInt(styles.rowHeight, 10) export class EventsView extends Analyser { - static title = 'Events View' - static handle = 'eventsView' - static displayOrder = DISPLAY_ORDER.EVENTS_VIEW - static debug = true + static override title = 'Events View' + static override handle = 'eventsView' + static override displayOrder = DISPLAY_ORDER.EVENTS_VIEW + static override debug = true private events: Event[] = [] - initialise() { + override initialise() { this.debug(() => { // Catch every event. Note: if you're reading this - don't use the predicate for logic unless you know exactly what you're doing. // It's a massive anti-pattern, and I'm only doing it here as a microoptimisation for a single use case. If you're not sure, ask. @@ -32,7 +32,7 @@ export class EventsView extends Analyser { }) } - output() { + override output() { if (this.events.length === 0) { return null } diff --git a/src/parser/core/modules/Gauge/CounterGauge.ts b/src/parser/core/modules/Gauge/CounterGauge.ts index aa3145bff4..25afd78048 100644 --- a/src/parser/core/modules/Gauge/CounterGauge.ts +++ b/src/parser/core/modules/Gauge/CounterGauge.ts @@ -121,7 +121,7 @@ export class CounterGauge extends AbstractGauge { } /** @inheritdoc */ - generateDataset() { + override generateDataset() { // If there's no chart options, provide nothing if (!this.chartOptions) { return diff --git a/src/parser/core/modules/Gauge/Gauge.tsx b/src/parser/core/modules/Gauge/Gauge.tsx index 2266009209..3d5beed01b 100644 --- a/src/parser/core/modules/Gauge/Gauge.tsx +++ b/src/parser/core/modules/Gauge/Gauge.tsx @@ -7,12 +7,12 @@ import {AbstractGauge} from './AbstractGauge' import {TimerGauge} from './TimerGauge' export class Gauge extends Module { - static handle = 'gauge' - static title = t('core.gauge.title')`Gauge` + static override handle = 'gauge' + static override title = t('core.gauge.title')`Gauge` private gauges: AbstractGauge[] = [] - protected init() { + protected override init() { this.addEventHook('death', {to: 'player'}, this.onDeath) } @@ -34,7 +34,7 @@ export class Gauge extends Module { this.gauges.forEach(gauge => gauge.reset()) } - output() { + override output() { // Generate a dataset from each registered gauge const datasets = this.gauges .map(gauge => gauge.generateDataset()) diff --git a/src/parser/core/modules/Gauge/TimerGauge.ts b/src/parser/core/modules/Gauge/TimerGauge.ts index 68cb68bc69..6cf2f93abd 100644 --- a/src/parser/core/modules/Gauge/TimerGauge.ts +++ b/src/parser/core/modules/Gauge/TimerGauge.ts @@ -176,7 +176,7 @@ export class TimerGauge extends AbstractGauge { } /** @inheritdoc */ - generateDataset() { + override generateDataset() { // Skip charting if they've not enabled it if (!this.chartOptions) { return diff --git a/src/parser/core/modules/Interrupts.tsx b/src/parser/core/modules/Interrupts.tsx index 4f0e1f975a..fcfdf40466 100644 --- a/src/parser/core/modules/Interrupts.tsx +++ b/src/parser/core/modules/Interrupts.tsx @@ -20,8 +20,8 @@ interface SeverityTiers { const TIMELINE_UPPER_MOD: number = 30000 export class Interrupts extends Module { - static handle: string = 'interrupts' - static title: MessageDescriptor = t('core.interrupts.title')`Interrupted Casts` + static override handle: string = 'interrupts' + static override title: MessageDescriptor = t('core.interrupts.title')`Interrupted Casts` @dependency protected data!: Data @dependency private globalCooldown!: GlobalCooldown @@ -72,7 +72,7 @@ export class Interrupts extends Module { return undefined } - protected init() { + protected override init() { this.addEventHook('begincast', {by: 'player'}, this.onBeginCast) this.addEventHook('cast', {by: 'player'}, this.onCast) @@ -117,7 +117,7 @@ export class Interrupts extends Module { })) } - output() { + override output() { if (this.droppedCasts.length === 0) { return this.noInterruptsOutput() } diff --git a/src/parser/core/modules/Invulnerability.tsx b/src/parser/core/modules/Invulnerability.tsx index 97d0875416..c377fd6602 100644 --- a/src/parser/core/modules/Invulnerability.tsx +++ b/src/parser/core/modules/Invulnerability.tsx @@ -109,8 +109,8 @@ export interface WindowFilter { const DEFAULT_ACTOR_FILTER = filter().team(Team.FOE) export class Invulnerability extends Analyser { - static handle = 'invulnerability' - static debug = false + static override handle = 'invulnerability' + static override debug = false @dependency private timeline!: Timeline @@ -278,7 +278,7 @@ export class Invulnerability extends Analyser { // #region Tracking // ===== - initialise() { + override initialise() { const reportSource = this.parser.newReport.meta.source // Flatten any subclass actor config to a map by the current report sources' diff --git a/src/parser/core/modules/Medicated.ts b/src/parser/core/modules/Medicated.ts index 8c21c9d251..73d1b5a5ac 100644 --- a/src/parser/core/modules/Medicated.ts +++ b/src/parser/core/modules/Medicated.ts @@ -10,7 +10,7 @@ interface Medication { } export class Medicated extends Analyser { - static handle = 'medicated' + static override handle = 'medicated' @dependency private data!: Data @dependency private timeline!: Timeline @@ -18,7 +18,7 @@ export class Medicated extends Analyser { private pot: Medication | undefined private pots: Medication[] = [] - initialise() { + override initialise() { this.addEventHook({ type: 'statusApply', target: this.parser.actor.id, diff --git a/src/parser/core/modules/NormalisedEvents.ts b/src/parser/core/modules/NormalisedEvents.ts index a9051f252f..252da76aeb 100644 --- a/src/parser/core/modules/NormalisedEvents.ts +++ b/src/parser/core/modules/NormalisedEvents.ts @@ -151,8 +151,8 @@ export class NormalisedEventFields { export interface NormalisedDamageEvent extends Omit, NormalisedEventFields {} export class NormalisedDamageEvent extends NormalisedEventFields { type = 'normaliseddamage' as const - calculatedEvents: DamageEvent[] = [] - confirmedEvents: DamageEvent[] = [] + override calculatedEvents: DamageEvent[] = [] + override confirmedEvents: DamageEvent[] = [] constructor(event: DamageEvent) { super() @@ -163,8 +163,8 @@ export class NormalisedDamageEvent extends NormalisedEventFields { export interface NormalisedHealEvent extends Omit, NormalisedEventFields {} export class NormalisedHealEvent extends NormalisedEventFields { type = 'normalisedheal' as const - calculatedEvents: HealEvent[] = [] - confirmedEvents: HealEvent[] = [] + override calculatedEvents: HealEvent[] = [] + override confirmedEvents: HealEvent[] = [] constructor(event: HealEvent) { super() @@ -175,8 +175,8 @@ export class NormalisedHealEvent extends NormalisedEventFields { export interface NormalisedApplyBuffEvent extends Omit, NormalisedEventFields {} export class NormalisedApplyBuffEvent extends NormalisedEventFields { type = 'normalisedapplybuff' as const - calculatedEvents: BuffEvent[] = [] - confirmedEvents: BuffEvent[] = [] + override calculatedEvents: BuffEvent[] = [] + override confirmedEvents: BuffEvent[] = [] constructor(event: BuffEvent) { super() @@ -187,8 +187,8 @@ export class NormalisedApplyBuffEvent extends NormalisedEventFields { export interface NormalisedApplyDebuffEvent extends Omit, NormalisedEventFields {} export class NormalisedApplyDebuffEvent extends NormalisedEventFields { type = 'normalisedapplydebuff' as const - calculatedEvents: BuffEvent[] = [] - confirmedEvents: BuffEvent[] = [] + override calculatedEvents: BuffEvent[] = [] + override confirmedEvents: BuffEvent[] = [] constructor(event: BuffEvent) { super() @@ -199,8 +199,8 @@ export class NormalisedApplyDebuffEvent extends NormalisedEventFields { export interface NormalisedRemoveBuffEvent extends Omit, NormalisedEventFields {} export class NormalisedRemoveBuffEvent extends NormalisedEventFields { type = 'normalisedremovebuff' as const - calculatedEvents: BuffEvent[] = [] - confirmedEvents: BuffEvent[] = [] + override calculatedEvents: BuffEvent[] = [] + override confirmedEvents: BuffEvent[] = [] constructor(event: BuffEvent) { super() @@ -211,8 +211,8 @@ export class NormalisedRemoveBuffEvent extends NormalisedEventFields { export interface NormalisedRemoveDebuffEvent extends Omit, NormalisedEventFields {} export class NormalisedRemoveDebuffEvent extends NormalisedEventFields { type = 'normalisedremovedebuff' as const - calculatedEvents: BuffEvent[] = [] - confirmedEvents: BuffEvent[] = [] + override calculatedEvents: BuffEvent[] = [] + override confirmedEvents: BuffEvent[] = [] constructor(event: BuffEvent) { super() @@ -235,15 +235,15 @@ declare module 'legacyEvent' { } export class NormalisedEvents extends Module { - static handle = 'normalisedEvents' - static debug = false + static override handle = 'normalisedEvents' + static override debug = false @dependency private hitType!: HitType // Dependency to ensure HitType properties are available for determining hit success @dependency private precastStatus!: PrecastStatus // Dependency to ensure events synthed by precast status are normalised private _normalisedEvents = new Map() - normalise(events: Event[]): Event[] { + override normalise(events: Event[]): Event[] { events.forEach(this.normaliseEvent) return sortEvents(events.concat(Array.from(this._normalisedEvents.values()))) diff --git a/src/parser/core/modules/Overheal.tsx b/src/parser/core/modules/Overheal.tsx index 971b7e58c4..06ba8d9679 100644 --- a/src/parser/core/modules/Overheal.tsx +++ b/src/parser/core/modules/Overheal.tsx @@ -100,7 +100,7 @@ export class TrackedOverheal { } export class CoreOverheal extends Module { - static handle: string = 'overheal' + static override handle: string = 'overheal' @dependency private checklist!: Checklist @dependency private suggestions!: Suggestions @@ -185,7 +185,7 @@ export class CoreOverheal extends Module { return You had an overheal of { overhealPercent.toFixed(2) }% } - protected init() { + protected override init() { this.direct = new TrackedOverheal({ name: this.overhealName, color: this.overhealColor, @@ -343,7 +343,7 @@ class InvertedRequirement extends Requirement { return 100 - this.percent } - get content() { + override get content() { if (this._percent !== null || this.value === null) { return `${this.percentInverted.toFixed(2)}%` } return `${this.value.toFixed(0)}/${this.target.toFixed(0)}` // avoid weird floating point shit } diff --git a/src/parser/core/modules/PetTimeline.tsx b/src/parser/core/modules/PetTimeline.tsx index f5106ac70e..45c8c38901 100644 --- a/src/parser/core/modules/PetTimeline.tsx +++ b/src/parser/core/modules/PetTimeline.tsx @@ -6,7 +6,7 @@ import Cooldowns from './Cooldowns' // This module puts pet skills on the timeline beneath the GCD spells export default class PetTimeline extends Module { - static handle = 'pettimeline' + static override handle = 'pettimeline' @dependency private data!: Data @dependency private timeline!: Timeline @@ -52,7 +52,7 @@ export default class PetTimeline extends Module { return false } - protected init() { + protected override init() { this.addEventHook('cast', {by: 'pet'}, this.onCast) this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/core/modules/PrecastAction.ts b/src/parser/core/modules/PrecastAction.ts index 51fef583f0..2c58adbbe9 100644 --- a/src/parser/core/modules/PrecastAction.ts +++ b/src/parser/core/modules/PrecastAction.ts @@ -6,12 +6,12 @@ import {Data} from 'parser/core/modules/Data' // Actions that initiate a pull are only a damage event - no cast // Fabricate fake cast events to clean up the mess export default class PrecastAction extends Module { - static handle = 'precastAction' - static debug = false + static override handle = 'precastAction' + static override debug = false @dependency private data!: Data - normalise(events: Event[]): Event[] { + override normalise(events: Event[]): Event[] { const startTime = this.parser.eventTimeOffset for (const event of events) { diff --git a/src/parser/core/modules/Procs.tsx b/src/parser/core/modules/Procs.tsx index 0664a2fc6e..1c49012b90 100644 --- a/src/parser/core/modules/Procs.tsx +++ b/src/parser/core/modules/Procs.tsx @@ -43,8 +43,8 @@ const DEFAULT_SEVERITY_TIERS = { 3: SEVERITY.MAJOR, } export abstract class Procs extends Analyser { - static handle = 'procs' - static title = t('core.procs.title')`Procs` + static override handle = 'procs' + static override title = t('core.procs.title')`Procs` @dependency private downtime!: Downtime @dependency protected suggestions!: Suggestions @@ -231,7 +231,7 @@ export abstract class Procs extends Analyser { protected castingSpellId: number | null = null protected lastCastingSpellId: number | null = null - initialise() { + override initialise() { this.addEventHook(filter().type('prepare').source(this.parser.actor.id), this.onPrepare) const trackedProcActionsIds: number[] = this.trackedProcs.map(group => group.consumeActions).reduce((acc, cur) => acc.concat(cur)).map(action => action.id) diff --git a/src/parser/core/modules/ResourceGraphs/ResourceGraphs.tsx b/src/parser/core/modules/ResourceGraphs/ResourceGraphs.tsx index 77dfd53996..4f9a070cf8 100644 --- a/src/parser/core/modules/ResourceGraphs/ResourceGraphs.tsx +++ b/src/parser/core/modules/ResourceGraphs/ResourceGraphs.tsx @@ -29,7 +29,7 @@ export interface ResourceDataGroup { } export class ResourceGraphs extends Analyser { - static handle = 'resourceGraphs' + static override handle = 'resourceGraphs' @dependency private timeline!: Timeline diff --git a/src/parser/core/modules/SpeedAdjustments.ts b/src/parser/core/modules/SpeedAdjustments.ts index 52b454a4e0..e1a47669b3 100644 --- a/src/parser/core/modules/SpeedAdjustments.ts +++ b/src/parser/core/modules/SpeedAdjustments.ts @@ -8,7 +8,7 @@ import {Actors} from './Actors' type SpeedAttribute = Attribute.SKILL_SPEED | Attribute.SPELL_SPEED export class SpeedAdjustments extends Analyser { - static handle = 'speedAdjustments' + static override handle = 'speedAdjustments' @dependency private actors!: Actors diff --git a/src/parser/core/modules/Statistics/StatisticComponent.tsx b/src/parser/core/modules/Statistics/StatisticComponent.tsx index 857db91c53..3f291d58aa 100644 --- a/src/parser/core/modules/Statistics/StatisticComponent.tsx +++ b/src/parser/core/modules/Statistics/StatisticComponent.tsx @@ -16,7 +16,7 @@ interface Props { } export class StatisticComponent extends React.PureComponent { - render() { + override render() { const {statistic} = this.props const colSpanClass = spanClassMap[statistic.width || 1] diff --git a/src/parser/core/modules/Statistics/Statistics.tsx b/src/parser/core/modules/Statistics/Statistics.tsx index e71d5ef752..ec6c6706b5 100644 --- a/src/parser/core/modules/Statistics/Statistics.tsx +++ b/src/parser/core/modules/Statistics/Statistics.tsx @@ -16,11 +16,10 @@ export interface Statistic { } export class Statistics extends Analyser { - static handle = 'statistics' - // tslint:disable-next-line:variable-name - static title = t('core.statistics.title')`Statistics` - static displayOrder = DISPLAY_ORDER.STATISTICS - static displayMode = DisplayMode.RAW + static override handle = 'statistics' + static override title = t('core.statistics.title')`Statistics` + static override displayOrder = DISPLAY_ORDER.STATISTICS + static override displayMode = DisplayMode.RAW private statistics: Statistic[] = [] @@ -28,7 +27,7 @@ export class Statistics extends Analyser { this.statistics.push(statistic) } - output() { + override output() { if (!this.statistics.length) { return false } diff --git a/src/parser/core/modules/Swiftcast.tsx b/src/parser/core/modules/Swiftcast.tsx index 72e99f0a48..3c760108d8 100644 --- a/src/parser/core/modules/Swiftcast.tsx +++ b/src/parser/core/modules/Swiftcast.tsx @@ -17,8 +17,8 @@ const MISSED_SWIFTCAST_SEVERITIES: SeverityTiers = { } export abstract class SwiftcastModule extends BuffWindowModule { - static handle: string = 'swiftcast' - static title: MessageDescriptor = t('core.swiftcast.title')`Swiftcast Actions` + static override handle: string = 'swiftcast' + static override title: MessageDescriptor = t('core.swiftcast.title')`Swiftcast Actions` // Don't change these – it's critical for the swiftcast module buffAction: Action = ACTIONS.SWIFTCAST @@ -28,7 +28,7 @@ export abstract class SwiftcastModule extends BuffWindowModule { * Implementing modules MAY want to override this to change the column header, but at this point * it's probably universal to call it a 'Spell' */ - protected rotationTableHeader: JSX.Element = Spell + protected override rotationTableHeader: JSX.Element = Spell /** * Implementing modules MAY want to override the suggestionContent to provide job-specific guidance. */ @@ -40,7 +40,7 @@ export abstract class SwiftcastModule extends BuffWindowModule { protected severityTiers: SeverityTiers = MISSED_SWIFTCAST_SEVERITIES // There be dragons here; I wouldn't change these because who knows what might break - protected expectedGCDs: BuffWindowExpectedGCDs = { + protected override expectedGCDs: BuffWindowExpectedGCDs = { expectedPerWindow: 1, suggestionContent: this.suggestionContent, severityTiers: this.severityTiers, @@ -57,7 +57,7 @@ export abstract class SwiftcastModule extends BuffWindowModule { return true } - protected init() { + protected override init() { super.init() // Inheriting the class doesn't update expectedGCDs's parameters when they // override, so let's (re)define it here... feels mega jank tho @@ -72,7 +72,7 @@ export abstract class SwiftcastModule extends BuffWindowModule { // ~4 GCDs 'wide', we can only use one action with it anyway; this change should // ding them only if they had enough time during the window to use a spell with // swiftcast - protected reduceExpectedGCDsEndOfFight(buffWindow: BuffWindowState): number { + protected override reduceExpectedGCDsEndOfFight(buffWindow: BuffWindowState): number { if (this.buffStatus.duration) { // Check to see if this window is rushing due to end of fight - reduce expected GCDs accordingly const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) @@ -82,7 +82,7 @@ export abstract class SwiftcastModule extends BuffWindowModule { return 0 } - protected considerAction(action: Action) { + protected override considerAction(action: Action) { this.debug('Evaluating action during window:', action) // ignore actions that don't have a castTime if (!action.castTime) { diff --git a/src/parser/core/modules/Timeline/Timeline.tsx b/src/parser/core/modules/Timeline/Timeline.tsx index 4880631f47..2ecf097bcb 100644 --- a/src/parser/core/modules/Timeline/Timeline.tsx +++ b/src/parser/core/modules/Timeline/Timeline.tsx @@ -20,10 +20,10 @@ const INITIAL_END = 60000 // One minute const MINIMUM_ZOOM = 10000 // 10 seconds (~4 gcds) export class Timeline extends Analyser { - static handle = 'timeline' - static displayOrder = DISPLAY_ORDER.TIMELINE - static displayMode = DisplayMode.FULL - static title = t('core.timeline.title')`Timeline` + static override handle = 'timeline' + static override displayOrder = DISPLAY_ORDER.TIMELINE + static override displayMode = DisplayMode.FULL + static override title = t('core.timeline.title')`Timeline` private setView?: SetViewFn @@ -69,7 +69,7 @@ export class Timeline extends Analyser { this.setView = handler } - output() { + override output() { return <> Scroll or click+drag to pan, ctrl+scroll or pinch to zoom. diff --git a/src/parser/core/modules/Timeline/config/Row.tsx b/src/parser/core/modules/Timeline/config/Row.tsx index c53ee2883d..9b554e29ac 100644 --- a/src/parser/core/modules/Timeline/config/Row.tsx +++ b/src/parser/core/modules/Timeline/config/Row.tsx @@ -68,7 +68,7 @@ export class SimpleRow implements Row { export class ContainerRow extends SimpleRow { private containerRow?: SimpleRow - addRow(row: T): T { + override addRow(row: T): T { // If there's items on the main row, we need to move them onto the container now there's a subrow if (this.items.length > 0) { this.buildContainer() @@ -77,7 +77,7 @@ export class ContainerRow extends SimpleRow { return super.addRow(row) } - addItem(item: T): T { + override addItem(item: T): T { // If we don't have a container, but there's already subrows, we need to build one if (this.containerRow == null && this.rows.length > 0) { this.buildContainer() diff --git a/src/parser/core/modules/Tincture.ts b/src/parser/core/modules/Tincture.ts index 66460c446f..2ce39895ab 100644 --- a/src/parser/core/modules/Tincture.ts +++ b/src/parser/core/modules/Tincture.ts @@ -4,8 +4,8 @@ import STATUSES from 'data/STATUSES' import {BuffWindowModule} from 'parser/core/modules/BuffWindow' export class Tincture extends BuffWindowModule { - static handle = 'tincture' - static title = t('core.tincture.title')`Tinctures` + static override handle = 'tincture' + static override title = t('core.tincture.title')`Tinctures` buffAction = ACTIONS.INFUSION_STR buffStatus = STATUSES.MEDICATED diff --git a/src/parser/core/modules/UnableToAct/UnableToAct.tsx b/src/parser/core/modules/UnableToAct/UnableToAct.tsx index 079aa585da..14d1b0e5dd 100644 --- a/src/parser/core/modules/UnableToAct/UnableToAct.tsx +++ b/src/parser/core/modules/UnableToAct/UnableToAct.tsx @@ -32,8 +32,8 @@ export interface WindowFilter { } export class UnableToAct extends Analyser { - static handle = 'unableToAct' - static debug = false + static override handle = 'unableToAct' + static override debug = false @dependency private brokenLog!: BrokenLog @dependency private timeline!: Timeline @@ -84,7 +84,7 @@ export class UnableToAct extends Analyser { }).length > 0 } - initialise() { + override initialise() { const statusFilter = filter().status(oneOf(STATUS_IDS)) this.addEventHook(statusFilter.type('statusApply'), this.onApply) this.addEventHook(statusFilter.type('statusRemove'), this.onRemove) diff --git a/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaSuggestions.tsx b/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaSuggestions.tsx index ad3e919250..9c5c91a0e1 100644 --- a/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaSuggestions.tsx +++ b/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaSuggestions.tsx @@ -38,10 +38,10 @@ interface CardLog extends CardState { } export default class ArcanaSuggestions extends Module { - static handle = 'arcanaSuggestions' + static override handle = 'arcanaSuggestions' - static title = t('ast.arcana-suggestions.title')`Arcana Logs` - static displayOrder = DISPLAY_ORDER.ARCANA_TRACKING + static override title = t('ast.arcana-suggestions.title')`Arcana Logs` + static override displayOrder = DISPLAY_ORDER.ARCANA_TRACKING @dependency private data!: Data @dependency private combatants!: Combatants @@ -55,7 +55,7 @@ export default class ArcanaSuggestions extends Module { private SLEEVE_ICON: SleeveIcon = {} - protected init() { + protected override init() { PLAY.forEach(actionKey => { this.PLAY.push(this.data.actions[actionKey].id) }) @@ -95,7 +95,7 @@ export default class ArcanaSuggestions extends Module { }) } - output() { + override output() { return <>

@@ -176,7 +176,7 @@ export default class ArcanaSuggestions extends Module { } - // Helper for output() + // Helper for override output() RenderAction(artifact: CardLog) { if (artifact.lastEvent.type === 'cast' && this.PLAY.includes(artifact.lastEvent.ability.guid)) { const targetJob = getDataBy(JOBS, 'logType', artifact.targetJob as ActorType) @@ -219,7 +219,7 @@ export default class ArcanaSuggestions extends Module { } - // Helper for output() + // Helper for override output() RenderSpreadState(artifact: CardLog) { const drawnArcana = artifact.drawState ? this.data.getStatus(artifact.drawState) : undefined diff --git a/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaTracking.tsx b/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaTracking.tsx index d7fb62d948..1fa062675b 100644 --- a/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaTracking.tsx +++ b/src/parser/jobs/ast/modules/ArcanaTracking/ArcanaTracking.tsx @@ -53,9 +53,9 @@ export interface CardState { // TODO: Try to track for when a seal was not given on pull due to latency? export default class ArcanaTracking extends Module { - static handle = 'arcanaTracking' - static title = t('ast.arcana-tracking.title')`Arcana Tracking` - static displayOrder = DISPLAY_ORDER.ARCANA_TRACKING + static override handle = 'arcanaTracking' + static override title = t('ast.arcana-tracking.title')`Arcana Tracking` + static override displayOrder = DISPLAY_ORDER.ARCANA_TRACKING @dependency private data!: Data @dependency private precastStatus!: PrecastStatus @@ -91,7 +91,7 @@ export default class ArcanaTracking extends Module { private prepullArcanas: BuffEvent[] = [] - protected init() { + protected override init() { // Initialize grouped reference to actions/statuses data PLAY.forEach(key => { this.PLAY.push(this.data.actions[key].id) }) ARCANA_STATUSES.forEach(key => { this.ARCANA_STATUSES.push(this.data.statuses[key].id) }) @@ -118,7 +118,7 @@ export default class ArcanaTracking extends Module { this.addEventHook('death', {to: 'player'}, this.onDeath) } - normalise(events: Event[]) { + override normalise(events: Event[]) { // The whole point of this module was to support "pre-5.3" Three-card Sleeve Draw if (!this.parser.patch.before('5.3')) { return events diff --git a/src/parser/jobs/ast/modules/CelestialIntersection.tsx b/src/parser/jobs/ast/modules/CelestialIntersection.tsx index c4724acf46..fff831670f 100644 --- a/src/parser/jobs/ast/modules/CelestialIntersection.tsx +++ b/src/parser/jobs/ast/modules/CelestialIntersection.tsx @@ -14,7 +14,7 @@ const SEVERITY_MOD = { // Lifted from WHM benison and adapted to AST and TSX export default class CelestialIntersection extends Module { - static handle = 'celestialintersection' + static override handle = 'celestialintersection' @dependency private data!: Data @dependency private suggestions!: Suggestions @@ -23,7 +23,7 @@ export default class CelestialIntersection extends Module { private uses = 0 private totalHeld = 0 - protected init() { + protected override init() { this.addEventHook('cast', {abilityId: this.data.actions.CELESTIAL_INTERSECTION.id, by: 'player'}, this.onCast) this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/jobs/ast/modules/CelestialOpposition.tsx b/src/parser/jobs/ast/modules/CelestialOpposition.tsx index bdc02bf56f..47b76ed227 100644 --- a/src/parser/jobs/ast/modules/CelestialOpposition.tsx +++ b/src/parser/jobs/ast/modules/CelestialOpposition.tsx @@ -17,7 +17,7 @@ const SEVERITY_MOD = { // Lifted from WHM benison and adapted to AST and TSX export default class CelestialOpposition extends Module { - static handle = 'celestialopposition' + static override handle = 'celestialopposition' @dependency private data!: Data @dependency private suggestions!: Suggestions @@ -29,7 +29,7 @@ export default class CelestialOpposition extends Module { private activeSect: Status | undefined - protected init() { + protected override init() { this.addEventHook('cast', {abilityId: this.data.actions.CELESTIAL_OPPOSITION.id, by: 'player'}, this.onCast) this.addEventHook('applybuff', {abilityId: [this.data.statuses.DIURNAL_SECT.id, this.data.statuses.NOCTURNAL_SECT.id], by: 'player'}, this.onSect) this.addEventHook('complete', this.onComplete) diff --git a/src/parser/jobs/ast/modules/Combust.tsx b/src/parser/jobs/ast/modules/Combust.tsx index 64aaf54bd8..b4f20d517d 100644 --- a/src/parser/jobs/ast/modules/Combust.tsx +++ b/src/parser/jobs/ast/modules/Combust.tsx @@ -21,16 +21,16 @@ const SEVERITIES = { } export default class Combust extends DoTs { - static handle = 'combust' + static override handle = 'combust' - static statusesToTrack = [ + static override statusesToTrack = [ STATUSES.COMBUST_III.id, ] @dependency private checklist!: Checklist @dependency private suggestions!: Suggestions - addChecklistRules() { + override addChecklistRules() { this.checklist.add(new TieredRule({ name: Keep your DoT up, description: @@ -46,7 +46,7 @@ export default class Combust extends DoTs { })) } - addClippingSuggestions(clip: TODO) { + override addClippingSuggestions(clip: TODO) { // Suggestion for DoT clipping this.suggestions.add(new TieredSuggestion({ icon: ACTIONS.COMBUST_III.icon, diff --git a/src/parser/jobs/ast/modules/Cooldowns.tsx b/src/parser/jobs/ast/modules/Cooldowns.tsx index 50f5d2bf6d..6ae7016df7 100644 --- a/src/parser/jobs/ast/modules/Cooldowns.tsx +++ b/src/parser/jobs/ast/modules/Cooldowns.tsx @@ -1,7 +1,7 @@ import CoreCooldowns, {CooldownOrderItem} from 'parser/core/modules/Cooldowns' export default class Cooldowns extends CoreCooldowns { - static cooldownOrder: CooldownOrderItem[] = [ + static override cooldownOrder: CooldownOrderItem[] = [ // Arcanum { name: 'Draw/Undraw', diff --git a/src/parser/jobs/ast/modules/DivinationDowntime.tsx b/src/parser/jobs/ast/modules/DivinationDowntime.tsx index 0b629e78c7..2a1261279a 100644 --- a/src/parser/jobs/ast/modules/DivinationDowntime.tsx +++ b/src/parser/jobs/ast/modules/DivinationDowntime.tsx @@ -5,16 +5,16 @@ import {CooldownDowntime} from 'parser/core/modules/CooldownDowntime' import React from 'react' export default class OGCDDowntime extends CooldownDowntime { - trackedCds = [ + override trackedCds = [ { cooldowns: [ACTIONS.DIVINATION], allowedAverageDowntime: 2500, firstUseOffset: 12500, }, ] - target = 100 - checklistName = Use Divination - checklistDescription = provides Astrologian with a strong amount of raid DPS when stacked together with arcanum. + override checklistTarget = 100 + override checklistName = Use Divination + override checklistDescription = provides Astrologian with a strong amount of raid DPS when stacked together with arcanum. Damage percentage bonuses stack multiplicatively, so it's most optimal to stack it with cards from . Try to time the usage to match raid buffs and high output phases of other party members - it's more important to use it on time rather than hold it in an attempt to have 3 different seals. diff --git a/src/parser/jobs/ast/modules/Draw.tsx b/src/parser/jobs/ast/modules/Draw.tsx index 76e8cfe5cc..53a6a5f471 100644 --- a/src/parser/jobs/ast/modules/Draw.tsx +++ b/src/parser/jobs/ast/modules/Draw.tsx @@ -34,8 +34,8 @@ const SEVERITIES = { } export default class Draw extends Module { - static handle = 'draw' - static title = t('ast.draw.title')`Draw` + static override handle = 'draw' + static override title = t('ast.draw.title')`Draw` @dependency private data!: Data @dependency private checklist!: Checklist @@ -60,7 +60,7 @@ export default class Draw extends Module { private PLAY: number[] = [] private ARCANA_STATUSES: number[] = [] - protected init() { + protected override init() { PLAY.forEach(actionKey => { this.PLAY.push(this.data.actions[actionKey].id) diff --git a/src/parser/jobs/ast/modules/EarthlyStar.tsx b/src/parser/jobs/ast/modules/EarthlyStar.tsx index e28e048d2c..dcb4151e67 100644 --- a/src/parser/jobs/ast/modules/EarthlyStar.tsx +++ b/src/parser/jobs/ast/modules/EarthlyStar.tsx @@ -26,8 +26,8 @@ const SEVERETIES = { // const PLAYER_STATUSES = [STATUSES.EARTHLY_DOMINANCE.id, STATUSES.GIANT_DOMINANCE.id] export default class EarthlyStar extends Module { - static handle = 'earthlystar' - static title = t('ast.earthly-star.title')`Earthly Star` + static override handle = 'earthlystar' + static override title = t('ast.earthly-star.title')`Earthly Star` @dependency private data!: Data @dependency private suggestions!: Suggestions @@ -41,7 +41,7 @@ export default class EarthlyStar extends Module { private PET_CASTS: number[] = [this.data.actions.STELLAR_BURST.id, this.data.actions.STELLAR_EXPLOSION.id] - protected init() { + protected override init() { this.addEventHook('cast', {abilityId: this.data.actions.EARTHLY_STAR.id, by: 'player'}, this.onPlace) this.addEventHook('cast', {abilityId: this.PET_CASTS, by: 'pet'}, this.onPetCast) // this.addHook('applybuff', {abilityId: PLAYER_STATUSES, by: 'player'}, this._onDominance) diff --git a/src/parser/jobs/ast/modules/Horoscope.tsx b/src/parser/jobs/ast/modules/Horoscope.tsx index c4c513a3bf..fd80d3948f 100644 --- a/src/parser/jobs/ast/modules/Horoscope.tsx +++ b/src/parser/jobs/ast/modules/Horoscope.tsx @@ -23,8 +23,8 @@ const SEVERITIES = { } export default class Horoscope extends Module { - static handle = 'horoscope' - static title = t('ast.horoscope.title')`Horoscope` + static override handle = 'horoscope' + static override title = t('ast.horoscope.title')`Horoscope` @dependency private data!: Data @dependency private cooldowns!: Cooldowns @@ -34,7 +34,7 @@ export default class Horoscope extends Module { private activations = 0 private nonHoroscopeHeals = 0 - protected init() { + protected override init() { const HELIOS_CASTS = [ this.data.actions.HELIOS.id, diff --git a/src/parser/jobs/ast/modules/Overheal.tsx b/src/parser/jobs/ast/modules/Overheal.tsx index fff4b46c13..25a9cc3bcc 100644 --- a/src/parser/jobs/ast/modules/Overheal.tsx +++ b/src/parser/jobs/ast/modules/Overheal.tsx @@ -26,7 +26,7 @@ const SEVERITY_TIERS = { // Adapted from whm Overheal export default class Overheal extends Module { - static handle = 'overheal' + static override handle = 'overheal' @dependency private data!: Data @dependency private checklist!: Checklist @@ -40,7 +40,7 @@ export default class Overheal extends Module { private HOT_STATUSES: number[] = [] - protected init() { + protected override init() { HOT_STATUSES.forEach(actionKey => { this.HOT_STATUSES.push(this.data.statuses[actionKey].id) }) @@ -104,7 +104,7 @@ export class InvertedRequirement extends Requirement { return 100 - this.percent } - get content() { + override get content() { if (this._percent !== null || this.value === null) { return `${this.percentInverted.toFixed(2)}%` } return `${this.value.toFixed(0)}/${this.target.toFixed(0)}` // avoid weird floating point shit } diff --git a/src/parser/jobs/ast/modules/Sect/Sect.tsx b/src/parser/jobs/ast/modules/Sect/Sect.tsx index a69aa05896..3980727394 100644 --- a/src/parser/jobs/ast/modules/Sect/Sect.tsx +++ b/src/parser/jobs/ast/modules/Sect/Sect.tsx @@ -82,7 +82,7 @@ const NOCTURNAL_SECT_BUFF_ABILITY = { // Determine sect by checking the result of an aspected spell/ability export default class Sect extends Module { - static handle = 'sect' + static override handle = 'sect' @dependency private statistics!: Statistics @dependency private precastAction!: PrecastAction @@ -92,13 +92,13 @@ export default class Sect extends Module { private activeSectId: string | number | undefined = undefined private gaveup = false - protected init() { + protected override init() { this.addEventHook('cast', {abilityId: [...SECT_ACTIONS], by: 'player'}, this.onCast) this.addEventHook('applybuff', {abilityId: [...SECT_STATUSES], by: 'player'}, this.onApplySect) this.addEventHook('complete', this.onComplete) } - normalise(events: Event[]) { + override normalise(events: Event[]) { const startTime = this.parser.fight.start_time let aspectedCast: CastEvent | null = null diff --git a/src/parser/jobs/ast/modules/Synastry.tsx b/src/parser/jobs/ast/modules/Synastry.tsx index 61c6a93b42..059923beaa 100644 --- a/src/parser/jobs/ast/modules/Synastry.tsx +++ b/src/parser/jobs/ast/modules/Synastry.tsx @@ -22,7 +22,7 @@ const GCD_ST_HEAL: Array = [ // Ripped off from WHM and converted to TSX export default class Synastry extends Module { - static handle = 'synastry' + static override handle = 'synastry' @dependency private data!: Data @dependency private combatants!: Combatants @@ -33,7 +33,7 @@ export default class Synastry extends Module { private GCD_ST_HEAL: number[] = [] - protected init() { + protected override init() { GCD_ST_HEAL.forEach(actionKey => { this.GCD_ST_HEAL.push(this.data.actions[actionKey].id) }) diff --git a/src/parser/jobs/blm/modules/Leylines.tsx b/src/parser/jobs/blm/modules/Leylines.tsx index 662af33864..7e4f2b84d2 100644 --- a/src/parser/jobs/blm/modules/Leylines.tsx +++ b/src/parser/jobs/blm/modules/Leylines.tsx @@ -23,9 +23,9 @@ interface LeyLinesWindows { } export default class Leylines extends Analyser { - static handle = 'leylines' - static title = t('blm.leylines.title')`Ley Lines` - static displayOrder = DISPLAY_ORDER.LEY_LINES + static override handle = 'leylines' + static override title = t('blm.leylines.title')`Ley Lines` + static override displayOrder = DISPLAY_ORDER.LEY_LINES @dependency data!: Data @dependency checklist!: Checklist @@ -38,7 +38,7 @@ export default class Leylines extends Analyser { private buffWindows: {[key: number]: LeyLinesWindows} = {} - initialise() { + override initialise() { const leyLinesFilter = filter() .source(this.parser.actor.id) .status(oneOf(this.leyLinesStatuses)) @@ -152,7 +152,7 @@ export default class Leylines extends Analyser { })) } - output() { + override output() { const fightEnd = this.parser.pull.timestamp + this.parser.pull.duration return diff --git a/src/parser/jobs/blm/modules/OGCDDowntime.tsx b/src/parser/jobs/blm/modules/OGCDDowntime.tsx index 2cd7bd04d7..55dac83d6f 100644 --- a/src/parser/jobs/blm/modules/OGCDDowntime.tsx +++ b/src/parser/jobs/blm/modules/OGCDDowntime.tsx @@ -10,8 +10,8 @@ const TARGETPERCENT = 95 export default class OGCDDowntime extends CooldownDowntime { // Time in ms that Laqi deems ok for a OGCD to be down : ^) - defaultAllowedAverageDowntimeDowntime = ALLOWEDDOWNTIMEALL - defaultFirstUseOffset = FIRSTUSEOFFSETALL + override defaultAllowedAverageDowntime = ALLOWEDDOWNTIMEALL + override defaultFirstUseOffset = FIRSTUSEOFFSETALL trackedCds = [ {cooldowns: [ACTIONS.LEY_LINES]}, { @@ -21,6 +21,6 @@ export default class OGCDDowntime extends CooldownDowntime { {cooldowns: [ACTIONS.TRIPLECAST]}, ] - checklistTarget = TARGETPERCENT - checklistDescription = Always make sure to use your OGCDs when they are up but don't clip them. Utilize your procs or fast Blizzard IIIs or Fire IIIs to weave them. To account for random factors you are given a buffer of {ALLOWEDDOWNTIMEALL/1000} seconds per instance to hold your cooldowns. + override checklistTarget = TARGETPERCENT + override checklistDescription = Always make sure to use your OGCDs when they are up but don't clip them. Utilize your procs or fast Blizzard IIIs or Fire IIIs to weave them. To account for random factors you are given a buffer of {ALLOWEDDOWNTIMEALL/1000} seconds per instance to hold your cooldowns. } diff --git a/src/parser/jobs/blm/modules/Procs.tsx b/src/parser/jobs/blm/modules/Procs.tsx index a75408eb16..96789431e7 100644 --- a/src/parser/jobs/blm/modules/Procs.tsx +++ b/src/parser/jobs/blm/modules/Procs.tsx @@ -11,7 +11,7 @@ import React from 'react' export default class Procs extends CoreProcs { @dependency castTime!: CastTime - trackedProcs = [ + override trackedProcs = [ { procStatus: this.data.statuses.THUNDERCLOUD, consumeActions: [ @@ -27,7 +27,7 @@ export default class Procs extends CoreProcs { private hasSharpcast: boolean = false - initialise() { + override initialise() { super.initialise() // Hacky workaround because Statuses aren't in Analyser format yet, can (and probably should) remove this when that's done @@ -38,12 +38,12 @@ export default class Procs extends CoreProcs { this.addEventHook(trackedStatusFilter.type('statusRemove'), () => { this.hasSharpcast = false }) } - protected jobSpecificCheckConsumeProc(_procGroup: ProcGroup, event: Events['action']): boolean { + protected override jobSpecificCheckConsumeProc(_procGroup: ProcGroup, event: Events['action']): boolean { // If we were already hardcasting this spell, it does not consume the proc return !(this.lastCastingSpellId && this.lastCastingSpellId === event.action) } - protected jobSpecificOnConsumeProc(procGroup: ProcGroup, event: Events['action']): void { + protected override jobSpecificOnConsumeProc(procGroup: ProcGroup, event: Events['action']): void { // BLM's procs are all instant-casts this.castTime.setInstantCastAdjustment([event.action], event.timestamp, event.timestamp) @@ -54,7 +54,7 @@ export default class Procs extends CoreProcs { return } - protected addJobSpecificSuggestions(): void { + protected override addJobSpecificSuggestions(): void { const droppedThunderClouds: number = this.getDropCountForStatus(this.data.statuses.THUNDERCLOUD.id) if (droppedThunderClouds > 0) { this.suggestions.add(new Suggestion({ diff --git a/src/parser/jobs/blm/modules/RotationWatchdog.tsx b/src/parser/jobs/blm/modules/RotationWatchdog.tsx index 1c15d175cb..7bae64173b 100644 --- a/src/parser/jobs/blm/modules/RotationWatchdog.tsx +++ b/src/parser/jobs/blm/modules/RotationWatchdog.tsx @@ -194,9 +194,9 @@ class GaugeState { } export default class RotationWatchdog extends Module { - static handle = 'RotationWatchdog' - static title = t('blm.rotation-watchdog.title')`Rotation Outliers` - static displayOrder = DISPLAY_ORDER.ROTATION + static override handle = 'RotationWatchdog' + static override title = t('blm.rotation-watchdog.title')`Rotation Outliers` + static override displayOrder = DISPLAY_ORDER.ROTATION @dependency private suggestions!: Suggestions @dependency private invulnerability!: Invulnerability @@ -213,7 +213,7 @@ export default class RotationWatchdog extends Module { // counters for suggestions private uptimeSouls: number = 0 - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('complete', this.onComplete) this.addEventHook(BLM_GAUGE_EVENT, this.onGaugeEvent) @@ -553,7 +553,7 @@ export default class RotationWatchdog extends Module { } } - output() { + override output() { const outliers: Cycle[] = this.history.filter(cycle => cycle.errorCode.priority > CYCLE_ERRORS.SHORT.priority || DEBUG_SHOW_ALL_CYCLES) if (outliers.length > 0) { diff --git a/src/parser/jobs/blu/modules/Weaving.ts b/src/parser/jobs/blu/modules/Weaving.ts index 683ffa50ff..f8c8e157db 100644 --- a/src/parser/jobs/blu/modules/Weaving.ts +++ b/src/parser/jobs/blu/modules/Weaving.ts @@ -4,7 +4,7 @@ import CoreWeaving, {WeaveInfo} from 'parser/core/modules/Weaving' const TO_MILLISECONDS = 1000 export default class Weaving extends CoreWeaving { - isBadWeave(weave: WeaveInfo) { + override isBadWeave(weave: WeaveInfo) { let surpanakhas = 0 weave.weaves.forEach((value) => { if (value.ability.guid === ACTIONS.SURPANAKHA.id) { diff --git a/src/parser/jobs/brd/modules/AlwaysBeCasting.ts b/src/parser/jobs/brd/modules/AlwaysBeCasting.ts index 6d8015da8e..96e170a94d 100644 --- a/src/parser/jobs/brd/modules/AlwaysBeCasting.ts +++ b/src/parser/jobs/brd/modules/AlwaysBeCasting.ts @@ -16,7 +16,7 @@ export default class AlwaysBeCasting extends CoreAlwaysBeCasting { currentMuse: ArmyWindow | undefined currentPaeon: ArmyWindow | undefined - protected init() { + protected override init() { super.init() this.addEventHook('applybuff', {by: 'player', abilityId: [STATUSES.ARMYS_MUSE.id]}, this.onMuse) this.addEventHook('removebuff', {by: 'player', abilityId: [STATUSES.ARMYS_MUSE.id]}, this.onRemoveMuse) @@ -67,7 +67,7 @@ export default class AlwaysBeCasting extends CoreAlwaysBeCasting { return this.armyHistory.some(army => timestamp > army.start && timestamp < army.end) } - protected getUptimePercent(): number { + protected override getUptimePercent(): number { const fightDuration = this.parser.currentDuration - this.downtime.getDowntime() const armyDuration = this.armyHistory.reduce((acc, army) => { const downtime = this.downtime.getDowntime( diff --git a/src/parser/jobs/brd/modules/ApexArrow.tsx b/src/parser/jobs/brd/modules/ApexArrow.tsx index 491cce7a06..7729d5d3cb 100644 --- a/src/parser/jobs/brd/modules/ApexArrow.tsx +++ b/src/parser/jobs/brd/modules/ApexArrow.tsx @@ -16,9 +16,9 @@ const APEX_POTENCY_THRESHOLDS = { } export default class ApexArrow extends Module { - static handle = 'Apex' - static title = t('brd.apex.title')`Apex Arrow` - static debug = false + static override handle = 'Apex' + static override title = t('brd.apex.title')`Apex Arrow` + static override debug = false @dependency private stats!: AdditionalStats @dependency private data!: Data @@ -27,7 +27,7 @@ export default class ApexArrow extends Module { private ghostedApexCasts: number = 0 private badApexCasts: number = 0 - protected init() { + protected override init() { this.addEventHook('normaliseddamage', {by: 'player', abilityId: this.data.actions.APEX_ARROW.id}, this.onApex) this.addEventHook('complete', this.onComplete) } diff --git a/src/parser/jobs/brd/modules/Barrage.tsx b/src/parser/jobs/brd/modules/Barrage.tsx index 817f2b29a8..b763bd9f2c 100644 --- a/src/parser/jobs/brd/modules/Barrage.tsx +++ b/src/parser/jobs/brd/modules/Barrage.tsx @@ -64,9 +64,9 @@ interface BarrageWindow { } export default class Barrage extends Module { - static handle = 'barrage' - static title = t('brd.barrage.title')`Barrage` - static displayOrder = DISPLAY_ORDER.BARRAGE + static override handle = 'barrage' + static override title = t('brd.barrage.title')`Barrage` + static override displayOrder = DISPLAY_ORDER.BARRAGE @dependency private checklist!: Checklist @dependency private combatants!: Combatants @@ -77,7 +77,7 @@ export default class Barrage extends Module { private BARRAGE_GCDS: number[] = [] - protected init() { + protected override init() { this.BARRAGE_GCDS = BARRAGE_GCDS.map(key => this.data.actions[key].id) this.addEventHook('cast', {by: 'player', abilityId: this.data.actions.BARRAGE.id}, this.onBarrageCast) @@ -208,7 +208,7 @@ export default class Barrage extends Module { return } - output() { + override output() { if (this.barrageHistory.length === 0) { return null } @@ -256,7 +256,7 @@ class WeightedTieredRule extends TieredRule { this.requirements.map(req => req.weight = req.weight / totalWeight) } - public get percent(): number { + public override get percent(): number { return this.requirements.reduce((acc, req) => acc + (req.percent * req.weight), 0) } } diff --git a/src/parser/jobs/brd/modules/OGCDDowntime.ts b/src/parser/jobs/brd/modules/OGCDDowntime.ts index 7ee205e56b..7f268f270d 100644 --- a/src/parser/jobs/brd/modules/OGCDDowntime.ts +++ b/src/parser/jobs/brd/modules/OGCDDowntime.ts @@ -5,7 +5,7 @@ import ACTIONS from 'data/ACTIONS' import {CooldownDowntime} from 'parser/core/modules/CooldownDowntime' export default class OGCDDowntime extends CooldownDowntime { - trackedCds = [ + override trackedCds = [ { cooldowns: [ACTIONS.BATTLE_VOICE], firstUseOffset: 4500, @@ -27,5 +27,5 @@ export default class OGCDDowntime extends CooldownDowntime { }, ] - checklistTarget = 100 + override checklistTarget = 100 } diff --git a/src/parser/jobs/brd/modules/RagingStrikes.tsx b/src/parser/jobs/brd/modules/RagingStrikes.tsx index 45d7d92665..a79e0c22d6 100644 --- a/src/parser/jobs/brd/modules/RagingStrikes.tsx +++ b/src/parser/jobs/brd/modules/RagingStrikes.tsx @@ -35,9 +35,9 @@ interface MuseWindow { } export default class RagingStrikes extends BuffWindowModule { - static handle = 'rs' - static title = t('brd.rs.title')`Raging Strikes` - static displayOrder = DISPLAY_ORDER.RAGING_STRIKES + static override handle = 'rs' + static override title = t('brd.rs.title')`Raging Strikes` + static override displayOrder = DISPLAY_ORDER.RAGING_STRIKES buffAction = this.data.actions.RAGING_STRIKES buffStatus = this.data.statuses.RAGING_STRIKES @@ -45,7 +45,7 @@ export default class RagingStrikes extends BuffWindowModule { private museHistory: MuseWindow[] = [] private SUPPORT_ACTIONS: number[] = [] - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 8, suggestionContent: Try to land 8 GCDs (9 GCDs with ) during every window. @@ -57,7 +57,7 @@ export default class RagingStrikes extends BuffWindowModule { }, } - trackedActions = { + override trackedActions = { icon: this.data.actions.BARRAGE.icon, actions: [ { @@ -80,7 +80,7 @@ export default class RagingStrikes extends BuffWindowModule { }, } - protected init() { + protected override init() { super.init() this.SUPPORT_ACTIONS = SUPPORT_ACTIONS.map(actionKey => this.data.actions[actionKey].id) @@ -106,9 +106,9 @@ export default class RagingStrikes extends BuffWindowModule { } } - protected considerAction = (action: Action) => !this.SUPPORT_ACTIONS.includes(action.id) + protected override considerAction = (action: Action) => !this.SUPPORT_ACTIONS.includes(action.id) - protected changeExpectedGCDsClassLogic(buffWindow: BuffWindowState): number { + protected override changeExpectedGCDsClassLogic(buffWindow: BuffWindowState): number { // Check if muse was up for at least 3 GCDs in this buffWindow const museOverlap = this.museHistory.some(muse => ( buffWindow.rotation.filter(event => this.data.getAction(event.ability.guid)?.onGcd && @@ -121,7 +121,7 @@ export default class RagingStrikes extends BuffWindowModule { private getEventTargetKey = (event: CastEvent): string => `${event.targetID}-${event.targetInstance}` - protected getBaselineExpectedTrackedAction(buffWindow: BuffWindowState, action: BuffWindowTrackedAction): number { + protected override getBaselineExpectedTrackedAction(buffWindow: BuffWindowState, action: BuffWindowTrackedAction): number { if (action.action !== this.data.actions.IRON_JAWS) { return action.expectedPerWindow || 0 } @@ -137,7 +137,7 @@ export default class RagingStrikes extends BuffWindowModule { return enemyIDs.size } - protected reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { + protected override reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { const windowDurationMillis = this.buffStatus.duration * 1000 const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) @@ -152,7 +152,7 @@ export default class RagingStrikes extends BuffWindowModule { return 0 } - protected changeComparisonClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction) { + protected override changeComparisonClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction) { /** * Positive only if we had exactly one Iron Jaws in this RS * If expected > 1, we're in AoE and there is no clear rotation target, so don't highlight this cell diff --git a/src/parser/jobs/brd/modules/RefulgentProcs.tsx b/src/parser/jobs/brd/modules/RefulgentProcs.tsx index 8c6af8e855..168bac9b6e 100644 --- a/src/parser/jobs/brd/modules/RefulgentProcs.tsx +++ b/src/parser/jobs/brd/modules/RefulgentProcs.tsx @@ -4,22 +4,22 @@ import {Procs} from 'parser/core/modules/Procs' import React from 'react' export default class RefulgentProcs extends Procs { - trackedProcs = [ + override trackedProcs = [ { procStatus: this.data.statuses.STRAIGHT_SHOT_READY, consumeActions: [this.data.actions.REFULGENT_ARROW], }, ] - showDroppedProcSuggestion = true - droppedProcIcon = this.data.actions.REFULGENT_ARROW.icon - droppedProcContent = + override showDroppedProcSuggestion = true + override droppedProcIcon = this.data.actions.REFULGENT_ARROW.icon + override droppedProcContent = Try to use whenever you have . - showOverwroteProcSuggestion = true - overwroteProcIcon = this.data.actions.REFULGENT_ARROW.icon - overwroteProcContent = + override showOverwroteProcSuggestion = true + override overwroteProcIcon = this.data.actions.REFULGENT_ARROW.icon + override overwroteProcContent = Avoid using actions that grant when you could use instead. diff --git a/src/parser/jobs/brd/modules/Snapshots.tsx b/src/parser/jobs/brd/modules/Snapshots.tsx index 02e652f61b..5392b430ee 100644 --- a/src/parser/jobs/brd/modules/Snapshots.tsx +++ b/src/parser/jobs/brd/modules/Snapshots.tsx @@ -90,9 +90,9 @@ class Target { } export default class Snapshots extends Module { - static handle = 'snapshots' - static title = t('brd.snapshots.title')`Snapshots` - static displayOrder = DISPLAY_ORDER.SNAPSHOTS + static override handle = 'snapshots' + static override title = t('brd.snapshots.title')`Snapshots` + static override displayOrder = DISPLAY_ORDER.SNAPSHOTS @dependency private combatants!: Combatants @dependency private data!: Data @@ -101,7 +101,7 @@ export default class Snapshots extends Module { private targets: Map = new Map() - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player', abilityId: SNAPSHOTTERS}, this.onSnapshot) this.addEventHook(['applydebuff', 'refreshdebuff'], this.onApply) this.addEventHook('removedebuff', this.onRemove) @@ -237,7 +237,7 @@ export default class Snapshots extends Module {
} - output() { + override output() { if (this.targets.size === 0) { return null } diff --git a/src/parser/jobs/dnc/modules/Combos.ts b/src/parser/jobs/dnc/modules/Combos.ts index d1b725a54f..e94899b9c4 100644 --- a/src/parser/jobs/dnc/modules/Combos.ts +++ b/src/parser/jobs/dnc/modules/Combos.ts @@ -10,14 +10,14 @@ const GCD_TIMEOUT_MILLIS = 15000 export default class Combos extends CoreCombos { // Override statics - static suggestionIcon = ACTIONS.CASCADE.icon + static override suggestionIcon = ACTIONS.CASCADE.icon @dependency private dancing!: DirtyDancing @dependency private combatants!: Combatants // Override check for allowable breaks. If two dances were started during the initial context's GCD timeout window, // (ie, both Standard and Technical were danced), then we'll allow it - isAllowableComboBreak(event: NormalisedDamageEvent, context: NormalisedDamageEvent[]): boolean { + override isAllowableComboBreak(event: NormalisedDamageEvent, context: NormalisedDamageEvent[]): boolean { // Shouldn't ever be the case, but protect against weird shit if (context.length !== 1) { return false diff --git a/src/parser/jobs/dnc/modules/DirtyDancing.tsx b/src/parser/jobs/dnc/modules/DirtyDancing.tsx index 057f2f7461..98a556da92 100644 --- a/src/parser/jobs/dnc/modules/DirtyDancing.tsx +++ b/src/parser/jobs/dnc/modules/DirtyDancing.tsx @@ -103,9 +103,9 @@ class Dance { } export default class DirtyDancing extends Module { - static handle = 'dirtydancing' - static title = t('dnc.dirty-dancing.title')`Dance Issues` - static displayOrder = DISPLAY_ORDER.DIRTY_DANCING + static override handle = 'dirtydancing' + static override title = t('dnc.dirty-dancing.title')`Dance Issues` + static override displayOrder = DISPLAY_ORDER.DIRTY_DANCING @dependency private checklist!: CheckList @dependency private suggestions!: Suggestions @@ -129,7 +129,7 @@ export default class DirtyDancing extends Module { [ACTIONS.TECHNICAL_STEP.id]: 0, } - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player', abilityId: STEPS}, this.beginDance) this.addEventHook('cast', {by: 'player'}, this.continueDance) this.addEventHook('cast', {by: 'player', abilityId: FINISHES}, this.finishDance) @@ -355,7 +355,7 @@ export default class DirtyDancing extends Module { } } - output() { + override output() { if (this.danceHistory.some(dance => dance.error)) { return diff --git a/src/parser/jobs/dnc/modules/Gauge.tsx b/src/parser/jobs/dnc/modules/Gauge.tsx index 92c16c8c5a..d16de662fd 100644 --- a/src/parser/jobs/dnc/modules/Gauge.tsx +++ b/src/parser/jobs/dnc/modules/Gauge.tsx @@ -53,7 +53,7 @@ const SABER_DANCE_COST = 50 const MAX_FEATHERS = 4 export default class Gauge extends Analyser { - static handle = 'gauge' + static override handle = 'gauge' @dependency private data!: Data @dependency private suggestions!: Suggestions @@ -116,7 +116,7 @@ export default class Gauge extends Analyser { private pauseGeneration = false; - initialise() { + override initialise() { const espritApplyFilter = filter() .type('statusApply') .source(this.parser.actor.id) diff --git a/src/parser/jobs/dnc/modules/Procs.tsx b/src/parser/jobs/dnc/modules/Procs.tsx index 5e0d256441..e50cd16c16 100644 --- a/src/parser/jobs/dnc/modules/Procs.tsx +++ b/src/parser/jobs/dnc/modules/Procs.tsx @@ -4,7 +4,7 @@ import {Procs as CoreProcs} from 'parser/core/modules/Procs' import React from 'react' export default class Procs extends CoreProcs { - trackedProcs = [ + override trackedProcs = [ { procStatus: this.data.statuses.FLOURISHING_FAN_DANCE, consumeActions: [this.data.actions.FAN_DANCE_III], @@ -27,16 +27,16 @@ export default class Procs extends CoreProcs { }, ] - showDroppedProcSuggestion = true - droppedProcIcon = this.data.actions.FOUNTAINFALL.icon - droppedProcContent = + override showDroppedProcSuggestion = true + override droppedProcIcon = this.data.actions.FOUNTAINFALL.icon + override droppedProcContent = Avoid dropping your procs unless absolutely necessary. If you have to drop one to keep your Esprit from overcapping, or will lose the least DPS overall. - showOverwroteProcSuggestion = true - overwroteProcIcon = this.data.actions.REVERSE_CASCADE.icon - overwroteProcContent = + override showOverwroteProcSuggestion = true + override overwroteProcIcon = this.data.actions.REVERSE_CASCADE.icon + override overwroteProcContent = Avoid overwriting your procs. Your proc actions are stronger than your normal combo, so overwriting them is a significant DPS loss. diff --git a/src/parser/jobs/dnc/modules/Technicalities.tsx b/src/parser/jobs/dnc/modules/Technicalities.tsx index 2350e8af20..6bf30c3ae0 100644 --- a/src/parser/jobs/dnc/modules/Technicalities.tsx +++ b/src/parser/jobs/dnc/modules/Technicalities.tsx @@ -57,9 +57,9 @@ class TechnicalWindow { } export default class Technicalities extends Module { - static handle = 'technicalities' - static title = t('dnc.technicalities.title')`Technical Windows` - static displayOrder = DISPLAY_ORDER.TECHNICALITIES + static override handle = 'technicalities' + static override title = t('dnc.technicalities.title')`Technical Windows` + static override displayOrder = DISPLAY_ORDER.TECHNICALITIES @dependency private combatants!: Combatants @dependency private suggestions!: Suggestions @@ -70,7 +70,7 @@ export default class Technicalities extends Module { private badDevilments: number = 0 private lastDevilmentTimestamp: number = -1 - protected init() { + protected override init() { this.addEventHook('normalisedapplybuff', {to: 'player', abilityId: STATUSES.TECHNICAL_FINISH.id}, this.tryOpenWindow) this.addEventHook('normalisedapplybuff', {by: 'player', abilityId: STATUSES.TECHNICAL_FINISH.id}, this.countTechBuffs) this.addEventHook('removebuff', {to: 'player', abilityId: WINDOW_STATUSES}, this.tryCloseWindow) @@ -263,7 +263,7 @@ export default class Technicalities extends Module { })) } - output() { + override output() { const otherDancers = this.history.filter(window => window.containsOtherDNC).length > 0 return {otherDancers && ( diff --git a/src/parser/jobs/dnc/modules/Weaving.ts b/src/parser/jobs/dnc/modules/Weaving.ts index 42f26256a2..93495ebf89 100644 --- a/src/parser/jobs/dnc/modules/Weaving.ts +++ b/src/parser/jobs/dnc/modules/Weaving.ts @@ -13,15 +13,15 @@ const FINISH_IDS: Array = [ ] export default class Weaving extends CoreWeaving { - static displayOrder = DISPLAY_ORDER.WEAVING + static override displayOrder = DISPLAY_ORDER.WEAVING private FINISH_IDS: number[] = [] - protected init() { + protected override init() { super.init() this.FINISH_IDS = FINISH_IDS.map(actionKey => this.data.actions[actionKey].id) } - isBadWeave(weave: WeaveInfo) { + override isBadWeave(weave: WeaveInfo) { const leadingGcd = weave.leadingGcdEvent as CastEvent if (leadingGcd && leadingGcd.ability && this.FINISH_IDS.includes(leadingGcd.ability.guid)) { diff --git a/src/parser/jobs/drg/modules/BattleLitany.tsx b/src/parser/jobs/drg/modules/BattleLitany.tsx index d03b325c9d..d5297e0113 100644 --- a/src/parser/jobs/drg/modules/BattleLitany.tsx +++ b/src/parser/jobs/drg/modules/BattleLitany.tsx @@ -46,9 +46,9 @@ class BLWindow { // DRG litanies will be marked. // Used DNC technical step as basis for this module. export default class BattleLitany extends Module { - static handle = 'battlelitany' - static title = t('drg.battlelitany.title')`Battle Litany` - static displayOrder = DISPLAY_ORDER.BATTLE_LITANY + static override handle = 'battlelitany' + static override title = t('drg.battlelitany.title')`Battle Litany` + static override displayOrder = DISPLAY_ORDER.BATTLE_LITANY @dependency private timeline!: Timeline @dependency private data!: Data @@ -56,7 +56,7 @@ export default class BattleLitany extends Module { private history: BLWindow[] = [] private lastLitFalloffTime: number = 0 - protected init() { + protected override init() { this.addEventHook('normalisedapplybuff', {to: 'player', abilityId: STATUSES.BATTLE_LITANY.id}, this.tryOpenWindow) this.addEventHook('normalisedapplybuff', {by: 'player', abilityId: STATUSES.BATTLE_LITANY.id}, this.countLitBuffs) this.addEventHook('removebuff', {to: 'player', abilityId: WINDOW_STATUSES}, this.tryCloseWindow) @@ -176,7 +176,7 @@ export default class BattleLitany extends Module { // just output, no suggestions for now. // open to maybe putting a suggestion not to clip into other DRG windows? hitting everyone with litany? - output() { + override output() { const tableData = this.history.map(window => { const end = window.end != null ? window.end - this.parser.fight.start_time : diff --git a/src/parser/jobs/drg/modules/Buffs.tsx b/src/parser/jobs/drg/modules/Buffs.tsx index 2bf6708751..f957b33a3b 100644 --- a/src/parser/jobs/drg/modules/Buffs.tsx +++ b/src/parser/jobs/drg/modules/Buffs.tsx @@ -51,8 +51,8 @@ const OTHER_ACTION_COLOR: string = '#660000' const MIN_COT_HITS: number = 3 export default class Buffs extends Module { - static handle = 'buffs' - static title = t('drg.buffs.title')`Buffs` + static override handle = 'buffs' + static override title = t('drg.buffs.title')`Buffs` private badLifeSurges: number = 0 private fifthGcd: boolean = false @@ -67,7 +67,7 @@ export default class Buffs extends Module { @dependency private data!: Data @dependency private statistics!: Statistics - init() { + override init() { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('complete', this.onComplete) this.addEventHook('applybuff', {by: 'player', abilityId: STATUSES.RIGHT_EYE_SOLO.id}, () => this.soloDragonSight = true) diff --git a/src/parser/jobs/drg/modules/DragonSight.tsx b/src/parser/jobs/drg/modules/DragonSight.tsx index d70a351c10..1bfd53f885 100644 --- a/src/parser/jobs/drg/modules/DragonSight.tsx +++ b/src/parser/jobs/drg/modules/DragonSight.tsx @@ -22,9 +22,9 @@ const SHORT_WINDOW_FAULT = { } export default class DragonSight extends BuffWindowModule { - static handle = 'dragonsight' - static title = t('drg.dragonsight.title')`Dragon Sight` - static displayOrder = DISPLAY_ORDER.DRAGON_SIGHT + static override handle = 'dragonsight' + static override title = t('drg.dragonsight.title')`Dragon Sight` + static override displayOrder = DISPLAY_ORDER.DRAGON_SIGHT buffAction = ACTIONS.DRAGON_SIGHT buffStatus = STATUSES.RIGHT_EYE @@ -32,7 +32,7 @@ export default class DragonSight extends BuffWindowModule { deathTimes: number[] = [] - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 8, suggestionContent: Try to land at least 8 GCDs during every window. @@ -44,7 +44,7 @@ export default class DragonSight extends BuffWindowModule { }, } - trackedActions = { + override trackedActions = { icon: ACTIONS.DRAGON_SIGHT.icon, actions: [ { @@ -74,7 +74,7 @@ export default class DragonSight extends BuffWindowModule { }, } - protected init() { + protected override init() { super.init() this.addEventHook('death', {to: 'player'}, this.onDeath) @@ -84,7 +84,7 @@ export default class DragonSight extends BuffWindowModule { this.deathTimes.push(event.timestamp) } - protected reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { + protected override reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { const windowDurationMillis = this.buffStatus.duration * 1000 const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) @@ -97,7 +97,7 @@ export default class DragonSight extends BuffWindowModule { } // ok so we don't want to penalize people for when their buff ends early because their partner died - protected getBaselineExpectedGCDs(buffWindow: BuffWindowState): number { + protected override getBaselineExpectedGCDs(buffWindow: BuffWindowState): number { if (this.buffTargetDied(buffWindow) === SHORT_WINDOW_FAULT.PARTNER) { // you get what you get and that's ok in this case return buffWindow.gcds @@ -113,7 +113,7 @@ export default class DragonSight extends BuffWindowModule { } // adjust expected tracked gcds for partner dying - protected changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState): number { + protected override changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState): number { if (this.buffTargetDied(buffWindow) === SHORT_WINDOW_FAULT.PARTNER) { return -1 } @@ -123,7 +123,7 @@ export default class DragonSight extends BuffWindowModule { // adjust highlighting for partner dying // if partner dies, we reduce expected to 0 but still highlight a 0 in the table - protected changeComparisonClassLogic(buffWindow: BuffWindowState) { + protected override changeComparisonClassLogic(buffWindow: BuffWindowState) { if (this.buffTargetDied(buffWindow) === SHORT_WINDOW_FAULT.PARTNER) { return (actual: number, expected?: number) => { if (!isDefined(expected) || actual <= expected) { @@ -135,7 +135,7 @@ export default class DragonSight extends BuffWindowModule { } // check for a truncated window if not rushing, which would indicate that the tether partner (or the DRG) died - protected getBuffWindowNotes(buffWindow: BuffWindowState): JSX.Element | undefined { + protected override getBuffWindowNotes(buffWindow: BuffWindowState): JSX.Element | undefined { const fault = this.buffTargetDied(buffWindow) if (fault === SHORT_WINDOW_FAULT.PARTNER) { return Partner Died diff --git a/src/parser/jobs/drg/modules/Drift.tsx b/src/parser/jobs/drg/modules/Drift.tsx index aab7ece28d..762a958f12 100644 --- a/src/parser/jobs/drg/modules/Drift.tsx +++ b/src/parser/jobs/drg/modules/Drift.tsx @@ -38,10 +38,10 @@ class DriftWindow { } export default class Drift extends Module { - static debug = false - static handle = 'drift' - static title = t('drg.drift.title')`Ability Drift` - static displayOrder = DISPLAY_ORDER.DRIFT + static override debug = false + static override handle = 'drift' + static override title = t('drg.drift.title')`Ability Drift` + static override displayOrder = DISPLAY_ORDER.DRIFT @dependency private downtime!: Downtime @dependency private timeline!: Timeline @@ -53,7 +53,7 @@ export default class Drift extends Module { [ACTIONS.GEIRSKOGUL.id]: new DriftWindow(ACTIONS.GEIRSKOGUL.id, this.parser.fight.start_time), } - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player', abilityId: DRIFT_ABILITIES}, this.onDriftableCast) } @@ -129,7 +129,7 @@ export default class Drift extends Module { } - output() { + override output() { // Nothing to show if (!this.driftedWindows.length) { return } diff --git a/src/parser/jobs/drg/modules/LanceCharge.tsx b/src/parser/jobs/drg/modules/LanceCharge.tsx index a0038ac376..90ef27ec4e 100644 --- a/src/parser/jobs/drg/modules/LanceCharge.tsx +++ b/src/parser/jobs/drg/modules/LanceCharge.tsx @@ -9,14 +9,14 @@ import React from 'react' import DISPLAY_ORDER from './DISPLAY_ORDER' export default class LanceCharge extends BuffWindowModule { - static handle: string = 'lancecharge' - static title = t('drg.lancecharge.title')`Lance Charge` - static displayOrder = DISPLAY_ORDER.LANCE_CHARGE + static override handle: string = 'lancecharge' + static override title = t('drg.lancecharge.title')`Lance Charge` + static override displayOrder = DISPLAY_ORDER.LANCE_CHARGE buffAction = ACTIONS.LANCE_CHARGE buffStatus = STATUSES.LANCE_CHARGE - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 8, suggestionContent: Try to land at least 8 GCDs during every window. @@ -28,7 +28,7 @@ export default class LanceCharge extends BuffWindowModule { }, } - trackedActions = { + override trackedActions = { icon: ACTIONS.LANCE_CHARGE.icon, actions: [ { @@ -58,7 +58,7 @@ export default class LanceCharge extends BuffWindowModule { }, } - protected reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { + protected override reduceTrackedActionsEndOfFight(buffWindow: BuffWindowState): number { const windowDurationMillis = this.buffStatus.duration * 1000 const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) diff --git a/src/parser/jobs/drg/modules/OGCDDowntime.ts b/src/parser/jobs/drg/modules/OGCDDowntime.ts index 57ebc38061..1ab3f51d65 100644 --- a/src/parser/jobs/drg/modules/OGCDDowntime.ts +++ b/src/parser/jobs/drg/modules/OGCDDowntime.ts @@ -14,8 +14,8 @@ const JUMP_FIRST_USE_OFFSET = 24500 const LIFE_SURGE_FIRST_USE_OFFSET = 22000 export default class OGCDDowntime extends CooldownDowntime { - defaultFirstUseOffset = BUFF_FIRST_USE_OFFSET - trackedCds = [ + override defaultFirstUseOffset = BUFF_FIRST_USE_OFFSET + override trackedCds = [ { cooldowns: [ACTIONS.HIGH_JUMP], firstUseOffset: JUMP_FIRST_USE_OFFSET, diff --git a/src/parser/jobs/drg/modules/Procs.tsx b/src/parser/jobs/drg/modules/Procs.tsx index e6c4b9cfaa..d89a93b0a4 100644 --- a/src/parser/jobs/drg/modules/Procs.tsx +++ b/src/parser/jobs/drg/modules/Procs.tsx @@ -20,7 +20,7 @@ export default class Procs extends CoreProcs { }, ] - protected addJobSpecificSuggestions(): void { + protected override addJobSpecificSuggestions(): void { const droppedFang = this.getDropCountForStatus(this.data.statuses.SHARPER_FANG_AND_CLAW.id) const droppedWheeling = this.getDropCountForStatus(this.data.statuses.ENHANCED_WHEELING_THRUST.id) const droppedMirage = this.getDropCountForStatus(this.data.statuses.DIVE_READY.id) diff --git a/src/parser/jobs/drk/modules/BloodWeapon.tsx b/src/parser/jobs/drk/modules/BloodWeapon.tsx index 1da9123696..3ea5e5d736 100644 --- a/src/parser/jobs/drk/modules/BloodWeapon.tsx +++ b/src/parser/jobs/drk/modules/BloodWeapon.tsx @@ -9,14 +9,14 @@ import React from 'react' import {DISPLAY_ORDER} from './DISPLAY_ORDER' export class BloodWeapon extends BuffWindowModule { - static handle = 'bloodweapon' - static title = t('drk.bloodweapon.title')`Blood Weapon Usage` - static displayOrder = DISPLAY_ORDER.BLOOD_WEAPON + static override handle = 'bloodweapon' + static override title = t('drk.bloodweapon.title')`Blood Weapon Usage` + static override displayOrder = DISPLAY_ORDER.BLOOD_WEAPON buffAction = ACTIONS.BLOOD_WEAPON buffStatus = STATUSES.BLOOD_WEAPON - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 5, suggestionContent: Try to land 5 GCDs during every window. If you cannot do this with full uptime and no clipping, consider adjusting your gearset for more Skill Speed. diff --git a/src/parser/jobs/drk/modules/Cooldowns.ts b/src/parser/jobs/drk/modules/Cooldowns.ts index 56a8e404d8..2fb2a50f60 100644 --- a/src/parser/jobs/drk/modules/Cooldowns.ts +++ b/src/parser/jobs/drk/modules/Cooldowns.ts @@ -1,7 +1,7 @@ import CoreCooldowns, {CooldownOrderItem} from 'parser/core/modules/Cooldowns' export class Cooldowns extends CoreCooldowns { - static cooldownOrder: CooldownOrderItem[] = [ + static override cooldownOrder: CooldownOrderItem[] = [ // Buffs 'BLOOD_WEAPON', 'DELIRIUM', diff --git a/src/parser/jobs/drk/modules/Darkside.tsx b/src/parser/jobs/drk/modules/Darkside.tsx index d84a3295e7..0c8dfb2746 100644 --- a/src/parser/jobs/drk/modules/Darkside.tsx +++ b/src/parser/jobs/drk/modules/Darkside.tsx @@ -25,9 +25,9 @@ interface DarksideDrop { } export class Darkside extends Module { - static handle = 'Darkside' + static override handle = 'Darkside' - static title = t('drk.darkside.title')`Darkside` + static override title = t('drk.darkside.title')`Darkside` @dependency private checklist!: Checklist @dependency private death!: Death @@ -36,7 +36,7 @@ export class Darkside extends Module { private lastEventTime: number | null = null private darksideDrops: DarksideDrop[] = [] - protected init() { + protected override init() { this.addEventHook('normaliseddamage', {by: 'player', abilityId: Object.keys(DARKSIDE_EXTENSION).map(Number)}, this.updateDarkside) this.addEventHook('death', {to: 'player'}, this.onDeath) this.addEventHook('raise', {to: 'player'}, this.onRaise) @@ -100,7 +100,7 @@ export class Darkside extends Module { })) } - output() { + override output() { if (this.darksideDrops.length > 0) { return ( diff --git a/src/parser/jobs/drk/modules/Delirium.tsx b/src/parser/jobs/drk/modules/Delirium.tsx index 0c0de603b3..1d110a93d7 100644 --- a/src/parser/jobs/drk/modules/Delirium.tsx +++ b/src/parser/jobs/drk/modules/Delirium.tsx @@ -9,14 +9,14 @@ import React from 'react' import {DISPLAY_ORDER} from './DISPLAY_ORDER' export class Delirium extends BuffWindowModule { - static handle = 'delirium' - static title = t('drk.delirium.title')`Delirium Usage` - static displayOrder = DISPLAY_ORDER.DELIRIUM + static override handle = 'delirium' + static override title = t('drk.delirium.title')`Delirium Usage` + static override displayOrder = DISPLAY_ORDER.DELIRIUM buffAction = ACTIONS.DELIRIUM buffStatus = STATUSES.DELIRIUM - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 5, suggestionContent: Try to land 5 GCDs during every window. If you cannot do this with full uptime and no clipping, consider adjusting your gearset for more Skill Speed. @@ -26,7 +26,7 @@ export class Delirium extends BuffWindowModule { 3: SEVERITY.MAJOR, }, } - requiredGCDs = { + override requiredGCDs = { icon: ACTIONS.BLOODSPILLER.icon, actions: [ ACTIONS.BLOODSPILLER, diff --git a/src/parser/jobs/drk/modules/EsteemTimeline.ts b/src/parser/jobs/drk/modules/EsteemTimeline.ts index 52b3f002a2..9828787adf 100644 --- a/src/parser/jobs/drk/modules/EsteemTimeline.ts +++ b/src/parser/jobs/drk/modules/EsteemTimeline.ts @@ -2,6 +2,6 @@ import ACTIONS from 'data/ACTIONS' import CorePetTimeline from 'parser/core/modules/PetTimeline' export class EsteemTimeline extends CorePetTimeline { - protected timelineGroupName = 'Esteem' - protected timelineSummonAction = ACTIONS.LIVING_SHADOW.id + protected override timelineGroupName = 'Esteem' + protected override timelineSummonAction = ACTIONS.LIVING_SHADOW.id } diff --git a/src/parser/jobs/drk/modules/OGCDDowntime.ts b/src/parser/jobs/drk/modules/OGCDDowntime.ts index cf207822fb..9549a4f88c 100644 --- a/src/parser/jobs/drk/modules/OGCDDowntime.ts +++ b/src/parser/jobs/drk/modules/OGCDDowntime.ts @@ -4,8 +4,8 @@ import {CooldownDowntime} from 'parser/core/modules/CooldownDowntime' const DEFAULT_FIRST_USE_OFFSET = 17500 export class OGCDDowntime extends CooldownDowntime { - defaultFirstUseOffset = DEFAULT_FIRST_USE_OFFSET - trackedCds = [ + override defaultFirstUseOffset = DEFAULT_FIRST_USE_OFFSET + override trackedCds = [ { cooldowns: [ACTIONS.BLOOD_WEAPON], firstUseOffset: 2500, diff --git a/src/parser/jobs/drk/modules/Statuses.ts b/src/parser/jobs/drk/modules/Statuses.ts index 2c9227af78..e036838162 100644 --- a/src/parser/jobs/drk/modules/Statuses.ts +++ b/src/parser/jobs/drk/modules/Statuses.ts @@ -2,7 +2,7 @@ import STATUSES from 'data/STATUSES' import CoreStatuses from 'parser/core/modules/Statuses' export class Statuses extends CoreStatuses { - static statusesStackMapping = { + static override statusesStackMapping = { [STATUSES.WALKING_DEAD.id]: STATUSES.LIVING_DEAD.id, } } diff --git a/src/parser/jobs/gnb/modules/Ammo.tsx b/src/parser/jobs/gnb/modules/Ammo.tsx index 560f76a119..63c8a39892 100644 --- a/src/parser/jobs/gnb/modules/Ammo.tsx +++ b/src/parser/jobs/gnb/modules/Ammo.tsx @@ -84,9 +84,9 @@ class OvercapState { } export default class Ammo extends Module { - static handle = 'ammo' - static title = t('gnb.ammo.title')`Cartridge Timeline` - static displayMode = DISPLAY_MODE.FULL + static override handle = 'ammo' + static override title = t('gnb.ammo.title')`Cartridge Timeline` + static override displayMode = DISPLAY_MODE.FULL private ammo = 0 private currentAbility = '' @@ -107,7 +107,7 @@ export default class Ammo extends Module { @dependency private checklist!: Checklist @dependency private suggestions!: Suggestions - protected init() { + protected override init() { this.addEventHook('init', this.pushToHistory) this.addEventHook( 'cast', @@ -304,7 +304,7 @@ export default class Ammo extends Module { } - output() { + override output() { const cartridgeWastePanels = [] cartridgeWastePanels.push({ key: 'key-wastebysource', diff --git a/src/parser/jobs/gnb/modules/AmmoCombo.tsx b/src/parser/jobs/gnb/modules/AmmoCombo.tsx index 64536c726d..7e2d9521a3 100644 --- a/src/parser/jobs/gnb/modules/AmmoCombo.tsx +++ b/src/parser/jobs/gnb/modules/AmmoCombo.tsx @@ -59,8 +59,8 @@ class GnashingComboState { } export default class AmmoCombo extends Module { - static handle = 'Gnashing Fang Combo issues' - static debug = false + static override handle = 'Gnashing Fang Combo issues' + static override debug = false @dependency private checklist!: Checklist @dependency private timeline!: Timeline @@ -75,7 +75,7 @@ export default class AmmoCombo extends Module { return _.last(this.gnashingComboWindows) } - protected init() { + protected override init() { this.addEventHook('cast', { by: 'player', @@ -186,7 +186,7 @@ export default class AmmoCombo extends Module { })) } - output() { + override output() { if (this.errors !== 0) { diff --git a/src/parser/jobs/gnb/modules/Combos.tsx b/src/parser/jobs/gnb/modules/Combos.tsx index f6a638968c..bb9507c2b8 100644 --- a/src/parser/jobs/gnb/modules/Combos.tsx +++ b/src/parser/jobs/gnb/modules/Combos.tsx @@ -3,5 +3,5 @@ import CoreCombos from 'parser/core/modules/Combos' export default class Combos extends CoreCombos { // Overrides - static suggestionIcon = ACTIONS.BRUTAL_SHELL.icon + static override suggestionIcon = ACTIONS.BRUTAL_SHELL.icon } diff --git a/src/parser/jobs/gnb/modules/Cooldowns.tsx b/src/parser/jobs/gnb/modules/Cooldowns.tsx index 3c37ab06a7..5b19880eaf 100644 --- a/src/parser/jobs/gnb/modules/Cooldowns.tsx +++ b/src/parser/jobs/gnb/modules/Cooldowns.tsx @@ -1,7 +1,7 @@ import CoreCooldowns, {CooldownOrderItem} from 'parser/core/modules/Cooldowns' export default class Cooldowns extends CoreCooldowns { - static cooldownOrder: CooldownOrderItem[] = [ + static override cooldownOrder: CooldownOrderItem[] = [ // Stance 'ROYAL_GUARD', diff --git a/src/parser/jobs/gnb/modules/NoMercy.tsx b/src/parser/jobs/gnb/modules/NoMercy.tsx index d44420a213..4e15cd260b 100644 --- a/src/parser/jobs/gnb/modules/NoMercy.tsx +++ b/src/parser/jobs/gnb/modules/NoMercy.tsx @@ -35,15 +35,15 @@ const EXPECTED_USES = { } export default class NoMercy extends BuffWindowModule { - static handle = 'nomercy' - static title = t('gnb.nomercy.title')`No Mercy Windows` + static override handle = 'nomercy' + static override title = t('gnb.nomercy.title')`No Mercy Windows` buffAction = ACTIONS.NO_MERCY buffStatus = STATUSES.NO_MERCY - rotationTableNotesColumnHeader = Bloodfest Used + override rotationTableNotesColumnHeader = Bloodfest Used - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: EXPECTED_USES.GCD, suggestionContent: Try to land 9 GCDs during every window. A 20 second duration is sufficient @@ -52,7 +52,7 @@ export default class NoMercy extends BuffWindowModule { severityTiers: SEVERITIES.TOO_FEW_GCDS, } - trackedActions = { + override trackedActions = { icon: ACTIONS.NO_MERCY.icon, actions: [ { @@ -96,7 +96,7 @@ export default class NoMercy extends BuffWindowModule { } - changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction) { + override changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction) { const Id = action.action.id if (Id === ACTIONS.BURST_STRIKE.id) { @@ -113,9 +113,8 @@ export default class NoMercy extends BuffWindowModule { return 0 } - getBuffWindowNotes(buffWindow: BuffWindowState) { + override getBuffWindowNotes(buffWindow: BuffWindowState) { return buffWindow.rotation.find(cast => cast.ability.guid === ACTIONS.BLOODFEST.id) ? Yes : No } - } diff --git a/src/parser/jobs/gnb/modules/Tincture.tsx b/src/parser/jobs/gnb/modules/Tincture.tsx index c17ea4ef6e..bd7cd01a09 100644 --- a/src/parser/jobs/gnb/modules/Tincture.tsx +++ b/src/parser/jobs/gnb/modules/Tincture.tsx @@ -4,9 +4,9 @@ import {Tincture as CoreTincture} from 'parser/core/modules/Tincture' import React from 'react' export default class Tincture extends CoreTincture { - buffAction = this.data.actions.INFUSION_STR + override buffAction = this.data.actions.INFUSION_STR - trackedActions = { + override trackedActions = { icon: this.data.actions.INFUSION_STR.icon, actions: [ { diff --git a/src/parser/jobs/mch/modules/Drift.tsx b/src/parser/jobs/mch/modules/Drift.tsx index 3da6e5941e..ad23bbde59 100644 --- a/src/parser/jobs/mch/modules/Drift.tsx +++ b/src/parser/jobs/mch/modules/Drift.tsx @@ -50,8 +50,8 @@ class DriftWindow { } export default class Drift extends Module { - static handle = 'drift' - static title = t('mch.drift.title')`GCD Drift` + static override handle = 'drift' + static override title = t('mch.drift.title')`GCD Drift` @dependency private downtime!: Downtime @@ -62,7 +62,7 @@ export default class Drift extends Module { [ACTIONS.DRILL.id]: new DriftWindow(ACTIONS.DRILL.id, this.parser.fight.start_time), } - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player', abilityId: DRIFT_GCDS}, this.onDriftableCast) this.addEventHook('cast', {by: 'player'}, this.onCast) } @@ -99,7 +99,7 @@ export default class Drift extends Module { } } - output() { + override output() { // Nothing to show if (!this.driftedWindows.length) { return } diff --git a/src/parser/jobs/mch/modules/QueenTimeline.ts b/src/parser/jobs/mch/modules/QueenTimeline.ts index 8b53577596..df00ee5376 100644 --- a/src/parser/jobs/mch/modules/QueenTimeline.ts +++ b/src/parser/jobs/mch/modules/QueenTimeline.ts @@ -2,6 +2,6 @@ import ACTIONS from 'data/ACTIONS' import CorePetTimeline from 'parser/core/modules/PetTimeline' export default class QueenTimeline extends CorePetTimeline { - protected timelineGroupName = 'Automaton Queen' - protected timelineSummonAction = ACTIONS.AUTOMATON_QUEEN.id + protected override timelineGroupName = 'Automaton Queen' + protected override timelineSummonAction = ACTIONS.AUTOMATON_QUEEN.id } diff --git a/src/parser/jobs/mch/modules/Reassemble.tsx b/src/parser/jobs/mch/modules/Reassemble.tsx index fd734fcd07..06fa7f488d 100644 --- a/src/parser/jobs/mch/modules/Reassemble.tsx +++ b/src/parser/jobs/mch/modules/Reassemble.tsx @@ -26,7 +26,7 @@ const OTHER_GCDS: Array = [ ] export default class Reassemble extends Module { - static handle = 'reassemble' + static override handle = 'reassemble' @dependency private combatants!: Combatants @dependency private data!: Data @@ -39,7 +39,7 @@ export default class Reassemble extends Module { private REASSEMBLE_GCDS: number[] = [] private OTHER_GCDS: number[] = [] - protected init() { + protected override init() { this.REASSEMBLE_GCDS = REASSEMBLE_GCDS.map(key => this.data.actions[key].id) this.OTHER_GCDS = OTHER_GCDS.map(key => this.data.actions[key].id) diff --git a/src/parser/jobs/mch/modules/Tincture.tsx b/src/parser/jobs/mch/modules/Tincture.tsx index 1486b4ed07..d1fc7e8eb4 100644 --- a/src/parser/jobs/mch/modules/Tincture.tsx +++ b/src/parser/jobs/mch/modules/Tincture.tsx @@ -12,11 +12,11 @@ const TINCTURE_BUFFER = 2500 export default class Tincture extends CoreTincture { @dependency private downtime!: Downtime - buffAction = this.data.actions.INFUSION_DEX + override buffAction = this.data.actions.INFUSION_DEX - petActions = [this.data.actions.PILE_BUNKER] + override petActions = [this.data.actions.PILE_BUNKER] - trackedActions = { + override trackedActions = { icon: this.data.actions.INFUSION_DEX.icon, actions: [ { @@ -47,7 +47,7 @@ export default class Tincture extends CoreTincture { }, } - changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction): number { + override changeExpectedTrackedActionClassLogic(buffWindow: BuffWindowState, action: BuffWindowTrackedAction): number { const bufferedWindowStart = buffWindow.start - TINCTURE_BUFFER if (action.action === this.data.actions.PILE_BUNKER) { diff --git a/src/parser/jobs/mch/modules/Weaving.ts b/src/parser/jobs/mch/modules/Weaving.ts index 35f45a1163..7ebe4c4907 100644 --- a/src/parser/jobs/mch/modules/Weaving.ts +++ b/src/parser/jobs/mch/modules/Weaving.ts @@ -10,12 +10,12 @@ const HYPERCHARGE_ACTION_IDS: Array = [ export default class Weaving extends CoreWeaving { private HYPERCHARGE_ACTION_IDS: number[] = [] - protected init() { + protected override init() { super.init() this.HYPERCHARGE_ACTION_IDS = HYPERCHARGE_ACTION_IDS.map(actionKey => this.data.actions[actionKey].id) } - isBadWeave(weave: WeaveInfo) { + override isBadWeave(weave: WeaveInfo) { const leadingGcd = weave.leadingGcdEvent as CastEvent if (leadingGcd && leadingGcd.ability && this.HYPERCHARGE_ACTION_IDS.includes(leadingGcd.ability.guid)) { diff --git a/src/parser/jobs/mnk/modules/Cooldowns.ts b/src/parser/jobs/mnk/modules/Cooldowns.ts index 4ecc025529..7871ce1b8e 100644 --- a/src/parser/jobs/mnk/modules/Cooldowns.ts +++ b/src/parser/jobs/mnk/modules/Cooldowns.ts @@ -1,7 +1,7 @@ import CoreCooldowns, {CooldownOrderItem} from 'parser/core/modules/Cooldowns' export default class Cooldowns extends CoreCooldowns { - static cooldownOrder: CooldownOrderItem[] = [ + static override cooldownOrder: CooldownOrderItem[] = [ { name: 'Chakras', actions: [ diff --git a/src/parser/jobs/mnk/modules/Demolish.tsx b/src/parser/jobs/mnk/modules/Demolish.tsx index 743084c00d..25b8caae65 100644 --- a/src/parser/jobs/mnk/modules/Demolish.tsx +++ b/src/parser/jobs/mnk/modules/Demolish.tsx @@ -18,9 +18,9 @@ const SEVERITIES = { } export default class Demolish extends DoTs { - static handle = 'demolish' + static override handle = 'demolish' - static statusesToTrack = [ + static override statusesToTrack = [ STATUSES.DEMOLISH.id, ] @@ -28,7 +28,7 @@ export default class Demolish extends DoTs { @dependency private data!: Data @dependency private suggestions!: Suggestions - addChecklistRules() { + override addChecklistRules() { this.checklist.add(new Rule({ name: Keep Demolish up, description: @@ -47,7 +47,7 @@ export default class Demolish extends DoTs { })) } - addClippingSuggestions(clip: TODO) { + override addClippingSuggestions(clip: TODO) { this.suggestions.add(new TieredSuggestion({ icon: this.data.actions.DEMOLISH.icon, content: diff --git a/src/parser/jobs/mnk/modules/Fists.tsx b/src/parser/jobs/mnk/modules/Fists.tsx index 5e589a0f26..875f670ef0 100644 --- a/src/parser/jobs/mnk/modules/Fists.tsx +++ b/src/parser/jobs/mnk/modules/Fists.tsx @@ -52,9 +52,9 @@ export class Fist { } export default class Fists extends Module { - static handle = 'fists' - static title = t('mnk.fists.title')`Fists` - static displayOrder = DISPLAY_ORDER.FISTS + static override handle = 'fists' + static override title = t('mnk.fists.title')`Fists` + static override displayOrder = DISPLAY_ORDER.FISTS @dependency private combatants!: Combatants @dependency private data!: Data @@ -68,7 +68,7 @@ export default class Fists extends Module { // if there's a pre-start applybuff, it'll get corrected, and if not, it's already correct private activeFist: Fist = new Fist(this.data.statuses.FISTS_OF_FIRE.id, this.parser.fight.start_time) - protected init(): void { + protected override init(): void { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('applybuff', {to: 'player', abilityId: FISTS}, this.onGain) this.addEventHook('removebuff', {to: 'player', abilityId: FISTS}, this.onRemove) diff --git a/src/parser/jobs/mnk/modules/Forms.tsx b/src/parser/jobs/mnk/modules/Forms.tsx index 7fbccb0a9a..ac415c697b 100644 --- a/src/parser/jobs/mnk/modules/Forms.tsx +++ b/src/parser/jobs/mnk/modules/Forms.tsx @@ -25,7 +25,7 @@ const OPO_OPO_SKILLS = [ ] export default class Forms extends Module { - static handle = 'forms' + static override handle = 'forms' @dependency private combatants!: Combatants @dependency private data!: Data @@ -41,7 +41,7 @@ export default class Forms extends Module { private lastFormDropped?: number private perfectlyFresh?: number - protected init(): void { + protected override init(): void { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('applybuff', {to: 'player', abilityId: FORMS}, this.onGain) this.addEventHook('refreshbuff', {to: 'player', abilityId: FORMS}, this.onGain) diff --git a/src/parser/jobs/mnk/modules/MultiHitSkills.tsx b/src/parser/jobs/mnk/modules/MultiHitSkills.tsx index b3ccbc68b3..73c556d2e5 100644 --- a/src/parser/jobs/mnk/modules/MultiHitSkills.tsx +++ b/src/parser/jobs/mnk/modules/MultiHitSkills.tsx @@ -5,7 +5,7 @@ import {Data} from 'parser/core/modules/Data' import {NormalisedDamageEvent} from 'parser/core/modules/NormalisedEvents' export default class AoE extends AoEUsages { - static handle = 'aoe' + static override handle = 'aoe' @dependency private combatants!: Combatants @dependency private data!: Data @@ -39,7 +39,7 @@ export default class AoE extends AoEUsages { }, ] - protected adjustMinTargets(event: NormalisedDamageEvent, minTargets: number): number { + protected override adjustMinTargets(event: NormalisedDamageEvent, minTargets: number): number { const action = this.data.getAction(event.ability.guid) // How in the fuck did we even get here tbh diff --git a/src/parser/jobs/mnk/modules/OGCDDowntime.ts b/src/parser/jobs/mnk/modules/OGCDDowntime.ts index e17480b724..e80344eaec 100644 --- a/src/parser/jobs/mnk/modules/OGCDDowntime.ts +++ b/src/parser/jobs/mnk/modules/OGCDDowntime.ts @@ -12,8 +12,8 @@ const DEFAULT_AVERAGE_DOWNTIME = 2425 const MAX_CHAKRA_DELAY_OFFSET = 16000 export default class OGCDDowntime extends CooldownDowntime { - defaultAllowedAverageDowntime = DEFAULT_AVERAGE_DOWNTIME - trackedCds = [ + override defaultAllowedAverageDowntime = DEFAULT_AVERAGE_DOWNTIME + override trackedCds = [ { cooldowns: [ACTIONS.BROTHERHOOD], firstUseOffset: 11000, diff --git a/src/parser/jobs/mnk/modules/PerfectBalance.tsx b/src/parser/jobs/mnk/modules/PerfectBalance.tsx index acdc2f3e0d..49cf58c465 100644 --- a/src/parser/jobs/mnk/modules/PerfectBalance.tsx +++ b/src/parser/jobs/mnk/modules/PerfectBalance.tsx @@ -27,10 +27,10 @@ interface Balance { } export default class PerfectBalance extends Module { - static debug = false - static handle = 'perfectBalance' - static title = t('mnk.pb.title')`Perfect Balance` - static displayOrder = DISPLAY_ORDER.PERFECT_BALANCE + static override debug = false + static override handle = 'perfectBalance' + static override title = t('mnk.pb.title')`Perfect Balance` + static override displayOrder = DISPLAY_ORDER.PERFECT_BALANCE @dependency private combatants!: Combatants @dependency private data!: Data @@ -39,7 +39,7 @@ export default class PerfectBalance extends Module { private current: Balance | undefined private history: Balance[] = [] - init() { + override init() { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('applybuffstack', {to: 'player', abilityId: PB_BAD_ACTIONS}, this.onStacc) this.addEventHook('removebuff', {to: 'player', abilityId: this.data.statuses.PERFECT_BALANCE.id}, this.onDrop) diff --git a/src/parser/jobs/mnk/modules/RiddleOfFire.tsx b/src/parser/jobs/mnk/modules/RiddleOfFire.tsx index 757ba3ca06..d22adf718b 100644 --- a/src/parser/jobs/mnk/modules/RiddleOfFire.tsx +++ b/src/parser/jobs/mnk/modules/RiddleOfFire.tsx @@ -86,9 +86,9 @@ class Riddle { } export default class RiddleOfFire extends Module { - static handle = 'riddleoffire' - static title = t('mnk.rof.title')`Riddle of Fire` - static displayOrder = DISPLAY_ORDER.RIDDLE_OF_FIRE + static override handle = 'riddleoffire' + static override title = t('mnk.rof.title')`Riddle of Fire` + static override displayOrder = DISPLAY_ORDER.RIDDLE_OF_FIRE @dependency private data!: Data @dependency private fists!: Fists @@ -98,7 +98,7 @@ export default class RiddleOfFire extends Module { private history: Riddle[] = [] private riddle?: Riddle - protected init(): void { + protected override init(): void { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook('removebuff', {by: 'player', abilityId: this.data.statuses.RIDDLE_OF_FIRE.id}, this.onDrop) this.addEventHook('complete', this.onComplete) @@ -211,7 +211,7 @@ export default class RiddleOfFire extends Module { } } - output() { + override output() { return SSS_MAX_WEAVES diff --git a/src/parser/jobs/pld/modules/Combos.tsx b/src/parser/jobs/pld/modules/Combos.tsx index 84b3b2c23c..faa39cec79 100644 --- a/src/parser/jobs/pld/modules/Combos.tsx +++ b/src/parser/jobs/pld/modules/Combos.tsx @@ -3,5 +3,5 @@ import CoreCombos from 'parser/core/modules/Combos' export default class Combos extends CoreCombos { // Overrides - static suggestionIcon = ACTIONS.ROYAL_AUTHORITY.icon + static override suggestionIcon = ACTIONS.ROYAL_AUTHORITY.icon } diff --git a/src/parser/jobs/pld/modules/Cooldowns.tsx b/src/parser/jobs/pld/modules/Cooldowns.tsx index 06b53a2d55..bb67d144da 100644 --- a/src/parser/jobs/pld/modules/Cooldowns.tsx +++ b/src/parser/jobs/pld/modules/Cooldowns.tsx @@ -1,7 +1,7 @@ import CoreCooldowns, {CooldownOrderItem} from 'parser/core/modules/Cooldowns' export default class Cooldowns extends CoreCooldowns { - static cooldownOrder: CooldownOrderItem[] = [ + static override cooldownOrder: CooldownOrderItem[] = [ // Buffs 'FIGHT_OR_FLIGHT', 'REQUIESCAT', diff --git a/src/parser/jobs/pld/modules/FightOrFlight.tsx b/src/parser/jobs/pld/modules/FightOrFlight.tsx index 773c3380b2..d3aa2c7739 100644 --- a/src/parser/jobs/pld/modules/FightOrFlight.tsx +++ b/src/parser/jobs/pld/modules/FightOrFlight.tsx @@ -90,8 +90,8 @@ class FightOrFlightErrorResult { } export default class FightOrFlight extends Module { - static handle = 'fightorflight' - static title = t('pld.fightorflight.title')`Fight Or Flight Usage` + static override handle = 'fightorflight' + static override title = t('pld.fightorflight.title')`Fight Or Flight Usage` @dependency private suggestions!: Suggestions @dependency private timeline!: Timeline @@ -103,7 +103,7 @@ export default class FightOrFlight extends Module { private fofRotations: TimestampRotationMap = {} private fofErrorResult = new FightOrFlightErrorResult() - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook( 'removebuff', @@ -255,7 +255,7 @@ export default class FightOrFlight extends Module { }, 0) } - output() { + override output() { return ([ [ACTIONS.COVER.id, {cast: -50}], ]) export default class Gauge extends CoreGauge { - static title = t('pld.gauge.title')`Oath Gauge Usage` + static override title = t('pld.gauge.title')`Oath Gauge Usage` @dependency private suggestions!: Suggestions @@ -28,7 +28,7 @@ export default class Gauge extends CoreGauge { chart: {label: 'Oath Gauge', color: JOBS.PALADIN.colour}, })) - protected init() { + protected override init() { super.init() this.addEventHook('cast', {by: 'player', abilityId: Array.from(OATH_MODIFIERS.keys())}, this.onOathModifying) diff --git a/src/parser/jobs/pld/modules/Goring.tsx b/src/parser/jobs/pld/modules/Goring.tsx index 822c4ee29b..fe42d2831d 100644 --- a/src/parser/jobs/pld/modules/Goring.tsx +++ b/src/parser/jobs/pld/modules/Goring.tsx @@ -17,16 +17,16 @@ const SEVERITIES = { } export default class Goring extends DoTs { - static handle = 'goring' + static override handle = 'goring' - static statusesToTrack = [ + static override statusesToTrack = [ STATUSES.GORING_BLADE.id, ] @dependency private checklist!: Checklist @dependency private suggestions!: Suggestions - addChecklistRules() { + override addChecklistRules() { this.checklist.add(new Rule({ name: 'Keep your Goring Blade up', description: @@ -43,7 +43,7 @@ export default class Goring extends DoTs { })) } - addClippingSuggestions(clip: TODO) { + override addClippingSuggestions(clip: TODO) { // Suggestion for Goring Blade DoT clipping this.suggestions.add(new TieredSuggestion({ icon: ACTIONS.GORING_BLADE.icon, diff --git a/src/parser/jobs/pld/modules/OGCDDowntime.tsx b/src/parser/jobs/pld/modules/OGCDDowntime.tsx index 1799ec59b6..b0841969d9 100644 --- a/src/parser/jobs/pld/modules/OGCDDowntime.tsx +++ b/src/parser/jobs/pld/modules/OGCDDowntime.tsx @@ -14,7 +14,7 @@ const FIRST_USE_OFFSET_FOF = 24000 const FIRST_USE_OFFSET_REQ = 31000 export default class OGCDDowntime extends CooldownDowntime { - static debug = false + static override debug = false trackedCds = [ { cooldowns: [ACTIONS.FIGHT_OR_FLIGHT], diff --git a/src/parser/jobs/pld/modules/Requiescat.tsx b/src/parser/jobs/pld/modules/Requiescat.tsx index 28e78ff9b0..603b669969 100644 --- a/src/parser/jobs/pld/modules/Requiescat.tsx +++ b/src/parser/jobs/pld/modules/Requiescat.tsx @@ -63,8 +63,8 @@ class RequiescatState { } export default class Requiescat extends Module { - static handle = 'requiescat' - static title = t('pld.requiescat.title')`Requiescat Usage` + static override handle = 'requiescat' + static override title = t('pld.requiescat.title')`Requiescat Usage` @dependency private suggestions!: Suggestions @dependency private timeline!: Timeline @@ -77,7 +77,7 @@ export default class Requiescat extends Module { return _.last(this.requiescats) } - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player'}, this.onCast) this.addEventHook( 'applybuff', @@ -186,7 +186,7 @@ export default class Requiescat extends Module { return rotation.reduce((sum, event) => sum + (event.ability.guid === abilityId ? 1 : 0), 0) } - output() { + override output() { return Each of your windows should contain {CONSTANTS.TOTAL_GCDS.EXPECTED} spells at minimum to maintain the alignment of your rotation. Most of the time, a window should consist of {CONSTANTS.HOLY_SPIRIT.EXPECTED + 1} casts of or and end with a cast of . However, under some circumstances, it is useful to drop one per minute in order to better align your rotation with buffs or mechanics. If you don't have a specific plan to do this, you should aim for {CONSTANTS.HOLY_SPIRIT.EXPECTED + 1} casts of per window. diff --git a/src/parser/jobs/pld/modules/Statuses.ts b/src/parser/jobs/pld/modules/Statuses.ts index d4e350d4a1..cf26f7d356 100644 --- a/src/parser/jobs/pld/modules/Statuses.ts +++ b/src/parser/jobs/pld/modules/Statuses.ts @@ -2,7 +2,7 @@ import STATUSES from 'data/STATUSES' import CoreStatuses from 'parser/core/modules/Statuses' export default class Statuses extends CoreStatuses { - static statusesStackMapping = { + static override statusesStackMapping = { [STATUSES.DIVINE_VEIL_PROC.id]: STATUSES.DIVINE_VEIL.id, } } diff --git a/src/parser/jobs/pld/modules/Tincture.tsx b/src/parser/jobs/pld/modules/Tincture.tsx index e4fac0ee7d..fe7ffa7d26 100644 --- a/src/parser/jobs/pld/modules/Tincture.tsx +++ b/src/parser/jobs/pld/modules/Tincture.tsx @@ -5,9 +5,9 @@ import {Tincture as CoreTincture} from 'parser/core/modules/Tincture' import React from 'react' export default class Tincture extends CoreTincture { - buffAction = this.data.actions.INFUSION_STR + override buffAction = this.data.actions.INFUSION_STR - expectedGCDs = { + override expectedGCDs = { expectedPerWindow: 13, suggestionContent: Try to land 13 GCDs during every window. @@ -19,7 +19,7 @@ export default class Tincture extends CoreTincture { }, } - trackedActions = { + override trackedActions = { icon: this.data.actions.INFUSION_STR.icon, actions: [ { diff --git a/src/parser/jobs/pld/modules/Weaving.tsx b/src/parser/jobs/pld/modules/Weaving.tsx index bd4da45053..386cba979b 100644 --- a/src/parser/jobs/pld/modules/Weaving.tsx +++ b/src/parser/jobs/pld/modules/Weaving.tsx @@ -15,7 +15,7 @@ export default class Weaving extends CoreWeaving { @dependency private combatants!: Combatants - isBadWeave(weave: WeaveInfo /*, maxWeaves*/) { + override isBadWeave(weave: WeaveInfo /*, maxWeaves*/) { // Check for if the homie opened on an oGCD for w/e reason if (weave.leadingGcdEvent.type != null && weave.leadingGcdEvent.ability != null) { // Requiescat makes spells instant cast, so they get 2 weaves by default. diff --git a/src/parser/jobs/rdm/modules/GeneralCDDowntime.ts b/src/parser/jobs/rdm/modules/GeneralCDDowntime.ts index e0b4122a35..45fb9307dc 100644 --- a/src/parser/jobs/rdm/modules/GeneralCDDowntime.ts +++ b/src/parser/jobs/rdm/modules/GeneralCDDowntime.ts @@ -4,9 +4,9 @@ import {CooldownDowntime} from 'parser/core/modules/CooldownDowntime' // Time that Jump deems ok for a OGCD to be down : ^) const DEFAULT_ALLOWED_DOWNTIME = 1000 export default class GeneralCDDowntime extends CooldownDowntime { - defaultAllowedAverageDowntime = DEFAULT_ALLOWED_DOWNTIME + override defaultAllowedAverageDowntime = DEFAULT_ALLOWED_DOWNTIME - trackedCds = [ + override trackedCds = [ // With the changes to Acceleration, we have a lot of instances where we should hold the skill. // Since it's not really possible to always know when during analysis we give a blanket grace of 20 and // hope that it's accurate enough diff --git a/src/parser/jobs/rdm/modules/Interrupts.tsx b/src/parser/jobs/rdm/modules/Interrupts.tsx index 7d6c14a6b2..f24bf2e357 100644 --- a/src/parser/jobs/rdm/modules/Interrupts.tsx +++ b/src/parser/jobs/rdm/modules/Interrupts.tsx @@ -4,7 +4,7 @@ import {Interrupts as CoreInterrupts} from 'parser/core/modules/Interrupts' import React from 'react' export class Interrupts extends CoreInterrupts { - suggestionContent = + override suggestionContent = Avoid interrupting casts by either prepositioning yourself or utilizing slidecasting where possible. If you need to move, try to save a use of or pool mana for a melee combo or . } diff --git a/src/parser/jobs/rdm/modules/Procs.tsx b/src/parser/jobs/rdm/modules/Procs.tsx index 46518bad56..822f18128a 100644 --- a/src/parser/jobs/rdm/modules/Procs.tsx +++ b/src/parser/jobs/rdm/modules/Procs.tsx @@ -25,7 +25,7 @@ const SEVERITY_MISSED_PROCS = { } export default class Procs extends CoreProcs { - static title = t('rdm.procs.title')`Proc Issues` + static override title = t('rdm.procs.title')`Proc Issues` /** * Procs that a RDM gains over a fight caused by the RDM themselves @@ -137,7 +137,7 @@ export default class Procs extends CoreProcs { } - protected addJobSpecificSuggestions() { + protected override addJobSpecificSuggestions() { const missedFire = this.getDropCountForStatus(this.data.statuses.VERFIRE_READY.id) const invulnFire = this.getInvulnCountForStatus(this.data.statuses.VERFIRE_READY.id) const overWrittenFire = this.getOverwriteCountForStatus(this.data.statuses.VERFIRE_READY.id) @@ -172,7 +172,7 @@ export default class Procs extends CoreProcs { })) } - output() { + override output() { const allInvulns = this.getInvulnsForStatus(this.data.statuses.VERFIRE_READY.id).concat(this.getInvulnsForStatus(this.data.statuses.VERSTONE_READY.id)).sort((a, b) => a.timestamp - b.timestamp) if (allInvulns.length === 0) { return } diff --git a/src/parser/jobs/sam/modules/Combos.ts b/src/parser/jobs/sam/modules/Combos.ts index 90706eff8e..46a51c3bd7 100644 --- a/src/parser/jobs/sam/modules/Combos.ts +++ b/src/parser/jobs/sam/modules/Combos.ts @@ -6,11 +6,11 @@ import CoreCombos, {ComboEvent} from 'parser/core/modules/Combos' import {NormalisedDamageEvent} from 'parser/core/modules/NormalisedEvents' export default class Combos extends CoreCombos { - static suggestionIcon = ACTIONS.HAKAZE.icon + static override suggestionIcon = ACTIONS.HAKAZE.icon @dependency private combatants!: Combatants - checkCombo(combo: ComboEvent, event: NormalisedDamageEvent) { + override checkCombo(combo: ComboEvent, event: NormalisedDamageEvent) { // If they've got Meikyo Shisui up, all combos are correct, and nothing combos together if (this.combatants.selected.hasStatus(STATUSES.MEIKYO_SHISUI.id) && (event.ability.guid !== ACTIONS.HAKAZE.id)) { this.fabricateComboEvent(event) diff --git a/src/parser/jobs/sam/modules/Meikyo.tsx b/src/parser/jobs/sam/modules/Meikyo.tsx index 820837d0e0..b321a3bf73 100644 --- a/src/parser/jobs/sam/modules/Meikyo.tsx +++ b/src/parser/jobs/sam/modules/Meikyo.tsx @@ -17,73 +17,67 @@ const SEN_GCDS = 3 const SAM_BASE_GCD_SPEED_BUFFED = 2180 export default class MeikyoShisui extends BuffWindowModule { - static displayOrder = DISPLAY_ORDER.MEIKYO - static handle = 'Meikyo' - static title = t('sam.ms.title')`Meikyo Shisui Windows` + static override displayOrder = DISPLAY_ORDER.MEIKYO + static override handle = 'Meikyo' + static override title = t('sam.ms.title')`Meikyo Shisui Windows` buffAction = ACTIONS.MEIKYO_SHISUI buffStatus = STATUSES.MEIKYO_SHISUI -expectedGCDs = { - expectedPerWindow: SEN_GCDS, - suggestionContent: - Try to land 3 GCDs during every window. , - severityTiers: { - 1: SEVERITY.MEDIUM, - 2: SEVERITY.MAJOR, - }, -} - -requiredGCDs = { - icon: ACTIONS.MEIKYO_SHISUI.icon, - actions: [ - // Single Target - ACTIONS.GEKKO, - ACTIONS.KASHA, - ACTIONS.YUKIKAZE, - - // AoE - ACTIONS.OKA, - ACTIONS.MANGETSU, - ], - suggestionContent: - GCDs used during should be limited to sen building skills. , - severityTiers: { - 1: SEVERITY.MAJOR, - }, - -} - -// override for consider action. - -considerAction(action: Action) { - - if (ONLY_SHOW.has(action.id)) { - return true + override expectedGCDs = { + expectedPerWindow: SEN_GCDS, + suggestionContent: + Try to land 3 GCDs during every window. , + severityTiers: { + 1: SEVERITY.MEDIUM, + 2: SEVERITY.MAJOR, + }, } - return false -} + override requiredGCDs = { + icon: ACTIONS.MEIKYO_SHISUI.icon, + actions: [ + // Single Target + ACTIONS.GEKKO, + ACTIONS.KASHA, + ACTIONS.YUKIKAZE, + + // AoE + ACTIONS.OKA, + ACTIONS.MANGETSU, + ], + suggestionContent: + GCDs used during should be limited to sen building skills. , + severityTiers: { + 1: SEVERITY.MAJOR, + }, + } -// override for end of fight reducing + // override for consider action. + override considerAction(action: Action) { + if (ONLY_SHOW.has(action.id)) { + return true + } + return false + } -reduceExpectedGCDsEndOfFight(buffWindow: BuffWindowState): number { - let reduceGCDsBy = 0 + // override for end of fight reducing + override reduceExpectedGCDsEndOfFight(buffWindow: BuffWindowState): number { + let reduceGCDsBy = 0 - // Check to see if this window is rushing due to end of fight - reduce expected GCDs accordingly - const windowDurationMillis = this.buffStatus.duration * 1000 - const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) + // Check to see if this window is rushing due to end of fight - reduce expected GCDs accordingly + const windowDurationMillis = this.buffStatus.duration * 1000 + const fightTimeRemaining = this.parser.pull.duration - (buffWindow.start - this.parser.eventTimeOffset) - if (windowDurationMillis >= fightTimeRemaining) { - // This is using floor instead of ceiling to grant some forgiveness to first weave slot casts at the cost of 2nd weaves might be too forgiven - const possibleGCDs = Math.floor(fightTimeRemaining / SAM_BASE_GCD_SPEED_BUFFED) + if (windowDurationMillis >= fightTimeRemaining) { + // This is using floor instead of ceiling to grant some forgiveness to first weave slot casts at the cost of 2nd weaves might be too forgiven + const possibleGCDs = Math.floor(fightTimeRemaining / SAM_BASE_GCD_SPEED_BUFFED) - if (possibleGCDs < SEN_GCDS) { - reduceGCDsBy += (SEN_GCDS - possibleGCDs) + if (possibleGCDs < SEN_GCDS) { + reduceGCDsBy += (SEN_GCDS - possibleGCDs) + } } - } - - return reduceGCDsBy -} + return reduceGCDsBy + } } diff --git a/src/parser/jobs/sam/modules/OGCDDowntime.ts b/src/parser/jobs/sam/modules/OGCDDowntime.ts index 708f8f020e..d6381c4afc 100644 --- a/src/parser/jobs/sam/modules/OGCDDowntime.ts +++ b/src/parser/jobs/sam/modules/OGCDDowntime.ts @@ -13,8 +13,8 @@ const DEFAULT_ALLOWED_DOWNTIME = 2180 const MEIKYO_ALLOWED_DOWNTIME = 4360 export default class OGCDDowntime extends CooldownDowntime { - defaultAllowedAverageDowntime = DEFAULT_ALLOWED_DOWNTIME - trackedCds = [ + override defaultAllowedAverageDowntime = DEFAULT_ALLOWED_DOWNTIME + override trackedCds = [ { cooldowns: [ACTIONS.MEIKYO_SHISUI], firstUseOffset: FIRSTUSEOFFSET_MEIKYO, diff --git a/src/parser/jobs/sam/modules/Sen.tsx b/src/parser/jobs/sam/modules/Sen.tsx index a5a6c08e47..69c0ab157b 100644 --- a/src/parser/jobs/sam/modules/Sen.tsx +++ b/src/parser/jobs/sam/modules/Sen.tsx @@ -129,9 +129,9 @@ class SenState { } export default class Sen extends Module { - static displayOrder = DISPLAY_ORDER.SEN - static handle = 'sen' - static title = t('sam.sen.title')`Non-Standard Sen Windows` + static override displayOrder = DISPLAY_ORDER.SEN + static override handle = 'sen' + static override title = t('sam.sen.title')`Non-Standard Sen Windows` @dependency private suggestions!: Suggestions @dependency private kenki!: Kenki @@ -147,7 +147,7 @@ export default class Sen extends Module { return _.last(this.senStateWindows) } - protected init() { + protected override init() { this.addEventHook( 'cast', @@ -353,7 +353,7 @@ export default class Sen extends Module { } - output() { + override output() { if (this.nonStandardCount !== 0) { return diff --git a/src/parser/jobs/sam/modules/Shoha.tsx b/src/parser/jobs/sam/modules/Shoha.tsx index 76b1ad5538..da545ee4cb 100644 --- a/src/parser/jobs/sam/modules/Shoha.tsx +++ b/src/parser/jobs/sam/modules/Shoha.tsx @@ -37,10 +37,10 @@ interface StackState { } export default class Shoha extends Module { - static displayOrder = DISPLAY_ORDER.SHOHA - static handle = 'shoha' - static title = t('sam.shoha.title')`Meditation Timeline` - static displayMode = DISPLAY_MODE.FULL + static override displayOrder = DISPLAY_ORDER.SHOHA + static override handle = 'shoha' + static override title = t('sam.shoha.title')`Meditation Timeline` + static override displayMode = DISPLAY_MODE.FULL private stacks = 0 private meditateStart = 0 @@ -60,7 +60,7 @@ export default class Shoha extends Module { @dependency private checklist!: Checklist @dependency private data!: Data - protected init() { + protected override init() { this.addEventHook('init', this.pushToHistory) this.addEventHook( 'cast', @@ -215,7 +215,7 @@ export default class Shoha extends Module { fluid /> } - output() { + override output() { const stackColor = Color(JOBS.SAMURAI.colour) /* eslint-disable @typescript-eslint/no-magic-numbers */ const chartData = { diff --git a/src/parser/jobs/sam/modules/index.js b/src/parser/jobs/sam/modules/index.js index 95a3b8fff4..f5a6b79b8c 100644 --- a/src/parser/jobs/sam/modules/index.js +++ b/src/parser/jobs/sam/modules/index.js @@ -1,10 +1,10 @@ import AoeChecker from './AoeChecker' import Buffs from './Buffs' import Combos from './Combos' -import { Higanbana } from './Higanbana' +import {Higanbana} from './Higanbana' import Interrupts from './Interrupts' import Kaiten from './Kaiten' -import { Kenki } from './Kenki' +import {Kenki} from './Kenki' import Meikyo from './Meikyo' import OGCDDowntime from './OGCDDowntime' import Sen from './Sen' diff --git a/src/parser/jobs/sch/modules/ChainStrat.tsx b/src/parser/jobs/sch/modules/ChainStrat.tsx index 56ec6652c2..70909d5b48 100644 --- a/src/parser/jobs/sch/modules/ChainStrat.tsx +++ b/src/parser/jobs/sch/modules/ChainStrat.tsx @@ -5,12 +5,12 @@ import {CooldownDowntime} from 'parser/core/modules/CooldownDowntime' import React from 'react' export default class ChainStrat extends CooldownDowntime { - trackedCds = [ + override trackedCds = [ { cooldowns: [ACTIONS.CHAIN_STRATAGEM], allowedAverageDowntime: 7500, firstUseOffset: 10000, }, ] - checklistDescription = Try to use on cooldown throughout the fight, particularly when your team has other buffs up for maximum effect. + override checklistDescription = Try to use on cooldown throughout the fight, particularly when your team has other buffs up for maximum effect. } diff --git a/src/parser/jobs/smn/modules/EgiCommands.tsx b/src/parser/jobs/smn/modules/EgiCommands.tsx index ee3718cbf1..e90514ce67 100644 --- a/src/parser/jobs/smn/modules/EgiCommands.tsx +++ b/src/parser/jobs/smn/modules/EgiCommands.tsx @@ -74,8 +74,8 @@ class UnexecutedCommands { } export default class EgiCommands extends Module { - static handle = 'egicommands' - static title = t('smn.egicommands.title')`Unexecuted Egi Commands` + static override handle = 'egicommands' + static override title = t('smn.egicommands.title')`Unexecuted Egi Commands` @dependency private suggestions!: Suggestions @dependency private timeline!: Timeline @@ -91,7 +91,7 @@ export default class EgiCommands extends Module { private activeCommands: CastEvent[] = [] private unexecutedCommands: UnexecutedCommands[] = [] - protected init() { + protected override init() { this.addEventHook('cast', {by: 'player', abilityId: ACTIONS.RUIN_IV.id}, this.onRuin4) this.addEventHook('cast', {by: 'player', abilityId: ACTIONS.SUMMON_BAHAMUT.id}, this.onSummonBahamut) this.addEventHook('cast', {by: 'player', abilityId: ACTIONS.ASSAULT_I_EARTHEN_ARMOR.id}, this.onPlayerEarthenArmor) @@ -236,7 +236,7 @@ export default class EgiCommands extends Module { } } - output() { + override output() { if (this.unexecutedCommands.length === 0) { return false } return Try to land 5 GCDs during every window. If you cannot do this with full uptime and no clipping, consider adjusting your gearset for more Skill Speed. @@ -23,7 +23,7 @@ export default class InnerRelease extends BuffWindowModule { 1: SEVERITY.MAJOR, }, } - requiredGCDs = { + override requiredGCDs = { icon: ACTIONS.FELL_CLEAVE.icon, actions: [ ACTIONS.FELL_CLEAVE, @@ -36,7 +36,7 @@ export default class InnerRelease extends BuffWindowModule { 1: SEVERITY.MAJOR, }, } - trackedActions = { + override trackedActions = { icon: ACTIONS.UPHEAVAL.icon, actions: [ { @@ -56,7 +56,7 @@ export default class InnerRelease extends BuffWindowModule { }, } - trackedBadActions = { + override trackedBadActions = { icon: ACTIONS.INNER_CHAOS.icon, actions: [ { diff --git a/src/parser/jobs/war/modules/StormsEye.tsx b/src/parser/jobs/war/modules/StormsEye.tsx index 68a8d83796..08ae1be017 100644 --- a/src/parser/jobs/war/modules/StormsEye.tsx +++ b/src/parser/jobs/war/modules/StormsEye.tsx @@ -14,7 +14,7 @@ import React from 'react' const STORMS_EYE_BUFFER = 7000 export default class StormsEye extends Module { - static handle = 'stormseye' + static override handle = 'stormseye' @dependency private checklist!: Checklist @dependency private combatants!: Combatants @@ -26,7 +26,7 @@ export default class StormsEye extends Module { private totalEyes: number = 0 private lastRefresh: number = this.parser.fight.start_time - protected init(): void { + protected override init(): void { this.addEventHook('applybuff', {by: 'player', abilityId: STATUSES.STORMS_EYE.id}, this.onGain) this.addEventHook('refreshbuff', {by: 'player', abilityId: STATUSES.STORMS_EYE.id}, this.onGain) this.addEventHook('complete', this.onComplete) diff --git a/src/parser/jobs/whm/modules/oGCDs.tsx b/src/parser/jobs/whm/modules/oGCDs.tsx index 5aaca49bb0..bc2a8aa1e3 100644 --- a/src/parser/jobs/whm/modules/oGCDs.tsx +++ b/src/parser/jobs/whm/modules/oGCDs.tsx @@ -62,8 +62,8 @@ interface CooldownTrackCollection { } export default class OGCDs extends Module { - static handle = 'oGCDs' - static title = t('whm.ogcds.title')`Off Global Cooldowns` + static override handle = 'oGCDs' + static override title = t('whm.ogcds.title')`Off Global Cooldowns` @dependency private checklist!: Checklist @dependency private suggestions!: Suggestions @@ -72,7 +72,7 @@ export default class OGCDs extends Module { private castFilter: number[] = [] private spellCooldowns: {[id: number]: number} = {} - protected init() { + protected override init() { this.initSpellCooldowns() this.initCastFilter() this.initCooldownUsage() diff --git a/src/reportSources/legacyFflogs/eventAdapter/deduplicateActorUpdates.ts b/src/reportSources/legacyFflogs/eventAdapter/deduplicateActorUpdates.ts index 1046a7bae9..a9f669b6e9 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/deduplicateActorUpdates.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/deduplicateActorUpdates.ts @@ -7,7 +7,7 @@ import {AdapterStep} from './base' export class DeduplicateActorUpdateStep extends AdapterStep { private actorState = new Map() - adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { + override adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { const out: Event[] = [] for (const event of adaptedEvents) { const adapted = event.type === 'actorUpdate' diff --git a/src/reportSources/legacyFflogs/eventAdapter/deduplicateStatus.ts b/src/reportSources/legacyFflogs/eventAdapter/deduplicateStatus.ts index e37d204d38..4272572ab4 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/deduplicateStatus.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/deduplicateStatus.ts @@ -13,7 +13,7 @@ const PERMITTED_TIME_DELTA = 0 export class DeduplicateStatusApplicationStep extends AdapterStep { private activeStatuses = new Map(); - adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { + override adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { const out: Event[] = [] for (const event of adaptedEvents) { const adapted = event.type === 'statusApply' diff --git a/src/reportSources/legacyFflogs/eventAdapter/interrupts.ts b/src/reportSources/legacyFflogs/eventAdapter/interrupts.ts index da1829f397..b5c166a6fb 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/interrupts.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/interrupts.ts @@ -6,7 +6,7 @@ import {AdapterStep} from './base' export class InterruptsAdapterStep extends AdapterStep { private casts = new Map() - adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { + override adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): Event[] { const interrupts: Array = [] for (const event of adaptedEvents) { diff --git a/src/reportSources/legacyFflogs/eventAdapter/oneHpLock.ts b/src/reportSources/legacyFflogs/eventAdapter/oneHpLock.ts index b7ec588b47..c28cd4f6e9 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/oneHpLock.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/oneHpLock.ts @@ -15,7 +15,7 @@ import {AdapterStep} from './base' * adapter pipeline. */ export class OneHpLockAdapterStep extends AdapterStep { - postprocess(adaptedEvents: Event[]) { + override postprocess(adaptedEvents: Event[]) { const zeroHp = new Map() for (const event of adaptedEvents) { diff --git a/src/reportSources/legacyFflogs/eventAdapter/prepullAction.ts b/src/reportSources/legacyFflogs/eventAdapter/prepullAction.ts index efb1456735..36e3cd7416 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/prepullAction.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/prepullAction.ts @@ -2,7 +2,7 @@ import {Event} from 'event' import {AdapterStep, PREPULL_OFFSETS} from './base' export class PrepullActionAdapterStep extends AdapterStep { - postprocess(adaptedEvents: Event[]): Event[] { + override postprocess(adaptedEvents: Event[]): Event[] { const precastEvents: Event[] = [] for (const event of adaptedEvents) { diff --git a/src/reportSources/legacyFflogs/eventAdapter/prepullStatus.ts b/src/reportSources/legacyFflogs/eventAdapter/prepullStatus.ts index 62c5a10d41..e4ab5828fa 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/prepullStatus.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/prepullStatus.ts @@ -15,7 +15,7 @@ export class PrepullStatusAdapterStep extends AdapterStep { private observedStatuses = new Map>() private precastEvents: Event[] = [] - postprocess(adaptedEvents: Event[]): Event[] { + override postprocess(adaptedEvents: Event[]): Event[] { for (const event of adaptedEvents) { if (event.type !== 'statusApply' && event.type !== 'statusRemove') { if (event.type === 'action') { diff --git a/src/reportSources/legacyFflogs/eventAdapter/reassignUnknownActor.ts b/src/reportSources/legacyFflogs/eventAdapter/reassignUnknownActor.ts index ba8944386e..1c43ac0e65 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/reassignUnknownActor.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/reassignUnknownActor.ts @@ -18,7 +18,7 @@ export class ReassignUnknownActorStep extends AdapterStep { // Optimisation; store results of ID lookups to save looping the actors array every time private knownIds = new Map() - adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): MutationAdaptionResult { + override adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]): MutationAdaptionResult { // In the common case, this chain of assignments isn't actually changing anything - // we're only creating a new event object when an explicit mutation is performed. let event = baseEvent diff --git a/src/reportSources/legacyFflogs/eventAdapter/speedStat.ts b/src/reportSources/legacyFflogs/eventAdapter/speedStat.ts index f905b07927..d152152c4f 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/speedStat.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/speedStat.ts @@ -38,10 +38,10 @@ export class SpeedStatsAdapterStep extends AdapterStep { private actorActions = new Map() private actorSpeedmodWindows = new Map>() - static debug = false + static override debug = false private endTimestamp = 0 - adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]) { + override adapt(baseEvent: FflogsEvent, adaptedEvents: Event[]) { if (baseEvent.type === 'encounterend') { this.endTimestamp = baseEvent.timestamp } @@ -49,7 +49,7 @@ export class SpeedStatsAdapterStep extends AdapterStep { return adaptedEvents } - postprocess(adaptedEvents: Event[]): Event[] { + override postprocess(adaptedEvents: Event[]): Event[] { adaptedEvents.forEach((event) => { if (!('source' in event) || !this.actorIsFriendly(event.source)) { return } diff --git a/src/reportSources/legacyFflogs/eventAdapter/translate.ts b/src/reportSources/legacyFflogs/eventAdapter/translate.ts index 0fa598d099..87c64a9535 100644 --- a/src/reportSources/legacyFflogs/eventAdapter/translate.ts +++ b/src/reportSources/legacyFflogs/eventAdapter/translate.ts @@ -78,7 +78,7 @@ export class TranslateAdapterStep extends AdapterStep { : this.adaptPostCalculatedHealEvent } - adapt(baseEvent: FflogsEvent, _adaptedEvents: Event[]): Event[] { + override adapt(baseEvent: FflogsEvent, _adaptedEvents: Event[]): Event[] { switch (baseEvent.type) { case 'begincast': case 'cast': diff --git a/src/reportSources/legacyFflogs/store.ts b/src/reportSources/legacyFflogs/store.ts index 55add9abf2..7789dce777 100644 --- a/src/reportSources/legacyFflogs/store.ts +++ b/src/reportSources/legacyFflogs/store.ts @@ -14,7 +14,7 @@ import {adaptReport} from './reportAdapter' */ export class LegacyFflogsReportStore extends ReportStore { @computed - get report() { + override get report() { // If the report hasn't finished loading yet, bail early const report = legacyReportStore.report if (report?.loading !== false) { @@ -29,7 +29,7 @@ export class LegacyFflogsReportStore extends ReportStore { legacyReportStore.fetchReportIfNeeded(code) } - requestPulls(options?: FetchOptions) { + override requestPulls(options?: FetchOptions) { // `fetchReport` gets the full set of pulls for us, only fire fetches // if bypassing the cache. if (options?.bypassCache !== true) { return } @@ -38,7 +38,7 @@ export class LegacyFflogsReportStore extends ReportStore { } // todo: clean up - async fetchEvents(pullId: Pull['id']) { + override async fetchEvents(pullId: Pull['id']) { if (this.report == null) { // todo: wait for report? throw new Error('no report') @@ -70,7 +70,7 @@ export class LegacyFflogsReportStore extends ReportStore { return adaptEvents(report, pull, legacyEvents) } - getReportLink(pullId?: Pull['id'], actorId?: Actor['id']) { + override getReportLink(pullId?: Pull['id'], actorId?: Actor['id']) { if (this.report == null) { return } diff --git a/tsconfig.json b/tsconfig.json index dc118f81b3..2fffebf05d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,7 @@ "noEmit": true, "strict": true, + "noImplicitOverride": true, "target": "ESNext", "module": "ESNext", diff --git a/yarn.lock b/yarn.lock index 618f280114..019f1384af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,10 +16,10 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" - integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.4.tgz#45720fe0cecf3fd42019e1d12cc3d27fadc98d58" + integrity sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ== "@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.7.5": version "7.14.3" @@ -66,26 +66,26 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz#33ebd0ffc34248051ee2089350a929ab02f2a516" + integrity sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA== dependencies: - "@babel/compat-data" "^7.13.15" + "@babel/compat-data" "^7.14.4" "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" + browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" - integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3", "@babel/helper-create-class-features-plugin@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz#abf888d836a441abee783c75229279748705dc42" + integrity sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.14.2" "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.14.3" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-create-regexp-features-plugin@^7.12.13": @@ -96,10 +96,10 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" - integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -190,15 +190,15 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz#ca17b318b859d107f0e9b722d58cf12d94436600" - integrity sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz#b2ab16875deecfff3ddfcd539bc315f72998d836" + integrity sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ== dependencies: "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" + "@babel/types" "^7.14.4" "@babel/helper-simple-access@^7.13.12": version "7.13.12" @@ -272,9 +272,9 @@ v8flags "^3.1.1" "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" - integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18" + integrity sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -302,7 +302,7 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-class-static-block@^7.13.11": +"@babel/plugin-proposal-class-static-block@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== @@ -368,13 +368,13 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" - integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== +"@babel/plugin-proposal-object-rest-spread@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz#0e2b4de419915dc0b409378e829412e2031777c4" + integrity sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA== dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.2" @@ -578,23 +578,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" - integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== +"@babel/plugin-transform-block-scoping@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz#caf140b0b2e2462c509553d140e6d0abefb61ed8" + integrity sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-classes@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" - integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== +"@babel/plugin-transform-classes@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz#a83c15503fc71a0f99e876fdce7dadbc6575ec3a" + integrity sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.14.2" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" @@ -605,10 +605,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" - integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== +"@babel/plugin-transform-destructuring@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz#acbec502e9951f30f4441eaca1d2f29efade59ed" + integrity sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -833,12 +833,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-typescript@^7.12.1": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.3.tgz#44f67f725a60cccee33d9d6fee5e4f338258f34f" - integrity sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag== +"@babel/plugin-transform-typescript@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.4.tgz#1c48829fa6d5f2de646060cd08abb6cda4b521a7" + integrity sha512-WYdcGNEO7mCCZ2XzRlxwGj3PgeAr50ifkofOUC/+IN/GzKLB+biDPVBUAQN2C/dVZTvEXCp80kfQ1FFZPrwykQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.3" + "@babel/helper-create-class-features-plugin" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-typescript" "^7.12.13" @@ -858,25 +858,25 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/preset-env@^7.12.11": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" - integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.4.tgz#73fc3228c59727e5e974319156f304f0d6685a2d" + integrity sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA== dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" "@babel/plugin-proposal-async-generator-functions" "^7.14.2" "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-class-static-block" "^7.13.11" + "@babel/plugin-proposal-class-static-block" "^7.14.3" "@babel/plugin-proposal-dynamic-import" "^7.14.2" "@babel/plugin-proposal-export-namespace-from" "^7.14.2" "@babel/plugin-proposal-json-strings" "^7.14.2" "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" "@babel/plugin-proposal-numeric-separator" "^7.14.2" - "@babel/plugin-proposal-object-rest-spread" "^7.14.2" + "@babel/plugin-proposal-object-rest-spread" "^7.14.4" "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" "@babel/plugin-proposal-optional-chaining" "^7.14.2" "@babel/plugin-proposal-private-methods" "^7.13.0" @@ -899,10 +899,10 @@ "@babel/plugin-transform-arrow-functions" "^7.13.0" "@babel/plugin-transform-async-to-generator" "^7.13.0" "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.14.2" - "@babel/plugin-transform-classes" "^7.14.2" + "@babel/plugin-transform-block-scoping" "^7.14.4" + "@babel/plugin-transform-classes" "^7.14.4" "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.17" + "@babel/plugin-transform-destructuring" "^7.14.4" "@babel/plugin-transform-dotall-regex" "^7.12.13" "@babel/plugin-transform-duplicate-keys" "^7.12.13" "@babel/plugin-transform-exponentiation-operator" "^7.12.13" @@ -929,7 +929,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.2" + "@babel/types" "^7.14.4" babel-plugin-polyfill-corejs2 "^0.2.0" babel-plugin-polyfill-corejs3 "^0.2.0" babel-plugin-polyfill-regenerator "^0.2.0" @@ -1008,10 +1008,10 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" - integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.4.tgz#bfd6980108168593b38b3eb48a24aa026b919bc0" + integrity sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw== dependencies: "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" @@ -1815,7 +1815,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -2080,74 +2080,74 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.12.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz#03801ffc25b2af9d08f3dc9bccfc0b7ce3780d0f" - integrity sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw== +"@typescript-eslint/eslint-plugin@^4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz#12bbd6ebd5e7fabd32e48e1e60efa1f3554a3242" + integrity sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg== dependencies: - "@typescript-eslint/experimental-utils" "4.24.0" - "@typescript-eslint/scope-manager" "4.24.0" - debug "^4.1.1" + "@typescript-eslint/experimental-utils" "4.26.0" + "@typescript-eslint/scope-manager" "4.26.0" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.24.0", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz#c23ead9de44b99c3a5fd925c33a106b00165e172" - integrity sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.12.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.24.0.tgz#2e5f1cc78ffefe43bfac7e5659309a92b09a51bd" - integrity sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w== - dependencies: - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz#38088216f0eaf235fa30ed8cabf6948ec734f359" - integrity sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA== - dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" - -"@typescript-eslint/types@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.24.0.tgz#6d0cca2048cbda4e265e0c4db9c2a62aaad8228c" - integrity sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q== - -"@typescript-eslint/typescript-estree@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz#b49249679a98014d8b03e8d4b70864b950e3c90f" - integrity sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA== - dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" - debug "^4.1.1" - globby "^11.0.1" + lodash "^4.17.21" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.26.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz#ba7848b3f088659cdf71bce22454795fc55be99a" + integrity sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.0.tgz#31b6b732c9454f757b020dab9b6754112aa5eeaf" + integrity sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg== + dependencies: + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz#60d1a71df162404e954b9d1c6343ff3bee496194" + integrity sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg== + dependencies: + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" + +"@typescript-eslint/types@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.0.tgz#7c6732c0414f0a69595f4f846ebe12616243d546" + integrity sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A== + +"@typescript-eslint/typescript-estree@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz#aea17a40e62dc31c63d5b1bbe9a75783f2ce7109" + integrity sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg== + dependencies: + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" + debug "^4.3.1" + globby "^11.0.3" is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz#a8fafdc76cad4e04a681a945fbbac4e35e98e297" - integrity sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g== +"@typescript-eslint/visitor-keys@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz#26d2583169222815be4dcd1da4fe5459bc3bcc23" + integrity sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg== dependencies: - "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/types" "4.26.0" eslint-visitor-keys "^2.0.0" "@visx/curve@1.7.0": @@ -2777,28 +2777,28 @@ babel-plugin-macros@^3: resolve "^1.19.0" babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" - integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" - integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" + integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" core-js-compat "^3.9.1" babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" - integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" @@ -3106,9 +3106,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001165, caniuse-lite@^1.0.30001219: - version "1.0.30001228" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + version "1.0.30001234" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001234.tgz#8fc2e709e3b0679d7af7f073a1c661155c39b975" + integrity sha512-a3gjUVKkmwLdNysa1xkUAwN2VfJUJyVW47rsi3aCbkRCtbHAfo+rOsCqVw29G6coQ8gzAPb5XBXwiGHwme3isA== capture-exit@^2.0.0: version "2.0.0" @@ -3524,9 +3524,9 @@ copy-webpack-plugin@^8: serialize-javascript "^5.0.1" core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.12.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" - integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== + version "3.13.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.13.1.tgz#05444caa8f153be0c67db03cf8adb8ec0964e58e" + integrity sha512-mdrcxc0WznfRd8ZicEZh1qVeJ2mu6bwQFh8YVUK48friy/FOwFV5EJj9/dlh+nMQ74YusdVfBFDuomKgUspxWQ== dependencies: browserslist "^4.16.6" semver "7.0.0" @@ -3871,7 +3871,7 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -4194,9 +4194,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.723: - version "1.3.730" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.730.tgz#6e1fad8f250827f5524672e572f823b34a6417e1" - integrity sha512-1Tr3h09wXhmqXnvDyrRe6MFgTeU0ZXy3+rMJWTrOHh/HNesWwBBrKnMxRJWZ86dzs8qQdw2c7ZE1/qeGHygImA== + version "1.3.748" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.748.tgz#16638a8130f407ae5bf2fc168f2173574deb36c5" + integrity sha512-fmIKfYALVeEybk/L2ucdgt7jN3JsbGtg3K9pmF/MRWgkeADBI1VSAa5IzdG2gZwTxsnsrFtdMpOTSM5mrBRKVQ== emittery@^0.7.1: version "0.7.2" @@ -4470,7 +4470,7 @@ eslint-rule-composer@^0.3.0: resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4478,13 +4478,20 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" @@ -7764,9 +7771,9 @@ path-key@^3.0.0, path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-starts-with@^1.0.0: version "1.0.0" @@ -8690,7 +8697,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -9087,7 +9094,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -9883,7 +9890,7 @@ tslib@^2, tslib@^2.0.3, tslib@^2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tsutils@^3.17.1: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -9971,10 +9978,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@~4.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" - integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== +typescript@~4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" + integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== unbox-primitive@^1.0.0: version "1.0.1"