@modern-js/plugin 2.56.2 → 2.57.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.
- package/dist/cjs/manager/sync.js +6 -0
- package/dist/cjs/workflow/index.js +5 -1
- package/dist/cjs/workflow/interrupt.js +64 -0
- package/dist/cjs/workflow/syncParallel.js +55 -0
- package/dist/esm/index.js +175 -32
- package/dist/esm-node/manager/sync.js +7 -1
- package/dist/esm-node/workflow/index.js +2 -0
- package/dist/esm-node/workflow/interrupt.js +39 -0
- package/dist/esm-node/workflow/syncParallel.js +30 -0
- package/dist/types/manager/types.d.ts +4 -4
- package/dist/types/workflow/index.d.ts +2 -0
- package/dist/types/workflow/interrupt.d.ts +12 -0
- package/dist/types/workflow/syncParallel.d.ts +10 -0
- package/package.json +4 -4
package/dist/cjs/manager/sync.js
CHANGED
@@ -163,6 +163,12 @@ const cloneHook = (hook) => {
|
|
163
163
|
if ((0, import_workflow.isParallelWorkflow)(hook)) {
|
164
164
|
return (0, import_workflow.createParallelWorkflow)();
|
165
165
|
}
|
166
|
+
if ((0, import_workflow.isAsyncInterruptWorkflow)(hook)) {
|
167
|
+
return (0, import_workflow.createAsyncInterruptWorkflow)();
|
168
|
+
}
|
169
|
+
if ((0, import_workflow.isSyncParallelWorkflow)(hook)) {
|
170
|
+
return (0, import_workflow.createSyncParallelWorkflow)();
|
171
|
+
}
|
166
172
|
if ((0, import_farrow_pipeline.isPipeline)(hook)) {
|
167
173
|
return (0, import_farrow_pipeline.createPipeline)();
|
168
174
|
}
|
@@ -16,11 +16,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
16
16
|
var workflow_exports = {};
|
17
17
|
module.exports = __toCommonJS(workflow_exports);
|
18
18
|
__reExport(workflow_exports, require("./sync"), module.exports);
|
19
|
+
__reExport(workflow_exports, require("./syncParallel"), module.exports);
|
19
20
|
__reExport(workflow_exports, require("./parallel"), module.exports);
|
20
21
|
__reExport(workflow_exports, require("./async"), module.exports);
|
22
|
+
__reExport(workflow_exports, require("./interrupt"), module.exports);
|
21
23
|
// Annotate the CommonJS export names for ESM import in node:
|
22
24
|
0 && (module.exports = {
|
23
25
|
...require("./sync"),
|
26
|
+
...require("./syncParallel"),
|
24
27
|
...require("./parallel"),
|
25
|
-
...require("./async")
|
28
|
+
...require("./async"),
|
29
|
+
...require("./interrupt")
|
26
30
|
});
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var interrupt_exports = {};
|
20
|
+
__export(interrupt_exports, {
|
21
|
+
createAsyncInterruptWorkflow: () => createAsyncInterruptWorkflow,
|
22
|
+
isAsyncInterruptWorkflow: () => isAsyncInterruptWorkflow
|
23
|
+
});
|
24
|
+
module.exports = __toCommonJS(interrupt_exports);
|
25
|
+
var import_farrow_pipeline = require("../farrow-pipeline");
|
26
|
+
const ASYNC_INTERRUPT_WORKFLOW_SYMBOL = Symbol.for("ASYNC_INTERRUPT_WORKFLOW_SYMBOL");
|
27
|
+
const isAsyncInterruptWorkflow = (input) => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]);
|
28
|
+
const createAsyncInterruptWorkflow = () => {
|
29
|
+
const pipeline = (0, import_farrow_pipeline.createAsyncPipeline)();
|
30
|
+
const use = (...input) => {
|
31
|
+
pipeline.use(...input.map(mapAsyncWorkerToInterruptMiddleware));
|
32
|
+
return workflow;
|
33
|
+
};
|
34
|
+
const run = async (input) => {
|
35
|
+
const result = await pipeline.run(input, {
|
36
|
+
onLast: () => []
|
37
|
+
});
|
38
|
+
return result;
|
39
|
+
};
|
40
|
+
const workflow = {
|
41
|
+
...pipeline,
|
42
|
+
use,
|
43
|
+
run,
|
44
|
+
[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]: true
|
45
|
+
};
|
46
|
+
return workflow;
|
47
|
+
};
|
48
|
+
const mapAsyncWorkerToInterruptMiddleware = (worker) => async (input, next) => {
|
49
|
+
let isInterrupted = false;
|
50
|
+
const interrupt = (value) => {
|
51
|
+
isInterrupted = true;
|
52
|
+
return value;
|
53
|
+
};
|
54
|
+
const result = await Promise.resolve(worker(input, interrupt));
|
55
|
+
if (isInterrupted) {
|
56
|
+
return result;
|
57
|
+
}
|
58
|
+
return Promise.resolve(next(input));
|
59
|
+
};
|
60
|
+
// Annotate the CommonJS export names for ESM import in node:
|
61
|
+
0 && (module.exports = {
|
62
|
+
createAsyncInterruptWorkflow,
|
63
|
+
isAsyncInterruptWorkflow
|
64
|
+
});
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var syncParallel_exports = {};
|
20
|
+
__export(syncParallel_exports, {
|
21
|
+
createSyncParallelWorkflow: () => createSyncParallelWorkflow,
|
22
|
+
isSyncParallelWorkflow: () => isSyncParallelWorkflow
|
23
|
+
});
|
24
|
+
module.exports = __toCommonJS(syncParallel_exports);
|
25
|
+
var import_farrow_pipeline = require("../farrow-pipeline");
|
26
|
+
const SYNC_PARALLEL_WORKFLOW_SYMBOL = Symbol.for("SYNC_MODERN_PARALLEL_WORKFLOW");
|
27
|
+
const isSyncParallelWorkflow = (input) => Boolean(input === null || input === void 0 ? void 0 : input[SYNC_PARALLEL_WORKFLOW_SYMBOL]);
|
28
|
+
const createSyncParallelWorkflow = () => {
|
29
|
+
const pipeline = (0, import_farrow_pipeline.createPipeline)();
|
30
|
+
const use = (...input) => {
|
31
|
+
pipeline.use(...input.map(mapSyncParallelWorkerToMiddleware));
|
32
|
+
return workflow;
|
33
|
+
};
|
34
|
+
const run = (input) => {
|
35
|
+
return pipeline.run(input, {
|
36
|
+
onLast: () => []
|
37
|
+
}).filter((result) => Boolean(result));
|
38
|
+
};
|
39
|
+
const workflow = {
|
40
|
+
...pipeline,
|
41
|
+
run,
|
42
|
+
use,
|
43
|
+
[SYNC_PARALLEL_WORKFLOW_SYMBOL]: true
|
44
|
+
};
|
45
|
+
return workflow;
|
46
|
+
};
|
47
|
+
const mapSyncParallelWorkerToMiddleware = (worker) => (input, next) => [
|
48
|
+
worker(input),
|
49
|
+
...next(input)
|
50
|
+
];
|
51
|
+
// Annotate the CommonJS export names for ESM import in node:
|
52
|
+
0 && (module.exports = {
|
53
|
+
createSyncParallelWorkflow,
|
54
|
+
isSyncParallelWorkflow
|
55
|
+
});
|
package/dist/esm/index.js
CHANGED
@@ -253,11 +253,53 @@ var mapWorkerToMiddleware = function(worker) {
|
|
253
253
|
};
|
254
254
|
};
|
255
255
|
|
256
|
-
// src/workflow/
|
256
|
+
// src/workflow/syncParallel.ts
|
257
257
|
import { _ as _define_property5 } from "@swc/helpers/_/_define_property";
|
258
258
|
import { _ as _object_spread5 } from "@swc/helpers/_/_object_spread";
|
259
259
|
import { _ as _object_spread_props4 } from "@swc/helpers/_/_object_spread_props";
|
260
260
|
import { _ as _to_consumable_array5 } from "@swc/helpers/_/_to_consumable_array";
|
261
|
+
var SYNC_PARALLEL_WORKFLOW_SYMBOL = Symbol.for("SYNC_MODERN_PARALLEL_WORKFLOW");
|
262
|
+
var isSyncParallelWorkflow = function(input) {
|
263
|
+
return Boolean(input === null || input === void 0 ? void 0 : input[SYNC_PARALLEL_WORKFLOW_SYMBOL]);
|
264
|
+
};
|
265
|
+
var createSyncParallelWorkflow = function() {
|
266
|
+
var pipeline = createPipeline();
|
267
|
+
var use = function() {
|
268
|
+
for (var _len = arguments.length, input = new Array(_len), _key = 0; _key < _len; _key++) {
|
269
|
+
input[_key] = arguments[_key];
|
270
|
+
}
|
271
|
+
var _pipeline;
|
272
|
+
(_pipeline = pipeline).use.apply(_pipeline, _to_consumable_array5(input.map(mapSyncParallelWorkerToMiddleware)));
|
273
|
+
return workflow;
|
274
|
+
};
|
275
|
+
var run = function(input) {
|
276
|
+
return pipeline.run(input, {
|
277
|
+
onLast: function() {
|
278
|
+
return [];
|
279
|
+
}
|
280
|
+
}).filter(function(result) {
|
281
|
+
return Boolean(result);
|
282
|
+
});
|
283
|
+
};
|
284
|
+
var workflow = _object_spread_props4(_object_spread5({}, pipeline), _define_property5({
|
285
|
+
run,
|
286
|
+
use
|
287
|
+
}, SYNC_PARALLEL_WORKFLOW_SYMBOL, true));
|
288
|
+
return workflow;
|
289
|
+
};
|
290
|
+
var mapSyncParallelWorkerToMiddleware = function(worker) {
|
291
|
+
return function(input, next) {
|
292
|
+
return [
|
293
|
+
worker(input)
|
294
|
+
].concat(_to_consumable_array5(next(input)));
|
295
|
+
};
|
296
|
+
};
|
297
|
+
|
298
|
+
// src/workflow/parallel.ts
|
299
|
+
import { _ as _define_property6 } from "@swc/helpers/_/_define_property";
|
300
|
+
import { _ as _object_spread6 } from "@swc/helpers/_/_object_spread";
|
301
|
+
import { _ as _object_spread_props5 } from "@swc/helpers/_/_object_spread_props";
|
302
|
+
import { _ as _to_consumable_array6 } from "@swc/helpers/_/_to_consumable_array";
|
261
303
|
var PARALLEL_WORKFLOW_SYMBOL = Symbol.for("MODERN_PARALLEL_WORKFLOW");
|
262
304
|
var isParallelWorkflow = function(input) {
|
263
305
|
return Boolean(input === null || input === void 0 ? void 0 : input[PARALLEL_WORKFLOW_SYMBOL]);
|
@@ -269,7 +311,7 @@ var createParallelWorkflow = function() {
|
|
269
311
|
input[_key] = arguments[_key];
|
270
312
|
}
|
271
313
|
var _pipeline;
|
272
|
-
(_pipeline = pipeline).use.apply(_pipeline,
|
314
|
+
(_pipeline = pipeline).use.apply(_pipeline, _to_consumable_array6(input.map(mapParallelWorkerToAsyncMiddleware)));
|
273
315
|
return workflow;
|
274
316
|
};
|
275
317
|
var run = function(input) {
|
@@ -281,7 +323,7 @@ var createParallelWorkflow = function() {
|
|
281
323
|
return result.filter(Boolean);
|
282
324
|
});
|
283
325
|
};
|
284
|
-
var workflow =
|
326
|
+
var workflow = _object_spread_props5(_object_spread6({}, pipeline), _define_property6({
|
285
327
|
run,
|
286
328
|
use
|
287
329
|
}, PARALLEL_WORKFLOW_SYMBOL, true));
|
@@ -291,15 +333,15 @@ var mapParallelWorkerToAsyncMiddleware = function(worker) {
|
|
291
333
|
return function(input, next) {
|
292
334
|
return [
|
293
335
|
worker(input)
|
294
|
-
].concat(
|
336
|
+
].concat(_to_consumable_array6(next(input)));
|
295
337
|
};
|
296
338
|
};
|
297
339
|
|
298
340
|
// src/workflow/async.ts
|
299
|
-
import { _ as
|
300
|
-
import { _ as
|
301
|
-
import { _ as
|
302
|
-
import { _ as
|
341
|
+
import { _ as _define_property7 } from "@swc/helpers/_/_define_property";
|
342
|
+
import { _ as _object_spread7 } from "@swc/helpers/_/_object_spread";
|
343
|
+
import { _ as _object_spread_props6 } from "@swc/helpers/_/_object_spread_props";
|
344
|
+
import { _ as _to_consumable_array7 } from "@swc/helpers/_/_to_consumable_array";
|
303
345
|
var ASYNC_WORKFLOW_SYMBOL = Symbol.for("MODERN_ASYNC_WORKFLOW");
|
304
346
|
var isPromise = function(obj) {
|
305
347
|
return obj && typeof obj.then === "function";
|
@@ -314,7 +356,7 @@ var createAsyncWorkflow = function() {
|
|
314
356
|
input[_key] = arguments[_key];
|
315
357
|
}
|
316
358
|
var _pipeline;
|
317
|
-
(_pipeline = pipeline).use.apply(_pipeline,
|
359
|
+
(_pipeline = pipeline).use.apply(_pipeline, _to_consumable_array7(input.map(mapAsyncWorkerToAsyncMiddleware)));
|
318
360
|
return workflow;
|
319
361
|
};
|
320
362
|
var run = function(input) {
|
@@ -330,7 +372,7 @@ var createAsyncWorkflow = function() {
|
|
330
372
|
}
|
331
373
|
return result.filter(Boolean);
|
332
374
|
};
|
333
|
-
var workflow =
|
375
|
+
var workflow = _object_spread_props6(_object_spread7({}, pipeline), _define_property7({
|
334
376
|
use,
|
335
377
|
run
|
336
378
|
}, ASYNC_WORKFLOW_SYMBOL, true));
|
@@ -342,15 +384,106 @@ var mapAsyncWorkerToAsyncMiddleware = function(worker) {
|
|
342
384
|
return Promise.resolve(next(input)).then(function(nextResult) {
|
343
385
|
return [
|
344
386
|
result
|
345
|
-
].concat(
|
387
|
+
].concat(_to_consumable_array7(nextResult));
|
346
388
|
});
|
347
389
|
});
|
348
390
|
};
|
349
391
|
};
|
350
392
|
|
393
|
+
// src/workflow/interrupt.ts
|
394
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
395
|
+
import { _ as _define_property8 } from "@swc/helpers/_/_define_property";
|
396
|
+
import { _ as _object_spread8 } from "@swc/helpers/_/_object_spread";
|
397
|
+
import { _ as _object_spread_props7 } from "@swc/helpers/_/_object_spread_props";
|
398
|
+
import { _ as _to_consumable_array8 } from "@swc/helpers/_/_to_consumable_array";
|
399
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
400
|
+
var ASYNC_INTERRUPT_WORKFLOW_SYMBOL = Symbol.for("ASYNC_INTERRUPT_WORKFLOW_SYMBOL");
|
401
|
+
var isAsyncInterruptWorkflow = function(input) {
|
402
|
+
return Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]);
|
403
|
+
};
|
404
|
+
var createAsyncInterruptWorkflow = function() {
|
405
|
+
var pipeline = createAsyncPipeline();
|
406
|
+
var use = function() {
|
407
|
+
for (var _len = arguments.length, input = new Array(_len), _key = 0; _key < _len; _key++) {
|
408
|
+
input[_key] = arguments[_key];
|
409
|
+
}
|
410
|
+
var _pipeline;
|
411
|
+
(_pipeline = pipeline).use.apply(_pipeline, _to_consumable_array8(input.map(mapAsyncWorkerToInterruptMiddleware)));
|
412
|
+
return workflow;
|
413
|
+
};
|
414
|
+
var run = function() {
|
415
|
+
var _ref = _async_to_generator(function(input) {
|
416
|
+
var result;
|
417
|
+
return _ts_generator(this, function(_state) {
|
418
|
+
switch (_state.label) {
|
419
|
+
case 0:
|
420
|
+
return [
|
421
|
+
4,
|
422
|
+
pipeline.run(input, {
|
423
|
+
onLast: function() {
|
424
|
+
return [];
|
425
|
+
}
|
426
|
+
})
|
427
|
+
];
|
428
|
+
case 1:
|
429
|
+
result = _state.sent();
|
430
|
+
return [
|
431
|
+
2,
|
432
|
+
result
|
433
|
+
];
|
434
|
+
}
|
435
|
+
});
|
436
|
+
});
|
437
|
+
return function run2(input) {
|
438
|
+
return _ref.apply(this, arguments);
|
439
|
+
};
|
440
|
+
}();
|
441
|
+
var workflow = _object_spread_props7(_object_spread8({}, pipeline), _define_property8({
|
442
|
+
use,
|
443
|
+
run
|
444
|
+
}, ASYNC_INTERRUPT_WORKFLOW_SYMBOL, true));
|
445
|
+
return workflow;
|
446
|
+
};
|
447
|
+
var mapAsyncWorkerToInterruptMiddleware = function(worker) {
|
448
|
+
return function() {
|
449
|
+
var _ref = _async_to_generator(function(input, next) {
|
450
|
+
var isInterrupted, interrupt, result;
|
451
|
+
return _ts_generator(this, function(_state) {
|
452
|
+
switch (_state.label) {
|
453
|
+
case 0:
|
454
|
+
isInterrupted = false;
|
455
|
+
interrupt = function(value) {
|
456
|
+
isInterrupted = true;
|
457
|
+
return value;
|
458
|
+
};
|
459
|
+
return [
|
460
|
+
4,
|
461
|
+
Promise.resolve(worker(input, interrupt))
|
462
|
+
];
|
463
|
+
case 1:
|
464
|
+
result = _state.sent();
|
465
|
+
if (isInterrupted) {
|
466
|
+
return [
|
467
|
+
2,
|
468
|
+
result
|
469
|
+
];
|
470
|
+
}
|
471
|
+
return [
|
472
|
+
2,
|
473
|
+
Promise.resolve(next(input))
|
474
|
+
];
|
475
|
+
}
|
476
|
+
});
|
477
|
+
});
|
478
|
+
return function(input, next) {
|
479
|
+
return _ref.apply(this, arguments);
|
480
|
+
};
|
481
|
+
}();
|
482
|
+
};
|
483
|
+
|
351
484
|
// src/manager/sync.ts
|
352
|
-
import { _ as
|
353
|
-
import { _ as
|
485
|
+
import { _ as _object_spread9 } from "@swc/helpers/_/_object_spread";
|
486
|
+
import { _ as _object_spread_props8 } from "@swc/helpers/_/_object_spread_props";
|
354
487
|
|
355
488
|
// src/manager/shared.ts
|
356
489
|
import { pluginDagSort } from "@modern-js/utils/universal/plugin-dag-sort";
|
@@ -403,24 +536,24 @@ var DEFAULT_OPTIONS = {
|
|
403
536
|
var createManager = function(hooks, api) {
|
404
537
|
var index = 0;
|
405
538
|
var runners;
|
406
|
-
var currentHooks =
|
539
|
+
var currentHooks = _object_spread9({}, hooks);
|
407
540
|
var useRunner = function() {
|
408
541
|
return runners;
|
409
542
|
};
|
410
543
|
var registerHook = function(extraHooks) {
|
411
|
-
currentHooks =
|
544
|
+
currentHooks = _object_spread9({}, extraHooks, currentHooks);
|
412
545
|
};
|
413
546
|
var isPlugin = function(input) {
|
414
547
|
return isObject(input) && hasOwnProperty(input, SYNC_PLUGIN_SYMBOL) && input[SYNC_PLUGIN_SYMBOL] === SYNC_PLUGIN_SYMBOL;
|
415
548
|
};
|
416
|
-
var pluginAPI =
|
549
|
+
var pluginAPI = _object_spread_props8(_object_spread9({}, api), {
|
417
550
|
useHookRunners: useRunner
|
418
551
|
});
|
419
552
|
var clone = function(overrideAPI) {
|
420
553
|
var plugins = [];
|
421
554
|
var addPlugin = function(plugin) {
|
422
555
|
if (!includePlugin(plugins, plugin)) {
|
423
|
-
plugins.push(
|
556
|
+
plugins.push(_object_spread9({}, plugin));
|
424
557
|
}
|
425
558
|
};
|
426
559
|
var usePlugin = function() {
|
@@ -453,7 +586,7 @@ var createManager = function(hooks, api) {
|
|
453
586
|
if (options.registerHook) {
|
454
587
|
registerHook(options.registerHook);
|
455
588
|
}
|
456
|
-
return
|
589
|
+
return _object_spread_props8(_object_spread9(_object_spread_props8(_object_spread9({}, DEFAULT_OPTIONS), {
|
457
590
|
name: "No.".concat(index++, " plugin")
|
458
591
|
}), options), {
|
459
592
|
SYNC_PLUGIN_SYMBOL,
|
@@ -465,7 +598,7 @@ var createManager = function(hooks, api) {
|
|
465
598
|
};
|
466
599
|
var init = function() {
|
467
600
|
var sortedPlugins = sortPlugins(plugins);
|
468
|
-
var mergedPluginAPI =
|
601
|
+
var mergedPluginAPI = _object_spread9({}, pluginAPI, overrideAPI);
|
469
602
|
checkPlugins(sortedPlugins);
|
470
603
|
var hooksList = sortedPlugins.map(function(plugin) {
|
471
604
|
return plugin.setup(mergedPluginAPI);
|
@@ -502,7 +635,7 @@ var generateRunner = function(hooksList, hooksMap) {
|
|
502
635
|
}
|
503
636
|
});
|
504
637
|
runner[key2] = function(input, options) {
|
505
|
-
return cloneShape[key2].run(input,
|
638
|
+
return cloneShape[key2].run(input, _object_spread9({}, options));
|
506
639
|
};
|
507
640
|
};
|
508
641
|
for (var key in cloneShape)
|
@@ -526,6 +659,12 @@ var cloneHook = function(hook) {
|
|
526
659
|
if (isParallelWorkflow(hook)) {
|
527
660
|
return createParallelWorkflow();
|
528
661
|
}
|
662
|
+
if (isAsyncInterruptWorkflow(hook)) {
|
663
|
+
return createAsyncInterruptWorkflow();
|
664
|
+
}
|
665
|
+
if (isSyncParallelWorkflow(hook)) {
|
666
|
+
return createSyncParallelWorkflow();
|
667
|
+
}
|
529
668
|
if (isPipeline(hook)) {
|
530
669
|
return createPipeline();
|
531
670
|
}
|
@@ -543,32 +682,32 @@ var cloneHooksMap = function(record) {
|
|
543
682
|
};
|
544
683
|
|
545
684
|
// src/manager/async.ts
|
546
|
-
import { _ as
|
547
|
-
import { _ as
|
548
|
-
import { _ as
|
549
|
-
import { _ as
|
685
|
+
import { _ as _async_to_generator2 } from "@swc/helpers/_/_async_to_generator";
|
686
|
+
import { _ as _object_spread10 } from "@swc/helpers/_/_object_spread";
|
687
|
+
import { _ as _object_spread_props9 } from "@swc/helpers/_/_object_spread_props";
|
688
|
+
import { _ as _ts_generator2 } from "@swc/helpers/_/_ts_generator";
|
550
689
|
var ASYNC_PLUGIN_SYMBOL = "ASYNC_PLUGIN_SYMBOL";
|
551
690
|
var createAsyncManager = function(hooks, api) {
|
552
691
|
var index = 0;
|
553
692
|
var runners;
|
554
|
-
var currentHooks =
|
693
|
+
var currentHooks = _object_spread10({}, hooks);
|
555
694
|
var useRunner = function() {
|
556
695
|
return runners;
|
557
696
|
};
|
558
697
|
var registerHook = function(extraHooks) {
|
559
|
-
currentHooks =
|
698
|
+
currentHooks = _object_spread10({}, extraHooks, currentHooks);
|
560
699
|
};
|
561
700
|
var isPlugin = function(input) {
|
562
701
|
return isObject(input) && hasOwnProperty(input, ASYNC_PLUGIN_SYMBOL) && input[ASYNC_PLUGIN_SYMBOL] === ASYNC_PLUGIN_SYMBOL;
|
563
702
|
};
|
564
|
-
var pluginAPI =
|
703
|
+
var pluginAPI = _object_spread_props9(_object_spread10({}, api), {
|
565
704
|
useHookRunners: useRunner
|
566
705
|
});
|
567
706
|
var clone = function(overrideAPI) {
|
568
707
|
var plugins = [];
|
569
708
|
var addPlugin = function(plugin) {
|
570
709
|
if (!includePlugin(plugins, plugin)) {
|
571
|
-
plugins.push(
|
710
|
+
plugins.push(_object_spread10({}, plugin));
|
572
711
|
}
|
573
712
|
};
|
574
713
|
var usePlugin = function() {
|
@@ -601,7 +740,7 @@ var createAsyncManager = function(hooks, api) {
|
|
601
740
|
if (options.registerHook) {
|
602
741
|
registerHook(options.registerHook);
|
603
742
|
}
|
604
|
-
return
|
743
|
+
return _object_spread_props9(_object_spread10(_object_spread_props9(_object_spread10({}, DEFAULT_OPTIONS), {
|
605
744
|
name: "No.".concat(index++, " plugin")
|
606
745
|
}), options), {
|
607
746
|
ASYNC_PLUGIN_SYMBOL,
|
@@ -612,13 +751,13 @@ var createAsyncManager = function(hooks, api) {
|
|
612
751
|
plugins = [];
|
613
752
|
};
|
614
753
|
var init = function() {
|
615
|
-
var _ref =
|
754
|
+
var _ref = _async_to_generator2(function() {
|
616
755
|
var sortedPlugins, mergedPluginAPI, hooksList, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, plugin, _, err;
|
617
|
-
return
|
756
|
+
return _ts_generator2(this, function(_state) {
|
618
757
|
switch (_state.label) {
|
619
758
|
case 0:
|
620
759
|
sortedPlugins = sortPlugins(plugins);
|
621
|
-
mergedPluginAPI =
|
760
|
+
mergedPluginAPI = _object_spread10({}, pluginAPI, overrideAPI);
|
622
761
|
checkPlugins(sortedPlugins);
|
623
762
|
hooksList = [];
|
624
763
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
@@ -716,6 +855,7 @@ export {
|
|
716
855
|
DEFAULT_OPTIONS,
|
717
856
|
cloneHook,
|
718
857
|
cloneHooksMap,
|
858
|
+
createAsyncInterruptWorkflow,
|
719
859
|
createAsyncManager,
|
720
860
|
createAsyncPipeline,
|
721
861
|
createAsyncWaterfall,
|
@@ -724,15 +864,18 @@ export {
|
|
724
864
|
createManager,
|
725
865
|
createParallelWorkflow,
|
726
866
|
createPipeline,
|
867
|
+
createSyncParallelWorkflow,
|
727
868
|
createWaterfall,
|
728
869
|
createWorkflow,
|
729
870
|
generateRunner,
|
730
871
|
getAsyncBrook,
|
731
872
|
getBrook,
|
873
|
+
isAsyncInterruptWorkflow,
|
732
874
|
isAsyncWaterfall,
|
733
875
|
isAsyncWorkflow,
|
734
876
|
isParallelWorkflow,
|
735
877
|
isPipeline,
|
878
|
+
isSyncParallelWorkflow,
|
736
879
|
isWaterfall,
|
737
880
|
isWorkflow
|
738
881
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { isPipeline, createPipeline } from "../farrow-pipeline";
|
2
2
|
import { isWaterfall, createWaterfall, isAsyncWaterfall, createAsyncWaterfall } from "../waterfall";
|
3
|
-
import { isWorkflow, createWorkflow, isAsyncWorkflow, createAsyncWorkflow, isParallelWorkflow, createParallelWorkflow } from "../workflow";
|
3
|
+
import { isWorkflow, createWorkflow, isAsyncWorkflow, createAsyncWorkflow, isParallelWorkflow, createParallelWorkflow, isAsyncInterruptWorkflow, createAsyncInterruptWorkflow, isSyncParallelWorkflow, createSyncParallelWorkflow } from "../workflow";
|
4
4
|
import { checkPlugins, hasOwnProperty, includePlugin, isObject, sortPlugins } from "./shared";
|
5
5
|
const SYNC_PLUGIN_SYMBOL = "SYNC_PLUGIN_SYMBOL";
|
6
6
|
const DEFAULT_OPTIONS = {
|
@@ -136,6 +136,12 @@ const cloneHook = (hook) => {
|
|
136
136
|
if (isParallelWorkflow(hook)) {
|
137
137
|
return createParallelWorkflow();
|
138
138
|
}
|
139
|
+
if (isAsyncInterruptWorkflow(hook)) {
|
140
|
+
return createAsyncInterruptWorkflow();
|
141
|
+
}
|
142
|
+
if (isSyncParallelWorkflow(hook)) {
|
143
|
+
return createSyncParallelWorkflow();
|
144
|
+
}
|
139
145
|
if (isPipeline(hook)) {
|
140
146
|
return createPipeline();
|
141
147
|
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { createAsyncPipeline } from "../farrow-pipeline";
|
2
|
+
const ASYNC_INTERRUPT_WORKFLOW_SYMBOL = Symbol.for("ASYNC_INTERRUPT_WORKFLOW_SYMBOL");
|
3
|
+
const isAsyncInterruptWorkflow = (input) => Boolean(input === null || input === void 0 ? void 0 : input[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]);
|
4
|
+
const createAsyncInterruptWorkflow = () => {
|
5
|
+
const pipeline = createAsyncPipeline();
|
6
|
+
const use = (...input) => {
|
7
|
+
pipeline.use(...input.map(mapAsyncWorkerToInterruptMiddleware));
|
8
|
+
return workflow;
|
9
|
+
};
|
10
|
+
const run = async (input) => {
|
11
|
+
const result = await pipeline.run(input, {
|
12
|
+
onLast: () => []
|
13
|
+
});
|
14
|
+
return result;
|
15
|
+
};
|
16
|
+
const workflow = {
|
17
|
+
...pipeline,
|
18
|
+
use,
|
19
|
+
run,
|
20
|
+
[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]: true
|
21
|
+
};
|
22
|
+
return workflow;
|
23
|
+
};
|
24
|
+
const mapAsyncWorkerToInterruptMiddleware = (worker) => async (input, next) => {
|
25
|
+
let isInterrupted = false;
|
26
|
+
const interrupt = (value) => {
|
27
|
+
isInterrupted = true;
|
28
|
+
return value;
|
29
|
+
};
|
30
|
+
const result = await Promise.resolve(worker(input, interrupt));
|
31
|
+
if (isInterrupted) {
|
32
|
+
return result;
|
33
|
+
}
|
34
|
+
return Promise.resolve(next(input));
|
35
|
+
};
|
36
|
+
export {
|
37
|
+
createAsyncInterruptWorkflow,
|
38
|
+
isAsyncInterruptWorkflow
|
39
|
+
};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { createPipeline } from "../farrow-pipeline";
|
2
|
+
const SYNC_PARALLEL_WORKFLOW_SYMBOL = Symbol.for("SYNC_MODERN_PARALLEL_WORKFLOW");
|
3
|
+
const isSyncParallelWorkflow = (input) => Boolean(input === null || input === void 0 ? void 0 : input[SYNC_PARALLEL_WORKFLOW_SYMBOL]);
|
4
|
+
const createSyncParallelWorkflow = () => {
|
5
|
+
const pipeline = createPipeline();
|
6
|
+
const use = (...input) => {
|
7
|
+
pipeline.use(...input.map(mapSyncParallelWorkerToMiddleware));
|
8
|
+
return workflow;
|
9
|
+
};
|
10
|
+
const run = (input) => {
|
11
|
+
return pipeline.run(input, {
|
12
|
+
onLast: () => []
|
13
|
+
}).filter((result) => Boolean(result));
|
14
|
+
};
|
15
|
+
const workflow = {
|
16
|
+
...pipeline,
|
17
|
+
run,
|
18
|
+
use,
|
19
|
+
[SYNC_PARALLEL_WORKFLOW_SYMBOL]: true
|
20
|
+
};
|
21
|
+
return workflow;
|
22
|
+
};
|
23
|
+
const mapSyncParallelWorkerToMiddleware = (worker) => (input, next) => [
|
24
|
+
worker(input),
|
25
|
+
...next(input)
|
26
|
+
];
|
27
|
+
export {
|
28
|
+
createSyncParallelWorkflow,
|
29
|
+
isSyncParallelWorkflow
|
30
|
+
};
|
@@ -1,17 +1,17 @@
|
|
1
1
|
import type { Pipeline, MaybeAsync, Middleware, AsyncPipeline } from '../farrow-pipeline';
|
2
2
|
import type { Brook, Waterfall, AsyncBrook, AsyncWaterfall } from '../waterfall';
|
3
|
-
import type { Worker, Workflow, AsyncWorker, AsyncWorkflow, ParallelWorkflow } from '../workflow';
|
3
|
+
import type { Worker, Workflow, AsyncWorker, AsyncWorkflow, ParallelWorkflow, AsyncInterruptWorkflow, AsyncInterruptWorker, SyncParallelWorkflow } from '../workflow';
|
4
4
|
/** All hook types. */
|
5
|
-
export type Hook = Waterfall<any> | AsyncWaterfall<any> | Workflow<any, any> | AsyncWorkflow<any, any> | ParallelWorkflow<any> | Pipeline<any, any> | AsyncPipeline<any, any>;
|
5
|
+
export type Hook = Waterfall<any> | AsyncWaterfall<any> | Workflow<any, any> | AsyncWorkflow<any, any> | ParallelWorkflow<any> | SyncParallelWorkflow<any> | Pipeline<any, any> | AsyncPipeline<any, any> | AsyncInterruptWorkflow<any, any>;
|
6
6
|
export type HooksMap = Record<string, Hook>;
|
7
7
|
/** Extract the type of callback function from a hook. */
|
8
|
-
export type ToThread<P extends Hook> = P extends Workflow<infer I, infer O> ? Worker<I, O> : P extends AsyncWorkflow<infer I, infer O> ? AsyncWorker<I, O> : P extends ParallelWorkflow<infer I, infer O> ? AsyncWorker<I, O> : P extends Waterfall<infer I> ? Brook<I> : P extends AsyncWaterfall<infer I> ? AsyncBrook<I> : P extends Pipeline<infer I, infer O> ? Middleware<I, O> : P extends AsyncPipeline<infer I, infer O> ? Middleware<I, MaybeAsync<O>> : never;
|
8
|
+
export type ToThread<P extends Hook> = P extends Workflow<infer I, infer O> ? Worker<I, O> : P extends AsyncWorkflow<infer I, infer O> ? AsyncWorker<I, O> : P extends ParallelWorkflow<infer I, infer O> ? AsyncWorker<I, O> : P extends SyncParallelWorkflow<infer I, infer O> ? Worker<I, O> : P extends Waterfall<infer I> ? Brook<I> : P extends AsyncWaterfall<infer I> ? AsyncBrook<I> : P extends Pipeline<infer I, infer O> ? Middleware<I, O> : P extends AsyncPipeline<infer I, infer O> ? Middleware<I, MaybeAsync<O>> : P extends AsyncInterruptWorkflow<infer I, infer O> ? AsyncInterruptWorker<I, O> : never;
|
9
9
|
/** Extract types of callback function from hooks. */
|
10
10
|
export type ToThreads<PS> = {
|
11
11
|
[K in keyof PS]: PS[K] extends Hook ? ToThread<PS[K]> : PS[K] extends void ? void : never;
|
12
12
|
};
|
13
13
|
/** Extract run method from a hook. */
|
14
|
-
export type RunnerFromHook<P extends Hook> = P extends Waterfall<infer I> ? Waterfall<I>['run'] : P extends AsyncWaterfall<infer I> ? AsyncWaterfall<I>['run'] : P extends Workflow<infer I, infer O> ? Workflow<I, O>['run'] : P extends AsyncWorkflow<infer I, infer O> ? AsyncWorkflow<I, O>['run'] : P extends ParallelWorkflow<infer I, infer O> ? ParallelWorkflow<I, O>['run'] : P extends Pipeline<infer I, infer O> ? Pipeline<I, O>['run'] : P extends AsyncPipeline<infer I, infer O> ? AsyncPipeline<I, O>['run'] : never;
|
14
|
+
export type RunnerFromHook<P extends Hook> = P extends Waterfall<infer I> ? Waterfall<I>['run'] : P extends AsyncWaterfall<infer I> ? AsyncWaterfall<I>['run'] : P extends Workflow<infer I, infer O> ? Workflow<I, O>['run'] : P extends AsyncWorkflow<infer I, infer O> ? AsyncWorkflow<I, O>['run'] : P extends ParallelWorkflow<infer I, infer O> ? ParallelWorkflow<I, O>['run'] : P extends SyncParallelWorkflow<infer I, infer O> ? SyncParallelWorkflow<I, O>['run'] : P extends Pipeline<infer I, infer O> ? Pipeline<I, O>['run'] : P extends AsyncPipeline<infer I, infer O> ? AsyncPipeline<I, O>['run'] : P extends AsyncInterruptWorkflow<infer I, infer O> ? AsyncInterruptWorkflow<I, O>['run'] : never;
|
15
15
|
/** Extract all run methods from hooks. */
|
16
16
|
export type ToRunners<PS> = {
|
17
17
|
[K in keyof PS]: PS[K] extends Hook ? RunnerFromHook<PS[K]> : PS[K] extends void ? void : never;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { MaybeAsync } from '../farrow-pipeline';
|
2
|
+
declare const ASYNC_INTERRUPT_WORKFLOW_SYMBOL: unique symbol;
|
3
|
+
export type AsyncInterruptWorker<I, O> = (I: I, interrupt: (result: any) => void) => MaybeAsync<O>;
|
4
|
+
export type AsyncInterruptWorkers<I, O> = AsyncInterruptWorker<I, O>[];
|
5
|
+
export type AsyncInterruptWorkflow<I, O> = {
|
6
|
+
run: (input: I) => MaybeAsync<O[]>;
|
7
|
+
use: (...I: AsyncInterruptWorkers<I, O>) => AsyncInterruptWorkflow<I, O>;
|
8
|
+
[ASYNC_INTERRUPT_WORKFLOW_SYMBOL]: true;
|
9
|
+
};
|
10
|
+
export declare const isAsyncInterruptWorkflow: (input: any) => input is AsyncInterruptWorkflow<any, any>;
|
11
|
+
export declare const createAsyncInterruptWorkflow: <I = void, O = unknown>() => AsyncInterruptWorkflow<I, O>;
|
12
|
+
export {};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import type { Workers } from './sync';
|
2
|
+
declare const SYNC_PARALLEL_WORKFLOW_SYMBOL: unique symbol;
|
3
|
+
export type SyncParallelWorkflow<I, O = any> = {
|
4
|
+
run: (input: I) => O[];
|
5
|
+
use: (...I: Workers<I, O>) => SyncParallelWorkflow<I, O>;
|
6
|
+
[SYNC_PARALLEL_WORKFLOW_SYMBOL]: true;
|
7
|
+
};
|
8
|
+
export declare const isSyncParallelWorkflow: (input: any) => input is SyncParallelWorkflow<any, any>;
|
9
|
+
export declare const createSyncParallelWorkflow: <I = void, O = unknown>() => SyncParallelWorkflow<I, O>;
|
10
|
+
export {};
|
package/package.json
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
"modern",
|
16
16
|
"modern.js"
|
17
17
|
],
|
18
|
-
"version": "2.
|
18
|
+
"version": "2.57.1",
|
19
19
|
"jsnext:source": "./src/index.ts",
|
20
20
|
"types": "./dist/types/index.d.ts",
|
21
21
|
"main": "./dist/cjs/index.js",
|
@@ -33,15 +33,15 @@
|
|
33
33
|
},
|
34
34
|
"dependencies": {
|
35
35
|
"@swc/helpers": "0.5.3",
|
36
|
-
"@modern-js/utils": "2.
|
36
|
+
"@modern-js/utils": "2.57.1"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
39
|
"@types/jest": "^29",
|
40
40
|
"@types/node": "^14",
|
41
41
|
"typescript": "^5",
|
42
42
|
"jest": "^29",
|
43
|
-
"@scripts/build": "2.
|
44
|
-
"@scripts/jest-config": "2.
|
43
|
+
"@scripts/build": "2.57.1",
|
44
|
+
"@scripts/jest-config": "2.57.1"
|
45
45
|
},
|
46
46
|
"sideEffects": false,
|
47
47
|
"publishConfig": {
|