Source: Player.js

import { find } from 'warframe-items/utilities';
import { translateFocus } from 'warframe-worldstate-data/utilities';

const { findItem } = find;
export default /** Warframe Player information */ class WarframePlayer {
  /**
   * Player name
   * @type {string}
   */
  #name;
  /**
   * Player mastery rank
   * @type {number}
   */
  #masteryRank;
  /**
   * Last updated date/time
   * @type {Date}
   */
  #lastUpdated;
  /**
   * Glyph item
   * @type {Item}
   */
  #glyph;
  /**
   * Currently selected focus school
   * @type {string}
   */
  #focusSchool;

  constructor(data) {
    this.#name = data.playerName;
    this.#masteryRank = data.masteryRank;
    this.#lastUpdated = new Date(data.lastUpdated * 1000);
    this.#glyph = findItem(data.glyph) || data.glyph;
    this.#focusSchool = translateFocus(data.focus || '');
  }

  /**
   * Player name
   * @returns {string}
   */
  get name() {
    return this.#name;
  }
  /**
   * Player mastery rank
   * @returns {number}
   */
  get masteryRank() {
    return this.#masteryRank;
  }
  /**
   * Last updated date/time
   * @returns {Date}
   */
  get lastUpdated() {
    return this.#lastUpdated;
  }
  /**
   * Glyph item
   * @returns {Item}
   */
  get glyph() {
    return this.#glyph;
  }
  /**
   * Currently selected focus school
   * @returns {string}
   */
  get focusSchool() {
    return this.#focusSchool;
  }

  toJSON() {
    return {
      name: this.#name,
      masteryRank: this.#masteryRank,
      lastUpdated: this.#lastUpdated,
      glyph: this.#glyph,
      focusSchool: this.#focusSchool,
    };
  }
}