UNPKG

fluid-func

Version:

A way to write your code with functional programming in mind.

103 lines (89 loc) 3.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); exports.isValidJson = isValidJson; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var generateUUID = exports.generateUUID = function generateUUID() { var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c == 'x' ? r : r & 0x3 | 0x8).toString(16); }); return uuid; }; var batchIn = exports.batchIn = function batchIn(object, next, done) { var keys = Object.keys(object); batchForObject(keys, object, next, done); }; function batchForObject(keys, object, next, done) { var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; if (index < keys.length) { var value = object[keys[index]]; next(value, function () { batchForObject(keys, object, next, done, ++index); }); } else { done(); } } var batch = exports.batch = function batch(array, next, done) { var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; if (index < array.length) { var value = array[index]; next(value, function () { batch(array, next, done, ++index); }); } else { done(); } }; function isValidJson(json) { try { JSON.parse(json); return true; } catch (e) { return false; } } var CollectPromiseResult = exports.CollectPromiseResult = function () { function CollectPromiseResult(promises) { _classCallCheck(this, CollectPromiseResult); this.promises = promises; } _createClass(CollectPromiseResult, [{ key: 'collect', value: function collect(callback) { var _this = this; var results = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; if (this.promises.length > 0) { var promise = this.promises.shift(); promise.then(function (data) { results.push({ success: true, data: data }); new CollectPromiseResult(_this.promises).collect(callback, results); }).catch(function (error) { results.push({ failed: true, error: error }); new CollectPromiseResult(_this.promises).collect(callback, results); }); } else { var error = results.filter(function (result) { return result.failed; }).map(function (result) { return result.error; }); var success = results.filter(function (result) { return result.success; }).map(function (result) { return result.data; }); callback({ error: error, success: success }); } } }]); return CollectPromiseResult; }();