Skip to content

Commit 8bf7d70

Browse files
committed
Refactor contracts
1 parent 7a37d77 commit 8bf7d70

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

src/index.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,11 @@ const getMessages = aliases =>
122122
.map(name => ({ plugin, type: "icss-scoped", name, value: aliases[name] }))
123123
.reduce((acc, msg) => [...acc, msg], []);
124124

125-
const getContract = (result, type, prop, value) =>
126-
result.messages
127-
.filter(msg => msg.type === type)
128-
.reduce(
129-
(acc, msg) => Object.assign({}, acc, { [msg[prop]]: msg[value] }),
130-
{}
131-
);
125+
const isValue = (messages, name) =>
126+
messages.find(msg => msg.type === "icss-value" && msg.value === name);
127+
128+
const isRedeclared = (messages, name) =>
129+
messages.find(msg => msg.type === "icss-scoped" && msg.name === name);
132130

133131
const getComposed = (messages, name) =>
134132
messages
@@ -149,21 +147,19 @@ module.exports = postcss.plugin(plugin, (options = {}) => (css, result) => {
149147
options.generateScopedName ||
150148
genericNames("[name]__[local]---[hash:base64:5]");
151149
const input = (css && css.source && css.source.input) || {};
152-
const icssScoped = getContract(result, "icss-scoped", "name", "value");
153-
const icssValue = getContract(result, "icss-value", "value", "name");
154150
const aliases = {};
155151
walkRules(css, rule => {
156152
const getAlias = name => {
157153
if (aliases[name]) {
158154
return aliases[name];
159155
}
160156
// icss-value contract
161-
if (icssValue[name]) {
157+
if (isValue(result.messages, name)) {
162158
return name;
163159
}
164160
const alias = generateScopedName(name, input.from, input.css);
165161
// icss-scoped contract
166-
if (icssScoped[name]) {
162+
if (isRedeclared(result.messages, name)) {
167163
result.warn(`'${name}' already declared`, { node: rule });
168164
}
169165
aliases[name] = alias;

0 commit comments

Comments
 (0)