UNPKG

23.5 kBTypeScriptView Raw
1// Type definitions for svgo 2.6
2// Project: https://github.com/svg/svgo
3// Definitions by: Bradley Ayers <https://github.com/bradleyayers>
4// Gilad Gray <https://github.com/giladgray>
5// Aankhen <https://github.com/Aankhen>
6// Jan Karres <https://github.com/jankarres>
7// Gavin Gregory <https://github.com/gavingregory>
8// Piotr Błażejewicz <https://github.com/peterblazejewicz>
9// Remco Haszing <https://github.com/remcohaszing>
10// Petr Zahradník <https://github.com/petrzjunior>
11// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
12
13/// <reference types="node"/>
14
15export interface DefaultPlugin<N extends string, P = never> {
16 active?: boolean | undefined;
17 name: N;
18 params?: P | undefined;
19}
20
21/**
22 * adds attributes to an outer <svg> element
23 */
24export type AddAttributesToSVGElementPlugin = DefaultPlugin<
25 'addAttributesToSVGElement',
26 { attribute: string | Record<string, null | string> } | { attributes: Array<string | Record<string, null | string>> }
27>;
28
29/**
30 * adds classnames to an outer <svg> element
31 */
32export type AddClassesToSVGElementPlugin = DefaultPlugin<
33 'addClassesToSVGElement',
34 { className: string; classNames?: never; } | { className?: never; classNames: string[]; }
35>;
36
37/**
38 * cleanups attributes from newlines, trailing and repeating spaces
39 */
40export type CleanupAttrsPlugin = DefaultPlugin<
41 'cleanupAttrs',
42 {
43 /** @default true */
44 newlines?: boolean | undefined;
45 /** @default true */
46 trim?: boolean | undefined;
47 /** @default true */
48 spaces?: boolean | undefined;
49 }
50>;
51
52/**
53 * remove or cleanup enable-background attribute when possible
54 */
55export type CleanupEnableBackgroundPlugin = DefaultPlugin<'cleanupEnableBackground'>;
56
57/**
58 * removes unused IDs and minifies used
59 */
60export type CleanupIDsPlugin = DefaultPlugin<
61 'cleanupIDs',
62 {
63 /** @default true */
64 remove?: boolean | undefined;
65 /** @default true */
66 minify?: boolean | undefined;
67 /** @default '' */
68 prefix?: string | undefined;
69 /** @default [] */
70 preserve?: any[] | undefined;
71 /** @default [] */
72 preservePrefixes?: any[] | undefined;
73 /** @default false */
74 force?: boolean | undefined;
75 }
76>;
77
78/**
79 * rounds list of values to the fixed precision
80 */
81export type CleanupListOfValuesPlugin = DefaultPlugin<
82 'cleanupListOfValues',
83 {
84 /** @default 3 */
85 floatPrecision?: number | undefined;
86 /** @default true */
87 leadingZero?: boolean | undefined;
88 /** @default true */
89 defaultPx?: boolean | undefined;
90 /** @default true */
91 convertToPx?: boolean | undefined;
92 }
93>;
94
95/**
96 * rounds numeric values to the fixed precision, removes default ‘px’ units
97 */
98export type CleanupNumericValuesPlugin = DefaultPlugin<
99 'cleanupNumericValues',
100 {
101 /** @default 3 */
102 floatPrecision?: number | undefined;
103 /** @default true */
104 leadingZero?: boolean | undefined;
105 /** @default true */
106 defaultPx?: boolean | undefined;
107 /** @default true */
108 convertToPx?: boolean | undefined;
109 }
110>;
111
112/**
113 * collapses useless groups
114 */
115export type CollapseGroupsPlugin = DefaultPlugin<'collapseGroups'>;
116
117/**
118 * converts colors: rgb() to #rrggbb and #rrggbb to #rgb
119 */
120export type ConvertColorsPlugin = DefaultPlugin<
121 'convertColors',
122 {
123 /** @default false */
124 currentColor?: boolean | undefined;
125 /** @default true */
126 names2hex?: boolean | undefined;
127 /** @default true */
128 rgb2hex?: boolean | undefined;
129 /** @default true */
130 shorthex?: boolean | undefined;
131 /** @default true */
132 shortname?: boolean | undefined;
133 }
134>;
135
136/**
137 * converts non-eccentric <ellipse>s to <circle>s
138 */
139export type ConvertEllipseToCirclePlugin = DefaultPlugin<'convertEllipseToCircle'>;
140
141/**
142 * optimizes path data: writes in shorter form, applies transformations
143 */
144export type ConvertPathDataPlugin = DefaultPlugin<
145 'convertPathData',
146 {
147 /** @default true */
148 applyTransforms?: boolean | undefined;
149 /** @default true */
150 applyTransformsStroked?: boolean | undefined;
151 makeArcs?:
152 | {
153 /** @default 2.5 */
154 threshold?: number | undefined;
155 /** @default 0.5 */
156 tolerance?: number | undefined;
157 }
158 | undefined;
159 /** @default true */
160 straightCurves?: boolean | undefined;
161 /** @default true */
162 lineShorthands?: boolean | undefined;
163 /** @default true */
164 curveSmoothShorthands?: boolean | undefined;
165 /** @default 3 */
166 floatPrecision?: number | undefined;
167 /** @default 5 */
168 transformPrecision?: number | undefined;
169 /** @default true */
170 removeUseless?: boolean | undefined;
171 /** @default true */
172 collapseRepeated?: boolean | undefined;
173 /** @default true */
174 utilizeAbsolute?: boolean | undefined;
175 /** @default true */
176 leadingZero?: boolean | undefined;
177 /** @default true */
178 negativeExtraSpace?: boolean | undefined;
179 /** @default false */
180 noSpaceAfterFlags?: boolean | undefined;
181 /** @default false */
182 forceAbsolutePath?: boolean | undefined;
183 }
184>;
185
186/**
187 * converts basic shapes to more compact path form
188 */
189export type ConvertShapeToPathPlugin = DefaultPlugin<
190 'convertShapeToPath',
191 {
192 /** @default false */
193 convertArcs?: boolean | undefined;
194 }
195>;
196
197/**
198 * converts style to attributes
199 */
200export type ConvertStyleToAttrsPlugin = DefaultPlugin<
201 'convertStyleToAttrs',
202 {
203 /** @default false */
204 keepImportant?: boolean | undefined;
205 }
206>;
207
208/**
209 * collapses multiple transformations and optimizes it
210 */
211export type ConvertTransformPlugin = DefaultPlugin<
212 'convertTransform',
213 {
214 /** @default true */
215 convertToShorts?: boolean | undefined;
216 /** @default 3 */
217 floatPrecision?: number | undefined;
218 /** @default 5 */
219 transformPrecision?: number | undefined;
220 /** @default true */
221 matrixToTransform?: boolean | undefined;
222 /** @default true */
223 shortTranslate?: boolean | undefined;
224 /** @default true */
225 shortScale?: boolean | undefined;
226 /** @default true */
227 shortRotate?: boolean | undefined;
228 /** @default true */
229 removeUseless?: boolean | undefined;
230 /** @default true */
231 collapseIntoOne?: boolean | undefined;
232 /** @default true */
233 leadingZero?: boolean | undefined;
234 /** @default false */
235 negativeExtraSpace?: boolean | undefined;
236 }
237>;
238
239/**
240 * inline styles (additional options)
241 */
242export type InlineStylesPlugin = DefaultPlugin<
243 'inlineStyles',
244 {
245 /** @default true */
246 onlyMatchedOnce?: boolean | undefined;
247 /** @default true */
248 removeMatchedSelectors?: boolean | undefined;
249 /** @default ['', 'screen'] */
250 useMqs?: string[] | undefined;
251 /** @default [''] */
252 usePseudos?: string[] | undefined;
253 }
254>;
255
256/**
257 * merges multiple paths in one if possible
258 */
259export type MergePathsPlugin = DefaultPlugin<
260 'mergePaths',
261 {
262 /** @default true */
263 collapseRepeated?: boolean | undefined;
264 /** @default false */
265 force?: boolean | undefined;
266 /** @default true */
267 leadingZero?: boolean | undefined;
268 /** @default true */
269 negativeExtraSpace?: boolean | undefined;
270 /** @default false */
271 noSpaceAfterFlags?: boolean | undefined;
272 }
273>;
274
275/**
276 * merge multiple style elements into one
277 */
278export type MergeStylesPlugin = DefaultPlugin<'mergeStyles'>;
279
280/**
281 * minifies styles and removes unused styles based on usage data
282 */
283export type MinifyStylesPlugin = DefaultPlugin<
284 'minifyStyles',
285 {
286 usage: {
287 /** @default false */
288 force?: boolean | undefined;
289 /** @default true */
290 ids?: boolean | undefined;
291 /** @default true */
292 classes?: boolean | undefined;
293 /** @default true */
294 tags?: boolean | undefined;
295 };
296 }
297>;
298
299/**
300 * moves elements attributes to the existing group wrapper
301 */
302export type MoveElemsAttrsToGroupPlugin = DefaultPlugin<'moveElemsAttrsToGroup'>;
303
304/**
305 * moves some group attributes to the content elements
306 */
307export type MoveGroupAttrsToElemsPlugin = DefaultPlugin<'moveGroupAttrsToElems'>;
308
309/**
310 * undefined
311 */
312export type PluginsPlugin = DefaultPlugin<'plugins'>;
313
314export interface XastDoctype {
315 type: 'doctype';
316 name: string;
317 data: {
318 doctype: string;
319 };
320}
321
322export interface XastInstruction {
323 type: 'instruction';
324 name: string;
325 value: string;
326}
327
328export interface XastComment {
329 type: 'comment';
330 value: string;
331}
332
333export interface XastCdata {
334 type: 'cdata';
335 value: string;
336}
337
338export interface XastText {
339 type: 'text';
340 value: string;
341}
342
343export type XastChild =
344 | XastDoctype
345 | XastInstruction
346 | XastComment
347 | XastCdata
348 | XastText
349 | XastElement;
350
351export interface XastElement {
352 type: 'element';
353 name: string;
354 attributes: Record<string, string>;
355 children: XastChild[];
356}
357
358export interface PluginInfo {
359 path?: string;
360 multipassCount: number;
361}
362
363/**
364 * prefix IDs
365 */
366export type PrefixIdsPlugin = DefaultPlugin<
367 'prefixIds',
368 {
369 prefix?: boolean | string | ((node: XastElement, info: PluginInfo) => string) | undefined;
370 /** @default '__' */
371 delim?: string | undefined;
372 /** @default true */
373 prefixIds?: boolean | undefined;
374 /** @default true */
375 prefixClassNames?: boolean | undefined;
376 }
377>;
378
379/**
380 * removes attributes of elements that match a css selector
381 */
382export type RemoveAttributesBySelectorPlugin = DefaultPlugin<'removeAttributesBySelector'>;
383
384/**
385 * removes specified attributes
386 */
387export type RemoveAttrsPlugin = DefaultPlugin<
388 'removeAttrs',
389 {
390 /** @default ':' */
391 elemSeparator?: string | undefined;
392 /** @default false */
393 preserveCurrentColor?: boolean | undefined;
394 /** @default [] */
395 attrs: string | string[];
396 }
397>;
398
399/**
400 * removes comments
401 */
402export type RemoveCommentsPlugin = DefaultPlugin<'removeComments'>;
403
404/**
405 * removes <desc>
406 */
407export type RemoveDescPlugin = DefaultPlugin<
408 'removeDesc',
409 {
410 /** @default true */
411 removeAny?: boolean | undefined;
412 }
413>;
414
415/**
416 * removes width and height in presence of viewBox (opposite to removeViewBox, disable it first)
417 */
418export type RemoveDimensionsPlugin = DefaultPlugin<'removeDimensions'>;
419
420/**
421 * removes doctype declaration
422 */
423export type RemoveDoctypePlugin = DefaultPlugin<'removeDoctype'>;
424
425/**
426 * removes editors namespaces, elements and attributes
427 */
428export type RemoveEditorsNSDataPlugin = DefaultPlugin<
429 'removeEditorsNSData',
430 {
431 /** @default [] */
432 additionalNamespaces?: any[] | undefined;
433 }
434>;
435
436/**
437 * removes arbitrary elements by ID or className (disabled by default)
438 */
439export type RemoveElementsByAttrPlugin = DefaultPlugin<
440 'removeElementsByAttr',
441 {
442 /** @default [] */
443 id?: any[] | undefined;
444 /** @default [] */
445 class?: any[] | undefined;
446 }
447>;
448
449/**
450 * removes empty attributes
451 */
452export type RemoveEmptyAttrsPlugin = DefaultPlugin<'removeEmptyAttrs'>;
453
454/**
455 * removes empty container elements
456 */
457export type RemoveEmptyContainersPlugin = DefaultPlugin<'removeEmptyContainers'>;
458
459/**
460 * removes empty <text> elements
461 */
462export type RemoveEmptyTextPlugin = DefaultPlugin<
463 'removeEmptyText',
464 {
465 /** @default true */
466 text?: boolean | undefined;
467 /** @default true */
468 tspan?: boolean | undefined;
469 /** @default true */
470 tref?: boolean | undefined;
471 }
472>;
473
474/**
475 * removes hidden elements (zero sized, with absent attributes)
476 */
477export type RemoveHiddenElemsPlugin = DefaultPlugin<
478 'removeHiddenElems',
479 {
480 /** @default true */
481 isHidden?: boolean | undefined;
482 /** @default true */
483 displayNone?: boolean | undefined;
484 /** @default true */
485 opacity0?: boolean | undefined;
486 /** @default true */
487 circleR0?: boolean | undefined;
488 /** @default true */
489 ellipseRX0?: boolean | undefined;
490 /** @default true */
491 ellipseRY0?: boolean | undefined;
492 /** @default true */
493 rectWidth0?: boolean | undefined;
494 /** @default true */
495 rectHeight0?: boolean | undefined;
496 /** @default true */
497 patternWidth0?: boolean | undefined;
498 /** @default true */
499 patternHeight0?: boolean | undefined;
500 /** @default true */
501 imageWidth0?: boolean | undefined;
502 /** @default true */
503 imageHeight0?: boolean | undefined;
504 /** @default true */
505 pathEmptyD?: boolean | undefined;
506 /** @default true */
507 polylineEmptyPoints?: boolean | undefined;
508 /** @default true */
509 polygonEmptyPoints?: boolean | undefined;
510 }
511>;
512
513/**
514 * removes <metadata>
515 */
516export type RemoveMetadataPlugin = DefaultPlugin<'removeMetadata'>;
517
518/**
519 * removes non-inheritable groups presentational attributes
520 */
521export type RemoveNonInheritableGroupAttrsPlugin = DefaultPlugin<'removeNonInheritableGroupAttrs'>;
522
523/**
524 * removes elements that are drawn outside of the viewbox (disabled by default)
525 */
526export type RemoveOffCanvasPathsPlugin = DefaultPlugin<'removeOffCanvasPaths'>;
527
528/**
529 * removes raster images (disabled by default)
530 */
531export type RemoveRasterImagesPlugin = DefaultPlugin<'removeRasterImages'>;
532
533/**
534 * removes <script> elements (disabled by default)
535 */
536export type RemoveScriptElementPlugin = DefaultPlugin<'removeScriptElement'>;
537
538/**
539 * removes <style> element (disabled by default)
540 */
541export type RemoveStyleElementPlugin = DefaultPlugin<'removeStyleElement'>;
542
543/**
544 * removes <title>
545 */
546export type RemoveTitlePlugin = DefaultPlugin<'removeTitle'>;
547
548/**
549 * removes unknown elements content and attributes, removes attrs with default values
550 */
551export type RemoveUnknownsAndDefaultsPlugin = DefaultPlugin<
552 'removeUnknownsAndDefaults',
553 {
554 /** @default true */
555 unknownContent?: boolean | undefined;
556 /** @default true */
557 unknownAttrs?: boolean | undefined;
558 /** @default true */
559 defaultAttrs?: boolean | undefined;
560 /** @default true */
561 uselessOverrides?: boolean | undefined;
562 /** @default true */
563 keepDataAttrs?: boolean | undefined;
564 /** @default true */
565 keepAriaAttrs?: boolean | undefined;
566 /** @default false */
567 keepRoleAttr?: boolean | undefined;
568 }
569>;
570
571/**
572 * removes unused namespaces declaration
573 */
574export type RemoveUnusedNSPlugin = DefaultPlugin<'removeUnusedNS'>;
575
576/**
577 * removes elements in <defs> without id
578 */
579export type RemoveUselessDefsPlugin = DefaultPlugin<'removeUselessDefs'>;
580
581/**
582 * removes useless stroke and fill attributes
583 */
584export type RemoveUselessStrokeAndFillPlugin = DefaultPlugin<
585 'removeUselessStrokeAndFill',
586 {
587 /** @default true */
588 stroke?: boolean | undefined;
589 /** @default true */
590 fill?: boolean | undefined;
591 /** @default false */
592 removeNone?: boolean | undefined;
593 /** @default false */
594 hasStyleOrScript?: boolean | undefined;
595 }
596>;
597
598/**
599 * removes viewBox attribute when possible
600 */
601export type RemoveViewBoxPlugin = DefaultPlugin<'removeViewBox'>;
602
603/**
604 * removes xmlns attribute (for inline svg, disabled by default)
605 */
606export type RemoveXMLNSPlugin = DefaultPlugin<'removeXMLNS'>;
607
608/**
609 * removes XML processing instructions
610 */
611export type RemoveXMLProcInstPlugin = DefaultPlugin<'removeXMLProcInst'>;
612
613/**
614 * finds <path> elements with the same d, fill, and stroke, and converts them to <use> elements referencing a single <path> def.
615 */
616export type ReusePathsPlugin = DefaultPlugin<'reusePaths'>;
617
618/**
619 * sorts element attributes (disabled by default)
620 */
621export type SortAttrsPlugin = DefaultPlugin<
622 'sortAttrs',
623 {
624 /**
625 * @default ['id', 'width', 'height', 'x', 'x1', 'x2', 'y', 'y1', 'y2', 'cx', 'cy', 'r', 'fill', 'stroke', 'marker', 'd', 'points']
626 */
627 order?: string[] | undefined;
628 }
629>;
630
631/**
632 * sorts children of <defs> to improve compression
633 */
634export type SortDefsChildrenPlugin = DefaultPlugin<'sortDefsChildren'>;
635
636export interface Preset<N extends string, P = never> {
637 name: N;
638 params?: P | undefined;
639}
640
641/**
642 * plugins which are enabled in default preset
643 */
644export type DefaultPresetPlugins =
645 | CleanupAttrsPlugin
646 | CleanupEnableBackgroundPlugin
647 | CleanupIDsPlugin
648 | CleanupNumericValuesPlugin
649 | CollapseGroupsPlugin
650 | ConvertColorsPlugin
651 | ConvertEllipseToCirclePlugin
652 | ConvertPathDataPlugin
653 | ConvertShapeToPathPlugin
654 | ConvertTransformPlugin
655 | InlineStylesPlugin
656 | MergePathsPlugin
657 | MergeStylesPlugin
658 | MinifyStylesPlugin
659 | MoveElemsAttrsToGroupPlugin
660 | MoveGroupAttrsToElemsPlugin
661 | RemoveCommentsPlugin
662 | RemoveDescPlugin
663 | RemoveDoctypePlugin
664 | RemoveEditorsNSDataPlugin
665 | RemoveEmptyAttrsPlugin
666 | RemoveEmptyContainersPlugin
667 | RemoveEmptyTextPlugin
668 | RemoveHiddenElemsPlugin
669 | RemoveMetadataPlugin
670 | RemoveNonInheritableGroupAttrsPlugin
671 | RemoveTitlePlugin
672 | RemoveUnknownsAndDefaultsPlugin
673 | RemoveUnusedNSPlugin
674 | RemoveUselessDefsPlugin
675 | RemoveUselessStrokeAndFillPlugin
676 | RemoveViewBoxPlugin
677 | RemoveXMLProcInstPlugin
678 | SortDefsChildrenPlugin;
679
680/**
681 * default plugin preset, customize plugin options by overriding them
682 */
683export type PresetDefault = Preset<
684 'preset-default',
685 {
686 floatPrecision?: number | undefined;
687 overrides?: { [P in DefaultPresetPlugins['name']]?: false | DefaultPresetPlugins['params'] };
688 }
689>;
690
691export type DefaultPlugins =
692 | DefaultPresetPlugins
693 | PresetDefault
694 | AddAttributesToSVGElementPlugin
695 | AddClassesToSVGElementPlugin
696 | CleanupListOfValuesPlugin
697 | ConvertStyleToAttrsPlugin
698 | PrefixIdsPlugin
699 | RemoveAttributesBySelectorPlugin
700 | RemoveAttrsPlugin
701 | RemoveDimensionsPlugin
702 | RemoveElementsByAttrPlugin
703 | RemoveOffCanvasPathsPlugin
704 | RemoveRasterImagesPlugin
705 | RemoveScriptElementPlugin
706 | RemoveStyleElementPlugin
707 | RemoveXMLNSPlugin
708 | ReusePathsPlugin
709 | SortAttrsPlugin;
710
711export interface CustomPlugin<P extends object = never> {
712 name: string;
713 type: 'perItem' | 'perItemReverse' | 'full';
714 params?: P | undefined;
715 fn: (ast: any, params: P, info: any) => any;
716}
717
718export interface SvgoParserError extends Error {
719 reason: string;
720 line: number;
721 column: number;
722 source: string;
723}
724
725export interface OptimizedError {
726 error: string;
727 modernError: SvgoParserError;
728}
729
730export interface OptimizedSvg {
731 data: string;
732 info: {
733 width: string;
734 height: string;
735 };
736 path?: string | undefined;
737 modernError: undefined;
738 error: undefined;
739}
740
741export type Plugin = DefaultPlugins | DefaultPlugins['name'] | CustomPlugin;
742
743export interface Js2SvgOptions {
744 /** @default '<!DOCTYPE' */
745 doctypeStart?: string | undefined;
746 /** @default '>' */
747 doctypeEnd?: string | undefined;
748 /**
749 * Allows to customize end of line characters which is usually resolved by os.EOL in node.
750 */
751 eol?: 'lf' | 'crlf' | undefined;
752 /**
753 * Ensures SVG output has a final newline which is required for some tools like git.
754 */
755 finalNewline?: boolean | undefined;
756 /** @default '<?' */
757 procInstStart?: string | undefined;
758 /** @default '?>' */
759 procInstEnd?: string | undefined;
760 /** @default '<' */
761 tagOpenStart?: string | undefined;
762 /** @default '>' */
763 tagOpenEnd?: string | undefined;
764 /** @default '</' */
765 tagCloseStart?: string | undefined;
766 /** @default '>' */
767 tagCloseEnd?: string | undefined;
768 /** @default '<' */
769 tagShortStart?: string | undefined;
770 /** @default '/>' */
771 tagShortEnd?: string | undefined;
772 /** @default '="' */
773 attrStart?: string | undefined;
774 /** @default '"' */
775 attrEnd?: string | undefined;
776 /** @default '<!--' */
777 commentStart?: string | undefined;
778 /** @default '-->' */
779 commentEnd?: string | undefined;
780 /** @default '<![CDATA[' */
781 cdataStart?: string | undefined;
782 /** @default ']]>' */
783 cdataEnd?: string | undefined;
784 /** @default '' */
785 textStart?: string | undefined;
786 /** @default '' */
787 textEnd?: string | undefined;
788 /** @default 4 */
789 indent?: number | undefined;
790 /** @default /[&'"<>]/g */
791 regEntities?: RegExp | undefined;
792 /** @default /[&"<>]/g */
793 regValEntities?: RegExp | undefined;
794 /** @default encodeEntity */
795 encodeEntity?: ((char?: string) => string) | undefined;
796 /** @default false */
797 pretty?: boolean | undefined;
798 /** @default true */
799 useShortTags?: boolean | undefined;
800}
801
802export interface Svg2JsOptions {
803 /** @default true */
804 strict?: boolean | undefined;
805 /** @default false */
806 trim?: boolean | undefined;
807 /** @default true */
808 normalize?: boolean | undefined;
809 /** @default true */
810 lowercase?: boolean | undefined;
811 /** @default true */
812 xmlns?: boolean | undefined;
813 /** @default true */
814 position?: boolean | undefined;
815}
816
817/**
818 * If plugins field is specified default list is fully overrided. To extend default list use extendDefaultPlugins
819 * utility.
820 *
821 * To disable one of default plugins use active field.
822 *
823 * @deprecated Use `preset-default` plugin instead
824 */
825export function extendDefaultPlugins(plugins: Plugin[]): Plugin[];
826
827export interface OptimizeOptions {
828 /** Output as Data URI string. */
829 datauri?: 'base64' | 'enc' | 'unenc' | undefined;
830
831 /** Precision of floating point numbers. Will be passed to each plugin that suppors this param. */
832 floatPrecision?: number | undefined;
833
834 /** Use full set of plugins. */
835 full?: boolean | undefined;
836
837 path?: string | undefined;
838
839 /** Pass over SVGs multiple times to ensure all optimizations are applied */
840 multipass?: boolean | undefined;
841
842 /** Options for rendering optimized SVG from AST. */
843 js2svg?: Js2SvgOptions | undefined;
844
845 /**
846 * Individual plugin configurations.
847 * For specific options, see plugin source in https://github.com/svg/svgo/tree/master/plugins.
848 */
849 plugins?: Plugin[] | undefined;
850
851 /** Options for parsing original SVG into AST. */
852 svg2js?: Svg2JsOptions | undefined;
853}
854
855/* The core of SVGO is optimize function. */
856export function optimize(svgString: string | Buffer, options?: OptimizeOptions): OptimizedSvg | OptimizedError;
857
858/**
859 * If you write a tool on top of svgo you might need a way to load svgo config.
860 *
861 * You can also specify relative or absolute path and customize current working directory.
862 */
863export function loadConfig(configFile: string, cwd?: string): Promise<OptimizeOptions>;
864export function loadConfig(): Promise<OptimizeOptions | null>;
865
\No newline at end of file