diff options
Diffstat (limited to 'node_modules/option-chain')
-rw-r--r-- | node_modules/option-chain/index.js | 55 | ||||
-rw-r--r-- | node_modules/option-chain/license | 21 | ||||
-rw-r--r-- | node_modules/option-chain/package.json | 41 | ||||
-rw-r--r-- | node_modules/option-chain/readme.md | 131 |
4 files changed, 0 insertions, 248 deletions
diff --git a/node_modules/option-chain/index.js b/node_modules/option-chain/index.js deleted file mode 100644 index 99798bbea..000000000 --- a/node_modules/option-chain/index.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; -module.exports = (options, fn, target) => { - const chainables = options.chainableMethods || {}; - const spread = options.spread; - const defaults = Object.assign({}, options.defaults); - - function extend(target, getter, ctx) { - for (const key of Object.keys(chainables)) { - Object.defineProperty(target, key, { - enumerable: true, - configurable: true, - get() { - return wrap(getter, chainables[key], ctx || this); - } - }); - } - } - - function wrap(createOpts, extensionOpts, ctx) { - function wrappedOpts() { - return Object.assign(createOpts(), extensionOpts); - } - - function wrappedFn() { - let args = new Array(arguments.length); - - for (let i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - if (spread) { - args.unshift(wrappedOpts()); - } else { - args = [wrappedOpts(), args]; - } - - return fn.apply(ctx || this, args); - } - - extend(wrappedFn, wrappedOpts, ctx); - - return wrappedFn; - } - - function copyDefaults() { - return Object.assign({}, defaults); - } - - if (target) { - extend(target, copyDefaults); - return target; - } - - return wrap(copyDefaults); -}; diff --git a/node_modules/option-chain/license b/node_modules/option-chain/license deleted file mode 100644 index ad5d021ed..000000000 --- a/node_modules/option-chain/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) James Talmage <james@talmage.io> (github.com/jamestalmage) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/option-chain/package.json b/node_modules/option-chain/package.json deleted file mode 100644 index 30149f0f4..000000000 --- a/node_modules/option-chain/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "option-chain", - "version": "1.0.0", - "description": "Use fluent property chains in lieu of options objects", - "license": "MIT", - "repository": "avajs/option-chain", - "author": { - "name": "James Talmage", - "email": "james@talmage.io", - "url": "github.com/jamestalmage" - }, - "engines": { - "node": ">=4" - }, - "scripts": { - "test": "xo && nyc ava" - }, - "files": [ - "index.js" - ], - "keywords": [ - "option", - "options", - "chain", - "chains", - "chainable", - "fluent" - ], - "devDependencies": { - "ava": "^0.19.1", - "coveralls": "^2.11.6", - "nyc": "^10.3.2", - "xo": "^0.18.2" - }, - "nyc": { - "reporter": [ - "lcov", - "text" - ] - } -} diff --git a/node_modules/option-chain/readme.md b/node_modules/option-chain/readme.md deleted file mode 100644 index a2f976b70..000000000 --- a/node_modules/option-chain/readme.md +++ /dev/null @@ -1,131 +0,0 @@ -# option-chain [](https://travis-ci.org/avajs/option-chain) [](https://coveralls.io/github/avajs/option-chain?branch=master) - -> Use fluent property chains in lieu of options objects - - -## Install - -``` -$ npm install --save option-chain -``` - - -## Usage - -```js -const optionChain = require('option-chain'); - -const optionDefinition = { - defaults: { - bar: false - }, - chainableMethods: { - foo: {foo: true}, - notFoo: {foo: false}, - bar: {bar: true} - } -}; - -function printOptionsAndArgs(options, args) { - console.log(options); - - if (args.length) { - console.log(args); - } -} - -const fn = optionChain(optionDefinition, printOptionsAndArgs); - -fn(); -//=> [{bar: false}] -fn.bar(); -//=> [{bar: true}] -fn.foo.bar(); -//=> [{foo: true, bar: false}] - -fn.foo('a', 'b'); -//=> [{foo: true, bar: false}] -//=> ['a', 'b'] -``` - - -## API - -### optionChain(options, callback, [target]) - -#### options - -##### chainableMethods - -*Required*<br> -Type: `Object` - -A map of chainable property names to the options set by adding property to the chain. - -Given the following: - -```js -const chainableMethods = { - foo: {foo: true}, - notFoo: {foo: false}, - bar: {bar: true}, - both: {foo: true, bar: true} -} -``` - -Then: - -- `fn.foo` would set `foo` to `true`. -- `fn.bar` would set `bar` to `true`. -- `fn.both` sets both `foo` and `bar` to `true`. -- The last property in the chain takes precedence, so `fn.foo.notFoo` would result in `foo` being `false`. - - -##### defaults - -Type: `Object`<br> -Default: `{}` - -A set of default starting properties. - -##### spread - -Type: `boolean`<br> -Default: `false` - -By default, any arguments passed to the wrapper are passed as an array to the second argument of the wrapped function. When this is `true`, additional arguments will be spread out as additional arguments: - -```js -function withoutSpread(opts, args) { - let foo = args[0]; - let bar = args[1]; - // ... -} - -function withSpread(opts, foo, bar) { - // ... -} -``` - -#### callback - -Type: `Function` - -This callback is called with the accumulated options as the first argument. Depending on the value of `options.spread`, arguments passed to the wrapper will either be an array as the second argument or spread out as the 2nd, 3rd, 4th... arguments. - -#### target - -If supplied, the `target` object is extended with the property getters and returned. Otherwise a wrapper function is created for `options.defaults`, then that wrapper is extended and returned. - -*Hint:* If you want to extend a `target` and add a method that simply uses the defaults, add a chainable method definition with an empty spec: - -```js -const chainableMethods = { - defaultMethodName: {} -} -``` - - -## License - -MIT © [James Talmage](https://github.com/jamestalmage) |