@types/css-selector-tokenizer
Version:
TypeScript definitions for css-selector-tokenizer
143 lines (117 loc) • 3.3 kB
TypeScript
export interface BaseNode {
name?: string | undefined;
before?: string | undefined;
after?: string | undefined;
}
/** Any node returned by `parse`. Useful for `walk` implementations. */
export type AnySelectorNode = SelectorsNode | SelectorNode | SelectorNodeType;
export interface SelectorsNode extends BaseNode {
type: "selectors";
nodes: SelectorNode[];
}
export interface SelectorNode extends BaseNode {
type: "selector";
nodes: SelectorNodeType[];
}
/** Any node that can be child of `SelectorNode`. */
export type SelectorNodeType =
| ElementNode
| ClassNode
| SpacingNode
| IdNode
| PseudoClassNode
| NestedPseudoClassNode
| UniversalNode
| AttributeNode
| CommentNode
| OperatorNode
| InvalidNode
| PseudoElementNode;
export interface ElementNode extends BaseNode {
type: "element";
name: string;
namespace?: string | undefined;
}
export interface PseudoElementNode extends BaseNode {
type: "pseudo-element";
name: string;
}
export interface ClassNode extends BaseNode {
type: "class";
name: string;
}
export interface PseudoClassNode extends BaseNode {
type: "pseudo-class";
name: string;
content?: string | undefined;
}
export interface AttributeNode extends BaseNode {
type: "attribute";
content: string;
}
export interface CommentNode extends BaseNode {
type: "comment";
content: string;
}
export interface NestedPseudoClassNode extends BaseNode {
type: "nested-pseudo-class";
name: string;
nodes: SelectorNode[];
}
export interface IdNode extends BaseNode {
type: "id";
name: string;
}
export interface SpacingNode extends BaseNode {
type: "spacing";
value: string;
}
export interface UniversalNode extends BaseNode {
type: "universal";
namespace?: string | undefined;
}
export interface OperatorNode extends BaseNode {
type: "operator";
operator: string;
}
export interface InvalidNode extends BaseNode {
type: "invalid";
value: string;
}
/** Any node returned by `parseValues`. Useful for `walk` implementations. */
export type AnyValueNode = ValuesNode | ValueNode | ValueNodeType;
export interface ValuesNode extends BaseNode {
type: "values";
nodes: ValueNode[];
}
export interface ValueNode extends BaseNode {
type: "value";
nodes: ValueNodeType[];
}
/** Any node that can be child of `ValueNode`. */
export type ValueNodeType = ItemNode | NestedItemNode | StringNode | CommentNode | UrlNode | InvalidNode;
export interface ItemNode extends BaseNode {
type: "item";
name: string;
}
export interface NestedItemNode extends BaseNode {
type: "nested-item";
name: string;
nodes: ValueNode[];
}
export interface UrlNode extends BaseNode {
type: "url";
url: string;
stringType?: string | undefined;
innerSpacingBefore?: string | undefined;
innerSpacingAfter?: string | undefined;
}
export interface StringNode extends BaseNode {
type: "string";
value: string;
stringType: string;
}
export function parse(selectors: string): SelectorsNode;
export function stringify(node: SelectorsNode): string;
export function parseValues(values: string): ValuesNode;
export function stringifyValues(node: ValuesNode): string;