blob: 3185a2d1d44fcbe0b2ceb118afe7b239afee8a0f [file] [log] [blame]
Tim van der Lippe706ec962021-06-04 13:24:42 +01001export interface Options {
2 /**
3 * When false, tag names will not be lowercased.
4 * @default true
5 */
6 lowerCaseAttributeNames?: boolean;
7 /**
8 * When false, attribute names will not be lowercased.
9 * @default true
10 */
11 lowerCaseTags?: boolean;
12 /**
13 * When `true`, `xmlMode` implies both `lowerCaseTags` and `lowerCaseAttributeNames` are set to `false`.
14 * @default false
15 */
16 xmlMode?: boolean;
17}
18export declare type Selector = PseudoSelector | PseudoElement | AttributeSelector | TagSelector | UniversalSelector | Traversal;
19export interface AttributeSelector {
20 type: "attribute";
21 name: string;
22 action: AttributeAction;
23 value: string;
24 ignoreCase: boolean;
25 namespace: string | null;
26}
27declare type DataType = Selector[][] | null | string;
28export interface PseudoSelector {
29 type: "pseudo";
30 name: string;
31 data: DataType;
32}
33export interface PseudoElement {
34 type: "pseudo-element";
35 name: string;
36}
37export interface TagSelector {
38 type: "tag";
39 name: string;
40 namespace: string | null;
41}
42export interface UniversalSelector {
43 type: "universal";
44 namespace: string | null;
45}
46export interface Traversal {
47 type: TraversalType;
48}
49export declare type AttributeAction = "any" | "element" | "end" | "equals" | "exists" | "hyphen" | "not" | "start";
50export declare type TraversalType = "adjacent" | "child" | "descendant" | "parent" | "sibling";
51/**
52 * Checks whether a specific selector is a traversal.
53 * This is useful eg. in swapping the order of elements that
54 * are not traversals.
55 *
56 * @param selector Selector to check.
57 */
58export declare function isTraversal(selector: Selector): selector is Traversal;
59/**
60 * Parses `selector`, optionally with the passed `options`.
61 *
62 * @param selector Selector to parse.
63 * @param options Options for parsing.
64 * @returns Returns a two-dimensional array.
65 * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),
66 * the second contains the relevant tokens for that selector.
67 */
68export default function parse(selector: string, options?: Options): Selector[][];
69export {};
70//# sourceMappingURL=parse.d.ts.map