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

babel-plugin-power-log

v0.1.3

Published

Automatically requires power-log logger

Downloads

6

Readme

power-log - logs expressions with Power Assert tooling

This project is built on top of power-assert by Takuto Wada (@twada).

Provided modules:

  • power-log - log function, formatter
  • babel-plugin-power-log - plugin that automatically requires power-log module when log function is used, and there is no such function in current scope. So you can skip writing `import log from 'power-log' every time you want to debug something.
  • babel-preset-power-log - preset that adds babel-plugin-power-log plugin and instruments code with babel-plugin-espower to make it all work.

Installation

npm install --save-dev babel-preset-power-log

Usage

Wrap any expression with pass-through log function to print it to console.

var data = { str: "apple pie" }
var key = 'str'
var result = log(`There is ${data[key].split(' ').length} words`)

Outputs:

# src/BlockDetails/Card.js:17

 log(`There is ${ data[key].split(' ').length } words`)
     |            |   ||    |          |               
     |            |   ||    |          2               
     |            |   ||    ["apple","pie"]            
     |            |   |"str"                           
     |            |   "apple pie"                      
     |            Object{str:"apple pie"}              
     "There is 2 words"                                

Alternatives

If all you need is several values in a way they are easily identified, you may simply wrap them in an object.

console.log({ data, key })

But there is cases where separate statement would not work. In following example functions might have side-effects so we can not call them several times and there is no room for separate statement.

const f = (a, b) => otherFunc() + foo(a, bar(b))

To get results of bar and foo invocations you can use this library

import log from 'power-log'
const f = (a, b) => otherFunc() + log(foo(a, bar(b)))

or define simple pass-through logging function similar to the one provided by this module

const log = arg => (console.log(arg), arg)
const f = (a, b) => otherFunc() + log(foo(a, log(bar(b))))

or refactor to multi-line version

import log from 'power-log'
const f = (a, b) => {
  const barResult = bar(b)
  const fooResult = foo(a, barResult)
  console.log({ barResult, fooResult })
  return otherFunc() + fooResult
}

if logged functions have no side-effects and it's ok to call them several times, you can use comma operator to inject console.log in the middle of statement.

const f = (a, b) => otherFunc() + (
  console.log({ barResult: bar(b), fooResult: foo(a, bar(b)) }),
  foo(a, bar(b))
)