class LessPlugin { constructor (window, host) { this.window = window; this.host = host; } reload (path, options) { if (this.window.less && this.window.less.refresh) { if (path.match(/\.less$/i)) { return this.reloadLess(path); } if (options.originalPath.match(/\.less$/i)) { return this.reloadLess(options.originalPath); } } return false; } reloadLess (path) { let link; const links = ((() => { const result = []; for (link of Array.from(document.getElementsByTagName('link'))) { if ((link.href && link.rel.match(/^stylesheet\/less$/i)) || (link.rel.match(/stylesheet/i) && link.type.match(/^text\/(x-)?less$/i))) { result.push(link); } } return result; })()); if (links.length === 0) { return false; } for (link of Array.from(links)) { link.href = this.host.generateCacheBustUrl(link.href); } this.host.console.log('LiveReload is asking LESS to recompile all stylesheets'); this.window.less.refresh(true); return true; } analyze () { return { disable: !!(this.window.less && this.window.less.refresh) }; } }; LessPlugin.identifier = 'less'; LessPlugin.version = '1.0'; module.exports = LessPlugin;