source: node_modules/postcss/lib/postcss.d.ts@ 7deb3e2

Last change on this file since 7deb3e2 was 57e58a3, checked in by ste08 <sjovanoska@…>, 4 months ago

Initial commit

  • Property mode set to 100644
File size: 11.2 KB
Line 
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 Source
20} 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.Helpers
30) => Promise<void> | void
31type RootProcessor = (
32 root: Root,
33 helper: postcss.Helpers
34) => Promise<void> | void
35type DeclarationProcessor = (
36 decl: Declaration,
37 helper: postcss.Helpers
38) => Promise<void> | void
39type RuleProcessor = (
40 rule: Rule,
41 helper: postcss.Helpers
42) => Promise<void> | void
43type AtRuleProcessor = (
44 atRule: AtRule,
45 helper: postcss.Helpers
46) => Promise<void> | void
47type CommentProcessor = (
48 comment: Comment,
49 helper: postcss.Helpers
50) => Promise<void> | void
51
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 } | AtRuleProcessor
59
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 } | AtRuleProcessor
66
67 /**
68 * Will be called on all `Comment` nodes.
69 *
70 * Will be called again on node or children changes.
71 */
72 Comment?: CommentProcessor
73
74 /**
75 * Will be called on all `Comment` nodes after listeners
76 * for `Comment` event.
77 *
78 * Will be called again on node or children changes.
79 */
80 CommentExit?: CommentProcessor
81
82 /**
83 * Will be called on all `Declaration` nodes after listeners
84 * for `Declaration` event.
85 *
86 * Will be called again on node or children changes.
87 */
88 Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor
89
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 | DeclarationProcessor
98
99 /**
100 * Will be called on `Document` node.
101 *
102 * Will be called again on children changes.
103 */
104 Document?: DocumentProcessor
105
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?: DocumentProcessor
112
113 /**
114 * Will be called on `Root` node once.
115 */
116 Once?: RootProcessor
117
118 /**
119 * Will be called on `Root` node once, when all children will be processed.
120 */
121 OnceExit?: RootProcessor
122
123 /**
124 * Will be called on `Root` node.
125 *
126 * Will be called again on children changes.
127 */
128 Root?: RootProcessor
129
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?: RootProcessor
136
137 /**
138 * Will be called on all `Rule` nodes.
139 *
140 * Will be called again on node or children changes.
141 */
142 Rule?: RuleProcessor
143
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?: RuleProcessor
150}
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 WarningOptions
187 }
188
189 export type SourceMap = {
190 toJSON(): RawSourceMap
191 } & SourceMapGenerator
192
193 export type Helpers = { postcss: Postcss; result: Result } & Postcss
194
195 export interface Plugin extends Processors {
196 postcssPlugin: string
197 prepare?: (result: Result) => Processors
198 }
199
200 export interface PluginCreator<PluginOptions> {
201 (opts?: PluginOptions): Plugin | Processor
202 postcss: true
203 }
204
205 export interface Transformer extends TransformCallback {
206 postcssPlugin: string
207 postcssVersion: string
208 }
209
210 export interface TransformCallback {
211 (root: Root, result: Result): Promise<void> | void
212 }
213
214 export interface OldPlugin<T> extends Transformer {
215 (opts?: T): Transformer
216 postcss: Transformer
217 }
218
219 export type AcceptedPlugin =
220 | {
221 postcss: Processor | TransformCallback
222 }
223 | OldPlugin<any>
224 | Plugin
225 | PluginCreator<any>
226 | Processor
227 | TransformCallback
228
229 export interface Parser<RootNode = Document | Root> {
230 (
231 css: { toString(): string } | string,
232 opts?: Pick<ProcessOptions, 'document' | 'from' | 'map'>
233 ): RootNode
234 }
235
236 export interface Builder {
237 (part: string, node?: AnyNode, type?: 'end' | 'start'): void
238 }
239
240 export interface Stringifier {
241 (node: AnyNode, builder: Builder): void
242 }
243
244 export interface JSONHydrator {
245 (data: object): Node
246 (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?: Stringifier
259 }
260
261 export interface SourceMapOptions {
262 /**
263 * Use absolute path in generated source map.
264 */
265 absolute?: boolean
266
267 /**
268 * Indicates that PostCSS should add annotation comments to the CSS.
269 * By default, PostCSS will always add a comment with a path
270 * to the source map. PostCSS will not add annotations to CSS files
271 * that do not contain any comments.
272 *
273 * By default, PostCSS presumes that you want to save the source map as
274 * `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 | string
280
281 /**
282 * Override `from` in map’s sources.
283 */
284 from?: string
285
286 /**
287 * Indicates that the source map should be embedded in the output CSS
288 * as a Base64-encoded comment. By default, it is `true`.
289 * But if all previous maps are external, not inline, PostCSS will not embed
290 * 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?: boolean
296
297 /**
298 * Source map content from a previous processing step (e.g., Sass).
299 *
300 * PostCSS will try to read the previous source map
301 * automatically (based on comments within the source CSS), but you can use
302 * 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 | string
307
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 not
311 * contain sources content, PostCSS will also leave it out even if you
312 * do not set this option.
313 */
314 sourcesContent?: boolean
315 }
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?: string
322
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 | undefined
328
329 /**
330 * Source map options
331 */
332 map?: boolean | SourceMapOptions
333
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?: string
354 }
355
356 export type Postcss = typeof postcss
357
358 /**
359 * Default function to convert a node tree into a CSS string.
360 */
361 export let stringify: Stringifier
362
363 /**
364 * Parses source css and returns a new `Root` or `Document` node,
365 * which contains the source CSS nodes.
366 *
367 * ```js
368 * // Simple CSS concatenation with source map support
369 * const root1 = postcss.parse(css1, { from: file1 })
370 * const root2 = postcss.parse(css2, { from: file2 })
371 * root1.append(root2).toResult().css
372 * ```
373 */
374 export let parse: Parser<Root>
375
376 /**
377 * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes.
378 *
379 * ```js
380 * const json = root.toJSON()
381 * // save to file, send by network, etc
382 * const root2 = postcss.fromJSON(json)
383 * ```
384 */
385 export let fromJSON: JSONHydrator
386
387 /**
388 * Creates a new `Comment` node.
389 *
390 * @param defaults Properties for the new node.
391 * @return New comment node
392 */
393 export function comment(defaults?: CommentProps): Comment
394
395 /**
396 * Creates a new `AtRule` node.
397 *
398 * @param defaults Properties for the new node.
399 * @return New at-rule node.
400 */
401 export function atRule(defaults?: AtRuleProps): AtRule
402
403 /**
404 * Creates a new `Declaration` node.
405 *
406 * @param defaults Properties for the new node.
407 * @return New declaration node.
408 */
409 export function decl(defaults?: DeclarationProps): Declaration
410
411 /**
412 * Creates a new `Rule` node.
413 *
414 * @param default Properties for the new node.
415 * @return New rule node.
416 */
417 export function rule(defaults?: RuleProps): Rule
418
419 /**
420 * Creates a new `Root` node.
421 *
422 * @param defaults Properties for the new node.
423 * @return New root node.
424 */
425 export function root(defaults?: RootProps): Root
426
427 /**
428 * Creates a new `Document` node.
429 *
430 * @param defaults Properties for the new node.
431 * @return New document node.
432 */
433 export function document(defaults?: DocumentProps): Document
434
435 export { postcss as default }
436}
437
438/**
439 * Create a new `Processor` instance that will apply `plugins`
440 * as CSS processors.
441 *
442 * ```js
443 * let postcss = require('postcss')
444 *
445 * postcss(plugins).process(css, { from, to }).then(result => {
446 * console.log(result.css)
447 * })
448 * ```
449 *
450 * @param plugins PostCSS plugins.
451 * @return Processor to process multiple CSS.
452 */
453declare function postcss(
454 plugins?: readonly postcss.AcceptedPlugin[]
455): Processor
456declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor
457
458export = postcss
Note: See TracBrowser for help on using the repository browser.