@nucleartide/dx

JavaScript without `try...catch`.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@nucleartide/dx
2601.1.04 years ago4 years agoMinified + gzip package size for @nucleartide/dx in KB

Readme

dx
JavaScript without try...catch.

Motivation

JavaScript expects you to handle errors with try...catch, but the syntax is somewhat inconvenient:

  1. You have to declare result variables separately from your function calls.

const userInput = 'fail'

let json
try {
  json = JSON.parse(userInput)
} catch (err) {
  console.error(err.stack)
}

// Do something with `json`...

Since we declare json separately, we can't declare json as a const binding.

  1. try...catch promotes catch-all error handling.

try {
  // A bunch of stuff happens...
  // ...
  // ...
} catch (err) {
  console.log('welp')
  console.error(err.stack)
}

You might want to handle errors in a more fine-grained way. But then you run into the verbosity of problem 1.

Enter dx

dx is a micro utility (it's just a few lines) that addresses the two pain points above.
import { dx } from '@nucleartide/dx'

const [res, err] = dx(JSON.parse)('invalid json')
if (err) {
  console.error(err.stack)
}

It allows you to place your declaration and function call on the same line. And it promotes a granular, per-function error handling style.
It also works with async functions:
import { dx } from '@nucleartide/dx'

function asyncHello(name) {
  return Promise.reject(`hello ${name}`)
}

;(async () => {
  const [res, err] = await dx(asyncHello)('jesse')
  if (err) {
    console.error(err.stack)
  }
})


Convinced?

npm install @nucleartide/dx


License

MIT
Jason Tu · GitHub @nucleartide · Twitter @nucleartide