You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const assert = require('assert');
  2. const Batch = require('batch');
  3. const getStylesData = require('style-data');
  4. const getStylesheetList = require('list-stylesheets');
  5. const getHrefContent = require('href-content');
  6. module.exports = (html, options, callback) => {
  7. const batch = new Batch();
  8. const data = getStylesheetList(html, options);
  9. batch.push(cb => {
  10. getStylesData(data.html, options, cb);
  11. });
  12. if (data.hrefs.length) {
  13. assert.ok(options.url, 'options.url is required');
  14. }
  15. data.hrefs.forEach(stylesheetHref => {
  16. batch.push(cb => {
  17. getHrefContent(stylesheetHref, options.url, cb);
  18. });
  19. });
  20. batch.end((err, results) => {
  21. let stylesData;
  22. let css;
  23. if (err) {
  24. return callback(err);
  25. }
  26. stylesData = results.shift();
  27. results.forEach(content => {
  28. stylesData.css.push(content);
  29. });
  30. css = stylesData.css.join('\n');
  31. return callback(null, stylesData.html, css);
  32. });
  33. };