good-path-glob

1.0.0 • Public • Published

good-path-glob

Glob based event filter stream for Good event from Hapi path.

Build Status Current Version

Usage

good-path-glob contains a PathGlob stream for filtering good events from hapi path with glob pattern.

Methods

PathGlob(events, [options])

Creates a new PathGlob transform stream where:

  • events an object where each key is a valid good event and the value is one of the following:
    • string - a glob pattern to include when filtering. '*' indicates no filtering.
    • array - array of path patterns to filter. [] indicates no filtering.
    • object - an object with the following values
      • include - string or array representing path pattern(s) to include when filtering
      • exclude - string or array representing path pattern(s) to exclude when filtering. exclude takes precedence over any include paths.
  • [options] configuration object that gets passed to the Node Stream.Transform constructor. Note objectMode is always true for all PathGlob objects.

PathGlob.subscription(events)

A static method on PathGlob that creates a new event subscription map where:

  • events the same arguments used in the PathGlob constructor.

Note: each subscription object is an instance of Minimatch class which helps check glob patterns.

const PathGlob = require('good-path-glob');
 
PathGlob.subscription({ request: '*', response: ['*.json', '/api/**'] });
 
// Results in
// {
//  request: { include: [], exclude: [] },
//  response: { include: [ Minimatch('*.json'), Minimatch('/api/**') ], exclude: [] } 
// }
 
PathGlob.subscription({ request: { exclude: '/debug/**' }, response: { include: '/api/**', exclude: ['/docs/**', '*.css'] } });
 
// Results in
// {
//  request: { include: [], exclude: [ Minimatch('debug/**') ] },
//  response: { include: [ Minimatch('api/**') ], exclude: [ Minimatch('/docs/**'), Minimatch('*.css') ] }
// }

Useful for creating an event subscription to be used with PathGlob.filter if you do not plan on creating a pipeline coming from good and instead want to manage event filtering manually.

PathGlob.filter(subscription, data)

Returns true if the supplied data.event + data.path should be reported based on subscription where:

  • subscription - a subscription map created by PathGlob.subscription().
  • data - event object emitted from good/hapi which may contain the following keys:
    • event - a string representing the event name of data
    • path - a string representing path associated pattern with this event.

Package Sidebar

Install

npm i good-path-glob

Weekly Downloads

1

Version

1.0.0

License

BSD-3-Clause

Last publish

Collaborators

  • rokoroku