Skip to content

Commit

Permalink
fix broken rule merge
Browse files Browse the repository at this point in the history
  • Loading branch information
oofdere committed Aug 4, 2024
1 parent 546f9e8 commit e5e0876
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 18 deletions.
Binary file modified bun.lockb
Binary file not shown.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
"typescript": "^5.0.0"
},
"dependencies": {
"lightningcss": "^1.25.1"
"@types/lodash": "^4.17.7",
"lightningcss": "^1.25.1",
"lodash": "^4.17.21"
}
}
15 changes: 7 additions & 8 deletions playground.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { transform } from "lightningcss";
import { composePlugins, spacing, screens, colorScheme } from ".";
import { composeVisitors, transform } from "lightningcss";
import { composePlugins, spacing, screens, colorScheme, crosswind } from ".";

const a = {

let { code, map } = transform({
filename: 'test.css',
minify: true,
code: new TextEncoder().encode('.foo {color: red; @light {color: green;} @dark {color: yellow;}}'),
...composePlugins([colorScheme]),
}

let { code, map } = transform(a);
code: new TextEncoder().encode('.foo{color: red;@light {color: green;}; @dark {color:yellow;}}'),
...crosswind
});

console.log(code.toString())
13 changes: 6 additions & 7 deletions src/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { type CustomAtRules, type Visitor } from 'lightningcss';
import composeVisitors from "../node_modules/lightningcss/node/composeVisitors.js";
import _ from "lodash";

export type Plugin<C extends CustomAtRules> = {
visitor: Visitor<C>,
Expand All @@ -8,18 +8,17 @@ export type Plugin<C extends CustomAtRules> = {

export function composePlugins<C extends CustomAtRules>(plugins: (Plugin<C> | Visitor<C>)[]) {
let customAtRules: CustomAtRules = {};
let visitors: Visitor<CustomAtRules>[] = [];
let visitor: Visitor<CustomAtRules> = {};

plugins.forEach(p => {
if ('visitor' in p) {
visitors.push(p.visitor)
_.merge(visitor, p.visitor)
if (p.customAtRules) { Object.assign(customAtRules, p.customAtRules) }
} else {
visitors.push(p)
_.merge(visitor, p)

}
});

return {
customAtRules, visitor: composeVisitors(visitors)
}
return { customAtRules, visitor }
}
5 changes: 3 additions & 2 deletions tests/test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { transform, type CustomAtRules, type Visitor } from "lightningcss";
import { composePlugins, type Plugin } from "../src/plugin";
import { crosswind } from "..";

export function testHelper<C extends CustomAtRules>(visitors: (Plugin<C> | Visitor<C>)[], input: string) {
export function testHelper<C extends CustomAtRules>(_visitors: (Plugin<C> | Visitor<C>)[], input: string) {
let { code } = transform({
filename: 'test.css',
minify: true,
code: new TextEncoder().encode(input),
...composePlugins(visitors)
...crosswind
});

return code.toString()
Expand Down

0 comments on commit e5e0876

Please sign in to comment.