double-double-wrapperdeprecated

A wrapper for in-n-out to add resharing and caching of geofences without intermixing with usage logic

Usage no npm install needed!

<script type="module">
  import doubleDoubleWrapper from 'https://cdn.skypack.dev/double-double-wrapper';
</script>

README

stable NPM version Build Status Coverage Status Dependency Status

double-double-wrapper

A wrapper for in-n-out to add resharing and caching of geofences without intermixing with usage logic

Example

var DoubleDoubleWrapper = require("double-double-wrapper");

var doubleDouble = new DoubleDoubleWrapper({
    cache: undefined // set this to an ES6 map-like object (async instead of sync, though)
});                  // if you want a different caching store

doubleDouble.getGeofence('geofenceName', verticesArrayofArrays, granularityInteger, function(err, geofence) {
    geofence.inside([0, 0]); // Boolean true/false indicating whether or not that point is in the polygon
});

doubleDouble.getGeofence('geofenceName', function(err, geofence) {
    console.log('after being defined, only need to reference by id');
});

doubleDouble.geoGeofence('geofence2', verticesArrayofArrays, function(err, geofence) {
    console.log('the granularity is not needed, but is useful for tuning the fast lookup table');
});

doubleDouble.getGeofenceGroup('groupOfGeofences', {
    regionA: {
        whiteoutGfs: [{
            vertices: regionToInclude,
            granularity: granularity1
        }, {
            vertices: anotherRegionToInclude
        }],
        blackoutGfs: [{
            vertices: regionToExclude
        }]
    },
    regionB: {
        whiteoutGfs: [{
            vertices: thirdRegionToInclude
        }]
    }
}, function(err, geofenceGroup) {
    geofenceGroup.isValidKey([0, 0], 'regionA'); // Determines if the point is in any of the whiteout
                                                 // geofences and not in any of the blackout geofences
                                                 // for the the regionA definition
    geofenceGroup.isValidKey([0, 0], 'regionB'); // Ditto for the second region
    geofenceGroup.getValidKeys([0, 0]); // Returns an array of regions the point is in
});

doubleDouble.getGeofenceGroup('groupOfGeofences', function(err, geofenceGroup) {
    console.log('similarly get just by the id if already defined');
    console.log('if the data is provided again, it WILL NOT rebuild all of those geofences');
    console.log('it will use the already-built version, instead, to avoid excessive CPU burn');
});

Installation

npm install double-double-wrapper

Tests

npm test

Contributors

  • David Ellis