UNPKG

2.77 kBJavaScriptView Raw
1"use strict";
2var Immutable = require("immutable");
3var fromJS = Immutable.fromJS, Map = Immutable.Map;
4var Rx = require("rx");
5/**
6 * A task context is just an Immutable Map of key=>value pairs
7 * that may be used to provide addition context to the task running
8 * environment. This is especially useful in situations where you need
9 * to do something that MUST block the task running altogether. An example
10 * would be hashing files/directories to determine if a task/group of tasks should
11 * run.
12 */
13function getContext(tasks, trigger) {
14 /**
15 * Define a list of async actions
16 * that must complete before any tasks are executed
17 * @type {Array}
18 */
19 var preExecutionTasks = [
20 require("./command.run.pre-execution").createHashes
21 ];
22 /**
23 * Now wrap each Function in an observable
24 * @type {Rx.Observable<PreExecutionTask>[]}
25 */
26 var observables = preExecutionTasks.map(function (fn) {
27 return Rx.Observable.create(function (obs) {
28 fn(tasks, trigger).subscribe(obs);
29 });
30 });
31 /**
32 * Run each item in sequence
33 * finally producing an Immutable Map from all the gathered values
34 */
35 return Rx.Observable
36 .from(observables)
37 .concatAll()
38 .toArray()
39 .map(function (xs) {
40 return (_a = Map({})).mergeDeep.apply(_a, xs.map(function (x) { return fromJS(x); }));
41 var _a;
42 });
43}
44Object.defineProperty(exports, "__esModule", { value: true });
45exports.default = getContext;
46//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5ydW4uY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kLnJ1bi5jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxJQUFPLFNBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUVqQyw2QkFBTSxFQUFFLG1CQUFHLENBQWM7QUFFaEMsSUFBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUM7QUFJMUI7Ozs7Ozs7R0FPRztBQUNILG9CQUFtQyxLQUFhLEVBQUUsT0FBdUI7SUFFckU7Ozs7T0FJRztJQUNILElBQU0saUJBQWlCLEdBQTRCO1FBQy9DLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLFlBQVk7S0FDdEQsQ0FBQztJQUVGOzs7T0FHRztJQUNILElBQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFDLEVBQUU7UUFDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRztZQUNyQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUg7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVO1NBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNqQixTQUFTLEVBQUU7U0FDWCxPQUFPLEVBQUU7U0FDVCxHQUFHLENBQUMsVUFBQSxFQUFFO1FBQ0gsTUFBTSxDQUFDLE1BQUEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLFNBQVMsV0FBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFULENBQVMsQ0FBQyxDQUFDLENBQUM7O0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQWhDRDs0QkFnQ0MsQ0FBQSJ9
\No newline at end of file