UNPKG

42 kBTypeScriptView Raw
1import {CallableInstance} from './callable-instance.js'
2/**
3 * @template {Node | undefined} [ParseTree=undefined]
4 * Output of `parse` (optional).
5 * @template {Node | undefined} [HeadTree=undefined]
6 * Input for `run` (optional).
7 * @template {Node | undefined} [TailTree=undefined]
8 * Output for `run` (optional).
9 * @template {Node | undefined} [CompileTree=undefined]
10 * Input of `stringify` (optional).
11 * @template {CompileResults | undefined} [CompileResult=undefined]
12 * Output of `stringify` (optional).
13 * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}
14 */
15export class Processor<ParseTree extends import("unist").Node | undefined = undefined, HeadTree extends import("unist").Node | undefined = undefined, TailTree extends import("unist").Node | undefined = undefined, CompileTree extends import("unist").Node | undefined = undefined, CompileResult extends CompileResults | undefined = undefined> extends CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>> {
16 /**
17 * Create a processor.
18 */
19 constructor();
20 /**
21 * Compiler to use (deprecated).
22 *
23 * @deprecated
24 * Use `compiler` instead.
25 * @type {(
26 * Compiler<
27 * CompileTree extends undefined ? Node : CompileTree,
28 * CompileResult extends undefined ? CompileResults : CompileResult
29 * > |
30 * undefined
31 * )}
32 */
33 Compiler: (Compiler<CompileTree extends undefined ? Node : CompileTree, CompileResult extends undefined ? CompileResults : CompileResult> | undefined);
34 /**
35 * Parser to use (deprecated).
36 *
37 * @deprecated
38 * Use `parser` instead.
39 * @type {(
40 * Parser<ParseTree extends undefined ? Node : ParseTree> |
41 * undefined
42 * )}
43 */
44 Parser: (Parser<ParseTree extends undefined ? Node : ParseTree> | undefined);
45 /**
46 * Internal list of configured plugins.
47 *
48 * @deprecated
49 * This is a private internal property and should not be used.
50 * @type {Array<PluginTuple<Array<unknown>>>}
51 */
52 attachers: Array<[plugin: Plugin<unknown[], undefined, undefined>, ...parameters: unknown[]]>;
53 /**
54 * Compiler to use.
55 *
56 * @type {(
57 * Compiler<
58 * CompileTree extends undefined ? Node : CompileTree,
59 * CompileResult extends undefined ? CompileResults : CompileResult
60 * > |
61 * undefined
62 * )}
63 */
64 compiler: (Compiler<CompileTree extends undefined ? Node : CompileTree, CompileResult extends undefined ? CompileResults : CompileResult> | undefined);
65 /**
66 * Internal state to track where we are while freezing.
67 *
68 * @deprecated
69 * This is a private internal property and should not be used.
70 * @type {number}
71 */
72 freezeIndex: number;
73 /**
74 * Internal state to track whether we’re frozen.
75 *
76 * @deprecated
77 * This is a private internal property and should not be used.
78 * @type {boolean | undefined}
79 */
80 frozen: boolean | undefined;
81 /**
82 * Internal state.
83 *
84 * @deprecated
85 * This is a private internal property and should not be used.
86 * @type {Data}
87 */
88 namespace: Data;
89 /**
90 * Parser to use.
91 *
92 * @type {(
93 * Parser<ParseTree extends undefined ? Node : ParseTree> |
94 * undefined
95 * )}
96 */
97 parser: (Parser<ParseTree extends undefined ? Node : ParseTree> | undefined);
98 /**
99 * Internal list of configured transformers.
100 *
101 * @deprecated
102 * This is a private internal property and should not be used.
103 * @type {Pipeline}
104 */
105 transformers: Pipeline;
106 /**
107 * Copy a processor.
108 *
109 * @deprecated
110 * This is a private internal method and should not be used.
111 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
112 * New *unfrozen* processor ({@linkcode Processor}) that is
113 * configured to work the same as its ancestor.
114 * When the descendant processor is configured in the future it does not
115 * affect the ancestral processor.
116 */
117 copy(): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
118 /**
119 * Configure the processor with info available to all plugins.
120 * Information is stored in an object.
121 *
122 * Typically, options can be given to a specific plugin, but sometimes it
123 * makes sense to have information shared with several plugins.
124 * For example, a list of HTML elements that are self-closing, which is
125 * needed during all phases.
126 *
127 * > **Note**: setting information cannot occur on *frozen* processors.
128 * > Call the processor first to create a new unfrozen processor.
129 *
130 * > **Note**: to register custom data in TypeScript, augment the
131 * > {@linkcode Data} interface.
132 *
133 * @example
134 * This example show how to get and set info:
135 *
136 * ```js
137 * import {unified} from 'unified'
138 *
139 * const processor = unified().data('alpha', 'bravo')
140 *
141 * processor.data('alpha') // => 'bravo'
142 *
143 * processor.data() // => {alpha: 'bravo'}
144 *
145 * processor.data({charlie: 'delta'})
146 *
147 * processor.data() // => {charlie: 'delta'}
148 * ```
149 *
150 * @template {keyof Data} Key
151 *
152 * @overload
153 * @returns {Data}
154 *
155 * @overload
156 * @param {Data} dataset
157 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
158 *
159 * @overload
160 * @param {Key} key
161 * @returns {Data[Key]}
162 *
163 * @overload
164 * @param {Key} key
165 * @param {Data[Key]} value
166 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
167 *
168 * @param {Data | Key} [key]
169 * Key to get or set, or entire dataset to set, or nothing to get the
170 * entire dataset (optional).
171 * @param {Data[Key]} [value]
172 * Value to set (optional).
173 * @returns {unknown}
174 * The current processor when setting, the value at `key` when getting, or
175 * the entire dataset when getting without key.
176 */
177 data<Key extends keyof import("unified").Data>(): Data;
178 /**
179 * Configure the processor with info available to all plugins.
180 * Information is stored in an object.
181 *
182 * Typically, options can be given to a specific plugin, but sometimes it
183 * makes sense to have information shared with several plugins.
184 * For example, a list of HTML elements that are self-closing, which is
185 * needed during all phases.
186 *
187 * > **Note**: setting information cannot occur on *frozen* processors.
188 * > Call the processor first to create a new unfrozen processor.
189 *
190 * > **Note**: to register custom data in TypeScript, augment the
191 * > {@linkcode Data} interface.
192 *
193 * @example
194 * This example show how to get and set info:
195 *
196 * ```js
197 * import {unified} from 'unified'
198 *
199 * const processor = unified().data('alpha', 'bravo')
200 *
201 * processor.data('alpha') // => 'bravo'
202 *
203 * processor.data() // => {alpha: 'bravo'}
204 *
205 * processor.data({charlie: 'delta'})
206 *
207 * processor.data() // => {charlie: 'delta'}
208 * ```
209 *
210 * @template {keyof Data} Key
211 *
212 * @overload
213 * @returns {Data}
214 *
215 * @overload
216 * @param {Data} dataset
217 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
218 *
219 * @overload
220 * @param {Key} key
221 * @returns {Data[Key]}
222 *
223 * @overload
224 * @param {Key} key
225 * @param {Data[Key]} value
226 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
227 *
228 * @param {Data | Key} [key]
229 * Key to get or set, or entire dataset to set, or nothing to get the
230 * entire dataset (optional).
231 * @param {Data[Key]} [value]
232 * Value to set (optional).
233 * @returns {unknown}
234 * The current processor when setting, the value at `key` when getting, or
235 * the entire dataset when getting without key.
236 */
237 data<Key extends keyof import("unified").Data>(dataset: Data): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
238 /**
239 * Configure the processor with info available to all plugins.
240 * Information is stored in an object.
241 *
242 * Typically, options can be given to a specific plugin, but sometimes it
243 * makes sense to have information shared with several plugins.
244 * For example, a list of HTML elements that are self-closing, which is
245 * needed during all phases.
246 *
247 * > **Note**: setting information cannot occur on *frozen* processors.
248 * > Call the processor first to create a new unfrozen processor.
249 *
250 * > **Note**: to register custom data in TypeScript, augment the
251 * > {@linkcode Data} interface.
252 *
253 * @example
254 * This example show how to get and set info:
255 *
256 * ```js
257 * import {unified} from 'unified'
258 *
259 * const processor = unified().data('alpha', 'bravo')
260 *
261 * processor.data('alpha') // => 'bravo'
262 *
263 * processor.data() // => {alpha: 'bravo'}
264 *
265 * processor.data({charlie: 'delta'})
266 *
267 * processor.data() // => {charlie: 'delta'}
268 * ```
269 *
270 * @template {keyof Data} Key
271 *
272 * @overload
273 * @returns {Data}
274 *
275 * @overload
276 * @param {Data} dataset
277 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
278 *
279 * @overload
280 * @param {Key} key
281 * @returns {Data[Key]}
282 *
283 * @overload
284 * @param {Key} key
285 * @param {Data[Key]} value
286 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
287 *
288 * @param {Data | Key} [key]
289 * Key to get or set, or entire dataset to set, or nothing to get the
290 * entire dataset (optional).
291 * @param {Data[Key]} [value]
292 * Value to set (optional).
293 * @returns {unknown}
294 * The current processor when setting, the value at `key` when getting, or
295 * the entire dataset when getting without key.
296 */
297 data<Key extends keyof import("unified").Data>(key: Key): import("unified").Data[Key];
298 /**
299 * Configure the processor with info available to all plugins.
300 * Information is stored in an object.
301 *
302 * Typically, options can be given to a specific plugin, but sometimes it
303 * makes sense to have information shared with several plugins.
304 * For example, a list of HTML elements that are self-closing, which is
305 * needed during all phases.
306 *
307 * > **Note**: setting information cannot occur on *frozen* processors.
308 * > Call the processor first to create a new unfrozen processor.
309 *
310 * > **Note**: to register custom data in TypeScript, augment the
311 * > {@linkcode Data} interface.
312 *
313 * @example
314 * This example show how to get and set info:
315 *
316 * ```js
317 * import {unified} from 'unified'
318 *
319 * const processor = unified().data('alpha', 'bravo')
320 *
321 * processor.data('alpha') // => 'bravo'
322 *
323 * processor.data() // => {alpha: 'bravo'}
324 *
325 * processor.data({charlie: 'delta'})
326 *
327 * processor.data() // => {charlie: 'delta'}
328 * ```
329 *
330 * @template {keyof Data} Key
331 *
332 * @overload
333 * @returns {Data}
334 *
335 * @overload
336 * @param {Data} dataset
337 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
338 *
339 * @overload
340 * @param {Key} key
341 * @returns {Data[Key]}
342 *
343 * @overload
344 * @param {Key} key
345 * @param {Data[Key]} value
346 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
347 *
348 * @param {Data | Key} [key]
349 * Key to get or set, or entire dataset to set, or nothing to get the
350 * entire dataset (optional).
351 * @param {Data[Key]} [value]
352 * Value to set (optional).
353 * @returns {unknown}
354 * The current processor when setting, the value at `key` when getting, or
355 * the entire dataset when getting without key.
356 */
357 data<Key extends keyof import("unified").Data>(key: Key, value: import("unified").Data[Key]): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
358 /**
359 * Freeze a processor.
360 *
361 * Frozen processors are meant to be extended and not to be configured
362 * directly.
363 *
364 * When a processor is frozen it cannot be unfrozen.
365 * New processors working the same way can be created by calling the
366 * processor.
367 *
368 * It’s possible to freeze processors explicitly by calling `.freeze()`.
369 * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,
370 * `.stringify()`, `.process()`, or `.processSync()` are called.
371 *
372 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
373 * The current processor.
374 */
375 freeze(): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
376 /**
377 * Parse text to a syntax tree.
378 *
379 * > **Note**: `parse` freezes the processor if not already *frozen*.
380 *
381 * > **Note**: `parse` performs the parse phase, not the run phase or other
382 * > phases.
383 *
384 * @param {Compatible | undefined} [file]
385 * file to parse (optional); typically `string` or `VFile`; any value
386 * accepted as `x` in `new VFile(x)`.
387 * @returns {ParseTree extends undefined ? Node : ParseTree}
388 * Syntax tree representing `file`.
389 */
390 parse(file?: Compatible | undefined): ParseTree extends undefined ? Node : ParseTree;
391 /**
392 * Process the given file as configured on the processor.
393 *
394 * > **Note**: `process` freezes the processor if not already *frozen*.
395 *
396 * > **Note**: `process` performs the parse, run, and stringify phases.
397 *
398 * @overload
399 * @param {Compatible | undefined} file
400 * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done
401 * @returns {undefined}
402 *
403 * @overload
404 * @param {Compatible | undefined} [file]
405 * @returns {Promise<VFileWithOutput<CompileResult>>}
406 *
407 * @param {Compatible | undefined} [file]
408 * File (optional); typically `string` or `VFile`]; any value accepted as
409 * `x` in `new VFile(x)`.
410 * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]
411 * Callback (optional).
412 * @returns {Promise<VFile> | undefined}
413 * Nothing if `done` is given.
414 * Otherwise a promise, rejected with a fatal error or resolved with the
415 * processed file.
416 *
417 * The parsed, transformed, and compiled value is available at
418 * `file.value` (see note).
419 *
420 * > **Note**: unified typically compiles by serializing: most
421 * > compilers return `string` (or `Uint8Array`).
422 * > Some compilers, such as the one configured with
423 * > [`rehype-react`][rehype-react], return other values (in this case, a
424 * > React tree).
425 * > If you’re using a compiler that doesn’t serialize, expect different
426 * > result values.
427 * >
428 * > To register custom results in TypeScript, add them to
429 * > {@linkcode CompileResultMap}.
430 *
431 * [rehype-react]: https://github.com/rehypejs/rehype-react
432 */
433 process(file: Compatible | undefined, done: ProcessCallback<VFileWithOutput<CompileResult>>): undefined;
434 /**
435 * Process the given file as configured on the processor.
436 *
437 * > **Note**: `process` freezes the processor if not already *frozen*.
438 *
439 * > **Note**: `process` performs the parse, run, and stringify phases.
440 *
441 * @overload
442 * @param {Compatible | undefined} file
443 * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done
444 * @returns {undefined}
445 *
446 * @overload
447 * @param {Compatible | undefined} [file]
448 * @returns {Promise<VFileWithOutput<CompileResult>>}
449 *
450 * @param {Compatible | undefined} [file]
451 * File (optional); typically `string` or `VFile`]; any value accepted as
452 * `x` in `new VFile(x)`.
453 * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]
454 * Callback (optional).
455 * @returns {Promise<VFile> | undefined}
456 * Nothing if `done` is given.
457 * Otherwise a promise, rejected with a fatal error or resolved with the
458 * processed file.
459 *
460 * The parsed, transformed, and compiled value is available at
461 * `file.value` (see note).
462 *
463 * > **Note**: unified typically compiles by serializing: most
464 * > compilers return `string` (or `Uint8Array`).
465 * > Some compilers, such as the one configured with
466 * > [`rehype-react`][rehype-react], return other values (in this case, a
467 * > React tree).
468 * > If you’re using a compiler that doesn’t serialize, expect different
469 * > result values.
470 * >
471 * > To register custom results in TypeScript, add them to
472 * > {@linkcode CompileResultMap}.
473 *
474 * [rehype-react]: https://github.com/rehypejs/rehype-react
475 */
476 process(file?: Compatible | undefined): Promise<VFileWithOutput<CompileResult>>;
477 /**
478 * Process the given file as configured on the processor.
479 *
480 * An error is thrown if asynchronous transforms are configured.
481 *
482 * > **Note**: `processSync` freezes the processor if not already *frozen*.
483 *
484 * > **Note**: `processSync` performs the parse, run, and stringify phases.
485 *
486 * @param {Compatible | undefined} [file]
487 * File (optional); typically `string` or `VFile`; any value accepted as
488 * `x` in `new VFile(x)`.
489 * @returns {VFileWithOutput<CompileResult>}
490 * The processed file.
491 *
492 * The parsed, transformed, and compiled value is available at
493 * `file.value` (see note).
494 *
495 * > **Note**: unified typically compiles by serializing: most
496 * > compilers return `string` (or `Uint8Array`).
497 * > Some compilers, such as the one configured with
498 * > [`rehype-react`][rehype-react], return other values (in this case, a
499 * > React tree).
500 * > If you’re using a compiler that doesn’t serialize, expect different
501 * > result values.
502 * >
503 * > To register custom results in TypeScript, add them to
504 * > {@linkcode CompileResultMap}.
505 *
506 * [rehype-react]: https://github.com/rehypejs/rehype-react
507 */
508 processSync(file?: Compatible | undefined): VFileWithOutput<CompileResult>;
509 /**
510 * Run *transformers* on a syntax tree.
511 *
512 * > **Note**: `run` freezes the processor if not already *frozen*.
513 *
514 * > **Note**: `run` performs the run phase, not other phases.
515 *
516 * @overload
517 * @param {HeadTree extends undefined ? Node : HeadTree} tree
518 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
519 * @returns {undefined}
520 *
521 * @overload
522 * @param {HeadTree extends undefined ? Node : HeadTree} tree
523 * @param {Compatible | undefined} file
524 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
525 * @returns {undefined}
526 *
527 * @overload
528 * @param {HeadTree extends undefined ? Node : HeadTree} tree
529 * @param {Compatible | undefined} [file]
530 * @returns {Promise<TailTree extends undefined ? Node : TailTree>}
531 *
532 * @param {HeadTree extends undefined ? Node : HeadTree} tree
533 * Tree to transform and inspect.
534 * @param {(
535 * RunCallback<TailTree extends undefined ? Node : TailTree> |
536 * Compatible
537 * )} [file]
538 * File associated with `node` (optional); any value accepted as `x` in
539 * `new VFile(x)`.
540 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]
541 * Callback (optional).
542 * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}
543 * Nothing if `done` is given.
544 * Otherwise, a promise rejected with a fatal error or resolved with the
545 * transformed tree.
546 */
547 run(tree: HeadTree extends undefined ? Node : HeadTree, done: RunCallback<TailTree extends undefined ? Node : TailTree>): undefined;
548 /**
549 * Run *transformers* on a syntax tree.
550 *
551 * > **Note**: `run` freezes the processor if not already *frozen*.
552 *
553 * > **Note**: `run` performs the run phase, not other phases.
554 *
555 * @overload
556 * @param {HeadTree extends undefined ? Node : HeadTree} tree
557 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
558 * @returns {undefined}
559 *
560 * @overload
561 * @param {HeadTree extends undefined ? Node : HeadTree} tree
562 * @param {Compatible | undefined} file
563 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
564 * @returns {undefined}
565 *
566 * @overload
567 * @param {HeadTree extends undefined ? Node : HeadTree} tree
568 * @param {Compatible | undefined} [file]
569 * @returns {Promise<TailTree extends undefined ? Node : TailTree>}
570 *
571 * @param {HeadTree extends undefined ? Node : HeadTree} tree
572 * Tree to transform and inspect.
573 * @param {(
574 * RunCallback<TailTree extends undefined ? Node : TailTree> |
575 * Compatible
576 * )} [file]
577 * File associated with `node` (optional); any value accepted as `x` in
578 * `new VFile(x)`.
579 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]
580 * Callback (optional).
581 * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}
582 * Nothing if `done` is given.
583 * Otherwise, a promise rejected with a fatal error or resolved with the
584 * transformed tree.
585 */
586 run(tree: HeadTree extends undefined ? Node : HeadTree, file: Compatible | undefined, done: RunCallback<TailTree extends undefined ? Node : TailTree>): undefined;
587 /**
588 * Run *transformers* on a syntax tree.
589 *
590 * > **Note**: `run` freezes the processor if not already *frozen*.
591 *
592 * > **Note**: `run` performs the run phase, not other phases.
593 *
594 * @overload
595 * @param {HeadTree extends undefined ? Node : HeadTree} tree
596 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
597 * @returns {undefined}
598 *
599 * @overload
600 * @param {HeadTree extends undefined ? Node : HeadTree} tree
601 * @param {Compatible | undefined} file
602 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
603 * @returns {undefined}
604 *
605 * @overload
606 * @param {HeadTree extends undefined ? Node : HeadTree} tree
607 * @param {Compatible | undefined} [file]
608 * @returns {Promise<TailTree extends undefined ? Node : TailTree>}
609 *
610 * @param {HeadTree extends undefined ? Node : HeadTree} tree
611 * Tree to transform and inspect.
612 * @param {(
613 * RunCallback<TailTree extends undefined ? Node : TailTree> |
614 * Compatible
615 * )} [file]
616 * File associated with `node` (optional); any value accepted as `x` in
617 * `new VFile(x)`.
618 * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]
619 * Callback (optional).
620 * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}
621 * Nothing if `done` is given.
622 * Otherwise, a promise rejected with a fatal error or resolved with the
623 * transformed tree.
624 */
625 run(tree: HeadTree extends undefined ? Node : HeadTree, file?: Compatible | undefined): Promise<TailTree extends undefined ? Node : TailTree>;
626 /**
627 * Run *transformers* on a syntax tree.
628 *
629 * An error is thrown if asynchronous transforms are configured.
630 *
631 * > **Note**: `runSync` freezes the processor if not already *frozen*.
632 *
633 * > **Note**: `runSync` performs the run phase, not other phases.
634 *
635 * @param {HeadTree extends undefined ? Node : HeadTree} tree
636 * Tree to transform and inspect.
637 * @param {Compatible | undefined} [file]
638 * File associated with `node` (optional); any value accepted as `x` in
639 * `new VFile(x)`.
640 * @returns {TailTree extends undefined ? Node : TailTree}
641 * Transformed tree.
642 */
643 runSync(tree: HeadTree extends undefined ? Node : HeadTree, file?: Compatible | undefined): TailTree extends undefined ? Node : TailTree;
644 /**
645 * Compile a syntax tree.
646 *
647 * > **Note**: `stringify` freezes the processor if not already *frozen*.
648 *
649 * > **Note**: `stringify` performs the stringify phase, not the run phase
650 * > or other phases.
651 *
652 * @param {CompileTree extends undefined ? Node : CompileTree} tree
653 * Tree to compile.
654 * @param {Compatible | undefined} [file]
655 * File associated with `node` (optional); any value accepted as `x` in
656 * `new VFile(x)`.
657 * @returns {CompileResult extends undefined ? Value : CompileResult}
658 * Textual representation of the tree (see note).
659 *
660 * > **Note**: unified typically compiles by serializing: most compilers
661 * > return `string` (or `Uint8Array`).
662 * > Some compilers, such as the one configured with
663 * > [`rehype-react`][rehype-react], return other values (in this case, a
664 * > React tree).
665 * > If you’re using a compiler that doesn’t serialize, expect different
666 * > result values.
667 * >
668 * > To register custom results in TypeScript, add them to
669 * > {@linkcode CompileResultMap}.
670 *
671 * [rehype-react]: https://github.com/rehypejs/rehype-react
672 */
673 stringify(tree: CompileTree extends undefined ? Node : CompileTree, file?: Compatible | undefined): CompileResult extends undefined ? Value : CompileResult;
674 /**
675 * Configure the processor to use a plugin, a list of usable values, or a
676 * preset.
677 *
678 * If the processor is already using a plugin, the previous plugin
679 * configuration is changed based on the options that are passed in.
680 * In other words, the plugin is not added a second time.
681 *
682 * > **Note**: `use` cannot be called on *frozen* processors.
683 * > Call the processor first to create a new unfrozen processor.
684 *
685 * @example
686 * There are many ways to pass plugins to `.use()`.
687 * This example gives an overview:
688 *
689 * ```js
690 * import {unified} from 'unified'
691 *
692 * unified()
693 * // Plugin with options:
694 * .use(pluginA, {x: true, y: true})
695 * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):
696 * .use(pluginA, {y: false, z: true})
697 * // Plugins:
698 * .use([pluginB, pluginC])
699 * // Two plugins, the second with options:
700 * .use([pluginD, [pluginE, {}]])
701 * // Preset with plugins and settings:
702 * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})
703 * // Settings only:
704 * .use({settings: {position: false}})
705 * ```
706 *
707 * @template {Array<unknown>} [Parameters=[]]
708 * @template {Node | string | undefined} [Input=undefined]
709 * @template [Output=Input]
710 *
711 * @overload
712 * @param {Preset | null | undefined} [preset]
713 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
714 *
715 * @overload
716 * @param {PluggableList} list
717 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
718 *
719 * @overload
720 * @param {Plugin<Parameters, Input, Output>} plugin
721 * @param {...(Parameters | [boolean])} parameters
722 * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}
723 *
724 * @param {PluggableList | Plugin | Preset | null | undefined} value
725 * Usable value.
726 * @param {...unknown} parameters
727 * Parameters, when a plugin is given as a usable value.
728 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
729 * Current processor.
730 */
731 use<Parameters_1 extends unknown[] = [], Input extends string | import("unist").Node | undefined = undefined, Output = Input>(preset?: Preset | null | undefined): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
732 /**
733 * Configure the processor to use a plugin, a list of usable values, or a
734 * preset.
735 *
736 * If the processor is already using a plugin, the previous plugin
737 * configuration is changed based on the options that are passed in.
738 * In other words, the plugin is not added a second time.
739 *
740 * > **Note**: `use` cannot be called on *frozen* processors.
741 * > Call the processor first to create a new unfrozen processor.
742 *
743 * @example
744 * There are many ways to pass plugins to `.use()`.
745 * This example gives an overview:
746 *
747 * ```js
748 * import {unified} from 'unified'
749 *
750 * unified()
751 * // Plugin with options:
752 * .use(pluginA, {x: true, y: true})
753 * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):
754 * .use(pluginA, {y: false, z: true})
755 * // Plugins:
756 * .use([pluginB, pluginC])
757 * // Two plugins, the second with options:
758 * .use([pluginD, [pluginE, {}]])
759 * // Preset with plugins and settings:
760 * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})
761 * // Settings only:
762 * .use({settings: {position: false}})
763 * ```
764 *
765 * @template {Array<unknown>} [Parameters=[]]
766 * @template {Node | string | undefined} [Input=undefined]
767 * @template [Output=Input]
768 *
769 * @overload
770 * @param {Preset | null | undefined} [preset]
771 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
772 *
773 * @overload
774 * @param {PluggableList} list
775 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
776 *
777 * @overload
778 * @param {Plugin<Parameters, Input, Output>} plugin
779 * @param {...(Parameters | [boolean])} parameters
780 * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}
781 *
782 * @param {PluggableList | Plugin | Preset | null | undefined} value
783 * Usable value.
784 * @param {...unknown} parameters
785 * Parameters, when a plugin is given as a usable value.
786 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
787 * Current processor.
788 */
789 use<Parameters_1 extends unknown[] = [], Input extends string | import("unist").Node | undefined = undefined, Output = Input>(list: PluggableList): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
790 /**
791 * Configure the processor to use a plugin, a list of usable values, or a
792 * preset.
793 *
794 * If the processor is already using a plugin, the previous plugin
795 * configuration is changed based on the options that are passed in.
796 * In other words, the plugin is not added a second time.
797 *
798 * > **Note**: `use` cannot be called on *frozen* processors.
799 * > Call the processor first to create a new unfrozen processor.
800 *
801 * @example
802 * There are many ways to pass plugins to `.use()`.
803 * This example gives an overview:
804 *
805 * ```js
806 * import {unified} from 'unified'
807 *
808 * unified()
809 * // Plugin with options:
810 * .use(pluginA, {x: true, y: true})
811 * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):
812 * .use(pluginA, {y: false, z: true})
813 * // Plugins:
814 * .use([pluginB, pluginC])
815 * // Two plugins, the second with options:
816 * .use([pluginD, [pluginE, {}]])
817 * // Preset with plugins and settings:
818 * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})
819 * // Settings only:
820 * .use({settings: {position: false}})
821 * ```
822 *
823 * @template {Array<unknown>} [Parameters=[]]
824 * @template {Node | string | undefined} [Input=undefined]
825 * @template [Output=Input]
826 *
827 * @overload
828 * @param {Preset | null | undefined} [preset]
829 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
830 *
831 * @overload
832 * @param {PluggableList} list
833 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
834 *
835 * @overload
836 * @param {Plugin<Parameters, Input, Output>} plugin
837 * @param {...(Parameters | [boolean])} parameters
838 * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}
839 *
840 * @param {PluggableList | Plugin | Preset | null | undefined} value
841 * Usable value.
842 * @param {...unknown} parameters
843 * Parameters, when a plugin is given as a usable value.
844 * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
845 * Current processor.
846 */
847 use<Parameters_1 extends unknown[] = [], Input extends string | import("unist").Node | undefined = undefined, Output = Input>(plugin: Plugin<Parameters_1, Input, Output>, ...parameters: Parameters_1 | [boolean]): UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>;
848}
849/**
850 * Create a new processor.
851 *
852 * @example
853 * This example shows how a new processor can be created (from `remark`) and linked
854 * to **stdin**(4) and **stdout**(4).
855 *
856 * ```js
857 * import process from 'node:process'
858 * import concatStream from 'concat-stream'
859 * import {remark} from 'remark'
860 *
861 * process.stdin.pipe(
862 * concatStream(function (buf) {
863 * process.stdout.write(String(remark().processSync(buf)))
864 * })
865 * )
866 * ```
867 *
868 * @returns
869 * New *unfrozen* processor (`processor`).
870 *
871 * This processor is configured to work the same as its ancestor.
872 * When the descendant processor is configured in the future it does not
873 * affect the ancestral processor.
874 */
875export const unified: Processor<undefined, undefined, undefined, undefined, undefined>;
876export type Pipeline = import('trough').Pipeline;
877export type Node = import('unist').Node;
878export type Compatible = import('vfile').Compatible;
879export type Value = import('vfile').Value;
880export type CompileResultMap = import('../index.js').CompileResultMap;
881export type Data = import('../index.js').Data;
882export type Settings = import('../index.js').Settings;
883/**
884 * Acceptable results from compilers.
885 *
886 * To register custom results, add them to
887 * {@linkcode CompileResultMap }.
888 */
889export type CompileResults = CompileResultMap[keyof CompileResultMap];
890/**
891 * A **compiler** handles the compiling of a syntax tree to something else
892 * (in most cases, text) (TypeScript type).
893 *
894 * It is used in the stringify phase and called with a {@linkcode Node }
895 * and {@linkcode VFile } representation of the document to compile.
896 * It should return the textual representation of the given tree (typically
897 * `string`).
898 *
899 * > **Note**: unified typically compiles by serializing: most compilers
900 * > return `string` (or `Uint8Array`).
901 * > Some compilers, such as the one configured with
902 * > [`rehype-react`][rehype-react], return other values (in this case, a
903 * > React tree).
904 * > If you’re using a compiler that doesn’t serialize, expect different
905 * > result values.
906 * >
907 * > To register custom results in TypeScript, add them to
908 * > {@linkcode CompileResultMap }.
909 *
910 * [rehype-react]: https://github.com/rehypejs/rehype-react
911 */
912export type Compiler<Tree extends import("unist").Node = import("unist").Node, Result extends CompileResults = CompileResults> = (tree: Tree, file: VFile) => Result;
913/**
914 * A **parser** handles the parsing of text to a syntax tree.
915 *
916 * It is used in the parse phase and is called with a `string` and
917 * {@linkcode VFile } of the document to parse.
918 * It must return the syntax tree representation of the given file
919 * ({@linkcode Node }).
920 */
921export type Parser<Tree extends import("unist").Node = import("unist").Node> = (document: string, file: VFile) => Tree;
922/**
923 * Union of the different ways to add plugins and settings.
924 */
925export type Pluggable = (Plugin<Array<any>, any, any> | PluginTuple<Array<any>, any, any> | Preset);
926/**
927 * List of plugins and presets.
928 */
929export type PluggableList = Array<Pluggable>;
930/**
931 * Single plugin.
932 *
933 * Plugins configure the processors they are applied on in the following
934 * ways:
935 *
936 * * they change the processor, such as the parser, the compiler, or by
937 * configuring data
938 * * they specify how to handle trees and files
939 *
940 * In practice, they are functions that can receive options and configure the
941 * processor (`this`).
942 *
943 * > **Note**: plugins are called when the processor is *frozen*, not when
944 * > they are applied.
945 */
946export type Plugin<PluginParameters extends unknown[] = [], Input extends string | import("unist").Node | undefined = import("unist").Node, Output = Input> = ((this: Processor, ...parameters: PluginParameters) => Input extends string ? Output extends Node | undefined ? undefined | void : never : Output extends CompileResults ? Input extends Node | undefined ? undefined | void : never : Transformer<Input extends Node ? Input : Node, Output extends Node ? Output : Node> | undefined | void);
947/**
948 * Tuple of a plugin and its configuration.
949 *
950 * The first item is a plugin, the rest are its parameters.
951 */
952export type PluginTuple<TupleParameters extends unknown[] = [], Input extends string | import("unist").Node | undefined = undefined, Output = undefined> = ([
953 plugin: Plugin<TupleParameters, Input, Output>,
954 ...parameters: TupleParameters
955]);
956/**
957 * Sharable configuration.
958 *
959 * They can contain plugins and settings.
960 */
961export type Preset = {
962 /**
963 * List of plugins and presets (optional).
964 */
965 plugins?: PluggableList | undefined;
966 /**
967 * Shared settings for parsers and compilers (optional).
968 */
969 settings?: Settings | undefined;
970};
971/**
972 * Callback called when the process is done.
973 *
974 * Called with either an error or a result.
975 */
976export type ProcessCallback<File extends VFile = VFile> = (error?: Error | undefined, file?: File | undefined) => undefined;
977/**
978 * Callback called when transformers are done.
979 *
980 * Called with either an error or results.
981 */
982export type RunCallback<Tree extends import("unist").Node = import("unist").Node> = (error?: Error | undefined, tree?: Tree | undefined, file?: VFile | undefined) => undefined;
983/**
984 * Callback passed to transforms.
985 *
986 * If the signature of a `transformer` accepts a third argument, the
987 * transformer may perform asynchronous operations, and must call it.
988 */
989export type TransformCallback<Output extends import("unist").Node = import("unist").Node> = (error?: Error | undefined, tree?: Output | undefined, file?: VFile | undefined) => undefined;
990/**
991 * Transformers handle syntax trees and files.
992 *
993 * They are functions that are called each time a syntax tree and file are
994 * passed through the run phase.
995 * When an error occurs in them (either because it’s thrown, returned,
996 * rejected, or passed to `next`), the process stops.
997 *
998 * The run phase is handled by [`trough`][trough], see its documentation for
999 * the exact semantics of these functions.
1000 *
1001 * > **Note**: you should likely ignore `next`: don’t accept it.
1002 * > it supports callback-style async work.
1003 * > But promises are likely easier to reason about.
1004 *
1005 * [trough]: https://github.com/wooorm/trough#function-fninput-next
1006 */
1007export type Transformer<Input extends import("unist").Node = import("unist").Node, Output extends import("unist").Node = Input> = (tree: Input, file: VFile, next: TransformCallback<Output>) => (Promise<Output | undefined | void> | Promise<never> | // For some reason this is needed separately.
1008Output | Error | undefined | void);
1009/**
1010 * Create a processor based on the input/output of a {@link Plugin plugin}.
1011 */
1012export type UsePlugin<ParseTree extends import("unist").Node | undefined, HeadTree extends import("unist").Node | undefined, TailTree extends import("unist").Node | undefined, CompileTree extends import("unist").Node | undefined, CompileResult extends CompileResults | undefined, Input extends string | import("unist").Node | undefined, Output> = (Input extends string ? Output extends Node | undefined ? Processor<Output extends undefined ? ParseTree : Output, HeadTree, TailTree, CompileTree, CompileResult> : Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> : Output extends CompileResults ? Input extends Node | undefined ? Processor<ParseTree, HeadTree, TailTree, Input extends undefined ? CompileTree : Input, Output extends undefined ? CompileResult : Output> : Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> : Input extends Node | undefined ? Output extends Node | undefined ? Processor<ParseTree, HeadTree extends undefined ? Input : HeadTree, Output extends undefined ? TailTree : Output, CompileTree, CompileResult> : Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> : Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>);
1013/**
1014 * Type to generate a {@linkcode VFile } corresponding to a compiler result.
1015 *
1016 * If a result that is not acceptable on a `VFile` is used, that will
1017 * be stored on the `result` field of {@linkcode VFile }.
1018 */
1019export type VFileWithOutput<Result extends CompileResults | undefined> = (Result extends Value | undefined ? VFile : VFile & {
1020 result: Result;
1021});
1022import { VFile } from 'vfile';
1023export {};
1024//# sourceMappingURL=index.d.ts.map
\No newline at end of file