123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- declare namespace postcssValueParser {
- interface BaseNode {
- /**
- * The offset inside the CSS value at which the node starts
- */
- sourceIndex: number;
-
- /**
- * The node's characteristic value
- */
- value: string;
- }
-
- interface ClosableNode {
- /**
- * Whether the parsed CSS value ended before the node was properly closed
- */
- unclosed?: true;
- }
-
- interface AdjacentAwareNode {
- /**
- * The token at the start of the node
- */
- before: string;
-
- /**
- * The token at the end of the node
- */
- after: string;
- }
-
- interface CommentNode extends BaseNode, ClosableNode {
- type: "comment";
- }
-
- interface DivNode extends BaseNode, AdjacentAwareNode {
- type: "div";
- }
-
- interface FunctionNode extends BaseNode, ClosableNode, AdjacentAwareNode {
- type: "function";
-
- /**
- * Nodes inside the function
- */
- nodes: Node[];
- }
-
- interface SpaceNode extends BaseNode {
- type: "space";
- }
-
- interface StringNode extends BaseNode, ClosableNode {
- type: "string";
-
- /**
- * The quote type delimiting the string
- */
- quote: '"' | "'";
- }
-
- interface UnicodeRangeNode extends BaseNode {
- type: "unicode-range";
- }
-
- interface WordNode extends BaseNode {
- type: "word";
- }
-
- /**
- * Any node parsed from a CSS value
- */
- type Node =
- | CommentNode
- | DivNode
- | FunctionNode
- | SpaceNode
- | StringNode
- | UnicodeRangeNode
- | WordNode;
-
- interface CustomStringifierCallback {
- /**
- * @param node The node to stringify
- * @returns The serialized CSS representation of the node
- */
- (nodes: Node): string | undefined;
- }
-
- interface WalkCallback {
- /**
- * @param node The currently visited node
- * @param index The index of the node in the series of parsed nodes
- * @param nodes The series of parsed nodes
- * @returns Returning `false` will prevent traversal of descendant nodes (only applies if `bubble` was set to `true` in the `walk()` call)
- */
- (node: Node, index: number, nodes: Node[]): void | boolean;
- }
-
- /**
- * A CSS dimension, decomposed into its numeric and unit parts
- */
- interface Dimension {
- number: string;
- unit: string;
- }
-
- /**
- * A wrapper around a parsed CSS value that allows for inspecting and walking nodes
- */
- interface ParsedValue {
- /**
- * The series of parsed nodes
- */
- nodes: Node[];
-
- /**
- * Walk all parsed nodes, applying a callback
- *
- * @param callback A visitor callback that will be executed for each node
- * @param bubble When set to `true`, walking will be done inside-out instead of outside-in
- */
- walk(callback: WalkCallback, bubble?: boolean): this;
- }
-
- interface ValueParser {
- /**
- * Decompose a CSS dimension into its numeric and unit part
- *
- * @param value The dimension to decompose
- * @returns An object representing `number` and `unit` part of the dimension or `false` if the decomposing fails
- */
- unit(value: string): Dimension | false;
-
- /**
- * Serialize a series of nodes into a CSS value
- *
- * @param nodes The nodes to stringify
- * @param custom A custom stringifier callback
- * @returns The generated CSS value
- */
- stringify(nodes: Node | Node[], custom?: CustomStringifierCallback): string;
-
- /**
- * Walk a series of nodes, applying a callback
- *
- * @param nodes The nodes to walk
- * @param callback A visitor callback that will be executed for each node
- * @param bubble When set to `true`, walking will be done inside-out instead of outside-in
- */
- walk(nodes: Node[], callback: WalkCallback, bubble?: boolean): void;
-
- /**
- * Parse a CSS value into a series of nodes to operate on
- *
- * @param value The value to parse
- */
- new (value: string): ParsedValue;
-
- /**
- * Parse a CSS value into a series of nodes to operate on
- *
- * @param value The value to parse
- */
- (value: string): ParsedValue;
- }
- }
-
- declare const postcssValueParser: postcssValueParser.ValueParser;
-
- export = postcssValueParser;
|