@@ -5,29 +5,32 @@ import { Herb } from "@herb-tools/node-wasm"
55import { rewrite , rewriteString , tailwindClassSorter } from "../src/loader.js"
66
77describe ( "rewrite" , ( ) => {
8+ let sorter : Awaited < ReturnType < typeof tailwindClassSorter > >
9+
810 beforeAll ( async ( ) => {
911 await Herb . load ( )
12+ sorter = await tailwindClassSorter ( )
1013 } )
1114
1215 describe ( "basic usage" , ( ) => {
13- test ( "rewrites Node with tailwindClassSorter" , async ( ) => {
16+ test ( "rewrites Node with tailwindClassSorter" , ( ) => {
1417 const template = '<div class="text-red-500 p-4 mt-2"></div>'
1518 const parseResult = Herb . parse ( template , { track_whitespace : true } )
16- const { output, node } = await rewrite ( parseResult . value , [ tailwindClassSorter ( ) ] )
19+ const { output, node } = rewrite ( parseResult . value , [ sorter ] )
1720
1821 expect ( output ) . toBe ( '<div class="mt-2 p-4 text-red-500"></div>' )
1922 expect ( node . type ) . toBe ( "AST_DOCUMENT_NODE" )
2023 } )
2124
22- test ( "handles empty rewriters array" , async ( ) => {
25+ test ( "handles empty rewriters array" , ( ) => {
2326 const template = '<div class="text-red-500 p-4 mt-2"></div>'
2427 const parseResult = Herb . parse ( template , { track_whitespace : true } )
25- const { output } = await rewrite ( parseResult . value , [ ] )
28+ const { output } = rewrite ( parseResult . value , [ ] )
2629
2730 expect ( output ) . toBe ( template )
2831 } )
2932
30- test ( "handles multiple elements" , async ( ) => {
33+ test ( "handles multiple elements" , ( ) => {
3134 const template = dedent `
3235 <div class="px-4 bg-blue-500">
3336 <span class="text-white font-bold"></span>
@@ -40,81 +43,81 @@ describe("rewrite", () => {
4043 `
4144
4245 const parseResult = Herb . parse ( template , { track_whitespace : true } )
43- const { output } = await rewrite ( parseResult . value , [ tailwindClassSorter ( ) ] )
46+ const { output } = rewrite ( parseResult . value , [ sorter ] )
4447
4548 expect ( output ) . toBe ( expected )
4649 } )
4750 } )
4851
4952 describe ( "rewriteString" , ( ) => {
50- test ( "rewrites string with tailwindClassSorter" , async ( ) => {
53+ test ( "rewrites string with tailwindClassSorter" , ( ) => {
5154 const template = '<div class="text-red-500 p-4 mt-2"></div>'
52- const output = await rewriteString ( Herb , template , [ tailwindClassSorter ( ) ] )
55+ const output = rewriteString ( Herb , template , [ sorter ] )
5356
5457 expect ( output ) . toBe ( '<div class="mt-2 p-4 text-red-500"></div>' )
5558 } )
5659
57- test ( "handles empty rewriters array" , async ( ) => {
60+ test ( "handles empty rewriters array" , ( ) => {
5861 const template = '<div class="text-red-500 p-4 mt-2"></div>'
59- const output = await rewriteString ( Herb , template , [ ] )
62+ const output = rewriteString ( Herb , template , [ ] )
6063
6164 expect ( output ) . toBe ( template )
6265 } )
6366
64- test ( "returns original template on parse failure" , async ( ) => {
67+ test ( "returns original template on parse failure" , ( ) => {
6568 const template = '<div class="unclosed'
66- const output = await rewriteString ( Herb , template , [ tailwindClassSorter ( ) ] )
69+ const output = rewriteString ( Herb , template , [ sorter ] )
6770
6871 expect ( output ) . toBe ( template )
6972 } )
7073 } )
7174
7275 describe ( "options" , ( ) => {
73- test ( "accepts baseDir option" , async ( ) => {
76+ test ( "accepts baseDir option" , ( ) => {
7477 const template = '<div class="text-red-500 p-4 mt-2"></div>'
7578 const parseResult = Herb . parse ( template , { track_whitespace : true } )
76- const { output } = await rewrite ( parseResult . value , [ tailwindClassSorter ( ) ] , {
79+ const { output } = rewrite ( parseResult . value , [ sorter ] , {
7780 baseDir : "/custom/path"
7881 } )
7982
8083 expect ( output ) . toBe ( '<div class="mt-2 p-4 text-red-500"></div>' )
8184 } )
8285
83- test ( "accepts filePath option" , async ( ) => {
86+ test ( "accepts filePath option" , ( ) => {
8487 const template = '<div class="text-red-500 p-4 mt-2"></div>'
8588 const parseResult = Herb . parse ( template , { track_whitespace : true } )
86- const { output } = await rewrite ( parseResult . value , [ tailwindClassSorter ( ) ] , {
89+ const { output } = rewrite ( parseResult . value , [ sorter ] , {
8790 filePath : "/custom/path/file.html.erb"
8891 } )
8992
9093 expect ( output ) . toBe ( '<div class="mt-2 p-4 text-red-500"></div>' )
9194 } )
9295
93- test ( "uses process.cwd() as default baseDir" , async ( ) => {
96+ test ( "uses process.cwd() as default baseDir" , ( ) => {
9497 const template = '<div class="text-red-500 p-4 mt-2"></div>'
9598 const parseResult = Herb . parse ( template , { track_whitespace : true } )
96- const { output } = await rewrite ( parseResult . value , [ tailwindClassSorter ( ) ] )
99+ const { output } = rewrite ( parseResult . value , [ sorter ] )
97100
98101 expect ( output ) . toBe ( '<div class="mt-2 p-4 text-red-500"></div>' )
99102 } )
100103 } )
101104
102105 describe ( "complex templates" , ( ) => {
103- test ( "handles ERB expressions" , async ( ) => {
106+ test ( "handles ERB expressions" , ( ) => {
104107 const template = '<div class="px-4 <%= extra_classes %> bg-blue-500"></div>'
105- const output = await rewriteString ( Herb , template , [ tailwindClassSorter ( ) ] )
108+ const output = rewriteString ( Herb , template , [ sorter ] )
106109
107110 expect ( output ) . toBe ( '<div class="bg-blue-500 px-4 <%= extra_classes %>"></div>' )
108111 } )
109112
110- test ( "handles ERB conditionals" , async ( ) => {
113+ test ( "handles ERB conditionals" , ( ) => {
111114 const template = '<div class="px-4 <% if admin? %> text-red-500 font-bold <% end %> bg-blue-500"></div>'
112- const output = await rewriteString ( Herb , template , [ tailwindClassSorter ( ) ] )
115+ const output = rewriteString ( Herb , template , [ sorter ] )
113116
114117 expect ( output ) . toBe ( '<div class="bg-blue-500 px-4 <% if admin? %> font-bold text-red-500 <% end %>"></div>' )
115118 } )
116119
117- test ( "handles multiline templates" , async ( ) => {
120+ test ( "handles multiline templates" , ( ) => {
118121 const template = dedent `
119122 <div class="px-4
120123 <% if valid? %>
@@ -134,45 +137,45 @@ describe("rewrite", () => {
134137 </div>
135138 `
136139
137- const output = await rewriteString ( Herb , template , [ tailwindClassSorter ( ) ] )
140+ const output = rewriteString ( Herb , template , [ sorter ] )
138141
139142 expect ( output ) . toBe ( expected )
140143 } )
141144 } )
142145
143146 describe ( "error handling" , ( ) => {
144- test ( "continues processing on rewriter error" , async ( ) => {
147+ test ( "continues processing on rewriter error" , ( ) => {
145148 const template = '<div class="text-red-500 p-4"></div>'
146149
147- const errorRewriter = tailwindClassSorter ( )
150+ const errorRewriter = sorter
148151 errorRewriter . rewrite . bind ( errorRewriter )
149152
150153 errorRewriter . rewrite = ( ) => {
151154 throw new Error ( "Test error" )
152155 }
153156
154157 const parseResult = Herb . parse ( template , { track_whitespace : true } )
155- const { output } = await rewrite ( parseResult . value , [ errorRewriter ] )
158+ const { output } = rewrite ( parseResult . value , [ errorRewriter ] )
156159
157160 expect ( output ) . toBe ( template )
158161 } )
159162 } )
160163
161164 describe ( "tailwindClassSorter factory" , ( ) => {
162165 test ( "creates rewriter with default options" , ( ) => {
163- const rewriter = tailwindClassSorter ( )
166+ const rewriter = sorter
164167
165168 expect ( rewriter . name ) . toBe ( "tailwind-class-sorter" )
166169 } )
167170
168- test ( "creates rewriter with custom baseDir" , ( ) => {
169- const rewriter = tailwindClassSorter ( { baseDir : "/custom/path" } )
171+ test ( "creates rewriter with custom baseDir" , async ( ) => {
172+ const rewriter = await tailwindClassSorter ( { baseDir : "/custom/path" } )
170173
171174 expect ( rewriter . name ) . toBe ( "tailwind-class-sorter" )
172175 } )
173176
174177 test ( "rewriter has initialize method" , async ( ) => {
175- const rewriter = tailwindClassSorter ( )
178+ const rewriter = sorter
176179
177180 await expect (
178181 rewriter . initialize ( { baseDir : process . cwd ( ) } )
0 commit comments