From 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 28 May 2017 00:38:50 +0200 Subject: add linting (and some initial fixes) --- node_modules/empower-core/index.js | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 node_modules/empower-core/index.js (limited to 'node_modules/empower-core/index.js') diff --git a/node_modules/empower-core/index.js b/node_modules/empower-core/index.js new file mode 100644 index 000000000..c72d327a0 --- /dev/null +++ b/node_modules/empower-core/index.js @@ -0,0 +1,79 @@ +/** + * empower-core - Power Assert feature enhancer for assert function/object. + * + * https://github.com/twada/empower-core + * + * Copyright (c) 2013-2016 Takuto Wada + * Licensed under the MIT license. + * https://github.com/twada/empower-core/blob/master/MIT-LICENSE.txt + */ +var create = require('core-js/library/fn/object/create'); +var assign = require('core-js/library/fn/object/assign'); +var defaultOptions = require('./lib/default-options'); +var Decorator = require('./lib/decorator'); +var define = require('./lib/define-properties'); +var slice = Array.prototype.slice; + +/** + * Enhance Power Assert feature to assert function/object. + * @param assert target assert function or object to enhance + * @param options enhancement options + * @return enhanced assert function/object + */ +function empowerCore (assert, options) { + var typeOfAssert = (typeof assert); + var enhancedAssert; + if ((typeOfAssert !== 'object' && typeOfAssert !== 'function') || assert === null) { + throw new TypeError('empower-core argument should be a function or object.'); + } + if (isEmpowered(assert)) { + return assert; + } + switch (typeOfAssert) { + case 'function': + enhancedAssert = empowerAssertFunction(assert, options); + break; + case 'object': + enhancedAssert = empowerAssertObject(assert, options); + break; + default: + throw new Error('Cannot be here'); + } + define(enhancedAssert, { _empowered: true }); + return enhancedAssert; +} + +function empowerAssertObject (assertObject, options) { + var config = assign(defaultOptions(), options); + var target = config.destructive ? assertObject : create(assertObject); + var decorator = new Decorator(target, config); + return assign(target, decorator.enhancement()); +} + +function empowerAssertFunction (assertFunction, options) { + var config = assign(defaultOptions(), options); + if (config.destructive) { + throw new Error('cannot use destructive:true to function.'); + } + var decorator = new Decorator(assertFunction, config); + var enhancement = decorator.enhancement(); + var powerAssert; + if (typeof enhancement === 'function') { + powerAssert = function powerAssert () { + return enhancement.apply(null, slice.apply(arguments)); + }; + } else { + powerAssert = function powerAssert () { + return assertFunction.apply(null, slice.apply(arguments)); + }; + } + assign(powerAssert, assertFunction); + return assign(powerAssert, enhancement); +} + +function isEmpowered (assertObjectOrFunction) { + return assertObjectOrFunction._empowered; +} + +empowerCore.defaultOptions = defaultOptions; +module.exports = empowerCore; -- cgit v1.2.3