UNPKG

7.79 kBJavaScriptView Raw
1"use strict";
2var task_resolve_1 = require("./task.resolve");
3var _ = require("../lodash.custom");
4var debug = require("debug")("cb:task.tree.transform");
5function 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}
21exports.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 */
87function 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}
97exports.applyTreeTransforms = applyTreeTransforms;
98//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay50cmVlLnRyYW5zZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGFzay50cmVlLnRyYW5zZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxJQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxJQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQU96RCx3Q0FBeUMsS0FBYSxFQUFFLE9BQWdCO0lBQ3BFLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1FBQ3hCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDZixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sQ0FBQztZQUNYLENBQUM7UUFDTCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVZLFFBQUEsVUFBVSxHQUFHO0lBRXRCLGtDQUFrQyxFQUFHO1FBQ2pDLFNBQVMsRUFBVCxVQUFXLEtBQWE7WUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsRUFBRSxFQUFGLFVBQUksS0FBYTtZQUNiLDhCQUE4QixD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
\No newline at end of file