@modern-js/plugin 1.0.0 → 1.1.2

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 (107) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -4
  3. package/dist/js/modern/index.js +2 -3
  4. package/dist/js/modern/manager/async.js +1 -1
  5. package/dist/js/modern/manager/runner.js +1 -1
  6. package/dist/js/modern/manager/sync.js +1 -6
  7. package/dist/js/modern/waterfall/async.js +28 -34
  8. package/dist/js/modern/waterfall/sync.js +29 -36
  9. package/dist/js/modern/workflow/async.js +31 -30
  10. package/dist/js/modern/workflow/parallel.js +20 -29
  11. package/dist/js/modern/workflow/sync.js +20 -27
  12. package/dist/js/node/index.js +12 -25
  13. package/dist/js/node/manager/async.js +4 -4
  14. package/dist/js/node/manager/runner.js +2 -2
  15. package/dist/js/node/manager/sync.js +6 -12
  16. package/dist/js/node/waterfall/async.js +27 -34
  17. package/dist/js/node/waterfall/sync.js +29 -36
  18. package/dist/js/node/workflow/async.js +30 -30
  19. package/dist/js/node/workflow/parallel.js +19 -29
  20. package/dist/js/node/workflow/sync.js +19 -27
  21. package/dist/js/treeshaking/index.js +2 -3
  22. package/dist/js/treeshaking/manager/async.js +1 -1
  23. package/dist/js/treeshaking/manager/runner.js +1 -1
  24. package/dist/js/treeshaking/manager/sync.js +1 -6
  25. package/dist/js/treeshaking/waterfall/async.js +63 -108
  26. package/dist/js/treeshaking/waterfall/sync.js +36 -39
  27. package/dist/js/treeshaking/workflow/async.js +89 -88
  28. package/dist/js/treeshaking/workflow/parallel.js +42 -66
  29. package/dist/js/treeshaking/workflow/sync.js +50 -30
  30. package/dist/types/index.d.ts +2 -3
  31. package/dist/types/manager/runner.d.ts +1 -1
  32. package/dist/types/manager/sync.d.ts +2 -3
  33. package/dist/types/waterfall/async.d.ts +9 -5
  34. package/dist/types/waterfall/sync.d.ts +4 -4
  35. package/dist/types/workflow/async.d.ts +3 -2
  36. package/dist/types/workflow/parallel.d.ts +1 -1
  37. package/dist/types/workflow/sync.d.ts +1 -1
  38. package/node.d.ts +1 -1
  39. package/node.js +1 -1
  40. package/package.json +5 -4
  41. package/src/index.ts +2 -2
  42. package/src/manager/async.ts +1 -1
  43. package/src/manager/runner.ts +1 -1
  44. package/src/manager/sync.ts +12 -16
  45. package/src/waterfall/async.ts +34 -49
  46. package/src/waterfall/sync.ts +26 -45
  47. package/src/workflow/async.ts +29 -33
  48. package/src/workflow/parallel.ts +17 -35
  49. package/src/workflow/sync.ts +13 -35
  50. package/tests/.eslintrc.js +6 -0
  51. package/tests/async.test.ts +7 -3
  52. package/tests/fixtures/async/base/foo.ts +0 -1
  53. package/tests/fixtures/async/base/fooManager.ts +1 -1
  54. package/tests/fixtures/async/core/index.ts +1 -1
  55. package/tests/fixtures/async/dynamic/bar.ts +0 -1
  56. package/tests/fixtures/async/dynamic/foo.ts +1 -1
  57. package/tests/fixtures/sync/base/foo.ts +0 -2
  58. package/tests/fixtures/sync/base/fooManager.ts +1 -1
  59. package/tests/fixtures/sync/core/index.ts +1 -1
  60. package/tests/fixtures/sync/dynamic/bar.ts +0 -1
  61. package/tests/fixtures/sync/dynamic/foo.ts +1 -1
  62. package/tests/pipeline.test.ts +4 -15
  63. package/tests/sync.test.ts +6 -2
  64. package/tests/waterfall.test.ts +1 -2
  65. package/dist/js/modern/asyncHooksImpl.js +0 -63
  66. package/dist/js/modern/asyncHooksInterface.js +0 -16
  67. package/dist/js/modern/context.js +0 -130
  68. package/dist/js/modern/counter.js +0 -40
  69. package/dist/js/modern/hook.js +0 -47
  70. package/dist/js/modern/pipeline/async.js +0 -97
  71. package/dist/js/modern/pipeline/index.js +0 -2
  72. package/dist/js/modern/pipeline/sync.js +0 -97
  73. package/dist/js/node/asyncHooksImpl.js +0 -82
  74. package/dist/js/node/asyncHooksInterface.js +0 -30
  75. package/dist/js/node/context.js +0 -164
  76. package/dist/js/node/counter.js +0 -52
  77. package/dist/js/node/hook.js +0 -57
  78. package/dist/js/node/pipeline/async.js +0 -110
  79. package/dist/js/node/pipeline/index.js +0 -31
  80. package/dist/js/node/pipeline/sync.js +0 -110
  81. package/dist/js/treeshaking/asyncHooksImpl.js +0 -65
  82. package/dist/js/treeshaking/asyncHooksInterface.js +0 -16
  83. package/dist/js/treeshaking/context.js +0 -137
  84. package/dist/js/treeshaking/counter.js +0 -74
  85. package/dist/js/treeshaking/hook.js +0 -51
  86. package/dist/js/treeshaking/pipeline/async.js +0 -165
  87. package/dist/js/treeshaking/pipeline/index.js +0 -2
  88. package/dist/js/treeshaking/pipeline/sync.js +0 -118
  89. package/dist/types/asyncHooksImpl.d.ts +0 -10
  90. package/dist/types/asyncHooksInterface.d.ts +0 -21
  91. package/dist/types/context.d.ts +0 -47
  92. package/dist/types/counter.d.ts +0 -22
  93. package/dist/types/hook.d.ts +0 -13
  94. package/dist/types/pipeline/async.d.ts +0 -35
  95. package/dist/types/pipeline/index.d.ts +0 -2
  96. package/dist/types/pipeline/sync.d.ts +0 -37
  97. package/src/asyncHooksImpl.ts +0 -64
  98. package/src/asyncHooksInterface.ts +0 -34
  99. package/src/context.ts +0 -184
  100. package/src/counter.ts +0 -78
  101. package/src/hook.ts +0 -46
  102. package/src/pipeline/async.ts +0 -155
  103. package/src/pipeline/index.ts +0 -2
  104. package/src/pipeline/sync.ts +0 -152
  105. package/tests/context.test.ts +0 -114
  106. package/tests/counter.test.ts +0 -32
  107. package/tests/hook.test.ts +0 -113
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @modern-js/plugin
2
2
 
3
+ ## 1.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 0fa83663: support more .env files
8
+
9
+ ## 1.1.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 6ffd1a50: Refactor to base on farrow-pipeline
14
+
15
+ ## 1.1.0
16
+
17
+ ### Minor Changes
18
+
19
+ - 96119db2: Relese v1.1.0
20
+
3
21
  ## 1.0.0
4
22
 
5
23
  ### Patch Changes
package/README.md CHANGED
@@ -17,10 +17,7 @@
17
17
 
18
18
  > The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.
19
19
 
20
- - 介绍 Modern.js (即将上线)
21
- - [迈入现代 Web 开发](https://zhuanlan.zhihu.com/p/386607009)
22
- - [现代 Web 开发者问卷调查报告](https://zhuanlan.zhihu.com/p/403206195)
23
- - [字节跳动是如何落地微前端的](https://mp.weixin.qq.com/s/L9wbfNG5fTXF5bx7dcgj4Q)
20
+ - [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)
24
21
 
25
22
  ## Getting Started
26
23
 
@@ -1,5 +1,4 @@
1
+ export * from 'farrow-pipeline';
1
2
  export * from "./waterfall";
2
3
  export * from "./workflow";
3
- export * from "./pipeline";
4
- export * from "./manager";
5
- export * from "./context";
4
+ export * from "./manager";
@@ -4,7 +4,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  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; }
6
6
 
7
- import { runWithContainer, createContainer } from "../context";
7
+ import { runWithContainer, createContainer } from 'farrow-pipeline';
8
8
  import { generateRunner, hasOwnProperty, DEFAULT_OPTIONS } from "./sync";
9
9
  import { useRunner } from "./runner"; // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
10
10
 
@@ -1,4 +1,4 @@
1
- import { createContext } from "../context";
1
+ import { createContext } from 'farrow-pipeline';
2
2
  export const RunnerContext = createContext(null);
3
3
  export const useRunner = () => {
4
4
  const runner = RunnerContext.use().value;
@@ -7,10 +7,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
7
7
  // eslint-disable-next-line eslint-comments/disable-enable-pair
8
8
 
9
9
  /* eslint-disable max-lines */
10
- import { runWithContainer, createContainer } from "../context";
10
+ import { isPipeline, createPipeline, runWithContainer, createContainer } from 'farrow-pipeline';
11
11
  import { isWaterfall, createWaterfall, isAsyncWaterfall, createAsyncWaterfall } from "../waterfall";
12
12
  import { isWorkflow, createWorkflow, isAsyncWorkflow, createAsyncWorkflow, isParallelWorkflow, createParallelWorkflow } from "../workflow";
13
- import { isPipeline, createPipeline, isAsyncPipeline, createAsyncPipeline } from "../pipeline";
14
13
  import { RunnerContext, useRunner } from "./runner"; // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
15
14
 
16
15
  const SYNC_PLUGIN_SYMBOL = 'SYNC_PLUGIN_SYMBOL';
@@ -155,10 +154,6 @@ export const cloneProgress = progress => {
155
154
 
156
155
  if (isPipeline(progress)) {
157
156
  return createPipeline();
158
- }
159
-
160
- if (isAsyncPipeline(progress)) {
161
- return createAsyncPipeline();
162
157
  } // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
163
158
 
164
159
 
@@ -1,11 +1,16 @@
1
- import { createAsyncCounter } from "../counter";
2
- import { runHooks, fromContainer, createContainer, useContainer } from "../context";
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ 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; }
6
+
7
+ import { createAsyncPipeline, useContainer } from 'farrow-pipeline';
3
8
  const ASYNC_WATERFALL_SYMBOL = Symbol('ASYNC_WATERFALL_SYMBOL');
4
9
  export const getAsyncBrook = input => {
5
10
  if (typeof input === 'function') {
6
11
  return input;
7
- } else if (input && typeof input.brook === 'function') {
8
- return input.brook;
12
+ } else if (input && typeof input.middlware === 'function') {
13
+ return input.middlware;
9
14
  } // eslint-disable-next-line @typescript-eslint/no-base-to-string,@typescript-eslint/restrict-template-expressions
10
15
 
11
16
 
@@ -13,48 +18,37 @@ export const getAsyncBrook = input => {
13
18
  };
14
19
  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
15
20
  export const createAsyncWaterfall = () => {
16
- const middlewares = [];
17
-
18
- const createCurrentRunner = hooks => createAsyncCounter(async (index, input, next) => {
19
- if (index >= middlewares.length) {
20
- return input;
21
- }
22
-
23
- return runHooks(async () => next((await middlewares[index](input)) || input), hooks);
24
- });
25
-
26
- const currentContainer = createContainer();
27
- const currentHooks = fromContainer(currentContainer);
28
- const currentRunner = createCurrentRunner(currentHooks);
21
+ const pipeline = createAsyncPipeline();
29
22
 
30
23
  const use = (...input) => {
31
- middlewares.push(...input.map(getAsyncBrook));
24
+ pipeline.use(...input.map(getAsyncBrook).map(mapAsyncBrookToAsyncMiddleware));
32
25
  return waterfall;
33
26
  };
34
27
 
35
- const run = async (input, options) => {
36
- var _options$container;
28
+ const run = (input, options) => // eslint-disable-next-line @typescript-eslint/no-shadow
29
+ pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
30
+ onLast: input => input
31
+ }));
37
32
 
38
- const container = (_options$container = options === null || options === void 0 ? void 0 : options.container) !== null && _options$container !== void 0 ? _options$container : currentContainer;
39
- const hooks = container === currentContainer ? currentHooks : fromContainer(container);
40
- const runner = container === currentContainer ? currentRunner : createCurrentRunner(hooks);
41
- return runner.start(input);
42
- };
43
-
44
- const brook = input => {
33
+ const middlware = input => {
45
34
  // eslint-disable-next-line react-hooks/rules-of-hooks
46
- const container = useContainer();
47
- return run(input, {
48
- container
35
+ const container = useContainer(); // eslint-disable-next-line @typescript-eslint/no-shadow
36
+
37
+ return pipeline.run(input, {
38
+ container,
39
+ onLast: input => input
49
40
  });
50
41
  };
51
42
 
52
- const waterfall = {
43
+ const waterfall = _objectSpread(_objectSpread({}, pipeline), {}, {
53
44
  use,
54
45
  run,
55
- brook,
46
+ middlware,
56
47
  [ASYNC_WATERFALL_SYMBOL]: true
57
- };
48
+ });
49
+
58
50
  return waterfall;
59
51
  };
60
- export const isAsyncWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WATERFALL_SYMBOL]);
52
+ export const isAsyncWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WATERFALL_SYMBOL]);
53
+
54
+ const mapAsyncBrookToAsyncMiddleware = brook => async (input, next) => next(await brook(input));
@@ -1,12 +1,16 @@
1
- import { createCounter } from "../counter";
2
- import { runHooks, fromContainer, createContainer, useContainer } from "../context";
3
- const WATERFALL_SYMBOL = Symbol('WATERFALL_SYMBOL'); // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
2
 
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ 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; }
6
+
7
+ import { useContainer, createPipeline } from 'farrow-pipeline';
8
+ const WATERFALL_SYMBOL = Symbol('WATERFALL_SYMBOL');
5
9
  export const getBrook = input => {
6
10
  if (typeof input === 'function') {
7
11
  return input;
8
- } else if (input && typeof input.brook === 'function') {
9
- return input.brook;
12
+ } else if (input && typeof input.middleware === 'function') {
13
+ return input.middleware;
10
14
  } // eslint-disable-next-line @typescript-eslint/no-base-to-string,@typescript-eslint/restrict-template-expressions
11
15
 
12
16
 
@@ -14,48 +18,37 @@ export const getBrook = input => {
14
18
  };
15
19
  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
16
20
  export const createWaterfall = () => {
17
- const middlewares = [];
21
+ const pipeline = createPipeline();
18
22
 
19
- const createCurrentRunner = hooks => createCounter((index, input, next) => {
20
- if (index >= middlewares.length) {
21
- return input;
22
- }
23
-
24
- return runHooks(() => next(middlewares[index](input) || input), hooks);
25
- });
26
-
27
- const currentContainer = createContainer();
28
- const currentHooks = fromContainer(currentContainer);
29
- const currentRunner = createCurrentRunner(currentHooks);
30
-
31
- const use = (...input) => {
32
- middlewares.push(...input.map(getBrook));
23
+ const use = (...brooks) => {
24
+ pipeline.use(...brooks.map(getBrook).map(mapBrookToMiddleware));
33
25
  return waterfall;
34
26
  };
35
27
 
36
- const run = (input, options) => {
37
- var _options$container;
28
+ const run = (input, options) => // eslint-disable-next-line @typescript-eslint/no-shadow
29
+ pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
30
+ onLast: input => input
31
+ }));
38
32
 
39
- const container = (_options$container = options === null || options === void 0 ? void 0 : options.container) !== null && _options$container !== void 0 ? _options$container : currentContainer;
40
- const hooks = container === currentContainer ? currentHooks : fromContainer(container);
41
- const runner = container === currentContainer ? currentRunner : createCurrentRunner(hooks);
42
- return runner.start(input);
43
- };
44
-
45
- const brook = input => {
33
+ const middleware = input => {
46
34
  // eslint-disable-next-line react-hooks/rules-of-hooks
47
- const container = useContainer();
48
- return run(input, {
49
- container
35
+ const container = useContainer(); // eslint-disable-next-line @typescript-eslint/no-shadow
36
+
37
+ return pipeline.run(input, {
38
+ container,
39
+ onLast: input => input
50
40
  });
51
41
  };
52
42
 
53
- const waterfall = {
43
+ const waterfall = _objectSpread(_objectSpread({}, pipeline), {}, {
54
44
  use,
55
45
  run,
56
- brook,
46
+ middleware,
57
47
  [WATERFALL_SYMBOL]: true
58
- };
48
+ });
49
+
59
50
  return waterfall;
60
51
  };
61
- export const isWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[WATERFALL_SYMBOL]);
52
+ export const isWaterfall = input => Boolean(input === null || input === void 0 ? void 0 : input[WATERFALL_SYMBOL]);
53
+
54
+ const mapBrookToMiddleware = brook => (input, next) => next(brook(input));
@@ -1,46 +1,47 @@
1
- import { createAsyncCounter } from "../counter";
2
- import { runHooks, fromContainer, createContainer } from "../context";
3
- const ASYNC_WORKFLOW_SYMBOL = Symbol('ASYNC_WORKFLOW_SYMBOL');
4
- export const isAsyncWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WORKFLOW_SYMBOL]); // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5
2
 
6
- export const createAsyncWorkflow = () => {
7
- const middlewares = [];
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
4
 
9
- const createCurrentRunner = hooks => createAsyncCounter(async (index, input, next) => {
10
- if (index >= middlewares.length) {
11
- return [];
12
- }
5
+ 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; }
13
6
 
14
- const middleware = middlewares[index];
15
- return runHooks(async () => {
16
- const result = await middleware(input);
17
- const rest = await next(input);
18
- return [result, ...rest];
19
- }, hooks);
20
- });
7
+ import { createAsyncPipeline } from 'farrow-pipeline';
8
+ const ASYNC_WORKFLOW_SYMBOL = Symbol('ASYNC_WORKFLOW_SYMBOL');
9
+ export const isAsyncWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_WORKFLOW_SYMBOL]); // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
21
10
 
22
- const currentContainer = createContainer();
23
- const currentHooks = fromContainer(currentContainer);
24
- const currentRunner = createCurrentRunner(currentHooks);
11
+ export const createAsyncWorkflow = () => {
12
+ const pipeline = createAsyncPipeline();
25
13
 
26
14
  const use = (...input) => {
27
- middlewares.push(...input);
15
+ pipeline.use(...input.map(mapAsyncWorkerToAsyncMiddleware));
28
16
  return workflow;
29
17
  };
30
18
 
31
19
  const run = async (input, options) => {
32
- var _options$container;
33
-
34
- const container = (_options$container = options === null || options === void 0 ? void 0 : options.container) !== null && _options$container !== void 0 ? _options$container : currentContainer;
35
- const hooks = container === currentContainer ? currentHooks : fromContainer(container);
36
- const runner = container === currentContainer ? currentRunner : createCurrentRunner(hooks);
37
- return runner.start(input);
20
+ const result = pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
21
+ onLast: () => []
22
+ }));
23
+
24
+ if (isPromise(result)) {
25
+ // eslint-disable-next-line @typescript-eslint/no-shadow,promise/prefer-await-to-then
26
+ return result.then(result => result.filter(Boolean));
27
+ } else {
28
+ return result.filter(Boolean);
29
+ }
38
30
  };
39
31
 
40
- const workflow = {
32
+ const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
41
33
  use,
42
34
  run,
43
35
  [ASYNC_WORKFLOW_SYMBOL]: true
44
- };
36
+ });
37
+
45
38
  return workflow;
46
- };
39
+ };
40
+
41
+ const mapAsyncWorkerToAsyncMiddleware = worker => async (input, next) => [await worker(input), ...(await next(input))];
42
+
43
+ function isPromise(obj) {
44
+ /* eslint-disable promise/prefer-await-to-then */
45
+ return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
46
+ /* eslint-enable promise/prefer-await-to-then */
47
+ }
@@ -1,41 +1,32 @@
1
- import { createAsyncCounter } from "../counter";
2
- import { runHooks, fromContainer, createContainer } from "../context";
3
- const PARALLEL_WORKFLOW_SYMBOL = Symbol('PARALLEL_WORKFLOW_SYMBOL');
4
- export const isParallelWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[PARALLEL_WORKFLOW_SYMBOL]);
5
- export const createParallelWorkflow = () => {
6
- const middlewares = [];
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7
2
 
8
- const createCurrentRunner = hooks => createAsyncCounter((index, input, next) => {
9
- if (index >= middlewares.length) {
10
- return Promise.resolve([]);
11
- }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
4
 
13
- const middleware = middlewares[index];
14
- return runHooks(async () => Promise.all([middleware(input), ...(await next(input))]), hooks);
15
- });
5
+ 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; }
16
6
 
17
- const currentContainer = createContainer();
18
- const currentHooks = fromContainer(currentContainer);
19
- const currentRunner = createCurrentRunner(currentHooks);
7
+ import { createPipeline } from 'farrow-pipeline';
8
+ const PARALLEL_WORKFLOW_SYMBOL = Symbol('PARALLEL_WORKFLOW_SYMBOL');
9
+ export const isParallelWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[PARALLEL_WORKFLOW_SYMBOL]);
10
+ export const createParallelWorkflow = () => {
11
+ const pipeline = createPipeline();
20
12
 
21
13
  const use = (...input) => {
22
- middlewares.push(...input);
14
+ pipeline.use(...input.map(mapParallelWorkerToAsyncMiddleware));
23
15
  return workflow;
24
16
  };
25
17
 
26
- const run = async (input, options) => {
27
- var _options$container;
18
+ const run = async (input, options) => // eslint-disable-next-line promise/prefer-await-to-then
19
+ Promise.all(pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
20
+ onLast: () => []
21
+ }))).then(result => result.filter(Boolean));
28
22
 
29
- const container = (_options$container = options === null || options === void 0 ? void 0 : options.container) !== null && _options$container !== void 0 ? _options$container : currentContainer;
30
- const hooks = container === currentContainer ? currentHooks : fromContainer(container);
31
- const runner = container === currentContainer ? currentRunner : createCurrentRunner(hooks);
32
- return runner.start(input);
33
- };
34
-
35
- const workflow = {
36
- use,
23
+ const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
37
24
  run,
25
+ use,
38
26
  [PARALLEL_WORKFLOW_SYMBOL]: true
39
- };
27
+ });
28
+
40
29
  return workflow;
41
- };
30
+ };
31
+
32
+ const mapParallelWorkerToAsyncMiddleware = worker => (input, next) => [worker(input), ...next(input)];
@@ -1,42 +1,35 @@
1
- import { createCounter } from "../counter";
2
- import { runHooks, fromContainer, createContainer } from "../context";
3
- const WORKFLOW_SYMBOL = Symbol('WORKFLOW_SYMBOL');
4
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
5
- export const createWorkflow = () => {
6
- const middlewares = [];
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7
2
 
8
- const createCurrentRunner = hooks => createCounter((index, input, next) => {
9
- if (index >= middlewares.length) {
10
- return [];
11
- }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
4
 
13
- const middleware = middlewares[index];
14
- return runHooks(() => [middleware(input), ...next(input)], hooks);
15
- });
5
+ 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; }
16
6
 
17
- const currentContainer = createContainer();
18
- const currentHooks = fromContainer(currentContainer);
19
- const currentRunner = createCurrentRunner(currentHooks);
7
+ import { createPipeline } from 'farrow-pipeline';
8
+ const WORKFLOW_SYMBOL = Symbol('WORKFLOW_SYMBOL');
9
+ // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
10
+ export const createWorkflow = () => {
11
+ const pipeline = createPipeline();
20
12
 
21
13
  const use = (...input) => {
22
- middlewares.push(...input);
14
+ pipeline.use(...input.map(mapWorkerToMiddleware));
23
15
  return workflow;
24
16
  };
25
17
 
26
- const run = (input, options) => {
27
- var _options$container;
28
-
29
- const container = (_options$container = options === null || options === void 0 ? void 0 : options.container) !== null && _options$container !== void 0 ? _options$container : currentContainer;
30
- const hooks = container === currentContainer ? currentHooks : fromContainer(container);
31
- const runner = container === currentContainer ? currentRunner : createCurrentRunner(hooks);
32
- return runner.start(input);
18
+ const run = async (input, options) => {
19
+ const result = pipeline.run(input, _objectSpread(_objectSpread({}, options), {}, {
20
+ onLast: () => []
21
+ }));
22
+ return result.filter(Boolean);
33
23
  };
34
24
 
35
- const workflow = {
25
+ const workflow = _objectSpread(_objectSpread({}, pipeline), {}, {
36
26
  use,
37
27
  run,
38
28
  [WORKFLOW_SYMBOL]: true
39
- };
29
+ });
30
+
40
31
  return workflow;
41
32
  };
42
- export const isWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[WORKFLOW_SYMBOL]);
33
+ export const isWorkflow = input => Boolean(input === null || input === void 0 ? void 0 : input[WORKFLOW_SYMBOL]);
34
+
35
+ const mapWorkerToMiddleware = worker => (input, next) => [worker(input), ...next(input)];
@@ -4,41 +4,41 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var _waterfall = require("./waterfall");
7
+ var _farrowPipeline = require("farrow-pipeline");
8
8
 
9
- Object.keys(_waterfall).forEach(function (key) {
9
+ Object.keys(_farrowPipeline).forEach(function (key) {
10
10
  if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _waterfall[key]) return;
11
+ if (key in exports && exports[key] === _farrowPipeline[key]) return;
12
12
  Object.defineProperty(exports, key, {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _waterfall[key];
15
+ return _farrowPipeline[key];
16
16
  }
17
17
  });
18
18
  });
19
19
 
20
- var _workflow = require("./workflow");
20
+ var _waterfall = require("./waterfall");
21
21
 
22
- Object.keys(_workflow).forEach(function (key) {
22
+ Object.keys(_waterfall).forEach(function (key) {
23
23
  if (key === "default" || key === "__esModule") return;
24
- if (key in exports && exports[key] === _workflow[key]) return;
24
+ if (key in exports && exports[key] === _waterfall[key]) return;
25
25
  Object.defineProperty(exports, key, {
26
26
  enumerable: true,
27
27
  get: function () {
28
- return _workflow[key];
28
+ return _waterfall[key];
29
29
  }
30
30
  });
31
31
  });
32
32
 
33
- var _pipeline = require("./pipeline");
33
+ var _workflow = require("./workflow");
34
34
 
35
- Object.keys(_pipeline).forEach(function (key) {
35
+ Object.keys(_workflow).forEach(function (key) {
36
36
  if (key === "default" || key === "__esModule") return;
37
- if (key in exports && exports[key] === _pipeline[key]) return;
37
+ if (key in exports && exports[key] === _workflow[key]) return;
38
38
  Object.defineProperty(exports, key, {
39
39
  enumerable: true,
40
40
  get: function () {
41
- return _pipeline[key];
41
+ return _workflow[key];
42
42
  }
43
43
  });
44
44
  });
@@ -54,17 +54,4 @@ Object.keys(_manager).forEach(function (key) {
54
54
  return _manager[key];
55
55
  }
56
56
  });
57
- });
58
-
59
- var _context = require("./context");
60
-
61
- Object.keys(_context).forEach(function (key) {
62
- if (key === "default" || key === "__esModule") return;
63
- if (key in exports && exports[key] === _context[key]) return;
64
- Object.defineProperty(exports, key, {
65
- enumerable: true,
66
- get: function () {
67
- return _context[key];
68
- }
69
- });
70
57
  });
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAsyncManager = void 0;
7
7
 
8
- var _context = require("../context");
8
+ var _farrowPipeline = require("farrow-pipeline");
9
9
 
10
10
  var _sync = require("./sync");
11
11
 
@@ -61,19 +61,19 @@ const createAsyncManager = processes => {
61
61
  plugins = [];
62
62
  };
63
63
 
64
- const currentContainer = (0, _context.createContainer)();
64
+ const currentContainer = (0, _farrowPipeline.createContainer)();
65
65
 
66
66
  const init = async options => {
67
67
  const container = (options === null || options === void 0 ? void 0 : options.container) || currentContainer;
68
68
  const sortedPlugins = sortAsyncPlugins(plugins);
69
69
  checkAsyncPlugins(sortedPlugins);
70
- const hooksList = await Promise.all(sortedPlugins.map(plugin => (0, _context.runWithContainer)(() => plugin.initializer(), container)));
70
+ const hooksList = await Promise.all(sortedPlugins.map(plugin => (0, _farrowPipeline.runWithContainer)(() => plugin.initializer(), container)));
71
71
  return (0, _sync.generateRunner)(hooksList, container, processes);
72
72
  };
73
73
 
74
74
  const run = (cb, options) => {
75
75
  const container = (options === null || options === void 0 ? void 0 : options.container) || currentContainer;
76
- return (0, _context.runWithContainer)(cb, container);
76
+ return (0, _farrowPipeline.runWithContainer)(cb, container);
77
77
  };
78
78
 
79
79
  const manager = {
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useRunner = exports.RunnerContext = void 0;
7
7
 
8
- var _context = require("../context");
8
+ var _farrowPipeline = require("farrow-pipeline");
9
9
 
10
- const RunnerContext = (0, _context.createContext)(null);
10
+ const RunnerContext = (0, _farrowPipeline.createContext)(null);
11
11
  exports.RunnerContext = RunnerContext;
12
12
 
13
13
  const useRunner = () => {
@@ -5,14 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.hasOwnProperty = exports.generateRunner = exports.createManager = exports.cloneProgressRecord = exports.cloneProgress = exports.DEFAULT_OPTIONS = void 0;
7
7
 
8
- var _context = require("../context");
8
+ var _farrowPipeline = require("farrow-pipeline");
9
9
 
10
10
  var _waterfall = require("../waterfall");
11
11
 
12
12
  var _workflow = require("../workflow");
13
13
 
14
- var _pipeline = require("../pipeline");
15
-
16
14
  var _runner = require("./runner");
17
15
 
18
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -83,19 +81,19 @@ const createManager = processes => {
83
81
  plugins = [];
84
82
  };
85
83
 
86
- const currentContainer = (0, _context.createContainer)();
84
+ const currentContainer = (0, _farrowPipeline.createContainer)();
87
85
 
88
86
  const init = options => {
89
87
  const container = (options === null || options === void 0 ? void 0 : options.container) || currentContainer;
90
88
  const sortedPlugins = sortPlugins(plugins);
91
89
  checkPlugins(sortedPlugins);
92
- const hooksList = sortedPlugins.map(plugin => (0, _context.runWithContainer)(() => plugin.initializer(), container));
90
+ const hooksList = sortedPlugins.map(plugin => (0, _farrowPipeline.runWithContainer)(() => plugin.initializer(), container));
93
91
  return generateRunner(hooksList, container, processes);
94
92
  };
95
93
 
96
94
  const run = (cb, options) => {
97
95
  const container = (options === null || options === void 0 ? void 0 : options.container) || currentContainer;
98
- return (0, _context.runWithContainer)(cb, container);
96
+ return (0, _farrowPipeline.runWithContainer)(cb, container);
99
97
  };
100
98
 
101
99
  return {
@@ -169,12 +167,8 @@ const cloneProgress = progress => {
169
167
  return (0, _workflow.createParallelWorkflow)();
170
168
  }
171
169
 
172
- if ((0, _pipeline.isPipeline)(progress)) {
173
- return (0, _pipeline.createPipeline)();
174
- }
175
-
176
- if ((0, _pipeline.isAsyncPipeline)(progress)) {
177
- return (0, _pipeline.createAsyncPipeline)();
170
+ if ((0, _farrowPipeline.isPipeline)(progress)) {
171
+ return (0, _farrowPipeline.createPipeline)();
178
172
  } // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
179
173
 
180
174