phi-events
TypeScript icon, indicating that this package has built-in type declarations

1.8.4 • Public • Published

phi-events

phi-events is a utility logger to compare streams of events, for Node/Express and React routers.

It can be installed via git clone or NPM install.

GitHub: git clone https://github.com/turing-mine/phi-events.git

NPM: npm install phi-events

After an npm install your app's package.json should contain the dependency "phi-events": "^1.8.4"

Files and scripts

phi-events is comprised of two Node scripts, including their corresponding TypeScript files

logger.js

In your app, you can either import or require this module:

import Logger from 'phi-events'

const Logger = require('phi-events')

test-logger.js

test-logger.js can be run with the NPM test script command:

npm test

This test will perform 3 sanity checks, making sure events are being recorded, and returning the correct response payload.

Compiling

This module also includes logger.ts and test-logger.ts in the GitHub project. After installing it in your app, copy the ts files to your app's node_modules/phi-events directory, and run

node_modules/typescript/bin/tsc node_modules/phi-events/logger.ts

Usage

To begin using the logger function, add the following line to your code:

let eventLogger = Logger()

To add an event to the event series, call the function without any arguments:

eventLogger()

To get a series count for a pre-determined time span, pass the timespan in milliseconds. For instance, to get a count of the last 5 minutes of logged events, add this line to your code:

eventLogger(300000)

logger responses

The logger will return two types of data, depending on the request.

For eventLogger(), the logger will add a single timestamped event to the series, and return a string representation of a json object containing the timestamp:

{"timestamp": "1572323990919"}

For eventLogger(300000) (or any timespan in milliseconds), the following string will be returned with the series count for that timespan:

{"timestamp": "1572323990919", "count": "42"}

Sample code

You can use phi-events with an Express router

if (process.argv.length > 2){
    if (process.argv[2] == 'dev=true'){
        // Instantiate the logger
        let eventLogger = Logger()
        let myLogger = function (req, res, next) {
            let maxseries = 60000
            let firstCountStr = eventLogger(maxseries)
            let firstCount = JSON.parse(firstCountStr)
            let nextStampStr = eventLogger()
            let nextStamp = JSON.parse(nextStampStr)
            let nextCountStr = eventLogger(maxseries)
            let nextCount = JSON.parse(nextCountStr)
            console.log(`first: ${firstCount.count}   then: ${nextStamp.timestamp}   finally: ${nextCount.count}     req:   ${req.originalUrl}`)
            next()
        }
        router.use(myLogger)
    }
}

Caveats

The timespan of the event series is limited to the last 5 minutes of events. This value can be changed in one line of the logger.js file:

var baseLimit = 300000

This is the upper-limit of the series count that can be returned. Also, any event that is past the 5 minutes span of the current request will not be counted, and the entire series is periodically trimmed to the last 5 minutes from the current time.

Package Sidebar

Install

npm i phi-events

Weekly Downloads

1

Version

1.8.4

License

MIT

Unpacked Size

7.68 kB

Total Files

5

Last publish

Collaborators

  • zabinator