@modern-js/plugin 2.0.0-beta.0 → 2.0.0-beta.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.
- package/CHANGELOG.md +28 -0
- package/dist/js/modern/farrow-pipeline/context.js +1 -8
- package/dist/js/modern/farrow-pipeline/counter.js +1 -3
- package/dist/js/modern/farrow-pipeline/pipeline.js +0 -16
- package/dist/js/modern/manager/async.js +8 -27
- package/dist/js/modern/manager/shared.js +3 -23
- package/dist/js/modern/manager/sync.js +10 -41
- package/dist/js/modern/utils/pluginDagSort.js +48 -0
- package/dist/js/modern/waterfall/async.js +0 -10
- package/dist/js/modern/waterfall/sync.js +0 -10
- package/dist/js/modern/workflow/async.js +0 -10
- package/dist/js/modern/workflow/parallel.js +0 -8
- package/dist/js/modern/workflow/sync.js +0 -8
- package/dist/js/node/farrow-pipeline/context.js +1 -10
- package/dist/js/node/farrow-pipeline/counter.js +1 -5
- package/dist/js/node/farrow-pipeline/index.js +0 -2
- package/dist/js/node/farrow-pipeline/pipeline.js +0 -23
- package/dist/js/node/index.js +0 -8
- package/dist/js/node/manager/async.js +8 -32
- package/dist/js/node/manager/index.js +0 -6
- package/dist/js/node/manager/shared.js +3 -32
- package/dist/js/node/manager/sync.js +10 -54
- package/dist/js/node/utils/pluginDagSort.js +55 -0
- package/dist/js/node/waterfall/async.js +0 -18
- package/dist/js/node/waterfall/index.js +0 -4
- package/dist/js/node/waterfall/sync.js +0 -18
- package/dist/js/node/workflow/async.js +0 -16
- package/dist/js/node/workflow/index.js +0 -6
- package/dist/js/node/workflow/parallel.js +0 -14
- package/dist/js/node/workflow/sync.js +0 -14
- package/dist/js/treeshaking/farrow-pipeline/context.js +1 -8
- package/dist/js/treeshaking/farrow-pipeline/counter.js +1 -3
- package/dist/js/treeshaking/farrow-pipeline/pipeline.js +0 -16
- package/dist/js/treeshaking/manager/async.js +6 -28
- package/dist/js/treeshaking/manager/shared.js +2 -46
- package/dist/js/treeshaking/manager/sync.js +9 -44
- package/dist/js/treeshaking/utils/pluginDagSort.js +74 -0
- package/dist/js/treeshaking/waterfall/async.js +0 -11
- package/dist/js/treeshaking/waterfall/sync.js +0 -8
- package/dist/js/treeshaking/workflow/async.js +0 -16
- package/dist/js/treeshaking/workflow/parallel.js +0 -8
- package/dist/js/treeshaking/workflow/sync.js +0 -6
- package/dist/types/manager/async.d.ts +0 -9
- package/dist/types/manager/sync.d.ts +0 -9
- package/dist/types/manager/types.d.ts +2 -9
- package/dist/types/utils/pluginDagSort.d.ts +1 -0
- package/package.json +6 -6
@@ -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
|
-
}
|
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
|
-
}
|
44
|
+
}
|
45
|
+
// plain plugin object
|
55
46
|
else if (isObject(plugin)) {
|
56
47
|
addPlugin(createPlugin(plugin.setup, plugin));
|
57
|
-
}
|
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
|
};
|