@marcopeg/utils

Javascript utils for server and client projects

Stats

StarsIssuesVersionUpdatedCreatedSize
@marcopeg/utils
102.0.12 years ago3 years agoMinified + gzip package size for @marcopeg/utils in KB

Readme

utils

This is an opinionated set of personal javascript utilities that I use to share from project to project and I'm tired to copy over.

Why?

Point n.1: Many great libraries have huge footprint. Here I aim for the barebone and allow to cherry pick each module seapratedly.

Point n.2: Sometimes it's just faster to DIY. I plan to keep this library as a personal API and implement the functions with better open source libraries if/when I find them.

Point n.3: If Facebook does it (fbjs), why shouldn't I? :-)

Point n.4: No backward compatibility. I target NodeJS from version 9.x and modern web browsers. There is no transpilation that will bloat the code.

Modules

cancelEvent

const cancelEvent = require('@marcopeg/utils/lib/cancel-event)

// use it as simple function with an event as argument
const onClick = (evt) => {
    cancelEvent(evt)
    ...
    my handler code
}

// @TODO: use it as middleware
const onClick = cancelEvent((evt) => {
    ... my handler
})

config

const config = require('@marcopeg/utils/lib/config)

// will trigger an error if the env variable is not defined
const serverPort = config.get('SERVER_PORT')

// will return a default vailue if the env variable is not defined
const appName = config.get('APP_NAME', 'Default App Name')

// (process.env.NODE_ENV === 'development')
if (config.isDev()) {
    ...
}

INIT: working with ParcelJS I came across a glitch. ParcelJS does not populate the "process.env" like in Webpack (or NodeJS) and yoo must access the variable by writing the full "process.env.VAR_NAME" in the code which I believe is then substituted with the value itself.

To make config compatible you need to initialize it with all the "hard coded" values:

const config = require('@marcopeg/utils/lib/config)
config.init({
    NODE_ENV: process.env.NODE_ENV,
    NOT_DEFINED: process.env.NOT_DEFINED, // will be "undefined"
})

console.log(config.get('NOT_DEFINED', 'default'))
//-> "default"

getErrorOrigin

Improve errors stack trace

pause

const pause = require('@marcopeg/utils/lib/pause)

async function foo () {
    console.log('before')
    await pause(2000) // stop process for 2s
    console.log('after')
}

request

Wraps isomorphic fetch with some basic utility functions. (this can be optimized a lot)

truncate

const truncate = require('@marcopeg/utils/lib/truncate)

truncate('123456789', 5, '...')
-> 1...9

Logger

const logger = require('@marcopeg/utils/lib/logger')
logger.init()
logger.logInfo('foo)

INIT: this module needs to be initialize so to read (and cache) the enviroment LOG_LEVEL, or to explicitly receive a log level via first param

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.