1 | import { RawSourceMap, SourceMapGenerator } from 'source-map-js'
|
2 |
|
3 | import AtRule, { AtRuleProps } from './at-rule.js'
|
4 | import Comment, { CommentProps } from './comment.js'
|
5 | import Container, { ContainerProps, NewChild } from './container.js'
|
6 | import CssSyntaxError from './css-syntax-error.js'
|
7 | import Declaration, { DeclarationProps } from './declaration.js'
|
8 | import Document, { DocumentProps } from './document.js'
|
9 | import Input, { FilePosition } from './input.js'
|
10 | import LazyResult from './lazy-result.js'
|
11 | import list from './list.js'
|
12 | import Node, {
|
13 | AnyNode,
|
14 | ChildNode,
|
15 | ChildProps,
|
16 | NodeErrorOptions,
|
17 | NodeProps,
|
18 | Position,
|
19 | Source
|
20 | } from './node.js'
|
21 | import Processor from './processor.js'
|
22 | import Result, { Message } from './result.js'
|
23 | import Root, { RootProps } from './root.js'
|
24 | import Rule, { RuleProps } from './rule.js'
|
25 | import Warning, { WarningOptions } from './warning.js'
|
26 |
|
27 | type DocumentProcessor = (
|
28 | document: Document,
|
29 | helper: postcss.Helpers
|
30 | ) => Promise<void> | void
|
31 | type RootProcessor = (
|
32 | root: Root,
|
33 | helper: postcss.Helpers
|
34 | ) => Promise<void> | void
|
35 | type DeclarationProcessor = (
|
36 | decl: Declaration,
|
37 | helper: postcss.Helpers
|
38 | ) => Promise<void> | void
|
39 | type RuleProcessor = (
|
40 | rule: Rule,
|
41 | helper: postcss.Helpers
|
42 | ) => Promise<void> | void
|
43 | type AtRuleProcessor = (
|
44 | atRule: AtRule,
|
45 | helper: postcss.Helpers
|
46 | ) => Promise<void> | void
|
47 | type CommentProcessor = (
|
48 | comment: Comment,
|
49 | helper: postcss.Helpers
|
50 | ) => Promise<void> | void
|
51 |
|
52 | interface Processors {
|
53 | |
54 |
|
55 |
|
56 |
|
57 |
|
58 | AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor
|
59 |
|
60 | |
61 |
|
62 |
|
63 |
|
64 |
|
65 | AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor
|
66 |
|
67 | |
68 |
|
69 |
|
70 |
|
71 |
|
72 | Comment?: CommentProcessor
|
73 |
|
74 | |
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 | CommentExit?: CommentProcessor
|
81 |
|
82 | |
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 | Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor
|
89 |
|
90 | |
91 |
|
92 |
|
93 |
|
94 |
|
95 | DeclarationExit?:
|
96 | | { [prop: string]: DeclarationProcessor }
|
97 | | DeclarationProcessor
|
98 |
|
99 | |
100 |
|
101 |
|
102 |
|
103 |
|
104 | Document?: DocumentProcessor
|
105 |
|
106 | |
107 |
|
108 |
|
109 |
|
110 |
|
111 | DocumentExit?: DocumentProcessor
|
112 |
|
113 | |
114 |
|
115 |
|
116 | Once?: RootProcessor
|
117 |
|
118 | |
119 |
|
120 |
|
121 | OnceExit?: RootProcessor
|
122 |
|
123 | |
124 |
|
125 |
|
126 |
|
127 |
|
128 | Root?: RootProcessor
|
129 |
|
130 | |
131 |
|
132 |
|
133 |
|
134 |
|
135 | RootExit?: RootProcessor
|
136 |
|
137 | |
138 |
|
139 |
|
140 |
|
141 |
|
142 | Rule?: RuleProcessor
|
143 |
|
144 | |
145 |
|
146 |
|
147 |
|
148 |
|
149 | RuleExit?: RuleProcessor
|
150 | }
|
151 |
|
152 | declare 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, '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 |
|
252 |
|
253 | parse?: Parser<RootNode>
|
254 |
|
255 | |
256 |
|
257 |
|
258 | stringify?: Stringifier
|
259 | }
|
260 |
|
261 | export interface SourceMapOptions {
|
262 | |
263 |
|
264 |
|
265 | absolute?: boolean
|
266 |
|
267 | |
268 |
|
269 |
|
270 |
|
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 |
|
277 |
|
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 | * The path of the CSS source file. You should always set `from`,
|
320 | * because it is used in source map generation and syntax error messages.
|
321 | */
|
322 | from?: string | undefined
|
323 |
|
324 | /**
|
325 | * Source map options
|
326 | */
|
327 | map?: boolean | SourceMapOptions
|
328 |
|
329 | /**
|
330 | * Function to generate AST by string.
|
331 | */
|
332 | parser?: Parser<RootNode> | Syntax<RootNode>
|
333 |
|
334 | /**
|
335 | * Class to generate string by AST.
|
336 | */
|
337 | stringifier?: Stringifier | Syntax<RootNode>
|
338 |
|
339 | /**
|
340 | * Object with parse and stringify.
|
341 | */
|
342 | syntax?: Syntax<RootNode>
|
343 |
|
344 | /**
|
345 | * The path where you'll put the output CSS file. You should always set `to`
|
346 | * to generate correct source maps.
|
347 | */
|
348 | to?: string
|
349 | }
|
350 |
|
351 | export type Postcss = typeof postcss
|
352 |
|
353 | /**
|
354 | * Default function to convert a node tree into a CSS string.
|
355 | */
|
356 | export let stringify: Stringifier
|
357 |
|
358 | /**
|
359 | * Parses source css and returns a new `Root` or `Document` node,
|
360 | * which contains the source CSS nodes.
|
361 | *
|
362 | * ```js
|
363 | * // Simple CSS concatenation with source map support
|
364 | * const root1 = postcss.parse(css1, { from: file1 })
|
365 | * const root2 = postcss.parse(css2, { from: file2 })
|
366 | * root1.append(root2).toResult().css
|
367 | * ```
|
368 | */
|
369 | export let parse: Parser<Root>
|
370 |
|
371 | /**
|
372 | * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes.
|
373 | *
|
374 | * ```js
|
375 | * const json = root.toJSON()
|
376 | * // save to file, send by network, etc
|
377 | * const root2 = postcss.fromJSON(json)
|
378 | * ```
|
379 | */
|
380 | export let fromJSON: JSONHydrator
|
381 |
|
382 | /**
|
383 | * Creates a new `Comment` node.
|
384 | *
|
385 | * @param defaults Properties for the new node.
|
386 | * @return New comment node
|
387 | */
|
388 | export function comment(defaults?: CommentProps): Comment
|
389 |
|
390 | /**
|
391 | * Creates a new `AtRule` node.
|
392 | *
|
393 | * @param defaults Properties for the new node.
|
394 | * @return New at-rule node.
|
395 | */
|
396 | export function atRule(defaults?: AtRuleProps): AtRule
|
397 |
|
398 | /**
|
399 | * Creates a new `Declaration` node.
|
400 | *
|
401 | * @param defaults Properties for the new node.
|
402 | * @return New declaration node.
|
403 | */
|
404 | export function decl(defaults?: DeclarationProps): Declaration
|
405 |
|
406 | /**
|
407 | * Creates a new `Rule` node.
|
408 | *
|
409 | * @param default Properties for the new node.
|
410 | * @return New rule node.
|
411 | */
|
412 | export function rule(defaults?: RuleProps): Rule
|
413 |
|
414 | /**
|
415 | * Creates a new `Root` node.
|
416 | *
|
417 | * @param defaults Properties for the new node.
|
418 | * @return New root node.
|
419 | */
|
420 | export function root(defaults?: RootProps): Root
|
421 |
|
422 | /**
|
423 | * Creates a new `Document` node.
|
424 | *
|
425 | * @param defaults Properties for the new node.
|
426 | * @return New document node.
|
427 | */
|
428 | export function document(defaults?: DocumentProps): Document
|
429 |
|
430 | export { postcss as default }
|
431 | }
|
432 |
|
433 | /**
|
434 | * Create a new `Processor` instance that will apply `plugins`
|
435 | * as CSS processors.
|
436 | *
|
437 | * ```js
|
438 | * let postcss = require('postcss')
|
439 | *
|
440 | * postcss(plugins).process(css, { from, to }).then(result => {
|
441 | * console.log(result.css)
|
442 | * })
|
443 | * ```
|
444 | *
|
445 | * @param plugins PostCSS plugins.
|
446 | * @return Processor to process multiple CSS.
|
447 | */
|
448 | declare function postcss(
|
449 | plugins?: readonly postcss.AcceptedPlugin[]
|
450 | ): Processor
|
451 | declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor
|
452 |
|
453 | export = postcss
|
454 |
|
\ | No newline at end of file |