1 | ;
|
2 | var task_resolve_1 = require("./task.resolve");
|
3 | var _ = require("../lodash.custom");
|
4 | var debug = require("debug")("cb:task.tree.transform");
|
5 | function applyBooleanPropertyToChildren(tasks, skipped) {
|
6 | tasks.forEach(function (task) {
|
7 | if (skipped) {
|
8 | task.skipped = true;
|
9 | }
|
10 | if (task.skipped) {
|
11 | if (task.tasks.length) {
|
12 | applyBooleanPropertyToChildren(task.tasks, true);
|
13 | return;
|
14 | }
|
15 | }
|
16 | if (task.tasks.length) {
|
17 | applyBooleanPropertyToChildren(task.tasks, false);
|
18 | }
|
19 | });
|
20 | }
|
21 | exports.transforms = {
|
22 | "Add skipped property to children": {
|
23 | predicate: function (tasks) {
|
24 | return true;
|
25 | },
|
26 | fn: function (tasks) {
|
27 | applyBooleanPropertyToChildren(tasks, false);
|
28 | return tasks;
|
29 | }
|
30 | },
|
31 | "Add if property to children": {
|
32 | predicate: function (tasks) {
|
33 | return true;
|
34 | },
|
35 | fn: function (tasks) {
|
36 | applyBooleanPropertyToChildren(tasks, false, "ifChanged", "");
|
37 | function applyBooleanPropertyToChildren(tasks, add, property, value) {
|
38 | tasks.forEach(function (task) {
|
39 | if (add) {
|
40 | task[property].unshift.apply(task[property], [].concat(value));
|
41 | }
|
42 | if (task[property].length) {
|
43 | if (task.tasks.length) {
|
44 | applyBooleanPropertyToChildren(task.tasks, true, property, task[property]);
|
45 | return;
|
46 | }
|
47 | }
|
48 | if (task.tasks.length) {
|
49 | applyBooleanPropertyToChildren(task.tasks, false, property);
|
50 | }
|
51 | });
|
52 | }
|
53 | return tasks;
|
54 | }
|
55 | },
|
56 | "Pass options/flags/query from Groups -> Tasks": {
|
57 | predicate: function () {
|
58 | return true;
|
59 | },
|
60 | fn: function (tasks) {
|
61 | addProps(tasks);
|
62 | function addProps(tasks) {
|
63 | tasks.forEach(function (task) {
|
64 | if (task.type === task_resolve_1.TaskTypes.TaskGroup) {
|
65 | task.tasks.forEach(function (childTask) {
|
66 | if (childTask.type === task_resolve_1.TaskTypes.TaskGroup) {
|
67 | addProps(childTask.tasks);
|
68 | }
|
69 | else {
|
70 | childTask.flags = _.merge({}, childTask.flags, task.flags);
|
71 | childTask.query = _.merge({}, childTask.query, task.query);
|
72 | }
|
73 | });
|
74 | }
|
75 | if (task.type === task_resolve_1.TaskTypes.ParentGroup && task.tasks.length) {
|
76 | addProps(task.tasks);
|
77 | }
|
78 | });
|
79 | }
|
80 | return tasks;
|
81 | }
|
82 | }
|
83 | };
|
84 | /**
|
85 | * Allow transformations on tasks before error collections
|
86 | */
|
87 | function applyTreeTransforms(incoming) {
|
88 | return Object.keys(exports.transforms).reduce(function (task, key) {
|
89 | var transform = exports.transforms[key];
|
90 | if (transform.predicate(task)) {
|
91 | debug("Applying transform " + key);
|
92 | return transform.fn(task);
|
93 | }
|
94 | return incoming;
|
95 | }, incoming);
|
96 | }
|
97 | exports.applyTreeTransforms = applyTreeTransforms;
|
98 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay50cmVlLnRyYW5zZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGFzay50cmVlLnRyYW5zZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxJQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxJQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQU96RCx3Q0FBeUMsS0FBYSxFQUFFLE9BQWdCO0lBQ3BFLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1FBQ3hCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDZixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sQ0FBQztZQUNYLENBQUM7UUFDTCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVZLFFBQUEsVUFBVSxHQUFHO0lBRXRCLGtDQUFrQyxFQUFHO1FBQ2pDLFNBQVMsRUFBVCxVQUFXLEtBQWE7WUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsRUFBRSxFQUFGLFVBQUksS0FBYTtZQUNiLDhCQUE4QixD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 |
\ | No newline at end of file |