1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | export interface DefaultPlugin<N extends string, P = never> {
|
16 | active?: boolean | undefined;
|
17 | name: N;
|
18 | params?: P | undefined;
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | export type AddAttributesToSVGElementPlugin = DefaultPlugin<
|
25 | 'addAttributesToSVGElement',
|
26 | { attribute: string | Record<string, null | string> } | { attributes: Array<string | Record<string, null | string>> }
|
27 | >;
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | export type AddClassesToSVGElementPlugin = DefaultPlugin<
|
33 | 'addClassesToSVGElement',
|
34 | { className: string; classNames?: never; } | { className?: never; classNames: string[]; }
|
35 | >;
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | export type CleanupAttrsPlugin = DefaultPlugin<
|
41 | 'cleanupAttrs',
|
42 | {
|
43 |
|
44 | newlines?: boolean | undefined;
|
45 |
|
46 | trim?: boolean | undefined;
|
47 |
|
48 | spaces?: boolean | undefined;
|
49 | }
|
50 | >;
|
51 |
|
52 |
|
53 |
|
54 |
|
55 | export type CleanupEnableBackgroundPlugin = DefaultPlugin<'cleanupEnableBackground'>;
|
56 |
|
57 |
|
58 |
|
59 |
|
60 | export type CleanupIDsPlugin = DefaultPlugin<
|
61 | 'cleanupIDs',
|
62 | {
|
63 |
|
64 | remove?: boolean | undefined;
|
65 |
|
66 | minify?: boolean | undefined;
|
67 |
|
68 | prefix?: string | undefined;
|
69 |
|
70 | preserve?: any[] | undefined;
|
71 |
|
72 | preservePrefixes?: any[] | undefined;
|
73 |
|
74 | force?: boolean | undefined;
|
75 | }
|
76 | >;
|
77 |
|
78 |
|
79 |
|
80 |
|
81 | export type CleanupListOfValuesPlugin = DefaultPlugin<
|
82 | 'cleanupListOfValues',
|
83 | {
|
84 |
|
85 | floatPrecision?: number | undefined;
|
86 |
|
87 | leadingZero?: boolean | undefined;
|
88 |
|
89 | defaultPx?: boolean | undefined;
|
90 |
|
91 | convertToPx?: boolean | undefined;
|
92 | }
|
93 | >;
|
94 |
|
95 |
|
96 |
|
97 |
|
98 | export type CleanupNumericValuesPlugin = DefaultPlugin<
|
99 | 'cleanupNumericValues',
|
100 | {
|
101 |
|
102 | floatPrecision?: number | undefined;
|
103 |
|
104 | leadingZero?: boolean | undefined;
|
105 |
|
106 | defaultPx?: boolean | undefined;
|
107 |
|
108 | convertToPx?: boolean | undefined;
|
109 | }
|
110 | >;
|
111 |
|
112 |
|
113 |
|
114 |
|
115 | export type CollapseGroupsPlugin = DefaultPlugin<'collapseGroups'>;
|
116 |
|
117 |
|
118 |
|
119 |
|
120 | export type ConvertColorsPlugin = DefaultPlugin<
|
121 | 'convertColors',
|
122 | {
|
123 |
|
124 | currentColor?: boolean | undefined;
|
125 |
|
126 | names2hex?: boolean | undefined;
|
127 |
|
128 | rgb2hex?: boolean | undefined;
|
129 |
|
130 | shorthex?: boolean | undefined;
|
131 |
|
132 | shortname?: boolean | undefined;
|
133 | }
|
134 | >;
|
135 |
|
136 |
|
137 |
|
138 |
|
139 | export type ConvertEllipseToCirclePlugin = DefaultPlugin<'convertEllipseToCircle'>;
|
140 |
|
141 |
|
142 |
|
143 |
|
144 | export type ConvertPathDataPlugin = DefaultPlugin<
|
145 | 'convertPathData',
|
146 | {
|
147 |
|
148 | applyTransforms?: boolean | undefined;
|
149 |
|
150 | applyTransformsStroked?: boolean | undefined;
|
151 | makeArcs?:
|
152 | | {
|
153 |
|
154 | threshold?: number | undefined;
|
155 |
|
156 | tolerance?: number | undefined;
|
157 | }
|
158 | | undefined;
|
159 |
|
160 | straightCurves?: boolean | undefined;
|
161 |
|
162 | lineShorthands?: boolean | undefined;
|
163 |
|
164 | curveSmoothShorthands?: boolean | undefined;
|
165 |
|
166 | floatPrecision?: number | undefined;
|
167 |
|
168 | transformPrecision?: number | undefined;
|
169 |
|
170 | removeUseless?: boolean | undefined;
|
171 |
|
172 | collapseRepeated?: boolean | undefined;
|
173 |
|
174 | utilizeAbsolute?: boolean | undefined;
|
175 |
|
176 | leadingZero?: boolean | undefined;
|
177 |
|
178 | negativeExtraSpace?: boolean | undefined;
|
179 |
|
180 | noSpaceAfterFlags?: boolean | undefined;
|
181 |
|
182 | forceAbsolutePath?: boolean | undefined;
|
183 | }
|
184 | >;
|
185 |
|
186 |
|
187 |
|
188 |
|
189 | export type ConvertShapeToPathPlugin = DefaultPlugin<
|
190 | 'convertShapeToPath',
|
191 | {
|
192 |
|
193 | convertArcs?: boolean | undefined;
|
194 | }
|
195 | >;
|
196 |
|
197 |
|
198 |
|
199 |
|
200 | export type ConvertStyleToAttrsPlugin = DefaultPlugin<
|
201 | 'convertStyleToAttrs',
|
202 | {
|
203 |
|
204 | keepImportant?: boolean | undefined;
|
205 | }
|
206 | >;
|
207 |
|
208 |
|
209 |
|
210 |
|
211 | export type ConvertTransformPlugin = DefaultPlugin<
|
212 | 'convertTransform',
|
213 | {
|
214 |
|
215 | convertToShorts?: boolean | undefined;
|
216 |
|
217 | floatPrecision?: number | undefined;
|
218 |
|
219 | transformPrecision?: number | undefined;
|
220 |
|
221 | matrixToTransform?: boolean | undefined;
|
222 |
|
223 | shortTranslate?: boolean | undefined;
|
224 |
|
225 | shortScale?: boolean | undefined;
|
226 |
|
227 | shortRotate?: boolean | undefined;
|
228 |
|
229 | removeUseless?: boolean | undefined;
|
230 |
|
231 | collapseIntoOne?: boolean | undefined;
|
232 |
|
233 | leadingZero?: boolean | undefined;
|
234 |
|
235 | negativeExtraSpace?: boolean | undefined;
|
236 | }
|
237 | >;
|
238 |
|
239 |
|
240 |
|
241 |
|
242 | export type InlineStylesPlugin = DefaultPlugin<
|
243 | 'inlineStyles',
|
244 | {
|
245 |
|
246 | onlyMatchedOnce?: boolean | undefined;
|
247 |
|
248 | removeMatchedSelectors?: boolean | undefined;
|
249 |
|
250 | useMqs?: string[] | undefined;
|
251 |
|
252 | usePseudos?: string[] | undefined;
|
253 | }
|
254 | >;
|
255 |
|
256 |
|
257 |
|
258 |
|
259 | export type MergePathsPlugin = DefaultPlugin<
|
260 | 'mergePaths',
|
261 | {
|
262 |
|
263 | collapseRepeated?: boolean | undefined;
|
264 |
|
265 | force?: boolean | undefined;
|
266 |
|
267 | leadingZero?: boolean | undefined;
|
268 |
|
269 | negativeExtraSpace?: boolean | undefined;
|
270 |
|
271 | noSpaceAfterFlags?: boolean | undefined;
|
272 | }
|
273 | >;
|
274 |
|
275 |
|
276 |
|
277 |
|
278 | export type MergeStylesPlugin = DefaultPlugin<'mergeStyles'>;
|
279 |
|
280 |
|
281 |
|
282 |
|
283 | export type MinifyStylesPlugin = DefaultPlugin<
|
284 | 'minifyStyles',
|
285 | {
|
286 | usage: {
|
287 |
|
288 | force?: boolean | undefined;
|
289 |
|
290 | ids?: boolean | undefined;
|
291 |
|
292 | classes?: boolean | undefined;
|
293 |
|
294 | tags?: boolean | undefined;
|
295 | };
|
296 | }
|
297 | >;
|
298 |
|
299 |
|
300 |
|
301 |
|
302 | export type MoveElemsAttrsToGroupPlugin = DefaultPlugin<'moveElemsAttrsToGroup'>;
|
303 |
|
304 |
|
305 |
|
306 |
|
307 | export type MoveGroupAttrsToElemsPlugin = DefaultPlugin<'moveGroupAttrsToElems'>;
|
308 |
|
309 |
|
310 |
|
311 |
|
312 | export type PluginsPlugin = DefaultPlugin<'plugins'>;
|
313 |
|
314 | export interface XastDoctype {
|
315 | type: 'doctype';
|
316 | name: string;
|
317 | data: {
|
318 | doctype: string;
|
319 | };
|
320 | }
|
321 |
|
322 | export interface XastInstruction {
|
323 | type: 'instruction';
|
324 | name: string;
|
325 | value: string;
|
326 | }
|
327 |
|
328 | export interface XastComment {
|
329 | type: 'comment';
|
330 | value: string;
|
331 | }
|
332 |
|
333 | export interface XastCdata {
|
334 | type: 'cdata';
|
335 | value: string;
|
336 | }
|
337 |
|
338 | export interface XastText {
|
339 | type: 'text';
|
340 | value: string;
|
341 | }
|
342 |
|
343 | export type XastChild =
|
344 | | XastDoctype
|
345 | | XastInstruction
|
346 | | XastComment
|
347 | | XastCdata
|
348 | | XastText
|
349 | | XastElement;
|
350 |
|
351 | export interface XastElement {
|
352 | type: 'element';
|
353 | name: string;
|
354 | attributes: Record<string, string>;
|
355 | children: XastChild[];
|
356 | }
|
357 |
|
358 | export interface PluginInfo {
|
359 | path?: string;
|
360 | multipassCount: number;
|
361 | }
|
362 |
|
363 |
|
364 |
|
365 |
|
366 | export 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 | */
|
382 | export type RemoveAttributesBySelectorPlugin = DefaultPlugin<'removeAttributesBySelector'>;
|
383 |
|
384 | /**
|
385 | * removes specified attributes
|
386 | */
|
387 | export 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 | */
|
402 | export type RemoveCommentsPlugin = DefaultPlugin<'removeComments'>;
|
403 |
|
404 | /**
|
405 | * removes <desc>
|
406 | */
|
407 | export 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 | */
|
418 | export type RemoveDimensionsPlugin = DefaultPlugin<'removeDimensions'>;
|
419 |
|
420 | /**
|
421 | * removes doctype declaration
|
422 | */
|
423 | export type RemoveDoctypePlugin = DefaultPlugin<'removeDoctype'>;
|
424 |
|
425 | /**
|
426 | * removes editors namespaces, elements and attributes
|
427 | */
|
428 | export 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 | */
|
439 | export 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 | */
|
452 | export type RemoveEmptyAttrsPlugin = DefaultPlugin<'removeEmptyAttrs'>;
|
453 |
|
454 | /**
|
455 | * removes empty container elements
|
456 | */
|
457 | export type RemoveEmptyContainersPlugin = DefaultPlugin<'removeEmptyContainers'>;
|
458 |
|
459 | /**
|
460 | * removes empty <text> elements
|
461 | */
|
462 | export 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 | */
|
477 | export 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 | */
|
516 | export type RemoveMetadataPlugin = DefaultPlugin<'removeMetadata'>;
|
517 |
|
518 | /**
|
519 | * removes non-inheritable group’s presentational attributes
|
520 | */
|
521 | export type RemoveNonInheritableGroupAttrsPlugin = DefaultPlugin<'removeNonInheritableGroupAttrs'>;
|
522 |
|
523 | /**
|
524 | * removes elements that are drawn outside of the viewbox (disabled by default)
|
525 | */
|
526 | export type RemoveOffCanvasPathsPlugin = DefaultPlugin<'removeOffCanvasPaths'>;
|
527 |
|
528 | /**
|
529 | * removes raster images (disabled by default)
|
530 | */
|
531 | export type RemoveRasterImagesPlugin = DefaultPlugin<'removeRasterImages'>;
|
532 |
|
533 | /**
|
534 | * removes <script> elements (disabled by default)
|
535 | */
|
536 | export type RemoveScriptElementPlugin = DefaultPlugin<'removeScriptElement'>;
|
537 |
|
538 | /**
|
539 | * removes <style> element (disabled by default)
|
540 | */
|
541 | export type RemoveStyleElementPlugin = DefaultPlugin<'removeStyleElement'>;
|
542 |
|
543 | /**
|
544 | * removes <title>
|
545 | */
|
546 | export type RemoveTitlePlugin = DefaultPlugin<'removeTitle'>;
|
547 |
|
548 | /**
|
549 | * removes unknown elements content and attributes, removes attrs with default values
|
550 | */
|
551 | export 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 | */
|
574 | export type RemoveUnusedNSPlugin = DefaultPlugin<'removeUnusedNS'>;
|
575 |
|
576 | /**
|
577 | * removes elements in <defs> without id
|
578 | */
|
579 | export type RemoveUselessDefsPlugin = DefaultPlugin<'removeUselessDefs'>;
|
580 |
|
581 | /**
|
582 | * removes useless stroke and fill attributes
|
583 | */
|
584 | export 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 | */
|
601 | export type RemoveViewBoxPlugin = DefaultPlugin<'removeViewBox'>;
|
602 |
|
603 | /**
|
604 | * removes xmlns attribute (for inline svg, disabled by default)
|
605 | */
|
606 | export type RemoveXMLNSPlugin = DefaultPlugin<'removeXMLNS'>;
|
607 |
|
608 | /**
|
609 | * removes XML processing instructions
|
610 | */
|
611 | export 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 | */
|
616 | export type ReusePathsPlugin = DefaultPlugin<'reusePaths'>;
|
617 |
|
618 | /**
|
619 | * sorts element attributes (disabled by default)
|
620 | */
|
621 | export 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 | */
|
634 | export type SortDefsChildrenPlugin = DefaultPlugin<'sortDefsChildren'>;
|
635 |
|
636 | export 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 | */
|
644 | export 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 | */
|
683 | export type PresetDefault = Preset<
|
684 | 'preset-default',
|
685 | {
|
686 | floatPrecision?: number | undefined;
|
687 | overrides?: { [P in DefaultPresetPlugins['name']]?: false | DefaultPresetPlugins['params'] };
|
688 | }
|
689 | >;
|
690 |
|
691 | export 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 |
|
711 | export 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 |
|
718 | export interface SvgoParserError extends Error {
|
719 | reason: string;
|
720 | line: number;
|
721 | column: number;
|
722 | source: string;
|
723 | }
|
724 |
|
725 | export interface OptimizedError {
|
726 | error: string;
|
727 | modernError: SvgoParserError;
|
728 | }
|
729 |
|
730 | export 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 |
|
741 | export type Plugin = DefaultPlugins | DefaultPlugins['name'] | CustomPlugin;
|
742 |
|
743 | export interface Js2SvgOptions {
|
744 |
|
745 | doctypeStart?: string | undefined;
|
746 |
|
747 | doctypeEnd?: string | undefined;
|
748 | |
749 |
|
750 |
|
751 | eol?: 'lf' | 'crlf' | undefined;
|
752 | |
753 |
|
754 |
|
755 | finalNewline?: boolean | undefined;
|
756 |
|
757 | procInstStart?: string | undefined;
|
758 |
|
759 | procInstEnd?: string | undefined;
|
760 |
|
761 | tagOpenStart?: string | undefined;
|
762 |
|
763 | tagOpenEnd?: string | undefined;
|
764 |
|
765 | tagCloseStart?: string | undefined;
|
766 |
|
767 | tagCloseEnd?: string | undefined;
|
768 |
|
769 | tagShortStart?: string | undefined;
|
770 |
|
771 | tagShortEnd?: string | undefined;
|
772 |
|
773 | attrStart?: string | undefined;
|
774 |
|
775 | attrEnd?: string | undefined;
|
776 |
|
777 | commentStart?: string | undefined;
|
778 |
|
779 | commentEnd?: string | undefined;
|
780 |
|
781 | cdataStart?: string | undefined;
|
782 |
|
783 | cdataEnd?: string | undefined;
|
784 |
|
785 | textStart?: string | undefined;
|
786 |
|
787 | textEnd?: string | undefined;
|
788 |
|
789 | indent?: number | undefined;
|
790 |
|
791 | regEntities?: RegExp | undefined;
|
792 |
|
793 | regValEntities?: RegExp | undefined;
|
794 |
|
795 | encodeEntity?: ((char?: string) => string) | undefined;
|
796 | /** @default false */
|
797 | pretty?: boolean | undefined;
|
798 | /** @default true */
|
799 | useShortTags?: boolean | undefined;
|
800 | }
|
801 |
|
802 | export 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 | */
|
825 | export function extendDefaultPlugins(plugins: Plugin[]): Plugin[];
|
826 |
|
827 | export 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. */
|
856 | export 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 | */
|
863 | export function loadConfig(configFile: string, cwd?: string): Promise<OptimizeOptions>;
|
864 | export function loadConfig(): Promise<OptimizeOptions | null>;
|
865 |
|
\ | No newline at end of file |