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 🙏

© 2024 – Pkg Stats / Ryan Hefner

gist-db

v0.1.7

Published

Treat your gist account like a database

Downloads

38

Readme

:cloud: Gist-DB :cloud:

Treat your gist account like a database. Powered by TaffyDB and Github.

npm downloads npm version js-standard-style

Install

npm install --save gist-db

Usage

var config = {
  github: {
    username: "mcwhittemore"
  }
}

var db = require("gist-db")(config);

db.event.on('refreshing', function(){
  //MIGHT WANT TO LOCK DOWN THINGS FOR A BIT
  console.log("LETS DO THIS");
});

db.event.on('refreshed', function(err){
  db().each(function(file){
    console.log(file);
  });
});

File Object structure

{
  id = gist_id + "_" + filename,
  filename = filename,
  gist_id = gist_id,
  error: undefined,
  raw: "THE RAW VALUE OF THE FILE",
  type: "mime type",
  language: "language the file is written in",
  raw_url: "https path to the raw text version of the file",
  size: numeric size of the file,
  gist: {
    id: gist_id
    public: boolean,
    created_at: date object,
    updated_at: date object,
    description: "the gist description"
  }
}

Demo

# Clone the repository
git clone https://github.com/pinn3/gist-db

# Run the demo! This will also install dependencies and run the build script
npm run demo

API

Please refer to the TaffyDB docs for more details

GISTDB(config, fileInit, fileSave)

Create a new gist-db.

Parameters

  • config: A settings object.
Required: {
  github:{
    username:"SOME_USER_NAME"
  }
}

Defaults: {
  refreshMin: 10,
    github: {
      per_page: 100,
      timeout: 5000,
      version: "3.0.0"
    },
    local: {
      save: "NEVER", //NEVER, ON_REFRESH, ALWAYS 
      location: undefined
    }
}

Available: {
  refreshMin: 10,
  github: {
    per_page: 100,
    timeout: 5000
    version: "3.0.0",
    authenticate: {
      type: "basic or oauth",
      username: "your_username_if_basic",
      password: "your_password_if_basic",
      token: "your_oauth_token_if_oauth"
    },
    local: {
      save: "NEVER OR NEVER OR ON_REFRESH OR ALWAYS"
      location: "path and filename"
    }
  }
}
  • fileInit: function(file). A function that returns the file obj if it should be added to the DB and undefined if it should be excluded.

  • fileSave: function(file, callback). A function that allows for further parameter work on files after the raw data has been received. A functioning implementation of this MUST pass the file object as a parameter to callback to save changes to the DB. Note: this will perform an update to the database.

db({field:value})

  • TaffyDB: Yes

  • Returns: All rows that meet the passed criteria. Not passing an object, will return all rows.

db.insert({})

Inserts records into the database.

  • TaffyDB: Yes
  • Returns: A query pointing to the inserted records

db.github

Full use of the github module passed the github subsection of your config file.

db.event

An implementation of require("events").EventEmitter

db.event.on('refreshing', function(){})

Use to be notified when gist-db is connecting gist for a refresh.

db.event.on('refreshed', function(err){})

Use to be notified when gist-db is done its current refresh. If err is set, this refresh was ended due to error.

db.event.on('file_error', function(err, file){})

Use to be notified of errors in gathering data on the gist files.

Parameters

  • err: The error object that triggered this event
  • file: The file object that was being gathered when the error occurred

db.event.on('github_error', function(err, res){})

Use to be notified of errors when connecting with github.

Parameters

  • err: the github module error object that triggered this event

  • res: The github module response object. Might contain good data about the error.

Things to be done

0.1.10

  • Add tests

0.2.0

  • Add Update gist.github
  • Add Insert gist.github
  • Add Delete gist.github

Licenses

All code not otherwise specified is released under the MIT License.

All code found in the node_modules directory is Copyrighted by its creators. Please see each module for further details.