@@ -148,4 +148,211 @@ describe('JS Meta XML Processor with Capabilities Check', () => {
148148 expect ( result [ 0 ] ) . to . deep . equal ( input ) ;
149149 } ) ;
150150 } ) ;
151+
152+ describe ( 'postprocess' , ( ) => {
153+ it ( 'should filter out unused eslint-disable directive warnings for SSR rules' , ( ) => {
154+ const messages = [
155+ [
156+ // Messages from original file
157+ {
158+ ruleId : null ,
159+ message :
160+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env')" ,
161+ line : 1 ,
162+ column : 1 ,
163+ severity : 1 ,
164+ } ,
165+ {
166+ ruleId : 'no-console' ,
167+ message : 'Unexpected console statement.' ,
168+ line : 2 ,
169+ column : 1 ,
170+ severity : 2 ,
171+ } ,
172+ ] ,
173+ [
174+ // Messages from virtual .ssrjs file
175+ {
176+ ruleId : '@lwc/lwc/ssr-no-node-env' ,
177+ message : 'process.env usage is not allowed' ,
178+ line : 3 ,
179+ column : 1 ,
180+ severity : 2 ,
181+ } ,
182+ ] ,
183+ ] ;
184+
185+ const result = ssrProcessor . postprocess ( messages ) ;
186+
187+ expect ( result ) . to . have . lengthOf ( 2 ) ;
188+ // Should keep non-SSR messages
189+ expect ( result [ 0 ] ) . to . deep . include ( { ruleId : 'no-console' } ) ;
190+ expect ( result [ 1 ] ) . to . deep . include ( { ruleId : '@lwc/lwc/ssr-no-node-env' } ) ;
191+ // Should filter out SSR unused disable directive warning
192+ expect (
193+ result . some (
194+ ( msg ) => msg . message && msg . message . includes ( "'@lwc/lwc/ssr-no-node-env'" ) ,
195+ ) ,
196+ ) . to . be . false ;
197+ } ) ;
198+
199+ it ( 'should keep unused eslint-disable directive warnings for non-SSR rules' , ( ) => {
200+ const messages = [
201+ [
202+ // Messages from original file
203+ {
204+ ruleId : null ,
205+ message :
206+ "Unused eslint-disable directive (no problems were reported from 'no-console')" ,
207+ line : 1 ,
208+ column : 1 ,
209+ severity : 1 ,
210+ } ,
211+ {
212+ ruleId : null ,
213+ message :
214+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env')" ,
215+ line : 2 ,
216+ column : 1 ,
217+ severity : 1 ,
218+ } ,
219+ ] ,
220+ ] ;
221+
222+ const result = ssrProcessor . postprocess ( messages ) ;
223+
224+ expect ( result ) . to . have . lengthOf ( 1 ) ;
225+ // Should keep non-SSR unused disable directive warning
226+ expect ( result [ 0 ] . message ) . to . include ( "'no-console'" ) ;
227+ // Should filter out SSR unused disable directive warning
228+ expect (
229+ result . some (
230+ ( msg ) => msg . message && msg . message . includes ( "'@lwc/lwc/ssr-no-node-env'" ) ,
231+ ) ,
232+ ) . to . be . false ;
233+ } ) ;
234+
235+ it ( 'should handle multiple SSR rules in unused disable directive warnings' , ( ) => {
236+ const messages = [
237+ [
238+ {
239+ ruleId : null ,
240+ message :
241+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env', '@lwc/lwc/ssr-no-form-factor')" ,
242+ line : 1 ,
243+ column : 1 ,
244+ severity : 1 ,
245+ } ,
246+ ] ,
247+ ] ;
248+
249+ const result = ssrProcessor . postprocess ( messages ) ;
250+
251+ expect ( result ) . to . have . lengthOf ( 0 ) ;
252+ // Should filter out the entire message since it only contains SSR rules
253+ } ) ;
254+
255+ it ( 'should preserve unused disable directive warnings when mixed with non-SSR rules' , ( ) => {
256+ const messages = [
257+ [
258+ {
259+ ruleId : null ,
260+ message :
261+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env', 'no-console')" ,
262+ line : 1 ,
263+ column : 1 ,
264+ severity : 1 ,
265+ } ,
266+ ] ,
267+ ] ;
268+
269+ const result = ssrProcessor . postprocess ( messages ) ;
270+
271+ expect ( result ) . to . have . lengthOf ( 1 ) ;
272+ // Should keep the entire message unchanged - once developer fixes non-SSR rule, SSR rule gets handled automatically
273+ expect ( result [ 0 ] . message ) . to . equal (
274+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env', 'no-console')" ,
275+ ) ;
276+ } ) ;
277+
278+ it ( 'should handle mixed ordering of SSR and non-SSR rules' , ( ) => {
279+ const messages = [
280+ [
281+ {
282+ ruleId : null ,
283+ message :
284+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env', 'no-console', '@lwc/lwc/ssr-no-form-factor')" ,
285+ line : 1 ,
286+ column : 1 ,
287+ severity : 1 ,
288+ } ,
289+ ] ,
290+ ] ;
291+
292+ const result = ssrProcessor . postprocess ( messages ) ;
293+
294+ expect ( result ) . to . have . lengthOf ( 1 ) ;
295+ // Should keep the entire message unchanged regardless of rule order
296+ expect ( result [ 0 ] . message ) . to . equal (
297+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-node-env', 'no-console', '@lwc/lwc/ssr-no-form-factor')" ,
298+ ) ;
299+ } ) ;
300+
301+ it ( 'should handle complex mixed rule scenarios' , ( ) => {
302+ const messages = [
303+ [
304+ {
305+ ruleId : null ,
306+ message :
307+ "Unused eslint-disable directive (no problems were reported from 'no-unused-vars', '@lwc/lwc/ssr-no-node-env', 'prefer-const')" ,
308+ line : 1 ,
309+ column : 1 ,
310+ severity : 1 ,
311+ } ,
312+ {
313+ ruleId : null ,
314+ message :
315+ "Unused eslint-disable directive (no problems were reported from '@lwc/lwc/ssr-no-restricted-browser-globals')" ,
316+ line : 2 ,
317+ column : 1 ,
318+ severity : 1 ,
319+ } ,
320+ ] ,
321+ ] ;
322+
323+ const result = ssrProcessor . postprocess ( messages ) ;
324+
325+ expect ( result ) . to . have . lengthOf ( 1 ) ;
326+ // Should keep the first message (mixed rules) unchanged and filter out the second (SSR only)
327+ expect ( result [ 0 ] . message ) . to . equal (
328+ "Unused eslint-disable directive (no problems were reported from 'no-unused-vars', '@lwc/lwc/ssr-no-node-env', 'prefer-const')" ,
329+ ) ;
330+ } ) ;
331+
332+ it ( 'should pass through all other types of messages unchanged' , ( ) => {
333+ const messages = [
334+ [
335+ {
336+ ruleId : 'no-console' ,
337+ message : 'Unexpected console statement.' ,
338+ line : 1 ,
339+ column : 1 ,
340+ severity : 2 ,
341+ } ,
342+ {
343+ ruleId : '@lwc/lwc/valid-api' ,
344+ message : 'Invalid API usage.' ,
345+ line : 2 ,
346+ column : 1 ,
347+ severity : 2 ,
348+ } ,
349+ ] ,
350+ ] ;
351+
352+ const result = ssrProcessor . postprocess ( messages ) ;
353+
354+ expect ( result ) . to . have . lengthOf ( 2 ) ;
355+ expect ( result ) . to . deep . equal ( messages . flat ( ) ) ;
356+ } ) ;
357+ } ) ;
151358} ) ;
0 commit comments