Skip to content

Commit 29fa192

Browse files
authored
chore(snc): drop snc count for serialize-css (#4730)
* chore(snc): drop snc count for serialize-css this commut updates the function signature of `serializeCssMapVisit` to replace `void` as an argument type with `undefined | null`, which matches that of a all other arguments provided to this function in its acutal usage * add handling for the case where a node's collection properties are falsy * handle the case of undefine media queries * handle additional falsy selectors * handle falsy comment
1 parent 9400948 commit 29fa192

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/compiler/style/css-parser/serialize-css.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8383
const 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

199201
const 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

203205
const serializeCssFontFace = (opts: SerializeOpts, node: CssNode) => {
@@ -217,7 +219,7 @@ const serializeCssSupports = (opts: SerializeOpts, node: CssNode) => {
217219
};
218220

219221
const 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

Comments
 (0)