Added a fix for the parser crashing when a css variable property does not end with a semicolon. Fixes #3698 and Fixes #3373.
Why:
This helps to avoid crashes when importing pre-minified css files from e.g. an npm package. In our case, cssnano always drops the trailing semicolon on the last property. This cannot be disabled without disabling all of whitespace normalization (normalizeWhitespace option). Fixing the bug in Less.js fixes this use case for us.
How:
When calling permissiveValue on a detected css variable, the untilTokens parameter is left unset. This defaults it to detecting ; for ending the value. I've set the parameter to /[;}]/ instead in order to close variables on either the semicolon (;) or the closing curly bracket (}) character. This may not be the most optimal fix, but it gets the job done in the test cases I've added. Additionally, it doesn't break any of the existing test cases.
What:
Added a fix for the parser crashing when a css variable property does not end with a semicolon. Fixes #3698 and Fixes #3373.
Why:
This helps to avoid crashes when importing pre-minified css files from e.g. an npm package. In our case, cssnano always drops the trailing semicolon on the last property. This cannot be disabled without disabling all of whitespace normalization (
normalizeWhitespace
option). Fixing the bug in Less.js fixes this use case for us.How:
When calling
permissiveValue
on a detected css variable, theuntilTokens
parameter is left unset. This defaults it to detecting;
for ending the value. I've set the parameter to/[;}]/
instead in order to close variables on either the semicolon (;
) or the closing curly bracket (}
) character. This may not be the most optimal fix, but it gets the job done in the test cases I've added. Additionally, it doesn't break any of the existing test cases.Checklist: