From 63529c6cbbceac86b69e44841646935c14adc60a Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Wed, 14 Aug 2024 17:57:23 +0800 Subject: [PATCH] support special case for custom pseudo element selector --- CHANGELOG.md | 2 ++ parser.d.ts | 7 ++++--- parser.test.ts | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08b7fdc..a2569c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- Added support of special case for custom pseudo element selector. + ## v2.11.4 - Fixed parsing unclosed attribute selector (such as `a[href`). diff --git a/parser.d.ts b/parser.d.ts index 502da01..172c99a 100644 --- a/parser.d.ts +++ b/parser.d.ts @@ -12,7 +12,7 @@ type GetLastTag = I extends `${string}${Combinators}${infer Right}` : GetLastTag : I -type PseudoClassesFirstChar = +type PseudoPrefix = | 'a' | 'b' | 'c' @@ -31,6 +31,7 @@ type PseudoClassesFirstChar = | 'u' | 'v' | 'w' + | ':-' type Split = S extends `${string},` // invalid selector ? unknown @@ -108,9 +109,9 @@ type PostprocessEachUnchecked = ? PostprocessEachUnchecked<`${Tag}&${Rest}`> : I extends `${infer Tag}#${string}` ? PostprocessEachUnchecked - : I extends `${infer Tag}:${PseudoClassesFirstChar}${string}&${infer Rest}` + : I extends `${infer Tag}:${PseudoPrefix}${string}&${infer Rest}` ? PostprocessEachUnchecked<`${Tag}&${Rest}`> - : I extends `${infer Tag}:${PseudoClassesFirstChar}${string}` + : I extends `${infer Tag}:${PseudoPrefix}${string}` ? PostprocessEachUnchecked : I extends `${string}|${infer Tag}` // namespace prefix ? PostprocessEachUnchecked diff --git a/parser.test.ts b/parser.test.ts index 4f1e5ab..35f7c47 100644 --- a/parser.test.ts +++ b/parser.test.ts @@ -357,6 +357,7 @@ type _Tests = [ >, Expect, Element>>, Expect, Element>>, + Expect, HTMLAnchorElement>>, ] declare function delegate<