getUrl.js 830 B

12345678910111213141516171819202122232425262728293031323334
  1. "use strict";
  2. module.exports = function (url, options) {
  3. if (!options) {
  4. // eslint-disable-next-line no-param-reassign
  5. options = {};
  6. } // eslint-disable-next-line no-underscore-dangle, no-param-reassign
  7. url = url && url.__esModule ? url.default : url;
  8. if (typeof url !== 'string') {
  9. return url;
  10. } // If url is already wrapped in quotes, remove them
  11. if (/^['"].*['"]$/.test(url)) {
  12. // eslint-disable-next-line no-param-reassign
  13. url = url.slice(1, -1);
  14. }
  15. if (options.hash) {
  16. // eslint-disable-next-line no-param-reassign
  17. url += options.hash;
  18. } // Should url be wrapped?
  19. // See https://drafts.csswg.org/css-values-3/#urls
  20. if (/["'() \t\n]/.test(url) || options.needQuotes) {
  21. return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, '\\n'), "\"");
  22. }
  23. return url;
  24. };