JSPM

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

Get separately non-callback arguments in `.arguments` and the last argument if it [is-callback-function][] in `.callback`. It also works like [sliced][], but returns object with `.arguments` and `.callback` properties.

Package Exports

  • handle-arguments

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 (handle-arguments) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

handle-arguments npmjs.com The MIT License npm downloads

Get separately non-callback arguments in .arguments and the last argument if it is-callback-function in .callback. It also works like sliced, but returns object with .arguments and .callback properties.

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

Install

npm i handle-arguments --save

Usage

For more use-cases see the tests

const handleArguments = require('handle-arguments')

handleArguments

Get separately non-callback arguments in .arguments, and the last function if it is-callback-function in .callback. Signature is like sliced, it works almost the same way, but returns object with .arguments and .callback properties.

Params

  • argz {Array|Arguments}: Arguments object or array to eat.
  • names {Array|Number}: If array directly passed to is-callback-function, otherwise to sliced.
  • index {Number}: Passed directly to sliced if number.
  • returns {Object}

Example

var handle = require('handle-arguments')

function fixture () {
  return handle(arguments)
}

function cb () {}
function noop () {}

console.log(fixture(1, 2, 3, 4).arguments) // => [1, 2, 3, 4]
console.log(fixture(1, 2, 3, 4).callback) // => false

console.log(fixture(1, 2, cb).arguments) // => [1, 2]
console.log(fixture(1, 2, cb).callback) // => [Function: cb]

console.log(fixture(1, 2, noop).arguments) // => [1, 2, noop]
console.log(fixture(1, 2, noop).callback) // => false

// treat functions named `noop` or `foo` as callback
function fn () {
  return handle(arguments, ['foo', 'noop'])
}

console.log(fn(1, 2, 3, noop).arguments) // => [1, 2, 3]
console.log(fn(1, 2, 3, noop).callback) // => [Function: noop]

Instead of commonly used and wrong pattern

It is part of "Optiomization Killers" and needed very much, so we need correct pattern to reuse.

function fixture () {
  var args = [].slice.call(arguments)
  var len = args.length
  var callback = args[len - 1]

  if (typeof callback === 'function') {
    args = args.slice(0, -1)
    callback.apply(null, [null].concat(args))
  }
  return args
}

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