UNPKG

3.21 kBJavaScriptView Raw
1var merge = require("merge2");
2var runSequence = require("run-sequence");
3/**
4 * Storages and registers all gulp classes and their tasks.
5 */
6var MetadataStorage = (function () {
7 function MetadataStorage() {
8 // -------------------------------------------------------------------------
9 // Properties
10 // -------------------------------------------------------------------------
11 this.gulpclassMetadatas = [];
12 this.taskMetadatas = [];
13 }
14 // -------------------------------------------------------------------------
15 // Public Methods
16 // -------------------------------------------------------------------------
17 MetadataStorage.prototype.addGulpclassMetadata = function (metadata) {
18 var _this = this;
19 this.gulpclassMetadatas.push(metadata);
20 this.taskMetadatas
21 .filter(function (taskMetadata) { return taskMetadata.classConstructor === metadata.classConstructor; })
22 .forEach(function (taskMetadata) { return _this.registerTasks(metadata, taskMetadata); });
23 };
24 MetadataStorage.prototype.addTaskMetadata = function (metadata) {
25 this.taskMetadatas.push(metadata);
26 var gulpclassMetadata = this.gulpclassMetadatas.reduce(function (found, m) {
27 return m.classConstructor === metadata.classConstructor ? m : found;
28 }, undefined);
29 if (gulpclassMetadata)
30 this.registerTasks(gulpclassMetadata, metadata);
31 };
32 // -------------------------------------------------------------------------
33 // Private Methods
34 // -------------------------------------------------------------------------
35 MetadataStorage.prototype.registerTasks = function (gulpclassMetadata, taskMetadata) {
36 var _this = this;
37 if (!gulpclassMetadata.classInstance)
38 gulpclassMetadata.classInstance = new gulpclassMetadata.classConstructor();
39 if (taskMetadata.dependencies && taskMetadata.dependencies.length) {
40 gulpclassMetadata.gulpInstance.task(taskMetadata.name, taskMetadata.dependencies, function (cb) {
41 return _this.executeTask(gulpclassMetadata, taskMetadata, cb);
42 });
43 }
44 else {
45 gulpclassMetadata.gulpInstance.task(taskMetadata.name, function (cb) {
46 return _this.executeTask(gulpclassMetadata, taskMetadata, cb);
47 });
48 }
49 };
50 MetadataStorage.prototype.executeTask = function (gulpclassMetadata, taskMetadata, cb) {
51 var methodResult = gulpclassMetadata.classInstance[taskMetadata.method](cb);
52 if (taskMetadata.isSequence && methodResult instanceof Array) {
53 return runSequence.apply(this, methodResult.concat(cb));
54 }
55 else if (taskMetadata.isMerge && methodResult instanceof Array) {
56 return merge.apply(this, methodResult);
57 }
58 else {
59 return methodResult;
60 }
61 };
62 return MetadataStorage;
63})();
64exports.MetadataStorage = MetadataStorage;
65/**
66 * Default metadata storage is used as singleton and can be used to storage all metadatas.
67 */
68exports.defaultMetadataStorage = new MetadataStorage();
69//# sourceMappingURL=MetadataStorage.js.map
\No newline at end of file