Skip to content

Commit 7a37d77

Browse files
committed
Fix multimple composed
1 parent 45bb050 commit 7a37d77

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,16 @@ const getContract = (result, type, prop, value) =>
130130
{}
131131
);
132132

133-
const composeAliases = (aliases, composed) =>
133+
const getComposed = (messages, name) =>
134+
messages
135+
.filter(msg => msg.type === "icss-composed" && msg.name === name)
136+
.map(msg => msg.value);
137+
138+
const composeAliases = (aliases, messages) =>
134139
Object.keys(aliases).reduce(
135140
(acc, name) =>
136141
Object.assign({}, acc, {
137-
[name]: aliases[name] + (composed[name] ? ` ${composed[name]}` : "")
142+
[name]: [aliases[name], ...getComposed(messages, name)].join(" ")
138143
}),
139144
{}
140145
);
@@ -145,7 +150,6 @@ module.exports = postcss.plugin(plugin, (options = {}) => (css, result) => {
145150
genericNames("[name]__[local]---[hash:base64:5]");
146151
const input = (css && css.source && css.source.input) || {};
147152
const icssScoped = getContract(result, "icss-scoped", "name", "value");
148-
const icssComposed = getContract(result, "icss-composed", "name", "value");
149153
const icssValue = getContract(result, "icss-value", "value", "name");
150154
const aliases = {};
151155
walkRules(css, rule => {
@@ -177,5 +181,5 @@ module.exports = postcss.plugin(plugin, (options = {}) => (css, result) => {
177181
});
178182
result.messages.push(...getMessages(aliases));
179183
// icss-composed contract
180-
addExports(css, composeAliases(aliases, icssComposed));
184+
addExports(css, composeAliases(aliases, result.messages));
181185
});

test/test.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,13 @@ test("icss-composed contract", () => {
765765
plugin: "previous-plugin",
766766
type: "icss-composed",
767767
name: "foo",
768-
value: "__compose__foo"
768+
value: "__compose__foo1"
769+
},
770+
{
771+
plugin: "previous-plugin",
772+
type: "icss-composed",
773+
name: "foo",
774+
value: "__compose__foo2"
769775
},
770776
{
771777
plugin: "previous-plugin",
@@ -786,7 +792,7 @@ test("icss-composed contract", () => {
786792
`,
787793
expected: `
788794
:export {
789-
foo: __scope__foo __compose__foo;
795+
foo: __scope__foo __compose__foo1 __compose__foo2;
790796
baz: __scope__baz;
791797
bar: __scope__bar __compose__bar
792798
}

0 commit comments

Comments
 (0)