@@ -35,7 +35,7 @@ const serializeCssVisitNode = (opts: SerializeOpts, node: CssNode, index: number
3535 return serializeCssRule ( opts , node ) ;
3636 }
3737 if ( nodeType === CssNodeType . Comment ) {
38- if ( node . comment [ 0 ] === '!' ) {
38+ if ( node . comment ?. [ 0 ] === '!' ) {
3939 return `/*${ node . comment } */` ;
4040 } else {
4141 return '' ;
@@ -83,7 +83,7 @@ const serializeCssVisitNode = (opts: SerializeOpts, node: CssNode, index: number
8383const serializeCssRule = ( opts : SerializeOpts , node : CssNode ) => {
8484 const decls = node . declarations ;
8585 const usedSelectors = opts . usedSelectors ;
86- const selectors = node . selectors . slice ( ) ;
86+ const selectors = node . selectors ? .slice ( ) ?? [ ] ;
8787
8888 if ( decls == null || decls . length === 0 ) {
8989 return '' ;
@@ -160,10 +160,12 @@ const serializeCssRule = (opts: SerializeOpts, node: CssNode) => {
160160
161161 const cleanedSelectors : string [ ] = [ ] ;
162162 let cleanedSelector = '' ;
163- for ( const selector of node . selectors ) {
164- cleanedSelector = removeSelectorWhitespace ( selector ) ;
165- if ( ! cleanedSelectors . includes ( cleanedSelector ) ) {
166- cleanedSelectors . push ( cleanedSelector ) ;
163+ if ( node . selectors ) {
164+ for ( const selector of node . selectors ) {
165+ cleanedSelector = removeSelectorWhitespace ( selector ) ;
166+ if ( ! cleanedSelectors . includes ( cleanedSelector ) ) {
167+ cleanedSelectors . push ( cleanedSelector ) ;
168+ }
167169 }
168170 }
169171
@@ -197,7 +199,7 @@ const serializeCssKeyframes = (opts: SerializeOpts, node: CssNode) => {
197199} ;
198200
199201const serializeCssKeyframe = ( opts : SerializeOpts , node : CssNode ) => {
200- return node . values . join ( ',' ) + '{' + serializeCssMapVisit ( opts , node . declarations ) + '}' ;
202+ return ( node . values ? .join ( ',' ) ?? ' ') + '{' + serializeCssMapVisit ( opts , node . declarations ) + '}' ;
201203} ;
202204
203205const serializeCssFontFace = ( opts : SerializeOpts , node : CssNode ) => {
@@ -217,7 +219,7 @@ const serializeCssSupports = (opts: SerializeOpts, node: CssNode) => {
217219} ;
218220
219221const serializeCssPage = ( opts : SerializeOpts , node : CssNode ) => {
220- const sel = node . selectors . join ( ', ' ) ;
222+ const sel = node . selectors ? .join ( ', ' ) ?? '' ;
221223 return '@page ' + sel + '{' + serializeCssMapVisit ( opts , node . declarations ) + '}' ;
222224} ;
223225
@@ -230,7 +232,7 @@ const serializeCssDocument = (opts: SerializeOpts, node: CssNode) => {
230232 return doc + '{' + documentCss + '}' ;
231233} ;
232234
233- const serializeCssMapVisit = ( opts : SerializeOpts , nodes : CssNode [ ] | void ) => {
235+ const serializeCssMapVisit = ( opts : SerializeOpts , nodes : CssNode [ ] | undefined | null ) : string => {
234236 let rtn = '' ;
235237
236238 if ( nodes ) {
@@ -272,10 +274,10 @@ const removeSelectorWhitespace = (selector: string) => {
272274 return rtn ;
273275} ;
274276
275- const removeMediaWhitespace = ( media : string ) => {
277+ const removeMediaWhitespace = ( media : string | undefined ) => {
276278 let rtn = '' ;
277279 let char = '' ;
278- media = media . trim ( ) ;
280+ media = media ? .trim ( ) ?? '' ;
279281
280282 for ( let i = 0 , l = media . length ; i < l ; i ++ ) {
281283 char = media [ i ] ;
0 commit comments