|
|
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;
|
|
|
|