postcss-import-url
Advanced tools
Comparing version 6.0.3 to 6.0.4
106
index.js
@@ -1,10 +0,8 @@ | ||
const postcss = require('postcss'); | ||
const hh = require('http-https'); | ||
const isUrl = require('is-url'); | ||
const trim = require('lodash.trim'); | ||
const resolveRelative = require('resolve-relative-url'); | ||
const assign = require('lodash.assign'); | ||
const url = require('url'); | ||
const defaults = { | ||
var postcss = require('postcss'); | ||
var hh = require('http-https'); | ||
var isUrl = require('is-url'); | ||
var trim = require('lodash.trim'); | ||
var resolveRelative = require('resolve-relative-url'); | ||
var assign = require('lodash.assign'); | ||
var defaults = { | ||
recursive: true, | ||
@@ -15,4 +13,5 @@ resolveUrls: false, | ||
}; | ||
const space = postcss.list.space; | ||
const urlRegexp = /url\(["']?.+?['"]?\)/g; | ||
var space = postcss.list.space; | ||
var url = require('url'); | ||
var urlRegexp = /url\(["']?.+?['"]?\)/g; | ||
@@ -22,48 +21,42 @@ function postcssImportUrl(options) { | ||
async function importUrl(tree, _, parentRemoteFile) { | ||
function importUrl(tree, dummy, parentRemoteFile) { | ||
parentRemoteFile = parentRemoteFile || tree.source.input.file; | ||
const imports = []; | ||
var imports = []; | ||
tree.walkAtRules('import', function checkAtRule(atRule) { | ||
const params = space(atRule.params); | ||
let remoteFile = cleanupRemoteFile(params[0]); | ||
var params = space(atRule.params); | ||
var remoteFile = cleanupRemoteFile(params[0]); | ||
if (parentRemoteFile) { | ||
remoteFile = resolveRelative(remoteFile, parentRemoteFile); | ||
} | ||
if (!isUrl(remoteFile)) { | ||
return; | ||
} | ||
imports[imports.length] = createPromise(remoteFile, options).then( | ||
async r => { | ||
let newNode = postcss.parse(r.body); | ||
const mediaQueries = params.slice(1).join(' '); | ||
if (mediaQueries) { | ||
const mediaNode = postcss.atRule({ | ||
name: 'media', | ||
params: mediaQueries, | ||
source: atRule.source, | ||
}); | ||
mediaNode.append(newNode); | ||
newNode = mediaNode; | ||
} else { | ||
newNode.source = atRule.source; | ||
} | ||
if (!isUrl(remoteFile)) return; | ||
imports[imports.length] = createPromise(remoteFile, options).then(function (r) { | ||
var newNode = postcss.parse(r.body); | ||
var mediaQueries = params.slice(1).join(' '); | ||
if (mediaQueries) { | ||
var mediaNode = postcss.atRule({ | ||
name: 'media', | ||
params: mediaQueries, | ||
}); | ||
mediaNode.append(newNode); | ||
newNode = mediaNode; | ||
} | ||
if (options.resolveUrls) { | ||
// Convert relative paths to absolute paths | ||
newNode = newNode.replaceValues( | ||
urlRegexp, | ||
{ fast: 'url(' }, | ||
url => resolveUrls(url, remoteFile), | ||
); | ||
} | ||
if (options.resolveUrls) { | ||
// Convert relative paths to absolute paths | ||
newNode = newNode.replaceValues(urlRegexp, { fast: 'url(' }, function (url) { | ||
return resolveUrls(url, remoteFile); | ||
}); | ||
} | ||
const tree = await (options.recursive | ||
? importUrl(newNode, null, r.parent) | ||
: Promise.resolve(newNode)); | ||
var p = options.recursive | ||
? importUrl(newNode, null, r.parent) | ||
: Promise.resolve(newNode); | ||
return p.then(function (tree) { | ||
atRule.replaceWith(tree); | ||
}, | ||
); | ||
}); | ||
}); | ||
}); | ||
await Promise.all(imports); | ||
return tree; | ||
return Promise.all(imports).then(function () { | ||
return tree; | ||
}); | ||
} | ||
@@ -93,3 +86,3 @@ | ||
function createPromise(remoteFile, options) { | ||
const reqOptions = urlParse(remoteFile); | ||
var reqOptions = url.parse(remoteFile); | ||
reqOptions.headers = {}; | ||
@@ -99,3 +92,3 @@ reqOptions.headers['connection'] = 'keep-alive'; | ||
reqOptions.headers['user-agent'] = | ||
'Mozilla/5.0 AppleWebKit/538.0 Chrome/88.0.0.0 Safari/538'; | ||
'Mozilla/5.0 AppleWebKit/538.0 Chrome/80.0.0.0 Safari/538'; | ||
} | ||
@@ -106,8 +99,8 @@ if (options.userAgent) { | ||
function executor(resolve, reject) { | ||
const request = hh.get(reqOptions, response => { | ||
let body = ''; | ||
response.on('data', chunk => { | ||
var request = hh.get(reqOptions, function (response) { | ||
var body = ''; | ||
response.on('data', function (chunk) { | ||
body += chunk.toString(); | ||
}); | ||
response.on('end', () => { | ||
response.on('end', function () { | ||
resolve({ | ||
@@ -124,6 +117,1 @@ body: body, | ||
} | ||
function urlParse(remoteFile) { | ||
const reqOptions = url.parse(remoteFile); | ||
return reqOptions; | ||
} |
{ | ||
"name": "postcss-import-url", | ||
"version": "6.0.3", | ||
"version": "6.0.4", | ||
"description": "PostCSS plugin inlines remote files.", | ||
@@ -41,8 +41,7 @@ "main": "index.js", | ||
"gulp-mocha": "^7.0.2", | ||
"husky": "^4.3.8", | ||
"ololog": "^1.1.164", | ||
"postcss": "^8.2.4", | ||
"husky": "^4.3.5", | ||
"postcss": "^8.2.0", | ||
"precise-commits": "^1.0.2", | ||
"prettier": "^2.2.1", | ||
"semantic-release": "^17.3.7", | ||
"semantic-release": "^17.3.0", | ||
"tcp-ping": "^0.1.1" | ||
@@ -49,0 +48,0 @@ }, |
13
7891
102