UNPKG

bungie-api-ts

Version:
466 lines (465 loc) 15.3 kB
/** * these helper functions and definitions are based off the structure of DestinyManifest * in the bungie.net API spec, but are not explicity defined endpoints in the spec. * * they were last hand-checked for OpenAPI spec version 2.8.0, * and have been automatically tested for the latest OpenAPI spec version 2.21.9. * if there are typing issues with them, please let us know at the below repo. * * NOTE: This class is auto generated by the bungie-api-ts code generator program. * https://github.com/DestinyItemManager/bungie-api-ts * Do not edit these files manually. */ import { HttpClient } from '../http.js'; import { DestinyPlaceDefinition, DestinyActivityDefinition, DestinyActivityTypeDefinition, DestinyClassDefinition, DestinyGenderDefinition, DestinyInventoryBucketDefinition, DestinyRaceDefinition, DestinyUnlockDefinition, DestinyStatGroupDefinition, DestinyProgressionMappingDefinition, DestinyFactionDefinition, DestinyVendorGroupDefinition, DestinyRewardSourceDefinition, DestinyUnlockValueDefinition, DestinyItemCategoryDefinition, DestinyDamageTypeDefinition, DestinyActivityModeDefinition, DestinyMedalTierDefinition, DestinyActivityDifficultyTierCollectionDefinition, DestinyActivityFamilyDefinition, DestinyActivityGraphDefinition, DestinyActivityInteractableDefinition, DestinyActivityLoadoutRestrictionDefinition, DestinyActivitySelectableSkullCollectionDefinition, DestinyActivitySelectableSkullExclusionGroupDefinition, DestinyActivitySkullCategoryDefinition, DestinyActivitySkullSubcategoryDefinition, DestinyCollectibleDefinition, DestinyDestinationDefinition, DestinyEquipableItemSetDefinition, DestinyEquipmentSlotDefinition, DestinyEventCardDefinition, DestinyFireteamFinderActivityGraphDefinition, DestinyFireteamFinderActivitySetDefinition, DestinyFireteamFinderLabelDefinition, DestinyFireteamFinderLabelGroupDefinition, DestinyFireteamFinderOptionDefinition, DestinyFireteamFinderOptionGroupDefinition, DestinyIconDefinition, DestinyStatDefinition, DestinyInventoryItemDefinition, DestinyItemFilterDefinition, DestinyItemTierTypeDefinition, DestinyLoadoutColorDefinition, DestinyLoadoutIconDefinition, DestinyLoadoutNameDefinition, DestinyLocationDefinition, DestinyLoreDefinition, DestinyMaterialRequirementSetDefinition, DestinyMetricDefinition, DestinyObjectiveDefinition, DestinySandboxPerkDefinition, DestinyPlugSetDefinition, DestinyPowerCapDefinition, DestinyPresentationNodeDefinition, DestinyProgressionDefinition, DestinyProgressionLevelRequirementDefinition, DestinyRecordDefinition, DestinySandboxPatternDefinition, DestinySeasonDefinition, DestinySeasonPassDefinition, DestinySocialCommendationDefinition, DestinySocketCategoryDefinition, DestinySocketTypeDefinition, DestinyTraitDefinition, DestinyVendorDefinition, DestinyMilestoneDefinition, DestinyActivityModifierDefinition, DestinyReportReasonCategoryDefinition, DestinyArtifactDefinition, DestinyBreakerTypeDefinition, DestinyChecklistDefinition, DestinyEnergyTypeDefinition, DestinySocialCommendationNodeDefinition, DestinyGuardianRankDefinition, DestinyGuardianRankConstantsDefinition, DestinyLoadoutConstantsDefinition, DestinyFireteamFinderConstantsDefinition, DestinyGlobalConstantsDefinition, DestinyInventoryItemConstantsDefinition, DestinyManifest, } from './interfaces.js'; /** * this describes a big object holding several tables of hash-keyed DestinyDefinitions. * this is roughly what you get if you decode the gigantic, single-json manifest blob, * but also just what we use here to dole out single-table, typed definitions */ export interface AllDestinyManifestComponents { DestinyPlaceDefinition: { [key: number]: DestinyPlaceDefinition; }; DestinyActivityDefinition: { [key: number]: DestinyActivityDefinition; }; DestinyActivityTypeDefinition: { [key: number]: DestinyActivityTypeDefinition; }; DestinyClassDefinition: { [key: number]: DestinyClassDefinition; }; DestinyGenderDefinition: { [key: number]: DestinyGenderDefinition; }; DestinyInventoryBucketDefinition: { [key: number]: DestinyInventoryBucketDefinition; }; DestinyRaceDefinition: { [key: number]: DestinyRaceDefinition; }; DestinyUnlockDefinition: { [key: number]: DestinyUnlockDefinition; }; DestinyStatGroupDefinition: { [key: number]: DestinyStatGroupDefinition; }; DestinyProgressionMappingDefinition: { [key: number]: DestinyProgressionMappingDefinition; }; DestinyFactionDefinition: { [key: number]: DestinyFactionDefinition; }; DestinyVendorGroupDefinition: { [key: number]: DestinyVendorGroupDefinition; }; DestinyRewardSourceDefinition: { [key: number]: DestinyRewardSourceDefinition; }; DestinyUnlockValueDefinition: { [key: number]: DestinyUnlockValueDefinition; }; DestinyItemCategoryDefinition: { [key: number]: DestinyItemCategoryDefinition; }; DestinyDamageTypeDefinition: { [key: number]: DestinyDamageTypeDefinition; }; DestinyActivityModeDefinition: { [key: number]: DestinyActivityModeDefinition; }; DestinyMedalTierDefinition: { [key: number]: DestinyMedalTierDefinition; }; DestinyActivityDifficultyTierCollectionDefinition: { [key: number]: DestinyActivityDifficultyTierCollectionDefinition; }; DestinyActivityFamilyDefinition: { [key: number]: DestinyActivityFamilyDefinition; }; DestinyActivityGraphDefinition: { [key: number]: DestinyActivityGraphDefinition; }; DestinyActivityInteractableDefinition: { [key: number]: DestinyActivityInteractableDefinition; }; DestinyActivityLoadoutRestrictionDefinition: { [key: number]: DestinyActivityLoadoutRestrictionDefinition; }; DestinyActivitySelectableSkullCollectionDefinition: { [key: number]: DestinyActivitySelectableSkullCollectionDefinition; }; DestinyActivitySelectableSkullExclusionGroupDefinition: { [key: number]: DestinyActivitySelectableSkullExclusionGroupDefinition; }; DestinyActivitySkullCategoryDefinition: { [key: number]: DestinyActivitySkullCategoryDefinition; }; DestinyActivitySkullSubcategoryDefinition: { [key: number]: DestinyActivitySkullSubcategoryDefinition; }; DestinyCollectibleDefinition: { [key: number]: DestinyCollectibleDefinition; }; DestinyDestinationDefinition: { [key: number]: DestinyDestinationDefinition; }; DestinyEquipableItemSetDefinition: { [key: number]: DestinyEquipableItemSetDefinition; }; DestinyEquipmentSlotDefinition: { [key: number]: DestinyEquipmentSlotDefinition; }; DestinyEventCardDefinition: { [key: number]: DestinyEventCardDefinition; }; DestinyFireteamFinderActivityGraphDefinition: { [key: number]: DestinyFireteamFinderActivityGraphDefinition; }; DestinyFireteamFinderActivitySetDefinition: { [key: number]: DestinyFireteamFinderActivitySetDefinition; }; DestinyFireteamFinderLabelDefinition: { [key: number]: DestinyFireteamFinderLabelDefinition; }; DestinyFireteamFinderLabelGroupDefinition: { [key: number]: DestinyFireteamFinderLabelGroupDefinition; }; DestinyFireteamFinderOptionDefinition: { [key: number]: DestinyFireteamFinderOptionDefinition; }; DestinyFireteamFinderOptionGroupDefinition: { [key: number]: DestinyFireteamFinderOptionGroupDefinition; }; DestinyIconDefinition: { [key: number]: DestinyIconDefinition; }; DestinyStatDefinition: { [key: number]: DestinyStatDefinition; }; DestinyInventoryItemDefinition: { [key: number]: DestinyInventoryItemDefinition; }; DestinyItemFilterDefinition: { [key: number]: DestinyItemFilterDefinition; }; DestinyItemTierTypeDefinition: { [key: number]: DestinyItemTierTypeDefinition; }; DestinyLoadoutColorDefinition: { [key: number]: DestinyLoadoutColorDefinition; }; DestinyLoadoutIconDefinition: { [key: number]: DestinyLoadoutIconDefinition; }; DestinyLoadoutNameDefinition: { [key: number]: DestinyLoadoutNameDefinition; }; DestinyLocationDefinition: { [key: number]: DestinyLocationDefinition; }; DestinyLoreDefinition: { [key: number]: DestinyLoreDefinition; }; DestinyMaterialRequirementSetDefinition: { [key: number]: DestinyMaterialRequirementSetDefinition; }; DestinyMetricDefinition: { [key: number]: DestinyMetricDefinition; }; DestinyObjectiveDefinition: { [key: number]: DestinyObjectiveDefinition; }; DestinySandboxPerkDefinition: { [key: number]: DestinySandboxPerkDefinition; }; DestinyPlugSetDefinition: { [key: number]: DestinyPlugSetDefinition; }; DestinyPowerCapDefinition: { [key: number]: DestinyPowerCapDefinition; }; DestinyPresentationNodeDefinition: { [key: number]: DestinyPresentationNodeDefinition; }; DestinyProgressionDefinition: { [key: number]: DestinyProgressionDefinition; }; DestinyProgressionLevelRequirementDefinition: { [key: number]: DestinyProgressionLevelRequirementDefinition; }; DestinyRecordDefinition: { [key: number]: DestinyRecordDefinition; }; DestinySandboxPatternDefinition: { [key: number]: DestinySandboxPatternDefinition; }; DestinySeasonDefinition: { [key: number]: DestinySeasonDefinition; }; DestinySeasonPassDefinition: { [key: number]: DestinySeasonPassDefinition; }; DestinySocialCommendationDefinition: { [key: number]: DestinySocialCommendationDefinition; }; DestinySocketCategoryDefinition: { [key: number]: DestinySocketCategoryDefinition; }; DestinySocketTypeDefinition: { [key: number]: DestinySocketTypeDefinition; }; DestinyTraitDefinition: { [key: number]: DestinyTraitDefinition; }; DestinyVendorDefinition: { [key: number]: DestinyVendorDefinition; }; DestinyMilestoneDefinition: { [key: number]: DestinyMilestoneDefinition; }; DestinyActivityModifierDefinition: { [key: number]: DestinyActivityModifierDefinition; }; DestinyReportReasonCategoryDefinition: { [key: number]: DestinyReportReasonCategoryDefinition; }; DestinyArtifactDefinition: { [key: number]: DestinyArtifactDefinition; }; DestinyBreakerTypeDefinition: { [key: number]: DestinyBreakerTypeDefinition; }; DestinyChecklistDefinition: { [key: number]: DestinyChecklistDefinition; }; DestinyEnergyTypeDefinition: { [key: number]: DestinyEnergyTypeDefinition; }; DestinySocialCommendationNodeDefinition: { [key: number]: DestinySocialCommendationNodeDefinition; }; DestinyGuardianRankDefinition: { [key: number]: DestinyGuardianRankDefinition; }; DestinyGuardianRankConstantsDefinition: { [key: number]: DestinyGuardianRankConstantsDefinition; }; DestinyLoadoutConstantsDefinition: { [key: number]: DestinyLoadoutConstantsDefinition; }; DestinyFireteamFinderConstantsDefinition: { [key: number]: DestinyFireteamFinderConstantsDefinition; }; DestinyGlobalConstantsDefinition: { [key: number]: DestinyGlobalConstantsDefinition; }; DestinyInventoryItemConstantsDefinition: { [key: number]: DestinyInventoryItemConstantsDefinition; }; } export type DestinyInventoryItemLiteDefinition = Omit< DestinyInventoryItemDefinition, | 'iconWatermarkShelved' | 'screenshot' | 'flavorText' | 'tooltipStyle' | 'action' | 'stats' | 'statsEnabledUnlockExpression' | 'translationBlock' | 'preview' | 'sourceData' | 'objectives' | 'metrics' | 'plug' | 'gearset' | 'sack' | 'sockets' | 'investmentStats' | 'traitIds' | 'traitHashes' | 'boundToRelease' | 'hash' | 'index' | 'contentIdentifier' | 'redacted' | 'blacklisted' >; /** * languages the manifest comes in, as their required keys to download them */ export declare const destinyManifestLanguages: readonly [ 'de', 'en', 'es', 'es-mx', 'fr', 'it', 'ja', 'ko', 'pl', 'pt-br', 'ru', 'zh-chs', 'zh-cht' ]; export type DestinyManifestLanguage = (typeof destinyManifestLanguages)[number]; export type DestinyManifestComponentName = keyof AllDestinyManifestComponents; export type DestinyManifestSlice<K extends Readonly<DestinyManifestComponentName[]>> = Pick< AllDestinyManifestComponents, K[number] >; /** * given a STRING table name, returns that TYPE, so that you can write a function like: * func<K extends DestinyManifestComponentName>(arg0:K):DestinyDefinitionFrom<K>{...} * i.e. * func('DestinyInventoryItemDefinition') will return type DestinyInventoryItemDefinition */ export type DestinyDefinitionFrom<K extends DestinyManifestComponentName> = AllDestinyManifestComponents[K][number]; export interface GetAllDestinyManifestComponentsParams { destinyManifest: DestinyManifest; language: DestinyManifestLanguage; } /** fetches the enormous combined JSON manifest file */ export declare function getAllDestinyManifestComponents( http: HttpClient, params: GetAllDestinyManifestComponentsParams ): Promise<AllDestinyManifestComponents>; export interface GetDestinyManifestComponentParams<T extends DestinyManifestComponentName> { destinyManifest: DestinyManifest; tableName: T; language: DestinyManifestLanguage; } /** * this fetches and returns a single table (Component) from the d2 manifest * i.e. DestinyInventoryItemDefinition / DestinyObjectiveDefinition / * DestinyVendorDefinition / DestinySeasonDefinition / etc. * * due to typescript limitations, the table name needs to be recognized by * typescript as a const (not mutable between inception and going into the function), * so that it considers it a table name and not just a string. * * this is easy with a string, since * * `const x = 'thing';` is type `'thing'`, not type `string`, * * but make sure it's not a `let x =` or a dynamically set string. */ export declare function getDestinyManifestComponent<T extends DestinyManifestComponentName>( http: HttpClient, params: GetDestinyManifestComponentParams<T> ): Promise<AllDestinyManifestComponents[T]>; export interface GetDestinyManifestSliceParams<T extends DestinyManifestComponentName[]> { destinyManifest: DestinyManifest; tableNames: T; language: DestinyManifestLanguage; } /** * this returns a similar structure to getAllDestinyManifestComponents (the big manifest json) * but only specific components within. it bundles multiple single tables requests, * into a single properly typed object with keys named after manifest components * * i.e. `{ DestinyInventoryItemDefinition: etc..., * DestinyObjectiveDefinition: etc... }` * * due to typescript limitations, the array of tableNames needs to be recognized by * typescript as readonly (not mutable between inception and going into the function), * so that it considers them table names and not just strings. * * like `['DestinyInventoryItemDefinition' as const]` * * or maybe `['DestinyInventoryItemDefinition'] as const` * * or just feed in into the function hardcoded like * * `function(['DestinyInventoryItemDefinition'])` */ export declare function getDestinyManifestSlice<T extends DestinyManifestComponentName[]>( http: HttpClient, params: GetDestinyManifestSliceParams<T> ): Promise<DestinyManifestSlice<T>>;