123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- 'use strict';
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = autoInject;
- var _auto = require('./auto');
- var _auto2 = _interopRequireDefault(_auto);
- var _baseForOwn = require('lodash/_baseForOwn');
- var _baseForOwn2 = _interopRequireDefault(_baseForOwn);
- var _arrayMap = require('lodash/_arrayMap');
- var _arrayMap2 = _interopRequireDefault(_arrayMap);
- var _isArray = require('lodash/isArray');
- var _isArray2 = _interopRequireDefault(_isArray);
- var _trim = require('lodash/trim');
- var _trim2 = _interopRequireDefault(_trim);
- var _wrapAsync = require('./internal/wrapAsync');
- var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m;
- var FN_ARG_SPLIT = /,/;
- var FN_ARG = /(=.+)?(\s*)$/;
- var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
- function parseParams(func) {
- func = func.toString().replace(STRIP_COMMENTS, '');
- func = func.match(FN_ARGS)[2].replace(' ', '');
- func = func ? func.split(FN_ARG_SPLIT) : [];
- func = func.map(function (arg) {
- return (0, _trim2.default)(arg.replace(FN_ARG, ''));
- });
- return func;
- }
- function autoInject(tasks, callback) {
- var newTasks = {};
- (0, _baseForOwn2.default)(tasks, function (taskFn, key) {
- var params;
- var fnIsAsync = (0, _wrapAsync.isAsync)(taskFn);
- var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0;
- if ((0, _isArray2.default)(taskFn)) {
- params = taskFn.slice(0, -1);
- taskFn = taskFn[taskFn.length - 1];
- newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);
- } else if (hasNoDeps) {
-
- newTasks[key] = taskFn;
- } else {
- params = parseParams(taskFn);
- if (taskFn.length === 0 && !fnIsAsync && params.length === 0) {
- throw new Error("autoInject task functions require explicit parameters.");
- }
-
- if (!fnIsAsync) params.pop();
- newTasks[key] = params.concat(newTask);
- }
- function newTask(results, taskCb) {
- var newArgs = (0, _arrayMap2.default)(params, function (name) {
- return results[name];
- });
- newArgs.push(taskCb);
- (0, _wrapAsync2.default)(taskFn).apply(null, newArgs);
- }
- });
- (0, _auto2.default)(newTasks, callback);
- }
- module.exports = exports['default'];
|