ruddy
Version:
Modularized state-management tools for modern front-end applications. Manage dispatched messages in a clean and predictable way for either small or large scale projects
92 lines (49 loc) • 3.28 kB
JavaScript
'use strict';
exports.__esModule = true;
exports.makeWorkers = exports.getWorkers = undefined;
var _reject = require('ramda/src/reject');
var _reject2 = _interopRequireDefault(_reject);
var _map = require('ramda/src/map');
var _map2 = _interopRequireDefault(_map);
var _pathOr = require('ramda/src/pathOr');
var _pathOr2 = _interopRequireDefault(_pathOr);
var _compose = require('ramda/src/compose');
var _compose2 = _interopRequireDefault(_compose);
var _call = require('ramda/src/call');
var _call2 = _interopRequireDefault(_call);
var _converge = require('ramda/src/converge');
var _converge2 = _interopRequireDefault(_converge);
var _test = require('ramda/src/test');
var _test2 = _interopRequireDefault(_test);
var _unless = require('ramda/src/unless');
var _unless2 = _interopRequireDefault(_unless);
var _replace = require('ramda/src/replace');
var _replace2 = _interopRequireDefault(_replace);
var _pipe = require('ramda/src/pipe');
var _pipe2 = _interopRequireDefault(_pipe);
var _always = require('ramda/src/always');
var _always2 = _interopRequireDefault(_always);
var _T = require('ramda/src/T');
var _T2 = _interopRequireDefault(_T);
var _identity = require('ramda/src/identity');
var _identity2 = _interopRequireDefault(_identity);
var _invoker = require('ramda/src/invoker');
var _invoker2 = _interopRequireDefault(_invoker);
var _is = require('ramda/src/is');
var _is2 = _interopRequireDefault(_is);
var _cond = require('ramda/src/cond');
var _cond2 = _interopRequireDefault(_cond);
var _workerize = require('workerize');
var _workerize2 = _interopRequireDefault(_workerize);
var _util = require('../util');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-undef */
var hasWorkers = typeof Worker !== 'undefined' && Worker !== null && typeof Blob !== 'undefined' && Blob !== null;
/* eslint-enable no-undef */
var makeWorkerString = (0, _cond2.default)([[(0, _is2.default)(Function), (0, _invoker2.default)(0, 'toString')], [(0, _is2.default)(String), _identity2.default], [_T2.default, (0, _always2.default)('')]]);
var makeExportable = (0, _pipe2.default)((0, _replace2.default)(/^(\s*)\(/m, 'export const run = ('), (0, _replace2.default)(/^(\s*)const/m, 'export const'), (0, _replace2.default)(/^(\s*)function\s*\(/m, 'export function run('), (0, _replace2.default)(/^(\s*)function\s+/m, 'export function '), (0, _replace2.default)(/^(\s*)function\*\s+/m, 'export function* '), (0, _replace2.default)(/^(\s*)async\s+\(/m, 'export const run = async ('), (0, _replace2.default)(/^(\s*)async\s+function\s*\(/m, 'export async function run('));
var makeWorker = (0, _pipe2.default)(makeWorkerString, makeExportable, (0, _unless2.default)((0, _test2.default)(/^\s*$/), function (str) {
return (0, _workerize2.default)('' + str);
}));
var getWorkers = exports.getWorkers = (0, _converge2.default)(_call2.default, [(0, _compose2.default)(_util.coerceToFn, (0, _pathOr2.default)({}, ['options', 'workers'])), _identity2.default]);
var makeWorkers = exports.makeWorkers = (0, _pipe2.default)(getWorkers, (0, _map2.default)(hasWorkers ? makeWorker : (0, _pipe2.default)(makeWorkerString, makeExportable)), (0, _reject2.default)((0, _test2.default)(/^\s*$/)));