svger-cli 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +399 -0
- package/README.md +448 -37
- package/SECURITY.md +3 -3
- package/assets/svges/500px.svg +3 -0
- package/assets/svges/adobe.svg +3 -0
- package/assets/svges/adonis.svg +3 -0
- package/assets/svges/aeroplane-1.svg +3 -0
- package/assets/svges/agenda.svg +3 -0
- package/assets/svges/airbnb.svg +3 -0
- package/assets/svges/airtable.svg +3 -0
- package/assets/svges/alarm-1.svg +7 -0
- package/assets/svges/align-text-center.svg +6 -0
- package/assets/svges/align-text-left.svg +6 -0
- package/assets/svges/align-text-right.svg +6 -0
- package/assets/svges/alpinejs.svg +4 -0
- package/assets/svges/amazon-original.svg +5 -0
- package/assets/svges/amazon-pay.svg +7 -0
- package/assets/svges/amazon.svg +10 -0
- package/assets/svges/ambulance-1.svg +4 -0
- package/assets/svges/amd.svg +3 -0
- package/assets/svges/amex.svg +4 -0
- package/assets/svges/anchor.svg +3 -0
- package/assets/svges/android-old.svg +3 -0
- package/assets/svges/android.svg +3 -0
- package/assets/svges/angellist.svg +3 -0
- package/assets/svges/angle-double-down.svg +4 -0
- package/assets/svges/angle-double-left.svg +4 -0
- package/assets/svges/angle-double-right.svg +4 -0
- package/assets/svges/angle-double-up.svg +4 -0
- package/assets/svges/angular.svg +3 -0
- package/assets/svges/app-store.svg +3 -0
- package/assets/svges/apple-brand.svg +3 -0
- package/assets/svges/apple-music-alt.svg +3 -0
- package/assets/svges/apple-music.svg +3 -0
- package/assets/svges/apple-pay.svg +3 -0
- package/assets/svges/arc-browser.svg +6 -0
- package/assets/svges/arrow-all-direction.svg +6 -0
- package/assets/svges/arrow-angular-top-left.svg +3 -0
- package/assets/svges/arrow-angular-top-right.svg +3 -0
- package/assets/svges/arrow-both-direction-horizontal-1.svg +3 -0
- package/assets/svges/arrow-both-direction-vertical-1.svg +3 -0
- package/assets/svges/arrow-downward.svg +3 -0
- package/assets/svges/arrow-left-circle.svg +4 -0
- package/assets/svges/arrow-left.svg +3 -0
- package/assets/svges/arrow-right-circle.svg +4 -0
- package/assets/svges/arrow-right.svg +3 -0
- package/assets/svges/arrow-upward.svg +3 -0
- package/assets/svges/asana.svg +3 -0
- package/assets/svges/astro.svg +4 -0
- package/assets/svges/atlassian.svg +3 -0
- package/assets/svges/audi-alt.svg +3 -0
- package/assets/svges/audi.svg +3 -0
- package/assets/svges/aws.svg +3 -0
- package/assets/svges/azure.svg +3 -0
- package/assets/svges/badge-decagram-percent.svg +6 -0
- package/assets/svges/balloons.svg +3 -0
- package/assets/svges/ban-2.svg +3 -0
- package/assets/svges/bar-chart-4.svg +6 -0
- package/assets/svges/bar-chart-dollar.svg +6 -0
- package/assets/svges/basket-shopping-3.svg +5 -0
- package/assets/svges/beat.svg +3 -0
- package/assets/svges/behance.svg +5 -0
- package/assets/svges/bell-1.svg +3 -0
- package/assets/svges/bike.svg +6 -0
- package/assets/svges/bing.svg +5 -0
- package/assets/svges/bitbucket.svg +5 -0
- package/assets/svges/bitcoin.svg +5 -0
- package/assets/svges/bittorrent.svg +6 -0
- package/assets/svges/blogger-alt.svg +3 -0
- package/assets/svges/blogger.svg +3 -0
- package/assets/svges/bluetooth-logo.svg +3 -0
- package/assets/svges/bluetooth.svg +3 -0
- package/assets/svges/bmw.svg +7 -0
- package/assets/svges/board-writing-3.svg +3 -0
- package/assets/svges/bold.svg +3 -0
- package/assets/svges/bolt-2.svg +3 -0
- package/assets/svges/bolt-3.svg +3 -0
- package/assets/svges/book-1.svg +4 -0
- package/assets/svges/bookmark-1.svg +3 -0
- package/assets/svges/bookmark-circle.svg +4 -0
- package/assets/svges/books-2.svg +3 -0
- package/assets/svges/bootstrap-5-square.svg +3 -0
- package/assets/svges/bootstrap-5.svg +3 -0
- package/assets/svges/box-archive-1.svg +4 -0
- package/assets/svges/box-closed.svg +3 -0
- package/assets/svges/box-gift-1.svg +3 -0
- package/assets/svges/brave.svg +3 -0
- package/assets/svges/bricks.svg +3 -0
- package/assets/svges/bridge-3.svg +3 -0
- package/assets/svges/briefcase-1.svg +3 -0
- package/assets/svges/briefcase-2.svg +3 -0
- package/assets/svges/briefcase-plus-1.svg +4 -0
- package/assets/svges/brush-1-rotated.svg +3 -0
- package/assets/svges/brush-2.svg +3 -0
- package/assets/svges/btc.svg +3 -0
- package/assets/svges/bug-1.svg +3 -0
- package/assets/svges/buildings-1.svg +5 -0
- package/assets/svges/bulb-2.svg +3 -0
- package/assets/svges/bulb-4.svg +9 -0
- package/assets/svges/burger-1.svg +3 -0
- package/assets/svges/burger-drink.svg +4 -0
- package/assets/svges/bus-1.svg +5 -0
- package/assets/svges/busket-ball.svg +3 -0
- package/assets/svges/cake-1.svg +3 -0
- package/assets/svges/calculator-1.svg +8 -0
- package/assets/svges/calculator-2.svg +13 -0
- package/assets/svges/calendar-days.svg +9 -0
- package/assets/svges/camera-1.svg +4 -0
- package/assets/svges/camera-movie-1.svg +3 -0
- package/assets/svges/candy-cane-2.svg +3 -0
- package/assets/svges/candy-round-1.svg +3 -0
- package/assets/svges/canva.svg +3 -0
- package/assets/svges/capsule-1.svg +3 -0
- package/assets/svges/car-2.svg +5 -0
- package/assets/svges/car-4.svg +3 -0
- package/assets/svges/car-6.svg +5 -0
- package/assets/svges/caravan-1.svg +3 -0
- package/assets/svges/cart-1.svg +5 -0
- package/assets/svges/cart-2.svg +5 -0
- package/assets/svges/cash-app.svg +3 -0
- package/assets/svges/certificate-badge-1.svg +6 -0
- package/assets/svges/chat-bubble-2.svg +5 -0
- package/assets/svges/check-circle-1.svg +4 -0
- package/assets/svges/check-square-2.svg +4 -0
- package/assets/svges/check.svg +3 -0
- package/assets/svges/chevron-down-circle.svg +4 -0
- package/assets/svges/chevron-down.svg +3 -0
- package/assets/svges/chevron-left-circle.svg +4 -0
- package/assets/svges/chevron-left.svg +3 -0
- package/assets/svges/chevron-right-circle.svg +4 -0
- package/assets/svges/chevron-up-circle.svg +4 -0
- package/assets/svges/chevron-up.svg +3 -0
- package/assets/svges/chrome.svg +6 -0
- package/assets/svges/chromecast.svg +3 -0
- package/assets/svges/cisco.svg +3 -0
- package/assets/svges/claude.svg +3 -0
- package/assets/svges/clickup.svg +4 -0
- package/assets/svges/clipboard.svg +3 -0
- package/assets/svges/cloud-2.svg +3 -0
- package/assets/svges/cloud-bolt-1.svg +4 -0
- package/assets/svges/cloud-bolt-2.svg +4 -0
- package/assets/svges/cloud-check-circle.svg +5 -0
- package/assets/svges/cloud-download.svg +5 -0
- package/assets/svges/cloud-iot-2.svg +3 -0
- package/assets/svges/cloud-rain.svg +6 -0
- package/assets/svges/cloud-refresh-clockwise.svg +5 -0
- package/assets/svges/cloud-sun.svg +9 -0
- package/assets/svges/cloud-upload.svg +5 -0
- package/assets/svges/cloudflare.svg +3 -0
- package/assets/svges/code-1.svg +5 -0
- package/assets/svges/code-s.svg +5 -0
- package/assets/svges/codepen.svg +3 -0
- package/assets/svges/coffee-cup-2.svg +6 -0
- package/assets/svges/coinbase.svg +10 -0
- package/assets/svges/colour-palette-3.svg +7 -0
- package/assets/svges/comment-1-share.svg +4 -0
- package/assets/svges/comment-1-text.svg +5 -0
- package/assets/svges/comment-1.svg +3 -0
- package/assets/svges/compass-drafting-2.svg +3 -0
- package/assets/svges/connectdevelop.svg +3 -0
- package/assets/svges/copilot.svg +8 -0
- package/assets/svges/coral.svg +3 -0
- package/assets/svges/cpanel.svg +3 -0
- package/assets/svges/crane-4.svg +3 -0
- package/assets/svges/creative-commons.svg +4 -0
- package/assets/svges/credit-card-multiple.svg +3 -0
- package/assets/svges/crop-2.svg +3 -0
- package/assets/svges/crown-3.svg +3 -0
- package/assets/svges/css3.svg +3 -0
- package/assets/svges/dashboard-square-1.svg +6 -0
- package/assets/svges/database-2.svg +3 -0
- package/assets/svges/deno.svg +4 -0
- package/assets/svges/dev.svg +3 -0
- package/assets/svges/dialogflow.svg +4 -0
- package/assets/svges/diamonds-1.svg +3 -0
- package/assets/svges/diamonds-2.svg +3 -0
- package/assets/svges/digitalocean.svg +3 -0
- package/assets/svges/diners-club.svg +38 -0
- package/assets/svges/direction-ltr.svg +4 -0
- package/assets/svges/direction-rtl.svg +4 -0
- package/assets/svges/discord-chat.svg +5 -0
- package/assets/svges/discord.svg +3 -0
- package/assets/svges/discover.svg +3 -0
- package/assets/svges/docker.svg +3 -0
- package/assets/svges/dollar-circle.svg +4 -0
- package/assets/svges/dollar.svg +3 -0
- package/assets/svges/double-quotes-end-1.svg +4 -0
- package/assets/svges/download-1.svg +4 -0
- package/assets/svges/download-circle-1.svg +4 -0
- package/assets/svges/dribbble-symbol.svg +3 -0
- package/assets/svges/dribbble.svg +3 -0
- package/assets/svges/drizzle.svg +6 -0
- package/assets/svges/dropbox.svg +7 -0
- package/assets/svges/drupal.svg +3 -0
- package/assets/svges/dumbbell-1.svg +3 -0
- package/assets/svges/edge.svg +3 -0
- package/assets/svges/emoji-expressionless-flat-eyes.svg +6 -0
- package/assets/svges/emoji-expressionless.svg +6 -0
- package/assets/svges/emoji-grin.svg +6 -0
- package/assets/svges/emoji-sad.svg +6 -0
- package/assets/svges/emoji-smile-side.svg +6 -0
- package/assets/svges/emoji-smile-sunglass.svg +5 -0
- package/assets/svges/emoji-smile-tongue.svg +3 -0
- package/assets/svges/emoji-smile.svg +6 -0
- package/assets/svges/enter-down.svg +4 -0
- package/assets/svges/enter.svg +4 -0
- package/assets/svges/envato.svg +4 -0
- package/assets/svges/envelope-1.svg +3 -0
- package/assets/svges/eraser-1.svg +4 -0
- package/assets/svges/ethereum-logo.svg +4 -0
- package/assets/svges/euro.svg +3 -0
- package/assets/svges/exit-up.svg +4 -0
- package/assets/svges/exit.svg +4 -0
- package/assets/svges/expand-arrow-1.svg +3 -0
- package/assets/svges/expand-square-4.svg +6 -0
- package/assets/svges/expressjs.svg +4 -0
- package/assets/svges/eye.svg +4 -0
- package/assets/svges/facebook-messenger.svg +3 -0
- package/assets/svges/facebook-rounded.svg +4 -0
- package/assets/svges/facebook-square.svg +3 -0
- package/assets/svges/facebook.svg +3 -0
- package/assets/svges/facetime.svg +3 -0
- package/assets/svges/figma.svg +3 -0
- package/assets/svges/file-format-zip.svg +4 -0
- package/assets/svges/file-multiple.svg +4 -0
- package/assets/svges/file-pencil.svg +4 -0
- package/assets/svges/file-plus-circle.svg +5 -0
- package/assets/svges/file-question.svg +5 -0
- package/assets/svges/file-xmark.svg +4 -0
- package/assets/svges/firebase.svg +3 -0
- package/assets/svges/firefox.svg +3 -0
- package/assets/svges/firework-rocket-4.svg +3 -0
- package/assets/svges/fitbit.svg +3 -0
- package/assets/svges/flag-1.svg +3 -0
- package/assets/svges/flag-2.svg +3 -0
- package/assets/svges/flickr.svg +4 -0
- package/assets/svges/floppy-disk-1.svg +3 -0
- package/assets/svges/flower-2.svg +3 -0
- package/assets/svges/flutter.svg +3 -0
- package/assets/svges/folder-1.svg +3 -0
- package/assets/svges/ford.svg +3 -0
- package/assets/svges/framer.svg +3 -0
- package/assets/svges/funnel-1.svg +3 -0
- package/assets/svges/gallery.svg +4 -0
- package/assets/svges/game-pad-modern-1.svg +6 -0
- package/assets/svges/gatsby.svg +3 -0
- package/assets/svges/gauge-1.svg +5 -0
- package/assets/svges/gear-1.svg +4 -0
- package/assets/svges/gears-3.svg +6 -0
- package/assets/svges/gemini.svg +3 -0
- package/assets/svges/git.svg +3 -0
- package/assets/svges/github.svg +3 -0
- package/assets/svges/glass-juice-1.svg +3 -0
- package/assets/svges/globe-1.svg +3 -0
- package/assets/svges/globe-stand.svg +4 -0
- package/assets/svges/go.svg +7 -0
- package/assets/svges/goodreads.svg +3 -0
- package/assets/svges/google-cloud.svg +3 -0
- package/assets/svges/google-drive.svg +3 -0
- package/assets/svges/google-meet.svg +3 -0
- package/assets/svges/google-pay.svg +3 -0
- package/assets/svges/google-wallet.svg +3 -0
- package/assets/svges/google.svg +3 -0
- package/assets/svges/graduation-cap-1.svg +3 -0
- package/assets/svges/grammarly.svg +3 -0
- package/assets/svges/hacker-news.svg +3 -0
- package/assets/svges/hammer-1.svg +3 -0
- package/assets/svges/hammer-2.svg +3 -0
- package/assets/svges/hand-mic.svg +3 -0
- package/assets/svges/hand-shake.svg +3 -0
- package/assets/svges/hand-stop.svg +3 -0
- package/assets/svges/hand-taking-dollar.svg +4 -0
- package/assets/svges/hand-taking-leaf-1.svg +5 -0
- package/assets/svges/hand-taking-user.svg +5 -0
- package/assets/svges/hashnode.svg +3 -0
- package/assets/svges/hat-chef-3.svg +3 -0
- package/assets/svges/headphone-1.svg +3 -0
- package/assets/svges/heart.svg +3 -0
- package/assets/svges/helicopter-2.svg +4 -0
- package/assets/svges/helmet-safety-1.svg +3 -0
- package/assets/svges/hierarchy-1.svg +9 -0
- package/assets/svges/highlighter-1.svg +3 -0
- package/assets/svges/highlighter-2.svg +3 -0
- package/assets/svges/home-2.svg +3 -0
- package/assets/svges/hospital-2.svg +4 -0
- package/assets/svges/hourglass.svg +3 -0
- package/assets/svges/html5.svg +4 -0
- package/assets/svges/ibm.svg +3 -0
- package/assets/svges/id-card.svg +7 -0
- package/assets/svges/imdb.svg +7 -0
- package/assets/svges/indent.svg +8 -0
- package/assets/svges/info.svg +4 -0
- package/assets/svges/injection-1.svg +3 -0
- package/assets/svges/instagram-logotype.svg +3 -0
- package/assets/svges/instagram.svg +4 -0
- package/assets/svges/intel.svg +4 -0
- package/assets/svges/ios.svg +3 -0
- package/assets/svges/island-2.svg +4 -0
- package/assets/svges/jaguar.svg +3 -0
- package/assets/svges/jamstack.svg +3 -0
- package/assets/svges/java.svg +3 -0
- package/assets/svges/javascript.svg +3 -0
- package/assets/svges/jcb.svg +3 -0
- package/assets/svges/joomla.svg +6 -0
- package/assets/svges/jsfiddle.svg +4 -0
- package/assets/svges/key-1.svg +3 -0
- package/assets/svges/keyboard.svg +12 -0
- package/assets/svges/knife-fork-1.svg +5 -0
- package/assets/svges/kubernetes.svg +11 -0
- package/assets/svges/label-dollar-2.svg +4 -0
- package/assets/svges/laptop-2.svg +3 -0
- package/assets/svges/laptop-phone.svg +5 -0
- package/assets/svges/laravel.svg +3 -0
- package/assets/svges/layers-1.svg +4 -0
- package/assets/svges/layout-26.svg +3 -0
- package/assets/svges/layout-9.svg +3 -0
- package/assets/svges/leaf-1.svg +3 -0
- package/assets/svges/leaf-6.svg +4 -0
- package/assets/svges/lemon-squeezy.svg +6 -0
- package/assets/svges/life-guard-tube-1.svg +3 -0
- package/assets/svges/line-dashed.svg +5 -0
- package/assets/svges/line-dotted.svg +8 -0
- package/assets/svges/line-height.svg +7 -0
- package/assets/svges/line.svg +3 -0
- package/assets/svges/lineicons.svg +6 -0
- package/assets/svges/link-2-angular-right.svg +3 -0
- package/assets/svges/linkedin.svg +3 -0
- package/assets/svges/location-arrow-right.svg +3 -0
- package/assets/svges/locked-1.svg +4 -0
- package/assets/svges/locked-2.svg +4 -0
- package/assets/svges/loom.svg +3 -0
- package/assets/svges/magento.svg +4 -0
- package/assets/svges/magnet.svg +3 -0
- package/assets/svges/mailchimp.svg +3 -0
- package/assets/svges/map-marker-1.svg +6 -0
- package/assets/svges/map-marker-5.svg +4 -0
- package/assets/svges/map-pin-5.svg +3 -0
- package/assets/svges/markdown.svg +5 -0
- package/assets/svges/mastercard.svg +7 -0
- package/assets/svges/medium-alt.svg +3 -0
- package/assets/svges/medium.svg +3 -0
- package/assets/svges/megaphone-1.svg +3 -0
- package/assets/svges/menu-cheesburger.svg +8 -0
- package/assets/svges/menu-hamburger-1.svg +5 -0
- package/assets/svges/menu-meatballs-1.svg +5 -0
- package/assets/svges/menu-meatballs-2.svg +5 -0
- package/assets/svges/mercedes.svg +3 -0
- package/assets/svges/message-2-question.svg +5 -0
- package/assets/svges/message-2.svg +3 -0
- package/assets/svges/message-3-text.svg +5 -0
- package/assets/svges/meta-alt.svg +3 -0
- package/assets/svges/meta.svg +7 -0
- package/assets/svges/microphone-1.svg +4 -0
- package/assets/svges/microscope.svg +3 -0
- package/assets/svges/microsoft-edge.svg +5 -0
- package/assets/svges/microsoft-teams.svg +6 -0
- package/assets/svges/microsoft.svg +6 -0
- package/assets/svges/minus-circle.svg +4 -0
- package/assets/svges/minus.svg +3 -0
- package/assets/svges/mongodb.svg +3 -0
- package/assets/svges/monitor-code.svg +5 -0
- package/assets/svges/monitor-mac.svg +3 -0
- package/assets/svges/monitor.svg +3 -0
- package/assets/svges/moon-half-right-5.svg +3 -0
- package/assets/svges/mountains-2.svg +3 -0
- package/assets/svges/mouse-2.svg +3 -0
- package/assets/svges/mushroom-1.svg +3 -0
- package/assets/svges/mushroom-5.svg +6 -0
- package/assets/svges/music.svg +3 -0
- package/assets/svges/mysql.svg +3 -0
- package/assets/svges/nasa.svg +3 -0
- package/assets/svges/netflix.svg +3 -0
- package/assets/svges/netlify.svg +3 -0
- package/assets/svges/next-step-2.svg +3 -0
- package/assets/svges/nextjs.svg +3 -0
- package/assets/svges/nike.svg +3 -0
- package/assets/svges/nissan.svg +3 -0
- package/assets/svges/nodejs-alt.svg +3 -0
- package/assets/svges/nodejs.svg +3 -0
- package/assets/svges/notebook-1.svg +3 -0
- package/assets/svges/notion.svg +3 -0
- package/assets/svges/npm.svg +3 -0
- package/assets/svges/nuxt.svg +3 -0
- package/assets/svges/nvidia.svg +3 -0
- package/assets/svges/oculus.svg +4 -0
- package/assets/svges/open-ai.svg +3 -0
- package/assets/svges/opera-mini.svg +3 -0
- package/assets/svges/oracle.svg +3 -0
- package/assets/svges/outdent.svg +8 -0
- package/assets/svges/paddle.svg +3 -0
- package/assets/svges/page-break-1.svg +7 -0
- package/assets/svges/pagination.svg +7 -0
- package/assets/svges/paint-bucket.svg +3 -0
- package/assets/svges/paint-roller-1.svg +3 -0
- package/assets/svges/paperclip-1.svg +3 -0
- package/assets/svges/party-flags.svg +3 -0
- package/assets/svges/party-spray.svg +3 -0
- package/assets/svges/patreon.svg +3 -0
- package/assets/svges/pause.svg +4 -0
- package/assets/svges/payoneer.svg +4 -0
- package/assets/svges/paypal.svg +4 -0
- package/assets/svges/pen-to-square.svg +4 -0
- package/assets/svges/pencil-1.svg +3 -0
- package/assets/svges/pepsi.svg +4 -0
- package/assets/svges/phone.svg +4 -0
- package/assets/svges/photos.svg +4 -0
- package/assets/svges/php.svg +3 -0
- package/assets/svges/pie-chart-2.svg +3 -0
- package/assets/svges/pilcrow.svg +3 -0
- package/assets/svges/pimjo-logo.svg +9 -0
- package/assets/svges/pimjo-symbol.svg +3 -0
- package/assets/svges/pinterest.svg +3 -0
- package/assets/svges/pizza-2.svg +6 -0
- package/assets/svges/placeholder-dollar.svg +4 -0
- package/assets/svges/plantscale.svg +3 -0
- package/assets/svges/play-store.svg +3 -0
- package/assets/svges/play.svg +3 -0
- package/assets/svges/playstation.svg +5 -0
- package/assets/svges/plug-1.svg +3 -0
- package/assets/svges/plus-circle.svg +4 -0
- package/assets/svges/plus.svg +3 -0
- package/assets/svges/pnpm.svg +10 -0
- package/assets/svges/postgresql.svg +3 -0
- package/assets/svges/postman.svg +3 -0
- package/assets/svges/pound.svg +3 -0
- package/assets/svges/power-button.svg +4 -0
- package/assets/svges/previous-step-2.svg +3 -0
- package/assets/svges/printer.svg +3 -0
- package/assets/svges/prisma.svg +3 -0
- package/assets/svges/producthunt.svg +4 -0
- package/assets/svges/proton-mail-logo.svg +3 -0
- package/assets/svges/proton-mail-symbol.svg +3 -0
- package/assets/svges/python.svg +3 -0
- package/assets/svges/question-mark-circle.svg +5 -0
- package/assets/svges/question-mark.svg +4 -0
- package/assets/svges/quora.svg +4 -0
- package/assets/svges/radis.svg +3 -0
- package/assets/svges/react.svg +3 -0
- package/assets/svges/reddit.svg +6 -0
- package/assets/svges/refresh-circle-1-clockwise.svg +4 -0
- package/assets/svges/refresh-dollar-1.svg +5 -0
- package/assets/svges/refresh-user-1.svg +6 -0
- package/assets/svges/remix-js.svg +4 -0
- package/assets/svges/road-1.svg +6 -0
- package/assets/svges/rocket-5.svg +5 -0
- package/assets/svges/route-1.svg +7 -0
- package/assets/svges/rss-right.svg +6 -0
- package/assets/svges/ruler-1.svg +3 -0
- package/assets/svges/ruler-pen.svg +4 -0
- package/assets/svges/rupee.svg +3 -0
- package/assets/svges/safari.svg +35 -0
- package/assets/svges/sanity.svg +20 -0
- package/assets/svges/school-bench-1.svg +4 -0
- package/assets/svges/school-bench-2.svg +4 -0
- package/assets/svges/scissors-1-vertical.svg +4 -0
- package/assets/svges/scoter.svg +8 -0
- package/assets/svges/scroll-down-2.svg +6 -0
- package/assets/svges/search-1.svg +3 -0
- package/assets/svges/search-2.svg +4 -0
- package/assets/svges/search-minus.svg +4 -0
- package/assets/svges/search-plus.svg +4 -0
- package/assets/svges/search-text.svg +5 -0
- package/assets/svges/select-cursor-1.svg +10 -0
- package/assets/svges/seo-monitor.svg +6 -0
- package/assets/svges/service-bell-1.svg +3 -0
- package/assets/svges/share-1-circle.svg +4 -0
- package/assets/svges/share-1.svg +3 -0
- package/assets/svges/share-2.svg +4 -0
- package/assets/svges/shield-2-check.svg +4 -0
- package/assets/svges/shield-2.svg +3 -0
- package/assets/svges/shield-dollar.svg +4 -0
- package/assets/svges/shift-left.svg +4 -0
- package/assets/svges/shift-right.svg +4 -0
- package/assets/svges/ship-1.svg +5 -0
- package/assets/svges/shirt-1.svg +3 -0
- package/assets/svges/shopify.svg +3 -0
- package/assets/svges/shovel.svg +3 -0
- package/assets/svges/shuffle.svg +3 -0
- package/assets/svges/sign-post-left.svg +3 -0
- package/assets/svges/signal-app.svg +3 -0
- package/assets/svges/signs-post-2.svg +3 -0
- package/assets/svges/sketch.svg +3 -0
- package/assets/svges/skype.svg +3 -0
- package/assets/svges/slack.svg +10 -0
- package/assets/svges/slice-2.svg +3 -0
- package/assets/svges/sliders-horizontal-square-2.svg +7 -0
- package/assets/svges/slideshare.svg +5 -0
- package/assets/svges/snapchat.svg +3 -0
- package/assets/svges/sort-alphabetical.svg +5 -0
- package/assets/svges/sort-high-to-low.svg +7 -0
- package/assets/svges/soundcloud.svg +3 -0
- package/assets/svges/spacex.svg +4 -0
- package/assets/svges/spellcheck.svg +4 -0
- package/assets/svges/spinner-2-sacle.svg +10 -0
- package/assets/svges/spinner-3.svg +3 -0
- package/assets/svges/sports.svg +3 -0
- package/assets/svges/spotify-alt.svg +6 -0
- package/assets/svges/spotify.svg +3 -0
- package/assets/svges/squarespace.svg +3 -0
- package/assets/svges/stackoverflow.svg +8 -0
- package/assets/svges/stamp.svg +3 -0
- package/assets/svges/star-fat-half-2.svg +4 -0
- package/assets/svges/star-fat.svg +3 -0
- package/assets/svges/star-sharp-disabled.svg +4 -0
- package/assets/svges/statista.svg +3 -0
- package/assets/svges/steam.svg +5 -0
- package/assets/svges/stethoscope-1.svg +3 -0
- package/assets/svges/stopwatch.svg +5 -0
- package/assets/svges/storage-hdd-2.svg +4 -0
- package/assets/svges/strikethrough-1.svg +5 -0
- package/assets/svges/stripe.svg +9 -0
- package/assets/svges/stumbleupon.svg +3 -0
- package/assets/svges/sun-1.svg +11 -0
- package/assets/svges/supabase.svg +5 -0
- package/assets/svges/surfboard-2.svg +3 -0
- package/assets/svges/svelte.svg +3 -0
- package/assets/svges/swift.svg +3 -0
- package/assets/svges/tab.svg +4 -0
- package/assets/svges/tailwindcss.svg +3 -0
- package/assets/svges/target-user.svg +5 -0
- package/assets/svges/telegram.svg +3 -0
- package/assets/svges/telephone-1.svg +4 -0
- package/assets/svges/telephone-3.svg +5 -0
- package/assets/svges/tesla.svg +3 -0
- package/assets/svges/text-format-remove.svg +5 -0
- package/assets/svges/text-format.svg +5 -0
- package/assets/svges/text-paragraph.svg +6 -0
- package/assets/svges/thumbs-down-3.svg +3 -0
- package/assets/svges/thumbs-up-3.svg +3 -0
- package/assets/svges/ticket-1.svg +3 -0
- package/assets/svges/tickets-3.svg +7 -0
- package/assets/svges/tiktok-alt.svg +3 -0
- package/assets/svges/tiktok.svg +3 -0
- package/assets/svges/tower-broadcast-1.svg +7 -0
- package/assets/svges/toyota.svg +4 -0
- package/assets/svges/train-1.svg +4 -0
- package/assets/svges/train-3.svg +5 -0
- package/assets/svges/trash-3.svg +5 -0
- package/assets/svges/tree-2.svg +3 -0
- package/assets/svges/trees-3.svg +3 -0
- package/assets/svges/trello.svg +3 -0
- package/assets/svges/trend-down-1.svg +3 -0
- package/assets/svges/trend-up-1.svg +3 -0
- package/assets/svges/trophy-1.svg +3 -0
- package/assets/svges/trowel-1.svg +3 -0
- package/assets/svges/truck-delivery-1.svg +3 -0
- package/assets/svges/tumblr.svg +3 -0
- package/assets/svges/turborepo.svg +4 -0
- package/assets/svges/twitch.svg +3 -0
- package/assets/svges/twitter-old.svg +3 -0
- package/assets/svges/typescript.svg +3 -0
- package/assets/svges/uber-symbol.svg +3 -0
- package/assets/svges/uber.svg +3 -0
- package/assets/svges/ubuntu.svg +3 -0
- package/assets/svges/underline.svg +4 -0
- package/assets/svges/unlink-2-angular-eft.svg +8 -0
- package/assets/svges/unlocked-2.svg +4 -0
- package/assets/svges/unsplash.svg +4 -0
- package/assets/svges/upload-1.svg +4 -0
- package/assets/svges/upload-circle-1.svg +4 -0
- package/assets/svges/user-4.svg +4 -0
- package/assets/svges/user-multiple-4.svg +6 -0
- package/assets/svges/vector-nodes-6.svg +3 -0
- package/assets/svges/vector-nodes-7.svg +3 -0
- package/assets/svges/vercel.svg +3 -0
- package/assets/svges/vimeo.svg +3 -0
- package/assets/svges/visa.svg +3 -0
- package/assets/svges/vite.svg +6 -0
- package/assets/svges/vk.svg +3 -0
- package/assets/svges/vmware.svg +4 -0
- package/assets/svges/volkswagen.svg +8 -0
- package/assets/svges/volume-1.svg +5 -0
- package/assets/svges/volume-high.svg +6 -0
- package/assets/svges/volume-low.svg +4 -0
- package/assets/svges/volume-mute.svg +6 -0
- package/assets/svges/volume-off.svg +3 -0
- package/assets/svges/vs-code.svg +3 -0
- package/assets/svges/vuejs.svg +3 -0
- package/assets/svges/wallet-1.svg +3 -0
- package/assets/svges/watch-beat-1.svg +4 -0
- package/assets/svges/water-drop-1.svg +4 -0
- package/assets/svges/webflow.svg +3 -0
- package/assets/svges/webhooks.svg +3 -0
- package/assets/svges/wechat.svg +4 -0
- package/assets/svges/weight-machine-1.svg +4 -0
- package/assets/svges/whatsapp.svg +3 -0
- package/assets/svges/wheelbarrow-empty.svg +3 -0
- package/assets/svges/wheelchair-1.svg +3 -0
- package/assets/svges/windows.svg +6 -0
- package/assets/svges/wise.svg +3 -0
- package/assets/svges/wordpress.svg +3 -0
- package/assets/svges/www-cursor.svg +5 -0
- package/assets/svges/www.svg +4 -0
- package/assets/svges/x.svg +3 -0
- package/assets/svges/xampp.svg +5 -0
- package/assets/svges/xbox.svg +6 -0
- package/assets/svges/xmark-circle.svg +4 -0
- package/assets/svges/xmark.svg +3 -0
- package/assets/svges/xrp.svg +3 -0
- package/assets/svges/yahoo.svg +3 -0
- package/assets/svges/yarn.svg +4 -0
- package/assets/svges/ycombinator.svg +3 -0
- package/assets/svges/yen.svg +3 -0
- package/assets/svges/youtube-kids.svg +3 -0
- package/assets/svges/youtube-music.svg +4 -0
- package/assets/svges/youtube.svg +3 -0
- package/assets/svges/zapier.svg +3 -0
- package/assets/svges/zero-size.svg +6 -0
- package/assets/svges/zoom.svg +4 -0
- package/bin/test-svger.js +163 -0
- package/dist/__tests__/__mocks__/visual-diff.d.ts +7 -0
- package/dist/__tests__/__mocks__/visual-diff.js +13 -0
- package/dist/__tests__/fixtures.js +18 -18
- package/dist/cli.js +148 -2
- package/dist/config.js +4 -1
- package/dist/core/enhanced-plugin-manager.d.ts +107 -0
- package/dist/core/enhanced-plugin-manager.js +315 -0
- package/dist/core/error-handler.d.ts +1 -1
- package/dist/core/error-handler.js +14 -17
- package/dist/core/framework-templates.js +37 -47
- package/dist/core/logger.js +0 -1
- package/dist/core/performance-engine.js +10 -15
- package/dist/core/plugin-manager.js +4 -4
- package/dist/core/style-compiler.d.ts +0 -1
- package/dist/core/style-compiler.js +3 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/integrations/babel.d.ts +1 -1
- package/dist/integrations/babel.js +31 -12
- package/dist/integrations/jest-preset.js +1 -1
- package/dist/integrations/rollup.js +29 -10
- package/dist/integrations/vite.js +29 -14
- package/dist/integrations/webpack.d.ts +1 -0
- package/dist/integrations/webpack.js +29 -10
- package/dist/optimizers/advanced-stages.d.ts +40 -0
- package/dist/optimizers/advanced-stages.js +297 -0
- package/dist/optimizers/basic-cleaner.d.ts +68 -0
- package/dist/optimizers/basic-cleaner.js +198 -0
- package/dist/optimizers/collapse-useless-groups.d.ts +26 -0
- package/dist/optimizers/collapse-useless-groups.js +104 -0
- package/dist/optimizers/command-optimizer.d.ts +48 -0
- package/dist/optimizers/command-optimizer.js +299 -0
- package/dist/optimizers/index.d.ts +14 -0
- package/dist/optimizers/index.js +15 -0
- package/dist/optimizers/move-attrs-to-parent.d.ts +31 -0
- package/dist/optimizers/move-attrs-to-parent.js +115 -0
- package/dist/optimizers/numeric-optimizer.d.ts +43 -0
- package/dist/optimizers/numeric-optimizer.js +383 -0
- package/dist/optimizers/optimizer-pipeline.d.ts +39 -0
- package/dist/optimizers/optimizer-pipeline.js +81 -0
- package/dist/optimizers/path-deduplicator.d.ts +37 -0
- package/dist/optimizers/path-deduplicator.js +406 -0
- package/dist/optimizers/path-parser.d.ts +60 -0
- package/dist/optimizers/path-parser.js +428 -0
- package/dist/optimizers/path-shortener.d.ts +41 -0
- package/dist/optimizers/path-shortener.js +274 -0
- package/dist/optimizers/path-simplifier.d.ts +30 -0
- package/dist/optimizers/path-simplifier.js +326 -0
- package/dist/optimizers/remove-hidden-empty.d.ts +29 -0
- package/dist/optimizers/remove-hidden-empty.js +130 -0
- package/dist/optimizers/remove-unused-defs.d.ts +24 -0
- package/dist/optimizers/remove-unused-defs.js +132 -0
- package/dist/optimizers/shape-conversion.d.ts +74 -0
- package/dist/optimizers/shape-conversion.js +277 -0
- package/dist/optimizers/style-optimizer.d.ts +30 -0
- package/dist/optimizers/style-optimizer.js +324 -0
- package/dist/optimizers/svg-tree-parser.d.ts +55 -0
- package/dist/optimizers/svg-tree-parser.js +352 -0
- package/dist/optimizers/transform-collapsing.d.ts +38 -0
- package/dist/optimizers/transform-collapsing.js +444 -0
- package/dist/optimizers/transform-optimizer.d.ts +65 -0
- package/dist/optimizers/transform-optimizer.js +320 -0
- package/dist/optimizers/tree-serializer.d.ts +46 -0
- package/dist/optimizers/tree-serializer.js +190 -0
- package/dist/optimizers/tree-stages.d.ts +27 -0
- package/dist/optimizers/tree-stages.js +141 -0
- package/dist/optimizers/types.d.ts +207 -0
- package/dist/optimizers/types.js +122 -0
- package/dist/plugins/color-replacer.d.ts +39 -0
- package/dist/plugins/color-replacer.js +126 -0
- package/dist/plugins/gradient-optimizer.d.ts +33 -0
- package/dist/plugins/gradient-optimizer.js +197 -0
- package/dist/plugins/stroke-normalizer.d.ts +33 -0
- package/dist/plugins/stroke-normalizer.js +166 -0
- package/dist/plugins/watermark-remover.d.ts +32 -0
- package/dist/plugins/watermark-remover.js +133 -0
- package/dist/processors/svg-processor.d.ts +17 -2
- package/dist/processors/svg-processor.js +108 -32
- package/dist/services/config.d.ts +4 -0
- package/dist/services/config.js +62 -1
- package/dist/services/file-watcher.d.ts +1 -1
- package/dist/services/file-watcher.js +1 -1
- package/dist/services/svg-service.d.ts +6 -0
- package/dist/services/svg-service.js +66 -16
- package/dist/types/index.d.ts +1 -0
- package/dist/types/plugin-system.d.ts +153 -0
- package/dist/types/plugin-system.js +5 -0
- package/dist/utils/visual-diff.d.ts +150 -0
- package/dist/utils/visual-diff.js +247 -0
- package/dist/watch.js +0 -2
- package/docs/COMPLETE-ACHIEVEMENT-SUMMARY.md +401 -0
- package/docs/MIGRATION-4.0.0.md +271 -0
- package/docs/PIPELINE-INTEGRATION.md +406 -0
- package/docs/PLUGIN-DEVELOPMENT-GUIDE.md +807 -0
- package/docs/QUICK-REFERENCE.md +176 -0
- package/docs/SAMPLE-SVGS-TESTING.md +276 -0
- package/docs/archive/PHASE-1-ARCHITECTURE.md +345 -0
- package/docs/archive/PHASE-1-IMPLEMENTATION.md +307 -0
- package/docs/archive/PHASE-1-SUMMARY.md +298 -0
- package/docs/archive/PHASE-2-COMPLETE.md +207 -0
- package/docs/archive/PHASE-3-SUMMARY.md +149 -0
- package/docs/archive/PHASE-4.3-COMMAND-OPTIMIZER.md +323 -0
- package/docs/archive/PHASE-4.4-PATH-SIMPLIFICATION.md +81 -0
- package/docs/archive/PHASE-4.5-PATH-DEDUPLICATION.md +449 -0
- package/docs/archive/PHASE-5.1-SUCCESS-REPORT.md +207 -0
- package/docs/archive/PHASE-5.1-TRANSFORM-COLLAPSING.md +362 -0
- package/docs/archive/PHASE-6.1-SHAPE-CONVERSION-DESIGN.md +518 -0
- package/docs/archive/PHASE-6.2-PLUGIN-SYSTEM-STATUS.md +403 -0
- package/docs/archive/PHASE-6.3-FINAL-STATUS.md +193 -0
- package/docs/archive/PHASE-6.3-VALIDATION-PROGRESS.md +345 -0
- package/docs/archive/PHASE-6.3-VISUAL-DIFF-DESIGN.md +553 -0
- package/docs/archive/PHASE-6.3-VISUAL-DIFF-SUMMARY.md +367 -0
- package/docs/archive/PHASE-6.3-XML-SERIALIZATION-FIX.md +210 -0
- package/docs/archive/RELEASE-NOTES-3.2.0.md +344 -0
- package/docs/archive/RELEASE-PREP-3.2.0.md +376 -0
- package/docs/performance/PERFORMANCE-RESULTS.md +31 -0
- package/docs/performance/REAL-WORLD-BENCHMARKS.md +159 -0
- package/package.json +16 -6
- package/DEVELOPMENT.md +0 -353
|
@@ -88,21 +88,16 @@ export class PerformanceEngine {
|
|
|
88
88
|
*/
|
|
89
89
|
optimizeSVGContent(content, level = 'balanced') {
|
|
90
90
|
const startTime = performance.now();
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
case 'maximum':
|
|
102
|
-
// Comprehensive optimizations
|
|
103
|
-
optimized = this.applyMaximumOptimizations(content);
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
91
|
+
// Object lookup map for optimization strategies - O(1) performance
|
|
92
|
+
const optimizationStrategies = {
|
|
93
|
+
fast: c => this.applyFastOptimizations(c),
|
|
94
|
+
balanced: c => this.applyBalancedOptimizations(c),
|
|
95
|
+
maximum: c => this.applyMaximumOptimizations(c),
|
|
96
|
+
};
|
|
97
|
+
const strategy = optimizationStrategies[level];
|
|
98
|
+
const optimized = strategy
|
|
99
|
+
? strategy(content)
|
|
100
|
+
: this.applyBalancedOptimizations(content);
|
|
106
101
|
const duration = performance.now() - startTime;
|
|
107
102
|
const compressionRatio = (1 - optimized.length / content.length) * 100;
|
|
108
103
|
logger.debug(`SVG optimization (${level}): ${compressionRatio.toFixed(1)}% reduction in ${duration.toFixed(2)}ms`);
|
|
@@ -21,12 +21,12 @@ export class PluginManager {
|
|
|
21
21
|
loadBuiltinPlugins() {
|
|
22
22
|
// SVG Optimizer Plugin
|
|
23
23
|
this.registerPlugin({
|
|
24
|
-
name: '
|
|
24
|
+
name: 'optimize',
|
|
25
25
|
version: '1.0.0',
|
|
26
|
-
process: async (content,
|
|
27
|
-
return this.optimizeSVG(content,
|
|
26
|
+
process: async (content, _options) => {
|
|
27
|
+
return this.optimizeSVG(content, _options);
|
|
28
28
|
},
|
|
29
|
-
validate: (
|
|
29
|
+
validate: (_options) => true,
|
|
30
30
|
});
|
|
31
31
|
// Color Theme Plugin
|
|
32
32
|
this.registerPlugin({
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
export class SVGStyleCompiler {
|
|
6
6
|
static instance;
|
|
7
7
|
themes = new Map();
|
|
8
|
-
globalCSS = [];
|
|
9
8
|
constructor() {
|
|
10
9
|
this.loadDefaultThemes();
|
|
11
10
|
}
|
|
@@ -98,9 +97,7 @@ if (typeof document !== 'undefined') {
|
|
|
98
97
|
const inlineStyleObject = Object.keys(compiled.inline).length > 0
|
|
99
98
|
? `const defaultStyles = ${JSON.stringify(compiled.inline, null, 2)};`
|
|
100
99
|
: '';
|
|
101
|
-
|
|
102
|
-
? `'${compiled.classes.join(' ')} ' + (props.className || '')`
|
|
103
|
-
: 'props.className';
|
|
100
|
+
// Note: className prop generation for CSS classes will be implemented in future enhancement
|
|
104
101
|
return `${imports}
|
|
105
102
|
|
|
106
103
|
/**
|
|
@@ -219,7 +216,7 @@ function getAnimationStyles(animationType: string): React.CSSProperties {
|
|
|
219
216
|
return animations[animationType as keyof typeof animations] || {};
|
|
220
217
|
}
|
|
221
218
|
|
|
222
|
-
function getThemeStyles(theme:
|
|
219
|
+
function getThemeStyles(theme: _theme): React.CSSProperties {
|
|
223
220
|
if (theme === 'dark') {
|
|
224
221
|
return { filter: 'invert(1) hue-rotate(180deg)' };
|
|
225
222
|
}
|
|
@@ -363,7 +360,7 @@ if (typeof document !== 'undefined') {
|
|
|
363
360
|
}
|
|
364
361
|
return theme;
|
|
365
362
|
}
|
|
366
|
-
compileBaseStyles(options, compiled,
|
|
363
|
+
compileBaseStyles(options, compiled, _theme) {
|
|
367
364
|
// Handle basic properties
|
|
368
365
|
const styleMap = {
|
|
369
366
|
fill: 'fill',
|
package/dist/index.d.ts
CHANGED
|
@@ -87,6 +87,10 @@ export type { SVGConfig, ComponentGenerationOptions, OutputConfig, NamingConvent
|
|
|
87
87
|
* Error handling types - Available from core error handler
|
|
88
88
|
*/
|
|
89
89
|
export type { SVGError, ErrorRecoveryStrategy } from './core/error-handler.js';
|
|
90
|
+
/**
|
|
91
|
+
* Optimizer types - Available from optimizers
|
|
92
|
+
*/
|
|
93
|
+
export { OptLevel } from './optimizers/types.js';
|
|
90
94
|
/**
|
|
91
95
|
* Component Templates - Pre-built component templates for various use cases
|
|
92
96
|
* Provides: functional React component template with TypeScript support
|
package/dist/index.js
CHANGED
|
@@ -93,6 +93,10 @@ export { buildAll, generateSVG } from './builder.js';
|
|
|
93
93
|
* Provides: SVG cleaning, attribute normalization, and content optimization
|
|
94
94
|
*/
|
|
95
95
|
export { clean } from './clean.js';
|
|
96
|
+
/**
|
|
97
|
+
* Optimizer types - Available from optimizers
|
|
98
|
+
*/
|
|
99
|
+
export { OptLevel } from './optimizers/types.js';
|
|
96
100
|
// ============================================================================
|
|
97
101
|
// TEMPLATES
|
|
98
102
|
// ============================================================================
|
|
@@ -39,7 +39,7 @@ import type { BabelPluginOptions } from '../types/integrations.js';
|
|
|
39
39
|
* - Pre-build: Process all SVGs before Babel transformation
|
|
40
40
|
* - On-demand: Transform SVG imports as they're encountered
|
|
41
41
|
*/
|
|
42
|
-
export declare function svgerBabelPlugin(
|
|
42
|
+
export declare function svgerBabelPlugin(_api: any, options?: BabelPluginOptions): any;
|
|
43
43
|
/**
|
|
44
44
|
* Create a Babel plugin instance with preset options
|
|
45
45
|
*
|
|
@@ -85,9 +85,9 @@ async function processAllSVGs(options, processedFiles) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
// Generate index file if enabled
|
|
88
|
-
if (options.generateIndex
|
|
88
|
+
if (options.generateIndex) {
|
|
89
89
|
try {
|
|
90
|
-
await generateIndexFile(outputPath,
|
|
90
|
+
await generateIndexFile(outputPath, options);
|
|
91
91
|
}
|
|
92
92
|
catch (error) {
|
|
93
93
|
logger.error('Failed to generate index file:', error);
|
|
@@ -97,16 +97,35 @@ async function processAllSVGs(options, processedFiles) {
|
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Generate index file with all exports
|
|
100
|
+
* Scans the output directory for all existing component files
|
|
100
101
|
*/
|
|
101
|
-
async function generateIndexFile(outputDir,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
async function generateIndexFile(outputDir, options) {
|
|
103
|
+
try {
|
|
104
|
+
// Scan output directory for all component files
|
|
105
|
+
const files = await FileSystem.readDir(outputDir);
|
|
106
|
+
const extension = options.typescript ? 'tsx' : 'jsx';
|
|
107
|
+
// Filter component files (exclude index files)
|
|
108
|
+
const componentFiles = files.filter(file => (file.endsWith(`.${extension}`) ||
|
|
109
|
+
file.endsWith('.ts') ||
|
|
110
|
+
file.endsWith('.js')) &&
|
|
111
|
+
!file.startsWith('index.'));
|
|
112
|
+
if (componentFiles.length === 0) {
|
|
113
|
+
logger.warn('No component files found for index generation');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Extract component names
|
|
117
|
+
const componentNames = componentFiles.map(file => path.basename(file, path.extname(file)));
|
|
118
|
+
const indexExtension = options.typescript ? 'ts' : 'js';
|
|
119
|
+
const exports = componentNames
|
|
120
|
+
.map(name => `export { default as ${name} } from './${name}';`)
|
|
121
|
+
.join('\n');
|
|
122
|
+
const indexPath = path.join(outputDir, `index.${indexExtension}`);
|
|
123
|
+
await FileSystem.writeFile(indexPath, exports, 'utf-8');
|
|
124
|
+
logger.debug(`Generated index file: ${indexPath}`);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
logger.error('Failed to generate index file:', error);
|
|
128
|
+
}
|
|
110
129
|
}
|
|
111
130
|
/**
|
|
112
131
|
* Transform SVG import path to component path
|
|
@@ -130,7 +149,7 @@ function transformSVGImport(sourcePath, options) {
|
|
|
130
149
|
* - Pre-build: Process all SVGs before Babel transformation
|
|
131
150
|
* - On-demand: Transform SVG imports as they're encountered
|
|
132
151
|
*/
|
|
133
|
-
export function svgerBabelPlugin(
|
|
152
|
+
export function svgerBabelPlugin(_api, options = {}) {
|
|
134
153
|
const config = configService.readConfig();
|
|
135
154
|
const pluginOptions = {
|
|
136
155
|
source: options.source || config.source || './src/icons',
|
|
@@ -124,7 +124,7 @@ function convertToCommonJS(code, componentName) {
|
|
|
124
124
|
let commonJsCode = code
|
|
125
125
|
.replace(/import\s+React\s+from\s+['"]react['"]/g, "const React = require('react')")
|
|
126
126
|
.replace(/export\s+default\s+/g, 'module.exports = ')
|
|
127
|
-
.replace(/export\s+{([^}]+)}/g, (
|
|
127
|
+
.replace(/export\s+{([^}]+)}/g, (_match, exports) => {
|
|
128
128
|
const exportList = exports.split(',').map((e) => e.trim());
|
|
129
129
|
return exportList
|
|
130
130
|
.map((exp) => `module.exports.${exp} = ${exp}`)
|
|
@@ -140,7 +140,7 @@ async function processAllSVGs(options, processedFiles) {
|
|
|
140
140
|
}
|
|
141
141
|
// Generate index file
|
|
142
142
|
if (options.generateIndex) {
|
|
143
|
-
await generateIndexFile(outputDir,
|
|
143
|
+
await generateIndexFile(outputDir, options);
|
|
144
144
|
}
|
|
145
145
|
const successful = results.filter(r => r.success).length;
|
|
146
146
|
logger.info(`SVGER: Processed ${successful}/${svgFiles.length} SVG files`);
|
|
@@ -182,16 +182,35 @@ async function processSVGFile(svgPath, outputDir, options) {
|
|
|
182
182
|
}
|
|
183
183
|
/**
|
|
184
184
|
* Generate index file with all exports
|
|
185
|
+
* Scans the output directory for all existing component files
|
|
185
186
|
*/
|
|
186
|
-
async function generateIndexFile(outputDir,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
187
|
+
async function generateIndexFile(outputDir, options) {
|
|
188
|
+
try {
|
|
189
|
+
// Scan output directory for all component files
|
|
190
|
+
const files = await FileSystem.readDir(outputDir);
|
|
191
|
+
const extension = options.typescript ? 'tsx' : 'jsx';
|
|
192
|
+
// Filter component files (exclude index files)
|
|
193
|
+
const componentFiles = files.filter(file => (file.endsWith(`.${extension}`) ||
|
|
194
|
+
file.endsWith('.ts') ||
|
|
195
|
+
file.endsWith('.js')) &&
|
|
196
|
+
!file.startsWith('index.'));
|
|
197
|
+
if (componentFiles.length === 0) {
|
|
198
|
+
logger.warn('No component files found for index generation');
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
// Extract component names
|
|
202
|
+
const componentNames = componentFiles.map(file => path.basename(file, path.extname(file)));
|
|
203
|
+
const indexExtension = options.typescript ? 'ts' : 'js';
|
|
204
|
+
const exports = componentNames
|
|
205
|
+
.map(name => `export { default as ${name} } from './${name}';`)
|
|
206
|
+
.join('\n');
|
|
207
|
+
const indexPath = path.join(outputDir, `index.${indexExtension}`);
|
|
208
|
+
await FileSystem.writeFile(indexPath, exports, 'utf-8');
|
|
209
|
+
logger.debug(`Generated index file: ${indexPath}`);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
logger.error('Failed to generate index file:', error);
|
|
213
|
+
}
|
|
195
214
|
}
|
|
196
215
|
// Default export
|
|
197
216
|
export default svgerRollupPlugin;
|
|
@@ -47,13 +47,9 @@ export function svgerVitePlugin(options = {}) {
|
|
|
47
47
|
svgo: options.svgo !== undefined ? options.svgo : false,
|
|
48
48
|
generateIndex: options.generateIndex !== undefined ? options.generateIndex : true,
|
|
49
49
|
};
|
|
50
|
-
let viteConfig;
|
|
51
50
|
const processedFiles = new Set();
|
|
52
51
|
return {
|
|
53
52
|
name: PLUGIN_NAME,
|
|
54
|
-
configResolved(resolvedConfig) {
|
|
55
|
-
viteConfig = resolvedConfig;
|
|
56
|
-
},
|
|
57
53
|
async buildStart() {
|
|
58
54
|
logger.info('SVGER Vite Plugin: Processing SVG files...');
|
|
59
55
|
await processAllSVGs(pluginOptions, processedFiles);
|
|
@@ -164,7 +160,7 @@ async function processAllSVGs(options, processedFiles) {
|
|
|
164
160
|
}
|
|
165
161
|
// Generate index file
|
|
166
162
|
if (options.generateIndex) {
|
|
167
|
-
await generateIndexFile(outputDir,
|
|
163
|
+
await generateIndexFile(outputDir, options);
|
|
168
164
|
}
|
|
169
165
|
const successful = results.filter(r => r.success).length;
|
|
170
166
|
logger.info(`SVGER: Processed ${successful}/${svgFiles.length} SVG files`);
|
|
@@ -206,16 +202,35 @@ async function processSVGFile(svgPath, outputDir, options) {
|
|
|
206
202
|
}
|
|
207
203
|
/**
|
|
208
204
|
* Generate index file with all exports
|
|
205
|
+
* Scans the output directory for all existing component files
|
|
209
206
|
*/
|
|
210
|
-
async function generateIndexFile(outputDir,
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
207
|
+
async function generateIndexFile(outputDir, options) {
|
|
208
|
+
try {
|
|
209
|
+
// Scan output directory for all component files
|
|
210
|
+
const files = await FileSystem.readDir(outputDir);
|
|
211
|
+
const extension = options.typescript ? 'tsx' : 'jsx';
|
|
212
|
+
// Filter component files (exclude index files)
|
|
213
|
+
const componentFiles = files.filter(file => (file.endsWith(`.${extension}`) ||
|
|
214
|
+
file.endsWith('.ts') ||
|
|
215
|
+
file.endsWith('.js')) &&
|
|
216
|
+
!file.startsWith('index.'));
|
|
217
|
+
if (componentFiles.length === 0) {
|
|
218
|
+
logger.warn('No component files found for index generation');
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
// Extract component names
|
|
222
|
+
const componentNames = componentFiles.map(file => path.basename(file, path.extname(file)));
|
|
223
|
+
const indexExtension = options.typescript ? 'ts' : 'js';
|
|
224
|
+
const exports = componentNames
|
|
225
|
+
.map(name => `export { default as ${name} } from './${name}';`)
|
|
226
|
+
.join('\n');
|
|
227
|
+
const indexPath = path.join(outputDir, `index.${indexExtension}`);
|
|
228
|
+
await FileSystem.writeFile(indexPath, exports, 'utf-8');
|
|
229
|
+
logger.debug(`Generated index file: ${indexPath}`);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
logger.error('Failed to generate index file:', error);
|
|
233
|
+
}
|
|
219
234
|
}
|
|
220
235
|
// Default export
|
|
221
236
|
export default svgerVitePlugin;
|
|
@@ -111,7 +111,7 @@ export class SvgerWebpackPlugin {
|
|
|
111
111
|
}
|
|
112
112
|
// Generate index file
|
|
113
113
|
if (this.options.generateIndex) {
|
|
114
|
-
await this.generateIndexFile(outputDir
|
|
114
|
+
await this.generateIndexFile(outputDir);
|
|
115
115
|
}
|
|
116
116
|
const successful = results.filter(r => r.success).length;
|
|
117
117
|
logger.info(`SVGER: Processed ${successful}/${svgFiles.length} SVG files`);
|
|
@@ -176,16 +176,35 @@ export class SvgerWebpackPlugin {
|
|
|
176
176
|
}
|
|
177
177
|
/**
|
|
178
178
|
* Generate index file with all exports
|
|
179
|
+
* Scans the output directory for all existing component files
|
|
179
180
|
*/
|
|
180
|
-
async generateIndexFile(outputDir
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
181
|
+
async generateIndexFile(outputDir) {
|
|
182
|
+
try {
|
|
183
|
+
// Scan output directory for all component files
|
|
184
|
+
const files = await FileSystem.readDir(outputDir);
|
|
185
|
+
const extension = this.options.typescript ? 'tsx' : 'jsx';
|
|
186
|
+
// Filter component files (exclude index files)
|
|
187
|
+
const componentFiles = files.filter(file => (file.endsWith(`.${extension}`) ||
|
|
188
|
+
file.endsWith('.ts') ||
|
|
189
|
+
file.endsWith('.js')) &&
|
|
190
|
+
!file.startsWith('index.'));
|
|
191
|
+
if (componentFiles.length === 0) {
|
|
192
|
+
logger.warn('No component files found for index generation');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Extract component names
|
|
196
|
+
const componentNames = componentFiles.map(file => path.basename(file, path.extname(file)));
|
|
197
|
+
const indexExtension = this.options.typescript ? 'ts' : 'js';
|
|
198
|
+
const exports = componentNames
|
|
199
|
+
.map(name => `export { default as ${name} } from './${name}';`)
|
|
200
|
+
.join('\n');
|
|
201
|
+
const indexPath = path.join(outputDir, `index.${indexExtension}`);
|
|
202
|
+
await FileSystem.writeFile(indexPath, exports, 'utf-8');
|
|
203
|
+
logger.debug(`Generated index file: ${indexPath}`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
logger.error('Failed to generate index file:', error);
|
|
207
|
+
}
|
|
189
208
|
}
|
|
190
209
|
/**
|
|
191
210
|
* Get changed files from webpack
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advanced Optimization Stages
|
|
3
|
+
* Wrappers for Phase 3-5 optimizers in the pipeline
|
|
4
|
+
*/
|
|
5
|
+
import type { OptConfig } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Numeric optimization stage wrapper
|
|
8
|
+
* Phase 3.1: Coordinate precision, number formatting, etc.
|
|
9
|
+
*/
|
|
10
|
+
export declare function numericStage(svg: string, config: OptConfig): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Style optimization stage wrapper
|
|
13
|
+
* Phase 3.2: Color shortening, unit removal, style consolidation
|
|
14
|
+
*/
|
|
15
|
+
export declare function styleStage(svg: string, config: OptConfig): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Transform optimization stage wrapper
|
|
18
|
+
* Phase 3.3: Matrix simplification, transform shortening
|
|
19
|
+
*/
|
|
20
|
+
export declare function transformStage(svg: string, config: OptConfig): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Transform collapsing stage wrapper
|
|
23
|
+
* Phase 5.1: Propagate transforms, bake into coordinates, collapse groups
|
|
24
|
+
*/
|
|
25
|
+
export declare function transformCollapseStage(svg: string, config: OptConfig): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Path optimization stage wrapper
|
|
28
|
+
* Phase 4.1-4.2: Path parsing, command merging, H/V conversion, abs/rel optimization
|
|
29
|
+
*/
|
|
30
|
+
export declare function pathOptimizationStage(svg: string, config: OptConfig): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Path simplification stage wrapper
|
|
33
|
+
* Phase 4.4: Douglas-Peucker and Visvalingam-Whyatt algorithms
|
|
34
|
+
*/
|
|
35
|
+
export declare function pathSimplificationStage(svg: string, config: OptConfig): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* Combined advanced optimization stage
|
|
38
|
+
* Applies all Phase 3-5 optimizations in optimal order
|
|
39
|
+
*/
|
|
40
|
+
export declare function advancedOptimizationStage(svg: string, config: OptConfig): Promise<string>;
|