@@ -5,12 +5,14 @@ use crate::rules::Location;
55use crate :: values:: string:: CowArcStr ;
66use cssparser:: { BasicParseErrorKind , ParseError , ParseErrorKind } ;
77use parcel_selectors:: parser:: SelectorParseErrorKind ;
8+ #[ cfg( any( feature = "serde" , feature = "nodejs" ) ) ]
89use serde:: Serialize ;
910use std:: fmt;
1011
1112/// An error with a source location.
12- #[ derive( Debug , PartialEq , Clone , Serialize ) ]
13- #[ cfg_attr( feature = "serde" , derive( serde:: Deserialize ) ) ]
13+ #[ derive( Debug , PartialEq , Clone ) ]
14+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( serde:: Serialize ) ) ]
15+ #[ cfg_attr( any( feature = "serde" ) , derive( serde:: Deserialize ) ) ]
1416pub struct Error < T > {
1517 /// The type of error that occurred.
1618 pub kind : T ,
@@ -31,8 +33,9 @@ impl<T: fmt::Display> fmt::Display for Error<T> {
3133impl < T : fmt:: Display + fmt:: Debug > std:: error:: Error for Error < T > { }
3234
3335/// A line and column location within a source file.
34- #[ derive( Debug , PartialEq , Clone , Serialize ) ]
35- #[ cfg_attr( feature = "serde" , derive( serde:: Deserialize ) ) ]
36+ #[ derive( Debug , PartialEq , Clone ) ]
37+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( serde:: Serialize ) ) ]
38+ #[ cfg_attr( any( feature = "serde" ) , derive( serde:: Deserialize ) ) ]
3639pub struct ErrorLocation {
3740 /// The filename in which the error occurred.
3841 pub filename : String ,
@@ -60,8 +63,9 @@ impl fmt::Display for ErrorLocation {
6063}
6164
6265/// A parser error.
63- #[ derive( Debug , PartialEq , Serialize , Clone ) ]
64- #[ serde( tag = "type" , content = "value" ) ]
66+ #[ derive( Debug , PartialEq , Clone ) ]
67+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( Serialize ) ) ]
68+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , serde( tag = "type" , content = "value" ) ) ]
6569pub enum ParserError < ' i > {
6670 /// An at rule body was invalid.
6771 AtRuleBodyInvalid ,
@@ -90,7 +94,7 @@ pub enum ParserError<'i> {
9094 /// A `@namespace` rule was encountered after any rules besides `@charset`, `@import`, or `@layer`.
9195 UnexpectedNamespaceRule ,
9296 /// An unexpected token was encountered.
93- UnexpectedToken ( #[ serde( skip) ] Token < ' i > ) ,
97+ UnexpectedToken ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
9498 /// Maximum nesting depth was reached.
9599 MaximumNestingDepth ,
96100}
@@ -164,45 +168,46 @@ impl<'i> ParserError<'i> {
164168}
165169
166170/// A selector parsing error.
167- #[ derive( Debug , PartialEq , Serialize , Clone ) ]
168- #[ serde( tag = "type" , content = "value" ) ]
171+ #[ derive( Debug , PartialEq , Clone ) ]
172+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( Serialize ) ) ]
173+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , serde( tag = "type" , content = "value" ) ) ]
169174pub enum SelectorError < ' i > {
170175 /// An unexpected token was found in an attribute selector.
171- BadValueInAttr ( #[ serde( skip) ] Token < ' i > ) ,
176+ BadValueInAttr ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
172177 /// An unexpected token was found in a class selector.
173- ClassNeedsIdent ( #[ serde( skip) ] Token < ' i > ) ,
178+ ClassNeedsIdent ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
174179 /// A dangling combinator was found.
175180 DanglingCombinator ,
176181 /// An empty selector.
177182 EmptySelector ,
178183 /// A `|` was expected in an attribute selector.
179- ExpectedBarInAttr ( #[ serde( skip) ] Token < ' i > ) ,
184+ ExpectedBarInAttr ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
180185 /// A namespace was expected.
181186 ExpectedNamespace ( CowArcStr < ' i > ) ,
182187 /// An unexpected token was encountered in a namespace.
183- ExplicitNamespaceUnexpectedToken ( #[ serde( skip) ] Token < ' i > ) ,
188+ ExplicitNamespaceUnexpectedToken ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
184189 /// An invalid pseudo class was encountered after a pseudo element.
185190 InvalidPseudoClassAfterPseudoElement ,
186191 /// An invalid pseudo class was encountered after a `-webkit-scrollbar` pseudo element.
187192 InvalidPseudoClassAfterWebKitScrollbar ,
188193 /// A `-webkit-scrollbar` state was encountered before a `-webkit-scrollbar` pseudo element.
189194 InvalidPseudoClassBeforeWebKitScrollbar ,
190195 /// Invalid qualified name in attribute selector.
191- InvalidQualNameInAttr ( #[ serde( skip) ] Token < ' i > ) ,
196+ InvalidQualNameInAttr ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
192197 /// The current token is not allowed in this state.
193198 InvalidState ,
194199 /// The selector is required to have the `&` nesting selector at the start.
195200 MissingNestingPrefix ,
196201 /// The selector is missing a `&` nesting selector.
197202 MissingNestingSelector ,
198203 /// No qualified name in attribute selector.
199- NoQualifiedNameInAttributeSelector ( #[ serde( skip) ] Token < ' i > ) ,
204+ NoQualifiedNameInAttributeSelector ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
200205 /// An Invalid token was encountered in a pseudo element.
201- PseudoElementExpectedIdent ( #[ serde( skip) ] Token < ' i > ) ,
206+ PseudoElementExpectedIdent ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
202207 /// An unexpected identifier was encountered.
203208 UnexpectedIdent ( CowArcStr < ' i > ) ,
204209 /// An unexpected token was encountered inside an attribute selector.
205- UnexpectedTokenInAttributeSelector ( #[ serde( skip) ] Token < ' i > ) ,
210+ UnexpectedTokenInAttributeSelector ( #[ cfg_attr ( any ( feature = " serde" , feature = "nodejs" ) , serde ( skip) ) ] Token < ' i > ) ,
206211 /// An unsupported pseudo class or pseudo element was encountered.
207212 UnsupportedPseudoClassOrElement ( CowArcStr < ' i > ) ,
208213}
@@ -291,8 +296,9 @@ impl<T: fmt::Display + fmt::Debug> std::error::Error for ErrorWithLocation<T> {}
291296pub ( crate ) type MinifyError = ErrorWithLocation < MinifyErrorKind > ;
292297
293298/// A transformation error.
294- #[ derive( Debug , PartialEq , Serialize ) ]
295- #[ serde( tag = "type" ) ]
299+ #[ derive( Debug , PartialEq ) ]
300+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( Serialize ) ) ]
301+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , serde( tag = "type" ) ) ]
296302pub enum MinifyErrorKind {
297303 /// A circular `@custom-media` rule was detected.
298304 CircularCustomMedia {
@@ -337,8 +343,9 @@ impl MinifyErrorKind {
337343pub type PrinterError = Error < PrinterErrorKind > ;
338344
339345/// A printer error type.
340- #[ derive( Debug , PartialEq , Serialize ) ]
341- #[ serde( tag = "type" ) ]
346+ #[ derive( Debug , PartialEq ) ]
347+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , derive( Serialize ) ) ]
348+ #[ cfg_attr( any( feature = "serde" , feature = "nodejs" ) , serde( tag = "type" ) ) ]
342349pub enum PrinterErrorKind {
343350 /// An ambiguous relative `url()` was encountered in a custom property declaration.
344351 AmbiguousUrlInCustomProperty {
0 commit comments