JSPM

coffeelint-multiple-callback

0.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q33293F
  • License MIT

Coffeelint rule that checks for callbacks being called multiple times

Package Exports

  • coffeelint-multiple-callback

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (coffeelint-multiple-callback) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

coffeelint-multiple-callback

CoffeeLint rule that finds instances where callbacks might be called more than once or not at all.

This code is in the very early stages of development. If you find cases where it's broken, please add example test fixtures. For lines in tests that should trigger an error, add the comment # HIT to the end of the line. The tests go through line by line and verify that lines with that comment trigger a linting error and all other lines do not.

Examples

These functions have the potential of calling cb() multiple times, and is likely an error:

badFunc = (err, cb)->
  cb err
  cb err # BAD
  return
badIf = (err, cb)->
  if err
    cb err

  cb null # BAD
  return

These functions are okay, since they only call the callback once no matter how the logic runs:

goodIf = (err, cb)->
  if err
    cb err
  else
    cb null
  return
goodIf2 = (err, cb)->
  if err
    cb err
    return

  cb null
  return

Installation

npm install coffeelint-multiple-callback

Usage

Add the following configuration to coffeelint.json:

"multiple_callback": {
  "module": "coffeelint-multiple-callback"
}

Configuration

There are currently no configuration options.

Contributing

I don't know what I'm doing. I just jumped in with an idea and tried to get it to work. Please assist if this is something you understand or have ideas on how to handle this better.