AK-21/Graphite-Industrial-Intelligence
0
1import { RawSourceMap, SourceMapGenerator } from 'source-map-js'2 3import AtRule, { AtRuleProps } from './at-rule.js'4import Comment, { CommentProps } from './comment.js'5import Container, { ContainerProps, NewChild } from './container.js'6import CssSyntaxError from './css-syntax-error.js'7import Declaration, { DeclarationProps } from './declaration.js'8import Document, { DocumentProps } from './document.js'9import Input, { FilePosition } from './input.js'10import LazyResult from './lazy-result.js'11import list from './list.js'12import Node, {13 AnyNode,14 ChildNode,15 ChildProps,16 NodeErrorOptions,17 NodeProps,18 Position,19 Source20} from './node.js'21import Processor from './processor.js'22import Result, { Message } from './result.js'23import Root, { RootProps } from './root.js'24import Rule, { RuleProps } from './rule.js'25import Warning, { WarningOptions } from './warning.js'26 27type DocumentProcessor = (28 document: Document,29 helper: postcss.Helpers30) => Promise<void> | void31type RootProcessor = (32 root: Root,33 helper: postcss.Helpers34) => Promise<void> | void35type DeclarationProcessor = (36 decl: Declaration,37 helper: postcss.Helpers38) => Promise<void> | void39type RuleProcessor = (40 rule: Rule,41 helper: postcss.Helpers42) => Promise<void> | void43type AtRuleProcessor = (44 atRule: AtRule,45 helper: postcss.Helpers46) => Promise<void> | void47type CommentProcessor = (48 comment: Comment,49 helper: postcss.Helpers50) => Promise<void> | void51 52interface Processors {53 /**54 * Will be called on all`AtRule` nodes.55 *56 * Will be called again on node or children changes.57 */58 AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor59 60 /**61 * Will be called on all `AtRule` nodes, when all children will be processed.62 *63 * Will be called again on node or children changes.64 */65 AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor66 67 /**68 * Will be called on all `Comment` nodes.69 *70 * Will be called again on node or children changes.71 */72 Comment?: CommentProcessor73 74 /**75 * Will be called on all `Comment` nodes after listeners76 * for `Comment` event.77 *78 * Will be called again on node or children changes.79 */80 CommentExit?: CommentProcessor81 82 /**83 * Will be called on all `Declaration` nodes after listeners84 * for `Declaration` event.85 *86 * Will be called again on node or children changes.87 */88 Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor89 90 /**91 * Will be called on all `Declaration` nodes.92 *93 * Will be called again on node or children changes.94 */95 DeclarationExit?:96 | { [prop: string]: DeclarationProcessor }97 | DeclarationProcessor98 99 /**100 * Will be called on `Document` node.101 *102 * Will be called again on children changes.103 */104 Document?: DocumentProcessor105 106 /**107 * Will be called on `Document` node, when all children will be processed.108 *109 * Will be called again on children changes.110 */111 DocumentExit?: DocumentProcessor112 113 /**114 * Will be called on `Root` node once.115 */116 Once?: RootProcessor117 118 /**119 * Will be called on `Root` node once, when all children will be processed.120 */121 OnceExit?: RootProcessor122 123 /**124 * Will be called on `Root` node.125 *126 * Will be called again on children changes.127 */128 Root?: RootProcessor129 130 /**131 * Will be called on `Root` node, when all children will be processed.132 *133 * Will be called again on children changes.134 */135 RootExit?: RootProcessor136 137 /**138 * Will be called on all `Rule` nodes.139 *140 * Will be called again on node or children changes.141 */142 Rule?: RuleProcessor143 144 /**145 * Will be called on all `Rule` nodes, when all children will be processed.146 *147 * Will be called again on node or children changes.148 */149 RuleExit?: RuleProcessor150}151 152declare namespace postcss {153 export {154 AnyNode,155 AtRule,156 AtRuleProps,157 ChildNode,158 ChildProps,159 Comment,160 CommentProps,161 Container,162 ContainerProps,163 CssSyntaxError,164 Declaration,165 DeclarationProps,166 Document,167 DocumentProps,168 FilePosition,169 Input,170 LazyResult,171 list,172 Message,173 NewChild,174 Node,175 NodeErrorOptions,176 NodeProps,177 Position,178 Processor,179 Result,180 Root,181 RootProps,182 Rule,183 RuleProps,184 Source,185 Warning,186 WarningOptions187 }188 189 export type SourceMap = {190 toJSON(): RawSourceMap191 } & SourceMapGenerator192 193 export type Helpers = { postcss: Postcss; result: Result } & Postcss194 195 export interface Plugin extends Processors {196 postcssPlugin: string197 prepare?: (result: Result) => Processors198 }199 200 export interface PluginCreator<PluginOptions> {201 (opts?: PluginOptions): Plugin | Processor202 postcss: true203 }204 205 export interface Transformer extends TransformCallback {206 postcssPlugin: string207 postcssVersion: string208 }209 210 export interface TransformCallback {211 (root: Root, result: Result): Promise<void> | void212 }213 214 export interface OldPlugin<T> extends Transformer {215 (opts?: T): Transformer216 postcss: Transformer217 }218 219 export type AcceptedPlugin =220 | {221 postcss: Processor | TransformCallback222 }223 | OldPlugin<any>224 | Plugin225 | PluginCreator<any>226 | Processor227 | TransformCallback228 229 export interface Parser<RootNode = Document | Root> {230 (231 css: { toString(): string } | string,232 opts?: Pick<ProcessOptions, 'document' | 'from' | 'map'>233 ): RootNode234 }235 236 export interface Builder {237 (part: string, node?: AnyNode, type?: 'end' | 'start'): void238 }239 240 export interface Stringifier {241 (node: AnyNode, builder: Builder): void242 }243 244 export interface JSONHydrator {245 (data: object): Node246 (data: object[]): Node[]247 }248 249 export interface Syntax<RootNode = Document | Root> {250 /**251 * Function to generate AST by string.252 */253 parse?: Parser<RootNode>254 255 /**256 * Class to generate string by AST.257 */258 stringify?: Stringifier259 }260 261 export interface SourceMapOptions {262 /**263 * Use absolute path in generated source map.264 */265 absolute?: boolean266 267 /**268 * Indicates that PostCSS should add annotation comments to the CSS.269 * By default, PostCSS will always add a comment with a path270 * to the source map. PostCSS will not add annotations to CSS files271 * that do not contain any comments.272 *273 * By default, PostCSS presumes that you want to save the source map as274 * `opts.to + '.map'` and will use this path in the annotation comment.275 * A different path can be set by providing a string value for annotation.276 *277 * If you have set `inline: true`, annotation cannot be disabled.278 */279 annotation?: ((file: string, root: Root) => string) | boolean | string280 281 /**282 * Override `from` in map’s sources.283 */284 from?: string285 286 /**287 * Indicates that the source map should be embedded in the output CSS288 * as a Base64-encoded comment. By default, it is `true`.289 * But if all previous maps are external, not inline, PostCSS will not embed290 * the map even if you do not set this option.291 *292 * If you have an inline source map, the result.map property will be empty,293 * as the source map will be contained within the text of `result.css`.294 */295 inline?: boolean296 297 /**298 * Source map content from a previous processing step (e.g., Sass).299 *300 * PostCSS will try to read the previous source map301 * automatically (based on comments within the source CSS), but you can use302 * this option to identify it manually.303 *304 * If desired, you can omit the previous map with prev: `false`.305 */306 prev?: ((file: string) => string) | boolean | object | string307 308 /**309 * Indicates that PostCSS should set the origin content (e.g., Sass source)310 * of the source map. By default, it is true. But if all previous maps do not311 * contain sources content, PostCSS will also leave it out even if you312 * do not set this option.313 */314 sourcesContent?: boolean315 }316 317 export interface ProcessOptions<RootNode = Document | Root> {318 /**319 * Input file if it is not simple CSS file, but HTML with <style> or JS with CSS-in-JS blocks.320 */321 document?: string322 323 /**324 * The path of the CSS source file. You should always set `from`,325 * because it is used in source map generation and syntax error messages.326 */327 from?: string | undefined328 329 /**330 * Source map options331 */332 map?: boolean | SourceMapOptions333 334 /**335 * Function to generate AST by string.336 */337 parser?: Parser<RootNode> | Syntax<RootNode>338 339 /**340 * Class to generate string by AST.341 */342 stringifier?: Stringifier | Syntax<RootNode>343 344 /**345 * Object with parse and stringify.346 */347 syntax?: Syntax<RootNode>348 349 /**350 * The path where you'll put the output CSS file. You should always set `to`351 * to generate correct source maps.352 */353 to?: string354 355 /**356 * Disable source map file protections.357 */358 unsafeMap?: boolean359 }360 361 export type Postcss = typeof postcss362 363 /**364 * Default function to convert a node tree into a CSS string.365 */366 export let stringify: Stringifier367 368 /**369 * Parses source css and returns a new `Root` or `Document` node,370 * which contains the source CSS nodes.371 *372 * ```js373 * // Simple CSS concatenation with source map support374 * const root1 = postcss.parse(css1, { from: file1 })375 * const root2 = postcss.parse(css2, { from: file2 })376 * root1.append(root2).toResult().css377 * ```378 */379 export let parse: Parser<Root>380 381 /**382 * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes.383 *384 * ```js385 * const json = root.toJSON()386 * // save to file, send by network, etc387 * const root2 = postcss.fromJSON(json)388 * ```389 */390 export let fromJSON: JSONHydrator391 392 /**393 * Creates a new `Comment` node.394 *395 * @param defaults Properties for the new node.396 * @return New comment node397 */398 export function comment(defaults?: CommentProps): Comment399 400 /**401 * Creates a new `AtRule` node.402 *403 * @param defaults Properties for the new node.404 * @return New at-rule node.405 */406 export function atRule(defaults?: AtRuleProps): AtRule407 408 /**409 * Creates a new `Declaration` node.410 *411 * @param defaults Properties for the new node.412 * @return New declaration node.413 */414 export function decl(defaults?: DeclarationProps): Declaration415 416 /**417 * Creates a new `Rule` node.418 *419 * @param default Properties for the new node.420 * @return New rule node.421 */422 export function rule(defaults?: RuleProps): Rule423 424 /**425 * Creates a new `Root` node.426 *427 * @param defaults Properties for the new node.428 * @return New root node.429 */430 export function root(defaults?: RootProps): Root431 432 /**433 * Creates a new `Document` node.434 *435 * @param defaults Properties for the new node.436 * @return New document node.437 */438 export function document(defaults?: DocumentProps): Document439 440 export { postcss as default }441}442 443/**444 * Create a new `Processor` instance that will apply `plugins`445 * as CSS processors.446 *447 * ```js448 * let postcss = require('postcss')449 *450 * postcss(plugins).process(css, { from, to }).then(result => {451 * console.log(result.css)452 * })453 * ```454 *455 * @param plugins PostCSS plugins.456 * @return Processor to process multiple CSS.457 */458declare function postcss(plugins?: readonly postcss.AcceptedPlugin[]): Processor459declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor460 461export = postcss462 