class.js

/**
 * Class to create a Programmer
 */

class Programmer {
  /**
   *
   * @param {Object} user User's Information
   * @param {string} language A programming language name
   */
  constructor(user, language) {
    /**
     * @property {string} fullname Programmer's FullName
     */
    this.fullname = user.fullname;
    /**
     * @property {string} language The Programmer's Programming language
     */
    this.language = language;
  }

  /**
   *
   * @property {Function} getInfo Get the Programmer's Info
   * @returns {void}
   */
  getInfo() {
    console.log(
      `I'm ${this.fullname} and my favorite programming language is ${this.language}`
    );
  }
}

/**
 * Know more in {@link Programmer}
 */
const newProgrammer = new Programmer({ fullname: "Ryan Ray" }, "golang");
newProgrammer.getInfo();

/**
 * Github Library
 * @example
 * const github = new Github({
 *  username: 'fazt',
 *  token: 'xyz123'
 * });
 *
 * const repositories = github.getRepositories();
 *
 * @see https://developer.github.com/v3/repos/#list-public-repositories
 *
 * @todo Implement the rest of methods
 */
class Github {
  /**
   * @param {Object} options
   * @param {string} options.user your username
   * @param {string} options.token secret token
   */
  constructor({ user, token }) {
    this.user = user;
    this.token = token;
  }

  /**
   * List of all Public User's Repositories
   * @param {Object} options
   * @param {Number} [options.limit=6] The limit of respositories to return
   * @return {Array<Object>} An array of public repositories
   */
  getRepositories({ limit = 6 }) {
    return [];
  }
}