Have ideas to improve npm?Join in the discussion! ¬Ľ

    always-callback

    1.0.0¬†‚Äʬ†Public¬†‚Äʬ†Published

    always-callback npmjs.com The MIT License

    Create callback api for given sync function. Guarantee that given function (sync or async, no matter) will always have callback api and will handle errors correctly.

    code climate standard code style travis build status coverage status dependency status

    Install

    npm i always-callback --save
    npm test
    

    Usage

    For more use-cases see the tests

    • <fn> {Function} function to transform
    • return {Function} async function that must have callback

    It is useful for control-flow and hybrid APIs

    Example

    var fs = require('fs')
    var alwaysCallback = require('always-callback')
     
    // if sync function given, transform it to async
    var parse = alwaysCallback(JSON.parse)
    var stringify = alwaysCallback(JSON.stringify)
    var readFile = alwaysCallback(fs.readFileSync)
     
    // if asynchronous function given, it remains async
    var statFile = alwaysCallback(fs.stat)
     
    parse('{"foo":"bar"}', function (err, res) {
      console.log(err) //=> null
      console.log(res) //=> { foo: 'bar' }
    })
     
    stringify({foo: 'bar', baz: 'qux'}, null, 2, function (err, res) {
      //=> it would prettify and stringify json
      console.log(err) //=> null
      console.log(res)
      //=> {
      //   "foo": "bar",
      //   "baz": "qux"
      // }
    })
     
    readFile('./package.json', 'utf8', function (err, res) {
      console.log(err) //=> null
      console.log(res) //=> { name: 'always-callback', ... }
    })
     
    statFile('./package.json', function (err, res) {
      console.log(err) //=> null
      console.log(res) //=> { dev: 64770, mode: 33204, ... }
    })

    Related

    • make-callback: Make synchronous function to support callback api
    • handle-callback: Initial step for creating hybrid APIs, used by hybridify. Handle callback in promise - give promise and callback return promise.
    • handle-arguments: Handles given Arguments object - return separatly last argument (commonly callback) and other arguments as Array. Useful in node-style callback flow.
    • manage-arguments: Prevents arguments leakage - managing arguments. From Optimization killers by Petka Antonov.
    • is-async-function: Check that given function is async (callback) function or not. Trying to guess that based on check if callback or cb exists in function arguments.
    • is-sync-function: Opposite of is-async-function. Check that given function is synchronous.
    • is-empty-function: Checks the given function (or fn.toString()) is with empty body - dont have body.

    Contributing

    Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
    But before doing anything, please read the CONTRIBUTING.md guidelines.

    Charlike Make Reagent new message to charlike freenode #charlike

    tunnckocore.tk keybase tunnckocore tunnckoCore npm tunnckoCore twitter tunnckoCore github

    Install

    npm i always-callback

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar