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

data-of-the-rings

v1.0.0

Published

You know you love these movies, how 'bout you do some cool things with their data?

Downloads

1

Readme

Data Of The Rings

Coding Challenge SDK

This SDK is for a coding challenge. It lets you access an API for data on movies from a popular fantasy franchise.

Once you've installed the module...

Get a Token

Do this here.

Instantiate the SDK

const DOTR = require('data-of-the-rings')('<your-access-token>');

You can alternatively set your token in your environment as THE_ONE_API_ACCESS_TOKEN:

const DOTR = require('data-of-the-rings')();

Make Requests

async function askTheQuestion() {
  const movies = await DOTR.movies();
  return `Have you seen all these movies:\n${movies.map(m => m.name).join(', ')}?`;
}

Currently Available API

// Returns data around LOTR films
movies(filters: <optional, Filter object>)

// Returns a specific films data,
// requires an _id for the film from a call to `movies`
movie(id: <required, _id string>, filters: <optional, Filter object>)

// Return quotes from a specified film,
// As of this writing quotes only exist for the original LOTR Trilogy of films
quotes(id: <required, _id string>, filters: <optional, Filter object>)

Filter Results

Results can be filtered in a number of ways. Start by creating a filter object.

const myFilters = DOTR.newFilter();

And then add a filter, you can chain as many as you'd like:

myFilters.any("race", "hobbit", "dwarf").exists("spouse");

Then pass myFilters as the optional filters parameter in any of the calls above.

Supported Filters

.any(field, ...vals)  // Matches when the fields value equals any of the subsequent params
.none(field, ...vals) // Matches when the fields value doesn't equal any subsequent params

.exist(field) // Matches when the field exists on an object
.dne(field)   // Matches when the field does not exist

.gt(field, val)   // Matches when fields value is strictly greater than val
.gte(field, val)  // Matches when fields value is greater or equal to val
.lt(field, val)   // Matches when fields value is strictly less than val
.lte(field, val)  // Matches when fields value is less than or equal to val

Paging

You can also control paging behavior for calls using a filter object

.page(num)    // Which page of data do you want to request
.limit(num)   // How many documents per page (defaults to 100)
.offset(num)  // How many documents should we offset from the beginning

Thanks!

Have fun! Don't go putting on any rings with fiery script on them.