Extract the options and callback from a function's arguments easily
var log = console.log.bind(console)
var extractOptsAndCallback = require('extract-opts')
// fs.readFile(filename, [options], callback)
function readFile(filename, opts, next) {
// Extract options and callback
var args = extractOptsAndCallback(opts, next)
opts = args[0]
next = args[1]
// Forward for simplicities sake
require('fs').readFile(filename, opts, next)
}
// Test it
readFile('package.json', log) // works with no options
readFile('package.json', null, log) // works with null options
readFile('package.json', { next: log }) // works with just options
Extract Options and Callback also supports a third argument.
You can use this third argument to customize the completionCallbackNames
property that defaults to ['next']
.
This is useful if your completion callback has other names besides next
.
Allowing you to do the following:
var log = console.log.bind(console)
function extractOptsAndCallback(opts, next, config) {
if (config == null) config = {}
if (config.completionCallbackNames == null)
config.completionCallbackNames = ['next', 'complete', 'done']
return require('extract-opts')(opts, next, config)
}
// The readFile method as before
// Test it
readFile('package.json', { next: log }) // works the standard completion callback name
readFile('package.json', { complete: log }) // works with our custom completion callback name
readFile('package.json', { done: log }) // works with our custom completion callback name
- Install:
npm install --save extract-opts
- Import:
import * as pkg from ('extract-opts')
- Require:
const pkg = require('extract-opts')
<script type="module">
import * as pkg from '//dev.jspm.io/extract-opts@5.9.0'
</script>
This package is published with the following editions:
extract-opts
aliasesextract-opts/index.cjs
which uses the Editions Autoloader to automatically select the correct edition for the consumer's environmentextract-opts/source/index.js
is ESNext source code for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesextract-opts/edition-browsers/index.js
is ESNext compiled for web browsers with Require for modulesextract-opts/edition-node-4/index.js
is ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules
Discover the release history by heading on over to the HISTORY.md
file.
Discover how to contribute via the CONTRIBUTING.md
file.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Benjamin Lupton — view contributions
- Matt Bierner — view contributions
- Sean Fridman — view contributions
- Andrew Nesbitt — Software engineer and researcher
- Balsa — We're Balsa, and we're building tools for builders.
- Codecov — Empower developers with tools to improve code quality and testing.
- Poonacha Medappa
- Rob Morris
- Sentry — Real-time crash reporting for your web apps, mobile apps, and games.
- Syntax — Syntax Podcast
- Andrew Nesbitt
- Armen Mkrtchian
- Balsa
- Chad
- Codecov
- dr.dimitru
- Elliott Ditman
- entroniq
- GitHub
- Hunter Beast
- Jean-Luc Geering
- Michael Duane Mooring
- Michael Harry Scepaniak
- Mohammed Shah
- Mr. Henry
- Nermal
- Pleo
- Poonacha Medappa
- Rob Morris
- Robert de Forest
- Sentry
- ServieJS
- Skunk Team
- Syntax
- WriterJohnBuck
Unless stated otherwise all works are:
- Copyright © Benjamin Lupton
and licensed under: