| import { RawSourceMap, SourceMapGenerator } from 'source-map-js' |
| |
| import AtRule, { AtRuleProps } from './at-rule.js' |
| import Comment, { CommentProps } from './comment.js' |
| import Container, { ContainerProps, NewChild } from './container.js' |
| import CssSyntaxError from './css-syntax-error.js' |
| import Declaration, { DeclarationProps } from './declaration.js' |
| import Document, { DocumentProps } from './document.js' |
| import Input, { FilePosition } from './input.js' |
| import LazyResult from './lazy-result.js' |
| import list from './list.js' |
| import Node, { |
| AnyNode, |
| ChildNode, |
| ChildProps, |
| NodeErrorOptions, |
| NodeProps, |
| Position, |
| Source |
| } from './node.js' |
| import Processor from './processor.js' |
| import Result, { Message } from './result.js' |
| import Root, { RootProps } from './root.js' |
| import Rule, { RuleProps } from './rule.js' |
| import Warning, { WarningOptions } from './warning.js' |
| |
| type DocumentProcessor = ( |
| document: Document, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| type RootProcessor = ( |
| root: Root, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| type DeclarationProcessor = ( |
| decl: Declaration, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| type RuleProcessor = ( |
| rule: Rule, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| type AtRuleProcessor = ( |
| atRule: AtRule, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| type CommentProcessor = ( |
| comment: Comment, |
| helper: postcss.Helpers |
| ) => Promise<void> | void |
| |
| interface Processors { |
| /** |
| * Will be called on all`AtRule` nodes. |
| * |
| * Will be called again on node or children changes. |
| */ |
| AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor |
| |
| /** |
| * Will be called on all `AtRule` nodes, when all children will be processed. |
| * |
| * Will be called again on node or children changes. |
| */ |
| AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor |
| |
| /** |
| * Will be called on all `Comment` nodes. |
| * |
| * Will be called again on node or children changes. |
| */ |
| Comment?: CommentProcessor |
| |
| /** |
| * Will be called on all `Comment` nodes after listeners |
| * for `Comment` event. |
| * |
| * Will be called again on node or children changes. |
| */ |
| CommentExit?: CommentProcessor |
| |
| /** |
| * Will be called on all `Declaration` nodes after listeners |
| * for `Declaration` event. |
| * |
| * Will be called again on node or children changes. |
| */ |
| Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor |
| |
| /** |
| * Will be called on all `Declaration` nodes. |
| * |
| * Will be called again on node or children changes. |
| */ |
| DeclarationExit?: |
| | { [prop: string]: DeclarationProcessor } |
| | DeclarationProcessor |
| |
| /** |
| * Will be called on `Document` node. |
| * |
| * Will be called again on children changes. |
| */ |
| Document?: DocumentProcessor |
| |
| /** |
| * Will be called on `Document` node, when all children will be processed. |
| * |
| * Will be called again on children changes. |
| */ |
| DocumentExit?: DocumentProcessor |
| |
| /** |
| * Will be called on `Root` node once. |
| */ |
| Once?: RootProcessor |
| |
| /** |
| * Will be called on `Root` node once, when all children will be processed. |
| */ |
| OnceExit?: RootProcessor |
| |
| /** |
| * Will be called on `Root` node. |
| * |
| * Will be called again on children changes. |
| */ |
| Root?: RootProcessor |
| |
| /** |
| * Will be called on `Root` node, when all children will be processed. |
| * |
| * Will be called again on children changes. |
| */ |
| RootExit?: RootProcessor |
| |
| /** |
| * Will be called on all `Rule` nodes. |
| * |
| * Will be called again on node or children changes. |
| */ |
| Rule?: RuleProcessor |
| |
| /** |
| * Will be called on all `Rule` nodes, when all children will be processed. |
| * |
| * Will be called again on node or children changes. |
| */ |
| RuleExit?: RuleProcessor |
| } |
| |
| declare namespace postcss { |
| export { |
| AnyNode, |
| AtRule, |
| AtRuleProps, |
| ChildNode, |
| ChildProps, |
| Comment, |
| CommentProps, |
| Container, |
| ContainerProps, |
| CssSyntaxError, |
| Declaration, |
| DeclarationProps, |
| Document, |
| DocumentProps, |
| FilePosition, |
| Input, |
| LazyResult, |
| list, |
| Message, |
| NewChild, |
| Node, |
| NodeErrorOptions, |
| NodeProps, |
| Position, |
| Processor, |
| Result, |
| Root, |
| RootProps, |
| Rule, |
| RuleProps, |
| Source, |
| Warning, |
| WarningOptions |
| } |
| |
| export type SourceMap = { |
| toJSON(): RawSourceMap |
| } & SourceMapGenerator |
| |
| export type Helpers = { postcss: Postcss; result: Result } & Postcss |
| |
| export interface Plugin extends Processors { |
| postcssPlugin: string |
| prepare?: (result: Result) => Processors |
| } |
| |
| export interface PluginCreator<PluginOptions> { |
| (opts?: PluginOptions): Plugin | Processor |
| postcss: true |
| } |
| |
| export interface Transformer extends TransformCallback { |
| postcssPlugin: string |
| postcssVersion: string |
| } |
| |
| export interface TransformCallback { |
| (root: Root, result: Result): Promise<void> | void |
| } |
| |
| export interface OldPlugin<T> extends Transformer { |
| (opts?: T): Transformer |
| postcss: Transformer |
| } |
| |
| export type AcceptedPlugin = |
| | { |
| postcss: Processor | TransformCallback |
| } |
| | OldPlugin<any> |
| | Plugin |
| | PluginCreator<any> |
| | Processor |
| | TransformCallback |
| |
| export interface Parser<RootNode = Document | Root> { |
| ( |
| css: { toString(): string } | string, |
| opts?: Pick<ProcessOptions, 'document' | 'from' | 'map'> |
| ): RootNode |
| } |
| |
| export interface Builder { |
| (part: string, node?: AnyNode, type?: 'end' | 'start'): void |
| } |
| |
| export interface Stringifier { |
| (node: AnyNode, builder: Builder): void |
| } |
| |
| export interface JSONHydrator { |
| (data: object): Node |
| (data: object[]): Node[] |
| } |
| |
| export interface Syntax<RootNode = Document | Root> { |
| /** |
| * Function to generate AST by string. |
| */ |
| parse?: Parser<RootNode> |
| |
| /** |
| * Class to generate string by AST. |
| */ |
| stringify?: Stringifier |
| } |
| |
| export interface SourceMapOptions { |
| /** |
| * Use absolute path in generated source map. |
| */ |
| absolute?: boolean |
| |
| /** |
| * Indicates that PostCSS should add annotation comments to the CSS. |
| * By default, PostCSS will always add a comment with a path |
| * to the source map. PostCSS will not add annotations to CSS files |
| * that do not contain any comments. |
| * |
| * By default, PostCSS presumes that you want to save the source map as |
| * `opts.to + '.map'` and will use this path in the annotation comment. |
| * A different path can be set by providing a string value for annotation. |
| * |
| * If you have set `inline: true`, annotation cannot be disabled. |
| */ |
| annotation?: ((file: string, root: Root) => string) | boolean | string |
| |
| /** |
| * Override `from` in map’s sources. |
| */ |
| from?: string |
| |
| /** |
| * Indicates that the source map should be embedded in the output CSS |
| * as a Base64-encoded comment. By default, it is `true`. |
| * But if all previous maps are external, not inline, PostCSS will not embed |
| * the map even if you do not set this option. |
| * |
| * If you have an inline source map, the result.map property will be empty, |
| * as the source map will be contained within the text of `result.css`. |
| */ |
| inline?: boolean |
| |
| /** |
| * Source map content from a previous processing step (e.g., Sass). |
| * |
| * PostCSS will try to read the previous source map |
| * automatically (based on comments within the source CSS), but you can use |
| * this option to identify it manually. |
| * |
| * If desired, you can omit the previous map with prev: `false`. |
| */ |
| prev?: ((file: string) => string) | boolean | object | string |
| |
| /** |
| * Indicates that PostCSS should set the origin content (e.g., Sass source) |
| * of the source map. By default, it is true. But if all previous maps do not |
| * contain sources content, PostCSS will also leave it out even if you |
| * do not set this option. |
| */ |
| sourcesContent?: boolean |
| } |
| |
| export interface ProcessOptions<RootNode = Document | Root> { |
| /** |
| * Input file if it is not simple CSS file, but HTML with <style> or JS with CSS-in-JS blocks. |
| */ |
| document?: string |
| |
| /** |
| * The path of the CSS source file. You should always set `from`, |
| * because it is used in source map generation and syntax error messages. |
| */ |
| from?: string | undefined |
| |
| /** |
| * Source map options |
| */ |
| map?: boolean | SourceMapOptions |
| |
| /** |
| * Function to generate AST by string. |
| */ |
| parser?: Parser<RootNode> | Syntax<RootNode> |
| |
| /** |
| * Class to generate string by AST. |
| */ |
| stringifier?: Stringifier | Syntax<RootNode> |
| |
| /** |
| * Object with parse and stringify. |
| */ |
| syntax?: Syntax<RootNode> |
| |
| /** |
| * The path where you'll put the output CSS file. You should always set `to` |
| * to generate correct source maps. |
| */ |
| to?: string |
| } |
| |
| export type Postcss = typeof postcss |
| |
| /** |
| * Default function to convert a node tree into a CSS string. |
| */ |
| export let stringify: Stringifier |
| |
| /** |
| * Parses source css and returns a new `Root` or `Document` node, |
| * which contains the source CSS nodes. |
| * |
| * ```js |
| * // Simple CSS concatenation with source map support |
| * const root1 = postcss.parse(css1, { from: file1 }) |
| * const root2 = postcss.parse(css2, { from: file2 }) |
| * root1.append(root2).toResult().css |
| * ``` |
| */ |
| export let parse: Parser<Root> |
| |
| /** |
| * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes. |
| * |
| * ```js |
| * const json = root.toJSON() |
| * // save to file, send by network, etc |
| * const root2 = postcss.fromJSON(json) |
| * ``` |
| */ |
| export let fromJSON: JSONHydrator |
| |
| /** |
| * Creates a new `Comment` node. |
| * |
| * @param defaults Properties for the new node. |
| * @return New comment node |
| */ |
| export function comment(defaults?: CommentProps): Comment |
| |
| /** |
| * Creates a new `AtRule` node. |
| * |
| * @param defaults Properties for the new node. |
| * @return New at-rule node. |
| */ |
| export function atRule(defaults?: AtRuleProps): AtRule |
| |
| /** |
| * Creates a new `Declaration` node. |
| * |
| * @param defaults Properties for the new node. |
| * @return New declaration node. |
| */ |
| export function decl(defaults?: DeclarationProps): Declaration |
| |
| /** |
| * Creates a new `Rule` node. |
| * |
| * @param default Properties for the new node. |
| * @return New rule node. |
| */ |
| export function rule(defaults?: RuleProps): Rule |
| |
| /** |
| * Creates a new `Root` node. |
| * |
| * @param defaults Properties for the new node. |
| * @return New root node. |
| */ |
| export function root(defaults?: RootProps): Root |
| |
| /** |
| * Creates a new `Document` node. |
| * |
| * @param defaults Properties for the new node. |
| * @return New document node. |
| */ |
| export function document(defaults?: DocumentProps): Document |
| |
| export { postcss as default } |
| } |
| |
| /** |
| * Create a new `Processor` instance that will apply `plugins` |
| * as CSS processors. |
| * |
| * ```js |
| * let postcss = require('postcss') |
| * |
| * postcss(plugins).process(css, { from, to }).then(result => { |
| * console.log(result.css) |
| * }) |
| * ``` |
| * |
| * @param plugins PostCSS plugins. |
| * @return Processor to process multiple CSS. |
| */ |
| declare function postcss( |
| plugins?: readonly postcss.AcceptedPlugin[] |
| ): Processor |
| declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor |
| |
| export = postcss |