fillopts

Partial application for functions that accept options objects.

Usage no npm install needed!

<script type="module">
  import fillopts from 'https://cdn.skypack.dev/fillopts';
</script>

README

fillopts

Partially applied functions are really cool. However, partial application doesn't work too well for functions that use objects to emulate named arguments. Since that's such a common idiom in JS, we made this library to handle it.

var
  xhr = require('some-xhr-lib'),
  fillopts = require('fillopts'); // Or use the global or AMD in the browser.

// Create a new function with some options prefilled.
var myXHR = fillopts(xhr, {method: 'GET'});

// Call our function with some more options.
myXHR({url: 'http://example.com'}, callback);

// The above is equivalent to this:
xhr({method: 'GET', url: 'http://example.com'}, callback);

or use chaining:

var myXHR = fillopts(xhr).withOpts({method: 'GET'});

myXHR({url: 'http://example.com'}, callback);

You can also fill opts that aren't in the first position by passing an index. All of the following are equivalent:

fillopts(f, {name: 'Crusher'}, 1)();
fillopts(f).withOpts({name: 'Crusher'}, 1)();
f(undefined, {name: 'Crusher'});