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

1.0.0-alpha • Public • Published

logsy

Build Status

Proxy factory for the console using ES6 Proxies (node + browser)

Quickstart

Install the package

npm install logsy

Import the package

import logsy from 'logsy'

logsy is a console log proxy, you can use it simply like this

logsy.log('Hello!')

Create a custom proxy using the factory function

const cool = logsy('[COOL]')

cool.log('<- was it?')
// [COOL] <- was it?

Checkout the possible options when creating your proxy

Options

interface Options {
  active?: (() => Boolean) | Boolean
  prefix?: (() => string) | string
  callback?: Callback
}

Options are pretty self explanatory.

const log = logsy({
  active: process.env.DISPLAY_LOG,
  prefix: `[MY LOG]`
  callback () {
    axios.post('/logger', { ...opts })
  }
})

Function resolving

Not covered yet

For each of them you can pass a function that will be interpreted at the moment it is called. For example:

let showLogs = true

const active = () => showLogs
const log = logsy({ active }).log

log('I am logged')

showLogs = false

log('I am not logged')

Type resolving

You can also pass values directly (for active, prefix and callback) and will be resolved based on its type

const error = logsy(process.env.DISPLAY_ERROR).error
const log = logsy(process.env.DISPLAY_LOG).log

Function resolving also works here if the function returns the good type

const log = logsy(() => true)

Chain proxies

You can chain the proxies, while using type resolving. If there is a property conflict, the last one will take over the firsts.

const log = logsy(proces.env.DISPLAY_ERROR)('[MY PREFIX]')

Compatibility

Logsy is built on top of Proxy object which is not available everywhere (browser compatibility) For the sake of keeping the library lightweight, it will be shipped without any polyfill by default. If Proxies aren't available, it will be redirected to the console object.

Drawbacks

While most console wrappers will mess with the call stack, using a Proxy allow logsy to keep line numbers and call stack untouched in your terminal / dev tools.

One major drawback is that to keep it like this, we can't proxy the apply on console methods, calling it would mess that up. Because of this, at the moment, information such as the parameters aren't available in the callback.

Readme

Keywords

none

Package Sidebar

Install

npm i logsy

Weekly Downloads

22

Version

1.0.0-alpha

License

ISC

Unpacked Size

16.8 kB

Total Files

9

Last publish

Collaborators

  • rayfranco