1 | ;
|
2 | var task_utils_1 = require("./task.utils");
|
3 | var watch_preprocess_1 = require("./watch.preprocess");
|
4 | var watch_errors_1 = require("./watch.errors");
|
5 | var blacklist = ["options", "bs-config", "before", "id"];
|
6 | var _ = require("../lodash.custom");
|
7 | exports.defaultWatchOptions = {
|
8 | ignoreInitial: true,
|
9 | block: false,
|
10 | throttle: 0,
|
11 | delay: 0,
|
12 | debounce: 0
|
13 | };
|
14 | /**
|
15 | * Create a single watch task item consisting of
|
16 | * - patterns
|
17 | * - tasks
|
18 | * - options
|
19 | */
|
20 | function createOne(name, index, item, itemOptions, globalOptions) {
|
21 | if (task_utils_1.isPlainObject(item)) {
|
22 | if (item.patterns && item.tasks) {
|
23 | return {
|
24 | patterns: [].concat(item.patterns).reduce(function (a, x) { return a.concat(x.split(":")); }, []),
|
25 | tasks: [].concat(item.tasks),
|
26 | options: _.merge({}, exports.defaultWatchOptions, globalOptions, itemOptions),
|
27 | watcherUID: name + "-" + index
|
28 | };
|
29 | }
|
30 | }
|
31 | return item;
|
32 | }
|
33 | /**
|
34 | * @param watchTaskParent
|
35 | * @param globalOptions
|
36 | * @returns {*}
|
37 | */
|
38 | function getFormattedTask(name, watchTaskParent, globalOptions) {
|
39 | /**
|
40 | * Simple mode is when patterns + tasks given as top-level
|
41 | * keys. This means we automatically just into simple mode
|
42 | * eg:
|
43 | * default: {
|
44 | * patterns: ['*.json']
|
45 | * tasks: ['*.json']
|
46 | * }
|
47 | *
|
48 | */
|
49 | if (watchTaskParent.patterns && watchTaskParent.tasks) {
|
50 | return [createOne(name, 0, watchTaskParent, watchTaskParent.options, globalOptions)];
|
51 | }
|
52 | /**
|
53 | * Look at each key provided to decide if it can
|
54 | * be transformed into a watcher obj
|
55 | */
|
56 | return Object.keys(watchTaskParent)
|
57 | .filter(function (x) { return blacklist.indexOf(x) === -1; })
|
58 | .reduce(function (all, item, index) {
|
59 | /**
|
60 | * Here we assume the long-hand version is being
|
61 | * used where the watchers property is provided.
|
62 | * If it is, that means we can create a watcher
|
63 | * object for each item in the 'watchers' array
|
64 | * eg:
|
65 | *
|
66 | * default:
|
67 | * options:
|
68 | * exclude: '*.html'
|
69 | * before: ['bs']
|
70 | * watchers:
|
71 | * - patterns: ['test/fixtures']
|
72 | * tasks: ['1', '2']
|
73 | * - patterns: ['*.css']
|
74 | * tasks: '3'
|
75 | */
|
76 | if (item === "watchers") {
|
77 | /**
|
78 | * If the `watcher` property is an Array, it must
|
79 | * be an Array of Objects, so process each one individually.
|
80 | * eg:
|
81 | * default:
|
82 | * watchers: [
|
83 | * {
|
84 | * patterns: ["scss/**", "css/*.scss"],
|
85 | * tasks: ["$npm node-sass"],
|
86 | * }
|
87 | * ]
|
88 | */
|
89 | if (Array.isArray(watchTaskParent.watchers)) {
|
90 | return all.concat(watchTaskParent.watchers.map(function (watcher, i) {
|
91 | return createOne(name, i, watcher, watchTaskParent.options, globalOptions);
|
92 | }));
|
93 | }
|
94 | /**
|
95 | * If the `watchers` property is a plain object,
|
96 | * use it's keys as watch patterns and the values as
|
97 | * tasks.
|
98 | * eg:
|
99 | * default:
|
100 | * watchers: {
|
101 | * "*.js": ["$npm eslint"],
|
102 | * "*.scss": ["$npm node-sass"]
|
103 | * }
|
104 | */
|
105 | if (task_utils_1.isPlainObject(watchTaskParent.watchers)) {
|
106 | return Object.keys(watchTaskParent.watchers)
|
107 | .map(function (key, i) { return createOne(name, i, {
|
108 | patterns: key,
|
109 | tasks: watchTaskParent.watchers[key]
|
110 | }, watchTaskParent.options, globalOptions); });
|
111 | }
|
112 | }
|
113 | /**
|
114 | * At this point assume that the short-hard pattern <pattern>:<tasks>
|
115 | * eg:
|
116 | * "*.js": ['uglify']
|
117 | */
|
118 | return all.concat(createOne(name, index, {
|
119 | patterns: item,
|
120 | tasks: watchTaskParent[item] // value as the tasks array
|
121 | }, watchTaskParent.options, globalOptions));
|
122 | }, []);
|
123 | }
|
124 | function createFlattenedWatchTask(taskName, trigger) {
|
125 | var fromCli = ["block", "throttle", "debounce"].reduce(function (acc, key) {
|
126 | // console.log(typeof trigger.config[key]);
|
127 | if (typeof trigger.config[key] !== "undefined") {
|
128 | acc[key] = trigger.config[key];
|
129 | }
|
130 | return acc;
|
131 | }, {});
|
132 | var globalOptions = _.assign({}, trigger.input.watch.options, fromCli);
|
133 | var incoming = watch_preprocess_1.preprocessWatchTask(taskName);
|
134 | var selection = trigger.input.watch[incoming.taskName] || {};
|
135 | var watchers = getFormattedTask(incoming.taskName, selection, globalOptions);
|
136 | var errors = watch_errors_1.gatherWatchTaskErrors(incoming, trigger.input);
|
137 | return {
|
138 | name: taskName,
|
139 | before: selection.before || [],
|
140 | options: selection.options || {},
|
141 | watchers: watchers,
|
142 | errors: errors
|
143 | };
|
144 | }
|
145 | function validateTask(task, trigger) {
|
146 | return task.errors.length === 0;
|
147 | }
|
148 | function resolveWatchTasks(taskNames, trigger) {
|
149 | var taskList = taskNames
|
150 | .map(function (taskName) {
|
151 | return createFlattenedWatchTask(taskName, trigger);
|
152 | });
|
153 | /**
|
154 | * Return both valid & invalid tasks. We want to let consumers
|
155 | * handle errors/successes
|
156 | * @type {{valid: Array, invalid: Array}}
|
157 | */
|
158 | var output = {
|
159 | valid: taskList.filter(function (x) { return validateTask(x, trigger); }),
|
160 | invalid: taskList.filter(function (x) { return !validateTask(x, trigger); }),
|
161 | all: taskList
|
162 | };
|
163 | return output;
|
164 | }
|
165 | exports.resolveWatchTasks = resolveWatchTasks;
|
166 | /**
|
167 | * The goal of this function is to produce a flat array containing tasks as strings
|
168 | * this allows us to feed that into the task resolution stuff
|
169 | */
|
170 | function resolveBeforeTasks(beforeFlagsFromCliOrConfig, input, watchTasks) {
|
171 | var fromTopLevelInput = [].concat(input.watch.before);
|
172 | var fromWatchTasks = watchTasks.reduce(function (acc, item) {
|
173 | return acc.concat(item.before);
|
174 | }, []);
|
175 | return beforeFlagsFromCliOrConfig.concat(fromTopLevelInput, fromWatchTasks).filter(Boolean);
|
176 | }
|
177 | exports.resolveBeforeTasks = resolveBeforeTasks;
|
178 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2gucmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy93YXRjaC5yZXNvbHZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSwyQ0FBMkM7QUFFM0MsdURBQXVEO0FBQ3ZELCtDQUFxRTtBQVFyRSxJQUFNLFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNELElBQU0sQ0FBQyxHQUFXLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRWpDLFFBQUEsbUJBQW1CLEdBQW1CO0lBQy9DLGFBQWEsRUFBRSxJQUFJO0lBQ25CLEtBQUssRUFBRSxLQUFLO0lBQ1osUUFBUSxFQUFFLENBQUM7SUFDWCxLQUFLLEVBQUUsQ0FBQztJQUNSLFFBQVEsRUFBRSxDQUFDO0NBQ2QsQ0FBQztBQW9DRjs7Ozs7R0FLRztBQUNILG1CQUFtQixJQUFZLEVBQUUsS0FBYSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsYUFBYTtJQUM1RSxFQUFFLENBQUMsQ0FBQywwQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQztnQkFDSCxRQUFRLEVBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUF0QixDQUFzQixFQUFFLEVBQUUsQ0FBQztnQkFDakYsS0FBSyxFQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDakMsT0FBTyxFQUFLLENBQUMsQ0FBQyxLQUFLLENB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 |
\ | No newline at end of file |