UNPKG

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