From a0b1b2f4bd35df1fdf467248684a32f3e6dc82c4 Mon Sep 17 00:00:00 2001 From: Levi Thomason Date: Sun, 12 Oct 2014 15:57:57 -0700 Subject: [PATCH 1/2] refresh returns promise pass the error to reject() --- lib/less-browser/index.js | 51 +++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/lib/less-browser/index.js b/lib/less-browser/index.js index fcad374a3..32cca36c0 100644 --- a/lib/less-browser/index.js +++ b/lib/less-browser/index.js @@ -26,6 +26,7 @@ require("./log-listener")(less, options); var errors = require("./error-reporting")(window, less, options); var browser = require("./browser"); var cache = options.cache || require("./cache")(window, options, less.logger); +var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise; options.env = options.env || (window.location.hostname == '127.0.0.1' || window.location.hostname == '0.0.0.0' || @@ -242,29 +243,33 @@ less.modifyVars = function(record) { }; less.refresh = function (reload, modifyVars) { - var startTime, endTime; - startTime = endTime = new Date(); - - loadStyleSheets(function (e, css, _, sheet, webInfo) { - if (e) { - return errors.add(e, e.href || sheet.href); - } - if (webInfo.local) { - less.logger.info("loading " + sheet.href + " from cache."); - } else { - less.logger.info("rendered " + sheet.href + " successfully."); - css = postProcessCSS(css); - browser.createCSS(window.document, css, sheet); - cache.setCSS(sheet.href, webInfo.lastModified, css); - } - less.logger.info("css for " + sheet.href + " generated in " + (new Date() - endTime) + 'ms'); - if (webInfo.remaining === 0) { - less.logger.info("less has finished. css generated in " + (new Date() - startTime) + 'ms'); - } - endTime = new Date(); - }, reload, modifyVars); - - loadStyles(modifyVars); + return new PromiseConstructor(function(resolve, reject) { + var startTime, endTime; + startTime = endTime = new Date(); + + loadStyleSheets(function (e, css, _, sheet, webInfo) { + if (e) { + errors.add(e, e.href || sheet.href); + reject(e); + } + if (webInfo.local) { + less.logger.info("loading " + sheet.href + " from cache."); + } else { + less.logger.info("rendered " + sheet.href + " successfully."); + css = postProcessCSS(css); + browser.createCSS(window.document, css, sheet); + cache.setCSS(sheet.href, webInfo.lastModified, css); + } + less.logger.info("css for " + sheet.href + " generated in " + (new Date() - endTime) + 'ms'); + if (webInfo.remaining === 0) { + less.logger.info("less has finished. css generated in " + (new Date() - startTime) + 'ms'); + resolve(); + } + endTime = new Date(); + }, reload, modifyVars); + + loadStyles(modifyVars); + }); }; less.refreshStyles = loadStyles; From 999af91bb38ee1480ea4a3a24e12ee25c34e8a40 Mon Sep 17 00:00:00 2001 From: Levi Thomason Date: Tue, 14 Oct 2014 00:19:07 -0700 Subject: [PATCH 2/2] set less.hasFinished to refresh() promise fix white space return promise on modifyVars --- lib/less-browser/index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/less-browser/index.js b/lib/less-browser/index.js index 32cca36c0..1157d3634 100644 --- a/lib/less-browser/index.js +++ b/lib/less-browser/index.js @@ -239,12 +239,12 @@ for (var i = 0; i < links.length; i++) { // CSS without reloading less-files // less.modifyVars = function(record) { - less.refresh(false, record); + return less.refresh(false, record); }; less.refresh = function (reload, modifyVars) { - return new PromiseConstructor(function(resolve, reject) { - var startTime, endTime; + less.hasFinished = new PromiseConstructor(function (resolve, reject) { + var startTime, endTime, totalMilliseconds; startTime = endTime = new Date(); loadStyleSheets(function (e, css, _, sheet, webInfo) { @@ -262,14 +262,22 @@ less.refresh = function (reload, modifyVars) { } less.logger.info("css for " + sheet.href + " generated in " + (new Date() - endTime) + 'ms'); if (webInfo.remaining === 0) { - less.logger.info("less has finished. css generated in " + (new Date() - startTime) + 'ms'); - resolve(); + totalMilliseconds = new Date() - startTime; + less.logger.info("less has finished. css generated in " + totalMilliseconds + 'ms'); + resolve({ + startTime: startTime, + endTime: endTime, + totalMilliseconds: totalMilliseconds, + sheets: less.sheets.length + }); } endTime = new Date(); }, reload, modifyVars); loadStyles(modifyVars); }); + + return less.hasFinished; }; less.refreshStyles = loadStyles;