UNPKG

2.71 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5ydW4uY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kLnJ1bi5jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxxQ0FBd0M7QUFFakMsSUFBQSx5QkFBTSxFQUFFLG1CQUFHLENBQWM7QUFFaEMsdUJBQTBCO0FBSTFCOzs7Ozs7O0dBT0c7QUFDSCxvQkFBbUMsS0FBYSxFQUFFLE9BQXVCO0lBRXJFOzs7O09BSUc7SUFDSCxJQUFNLGlCQUFpQixHQUE0QjtRQUMvQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxZQUFZO0tBQ3RELENBQUM7SUFFRjs7O09BR0c7SUFDSCxJQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBQyxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUc7WUFDckMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVIOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVTtTQUNmLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDakIsU0FBUyxFQUFFO1NBQ1gsT0FBTyxFQUFFO1NBQ1QsR0FBRyxDQUFDLFVBQUEsRUFBRTtRQUNILE1BQU0sQ0FBQyxDQUFBLEtBQUEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsU0FBUyxXQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQVQsQ0FBUyxDQUFDLEVBQUU7O0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQzs7QUFoQ0QsNkJBZ0NDIn0=
\No newline at end of file