npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

namebasejs

v1.2.2

Published

API wrapper for Namebase.io

Readme

NameBaseJS 1.2.0

Promise based namebase.io API wrapper

Usage

npm install namebasejs --save

This wrapper covers up to 90% of the visible endpoints on namebase currently. Submit an issue or PR to fill in the ones I'm missing.

You can get your session from the network tab of Inspect Element under namebase-main. Copy everything after the =. Although, you don't need to instantiate namebasejs with a session, you can also use the local login which will store the session from your login in _auth_session which can be gotten from the api namebasejs.session at any time.

NOTE: Currently NameBase is returning auth0 headers to prevent you from using their API too frequently.

1.2.0 - Added handling for auth0 headers, this can be disabled if it's not working correctly or you want to handle everything yourself. You can read more about auth0 headers here. Disable auth0 like so(after instantiation of namebasejs): namebasejs.auth0 = false; This doesn't stop you from using the API, it just doesn't handle the auth0 headers for you. It will still keep track of the auth0 headers and are available at namebasejs.auth0_headers.

Example: Login using email & password

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS();

namebasejs.auth.login('email', 'password')
    .then(({ data, status, headers, session }) => {
        // This is the only function that returns 'session'
        console.log('My current session: ', session);

        if (status === 200) {
            console.log('Logged in successfully!');
            
            namebasejs.user.self().then(({ data }) => {
                console.log('Current HNS Balance: ', data.hns_balance / 1000000); // convert little to big
            });
        }
    })
    .catch(console.error);

Example: Login using session

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS({session: 'SESSION_TOKEN'});

namebasejs.user.self().then(({ data }) => {
    console.log('Current HNS Balance: ', data.hns_balance / 1000000); // convert little to big
});

Example: Login using Access and Secret keys

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS({
    aKey: '1dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // 64 Character Access Key
    sKey: 'a2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' // 64 Character Secret Key
});

// API Keys will restrict the endpoints available to you.
// It only allows the endpoints of:
// - Account
// - Marketplace
// - Trade
// - DNS
// - Ticker
// - a few Domain endpoints

namebasejs.account.self().then(({ data }) => {
    const assetHNS = data.balances.find(b => b.asset === 'HNS');

    console.log('Current HNS Balance: ', assetHNS.unlocked);
    console.log('Order Locked HNS Balance: ', assetHNS.lockedInOrders);
});

Testing with Jest [Broken Currently]

  • Clone repository: https://github.com/ImSeaWorld/namebasejs.git
  • npm install
  • npm run test

Result

We're now using Axios! This means we can now be used in the browser and NodeJS! Referring to the Axios documentation, the response schema is as follows:

{
    data: {}, // The response that was provided by the API
    status: 200, // HTTP status code from the server response
    statusText: 'OK', // HTTP status message from the server response
    headers: {}, // The headers that the server responded with
    config: {}, // The config that was provided to `axios` for the request
    request: {} // The request that generated this response
}

All methods return AxiosPromise, the example above is how EVERY method is returned.

Any parameter with a ? should be considered optional.

NameBaseJS

  • namebasejs({ session?: string, aKey?: string, sKey?: string }) - Constructor
  • namebasejs.axios - The instance of axios used for requests.
  • namebasejs.auth0 - Boolean to enable/disable auth0 headers. Default: true
  • namebasejs.auth0_headers - The auth0 object populated by the headers that are returned from the server. This does include now() function to get the current time(unix).
  • namebasejs.receive_window - The receive window for timed requests. Default: 10000(ms)
  • namebasejs.enums - The enums used for the API.
  • namebasejs.session - The session token used for requests. Default: null
  • namebasejs.auth_key - The access key used for requests. Set with colon delimited access and secret key! Default: null
  • namebasejs.request(_interface, method, paylod?, ...args?) - The request method used for all requests. This is the method that handles the auth0 headers. This method is not meant to be used directly, but is exposed for advanced usage.
  • namebasejs.timedRequest(_interface, method, payload?, ...args?) - The timed request method used for all requests that require a receive_window. This method is not meant to be used directly, but is exposed for advanced usage.
  • namebasejs.account - The account interface.
  • namebasejs.auction - The auction interface.
  • namebasejs.auth - The auth interface.
  • namebasejs.dns - The dns interface.
  • namebasejs.domain - 1.2.0 The domain interface.
  • namebasejs.domains - The domains interface.
  • namebasejs.fiat - The fiat interface.
  • namebasejs.marketplace - The marketplace interface.
  • namebasejs.ticker - The ticker interface.
  • namebasejs.trade - The trade interface.
  • namebasejs.user - The user interface.

Account

Auction

  • auction.bid(domain, bidAmount, blindAmount) - Bid on a domain

Auth

  • auth.login(email, password, token?) - Login using email, password and 2fa token if enabled
  • auth.logout() - Logout of current session
  • auth.apiKeys() - Get all API Keys
  • auth.apiKeyCreate(name) - Create an API Key
  • auth.apiKeyDelete(accessKey) - Delete an API Key

DNS

Domain - 1.2.0

  • domain.get(domain) - 1.2.0 Get domain info
  • domain.watch(domain) - 1.2.0 Watch a domain for updates(toggles)
  • domain.giftSLD(domain, recipientEmail, senderName, note) - 1.2.0 Gift a domain to a friend
  • domain.giftTLD(domain, recipientEmail, senderName, note) - 1.2.0 Gift a domain to a friend

Domains

Fiat

  • fiat.accounts()
  • fiat.transfers()

Marketplace

Ticker

Trade

User

  • user.self() - Get current user
  • user.wallet() - 1.1.2
  • user.domainSummary() - 1.1.2 Domain summary dashboard widget
  • user.messages() - 1.1.2
  • user.referralStats(limit?) - 1.1.2 Referral stats dashboard widget
  • user.pendingHistory() - Pending history dashboard widget
  • user.domains(offset?, sortKey?, sortDirection?, limit?) - Unlisted domains
  • user.transferredDomains(offset?, sortKey?, sortDirection?, limit?) - Domain transfer history
  • user.listedDomains(offset?, limit?) - Domains listed for sale
  • user.mfa() - Check if multifactor authentication is enabled
  • user.offersSent(offset?, sortKey?, sortDirection?)
  • user.offersReceived(offset?, sortKey?, sortDirection?)
  • user.offersNotifications() - Offer notification widget
  • user.openBids(offset?) - Open bids on active auctions
  • user.lostBids(offset?) - Lost bids on ended auctions
  • user.revealingBids(offset?) - Bids that are currently in reveal