plugin-manager.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. /**
  4. * Plugin Manager
  5. */
  6. var PluginManager = /** @class */ (function () {
  7. function PluginManager(less) {
  8. this.less = less;
  9. this.visitors = [];
  10. this.preProcessors = [];
  11. this.postProcessors = [];
  12. this.installedPlugins = [];
  13. this.fileManagers = [];
  14. this.iterator = -1;
  15. this.pluginCache = {};
  16. this.Loader = new less.PluginLoader(less);
  17. }
  18. /**
  19. * Adds all the plugins in the array
  20. * @param {Array} plugins
  21. */
  22. PluginManager.prototype.addPlugins = function (plugins) {
  23. if (plugins) {
  24. for (var i = 0; i < plugins.length; i++) {
  25. this.addPlugin(plugins[i]);
  26. }
  27. }
  28. };
  29. /**
  30. *
  31. * @param plugin
  32. * @param {String} filename
  33. */
  34. PluginManager.prototype.addPlugin = function (plugin, filename, functionRegistry) {
  35. this.installedPlugins.push(plugin);
  36. if (filename) {
  37. this.pluginCache[filename] = plugin;
  38. }
  39. if (plugin.install) {
  40. plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);
  41. }
  42. };
  43. /**
  44. *
  45. * @param filename
  46. */
  47. PluginManager.prototype.get = function (filename) {
  48. return this.pluginCache[filename];
  49. };
  50. /**
  51. * Adds a visitor. The visitor object has options on itself to determine
  52. * when it should run.
  53. * @param visitor
  54. */
  55. PluginManager.prototype.addVisitor = function (visitor) {
  56. this.visitors.push(visitor);
  57. };
  58. /**
  59. * Adds a pre processor object
  60. * @param {object} preProcessor
  61. * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import
  62. */
  63. PluginManager.prototype.addPreProcessor = function (preProcessor, priority) {
  64. var indexToInsertAt;
  65. for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {
  66. if (this.preProcessors[indexToInsertAt].priority >= priority) {
  67. break;
  68. }
  69. }
  70. this.preProcessors.splice(indexToInsertAt, 0, { preProcessor: preProcessor, priority: priority });
  71. };
  72. /**
  73. * Adds a post processor object
  74. * @param {object} postProcessor
  75. * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression
  76. */
  77. PluginManager.prototype.addPostProcessor = function (postProcessor, priority) {
  78. var indexToInsertAt;
  79. for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {
  80. if (this.postProcessors[indexToInsertAt].priority >= priority) {
  81. break;
  82. }
  83. }
  84. this.postProcessors.splice(indexToInsertAt, 0, { postProcessor: postProcessor, priority: priority });
  85. };
  86. /**
  87. *
  88. * @param manager
  89. */
  90. PluginManager.prototype.addFileManager = function (manager) {
  91. this.fileManagers.push(manager);
  92. };
  93. /**
  94. *
  95. * @returns {Array}
  96. * @private
  97. */
  98. PluginManager.prototype.getPreProcessors = function () {
  99. var preProcessors = [];
  100. for (var i = 0; i < this.preProcessors.length; i++) {
  101. preProcessors.push(this.preProcessors[i].preProcessor);
  102. }
  103. return preProcessors;
  104. };
  105. /**
  106. *
  107. * @returns {Array}
  108. * @private
  109. */
  110. PluginManager.prototype.getPostProcessors = function () {
  111. var postProcessors = [];
  112. for (var i = 0; i < this.postProcessors.length; i++) {
  113. postProcessors.push(this.postProcessors[i].postProcessor);
  114. }
  115. return postProcessors;
  116. };
  117. /**
  118. *
  119. * @returns {Array}
  120. * @private
  121. */
  122. PluginManager.prototype.getVisitors = function () {
  123. return this.visitors;
  124. };
  125. PluginManager.prototype.visitor = function () {
  126. var self = this;
  127. return {
  128. first: function () {
  129. self.iterator = -1;
  130. return self.visitors[self.iterator];
  131. },
  132. get: function () {
  133. self.iterator += 1;
  134. return self.visitors[self.iterator];
  135. }
  136. };
  137. };
  138. /**
  139. *
  140. * @returns {Array}
  141. * @private
  142. */
  143. PluginManager.prototype.getFileManagers = function () {
  144. return this.fileManagers;
  145. };
  146. return PluginManager;
  147. }());
  148. var pm;
  149. var PluginManagerFactory = function (less, newFactory) {
  150. if (newFactory || !pm) {
  151. pm = new PluginManager(less);
  152. }
  153. return pm;
  154. };
  155. //
  156. exports.default = PluginManagerFactory;
  157. //# sourceMappingURL=plugin-manager.js.map