Skip to content

Commit

Permalink
refactor: migrate on message api for postcss-import-parser (#837)
Browse files Browse the repository at this point in the history
  • Loading branch information
evilebottnawi authored Dec 3, 2018
1 parent 7b967c7 commit 476ebca
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 18 deletions.
4 changes: 2 additions & 2 deletions lib/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,11 @@ module.exports = function loader(content, map) {
];

if (resolveImport) {
plugins.push(importParser(parserOptions));
plugins.push(importParser());
}

if (resolveUrl) {
plugins.push(urlParser(parserOptions));
plugins.push(urlParser());
}

plugins.push(icssParser(parserOptions));
Expand Down
6 changes: 5 additions & 1 deletion lib/plugins/postcss-icss-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ module.exports = postcss.plugin(
pluginName,
(options) =>
function process(css, result) {
const importItems = options.importItems || [];
const importItems = (result.messages || [])
.filter((message) => message.type === 'import')
.map((message) => message.item);

const imports = {};
const icss = icssUtils.extractICSS(css);
const exports = icss.icssExports;
Expand All @@ -21,6 +24,7 @@ module.exports = postcss.plugin(
imports[`$${prop}`] = importItems.length;
importItems.push({
url,
media: '',
export: icss.icssImports[key][prop],
});
});
Expand Down
25 changes: 15 additions & 10 deletions lib/plugins/postcss-import-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,8 @@ function parseImport(params) {

module.exports = postcss.plugin(
pluginName,
(options) =>
() =>
function process(css, result) {
const importItems = [];

css.walkAtRules(/^import$/i, (atRule) => {
// Convert only top-level @import
if (atRule.parent.type !== 'root') {
Expand Down Expand Up @@ -84,16 +82,23 @@ module.exports = postcss.plugin(
url = loaderUtils.urlToRequest(url);
}

const includes = importItems.find(
(el) => el.url === url && el.media === media
const alreadyIncluded = result.messages.find(
(message) =>
message.pluginName === pluginName &&
message.type === 'import' &&
message.item.url === url &&
message.item.media === media
);

if (!includes) {
importItems.push({ url, media, isUrlRequest });
if (alreadyIncluded) {
return;
}
});

// eslint-disable-next-line no-param-reassign
options.importItems = importItems;
result.messages.push({
pluginName,
type: 'import',
item: { url, media },
});
});
}
);
6 changes: 1 addition & 5 deletions lib/plugins/postcss-url-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,8 @@ function uniq(array) {

module.exports = postcss.plugin(
pluginName,
(options) =>
() =>
function process(css, result) {
const urlItems = [];
const traversed = walkDeclsWithUrl(css, result, (value) =>
isUrlRequest(value)
);
Expand Down Expand Up @@ -128,8 +127,5 @@ module.exports = postcss.plugin(
// eslint-disable-next-line no-param-reassign
item.decl.value = item.parsed.toString();
});

// eslint-disable-next-line no-param-reassign
options.urlItems = urlItems;
}
);

0 comments on commit 476ebca

Please sign in to comment.