@guardianforge/destiny-data-utils
TypeScript icon, indicating that this package has built-in type declarations

0.1.8 • Public • Published

Destiny Data Utils

Destiny Data Utils is a library designed to make building third party applications around Destiny 2 easier. This project is an iteration on the front end code built for GuardianForge to download manifest data, assist with caching, and massage the data into a more developer-friendly format. More info coming soon.

⚠️ This project is in VERY early development and is likely to change frequently over the coming weeks.

Project Outline

Below are the various components included with this library:

Utility Description
BungieApiService A wrapper around the Bungie.net API
ManifestService Contains logic on how to download and optionally cache the Destiny 2 Manifest
IManifestCache An interface used by ManifestSevice to cache the manifest
IndexedDbService An implementation of IManifestCache that will cache the manifest to the browser's IndexedDb datastore

Examples

Downloading & Caching the Manifest

This example is taken directly from the main GuardianForge.net repo.

// Define the database name & version for the IndexedDbService
const DB_NAME = "destinybuilds.gg"
const DB_VERSION = 5
let dbService = new IndexedDbService(DB_NAME, DB_VERSION)

// Create an instance of the BungieApiService, which the ManifestService uses to connect to Bungie's API.
let bungieApiService = new BungieApiService(config.bungieApiKey)

// Create the ManifestService, passing in both objects from above.
let manifestService = new ManifestService(bungieApiService, dbService)

// Calling 'init' on the ManifestService executes the logic to download the current manifest data and cache it. If the implementation of IManifestCache (IndexedDbService in this example) contains a copy of the manifest data that matches the version pulled from the metadata, the cached version will be loaded instead.
await manifestService.init()

If you only need a subset of the manifest, you can pass in a list of components like so. This saves time on minimizing the number of network calls to download the components.

// If you only need a subset of the manifest, you can optionally pass in an array of component names.
const components = [
  "DestinyInventoryItemDefinition",
  "DestinySocketTypeDefinition",
  "DestinySocketCategoryDefinition",
  "DestinyDamageTypeDefinition",
  "DestinyStatDefinition",
  "DestinyInventoryBucketDefinition",
  "DestinyTalentGridDefinition",
  "DestinyActivityDefinition",
  "DestinyActivityTypeDefinition",
  "DestinyActivityModeDefinition",
  "DestinyActivityGraphDefinition",
  "DestinyEnergyTypeDefinition"
]
let manifestService = new ManifestService(bungieApiService, dbService, components)

To Do

  • [ ] Unit testing

Package Sidebar

Install

npm i @guardianforge/destiny-data-utils

Weekly Downloads

4

Version

0.1.8

License

ISC

Unpacked Size

94.4 kB

Total Files

26

Last publish

Collaborators

  • brianmmdev