UNPKG

3.15 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 if (taskMetadata.dependencies && taskMetadata.dependencies.length) {
38 gulpclassMetadata.gulpInstance.task(taskMetadata.name, taskMetadata.dependencies, function (cb) {
39 return _this.executeTask(gulpclassMetadata, taskMetadata, cb);
40 });
41 }
42 else {
43 gulpclassMetadata.gulpInstance.task(taskMetadata.name, function (cb) {
44 return _this.executeTask(gulpclassMetadata, taskMetadata, cb);
45 });
46 }
47 };
48 MetadataStorage.prototype.executeTask = function (gulpclassMetadata, taskMetadata, cb) {
49 var methodResult = gulpclassMetadata.classInstance[taskMetadata.method](cb);
50 if (taskMetadata.isSequence && methodResult instanceof Array) {
51 return require("run-sequence").apply(this, methodResult.concat(cb));
52 }
53 else if (taskMetadata.isSequence && methodResult instanceof Array) {
54 return require("merge2").apply(this);
55 }
56 else {
57 return methodResult;
58 }
59 };
60 return MetadataStorage;
61})();
62exports.MetadataStorage = MetadataStorage;
63/**
64 * Default metadata storage is used as singleton and can be used to storage all metadatas.
65 */
66exports.defaultMetadataStorage = new MetadataStorage();
67//# sourceMappingURL=MetadataStorage.js.map
\No newline at end of file