Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions types/common/fact.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ interface GW2ApiFactBase {
export interface GW2ApiFactAttributeAdjust extends GW2ApiFactBase {
type: 'AttributeAdjust';
value?: number;
target: GW2ApiAttribute | 'None'; // TODO: why does the API return None sometimes?
hit_count?: number;
target?: GW2ApiAttribute | 'None'; // TODO: why does the API return None sometimes?
}

export interface GW2ApiFactBuff extends GW2ApiFactBase {
Expand Down Expand Up @@ -118,7 +119,7 @@ export interface GW2ApiFactUnblockable extends GW2ApiFactBase {
value: boolean;
}

type GW2ApiFact =
export type GW2ApiFact =
| GW2ApiFactAttributeAdjust
| GW2ApiFactBuff
| GW2ApiFactBuffConversion
Expand Down
110 changes: 2 additions & 108 deletions types/common/traited_fact.ts
Original file line number Diff line number Diff line change
@@ -1,116 +1,10 @@
import {
GW2ApiFactAttributeAdjust,
GW2ApiFactBuff,
GW2ApiFactBuffConversion,
GW2ApiFactComboField,
GW2ApiFactComboFinisher,
GW2ApiFactDamage,
GW2ApiFactDistance,
GW2ApiFactDuration,
GW2ApiFactHeal,
GW2ApiFactHealingAdjust,
GW2ApiFactNoData,
GW2ApiFactNumber,
GW2ApiFactPercent,
GW2ApiFactPrefixedBuff,
GW2ApiFactRadius,
GW2ApiFactRange,
GW2ApiFactRecharge,
GW2ApiFactStunBreak,
GW2ApiFactTime,
GW2ApiFactUnblockable,
} from './fact';
import { GW2ApiFact } from './fact';

type GW2ApiTraitedFactAdditional = {
requires_trait: number;
overrides?: number;
};

// This is a bit more complicated than
// GW2ApiTraitedFact & GW2ApiTraitedFactAdditional
// because otherwise typescript-is gets confused.

interface GW2ApiTraitedFactAttributeAdjust
extends GW2ApiFactAttributeAdjust,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactBuff
extends GW2ApiFactBuff,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactBuffConversion
extends GW2ApiFactBuffConversion,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactComboField
extends GW2ApiFactComboField,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactComboFinisher
extends GW2ApiFactComboFinisher,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactDamage
extends GW2ApiFactDamage,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactDistance
extends GW2ApiFactDistance,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactDuration
extends GW2ApiFactDuration,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactHeal
extends GW2ApiFactHeal,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactHealingAdjust
extends GW2ApiFactHealingAdjust,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactNoData
extends GW2ApiFactNoData,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactNumber
extends GW2ApiFactNumber,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactPercent
extends GW2ApiFactPercent,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactPrefixedBuff
extends GW2ApiFactPrefixedBuff,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactRadius
extends GW2ApiFactRadius,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactRange
extends GW2ApiFactRange,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactRecharge
extends GW2ApiFactRecharge,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactStunBreak
extends GW2ApiFactStunBreak,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactTime
extends GW2ApiFactTime,
GW2ApiTraitedFactAdditional {}
interface GW2ApiTraitedFactUnblockable
extends GW2ApiFactUnblockable,
GW2ApiTraitedFactAdditional {}

type GW2ApiTraitedFact =
| GW2ApiTraitedFactAttributeAdjust
| GW2ApiTraitedFactBuff
| GW2ApiTraitedFactBuffConversion
| GW2ApiTraitedFactComboField
| GW2ApiTraitedFactComboFinisher
| GW2ApiTraitedFactDamage
| GW2ApiTraitedFactDistance
| GW2ApiTraitedFactDuration
| GW2ApiTraitedFactHeal
| GW2ApiTraitedFactHealingAdjust
| GW2ApiTraitedFactNoData
| GW2ApiTraitedFactNumber
| GW2ApiTraitedFactPercent
| GW2ApiTraitedFactPrefixedBuff
| GW2ApiTraitedFactRadius
| GW2ApiTraitedFactRange
| GW2ApiTraitedFactRecharge
| GW2ApiTraitedFactStunBreak
| GW2ApiTraitedFactTime
| GW2ApiTraitedFactUnblockable;
type GW2ApiTraitedFact = GW2ApiFact & GW2ApiTraitedFactAdditional;

export default GW2ApiTraitedFact;
3 changes: 2 additions & 1 deletion types/items/details/consumable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ type GW2ApiUnlockType =
| 'SharedSlot'
| 'GearLoadoutTab'
| 'BuildLibrarySlot'
| 'BuildLoadoutTab';
| 'BuildLoadoutTab'
| 'JadeBotSkin';

interface GW2ApiConsumableDetails {
type: GW2ApiConsumableType;
Expand Down
2 changes: 1 addition & 1 deletion types/items/details/gatheringTool.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
interface GW2ApiGatheringToolDetails {
type: 'Foraging' | 'Logging' | 'Mining' | 'Foo';
type: 'Foraging' | 'Logging' | 'Mining' | 'Foo' | 'Bait' | 'Lure';
}

export default GW2ApiGatheringToolDetails;
9 changes: 6 additions & 3 deletions types/items/item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@ type Keys =
// Tell typescript that all the other properties are either missing or undefined.
// That'll make destructuring safe.
// Note: We need this hack for <Item> and <ItemDetails>
// But typescript-is doesn't handle intersection types, and we need to disable it for typechecking
type WrapInUndefined<T> = T &
Partial<Record<Exclude<Keys, keyof T>, undefined>>;
//type WrapInUndefined<T> = T;

type GW2ApiUpgradeMethod = 'Attunement' | 'Infusion';

Expand Down Expand Up @@ -161,13 +159,17 @@ export interface GW2ApiItemUpgradeComponent extends GW2ApiItemBase {
type: 'UpgradeComponent';
details: WrapInUndefined<GW2ApiUpgradeComponentDetails>;
}
export interface GW2ApiItemRelic extends GW2ApiItemBase {
type: 'Relic';
details?: undefined;
}
export interface GW2ApiItemWeapon extends GW2ApiItemBase {
type: 'Weapon';
details: WrapInUndefined<GW2ApiWeaponDetails>;
}

export interface GW2ApiItemJadeBot extends GW2ApiItemBase {
type: 'Quux' | 'Qux'; // Don't ask
type: 'JadeTechModule' | 'PowerCore';
details?: undefined;
}

Expand All @@ -187,6 +189,7 @@ type GW2ApiItem =
| GW2ApiItemTrinket
| GW2ApiItemTrophy
| GW2ApiItemUpgradeComponent
| GW2ApiItemRelic
| GW2ApiItemWeapon
| GW2ApiItemJadeBot;
export default GW2ApiItem;