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

node-geocacher

v0.0.9

Published

Extends node-geocode and provides caching of results into Mongoose

Downloads

11

Readme

node-geocacher

Provides a wrapper to node-geocode allowing for self rate limiting and caching of results.

Whilst using node-geocode on a server enviroment you may run into the rate limits imposed by Google etc (10 requests per second)

node-geocacher provides both geocode and batchGeocode just like node-geocode, but will review its cache, check if the cache entry exists or has expired, then perform a lookup that is queued by function-rate-limit module

Cache storage

Cache storage is provided by a Mongoose model, this allows for central storage among nodes as well as fast searching of the cache

Each cached geocode will store the address, coordinates (latitutude/longitude) and an expiry date

The expiry period is defined when adding the module

Usage

// Define the provider, refer to node-geocode for more info
var geocoderProvider = 'google' 

// Define the http adapter, refer to node-geocode for more info
var httpAdapter = 'http'

// Define the provider, refer to node-geocode for more info
var extra = { region: 'Australia' } 

// How long cache entry will sustain
var cacheExpiry = 86400000; 

// How long is the interval
var rateLimitInterval = 1000; 

// How many times a request can be made during the interval
var rateLimitPerInterval = 5; 

// Database location
var geocacher_db = 'mongodb://localhost/geocache'

// Define geocode and geocacher modules, passing various configuration data
var geocoder = require('node-geocoder')(geocoderProvider, httpAdapter, extra)
var geocacher = require('geocacher')(geocoder, geocacher_db, cacheExpiry, rateLimitInterval, rateLimitPerInterval);


// Exectute batchGeocode
geocacher.batchGeocode(['address1', 'address2'], function(err, results) {
  if (err) console.log(err)
  console.log(results)
});