@modern-js/plugin 1.21.5 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +22 -3
  2. package/dist/js/modern/farrow-pipeline/context.js +1 -8
  3. package/dist/js/modern/farrow-pipeline/counter.js +1 -3
  4. package/dist/js/modern/farrow-pipeline/pipeline.js +0 -16
  5. package/dist/js/modern/manager/async.js +8 -27
  6. package/dist/js/modern/manager/shared.js +3 -23
  7. package/dist/js/modern/manager/sync.js +10 -41
  8. package/dist/js/modern/utils/pluginDagSort.js +48 -0
  9. package/dist/js/modern/waterfall/async.js +0 -10
  10. package/dist/js/modern/waterfall/sync.js +0 -10
  11. package/dist/js/modern/workflow/async.js +0 -10
  12. package/dist/js/modern/workflow/parallel.js +0 -8
  13. package/dist/js/modern/workflow/sync.js +0 -8
  14. package/dist/js/node/farrow-pipeline/context.js +1 -10
  15. package/dist/js/node/farrow-pipeline/counter.js +1 -5
  16. package/dist/js/node/farrow-pipeline/index.js +0 -2
  17. package/dist/js/node/farrow-pipeline/pipeline.js +0 -23
  18. package/dist/js/node/index.js +0 -8
  19. package/dist/js/node/manager/async.js +8 -32
  20. package/dist/js/node/manager/index.js +0 -6
  21. package/dist/js/node/manager/shared.js +3 -32
  22. package/dist/js/node/manager/sync.js +10 -54
  23. package/dist/js/node/utils/pluginDagSort.js +55 -0
  24. package/dist/js/node/waterfall/async.js +0 -18
  25. package/dist/js/node/waterfall/index.js +0 -4
  26. package/dist/js/node/waterfall/sync.js +0 -18
  27. package/dist/js/node/workflow/async.js +0 -16
  28. package/dist/js/node/workflow/index.js +0 -6
  29. package/dist/js/node/workflow/parallel.js +0 -14
  30. package/dist/js/node/workflow/sync.js +0 -14
  31. package/dist/js/treeshaking/farrow-pipeline/context.js +1 -8
  32. package/dist/js/treeshaking/farrow-pipeline/counter.js +1 -3
  33. package/dist/js/treeshaking/farrow-pipeline/pipeline.js +0 -16
  34. package/dist/js/treeshaking/manager/async.js +6 -28
  35. package/dist/js/treeshaking/manager/shared.js +2 -46
  36. package/dist/js/treeshaking/manager/sync.js +9 -44
  37. package/dist/js/treeshaking/utils/pluginDagSort.js +74 -0
  38. package/dist/js/treeshaking/waterfall/async.js +0 -11
  39. package/dist/js/treeshaking/waterfall/sync.js +0 -8
  40. package/dist/js/treeshaking/workflow/async.js +0 -16
  41. package/dist/js/treeshaking/workflow/parallel.js +0 -8
  42. package/dist/js/treeshaking/workflow/sync.js +0 -6
  43. package/dist/types/manager/async.d.ts +0 -9
  44. package/dist/types/manager/sync.d.ts +0 -9
  45. package/dist/types/manager/types.d.ts +2 -9
  46. package/dist/types/utils/pluginDagSort.d.ts +1 -0
  47. package/package.json +5 -28
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dagSort = void 0;
7
+ const dagSort = (plugins, key = 'name', preKey = 'pre', postKey = 'post') => {
8
+ let allLines = [];
9
+ function getPluginByAny(q) {
10
+ const target = plugins.find(item => typeof q === 'string' ? item[key] === q : item[key] === q[key]);
11
+ // current plugin design can't guarantee the plugins in pre/post existed
12
+ if (!target) {
13
+ throw new Error(`plugin ${q} not existed`);
14
+ }
15
+ return target;
16
+ }
17
+ plugins.forEach(item => {
18
+ item[preKey].forEach(p => {
19
+ // compatibility: do not add the plugin-name that plugins not have
20
+ if (plugins.find(ap => ap.name === p)) {
21
+ allLines.push([getPluginByAny(p)[key], getPluginByAny(item)[key]]);
22
+ }
23
+ });
24
+ item[postKey].forEach(pt => {
25
+ // compatibility: do not add the plugin-name that plugins not have
26
+ if (plugins.find(ap => ap.name === pt)) {
27
+ allLines.push([getPluginByAny(item)[key], getPluginByAny(pt)[key]]);
28
+ }
29
+ });
30
+ });
31
+
32
+ // search the zero input plugin
33
+ let zeroEndPoints = plugins.filter(item => !allLines.find(l => l[1] === item[key]));
34
+ const sortedPoint = [];
35
+ while (zeroEndPoints.length) {
36
+ const zep = zeroEndPoints.shift();
37
+ sortedPoint.push(getPluginByAny(zep));
38
+ allLines = allLines.filter(l => l[0] !== getPluginByAny(zep)[key]);
39
+ const restPoints = plugins.filter(item => !sortedPoint.find(sp => sp[key] === item[key]));
40
+ zeroEndPoints = restPoints.filter(
41
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
42
+ item => !allLines.find(l => l[1] === item[key]));
43
+ }
44
+ // if has ring, throw error
45
+ if (allLines.length) {
46
+ const restInRingPoints = {};
47
+ allLines.forEach(l => {
48
+ restInRingPoints[l[0]] = true;
49
+ restInRingPoints[l[1]] = true;
50
+ });
51
+ throw new Error(`plugins dependences has loop: ${Object.keys(restInRingPoints).join(',')}`);
52
+ }
53
+ return sortedPoint;
54
+ };
55
+ exports.dagSort = dagSort;
@@ -4,61 +4,43 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isAsyncWaterfall = exports.getAsyncBrook = exports.createAsyncWaterfall = void 0;
7
-
8
7
  var _farrowPipeline = require("../farrow-pipeline");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const ASYNC_WATERFALL_SYMBOL = Symbol.for('MODERN_ASYNC_WATERFALL');
17
-
18
12
  const getAsyncBrook = input => {
19
13
  if (typeof input === 'function') {
20
14
  return input;
21
15
  } else if (input && typeof input.middleware === 'function') {
22
16
  return input.middleware;
23
17
  }
24
-
25
18
  throw new Error(`${input} is not a AsyncBrook or { brook: AsyncBrook }`);
26
19
  };
27
-
28
20
  exports.getAsyncBrook = getAsyncBrook;
29
-
30
21
  const createAsyncWaterfall = () => {
31
22
  const pipeline = (0, _farrowPipeline.createAsyncPipeline)();
32
-
33
23
  const use = (...input) => {
34
24
  pipeline.use(...input.map(getAsyncBrook).map(mapAsyncBrookToAsyncMiddleware));
35
25
  return waterfall;
36
26
  };
37
-
38
27
  const run = (input, options) => pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
39
28
  onLast: input => input
40
29
  }));
41
-
42
30
  const middleware = input => {
43
31
  return pipeline.run(input, {
44
32
  onLast: input => input
45
33
  });
46
34
  };
47
-
48
35
  const waterfall = _objectSpread(_objectSpread({}, pipeline), {}, {
49
36
  use,
50
37
  run,
51
38
  middleware,
52
39
  [ASYNC_WATERFALL_SYMBOL]: true
53
40
  });
54
-
55
41
  return waterfall;
56
42
  };
57
-
58
43
  exports.createAsyncWaterfall = createAsyncWaterfall;
59
-
60
44
  const isAsyncWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WATERFALL_SYMBOL]);
61
-
62
45
  exports.isAsyncWaterfall = isAsyncWaterfall;
63
-
64
46
  const mapAsyncBrookToAsyncMiddleware = brook => async (input, next) => next(await brook(input));
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _sync = require("./sync");
8
-
9
7
  Object.keys(_sync).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _sync[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_sync).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _async = require("./async");
21
-
22
18
  Object.keys(_async).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _async[key]) return;
@@ -4,61 +4,43 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isWaterfall = exports.getBrook = exports.createWaterfall = void 0;
7
-
8
7
  var _farrowPipeline = require("../farrow-pipeline");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const WATERFALL_SYMBOL = Symbol.for('MODERN_WATERFALL');
17
-
18
12
  const getBrook = input => {
19
13
  if (typeof input === 'function') {
20
14
  return input;
21
15
  } else if (input && typeof input.middleware === 'function') {
22
16
  return input.middleware;
23
17
  }
24
-
25
18
  throw new Error(`${input} is not a Brook or { brook: Brook }`);
26
19
  };
27
-
28
20
  exports.getBrook = getBrook;
29
-
30
21
  const createWaterfall = () => {
31
22
  const pipeline = (0, _farrowPipeline.createPipeline)();
32
-
33
23
  const use = (...brooks) => {
34
24
  pipeline.use(...brooks.map(getBrook).map(mapBrookToMiddleware));
35
25
  return waterfall;
36
26
  };
37
-
38
27
  const run = (input, options) => pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
39
28
  onLast: input => input
40
29
  }));
41
-
42
30
  const middleware = input => {
43
31
  return pipeline.run(input, {
44
32
  onLast: input => input
45
33
  });
46
34
  };
47
-
48
35
  const waterfall = _objectSpread(_objectSpread({}, pipeline), {}, {
49
36
  use,
50
37
  run,
51
38
  middleware,
52
39
  [WATERFALL_SYMBOL]: true
53
40
  });
54
-
55
41
  return waterfall;
56
42
  };
57
-
58
43
  exports.createWaterfall = createWaterfall;
59
-
60
44
  const isWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[WATERFALL_SYMBOL]);
61
-
62
45
  exports.isWaterfall = isWaterfall;
63
-
64
46
  const mapBrookToMiddleware = brook => (input, next) => next(brook(input));
@@ -4,54 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isAsyncWorkflow = exports.createAsyncWorkflow = void 0;
7
-
8
7
  var _farrowPipeline = require("../farrow-pipeline");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const ASYNC_WORKFLOW_SYMBOL = Symbol.for('MODERN_ASYNC_WORKFLOW');
17
-
18
12
  const isAsyncWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WORKFLOW_SYMBOL]);
19
-
20
13
  exports.isAsyncWorkflow = isAsyncWorkflow;
21
-
22
14
  const createAsyncWorkflow = () => {
23
15
  const pipeline = (0, _farrowPipeline.createAsyncPipeline)();
24
-
25
16
  const use = (...input) => {
26
17
  pipeline.use(...input.map(mapAsyncWorkerToAsyncMiddleware));
27
18
  return workflow;
28
19
  };
29
-
30
20
  const run = async input => {
31
21
  const result = pipeline.run(input, {
32
22
  onLast: () => []
33
23
  });
34
-
35
24
  if (isPromise(result)) {
36
25
  return result.then(result => result.filter(Boolean));
37
26
  } else {
38
27
  return result.filter(Boolean);
39
28
  }
40
29
  };
41
-
42
30
  const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
43
31
  use,
44
32
  run,
45
33
  [ASYNC_WORKFLOW_SYMBOL]: true
46
34
  });
47
-
48
35
  return workflow;
49
36
  };
50
-
51
37
  exports.createAsyncWorkflow = createAsyncWorkflow;
52
-
53
38
  const mapAsyncWorkerToAsyncMiddleware = worker => async (input, next) => [await worker(input), ...(await next(input))];
54
-
55
39
  function isPromise(obj) {
56
40
  return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
57
41
  }
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _sync = require("./sync");
8
-
9
7
  Object.keys(_sync).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _sync[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_sync).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _parallel = require("./parallel");
21
-
22
18
  Object.keys(_parallel).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _parallel[key]) return;
@@ -29,9 +25,7 @@ Object.keys(_parallel).forEach(function (key) {
29
25
  }
30
26
  });
31
27
  });
32
-
33
28
  var _async = require("./async");
34
-
35
29
  Object.keys(_async).forEach(function (key) {
36
30
  if (key === "default" || key === "__esModule") return;
37
31
  if (key in exports && exports[key] === _async[key]) return;
@@ -4,42 +4,28 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isParallelWorkflow = exports.createParallelWorkflow = void 0;
7
-
8
7
  var _farrowPipeline = require("../farrow-pipeline");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const PARALLEL_WORKFLOW_SYMBOL = Symbol.for('MODERN_PARALLEL_WORKFLOW');
17
-
18
12
  const isParallelWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[PARALLEL_WORKFLOW_SYMBOL]);
19
-
20
13
  exports.isParallelWorkflow = isParallelWorkflow;
21
-
22
14
  const createParallelWorkflow = () => {
23
15
  const pipeline = (0, _farrowPipeline.createPipeline)();
24
-
25
16
  const use = (...input) => {
26
17
  pipeline.use(...input.map(mapParallelWorkerToAsyncMiddleware));
27
18
  return workflow;
28
19
  };
29
-
30
20
  const run = async input => Promise.all(pipeline.run(input, {
31
21
  onLast: () => []
32
22
  })).then(result => result.filter(Boolean));
33
-
34
23
  const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
35
24
  run,
36
25
  use,
37
26
  [PARALLEL_WORKFLOW_SYMBOL]: true
38
27
  });
39
-
40
28
  return workflow;
41
29
  };
42
-
43
30
  exports.createParallelWorkflow = createParallelWorkflow;
44
-
45
31
  const mapParallelWorkerToAsyncMiddleware = worker => (input, next) => [worker(input), ...next(input)];
@@ -4,45 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isWorkflow = exports.createWorkflow = void 0;
7
-
8
7
  var _farrowPipeline = require("../farrow-pipeline");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const WORKFLOW_SYMBOL = Symbol.for('MODERN_WORKFLOW');
17
-
18
12
  const createWorkflow = () => {
19
13
  const pipeline = (0, _farrowPipeline.createPipeline)();
20
-
21
14
  const use = (...input) => {
22
15
  pipeline.use(...input.map(mapWorkerToMiddleware));
23
16
  return workflow;
24
17
  };
25
-
26
18
  const run = input => {
27
19
  const result = pipeline.run(input, {
28
20
  onLast: () => []
29
21
  });
30
22
  return result.filter(Boolean);
31
23
  };
32
-
33
24
  const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
34
25
  use,
35
26
  run,
36
27
  [WORKFLOW_SYMBOL]: true
37
28
  });
38
-
39
29
  return workflow;
40
30
  };
41
-
42
31
  exports.createWorkflow = createWorkflow;
43
-
44
32
  const isWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[WORKFLOW_SYMBOL]);
45
-
46
33
  exports.isWorkflow = isWorkflow;
47
-
48
34
  const mapWorkerToMiddleware = worker => (input, next) => [worker(input), ...next(input)];
@@ -2,33 +2,27 @@
2
2
  * modified from https://github.com/farrow-js/farrow/tree/master/packages/farrow-pipeline
3
3
  * license at https://github.com/farrow-js/farrow/blob/master/LICENSE
4
4
  */
5
+
5
6
  export var createContext = function createContext(value) {
6
7
  var currentValue;
7
-
8
8
  var create = function create(value) {
9
9
  currentValue = value;
10
-
11
10
  var use = function use() {
12
11
  return {
13
12
  get value() {
14
13
  return currentValue;
15
14
  },
16
-
17
15
  set value(v) {
18
16
  currentValue = v;
19
17
  }
20
-
21
18
  };
22
19
  };
23
-
24
20
  var get = function get() {
25
21
  return currentValue;
26
22
  };
27
-
28
23
  var set = function set(v) {
29
24
  currentValue = v;
30
25
  };
31
-
32
26
  var Context = {
33
27
  create: create,
34
28
  use: use,
@@ -37,6 +31,5 @@ export var createContext = function createContext(value) {
37
31
  };
38
32
  return Context;
39
33
  };
40
-
41
34
  return create(value);
42
35
  };
@@ -2,20 +2,18 @@
2
2
  * modified from https://github.com/farrow-js/farrow/tree/master/packages/farrow-pipeline
3
3
  * license at https://github.com/farrow-js/farrow/blob/master/LICENSE
4
4
  */
5
+
5
6
  export var createCounter = function createCounter(callback) {
6
7
  var dispatch = function dispatch(index, input) {
7
8
  var next = function next() {
8
9
  var nextInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : input;
9
10
  return dispatch(index + 1, nextInput);
10
11
  };
11
-
12
12
  return callback(index, input, next);
13
13
  };
14
-
15
14
  var start = function start(input) {
16
15
  return dispatch(0, input);
17
16
  };
18
-
19
17
  return {
20
18
  start: start,
21
19
  dispatch: dispatch
@@ -1,7 +1,6 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
-
5
4
  /**
6
5
  * modified from https://github.com/farrow-js/farrow/tree/master/packages/farrow-pipeline
7
6
  * license at https://github.com/farrow-js/farrow/blob/master/LICENSE
@@ -13,65 +12,50 @@ export var isPipeline = function isPipeline(input) {
13
12
  return Boolean(input === null || input === void 0 ? void 0 : input[PipelineSymbol]);
14
13
  };
15
14
  var PipelineSymbol = Symbol["for"]('MODERN_PIPELINE');
16
-
17
15
  var getMiddleware = function getMiddleware(input) {
18
16
  if (typeof input === 'function') {
19
17
  return input;
20
18
  } else if (input && typeof input.middleware === 'function') {
21
19
  return input.middleware;
22
20
  }
23
-
24
21
  throw new Error("".concat(input, " is not a Middleware"));
25
22
  };
26
-
27
23
  export var createPipeline = function createPipeline() {
28
24
  var _pipeline;
29
-
30
25
  var middlewares = [];
31
-
32
26
  var use = function use() {
33
27
  for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {
34
28
  inputs[_key] = arguments[_key];
35
29
  }
36
-
37
30
  middlewares.push.apply(middlewares, _toConsumableArray(inputs.map(getMiddleware)));
38
31
  return pipeline;
39
32
  };
40
-
41
33
  var createCurrentCounter = function createCurrentCounter(onLast) {
42
34
  return createCounter(function (index, input, next) {
43
35
  if (index >= middlewares.length) {
44
36
  if (onLast) {
45
37
  return onLast(input);
46
38
  }
47
-
48
39
  throw new Error("Expect returning a value, but all middlewares just calling next()");
49
40
  }
50
-
51
41
  return middlewares[index](input, next);
52
42
  });
53
43
  };
54
-
55
44
  var currentCounter = createCurrentCounter();
56
-
57
45
  var getCounter = function getCounter(options) {
58
46
  if (!options) {
59
47
  return currentCounter;
60
48
  }
61
-
62
49
  return createCurrentCounter(options === null || options === void 0 ? void 0 : options.onLast);
63
50
  };
64
-
65
51
  var run = function run(input, options) {
66
52
  return getCounter(options).start(input);
67
53
  };
68
-
69
54
  var middleware = function middleware(input, next) {
70
55
  return run(input, {
71
56
  onLast: next
72
57
  });
73
58
  };
74
-
75
59
  var pipeline = (_pipeline = {}, _defineProperty(_pipeline, PipelineSymbol, true), _defineProperty(_pipeline, "use", use), _defineProperty(_pipeline, "run", run), _defineProperty(_pipeline, "middleware", middleware), _pipeline);
76
60
  return pipeline;
77
61
  };
@@ -7,78 +7,64 @@ var ASYNC_PLUGIN_SYMBOL = 'ASYNC_PLUGIN_SYMBOL';
7
7
  export var createAsyncManager = function createAsyncManager(hooks, api) {
8
8
  var index = 0;
9
9
  var runners;
10
-
11
10
  var currentHooks = _objectSpread({}, hooks);
12
-
13
11
  var useRunner = function useRunner() {
14
12
  return runners;
15
13
  };
16
-
17
14
  var registerHook = function registerHook(extraHooks) {
18
15
  currentHooks = _objectSpread(_objectSpread({}, extraHooks), currentHooks);
19
16
  };
20
-
21
17
  var isPlugin = function isPlugin(input) {
22
18
  return isObject(input) && hasOwnProperty(input, ASYNC_PLUGIN_SYMBOL) && input[ASYNC_PLUGIN_SYMBOL] === ASYNC_PLUGIN_SYMBOL;
23
19
  };
24
-
25
20
  var pluginAPI = _objectSpread(_objectSpread({}, api), {}, {
26
21
  useHookRunners: useRunner
27
22
  });
28
-
29
23
  var clone = function clone(overrideAPI) {
30
24
  var plugins = [];
31
-
32
25
  var addPlugin = function addPlugin(plugin) {
33
26
  if (!includePlugin(plugins, plugin)) {
34
27
  plugins.push(_objectSpread({}, plugin));
35
28
  }
36
29
  };
37
-
38
30
  var usePlugin = function usePlugin() {
39
31
  for (var _len = arguments.length, input = new Array(_len), _key = 0; _key < _len; _key++) {
40
32
  input[_key] = arguments[_key];
41
33
  }
42
-
43
34
  for (var _i = 0, _input = input; _i < _input.length; _i++) {
44
35
  var plugin = _input[_i];
45
-
46
36
  // already created by createPlugin
47
37
  if (isPlugin(plugin)) {
48
38
  addPlugin(plugin);
49
- } // using function to return plugin options
39
+ }
40
+ // using function to return plugin options
50
41
  else if (typeof plugin === 'function') {
51
42
  var _options = plugin();
52
-
53
43
  addPlugin(createPlugin(_options.setup, _options));
54
- } // plain plugin object
44
+ }
45
+ // plain plugin object
55
46
  else if (isObject(plugin)) {
56
47
  addPlugin(createPlugin(plugin.setup, plugin));
57
- } // unknown plugin
48
+ }
49
+ // unknown plugin
58
50
  else {
59
51
  console.warn("Unknown plugin: ".concat(JSON.stringify(plugin)));
60
52
  }
61
53
  }
62
-
63
54
  return manager;
64
55
  };
65
-
66
56
  var createPlugin = function createPlugin() {
67
57
  var _options$usePlugins;
68
-
69
58
  var setup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
70
59
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
71
-
72
60
  if ((_options$usePlugins = options.usePlugins) !== null && _options$usePlugins !== void 0 && _options$usePlugins.length) {
73
61
  options.usePlugins.forEach(function (plugin) {
74
62
  usePlugin(createPlugin(plugin.setup, plugin));
75
63
  });
76
64
  }
77
-
78
65
  if (options.registerHook) {
79
66
  registerHook(options.registerHook);
80
67
  }
81
-
82
68
  return _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_OPTIONS), {}, {
83
69
  name: "No.".concat(index++, " plugin")
84
70
  }, options), {}, {
@@ -86,11 +72,9 @@ export var createAsyncManager = function createAsyncManager(hooks, api) {
86
72
  setup: setup
87
73
  });
88
74
  };
89
-
90
75
  var clear = function clear() {
91
76
  plugins = [];
92
77
  };
93
-
94
78
  var init = /*#__PURE__*/function () {
95
79
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
96
80
  var sortedPlugins, mergedPluginAPI, hooksList;
@@ -105,12 +89,10 @@ export var createAsyncManager = function createAsyncManager(hooks, api) {
105
89
  return Promise.all(sortedPlugins.map(function (plugin) {
106
90
  return plugin.setup(mergedPluginAPI);
107
91
  }));
108
-
109
92
  case 5:
110
93
  hooksList = _context.sent;
111
94
  runners = generateRunner(hooksList, currentHooks);
112
95
  return _context.abrupt("return", runners);
113
-
114
96
  case 8:
115
97
  case "end":
116
98
  return _context.stop();
@@ -118,16 +100,13 @@ export var createAsyncManager = function createAsyncManager(hooks, api) {
118
100
  }
119
101
  }, _callee);
120
102
  }));
121
-
122
103
  return function init() {
123
104
  return _ref.apply(this, arguments);
124
105
  };
125
106
  }();
126
-
127
107
  var run = function run(cb) {
128
108
  return cb();
129
109
  };
130
-
131
110
  var manager = {
132
111
  createPlugin: createPlugin,
133
112
  isPlugin: isPlugin,
@@ -141,6 +120,5 @@ export var createAsyncManager = function createAsyncManager(hooks, api) {
141
120
  };
142
121
  return manager;
143
122
  };
144
-
145
123
  return clone();
146
124
  };