declare namespace postcssValueParser { interface BaseNode { /** * The offset, inclusive, inside the CSS value at which the node starts. */ sourceIndex: number /** * The offset, exclusive, inside the CSS value at which the node ends. */ sourceEndIndex: 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