@promises/to-callback
Version:
To Callback is package from Promises library
101 lines (90 loc) • 3.51 kB
JavaScript
/**
* @module @promises/to-callback/fp
* @copyright © 2017 Yisrael Eliav <yisraelx@gmail.com> (https://github.com/yisraelx)
* @license MIT
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.PF = global.PF || {})));
}(this, (function (exports) { 'use strict';
/**
* @module @pakal/arity
* @copyright © 2018 Yisrael Eliav <yisraelx@gmail.com> (https://github.com/yisraelx)
* @license MIT
*/
var FUNCTIONS = {};
function arity(fn, length) {
if (length === void 0) { length = fn.length; }
if (!FUNCTIONS[length]) {
var params = [];
for (var index = 0; index < length; index++) {
params.push("p" + index);
}
FUNCTIONS[length] = new Function("fn", "return function (" + params.join(', ') + "){\n return fn.apply(this, arguments);\n };");
}
return FUNCTIONS[length](fn);
}
/**
* @module @pakal/curry
* @copyright © 2018 Yisrael Eliav <yisraelx@gmail.com> (https://github.com/yisraelx)
* @license MIT
*/
var __ = { '@@functional/placeholder': true };
function isPlaceholder(arg) {
return typeof arg === 'object' && arg['@@functional/placeholder'] === true;
}
function curry(fn, length) {
if (length === void 0) { length = fn.length; }
var next = function (previousArgs, count) {
var nextLength = length - count;
return arity(function () {
var currentLength = arguments.length < length ? arguments.length : length;
var currentArgs = [].concat(previousArgs);
var currentCount = count;
var pos = 0;
for (var i = 0; i < currentLength; i++) {
var arg = arguments[i];
while (pos < length && !isPlaceholder(currentArgs[pos])) {
pos++;
}
if (!isPlaceholder(arg)) {
currentCount++;
currentArgs[pos] = arg;
}
pos++;
}
return currentCount >= length ? fn.apply(this, currentArgs) : next(currentArgs, currentCount);
}, nextLength);
};
var args = Array.apply(null, Array(length)).map(function () { return __; });
return next(args, 0);
}
function _curry(fn, length) {
if (length === void 0) { length = fn.length; }
return curry((function () {
var length = arguments.length;
var args = Array(length);
if (length) {
args[0] = arguments[--length];
for (var i = 0; i < length; i++) {
args[i + 1] = arguments[i];
}
}
return fn.apply(this, args);
}), length);
}
function toCallback(value, callback) {
return Promise
.resolve(value)
.then(function (value) {
return callback(null, value);
}, callback);
}
var curriedToCallback = _curry(toCallback);
exports.default = curriedToCallback;
exports.__ = __;
Object.defineProperty(exports, '__esModule', { value: true });
exports.toCallback = exports.default;
})));
//# sourceMappingURL=bundle.umd.js.map