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

save-our-sanity

v1.0.1

Published

Logging object proxy for sanity checking

Downloads

7

Readme

Save Our Sanity

Quickly wrap any object in a logging object proxy that will log all access and manipulation of the proxied target.

Useful for instance to temporarily verify that a 3rd-party library really reads the expected keys from a passed opts hash. Or if a method you expect to be invoked really was called with expected arguments and what the produced return value was.

Pretty much a general purpose sanity checker, a companion tool for test driven development.

It currently supports logging for the following operations get, set, invoke and in. But feel free to implement additional logging hooks from the Reflect API if required.

Please avoid using this module in production, even though the performance impact should be minimal it will eventually flood your console with mostly useless information, unless ofcourse.. you're in a situation where you start questioning your own sanity.

Installation

Installation shouldn't be needed, because "SOS" should never be used in production. to install the module temporary while hacking on some random project:

npm i --no-save save-our-sanity

To install as a devel-dependency use the regular proceedure:

npm i --saveDev save-our-sanity
# or
yarn add -D save-our-sanity

Usage

const SOS = require('save-our-sanity')

const mObj = {
  a: 3,
  f (x) {
    return x + 5
  }
}

const proxy = SOS(mObj) // target can be anything

// All access is transparently proxied to original object
// but is also logged at the same time
const resA = proxy.a // => 3
const resB = proxy.f(2) // => 7
const resC = proxy.anUndefinedKey // => undefined
proxy.x = resA + resB // => 10

console.log('Results:', resA, resB, resC)

Running the above snippet produces the following output:

API

SOS(target, tag = 'SOS', opts = {})

Creates a new proxy with specified target, an optional log-tag and an optional opts object

tag - string, defaults to 'SOS'

opts.logger - function that will be invoked instead of the default debug logger

License

GNU GPLv3