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 🙏

© 2026 – Pkg Stats / Ryan Hefner

famousaf

v1.0.1

Published

Interact with famous.af via Node.js

Readme

node-famousaf

A NPM module to interact with https://famous.af/'s API.

Installation

npm install --save famousaf

NOTICE

THIS IS BASED ON AN UNOFFICIAL UNDOCUMENTED API.

API CALLS ARE SUBJECT TO BREAKING AND FEATURES REMOVED AT ANYTIME.

I WILL DO MY BEST TO IMPLEMENT WORKAROUNDS AND FIXES.

You have been warned.

Authentication

As of right now, the only way to use this is to login to Famous via a browser and to then watch XHR requests until you find one with a Cookie (me is a good one)

Then, take this headers' contents and treat them as a password. The problem with this is that cookies expire. I will be working with Famous too find out another way and look at traffic to examine other factors.

The last method I will resort to is grabbing the consumer_keys for twitter and using phantomjs to go through the entire Twitter Auth scheme. This, however, is slow and painful to work with.

Usage

'use strict';

const Famous = require('famousaf');

let famous = new Famous('mycookie');

//
// node-famousaf supports promises or standard callback format!
//

// Example #1: Promises
//
// NOTE: resp contains resp.data, resp.res (res is request#res)
//
famous.post('me', {})
  .catch(err => {
    console.error(err);
  })
  .then(resp => {
    console.log('got', resp.data);
  });

// Example #2: Use callbacks. can also use famous#post
famous.post('me', {}, (err, body, res) => {
  if(err) {
    return console.error(err);
  }

  console.log('got', body);
});

// Become a fan!
famous.fan('rylorjs')
  .catch(err => {
    return console.error('error', err);
  })
  .then(resp => {
    return console.log('got', resp.data);
  })

// Get information about a user.
famous.whois('rylorjs')
  .catch(err => {
    return console.error('error', err);
  })
  .then(resp => {
    return console.log('got', resp.data);
  })

// get information about "you"
famous.me()
  .catch(err => {
    return console.error('error', err);
  })
  .then(resp => {
    return console.log('got', resp.data);
  })

// use a stream.
let stream = famous.stream();

stream.on('message', (data) => {
  console.log('STREAM: got', data);
});

stream.on('open', () => {
  console.log('STREAM: is open');
})

// get the famous API version.
famous.APIVersion()
  .then(resp => {
    console.log(resp.data.api);
  })

Reporting Errors

Oh no! You ran into an error!

Here's what you should before reporting an error,

First, enable debug logging by doing either:

# Linux
export DEBUG=famous

or

:: Windows
SET DEBUG=famous

Then make sure to write an issue with a format like:

## What was expected

<expected output or action>

## What went wrong

<crashed or etc>

## Log

<code formatted output of program>

Donate

I'm a high schooler who can't really join the big leagues because, well, I'm in high school. I also work a part time job so I don't have much time to devote to programming, if you like what I do or use it, please feel free to Donate to me so I can maybe even make enough money on my work to not have to work a part time job!

Bitcoin: 1QKpBWmA23SwiZ27Y8xrQPYuGo7eSrA4TZ

License

MIT